; ---------------------------------------------------------------------------

_SCOPETABLE_ENTRY struc	; (sizeof=0xC, align=0x4, copyof_1)
					; XREF:	.text:stru_7F8010A8/r
					; .text:stru_7F8010B8/r	...
EnclosingLevel	dd ?
FilterFunc	dd ?			; offset
HandlerFunc	dd ?			; offset
_SCOPETABLE_ENTRY ends

; ---------------------------------------------------------------------------

CPPEH_RECORD	struc ;	(sizeof=0x18, align=0x4, copyof_6) ; XREF: ScMMFVerify@16/r
					; ScMMFMigrateToMDB@48/r ...
old_esp		dd ?			; XREF:	ScMMFVerify@16+25/w
					; ScMMFVerify@16+122/r ...
exc_ptr		dd ?			; offset
registration	_EH3_EXCEPTION_REGISTRATION ? ;	XREF: ScMMFVerify@16+35/w
					; ScMMFVerify@16:loc_7F80206F/w	...
CPPEH_RECORD	ends

; ---------------------------------------------------------------------------

_EH3_EXCEPTION_REGISTRATION struc ; (sizeof=0x10, align=0x4, copyof_3)
					; XREF:	CPPEH_RECORD/r
Next		dd ?			; XREF:	ScMMFVerify@16:loc_7F8020AF/r
					; ScMMFMigrateToMDB@48:loc_7F8023DE/r ... ; offset
ExceptionHandler dd ?			; offset
ScopeTable	dd ?			; offset
TryLevel	dd ?			; XREF:	ScMMFVerify@16+35/w
					; ScMMFVerify@16:loc_7F80206F/w	...
_EH3_EXCEPTION_REGISTRATION ends

; ---------------------------------------------------------------------------

_SYSTEM_INFO	struc ;	(sizeof=0x24, align=0x4, copyof_7) ; XREF: sub_7F802962/r
anonymous_0	_SYSTEM_INFO::$A707B71C060B6D10F73A71917EA8473F	?
dwPageSize	dd ?
lpMinimumApplicationAddress dd ?	; offset
lpMaximumApplicationAddress dd ?	; offset
dwActiveProcessorMask dd ?
dwNumberOfProcessors dd	?
dwProcessorType	dd ?
dwAllocationGranularity	dd ?
wProcessorLevel	dw ?
wProcessorRevision dw ?
_SYSTEM_INFO	ends

; ---------------------------------------------------------------------------

_SYSTEM_INFO::$A707B71C060B6D10F73A71917EA8473F	union ;	(sizeof=0x4, align=0x4,	copyof_8)
					; XREF:	_SYSTEM_INFO/r
dwOemId		dd ?
anonymous_0	_SYSTEM_INFO::$A707B71C060B6D10F73A71917EA8473F::$AA04DEB0C6383F89F13D312A174572A9 ?
_SYSTEM_INFO::$A707B71C060B6D10F73A71917EA8473F	ends

; ---------------------------------------------------------------------------

_SYSTEM_INFO::$A707B71C060B6D10F73A71917EA8473F::$AA04DEB0C6383F89F13D312A174572A9 struc ; (sizeof=0x4,	align=0x2, copyof_10)
					; XREF:	_SYSTEM_INFO::$A707B71C060B6D10F73A71917EA8473F/r
wProcessorArchitecture dw ?
wReserved	dw ?
_SYSTEM_INFO::$A707B71C060B6D10F73A71917EA8473F::$AA04DEB0C6383F89F13D312A174572A9 ends

; ---------------------------------------------------------------------------

tagMSG		struc ;	(sizeof=0x1C, align=0x4, copyof_13) ; XREF: sub_7F8035B3/r
					; sub_7F803A19/r ...
hwnd		dd ?			; offset
message		dd ?
wParam		dd ?
lParam		dd ?
time		dd ?
pt		POINT ?
tagMSG		ends

; ---------------------------------------------------------------------------

POINT		struc ;	(sizeof=0x8, align=0x4,	copyof_20) ; XREF: tagMSG/r
x		dd ?
y		dd ?
POINT		ends

; ---------------------------------------------------------------------------

GUID		struc ;	(sizeof=0x10, align=0x4, copyof_22) ; XREF: sub_7F8045B6/r
Data1		dd ?
Data2		dw ?
Data3		dw ?
Data4		db 8 dup(?)
GUID		ends

; ---------------------------------------------------------------------------

tagRECT		struc ;	(sizeof=0x10, align=0x4, copyof_25) ; XREF: sub_7F805851/r
					; sub_7F8061C8/r ...
left		dd ?
top		dd ?
right		dd ?
bottom		dd ?
tagRECT		ends

; ---------------------------------------------------------------------------

tagPOINT	struc ;	(sizeof=0x8, align=0x4)	; XREF:	sub_7F80725C/r
					; sub_7F807D9C/r ...
x		dd ?
y		dd ?
tagPOINT	ends

; ---------------------------------------------------------------------------

_SYSTEMTIME	struc ;	(sizeof=0x10, align=0x2, copyof_26) ; XREF: sub_7F807D9C/r
					; sub_7F817717/r
wYear		dw ?
wMonth		dw ?
wDayOfWeek	dw ?
wDay		dw ?
wHour		dw ?
wMinute		dw ?
wSecond		dw ?
wMilliseconds	dw ?
_SYSTEMTIME	ends

; ---------------------------------------------------------------------------

_WIN32_FIND_DATAA struc	; (sizeof=0x140, align=0x4, copyof_27) ; XREF: sub_7F8083A0/r
					; sub_7F808498/r ...
dwFileAttributes dd ?
ftCreationTime	FILETIME ?
ftLastAccessTime FILETIME ?
ftLastWriteTime	FILETIME ?
nFileSizeHigh	dd ?
nFileSizeLow	dd ?
dwReserved0	dd ?
dwReserved1	dd ?
cFileName	db 260 dup(?)
cAlternateFileName db 14 dup(?)
		db ? ; undefined
		db ? ; undefined
_WIN32_FIND_DATAA ends

; ---------------------------------------------------------------------------

FILETIME	struc ;	(sizeof=0x8, align=0x4,	copyof_28) ; XREF: sub_7F809DFE/r
					; _WIN32_FIND_DATAA/r ...
dwLowDateTime	dd ?
dwHighDateTime	dd ?
FILETIME	ends

; ---------------------------------------------------------------------------

tagOFNA		struc ;	(sizeof=0x4C, copyof_31) ; XREF: sub_7F808498/r
lStructSize	dd ?
hwndOwner	dd ?			; offset
hInstance	dd ?			; offset
lpstrFilter	dd ?			; offset
lpstrCustomFilter dd ?			; offset
nMaxCustFilter	dd ?
nFilterIndex	dd ?
lpstrFile	dd ?			; offset
nMaxFile	dd ?
lpstrFileTitle	dd ?			; offset
nMaxFileTitle	dd ?
lpstrInitialDir	dd ?			; offset
lpstrTitle	dd ?			; offset
Flags		dd ?
nFileOffset	dw ?
nFileExtension	dw ?
lpstrDefExt	dd ?			; offset
lCustData	dd ?
lpfnHook	dd ?			; offset
lpTemplateName	dd ?			; offset
tagOFNA		ends

; ---------------------------------------------------------------------------

tagPAINTSTRUCT	struc ;	(sizeof=0x40, align=0x4, copyof_37) ; XREF: sub_7F8097B9/r
					; sub_7F80C4B4/r ...
hdc		dd ?			; offset
fErase		dd ?
rcPaint		RECT ?
fRestore	dd ?
fIncUpdate	dd ?
rgbReserved	db 32 dup(?)
tagPAINTSTRUCT	ends

; ---------------------------------------------------------------------------

RECT		struc ;	(sizeof=0x10, align=0x4, copyof_41) ; XREF: .data:rc/r
					; .data:stru_7F833BE8/r	...
left		dd ?
top		dd ?
right		dd ?
bottom		dd ?
RECT		ends

; ---------------------------------------------------------------------------

_FILETIME	struc ;	(sizeof=0x8, align=0x4)	; XREF:	sub_7F809DFE/r
					; sub_7F809DFE/r ...
dwLowDateTime	dd ?
dwHighDateTime	dd ?
_FILETIME	ends

; ---------------------------------------------------------------------------

_OSVERSIONINFOA	struc ;	(sizeof=0x94, align=0x4, copyof_42)
					; XREF:	.data:VersionInformation/r
dwOSVersionInfoSize dd ?
dwMajorVersion	dd ?
dwMinorVersion	dd ?
dwBuildNumber	dd ?
dwPlatformId	dd ?
szCSDVersion	db 128 dup(?)
_OSVERSIONINFOA	ends

; ---------------------------------------------------------------------------

tagWNDCLASSA	struc ;	(sizeof=0x28, align=0x4, copyof_43) ; XREF: sub_7F8171B7/r
style		dd ?
lpfnWndProc	dd ?			; offset
cbClsExtra	dd ?
cbWndExtra	dd ?
hInstance	dd ?			; offset
hIcon		dd ?			; offset
hCursor		dd ?			; offset
hbrBackground	dd ?			; offset
lpszMenuName	dd ?			; offset
lpszClassName	dd ?			; offset
tagWNDCLASSA	ends

; ---------------------------------------------------------------------------

WNDCLASSA	struc ;	(sizeof=0x28, align=0x4, copyof_51) ; XREF: sub_7F82AF85/r
style		dd ?
lpfnWndProc	dd ?			; offset
cbClsExtra	dd ?
cbWndExtra	dd ?
hInstance	dd ?			; offset
hIcon		dd ?			; offset
hCursor		dd ?			; offset
hbrBackground	dd ?			; offset
lpszMenuName	dd ?			; offset
lpszClassName	dd ?			; offset
WNDCLASSA	ends

; ---------------------------------------------------------------------------

tagTEXTMETRICA	struc ;	(sizeof=0x38, align=0x4, copyof_52) ; XREF: sub_7F82B14A/r
tmHeight	dd ?
tmAscent	dd ?
tmDescent	dd ?
tmInternalLeading dd ?
tmExternalLeading dd ?
tmAveCharWidth	dd ?
tmMaxCharWidth	dd ?
tmWeight	dd ?
tmOverhang	dd ?
tmDigitizedAspectX dd ?
tmDigitizedAspectY dd ?
tmFirstChar	db ?
tmLastChar	db ?
tmDefaultChar	db ?
tmBreakChar	db ?
tmItalic	db ?
tmUnderlined	db ?
tmStruckOut	db ?
tmPitchAndFamily db ?
tmCharSet	db ?
		db ? ; undefined
		db ? ; undefined
		db ? ; undefined
tagTEXTMETRICA	ends

; ---------------------------------------------------------------------------

_SECURITY_ATTRIBUTES struc ; (sizeof=0xC, align=0x4, copyof_53)	; XREF:	sub_7F82F462/r
nLength		dd ?
lpSecurityDescriptor dd	?		; offset
bInheritHandle	dd ?
_SECURITY_ATTRIBUTES ends

; ---------------------------------------------------------------------------

_MEMORY_BASIC_INFORMATION struc	; (sizeof=0x1C,	align=0x4, copyof_54)
					; XREF:	sub_7F82F462/r
BaseAddress	dd ?			; offset
AllocationBase	dd ?			; offset
AllocationProtect dd ?
RegionSize	dd ?
State		dd ?
Protect		dd ?
Type		dd ?
_MEMORY_BASIC_INFORMATION ends

; ---------------------------------------------------------------------------

_STARTUPINFOA	struc ;	(sizeof=0x44, align=0x4, copyof_58) ; XREF: sub_7F830CE0/r
cb		dd ?
lpReserved	dd ?			; offset
lpDesktop	dd ?			; offset
lpTitle		dd ?			; offset
dwX		dd ?
dwY		dd ?
dwXSize		dd ?
dwYSize		dd ?
dwXCountChars	dd ?
dwYCountChars	dd ?
dwFillAttribute	dd ?
dwFlags		dd ?
wShowWindow	dw ?
cbReserved2	dw ?
lpReserved2	dd ?			; offset
hStdInput	dd ?			; offset
hStdOutput	dd ?			; offset
hStdError	dd ?			; offset
_STARTUPINFOA	ends

; ---------------------------------------------------------------------------

_cpinfo		struc ;	(sizeof=0x14, align=0x4, copyof_61) ; XREF: sub_7F831280/r
MaxCharSize	dd ?
DefaultChar	db 2 dup(?)
LeadByte	db 12 dup(?)
		db ? ; undefined
		db ? ; undefined
_cpinfo		ends

; ---------------------------------------------------------------------------

SYSTEMTIME	struc ;	(sizeof=0x10, align=0x2, copyof_62) ; XREF: sub_7F807D9C/r
					; sub_7F80E471/r
wYear		dw ?
wMonth		dw ?
wDayOfWeek	dw ?
wDay		dw ?
wHour		dw ?
wMinute		dw ?
wSecond		dw ?
wMilliseconds	dw ?
SYSTEMTIME	ends


; Input	MD5   :	D63D1DD16C674901B35420BCA7F8E1F3
; Input	CRC32 :	2E9141D1

; File Name   :	C:\Documents and Settings\Jeff\My Documents\Downloads\MMFMIG32.DLL
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	7F800000
; Section 1. (virtual address 00001000)
; Virtual size			: 000317A5 ( 202661.)
; Section size in file		: 00031800 ( 202752.)
; Offset to raw	data for section: 00000400
; Flags	60000020: Text Executable Readable
; Alignment	: default
; Debug	Directory entries

		include	uni.inc	; see unicode subdir of	ida for	info on	unicode

		.686p
		.mmx
		.model flat

; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Execute
_text		segment	para public 'CODE' use32
		assume cs:_text
		;org 7F801000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
		dd 0			; Characteristics
		dd 319D07D5h		; TimeDateStamp: Fri May 17 23:12:21 1996
		dw 0			; MajorVersion
		dw 0			; MinorVersion
		dd 4			; Type:	IMAGE_DEBUG_TYPE_MISC
		dd 110h			; SizeOfData
		dd 0			; AddressOfRawData
		dd 41600h		; PointerToRawData
		dd 0			; Characteristics
		dd 319D07D5h		; TimeDateStamp: Fri May 17 23:12:21 1996
		dw 0			; MajorVersion
		dw 0			; MinorVersion
		dd 3			; Type:	IMAGE_DEBUG_TYPE_FPO
		dd 1AC0h		; SizeOfData
		dd 0			; AddressOfRawData
		dd 41710h		; PointerToRawData
		dd 0
		dd 319D07D5h, 0
		dd 6, 19DC4h, 0
		dd 431D0h, 0
		dd 319D07D5h, 0
		dd 2, 13AE24h, 0
		dd 5CF94h
dword_7F801070	dd 20300h, 0		; DATA XREF: HPProviderInit+39o
		dd 0C0h, 46000000h
dword_7F801080	dd 20320h, 0		; DATA XREF: sub_7F801A60+34o
		dd 0C0h, 46000000h
off_7F801090	dd offset sub_7F801A60	; DATA XREF: HPProviderInit+5Ao
		dd offset sub_7F801AD5
		dd offset sub_7F801AF7
		dd offset sub_7F801B61
		dd offset sub_7F801C6A
		align 8
stru_7F8010A8	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F80207B>
					; DATA XREF: ScMMFVerify@16+Bo
					; SEH scope table for function 7F801F87
		align 8
stru_7F8010B8	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F802350>
					; DATA XREF: ScMMFMigrateToMDB@48+Bo
					; SEH scope table for function 7F8020C2
		align 8
stru_7F8010C8	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F8026D8>
					; DATA XREF: sub_7F8025E7+Bo
					; SEH scope table for function 7F8025E7
		align 8
stru_7F8010D8	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F802875>
					; DATA XREF: sub_7F8026ED+Bo
					; SEH scope table for function 7F8026ED
		align 8
stru_7F8010E8	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F802949>
					; DATA XREF: sub_7F8028D4+Bo
					; SEH scope table for function 7F8028D4
		align 8
stru_7F8010F8	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F802B02>
					; DATA XREF: sub_7F802962+Bo
					; SEH scope table for function 7F802962
		align 8
stru_7F801108	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F802C44>
					; DATA XREF: sub_7F802B1B+Bo
					; SEH scope table for function 7F802B1B
		align 8
stru_7F801118	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F803380>
					; DATA XREF: sub_7F802DB7+Bo
					; SEH scope table for function 7F802DB7
		align 8
stru_7F801128	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F80359A>
					; DATA XREF: sub_7F8034ED+Bo
					; SEH scope table for function 7F8034ED
		align 8
stru_7F801138	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F803B9F>
					; DATA XREF: sub_7F803AA5+Bo
					; SEH scope table for function 7F803AA5
		align 8
stru_7F801148	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F803D20>
					; DATA XREF: StartAddress+Bo
					; SEH scope table for function 7F803C21
		align 8
stru_7F801158	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F803E8A>
					; DATA XREF: sub_7F803DCD+Bo
					; SEH scope table for function 7F803DCD
		align 8
stru_7F801168	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F804000>
					; DATA XREF: sub_7F803EAC+Bo
					; SEH scope table for function 7F803EAC
		align 8
stru_7F801178	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F80428A>
					; DATA XREF: sub_7F804058+Bo
					; SEH scope table for function 7F804058
		align 8
stru_7F801188	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F804555>
					; DATA XREF: sub_7F8042DA+Bo
					; SEH scope table for function 7F8042DA
		align 8
stru_7F801198	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F8048EF>
					; DATA XREF: sub_7F8045B6+Bo
					; SEH scope table for function 7F8045B6
		align 8
stru_7F8011A8	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F804A61>
					; DATA XREF: sub_7F80493B+Bo
					; SEH scope table for function 7F80493B
		align 8
stru_7F8011B8	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F804C0A>
					; DATA XREF: sub_7F804A93+Bo
					; SEH scope table for function 7F804A93
		align 8
stru_7F8011C8	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F804CF3>
					; DATA XREF: sub_7F804C4A+Bo
					; SEH scope table for function 7F804C4A
		align 8
stru_7F8011D8	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F804EAE>
					; DATA XREF: sub_7F804E37+Bo
					; SEH scope table for function 7F804E37
		align 8
stru_7F8011E8	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F8053EA>
					; DATA XREF: sub_7F80530D+Bo
					; SEH scope table for function 7F80530D
		align 8
stru_7F8011F8	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F80546F>
					; DATA XREF: sub_7F805403+Bo
					; SEH scope table for function 7F805403
		align 8
stru_7F801208	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F805566>
					; DATA XREF: sub_7F80549A+Bo
					; SEH scope table for function 7F80549A
		align 8
stru_7F801218	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F80571B>
					; DATA XREF: sub_7F80560A+Bo
					; SEH scope table for function 7F80560A
		align 8
stru_7F801228	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F80582D>
					; DATA XREF: sub_7F80577A+Bo
					; SEH scope table for function 7F80577A
		align 8
stru_7F801238	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F808A56>
					; DATA XREF: sub_7F808A02+Bo
					; SEH scope table for function 7F808A02
		align 8
stru_7F801248	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F808B96>
					; DATA XREF: sub_7F808A6D+Bo
					; SEH scope table for function 7F808A6D
		align 8
stru_7F801258	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F808EF2>
					; DATA XREF: sub_7F808C12+Bo
					; SEH scope table for function 7F808C12
		align 8
stru_7F801268	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F809165>
					; DATA XREF: sub_7F8090D8+Bo
					; SEH scope table for function 7F8090D8
		align 8
stru_7F801278	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F8095F5>
					; DATA XREF: sub_7F8091A3+Bo
					; SEH scope table for function 7F8091A3
		align 8
stru_7F801288	_SCOPETABLE_ENTRY <0FFFFFFFFh, 0, offset loc_7F809E7B>
					; DATA XREF: sub_7F809DFE+Bo
					; SEH scope table for function 7F809DFE
		align 8
		dd 20D10h, 0
		dd 0C0h, 46000000h, 20D11h, 0
		dd 0C0h, 46000000h, 20D12h, 0
		dd 0C0h, 46000000h, 20D13h, 0
		dd 0C0h, 46000000h, 20D14h, 0
		dd 0C0h, 46000000h, 20D15h, 0
		dd 0C0h, 46000000h, 20D16h, 0
		dd 0C0h, 46000000h, 20D17h, 0
		dd 0C0h, 46000000h, 20D18h, 0
		dd 0C0h, 46000000h, 20D19h, 0
		dd 0C0h, 46000000h, 20D1Ah, 0
		dd 0C0h, 46000000h
dword_7F801348	dd 2030Dh, 0		; DATA XREF: sub_7F80AB5D+B0o
					; sub_7F80B0EB+23o
		dd 0C0h, 46000000h, 2030Eh, 0
		dd 0C0h, 46000000h
a0123456789abcd	db '0123456789ABCDEF',0 ; DATA XREF: sub_7F80FCA0+11o
		align 10h
a0123456789ab_0	db '0123456789abcdef',0 ; DATA XREF: sub_7F80FCA0+18o
		align 8
dword_7F801398	dd 68007h		; DATA XREF: sub_7F80E226+2Fo
					; sub_7F80F533+1Fo ...
dword_7F80139C	dd 0E070003h		; DATA XREF: sub_7F80E226:loc_7F80E24Er
		dd offset loc_7F80E5C4
		dd 68007h, 0E1B000Bh
		dd offset loc_7F80E626
		dd 6800Fh, 37010102h
		dd offset sub_7F80E6B9
		dd 68011h, 37090102h
		dd offset sub_7F80E6B9
		dd 18010h, 3704001Eh
		dd offset sub_7F80E64B
		dd 38012h, 30070040h
		dd offset sub_7F80E471
		dd 38013h, 30080040h
		dd offset sub_7F80E471
		dd 8003h, 0E02001Eh
		dd offset sub_7F80EA57
		dd 2800Ch, 1000001Eh
		dd offset sub_7F80E64B
		dd 1800Bh, 0B0102h
		dd offset sub_7F80E722
		dd 38006h, 0E060040h
		dd offset sub_7F80E471
		dd 38005h, 390040h
		dd offset sub_7F80E471
		dd 8000h, 0C1A001Eh
		dd offset sub_7F80EC41
		dd 8000h, 0C1E001Eh
		dd offset sub_7F80EBCF
		dd 8000h, 0C1F001Eh
		dd offset sub_7F80EB5D
		dd 8000h, 0C1D0102h
		dd offset sub_7F80EF21
		dd 8000h, 0C190102h
		dd offset sub_7F80EE72
		dd 8000h, 42001Eh
		dd offset sub_7F80EC41
		dd 8000h, 64001Eh
		dd offset sub_7F80EBCF
		dd 8000h, 65001Eh
		dd offset sub_7F80EB5D
		dd 8000h, 3B0102h
		dd offset sub_7F80EF21
		dd 8000h, 410102h
		dd offset sub_7F80EE72
		dd 18009h, 300B0102h
		dd offset sub_7F80E722
		dd 1800Ah, 250102h
		dd offset sub_7F80E722
		dd 4800Dh, 260003h
		dd offset sub_7F80E51A
		dd 4800Dh, 170003h
		dd offset sub_7F80E56F
		dd 18004h, 37001Eh
		dd offset sub_7F80E64B
		dd 30006h, 600040h
		dd offset sub_7F80E471
		dd 30007h, 610040h
		dd offset sub_7F80E471
		dd 38020h, 30080040h
		dd offset sub_7F80E471
		dd 70006h, 4B001Eh
		dd offset sub_7F80E439
		dd 40009h, 63000Bh
		dd offset loc_7F80F510
		dd 50008h, 620003h
		dd offset loc_7F80F4F3
		dd 3 dup(0)
dword_7F801530	dd 60000h, 430102h	; DATA XREF: .text:7F801834o
					; .text:7F801838o ...
		dd offset sub_7F80F339
		dd 60000h, 44001Eh
		dd offset sub_7F80F1DB
		dd 60000h, 77001Eh
		dd offset sub_7F80F2C3
		dd 60000h, 78001Eh
		dd offset sub_7F80F24D
		dd 60000h, 520102h
		dd offset sub_7F80F3F1
		dd 60001h, 410102h
		dd offset sub_7F80F339
		dd 60001h, 42001Eh
		dd offset sub_7F80F1DB
		dd 60001h, 64001Eh
		dd offset sub_7F80F2C3
		dd 60001h, 65001Eh
		dd offset sub_7F80F24D
		dd 60001h, 3B0102h
		dd offset sub_7F80F3F1
		dd 4 dup(0)
dword_7F8015B8	dd 60000h, 410102h	; DATA XREF: .text:7F801840o
					; .text:7F801844o
		dd offset sub_7F80F339
		dd 60000h, 42001Eh
		dd offset sub_7F80F1DB
		dd 60000h, 64001Eh
		dd offset sub_7F80F2C3
		dd 60000h, 65001Eh
		dd offset sub_7F80F24D
		dd 60000h, 3B0102h
		dd offset sub_7F80F3F1
		align 10h
dword_7F801600	dd 2, 74001Eh		; DATA XREF: .text:7F80182Co
		dd offset sub_7F80EA57
		dd 30003h, 4E0040h
		dd offset sub_7F80E471
		dd 10004h, 49001Eh
		dd offset sub_7F80E64B
		dd 30007h, 320040h
		dd offset sub_7F80E471
		align 20h
dword_7F801640	dd 1, 5A001Eh		; DATA XREF: .text:7F801830o
		dd offset sub_7F80EC41
		dd 1, 66001Eh
		dd offset sub_7F80EBCF
		dd 1, 67001Eh
		dd offset sub_7F80EB5D
		dd 1, 5C0102h
		dd offset sub_7F80EF21
		dd 1, 5B0102h
		dd offset sub_7F80EE72
		dd 8001h, 430102h
		dd offset sub_7F80EE72
		dd 8001h, 44001Eh
		dd offset sub_7F80EC41
		dd 8001h, 77001Eh
		dd offset sub_7F80EBCF
		dd 8001h, 78001Eh
		dd offset sub_7F80EB5D
		dd 8001h, 520102h
		dd offset sub_7F80EF21
		dd 30003h, 4E0040h
		dd offset sub_7F80E471
		dd 10004h, 49001Eh
		dd offset sub_7F80E64B
		dd 4 dup(0)
dword_7F8016E0	dd 8000h, 5A001Eh	; DATA XREF: .text:7F801848o
		dd offset sub_7F80EC41
		dd 8000h, 66001Eh
		dd offset sub_7F80EBCF
		dd 8000h, 67001Eh
		dd offset sub_7F80EB5D
		dd 8000h, 5C0102h
		dd offset sub_7F80EF21
		dd 1, 0C1A001Eh
		dd offset sub_7F80EC41
		dd 1, 0C1E001Eh
		dd offset sub_7F80EBCF
		dd 1, 0C1F001Eh
		dd offset sub_7F80EB5D
		dd 1, 0C1D0102h
		dd offset sub_7F80EF21
		dd 1, 0C190102h
		dd offset sub_7F80EE72
		dd 1, 42001Eh
		dd offset sub_7F80EC41
		dd 1, 64001Eh
		dd offset sub_7F80EBCF
		dd 1, 65001Eh
		dd offset sub_7F80EB5D
		dd 1, 3B0102h
		dd offset sub_7F80EF21
		dd 1, 410102h
		dd offset sub_7F80EE72
		dd 30003h, 390040h
		dd offset sub_7F80E471
		dd 10004h, 37001Eh
		dd offset sub_7F80E64B
		dd 70006h, 1A001Eh
		dd offset sub_7F80E439
		dd 18004h, 1001001Eh
		dd offset sub_7F80E64B
		dd 8000h, 5A001Eh
		dd offset sub_7F80EC41
		dd 38005h, 4E0040h
		dd offset sub_7F80E471
		align 20h
off_7F8017E0	dd offset String2	; DATA XREF: sub_7F80E354+11o
					; sub_7F80E39F:loc_7F80E3DCr
					; "IPM.Note"
		dd offset aIpm_microsoftM ; "IPM.Microsoft Mail.Note"
		dd offset aReport_ipm_not ; "Report.IPM.Note.IPNRN"
		dd offset aIpm_microsof_0 ; "IPM.Microsoft Mail.Read Receipt"
		dd offset aReport_ipm_n_0 ; "Report.IPM.Note.NDR"
		dd offset aIpm_microsof_1 ; "IPM.Microsoft Mail.Non-Delivery"
		dd offset aIpm_schedule_m ; "IPM.Schedule.Meeting.Resp.Pos"
		dd offset aIpm_microsoftS ; "IPM.Microsoft Schedule.MtgRespP"
		dd offset aIpm_schedule_0 ; "IPM.Schedule.Meeting.Resp.Neg"
		dd offset aIpm_microsof_2 ; "IPM.Microsoft Schedule.MtgRespN"
		dd offset aIpm_schedule_1 ; "IPM.Schedule.Meeting.Resp.Tent"
		dd offset aIpm_microsof_3 ; "IPM.Microsoft Schedule.MtgRespA"
		dd offset aIpm_schedule_2 ; "IPM.Schedule.Meeting.Request"
		dd offset aIpm_microsof_4 ; "IPM.Microsoft Schedule.MtgReq"
		dd offset aIpm_schedule_3 ; "IPM.Schedule.Meeting.Canceled"
		dd offset aIpm_microsof_5 ; "IPM.Microsoft Schedule.MtgCncl"
		dd offset aPlaceHolderNdr ; "Place holder NDR Original Msg"
		dd offset Default
dword_7F801828	dd 0			; DATA XREF: sub_7F80E226+7r
					; sub_7F80E354+39o ...
		dd offset dword_7F801600
		dd offset dword_7F801640
		dd offset dword_7F801530
		dd offset dword_7F801530
		dd offset dword_7F801530
		dd offset dword_7F8015B8
		dd offset dword_7F8015B8
		dd offset dword_7F8016E0
		dd 0
		dd 80040600h, 80040201h, 80040400h, 80040301h, 2 dup(8004010Fh)
		dd 80040108h, 80004005h, 2 dup(8004010Fh), 80040604h, 80040600h
		dd 2 dup(80040110h), 80004005h,	80040604h, 4 dup(80004005h)
		dd 80040400h, 80040302h, 80040112h, 5 dup(80004005h), 80040111h
		dd 0
		dd 80040501h, 0
aXabNsp		db 'XAB NSP',0          ; DATA XREF: sub_7F80E7F6+C9o
dword_7F8018D8	dd 3A50544Dh		; DATA XREF: sub_7F80E7F6+16Ar
		align 10h
aSmtp_0		db 'SMTP',0             ; DATA XREF: sub_7F80E7F6+E3o
					; sub_7F80E7F6+174o
		align 10h
dword_7F8018F0	dd 20301h, 0		; DATA XREF: sub_7F80B0EB+49o
		dd 0C0h, 46000000h, 2031Bh, 0
		dd 0C0h, 46000000h
dword_7F801910	dd 20303h, 0		; DATA XREF: sub_7F80AEC7+CAo
					; sub_7F80B081+36o
		dd 0C0h, 46000000h, 20306h, 0
		dd 0C0h, 46000000h
dword_7F801930	dd 20307h, 0		; DATA XREF: sub_7F804058+C2o
		dd 0C0h, 46000000h, 20308h, 0
		dd 0C0h, 46000000h, 2030Ch, 0
		dd 0C0h, 46000000h, 20310h, 0
		dd 0C0h, 46000000h, 20313h, 0
		dd 0C0h, 46000000h
dword_7F801980	dd 20316h, 0		; DATA XREF: sub_7F80D6D8+8Bo
					; sub_7F80DB1E+39o
		dd 0C0h, 46000000h
dword_7F801990	dd 2031Ah, 0		; DATA XREF: sub_7F80B80E+A5o
		dd 0C0h, 46000000h
dword_7F8019A0	dd 2 dup(0)		; DATA XREF: sub_7F801A60+45o
		dd 0C0h, 46000000h
dword_7F8019B0	dd 0Ch,	0		; DATA XREF: sub_7F80493B+55o
					; sub_7F80493B+8Bo ...
		dd 0C0h, 46000000h
dword_7F8019C0	dd 8648862Ah, 0A0314F7h, 10103h, 0 ; DATA XREF:	sub_7F80DDB5+142o
stru_7F8019D0	_SCOPETABLE_ENTRY <0FFFFFFFFh, offset loc_7F815B24, \
					; DATA XREF: sub_7F815A66+Bo
				   offset loc_7F815B2A>	; SEH scope table for function 7F815A66
		align 10h
aMmfMigrationLi	db 'MMF Migration Library',0
		align 4
		dd 6000006h, 100h, 6030010h, 10020600h,	45454504h, 5050505h
		dd 303505h, 50h, 38282000h, 8075850h, 30303700h, 75057h
		dd 8202000h, 0
		db 8,'``````',0
		dd 78707000h, 8787878h,	807h, 8080007h,	8000008h, 800h
		dd 8, 3	dup(0)

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F801A60(LPVOID lp,	void *,	LPVOID)
sub_7F801A60	proc near		; DATA XREF: .text:off_7F801090o

lp		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		push	48h		; ucb
		mov	ebx, [ebp+lp]
		push	ebx		; lp
		call	ds:IsBadWritePtr
		test	eax, eax
		jnz	short loc_7F801AC9
		push	10h		; ucb
		push	[ebp+arg_4]	; lp
		call	ds:IsBadReadPtr
		test	eax, eax
		jnz	short loc_7F801AC9
		push	4		; ucb
		push	[ebp+arg_8]	; lp
		call	ds:IsBadWritePtr
		test	eax, eax
		jnz	short loc_7F801AC9
		mov	edi, offset dword_7F801080
		mov	ecx, 10h
		mov	esi, [ebp+arg_4]
		repe cmpsb
		jz	short loc_7F801ABD
		mov	edi, offset dword_7F8019A0
		mov	ecx, 10h
		mov	esi, [ebp+arg_4]
		repe cmpsb
		jz	short loc_7F801ABD
		mov	eax, 80004002h
		jmp	short loc_7F801ACE
; ---------------------------------------------------------------------------

loc_7F801ABD:				; CODE XREF: sub_7F801A60+43j
					; sub_7F801A60+54j
		mov	eax, [ebp+arg_8]
		mov	[eax], ebx
		xor	eax, eax
		inc	dword ptr [ebx+4]
		jmp	short loc_7F801ACE
; ---------------------------------------------------------------------------

loc_7F801AC9:				; CODE XREF: sub_7F801A60+14j
					; sub_7F801A60+23j ...
		mov	eax, 80070057h

loc_7F801ACE:				; CODE XREF: sub_7F801A60+5Bj
					; sub_7F801A60+67j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_7F801A60	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F801AD5(LPVOID lp)
sub_7F801AD5	proc near		; DATA XREF: .text:7F801094o

lp		= dword	ptr  4

		push	esi
		push	48h		; ucb
		mov	esi, [esp+8+lp]
		push	esi		; lp
		call	ds:IsBadWritePtr
		test	eax, eax
		mov	eax, 0
		jnz	short loc_7F801AF3
		mov	eax, [esi+4]
		inc	eax
		mov	[esi+4], eax

loc_7F801AF3:				; CODE XREF: sub_7F801AD5+15j
		pop	esi
		retn	4
sub_7F801AD5	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F801AF7(LPVOID lp)
sub_7F801AF7	proc near		; DATA XREF: .text:7F801098o

lp		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+lp]
		push	edi
		push	48h		; ucb
		push	esi		; lp
		call	ds:IsBadWritePtr
		test	eax, eax
		jnz	short loc_7F801B59
		mov	eax, [esi+4]
		dec	eax
		mov	[esi+4], eax
		jnz	short loc_7F801B5B
		lea	edi, [esi+2Ch]
		mov	dword ptr [esi], 0
		push	dword ptr [esi+0Ch]
		call	UlRelease@4
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_7F801B55
		push	0FFFFFFFFh	; dwMilliseconds
		push	dword ptr [eax+4] ; hHandle
		call	sub_7F82F3F3
		test	eax, eax
		jz	short loc_7F801B55
		mov	ecx, [esi+30h]
		mov	eax, [edi]
		mov	edx, [eax]
		dec	dword ptr [ecx+edx]
		mov	eax, [edi]
		push	dword ptr [eax+4] ; hMutex
		call	ds:ReleaseMutex
		push	dword ptr [edi]
		call	sub_7F82F729

loc_7F801B55:				; CODE XREF: sub_7F801AF7+32j
					; sub_7F801AF7+40j
		push	esi
		call	dword ptr [esi+18h]

loc_7F801B59:				; CODE XREF: sub_7F801AF7+12j
		xor	eax, eax

loc_7F801B5B:				; CODE XREF: sub_7F801AF7+1Bj
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_7F801AF7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F801B61(LPVOID lp,	int, int, int, LPVOID, LPVOID, LPVOID)
sub_7F801B61	proc near		; DATA XREF: .text:7F80109Co

var_14		= dword	ptr -14h
var_C		= word ptr -0Ch
var_4		= dword	ptr -4
lp		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		mov	ebx, ds:IsBadWritePtr
		push	48h		; ucb
		mov	edi, [ebp+lp]
		push	edi		; lp
		call	ebx ; IsBadWritePtr
		test	eax, eax
		jnz	loc_7F801C5C
		push	4		; ucb
		mov	esi, [ebp+arg_10]
		push	esi		; lp
		call	ebx ; IsBadWritePtr
		test	eax, eax
		jnz	loc_7F801C5C
		push	4		; ucb
		push	[ebp+arg_14]	; lp
		call	ebx ; IsBadWritePtr
		test	eax, eax
		jnz	loc_7F801C5C
		push	4		; ucb
		push	[ebp+arg_18]	; lp
		call	ebx ; IsBadWritePtr
		test	eax, eax
		jnz	loc_7F801C5C
		mov	eax, [ebp+arg_14]
		mov	edx, [ebp+arg_18]
		push	dword ptr [eax]	; ucb
		push	dword ptr [edx]	; lp
		call	ebx ; IsBadWritePtr
		test	eax, eax
		jnz	loc_7F801C5C
		xor	ebx, ebx
		mov	[esi], ebx
		cmp	[edi+34h], ebx
		jz	short loc_7F801C1E
		lea	eax, [ebp+var_4]
		mov	[ebp+var_4], ebx
		push	eax
		push	0E060040h
		push	[ebp+arg_4]
		call	HrGetOneProp@12
		test	eax, eax
		jl	short loc_7F801C18
		lea	eax, [edi+40h]
		lea	ecx, [edi+38h]
		push	eax		; FILETIME *
		push	ecx		; lpFileTime2
		mov	eax, [ebp+var_4]
		add	eax, 8
		push	eax		; lpFileTime1
		call	FOutsideDateRange@12
		test	eax, eax
		jz	short loc_7F801C18
		mov	[ebp+var_C], bx
		lea	eax, [ebp+var_14]
		mov	[ebp+var_14], 29000Bh
		push	eax
		push	[ebp+arg_4]
		call	HrSetOneProp@8
		mov	dword ptr [esi], 3

loc_7F801C18:				; CODE XREF: sub_7F801B61+80j
					; sub_7F801B61+98j
		push	[ebp+var_4]
		call	dword ptr [edi+18h]

loc_7F801C1E:				; CODE XREF: sub_7F801B61+68j
		cmp	dword ptr [esi], 0
		jnz	short loc_7F801C58
		lea	esi, [edi+2Ch]
		push	[ebp+arg_4]
		call	HrModifyNamesInMsg@4
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_7F801C58
		push	0FFFFFFFFh	; dwMilliseconds
		push	dword ptr [eax+4] ; hHandle
		call	sub_7F82F3F3
		test	eax, eax
		jz	short loc_7F801C58
		mov	ecx, [edi+30h]
		mov	eax, [esi]
		mov	edx, [eax]
		inc	dword ptr [ecx+edx+18h]
		mov	eax, [esi]
		push	dword ptr [eax+4] ; hMutex
		call	ds:ReleaseMutex

loc_7F801C58:				; CODE XREF: sub_7F801B61+C0j
					; sub_7F801B61+D1j ...
		xor	eax, eax
		jmp	short loc_7F801C61
; ---------------------------------------------------------------------------

loc_7F801C5C:				; CODE XREF: sub_7F801B61+19j
					; sub_7F801B61+29j ...
		mov	eax, 80070057h

loc_7F801C61:				; CODE XREF: sub_7F801B61+F9j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	1Ch
sub_7F801B61	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F801C6A(LPVOID lp,	int, int, int, int, LPVOID, LPVOID)
sub_7F801C6A	proc near		; DATA XREF: .text:7F8010A0o

lp		= dword	ptr  4
arg_14		= dword	ptr  18h
arg_18		= dword	ptr  1Ch

		push	ebx
		push	esi
		push	edi
		push	48h		; ucb
		push	[esp+10h+lp]	; lp
		mov	edi, ds:IsBadWritePtr
		call	edi ; IsBadWritePtr
		test	eax, eax
		jnz	short loc_7F801CA8
		mov	esi, [esp+0Ch+arg_14]
		push	4		; ucb
		push	esi		; lp
		call	edi ; IsBadWritePtr
		test	eax, eax
		jnz	short loc_7F801CA8
		mov	ebx, [esp+0Ch+arg_18]
		push	4		; ucb
		push	ebx		; lp
		call	edi ; IsBadWritePtr
		test	eax, eax
		jnz	short loc_7F801CA8
		push	dword ptr [esi]	; ucb
		push	dword ptr [ebx]	; lp
		call	edi ; IsBadWritePtr
		test	eax, eax
		mov	eax, 0
		jz	short loc_7F801CAD

loc_7F801CA8:				; CODE XREF: sub_7F801C6A+13j
					; sub_7F801C6A+20j ...
		mov	eax, 80070057h

loc_7F801CAD:				; CODE XREF: sub_7F801C6A+3Cj
		pop	edi
		pop	esi
		pop	ebx
		retn	1Ch
sub_7F801C6A	endp

; Exported entry   2. HPProviderInit

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

		public HPProviderInit
HPProviderInit	proc near		; DATA XREF: .text:off_7F8326A8o

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_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		lea	eax, [ebp+var_4]
		mov	[ebp+var_4], 0
		push	esi
		push	edi
		push	eax
		push	48h
		call	[ebp+arg_8]
		test	eax, eax
		jl	loc_7F801D71
		mov	edi, [ebp+var_4]
		xor	eax, eax
		mov	ecx, 12h
		rep stosd
		mov	eax, [ebp+var_4]
		mov	esi, [ebp+arg_0]
		add	eax, 0Ch
		xor	edi, edi
		push	eax
		push	offset dword_7F801070
		push	esi
		mov	eax, [esi]
		call	dword ptr [eax]
		mov	ebx, eax
		test	ebx, ebx
		jge	short loc_7F801D07
		push	[ebp+var_4]
		call	[ebp+arg_10]
		mov	[ebp+var_4], edi
		jmp	short loc_7F801D59
; ---------------------------------------------------------------------------

loc_7F801D07:				; CODE XREF: HPProviderInit+47j
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+arg_4]
		mov	dword ptr [eax], offset	off_7F801090
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax+4], 1
		mov	ecx, [ebp+var_4]
		mov	[ecx+8], edx
		mov	edx, [ebp+arg_8]
		mov	eax, [ebp+var_4]
		mov	[eax+0Ch], esi
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_4]
		mov	[ecx+10h], edx
		mov	ecx, [ebp+var_4]
		mov	[ecx+14h], eax
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+arg_10]
		mov	esi, [ebp+arg_14]
		mov	[ecx+18h], edx
		mov	edi, [ebp+var_4]
		add	edi, 1Ch
		movsd
		movsd
		movsd
		movsd
		push	[ebp+var_4]
		call	sub_7F801D78

loc_7F801D59:				; CODE XREF: HPProviderInit+52j
		test	ebx, ebx
		jge	short loc_7F801D67
		push	[ebp+var_4]
		call	UlRelease@4
		jmp	short loc_7F801D6F
; ---------------------------------------------------------------------------

loc_7F801D67:				; CODE XREF: HPProviderInit+A8j
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_1C]
		mov	[eax], ecx

loc_7F801D6F:				; CODE XREF: HPProviderInit+B2j
		mov	eax, ebx

loc_7F801D71:				; CODE XREF: HPProviderInit+1Bj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
HPProviderInit	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F801D78	proc near		; CODE XREF: HPProviderInit+A1p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		xor	ebx, ebx
		lea	edi, [esi+2Ch]
		push	ebx		; dwMaximumSizeLow
		mov	[esi+34h], ebx
		push	45586D67h	; int
		push	ebx		; int
		call	sub_7F82F6AD
		mov	edx, eax
		mov	[edi], eax
		test	edx, edx
		jz	short loc_7F801DE3
		mov	eax, [edx]
		mov	ecx, [eax+0Ch]
		mov	[esi+30h], ecx
		test	ecx, ecx
		jnz	short loc_7F801DAC
		push	dword ptr [edx+4]
		jmp	short loc_7F801DDD
; ---------------------------------------------------------------------------

loc_7F801DAC:				; CODE XREF: sub_7F801D78+2Dj
		mov	edx, [edx]
		add	edx, ecx
		lea	eax, [edx+8]
		inc	dword ptr [edx]
		mov	ecx, [edx+4]
		add	edx, 10h
		mov	[esi+34h], ecx
		lea	ecx, [esi+38h]
		mov	ebx, [eax]
		add	esi, 40h
		mov	eax, [eax+4]
		mov	[ecx], ebx
		mov	[ecx+4], eax
		mov	eax, [edx+4]
		mov	ebx, [edx]
		mov	ecx, [edi]
		mov	[esi], ebx
		mov	[esi+4], eax
		push	dword ptr [ecx+4] ; hMutex

loc_7F801DDD:				; CODE XREF: sub_7F801D78+32j
		call	ds:ReleaseMutex

loc_7F801DE3:				; CODE XREF: sub_7F801D78+21j
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_7F801D78	endp

; Exported entry   4. HrModifyNamesInMsg@4

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

		public HrModifyNamesInMsg@4
HrModifyNamesInMsg@4 proc near		; CODE XREF: sub_7F801B61+C8p
					; DATA XREF: .text:off_7F8326A8o

var_14		= byte ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		lea	eax, [ebp+var_4]
		lea	ecx, [ebp+var_14]
		push	eax
		mov	[ebp+var_C], esi
		push	ecx
		mov	edi, [ebp+arg_0]
		push	esi
		mov	[ebp+var_8], esi
		push	offset unk_7F835190
		mov	eax, [edi]
		push	edi
		mov	[ebp+var_4], esi
		call	dword ptr [eax+14h]
		mov	ebx, eax
		test	ebx, ebx
		jl	loc_7F801F2F
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax], 1A001Eh
		jnz	loc_7F801F2D
		push	offset String2	; "IPM.Note"
		push	dword ptr [eax+8] ; lpString1
		call	ds:lstrcmpiA
		test	eax, eax
		jnz	loc_7F801F2D
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax+10h], 0C1E001Eh
		jnz	short loc_7F801E8C
		push	offset aSmtp	; "SMTP"
		push	dword ptr [eax+18h] ; lpString1
		call	ds:lstrcmpiA
		test	eax, eax
		jz	short loc_7F801E8C
		push	offset aX400	; "X400"
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+18h] ; lpString1
		call	ds:lstrcmpiA
		test	eax, eax
		jz	short loc_7F801E8C
		push	esi
		mov	eax, [edi]
		push	offset unk_7F835140
		push	edi
		call	dword ptr [eax+24h]
		mov	ebx, eax
		test	ebx, ebx
		jl	loc_7F801F2F

loc_7F801E8C:				; CODE XREF: HrModifyNamesInMsg@4+64j
					; HrModifyNamesInMsg@4+76j ...
		lea	eax, [ebp+var_C]
		xor	esi, esi
		push	eax
		push	esi
		push	edi
		mov	eax, [edi]
		call	dword ptr [eax+48h]
		mov	ebx, eax
		test	ebx, ebx
		jl	loc_7F801F2F
		lea	eax, [ebp+var_8]
		push	eax
		push	esi
		push	esi
		push	esi
		push	offset unk_7F835178
		push	[ebp+var_C]
		call	HrQueryAllRows@24
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_7F801F2F
		mov	esi, [ebp+var_8]
		mov	eax, [ebp+var_8]
		add	esi, 4
		mov	eax, [eax]
		imul	eax, 0Ch
		add	eax, esi
		mov	[ebp+var_10], eax
		cmp	eax, esi
		jbe	short loc_7F801F1E

loc_7F801ED4:				; CODE XREF: HrModifyNamesInMsg@4+133j
		mov	ebx, [esi+8]
		add	ebx, 30h
		cmp	dword ptr [ebx], 3002001Eh
		jnz	short loc_7F801F16
		push	offset aSmtp	; "SMTP"
		push	dword ptr [ebx+8] ; lpString1
		call	ds:lstrcmpiA
		test	eax, eax
		jz	short loc_7F801F16
		push	offset aX400	; "X400"
		push	dword ptr [ebx+8] ; lpString1
		call	ds:lstrcmpiA
		test	eax, eax
		jz	short loc_7F801F16
		mov	dword ptr [ebx], 1
		mov	eax, [esi+8]
		mov	dword ptr [eax+40h], 1

loc_7F801F16:				; CODE XREF: HrModifyNamesInMsg@4+F7j
					; HrModifyNamesInMsg@4+109j ...
		add	esi, 0Ch
		cmp	[ebp+var_10], esi
		ja	short loc_7F801ED4

loc_7F801F1E:				; CODE XREF: HrModifyNamesInMsg@4+E9j
		push	[ebp+var_8]
		push	0
		push	edi
		mov	ebx, [edi]
		call	dword ptr [ebx+4Ch]
		mov	ebx, eax
		jmp	short loc_7F801F2F
; ---------------------------------------------------------------------------

loc_7F801F2D:				; CODE XREF: HrModifyNamesInMsg@4+3Ej
					; HrModifyNamesInMsg@4+54j
		xor	ebx, ebx

loc_7F801F2F:				; CODE XREF: HrModifyNamesInMsg@4+2Fj
					; HrModifyNamesInMsg@4+9Dj ...
		push	[ebp+var_8]
		call	FreeProws@4
		push	[ebp+var_C]
		call	UlRelease@4
		push	[ebp+var_4]
		call	MAPIFreeBuffer@4
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
HrModifyNamesInMsg@4 endp

; Exported entry   3. FOutsideDateRange@12

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	FOutsideDateRange(FILETIME *lpFileTime1, FILETIME *lpFileTime2,	FILETIME *)
		public FOutsideDateRange@12
FOutsideDateRange@12 proc near		; CODE XREF: sub_7F801B61+91p
					; DATA XREF: .text:off_7F8326A8o

lpFileTime1	= dword	ptr  8
lpFileTime2	= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	[ebp+lpFileTime2] ; lpFileTime2
		push	[ebp+lpFileTime1] ; lpFileTime1
		call	ds:CompareFileTime
		push	[ebp+arg_8]	; lpFileTime2
		push	[ebp+lpFileTime1] ; lpFileTime1
		mov	esi, eax
		call	ds:CompareFileTime
		test	esi, esi
		jl	short loc_7F801F7D
		test	eax, eax
		mov	eax, 0
		jl	short loc_7F801F82

loc_7F801F7D:				; CODE XREF: FOutsideDateRange@12+20j
		mov	eax, 1

loc_7F801F82:				; CODE XREF: FOutsideDateRange@12+29j
		pop	esi
		pop	ebp
		retn	0Ch
FOutsideDateRange@12 endp

; Exported entry   7. ScMMFVerify@16

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

		public ScMMFVerify@16
ScMMFVerify@16	proc near		; CODE XREF: sub_7F805FDE+C3p
					; DATA XREF: .text:off_7F8326A8o

var_2C		= dword	ptr -2Ch
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
lpString	= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F8010A8
		push	offset sub_7F82FBD0
		push	eax
		mov	large fs:0, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+var_20], ebx
		mov	[ebp+var_1C], 80004005h
		mov	[ebp+var_24], ebx
		mov	[ebp+ms_exc.registration.TryLevel], ebx
		push	ebx
		call	MAPIInitialize@4
		mov	esi, [ebp+arg_8]
		cmp	esi, ebx
		jz	short loc_7F801FCE
		mov	[esi], ebx

loc_7F801FCE:				; CODE XREF: ScMMFVerify@16+43j
		call	MAPIGetDefaultMalloc@0
		push	eax
		push	offset MAPIFreeBuffer@4
		push	offset MAPIAllocateMore@12
		push	offset MAPIAllocateBuffer@8
		xor	edi, edi
		push	edi
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_7F8026ED
		mov	[ebp+var_1C], eax
		cmp	eax, edi
		jnz	short loc_7F80206F
		call	sub_7F802896
		mov	[ebp+var_1C], eax
		cmp	eax, edi
		jl	short loc_7F80206F
		lea	eax, [ebp+var_24]
		push	eax		; int
		push	[ebp+arg_4]	; int
		push	[ebp+lpString]	; lpString
		mov	eax, [ebp+var_20]
		add	eax, 58h
		push	eax		; int
		mov	eax, [ebp+var_20]
		add	eax, 54h
		push	eax		; int
		mov	eax, [ebp+var_20]
		add	eax, 50h
		push	eax		; int
		call	sub_7F8028D4
		mov	[ebp+var_1C], eax
		cmp	eax, edi
		jnz	short loc_7F80206F
		test	esi, esi
		jz	short loc_7F80206F
		mov	ebx, offset unk_7F8351C8
		cmp	[ebx], edi
		jz	short loc_7F802064
		mov	edi, [ebp+var_2C]

loc_7F80203D:				; CODE XREF: ScMMFVerify@16+DBj
		push	[ebp+var_20]
		push	ebx
		call	sub_7F802C9E
		mov	[ebp+var_1C], eax
		test	eax, eax
		jl	short loc_7F80206F
		mov	edi, [ebp+var_20]
		add	edi, 4D0h
		movzx	eax, word ptr [ebx+0Ah]
		add	[edi], eax
		add	ebx, 10h
		cmp	dword ptr [ebx], 0
		jnz	short loc_7F80203D

loc_7F802064:				; CODE XREF: ScMMFVerify@16+B1j
		mov	eax, [ebp+var_20]
		mov	eax, [eax+4D0h]
		mov	[esi], eax

loc_7F80206F:				; CODE XREF: ScMMFVerify@16+6Dj
					; ScMMFVerify@16+79j ...
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F8020AF

loc_7F80207B:				; DATA XREF: .text:stru_7F8010A8o
		mov	eax, [ebp+var_20] ; Finally handler 0 for function 7F801F87
		mov	eax, [eax+54h]
		test	eax, eax
		jz	short loc_7F80208B
		push	eax
		call	sub_7F80CB32

loc_7F80208B:				; CODE XREF: ScMMFVerify@16+FCj
		call	sub_7F81762E
		mov	eax, [ebp+arg_C]
		test	eax, eax
		jz	short loc_7F80209C
		mov	ecx, [ebp+var_24]
		mov	[eax], ecx

loc_7F80209C:				; CODE XREF: ScMMFVerify@16+10Ej
		push	[ebp+var_20]
		call	MAPIFreeBuffer@4
		call	MAPIUninitialize@0
		mov	esp, [ebp+ms_exc.old_esp]
		mov	eax, [ebp+var_1C]

loc_7F8020AF:				; DATA XREF: ScMMFVerify@16+EFo
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
ScMMFVerify@16	endp

; Exported entry   6. ScMMFMigrateToMDB@48

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	ScMMFMigrateToMDB(HWND hWnd, int, int, int, int, int, int, int,	int, int, int, int)
		public ScMMFMigrateToMDB@48
ScMMFMigrateToMDB@48 proc near		; CODE XREF: sub_7F8081B3+78p
					; DATA XREF: .text:off_7F8326A8o

var_B0		= byte ptr -0B0h
Buffer		= byte ptr -70h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
hWnd		= dword	ptr  8
arg_4		= dword	ptr  0Ch
lpString	= 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
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch
arg_28		= dword	ptr  30h
arg_2C		= dword	ptr  34h

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F8010B8
		push	offset sub_7F82FBD0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0A0h
		mov	[ebp+var_20], 80004005h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+var_1C], esi
		mov	[ebp+var_28], esi
		mov	[ebp+var_2C], esi
		mov	[ebp+ms_exc.registration.TryLevel], esi
		cmp	[ebp+arg_2C], esi
		jz	short loc_7F80210A
		mov	eax, [ebp+arg_2C]
		mov	[eax], esi

loc_7F80210A:				; CODE XREF: ScMMFMigrateToMDB@48+41j
		mov	ebx, [ebp+arg_4]
		and	ebx, 8
		jz	short loc_7F802126
		push	[ebp+hWnd]	; hWnd
		call	ds:IsWindow
		test	eax, eax
		jz	short loc_7F802126
		mov	[ebp+var_28], 1

loc_7F802126:				; CODE XREF: ScMMFMigrateToMDB@48+4Ej
					; ScMMFMigrateToMDB@48+5Bj
		cmp	dword_7F835290,	0
		jnz	short loc_7F802153
		push	offset dword_7F835290
		push	178h
		call	[ebp+arg_1C]
		test	eax, eax
		jnz	short loc_7F802153
		mov	ecx, dword_7F835290
		mov	eax, [ebp+lpString]
		mov	[ecx+8], eax
		mov	[ebp+var_2C], 1

loc_7F802153:				; CODE XREF: ScMMFMigrateToMDB@48+6Bj
					; ScMMFMigrateToMDB@48+7Cj
		push	[ebp+arg_28]
		push	[ebp+arg_24]
		push	[ebp+arg_20]
		push	[ebp+arg_1C]
		push	[ebp+hWnd]
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_7F8026ED
		mov	[ebp+var_20], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	loc_7F802344
		push	40h		; cchBufferMax
		push	offset Caption	; lpBuffer
		push	1513h		; uID
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+8] ; hInstance
		call	ds:LoadStringA
		mov	ecx, [ebp+var_1C]
		mov	eax, [ebp+arg_10]
		mov	[ecx+84h], eax
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_1C]
		mov	[ecx+9Ch], eax
		mov	ecx, [ebp+var_1C]
		mov	eax, [ebp+arg_14]
		mov	[ecx+0A0h], eax
		mov	ecx, [ebp+var_1C]
		mov	eax, [ebp+arg_18]
		mov	[ecx+0A4h], eax
		test	ebx, ebx
		jz	short loc_7F8021E3
		push	[ebp+hWnd]	; hWnd
		call	ds:IsWindow
		test	eax, eax
		jnz	short loc_7F8021E3
		mov	eax, [ebp+var_1C]
		mov	[eax+4], edi
		mov	[ebp+var_20], 80070057h
		jmp	loc_7F802344
; ---------------------------------------------------------------------------

loc_7F8021E3:				; CODE XREF: ScMMFMigrateToMDB@48+100j
					; ScMMFMigrateToMDB@48+10Dj
		test	byte ptr [ebp+arg_4+3],	10h
		mov	eax, [ebp+var_1C]
		jz	short loc_7F8021F8
		mov	dword ptr [eax+88h], 1
		jmp	short loc_7F80221E
; ---------------------------------------------------------------------------

loc_7F8021F8:				; CODE XREF: ScMMFMigrateToMDB@48+128j
		mov	eax, [eax+9Ch]
		and	eax, 20000000h
		shr	eax, 1Dh
		push	eax		; int
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+8] ; hInstance
		push	[ebp+lpString]	; int
		call	sub_7F80530D
		mov	ecx, [ebp+var_1C]
		mov	[ecx+88h], eax

loc_7F80221E:				; CODE XREF: ScMMFMigrateToMDB@48+134j
		call	sub_7F802896
		mov	[ebp+var_20], eax
		xor	edi, edi
		cmp	eax, edi
		jl	loc_7F802344
		mov	eax, [ebp+var_1C]
		add	eax, 4B4h
		push	eax		; int
		push	[ebp+arg_C]	; int
		push	[ebp+lpString]	; lpString
		mov	eax, [ebp+var_1C]
		add	eax, 58h
		push	eax		; int
		mov	eax, [ebp+var_1C]
		add	eax, 54h
		push	eax		; int
		mov	eax, [ebp+var_1C]
		add	eax, 50h
		push	eax		; int
		call	sub_7F8028D4
		mov	[ebp+var_20], eax
		cmp	eax, edi
		jnz	loc_7F802344
		push	[ebp+var_1C]
		call	sub_7F802962
		mov	esi, offset unk_7F8351C8
		cmp	[esi], edi
		jz	short loc_7F8022A3
		mov	edi, [ebp+var_30]

loc_7F802278:				; CODE XREF: ScMMFMigrateToMDB@48+1DFj
		push	[ebp+var_1C]
		push	esi
		call	sub_7F802C9E
		mov	[ebp+var_20], eax
		test	eax, eax
		jl	loc_7F802344
		mov	edi, [ebp+var_1C]
		add	edi, 4D0h
		movzx	eax, word ptr [esi+0Ah]
		add	[edi], eax
		add	esi, 10h
		cmp	dword ptr [esi], 0
		jnz	short loc_7F802278

loc_7F8022A3:				; CODE XREF: ScMMFMigrateToMDB@48+1B1j
		xor	edi, edi
		cmp	[ebp+var_28], edi
		jz	short loc_7F80230B
		push	40h		; cchBufferMax
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		push	1515h		; uID
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+8] ; hInstance
		call	ds:LoadStringA
		push	40h		; cchBufferMax
		lea	eax, [ebp+var_B0]
		push	eax		; lpBuffer
		push	1003h		; uID
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+8] ; hInstance
		call	ds:LoadStringA
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+4D0h] ; int
		lea	eax, [ebp+var_B0]
		push	eax		; int
		lea	eax, [ebp+Buffer]
		push	eax		; int
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+4] ; hWndParent
		add	eax, 14h
		push	eax		; dwInitParam
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+8] ; int
		call	sub_7F80C5C0
		test	eax, eax
		jnz	short loc_7F80230B
		mov	[ebp+var_28], edi

loc_7F80230B:				; CODE XREF: ScMMFMigrateToMDB@48+1E6j
					; ScMMFMigrateToMDB@48+244j
		mov	ecx, [ebp+var_1C]
		mov	eax, [ebp+var_28]
		mov	[ecx+10h], eax
		mov	esi, offset unk_7F8351C8
		cmp	dword ptr [esi], 0
		jz	short loc_7F802334

loc_7F80231E:				; CODE XREF: ScMMFMigrateToMDB@48+270j
		push	[ebp+var_1C]
		push	esi
		call	dword ptr [esi+0Ch]
		mov	[ebp+var_20], eax
		test	eax, eax
		jl	short loc_7F802334
		add	esi, 10h
		cmp	dword ptr [esi], 0
		jnz	short loc_7F80231E

loc_7F802334:				; CODE XREF: ScMMFMigrateToMDB@48+25Aj
					; ScMMFMigrateToMDB@48+268j
		cmp	[ebp+var_20], 0
		jl	short loc_7F802344
		mov	eax, [ebp+var_1C]
		mov	dword ptr [eax+0Ch], 1

loc_7F802344:				; CODE XREF: ScMMFMigrateToMDB@48+B0j
					; ScMMFMigrateToMDB@48+11Cj ...
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F8023DE

loc_7F802350:				; DATA XREF: .text:stru_7F8010B8o
		push	[ebp+var_1C]	; Finally handler 0 for	function 7F8020C2
		call	sub_7F802B1B
		mov	eax, [ebp+var_1C]
		mov	eax, [eax+54h]
		test	eax, eax
		jz	short loc_7F802368
		push	eax
		call	sub_7F80CB32

loc_7F802368:				; CODE XREF: ScMMFMigrateToMDB@48+29Ej
		call	sub_7F81762E
		mov	eax, [ebp+var_1C]
		cmp	dword ptr [eax+10h], 0
		jz	short loc_7F80237F
		add	eax, 14h
		push	eax
		call	sub_7F80C75D

loc_7F80237F:				; CODE XREF: ScMMFMigrateToMDB@48+2B2j
		mov	eax, [ebp+var_1C]
		test	byte ptr [eax+0Ch], 2
		jz	short loc_7F80238F
		mov	[ebp+var_20], 80040113h

loc_7F80238F:				; CODE XREF: ScMMFMigrateToMDB@48+2C4j
		push	[ebp+var_1C]
		push	[ebp+arg_4]
		push	[ebp+arg_2C]
		call	sub_7F8025E7
		test	byte ptr [ebp+arg_4+3],	10h
		jnz	short loc_7F8023BA
		mov	eax, [ebp+var_1C]
		mov	eax, [eax+9Ch]
		and	eax, 20000000h
		shr	eax, 1Dh
		push	eax
		call	sub_7F805403

loc_7F8023BA:				; CODE XREF: ScMMFMigrateToMDB@48+2DFj
		xor	esi, esi
		cmp	[ebp+var_2C], esi
		jz	short loc_7F8023D0
		mov	eax, dword_7F835290
		push	eax
		call	[ebp+arg_24]
		mov	dword_7F835290,	esi

loc_7F8023D0:				; CODE XREF: ScMMFMigrateToMDB@48+2FDj
		push	[ebp+var_1C]
		call	MAPIFreeBuffer@4
		mov	esp, [ebp+ms_exc.old_esp]
		mov	eax, [ebp+var_20]

loc_7F8023DE:				; DATA XREF: ScMMFMigrateToMDB@48+289o
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	30h
ScMMFMigrateToMDB@48 endp ; sp-analysis	failed


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8023F1(void *lp, int, int)
sub_7F8023F1	proc near		; DATA XREF: ScMigrateMMFPAB@32+57o

Text		= byte ptr -140h
Buffer		= byte ptr -40h
lp		= dword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 140h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+lp]
		xor	edi, edi
		push	538h		; ucb
		push	esi		; lp
		call	ds:IsBadReadPtr
		test	eax, eax
		jz	short loc_7F802419
		mov	edi, 80004005h
		jmp	short loc_7F802489
; ---------------------------------------------------------------------------

loc_7F802419:				; CODE XREF: sub_7F8023F1+1Fj
		cmp	dword ptr [esi+10h], 0
		jz	short loc_7F802489
		mov	eax, [ebp+arg_8]
		lea	ebx, [esi+14h]
		push	ebx
		mov	[esi+24h], eax
		call	sub_7F80C62C
		test	eax, eax
		jnz	short loc_7F802489
		push	40h		; cchBufferMax
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		push	1513h		; uID
		push	dword ptr [esi+8] ; hInstance
		call	ds:LoadStringA
		push	0FFh		; cchBufferMax
		lea	ecx, [ebp+Text]
		push	ecx		; lpBuffer
		push	1001h		; uID
		push	dword ptr [esi+8] ; hInstance
		call	ds:LoadStringA
		push	2024h		; uType
		lea	ecx, [ebp+Buffer]
		push	ecx		; lpCaption
		lea	edx, [ebp+Text]
		push	edx		; lpText
		push	dword ptr [ebx]	; hWnd
		call	ds:MessageBoxA
		cmp	eax, 6
		jnz	short loc_7F802489
		mov	dword ptr [esi+0Ch], 2
		mov	edi, 80040113h

loc_7F802489:				; CODE XREF: sub_7F8023F1+26j
					; sub_7F8023F1+2Cj ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F8023F1	endp

; Exported entry   8. ScMigrateMMFPAB@32

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	ScMigrateMMFPAB(HWND hWnd, int,	int, int, int, int, int, int)
		public ScMigrateMMFPAB@32
ScMigrateMMFPAB@32 proc	near		; DATA XREF: .text:off_7F8326A8o

var_8C		= byte ptr -8Ch
Buffer		= byte ptr -4Ch
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
hWnd		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
lpFileName	= 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, 8Ch
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		mov	[ebp+var_4], edi
		mov	[ebp+var_8], edi
		test	byte ptr [ebp+arg_4], 8
		mov	[ebp+var_C], edi
		jz	short loc_7F8024C3
		push	[ebp+hWnd]	; hWnd
		call	ds:IsWindow
		test	eax, eax
		jz	short loc_7F8024C3
		mov	edi, 1

loc_7F8024C3:				; CODE XREF: ScMigrateMMFPAB@32+1Bj
					; ScMigrateMMFPAB@32+28j
		push	0FFFFFFFFh
		lea	ecx, [ebp+var_4]
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+hWnd]
		push	ecx
		call	sub_7F8026ED
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F8025AA
		lea	eax, [ebp+var_8]
		push	eax		; int
		push	[ebp+var_4]	; int
		push	offset sub_7F8023F1 ; int
		push	0		; int
		push	0		; int
		push	[ebp+arg_1C]	; int
		push	[ebp+arg_18]	; int
		push	[ebp+arg_14]	; int
		push	[ebp+arg_8]	; int
		mov	ecx, [ebp+var_4]
		push	[ebp+hWnd]	; int
		push	dword ptr [ecx+8] ; int
		push	[ebp+arg_10]	; int
		push	[ebp+lpFileName] ; lpFileName
		call	ScGetPABMigrationContext@52
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F8025AA
		lea	eax, [ebp+var_C]
		mov	ebx, [ebp+var_8]
		push	eax
		push	[ebp+var_8]
		call	dword ptr [ebx+4]
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F8025AA
		test	edi, edi
		jz	short loc_7F80258E
		push	40h		; cchBufferMax
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		mov	ecx, [ebp+var_4]
		push	1516h		; uID
		push	dword ptr [ecx+8] ; hInstance
		call	ds:LoadStringA
		push	40h		; cchBufferMax
		lea	ecx, [ebp+var_8C]
		push	ecx		; lpBuffer
		mov	edx, [ebp+var_4]
		push	100Ah		; uID
		push	dword ptr [edx+8] ; hInstance
		call	ds:LoadStringA
		push	0		; int
		lea	ecx, [ebp+var_8C]
		push	ecx		; int
		lea	edx, [ebp+Buffer]
		push	edx		; int
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+4] ; hWndParent
		add	eax, 14h
		push	eax		; dwInitParam
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+8] ; int
		call	sub_7F80C5C0
		test	eax, eax
		jnz	short loc_7F80258E
		xor	edi, edi

loc_7F80258E:				; CODE XREF: ScMigrateMMFPAB@32+9Fj
					; ScMigrateMMFPAB@32+F6j
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	[eax+10h], edi
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+var_C]
		push	dword ptr [edx+8]
		push	dword ptr [edx]
		push	[ebp+var_8]
		call	dword ptr [eax+8]
		mov	esi, eax

loc_7F8025AA:				; CODE XREF: ScMigrateMMFPAB@32+4Aj
					; ScMigrateMMFPAB@32+84j ...
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax+10h], 0
		jz	short loc_7F8025BC
		add	eax, 14h
		push	eax
		call	sub_7F80C75D

loc_7F8025BC:				; CODE XREF: ScMigrateMMFPAB@32+11Dj
		xor	edi, edi
		cmp	[ebp+var_8], edi
		jz	short loc_7F8025CE
		mov	eax, [ebp+var_8]
		push	[ebp+var_8]
		call	dword ptr [eax]
		mov	[ebp+var_8], edi

loc_7F8025CE:				; CODE XREF: ScMigrateMMFPAB@32+12Dj
		push	[ebp+var_C]
		call	[ebp+arg_1C]
		push	[ebp+var_4]
		call	MAPIFreeBuffer@4
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	20h
ScMigrateMMFPAB@32 endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8025E7	proc near		; CODE XREF: ScMMFMigrateToMDB@48+2D6p

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_7		= byte ptr  0Fh
arg_8		= dword	ptr  10h

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F8010C8
		push	offset sub_7F82FBD0
		push	eax
		mov	large fs:0, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+var_1C], ebx
		mov	[ebp+ms_exc.registration.TryLevel], ebx
		mov	edi, [ebp+arg_0]
		cmp	edi, ebx
		jz	loc_7F8026CC
		mov	esi, [ebp+arg_8]
		cmp	esi, ebx
		jz	loc_7F8026CC
		mov	eax, [esi+90h]
		test	eax, eax
		jz	loc_7F8026CC
		cmp	[esi+94h], ebx
		jz	loc_7F8026CC
		cmp	[esi+4B0h], ebx
		jnz	short loc_7F802653
		test	[ebp+arg_7], 80h
		jz	short loc_7F8026CC

loc_7F802653:				; CODE XREF: sub_7F8025E7+64j
		push	edi
		push	14h
		call	eax
		test	eax, eax
		jl	short loc_7F8026CC
		mov	ebx, [edi]
		mov	edi, ebx
		xor	eax, eax
		stosd
		stosd
		stosd
		stosd
		stosd
		mov	eax, [esi+4B4h]
		mov	[ebx+0Ch], eax
		test	eax, eax
		jz	short loc_7F80269F
		lea	eax, [ebx+4]
		push	eax
		push	ebx
		mov	edi, 100h
		push	edi
		call	dword ptr [esi+94h]
		test	eax, eax
		jl	short loc_7F80269F
		push	edi		; cchBufferMax
		push	dword ptr [ebx+4] ; lpBuffer
		mov	eax, [ebx+0Ch]
		add	eax, 1100h
		push	eax		; uID
		push	dword ptr [esi+8] ; hInstance
		call	ds:LoadStringA

loc_7F80269F:				; CODE XREF: sub_7F8025E7+8Bj
					; sub_7F8025E7+A0j
		test	[ebp+arg_7], 80h
		jz	short loc_7F8026CC
		lea	eax, [ebp+var_1C]
		push	eax
		push	ebx
		push	3Ch
		call	dword ptr [esi+94h]
		test	eax, eax
		jl	short loc_7F8026CC
		add	esi, 4B8h
		mov	edi, [ebp+var_1C]
		mov	ecx, 0Fh
		rep movsd
		mov	eax, [ebp+var_1C]
		mov	[ebx+10h], eax

loc_7F8026CC:				; CODE XREF: sub_7F8025E7+33j
					; sub_7F8025E7+3Ej ...
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F8026DB

loc_7F8026D8:				; DATA XREF: .text:stru_7F8010C8o
		mov	esp, [ebp+ms_exc.old_esp] ; Finally handler 0 for function 7F8025E7

loc_7F8026DB:				; DATA XREF: sub_7F8025E7+ECo
		mov	eax, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, eax
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F8025E7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8026ED	proc near		; CODE XREF: ScMMFVerify@16+63p
					; ScMMFMigrateToMDB@48+A4p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
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

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F8010D8
		push	offset sub_7F82FBD0
		push	eax
		xor	eax, eax
		mov	large fs:0, esp
		sub	esp, 14h
		mov	[ebp+var_1C], eax
		mov	[ebp+var_20], eax
		push	ebx
		push	esi
		push	edi
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+ms_exc.registration.TryLevel], eax
		lea	eax, [ebp+var_1C]
		push	eax
		push	538h
		call	MAPIAllocateBuffer@8
		test	eax, eax
		jz	short loc_7F80273C
		mov	[ebp+var_20], 8007000Eh
		jmp	loc_7F802869
; ---------------------------------------------------------------------------

loc_7F80273C:				; CODE XREF: sub_7F8026ED+41j
		mov	edi, [ebp+var_1C]
		xor	eax, eax
		mov	ecx, 14Eh
		rep stosd
		mov	eax, [ebp+var_1C]
		xor	ecx, ecx
		mov	[eax], ecx
		mov	eax, [ebp+var_1C]
		mov	[eax+50h], ecx
		mov	eax, [ebp+var_1C]
		mov	[eax+54h], ecx
		mov	eax, [ebp+var_1C]
		mov	[eax+88h], ecx
		mov	eax, [ebp+arg_8]
		cmp	eax, ecx
		jz	short loc_7F802773
		mov	ecx, [ebp+var_1C]
		mov	[ecx+58h], eax
		jmp	short loc_7F80277D
; ---------------------------------------------------------------------------

loc_7F802773:				; CODE XREF: sub_7F8026ED+7Cj
		mov	eax, [ebp+var_1C]
		mov	dword ptr [eax+58h], offset MAPIAllocateBuffer@8

loc_7F80277D:				; CODE XREF: sub_7F8026ED+84j
		mov	eax, [ebp+arg_C]
		test	eax, eax
		jz	short loc_7F80278C
		mov	ecx, [ebp+var_1C]
		mov	[ecx+5Ch], eax
		jmp	short loc_7F802796
; ---------------------------------------------------------------------------

loc_7F80278C:				; CODE XREF: sub_7F8026ED+95j
		mov	eax, [ebp+var_1C]
		mov	dword ptr [eax+5Ch], offset MAPIAllocateMore@12

loc_7F802796:				; CODE XREF: sub_7F8026ED+9Dj
		mov	eax, [ebp+arg_10]
		test	eax, eax
		jz	short loc_7F8027A5
		mov	ecx, [ebp+var_1C]
		mov	[ecx+60h], eax
		jmp	short loc_7F8027AF
; ---------------------------------------------------------------------------

loc_7F8027A5:				; CODE XREF: sub_7F8026ED+AEj
		mov	eax, [ebp+var_1C]
		mov	dword ptr [eax+60h], offset MAPIFreeBuffer@4

loc_7F8027AF:				; CODE XREF: sub_7F8026ED+B6j
		mov	eax, [ebp+arg_14]
		test	eax, eax
		jnz	short loc_7F8027BB
		call	MAPIGetDefaultMalloc@0

loc_7F8027BB:				; CODE XREF: sub_7F8026ED+C7j
		mov	ecx, [ebp+var_1C]
		mov	[ecx+64h], eax
		mov	esi, [ebp+arg_4]
		mov	eax, [ebp+var_1C]
		mov	[eax+68h], esi
		mov	eax, [ebp+var_1C]
		mov	eax, [eax+58h]
		mov	ecx, [ebp+var_1C]
		mov	[ecx+90h], eax
		mov	eax, [ebp+var_1C]
		mov	ecx, [eax+5Ch]
		mov	[eax+94h], ecx
		mov	eax, [ebp+var_1C]
		mov	eax, [eax+60h]
		mov	ecx, [ebp+var_1C]
		mov	[ecx+98h], eax
		push	offset ModuleName ; "mmfmig32.dll"
		call	ds:GetModuleHandleA
		mov	ecx, [ebp+var_1C]
		mov	[ecx+8], eax
		mov	eax, [ebp+var_1C]
		add	eax, 8
		cmp	dword ptr [eax], 0
		jnz	short loc_7F802821
		cmp	hInstance, 0
		jz	short loc_7F802821
		mov	ecx, hInstance
		mov	[eax], ecx

loc_7F802821:				; CODE XREF: sub_7F8026ED+121j
					; sub_7F8026ED+12Aj
		mov	eax, [ebp+var_1C]
		mov	[eax+4], esi
		mov	eax, [ebp+var_1C]
		mov	dword ptr [eax+4FCh], offset sub_7F80397D
		mov	eax, [ebp+var_1C]
		add	eax, 0ACh
		mov	ecx, [ebp+var_1C]
		mov	[ecx+0A8h], eax
		xor	eax, eax
		cmp	eax, 100h
		jnb	short loc_7F802869
		shl	eax, 2

loc_7F802851:				; CODE XREF: sub_7F8026ED+17Aj
		mov	ecx, [ebp+var_1C]
		mov	dword ptr [ecx+eax+0ACh], 0F00h
		add	eax, 4
		cmp	eax, 400h
		jb	short loc_7F802851

loc_7F802869:				; CODE XREF: sub_7F8026ED+4Aj
					; sub_7F8026ED+15Fj
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F802883

loc_7F802875:				; DATA XREF: .text:stru_7F8010D8o
		mov	ecx, [ebp+var_1C] ; Finally handler 0 for function 7F8026ED
		mov	eax, [ebp+arg_0]
		mov	[eax], ecx
		mov	esp, [ebp+ms_exc.old_esp]
		mov	eax, [ebp+var_20]

loc_7F802883:				; DATA XREF: sub_7F8026ED+183o
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F8026ED	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F802896	proc near		; CODE XREF: ScMMFVerify@16+6Fp
					; ScMMFMigrateToMDB@48:loc_7F80221Ep

var_3C		= byte ptr -3Ch
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 3Ch
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_7F80FD0E
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_7F80FCE4
		lea	eax, [ebp+var_3C]
		lea	ecx, [ebp+var_24]
		lea	edx, [ebp+var_C]
		mov	[ebp+var_C], eax
		push	edx
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], 0
		call	sub_7F8173E6
		push	eax
		call	sub_7F80F8B4
		mov	esp, ebp
		pop	ebp
		retn
sub_7F802896	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8028D4(int, int, int, LPCSTR lpString, int, int)
sub_7F8028D4	proc near		; CODE XREF: ScMMFVerify@16+9Ap
					; ScMMFMigrateToMDB@48+192p

var_20		= byte ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
lpString	= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F8010E8
		push	offset sub_7F82FBD0
		push	eax
		mov	large fs:0, esp
		sub	esp, 10h
		mov	[ebp+var_1C], 80004005h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+ms_exc.old_esp], esp
		xor	edi, edi
		mov	[ebp+ms_exc.registration.TryLevel], edi
		mov	esi, [ebp+arg_0]
		push	esi
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_14]
		push	20h
		push	[ebp+arg_10]
		push	edi
		push	[ebp+lpString]
		call	sub_7F80F91C
		mov	[ebp+var_1C], eax
		cmp	eax, edi
		jl	short loc_7F80293D
		push	[ebp+arg_4]	; int
		push	edi		; int
		push	edi		; int
		push	edi		; int
		push	edi		; int
		push	[ebp+lpString]	; lpString
		push	dword ptr [esi]	; int
		push	[ebp+arg_8]	; int
		call	sub_7F80C96E
		mov	[ebp+var_1C], eax

loc_7F80293D:				; CODE XREF: sub_7F8028D4+50j
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F80294F

loc_7F802949:				; DATA XREF: .text:stru_7F8010E8o
		mov	esp, [ebp+ms_exc.old_esp] ; Finally handler 0 for function 7F8028D4
		mov	eax, [ebp+var_1C]

loc_7F80294F:				; DATA XREF: sub_7F8028D4+70o
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F8028D4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F802962	proc near		; CODE XREF: ScMMFMigrateToMDB@48+1A5p

SystemInfo	= _SYSTEM_INFO ptr -60h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F8010F8
		push	offset sub_7F82FBD0
		push	eax
		xor	eax, eax
		mov	large fs:0, esp
		sub	esp, 50h
		mov	[ebp+var_1C], eax
		mov	[ebp+var_20], eax
		mov	[ebp+var_24], 80004005h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+ms_exc.registration.TryLevel], eax
		mov	esi, [ebp+arg_0]
		test	byte ptr [esi+9Fh], 40h
		jnz	short loc_7F8029AE
		mov	[ebp+var_24], eax
		jmp	loc_7F802AF6
; ---------------------------------------------------------------------------

loc_7F8029AE:				; CODE XREF: sub_7F802962+42j
		lea	eax, [ebp+SystemInfo]
		push	eax		; lpSystemInfo
		call	ds:GetSystemInfo
		mov	eax, [ebp+SystemInfo.dwNumberOfProcessors]
		shl	eax, 2
		mov	[ebp+var_20], eax
		lea	eax, [esi+510h]
		push	eax		; lpCriticalSection
		call	ds:InitializeCriticalSection
		xor	ebx, ebx
		push	ebx		; lpName
		push	1		; bInitialState
		push	1		; bManualReset
		push	ebx		; lpEventAttributes
		call	ds:CreateEventA
		mov	[esi+50Ch], eax
		cmp	eax, ebx
		jz	loc_7F802AF6
		test	esi, esi
		lea	eax, [esi+504h]
		push	eax
		jnz	short loc_7F802A04
		mov	eax, [ebp+var_20]
		inc	eax
		shl	eax, 4
		push	eax
		call	MAPIAllocateBuffer@8
		jmp	short loc_7F802A12
; ---------------------------------------------------------------------------

loc_7F802A04:				; CODE XREF: sub_7F802962+91j
		push	esi
		mov	eax, [ebp+var_20]
		inc	eax
		shl	eax, 4
		push	eax
		call	MAPIAllocateMore@12

loc_7F802A12:				; CODE XREF: sub_7F802962+A0j
		mov	[ebp+var_34], eax
		cmp	[ebp+var_34], 0
		jnz	loc_7F802AF6
		mov	eax, [ebp+var_20]
		inc	eax
		mov	[ebp+var_28], eax
		mov	ecx, eax
		shl	ecx, 4
		mov	edi, [esi+504h]
		xor	eax, eax
		shr	ecx, 2
		rep stosd
		test	esi, esi
		lea	ebx, [esi+508h]
		push	ebx
		jnz	short loc_7F802A51
		mov	eax, [ebp+var_28]
		shl	eax, 2
		push	eax
		call	MAPIAllocateBuffer@8
		jmp	short loc_7F802A5E
; ---------------------------------------------------------------------------

loc_7F802A51:				; CODE XREF: sub_7F802962+DFj
		push	esi
		mov	eax, [ebp+var_28]
		shl	eax, 2
		push	eax
		call	MAPIAllocateMore@12

loc_7F802A5E:				; CODE XREF: sub_7F802962+EDj
		mov	[ebp+var_30], eax
		xor	edx, edx
		cmp	[ebp+var_30], edx
		jnz	loc_7F802AF6
		mov	ecx, [ebp+var_28]
		shl	ecx, 2
		mov	edi, [ebx]
		xor	eax, eax
		shr	ecx, 2
		rep stosd
		mov	[ebp+var_1C], edx
		mov	edi, [esi+504h]
		mov	ecx, [ebx]
		mov	[ebp+var_2C], ecx
		cmp	edx, [ebp+var_20]
		jnb	short loc_7F802AD0

loc_7F802A8E:				; CODE XREF: sub_7F802962+16Cj
		mov	[edi+0Ch], esi
		xor	ebx, ebx
		push	ebx		; lpName
		push	ebx		; bInitialState
		push	1		; bManualReset
		push	ebx		; lpEventAttributes
		call	ds:CreateEventA
		mov	[edi+4], eax
		cmp	eax, ebx
		jz	short loc_7F802AD0
		push	edi		; lpThreadId
		push	ebx		; dwCreationFlags
		push	edi		; lpParameter
		push	offset StartAddress ; lpStartAddress
		push	ebx		; dwStackSize
		push	ebx		; lpThreadAttributes
		call	ds:CreateThread
		mov	ecx, [ebp+var_2C]
		mov	[ecx], eax
		cmp	eax, ebx
		jz	short loc_7F802AD0
		inc	[ebp+var_1C]
		add	edi, 10h
		add	[ebp+var_2C], 4
		mov	eax, [ebp+var_1C]
		cmp	eax, [ebp+var_20]
		jb	short loc_7F802A8E

loc_7F802AD0:				; CODE XREF: sub_7F802962+12Aj
					; sub_7F802962+141j ...
		xor	eax, eax
		cmp	[ebp+var_1C], eax
		jnz	short loc_7F802ADC
		mov	[ebp+var_24], eax
		jmp	short loc_7F802AF6
; ---------------------------------------------------------------------------

loc_7F802ADC:				; CODE XREF: sub_7F802962+173j
		mov	eax, [ebp+var_1C]
		mov	[esi+500h], eax
		mov	dword ptr [esi+4FCh], offset sub_7F803AA5
		mov	[ebp+var_24], 0

loc_7F802AF6:				; CODE XREF: sub_7F802962+47j
					; sub_7F802962+82j ...
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F802B08

loc_7F802B02:				; DATA XREF: .text:stru_7F8010F8o
		mov	esp, [ebp+ms_exc.old_esp] ; Finally handler 0 for function 7F802962
		mov	eax, [ebp+var_24]

loc_7F802B08:				; DATA XREF: sub_7F802962+19Bo
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F802962	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F802B1B	proc near		; CODE XREF: ScMMFMigrateToMDB@48+291p

var_2C		= dword	ptr -2Ch
var_24		= dword	ptr -24h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F801108
		push	offset sub_7F82FBD0
		push	eax
		mov	large fs:0, esp
		sub	esp, 20h
		mov	[ebp+var_24], 80004005h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+ms_exc.old_esp], esp
		xor	eax, eax
		mov	[ebp+ms_exc.registration.TryLevel], eax
		mov	esi, [ebp+arg_0]
		test	byte ptr [esi+9Fh], 40h
		jnz	short loc_7F802B61
		mov	[ebp+var_24], eax
		jmp	loc_7F802C38
; ---------------------------------------------------------------------------

loc_7F802B61:				; CODE XREF: sub_7F802B1B+3Cj
		cmp	dword ptr [esi+0Ch], 0
		jnz	short loc_7F802B6E
		mov	dword ptr [esi+0Ch], 4

loc_7F802B6E:				; CODE XREF: sub_7F802B1B+4Aj
		mov	eax, [esi+504h]
		test	eax, eax
		jz	loc_7F802C1A
		xor	edi, edi
		mov	[ebp+var_1C], eax
		lea	ebx, [esi+500h]
		cmp	[ebx], edi
		jbe	short loc_7F802BA5

loc_7F802B8B:				; CODE XREF: sub_7F802B1B+88j
		mov	eax, [ebp+var_1C]
		mov	eax, [eax+4]
		test	eax, eax
		jz	short loc_7F802B9C
		push	eax		; hEvent
		call	ds:SetEvent

loc_7F802B9C:				; CODE XREF: sub_7F802B1B+78j
		inc	edi
		add	[ebp+var_1C], 10h
		cmp	[ebx], edi
		ja	short loc_7F802B8B

loc_7F802BA5:				; CODE XREF: sub_7F802B1B+6Ej
		mov	ecx, [esi+508h]
		test	ecx, ecx
		jz	short loc_7F802BC6
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_7F802BC6
		push	0FFh		; dwWakeMask
		push	0FFFFFFFFh	; dwMilliseconds
		push	1		; fWaitAll
		push	ecx		; pHandles
		push	eax		; nCount
		push	esi		; int
		call	sub_7F803A19

loc_7F802BC6:				; CODE XREF: sub_7F802B1B+92j
					; sub_7F802B1B+98j
		xor	edi, edi
		cmp	[ebx], edi
		jbe	short loc_7F802BF1
		lea	eax, ds:0[edi*4]
		mov	[ebp+var_2C], eax

loc_7F802BD6:				; CODE XREF: sub_7F802B1B+D4j
		mov	ecx, [esi+508h]
		mov	eax, [ebp+var_2C]
		push	dword ptr [ecx+eax] ; hObject
		call	ds:CloseHandle
		add	[ebp+var_2C], 4
		inc	edi
		cmp	[ebx], edi
		ja	short loc_7F802BD6

loc_7F802BF1:				; CODE XREF: sub_7F802B1B+AFj
		xor	edi, edi
		mov	eax, [esi+504h]
		mov	[ebp+var_1C], eax
		cmp	[ebx], edi
		jbe	short loc_7F802C1A

loc_7F802C00:				; CODE XREF: sub_7F802B1B+FDj
		mov	eax, [ebp+var_1C]
		mov	eax, [eax+4]
		test	eax, eax
		jz	short loc_7F802C11
		push	eax		; hObject
		call	ds:CloseHandle

loc_7F802C11:				; CODE XREF: sub_7F802B1B+EDj
		inc	edi
		add	[ebp+var_1C], 10h
		cmp	[ebx], edi
		ja	short loc_7F802C00

loc_7F802C1A:				; CODE XREF: sub_7F802B1B+5Bj
					; sub_7F802B1B+E3j
		mov	eax, [esi+50Ch]
		test	eax, eax
		jz	short loc_7F802C2B
		push	eax		; hObject
		call	ds:CloseHandle

loc_7F802C2B:				; CODE XREF: sub_7F802B1B+107j
		add	esi, 510h
		push	esi		; lpCriticalSection
		call	ds:DeleteCriticalSection

loc_7F802C38:				; CODE XREF: sub_7F802B1B+41j
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F802C4A

loc_7F802C44:				; DATA XREF: .text:stru_7F801108o
		mov	esp, [ebp+ms_exc.old_esp] ; Finally handler 0 for function 7F802B1B
		mov	eax, [ebp+var_24]

loc_7F802C4A:				; DATA XREF: sub_7F802B1B+124o
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F802B1B	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F802C5D	proc near		; CODE XREF: sub_7F802DB7+570p
					; sub_7F8035B3+1E5p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, 8004010Dh
		jl	short loc_7F802C92
		cmp	eax, 8004010Eh
		jle	short loc_7F802C96
		cmp	eax, 80040115h
		jl	short loc_7F802C92
		cmp	eax, 80040116h
		jle	short loc_7F802C96
		cmp	eax, 80040119h
		jz	short loc_7F802C96
		cmp	eax, 80040600h
		jz	short loc_7F802C96
		cmp	eax, 8007000Eh
		jz	short loc_7F802C96

loc_7F802C92:				; CODE XREF: sub_7F802C5D+9j
					; sub_7F802C5D+17j
		xor	eax, eax
		jmp	short locret_7F802C9B
; ---------------------------------------------------------------------------

loc_7F802C96:				; CODE XREF: sub_7F802C5D+10j
					; sub_7F802C5D+1Ej ...
		mov	eax, 1

locret_7F802C9B:			; CODE XREF: sub_7F802C5D+37j
		retn	4
sub_7F802C5D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F802C9E	proc near		; CODE XREF: ScMMFVerify@16+BAp
					; ScMMFMigrateToMDB@48+1BAp

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	edi, [ebp+arg_0]
		push	ebx
		mov	[edi+0Ah], bx
		push	ebx
		lea	eax, [ebp+var_8]
		mov	[ebp+var_10], ebx
		push	eax
		mov	ecx, [ebp+arg_4]
		push	ebx
		mov	[ebp+var_C], ebx
		push	edi
		mov	[ebp+var_8], ebx
		push	dword ptr [ecx+50h]
		call	sub_7F81197C
		push	eax
		call	sub_7F80F8B4
		mov	esi, eax
		test	esi, esi
		jl	loc_7F802D95
		lea	eax, [edi+8]
		push	eax
		push	ebx
		push	[ebp+var_8]
		call	sub_7F811C6F
		mov	[ebp+var_2], bx
		cmp	[edi+8], bx
		jbe	loc_7F802D93
		xor	esi, esi

loc_7F802CF9:				; CODE XREF: sub_7F802C9E+EFj
		mov	[ebp+var_4], si
		lea	eax, [ebp+var_10]
		push	eax
		mov	[ebp+var_14], esi
		push	[ebp+var_8]
		call	sub_7F811C96
		cmp	ebx, [ebp+var_10]
		jnb	short loc_7F802D2C
		push	[ebp+var_C]
		call	MAPIFreeBuffer@4
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+var_10]
		call	MAPIAllocateBuffer@8
		test	eax, eax
		jnz	short loc_7F802D73
		mov	ebx, [ebp+var_10]

loc_7F802D2C:				; CODE XREF: sub_7F802C9E+71j
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+var_C]
		push	[ebp+var_8]
		call	sub_7F811CD9
		push	eax
		call	sub_7F80F8B4
		test	eax, eax
		jl	short loc_7F802D73
		push	esi
		lea	eax, [ebp+var_14]
		push	esi
		mov	edx, [ebp+arg_4]
		push	eax
		push	esi
		push	[ebp+var_C]
		push	dword ptr [edx+50h]
		call	sub_7F81197C
		test	eax, eax
		jnz	short loc_7F802D73
		lea	eax, [ebp+var_4]
		push	eax
		push	esi
		push	[ebp+var_14]
		call	sub_7F811C6F
		mov	cx, [ebp+var_4]
		add	[edi+0Ah], cx

loc_7F802D73:				; CODE XREF: sub_7F802C9E+89j
					; sub_7F802C9E+A5j ...
		cmp	[ebp+var_14], esi
		jz	short loc_7F802D81
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_7F811B7E

loc_7F802D81:				; CODE XREF: sub_7F802C9E+D8j
		inc	[ebp+var_2]
		mov	ax, [ebp+var_2]
		cmp	[edi+8], ax
		ja	loc_7F802CF9

loc_7F802D93:				; CODE XREF: sub_7F802C9E+53j
		xor	esi, esi

loc_7F802D95:				; CODE XREF: sub_7F802C9E+38j
		push	[ebp+var_C]
		call	MAPIFreeBuffer@4
		cmp	[ebp+var_8], 0
		jz	short loc_7F802DAC
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F811B7E

loc_7F802DAC:				; CODE XREF: sub_7F802C9E+103j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F802C9E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F802DB7	proc near		; CODE XREF: sub_7F8034C3+21p

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_A8		= dword	ptr -0A8h
var_A4		= byte ptr -0A4h
var_98		= dword	ptr -98h
var_90		= dword	ptr -90h
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_64		= dword	ptr -64h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
dwInitParam	= dword	ptr -38h
var_34		= dword	ptr -34h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= word ptr -20h
var_1E		= dword	ptr -1Eh
var_1A		= word ptr -1Ah
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F801118
		push	offset sub_7F82FBD0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0B4h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+var_58], esi
		mov	[ebp+var_40], esi
		mov	[ebp+var_2C], esi
		mov	[ebp+var_20], si
		mov	[ebp+var_28], esi
		mov	word ptr [ebp+var_1E], si
		mov	[ebp+var_54], esi
		mov	word ptr [ebp+var_1E+2], si
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_1A], si
		mov	[ebp+var_34], esi
		mov	ebx, [eax+84h]
		mov	ecx, [eax+54h]
		mov	[ebp+var_24], 80004005h
		mov	[ebp+var_A8], ecx
		mov	[ebp+ms_exc.registration.TryLevel], esi
		add	eax, 0A8h
		mov	[ebp+var_44], eax
		add	dword ptr [eax], 4
		mov	eax, [ebp+arg_4]
		inc	dword ptr [eax+4ACh]
		mov	eax, [ebp+var_44]
		mov	eax, [eax]
		mov	dword ptr [eax], 0F03h
		mov	eax, [ebp+arg_4]
		add	eax, 50h
		mov	[ebp+var_80], eax
		push	esi
		push	esi
		lea	eax, [ebp+var_40]
		push	eax
		push	esi
		push	[ebp+arg_0]
		mov	eax, [ebp+var_80]
		push	dword ptr [eax]
		call	sub_7F81197C
		push	eax
		call	sub_7F80F8B4
		mov	[ebp+var_24], eax
		cmp	eax, esi
		jl	loc_7F803374
		lea	eax, [ebp+var_20]
		push	eax
		push	esi
		push	[ebp+var_40]
		call	sub_7F811C6F
		mov	dword_7F8351C0,	esi

loc_7F802E80:				; CODE XREF: sub_7F802DB7+F6j
		lea	eax, [ebp+var_58]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+4]
		push	ebx
		call	HrGetOneProp@12
		test	eax, eax
		jge	short loc_7F802EAF
		mov	[ebp+var_24], eax
		push	eax		; dwInitParam
		push	ebx		; int
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+8] ; hInstance
		push	eax		; int
		call	sub_7F805168
		test	eax, eax
		jz	loc_7F803374
		jmp	short loc_7F802E80
; ---------------------------------------------------------------------------

loc_7F802EAF:				; CODE XREF: sub_7F802DB7+DBj
		mov	dword_7F8351C0,	0

loc_7F802EB9:				; CODE XREF: sub_7F802DB7+13Dj
		lea	eax, [ebp+var_28]
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		push	1
		push	0
		mov	eax, [ebp+var_58]
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8]
		push	ebx
		mov	eax, [ebx]
		call	dword ptr [eax+44h]
		test	eax, eax
		jge	short loc_7F802EF6
		mov	[ebp+var_24], eax
		push	eax		; dwInitParam
		push	ebx		; int
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+8] ; hInstance
		push	eax		; int
		call	sub_7F805168
		test	eax, eax
		jz	loc_7F803374
		jmp	short loc_7F802EB9
; ---------------------------------------------------------------------------

loc_7F802EF6:				; CODE XREF: sub_7F802DB7+122j
		cmp	[ebp+var_B4], 3
		jz	short loc_7F802F0B
		mov	[ebp+var_24], 80040600h
		jmp	loc_7F803374
; ---------------------------------------------------------------------------

loc_7F802F0B:				; CODE XREF: sub_7F802DB7+146j
		lea	eax, [ebp+var_2C]
		push	eax
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax+8]
		lea	eax, ds:8[eax*8]
		push	eax
		call	MAPIAllocateBuffer@8
		test	eax, eax
		jz	short loc_7F802F33
		mov	[ebp+var_24], 8007000Eh
		jmp	loc_7F803374
; ---------------------------------------------------------------------------

loc_7F802F33:				; CODE XREF: sub_7F802DB7+16Ej
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax+8]
		lea	ecx, ds:8[eax*8]
		mov	edi, [ebp+var_2C]
		xor	eax, eax
		shr	ecx, 2
		rep stosd
		mov	word ptr [ebp+var_1E+2], ax
		mov	cx, ax
		mov	eax, [ebp+arg_0]
		cmp	[eax+8], cx
		jbe	loc_7F80336D
		mov	eax, [ebp+arg_4]
		add	eax, 0Ch
		mov	[ebp+var_B0], eax

loc_7F802F6B:				; CODE XREF: sub_7F802DB7+5B0j
		xor	ecx, ecx
		mov	eax, [ebp+var_B0]
		cmp	[eax], ecx
		jnz	loc_7F80336D
		mov	[ebp+var_88], ecx
		mov	[ebp+var_50], ecx
		mov	[ebp+var_4C], ecx
		mov	[ebp+var_3C], ecx
		mov	[ebp+var_48], ecx
		mov	[ebp+var_24], 80004005h
		mov	edx, [ebp+arg_4]
		add	edx, 4F8h
		mov	[ebp+var_6C], edx
		mov	[edx], ecx
		lea	eax, [ebp+var_54]
		push	eax
		push	[ebp+var_40]
		call	sub_7F811C96
		cmp	esi, [ebp+var_54]
		jnb	short loc_7F802FDA
		push	[ebp+var_34]
		call	MAPIFreeBuffer@4
		lea	eax, [ebp+var_34]
		push	eax
		push	[ebp+var_54]
		call	MAPIAllocateBuffer@8
		test	eax, eax
		jz	short loc_7F802FD7
		mov	[ebp+var_24], 8007000Eh
		jmp	loc_7F803337
; ---------------------------------------------------------------------------

loc_7F802FD7:				; CODE XREF: sub_7F802DB7+212j
		mov	esi, [ebp+var_54]

loc_7F802FDA:				; CODE XREF: sub_7F802DB7+1FAj
		lea	eax, [ebp+var_54]
		push	eax
		push	[ebp+var_34]
		push	[ebp+var_40]
		call	sub_7F811CD9
		test	eax, eax
		jnz	loc_7F803358
		mov	eax, [ebp+var_34]
		lea	ecx, [eax+8]
		mov	[ebp+var_50], ecx
		mov	ax, [ebp+var_1A]
		cmp	[ecx], ax
		jbe	short loc_7F803067
		movzx	eax, ax
		lea	edx, ds:0[eax*8]
		mov	[ebp+var_98], edx
		mov	eax, [ebp+var_2C]
		mov	eax, [edx+eax]
		test	eax, eax
		jz	short loc_7F803023
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]

loc_7F803023:				; CODE XREF: sub_7F802DB7+264j
		mov	ecx, [ebp+var_2C]
		mov	edx, [ebp+var_98]
		mov	dword ptr [edx+ecx], 0
		inc	[ebp+var_1A]
		movzx	eax, [ebp+var_1A]
		shl	eax, 3
		mov	ecx, [ebp+var_28]
		mov	edx, [ebp+var_2C]
		mov	[eax+edx+4], ecx
		push	offset unk_7F83D080
		push	8
		push	[ebp+var_28]
		add	eax, [ebp+var_2C]
		push	eax
		push	[ebp+arg_4]
		call	sub_7F804C4A
		test	eax, eax
		jnz	short loc_7F8030DF
		jmp	loc_7F803337
; ---------------------------------------------------------------------------

loc_7F803067:				; CODE XREF: sub_7F802DB7+24Aj
		cmp	[ebp+var_28], 0
		jz	short loc_7F803078
		push	[ebp+var_28]
		mov	eax, [ebp+var_28]
		mov	eax, [eax]
		call	dword ptr [eax+8]

loc_7F803078:				; CODE XREF: sub_7F802DB7+2B4j
		mov	[ebp+var_28], 0
		mov	ax, [ebp+var_1A]
		mov	ecx, [ebp+var_50]
		cmp	[ecx], ax
		jnb	short loc_7F8030DF

loc_7F80308B:				; CODE XREF: sub_7F802DB7+326j
		movzx	eax, [ebp+var_1A]
		lea	ecx, ds:0[eax*8]
		mov	[ebp+var_64], ecx
		mov	eax, [ebp+var_2C]
		mov	eax, [ecx+eax]
		test	eax, eax
		jz	short loc_7F8030A9
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]

loc_7F8030A9:				; CODE XREF: sub_7F802DB7+2EAj
		mov	eax, [ebp+var_2C]
		mov	ecx, [ebp+var_64]
		mov	eax, [ecx+eax+4]
		test	eax, eax
		jz	short loc_7F8030BD
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]

loc_7F8030BD:				; CODE XREF: sub_7F802DB7+2FEj
		mov	eax, [ebp+var_2C]
		xor	edx, edx
		mov	ecx, [ebp+var_64]
		mov	[ecx+eax], edx
		mov	eax, [ebp+var_2C]
		mov	[ecx+eax+4], edx
		dec	[ebp+var_1A]
		mov	ax, [ebp+var_1A]
		mov	ecx, [ebp+var_50]
		cmp	[ecx], ax
		jb	short loc_7F80308B

loc_7F8030DF:				; CODE XREF: sub_7F802DB7+2A9j
					; sub_7F802DB7+2D2j
		mov	dword_7F8351C0,	0

loc_7F8030E9:				; CODE XREF: sub_7F802DB7+378j
		lea	eax, [ebp+var_4C]
		push	eax
		lea	eax, [ebp+var_88]
		push	eax
		push	offset unk_7F83D040
		push	[ebp+var_A8]
		push	0
		push	[ebp+var_50]
		mov	eax, [ebp+var_34]
		push	dword ptr [eax]
		call	sub_7F80CBB5
		test	eax, eax
		jge	short loc_7F803131
		mov	[ebp+var_24], eax
		push	eax		; dwInitParam
		push	1106h		; uID
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+8] ; hInstance
		push	eax		; int
		call	sub_7F80504F
		test	eax, eax
		jz	loc_7F803337
		jmp	short loc_7F8030E9
; ---------------------------------------------------------------------------

loc_7F803131:				; CODE XREF: sub_7F802DB7+359j
		mov	eax, [ebp+var_4C]
		cmp	dword ptr [eax], 3001001Eh
		jnz	short loc_7F803144
		mov	eax, [eax+8]
		mov	edx, [ebp+var_6C]
		mov	[edx], eax

loc_7F803144:				; CODE XREF: sub_7F802DB7+383j
		xor	ecx, ecx
		mov	[ebp+var_28], ecx
		mov	eax, [ebp+var_34]
		mov	eax, [eax]
		cmp	eax, 626E4982h
		jz	short loc_7F80316F
		cmp	eax, 74685382h
		jz	short loc_7F803178
		cmp	eax, 74735782h
		jz	short loc_7F803181
		cmp	eax, 74754F82h
		jz	short loc_7F80318A
		mov	[ebp+var_3C], ecx
		jmp	short loc_7F803191
; ---------------------------------------------------------------------------

loc_7F80316F:				; CODE XREF: sub_7F802DB7+39Cj
		mov	[ebp+var_3C], 0FFFFFFFFh
		jmp	short loc_7F803191
; ---------------------------------------------------------------------------

loc_7F803178:				; CODE XREF: sub_7F802DB7+3A3j
		mov	[ebp+var_3C], 35E40102h
		jmp	short loc_7F803191
; ---------------------------------------------------------------------------

loc_7F803181:				; CODE XREF: sub_7F802DB7+3AAj
		mov	[ebp+var_3C], 35E30102h
		jmp	short loc_7F803191
; ---------------------------------------------------------------------------

loc_7F80318A:				; CODE XREF: sub_7F802DB7+3B1j
		mov	[ebp+var_3C], 35E20102h

loc_7F803191:				; CODE XREF: sub_7F802DB7+3B6j
					; sub_7F802DB7+3BFj ...
		xor	eax, eax
		cmp	[ebp+var_3C], eax
		jz	loc_7F803262
		mov	dword_7F8351C0,	eax

loc_7F8031A1:				; CODE XREF: sub_7F802DB7+4A6j
		cmp	[ebp+var_3C], 0FFFFFFFFh
		jnz	short loc_7F8031F6
		xor	edi, edi
		mov	[ebp+var_90], edi
		mov	[ebp+var_70], edi
		push	edi
		lea	eax, [ebp+var_70]
		push	eax
		lea	eax, [ebp+var_90]
		push	eax
		push	edi
		push	offset unk_7F835204
		push	ebx
		mov	eax, [ebx]
		call	dword ptr [eax+4Ch]
		mov	[ebp+dwInitParam], eax
		cmp	eax, edi
		jl	short loc_7F8031F1
		lea	eax, [ebp+var_28]
		push	eax
		lea	eax, [ebp+var_A4]
		push	eax
		push	1
		push	edi
		push	[ebp+var_70]
		push	[ebp+var_90]
		push	ebx
		mov	eax, [ebx]
		call	dword ptr [eax+44h]
		mov	[ebp+dwInitParam], eax

loc_7F8031F1:				; CODE XREF: sub_7F802DB7+418j
		push	[ebp+var_70]
		jmp	short loc_7F803232
; ---------------------------------------------------------------------------

loc_7F8031F6:				; CODE XREF: sub_7F802DB7+3EEj
		xor	edi, edi
		mov	[ebp+var_5C], edi
		lea	eax, [ebp+var_5C]
		push	eax
		push	[ebp+var_3C]
		push	ebx
		call	HrGetOneProp@12
		mov	[ebp+dwInitParam], eax
		cmp	eax, edi
		jl	short loc_7F80322F
		lea	eax, [ebp+var_28]
		push	eax
		lea	eax, [ebp+var_A4]
		push	eax
		push	1
		push	edi
		mov	eax, [ebp+var_5C]
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8]
		push	ebx
		mov	eax, [ebx]
		call	dword ptr [eax+44h]
		mov	[ebp+dwInitParam], eax

loc_7F80322F:				; CODE XREF: sub_7F802DB7+456j
		push	[ebp+var_5C]

loc_7F803232:				; CODE XREF: sub_7F802DB7+43Dj
		mov	eax, [ebp+arg_4]
		call	dword ptr [eax+98h]
		cmp	[ebp+dwInitParam], 0
		jge	short loc_7F803262
		mov	eax, [ebp+dwInitParam]
		mov	[ebp+var_24], eax
		push	eax		; dwInitParam
		push	ebx		; int
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+8] ; hInstance
		push	eax		; int
		call	sub_7F805168
		test	eax, eax
		jz	loc_7F803337
		jmp	loc_7F8031A1
; ---------------------------------------------------------------------------

loc_7F803262:				; CODE XREF: sub_7F802DB7+3DFj
					; sub_7F802DB7+488j
		cmp	[ebp+var_28], 0
		jnz	short loc_7F8032DE
		movzx	eax, [ebp+var_1A]
		lea	ecx, ds:0[eax*8]
		mov	[ebp+var_84], ecx
		mov	eax, [ebp+var_2C]
		add	eax, ecx
		push	1		; int
		mov	edx, [ebp+var_6C]
		push	dword ptr [edx]	; lpString1
		push	dword ptr [eax+4] ; int
		push	dword ptr [eax]	; int
		lea	eax, [ebp+var_28]
		push	eax		; int
		push	[ebp+arg_4]	; int
		call	sub_7F804A93
		test	eax, eax
		jz	loc_7F803337
		cmp	[ebp+var_28], 0
		jnz	short loc_7F8032D5
		push	[ebp+var_4C]
		push	[ebp+var_88]
		mov	eax, [ebp+var_2C]
		mov	ecx, [ebp+var_84]
		push	dword ptr [ecx+eax+4]
		lea	eax, [ebp+var_28]
		push	eax
		push	[ebp+arg_4]
		call	sub_7F8034ED
		test	eax, eax
		jz	short loc_7F803337
		mov	eax, [ebp+arg_4]
		inc	dword ptr [eax+4CCh]
		jmp	short loc_7F8032DE
; ---------------------------------------------------------------------------

loc_7F8032D5:				; CODE XREF: sub_7F802DB7+4EBj
		mov	eax, [ebp+arg_4]
		inc	dword ptr [eax+4C8h]

loc_7F8032DE:				; CODE XREF: sub_7F802DB7+4AFj
					; sub_7F802DB7+51Cj
		xor	edi, edi
		push	edi
		push	edi
		lea	eax, [ebp+var_48]
		push	eax
		push	edi
		push	[ebp+var_34]
		mov	eax, [ebp+var_80]
		push	dword ptr [eax]
		call	sub_7F81197C
		test	eax, eax
		jnz	short loc_7F803337
		lea	eax, [ebp+var_1E]
		push	eax
		push	edi
		push	[ebp+var_48]
		call	sub_7F811C6F
		cmp	word ptr [ebp+var_1E], di
		jz	short loc_7F803330
		push	[ebp+var_1E]
		push	[ebp+var_48]
		push	[ebp+var_28]
		push	[ebp+arg_4]
		call	sub_7F8035B3
		mov	[ebp+var_24], eax
		cmp	eax, 80040113h
		jz	short loc_7F803337
		push	eax
		call	sub_7F802C5D
		test	eax, eax
		jnz	short loc_7F803337

loc_7F803330:				; CODE XREF: sub_7F802DB7+552j
		mov	[ebp+var_24], 0

loc_7F803337:				; CODE XREF: sub_7F802DB7+21Bj
					; sub_7F802DB7+2ABj ...
		push	[ebp+var_4C]
		mov	eax, [ebp+arg_4]
		call	dword ptr [eax+98h]
		cmp	[ebp+var_48], 0
		jz	short loc_7F803352
		lea	eax, [ebp+var_48]
		push	eax
		call	sub_7F811B7E

loc_7F803352:				; CODE XREF: sub_7F802DB7+590j
		cmp	[ebp+var_24], 0
		jnz	short loc_7F803374

loc_7F803358:				; CODE XREF: sub_7F802DB7+234j
		inc	word ptr [ebp+var_1E+2]
		mov	cx, word ptr [ebp+var_1E+2]
		mov	eax, [ebp+arg_0]
		cmp	[eax+8], cx
		ja	loc_7F802F6B

loc_7F80336D:				; CODE XREF: sub_7F802DB7+1A2j
					; sub_7F802DB7+1BEj
		mov	[ebp+var_24], 0

loc_7F803374:				; CODE XREF: sub_7F802DB7+B0j
					; sub_7F802DB7+F0j ...
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F8034B0

loc_7F803380:				; DATA XREF: .text:stru_7F801118o
		mov	eax, [ebp+arg_4] ; Finally handler 0 for function 7F802DB7
		cmp	dword ptr [eax+500h], 0
		jz	short loc_7F8033FB
		lea	ebx, [eax+510h]
		lea	esi, [eax+528h]
		mov	edi, [ebp+var_B8]

loc_7F80339E:				; CODE XREF: sub_7F802DB7+642j
		push	ebx		; lpCriticalSection
		call	ds:EnterCriticalSection
		cmp	dword ptr [esi], 0
		jnz	short loc_7F8033BB
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax+52Ch], 0
		mov	edi, 1
		jz	short loc_7F8033BD

loc_7F8033BB:				; CODE XREF: sub_7F802DB7+5F1j
		xor	edi, edi

loc_7F8033BD:				; CODE XREF: sub_7F802DB7+602j
		test	edi, edi
		jnz	short loc_7F8033D0
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+50Ch] ; hEvent
		call	ds:ResetEvent

loc_7F8033D0:				; CODE XREF: sub_7F802DB7+608j
		push	ebx		; lpCriticalSection
		call	ds:LeaveCriticalSection
		test	edi, edi
		jnz	short loc_7F8033FB
		push	0FFh		; dwWakeMask
		push	0FFFFFFFFh	; dwMilliseconds
		push	0		; fWaitAll
		mov	eax, [ebp+arg_4]
		add	eax, 50Ch
		push	eax		; pHandles
		push	1		; nCount
		push	[ebp+arg_4]	; int
		call	sub_7F803A19
		test	edi, edi
		jz	short loc_7F80339E

loc_7F8033FB:				; CODE XREF: sub_7F802DB7+5D3j
					; sub_7F802DB7+622j
		cmp	[ebp+var_28], 0
		jz	short loc_7F80340C
		push	[ebp+var_28]
		mov	eax, [ebp+var_28]
		mov	eax, [eax]
		call	dword ptr [eax+8]

loc_7F80340C:				; CODE XREF: sub_7F802DB7+648j
		cmp	[ebp+var_2C], 0
		jz	short loc_7F803465
		cmp	[ebp+var_1A], 0
		jz	short loc_7F80345D
		mov	edi, [ebp+var_BC]
		mov	esi, [ebp+var_C0]
		mov	ebx, [ebp+var_C4]

loc_7F80342B:				; CODE XREF: sub_7F802DB7+6A4j
		movzx	eax, [ebp+var_1A]
		lea	edi, ds:0[eax*8]
		mov	eax, [ebp+var_2C]
		mov	ebx, [edi+eax]
		test	ebx, ebx
		jz	short loc_7F803446
		push	ebx
		mov	eax, [ebx]
		call	dword ptr [eax+8]

loc_7F803446:				; CODE XREF: sub_7F802DB7+687j
		mov	eax, [ebp+var_2C]
		mov	esi, [edi+eax+4]
		test	esi, esi
		jz	short loc_7F803457
		push	esi
		mov	eax, [esi]
		call	dword ptr [eax+8]

loc_7F803457:				; CODE XREF: sub_7F802DB7+698j
		dec	[ebp+var_1A]
		jnz	short loc_7F80342B

loc_7F80345D:				; CODE XREF: sub_7F802DB7+660j
		push	[ebp+var_2C]
		call	MAPIFreeBuffer@4

loc_7F803465:				; CODE XREF: sub_7F802DB7+659j
		cmp	[ebp+var_40], 0
		jz	short loc_7F803474
		lea	eax, [ebp+var_40]
		push	eax
		call	sub_7F811B7E

loc_7F803474:				; CODE XREF: sub_7F802DB7+6B2j
		push	[ebp+var_34]
		call	MAPIFreeBuffer@4
		push	[ebp+var_58]
		mov	eax, [ebp+arg_4]
		call	dword ptr [eax+98h]
		mov	eax, [ebp+arg_4]
		add	eax, 0A8h
		mov	[ebp+var_44], eax
		mov	eax, [eax]
		mov	dword ptr [eax], 0F00h
		mov	eax, [ebp+var_44]
		sub	dword ptr [eax], 4
		mov	eax, [ebp+arg_4]
		dec	dword ptr [eax+4ACh]
		mov	esp, [ebp+ms_exc.old_esp]
		mov	eax, [ebp+var_24]

loc_7F8034B0:				; DATA XREF: sub_7F802DB7+5C4o
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F802DB7	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8034C3	proc near		; DATA XREF: .data:7F8351D4o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	0
		mov	esi, [esp+8+arg_4]
		push	0
		push	0
		push	3
		push	dword ptr [esi+84h]
		call	HrValidateIPMSubtree@20
		test	eax, eax
		jnz	short loc_7F8034E9
		push	esi
		push	[esp+8+arg_0]
		call	sub_7F802DB7

loc_7F8034E9:				; CODE XREF: sub_7F8034C3+1Aj
		pop	esi
		retn	8
sub_7F8034C3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8034ED	proc near		; CODE XREF: sub_7F802DB7+50Ap

var_20		= dword	ptr -20h
ms_exc		= CPPEH_RECORD ptr -18h
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

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F801128
		push	offset sub_7F82FBD0
		push	eax
		xor	eax, eax
		mov	large fs:0, esp
		sub	esp, 10h
		mov	[ebp+var_20], eax
		push	ebx
		push	esi
		push	edi
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+ms_exc.registration.TryLevel], eax
		mov	dword_7F8351C0,	eax
		mov	ebx, [ebp+arg_10]
		mov	esi, [ebp+arg_0]
		mov	edi, [ebp+arg_4]

loc_7F803529:				; CODE XREF: sub_7F8034ED+69j
		push	edi
		push	8
		push	0
		push	0
		push	dword ptr [ebx+8]
		push	dword ptr [ebx+28h]
		push	[ebp+arg_8]
		mov	eax, [ebp+arg_8]
		mov	eax, [eax]
		call	dword ptr [eax+58h]
		test	eax, eax
		jge	short loc_7F803558
		push	eax		; dwInitParam
		push	[ebp+arg_8]	; int
		push	dword ptr [esi+8] ; hInstance
		push	esi		; int
		call	sub_7F805168
		test	eax, eax
		jz	short loc_7F80358E
		jmp	short loc_7F803529
; ---------------------------------------------------------------------------

loc_7F803558:				; CODE XREF: sub_7F8034ED+56j
		mov	dword_7F8351C0,	0

loc_7F803562:				; CODE XREF: sub_7F8034ED+98j
		push	0
		push	ebx
		push	[ebp+arg_C]
		push	dword ptr [edi]
		mov	eax, [edi]
		mov	eax, [eax]
		call	dword ptr [eax+20h]
		test	eax, eax
		jge	short loc_7F803587
		push	eax		; dwInitParam
		push	dword ptr [edi]	; int
		push	dword ptr [esi+8] ; hInstance
		push	esi		; int
		call	sub_7F805168
		test	eax, eax
		jz	short loc_7F80358E
		jmp	short loc_7F803562
; ---------------------------------------------------------------------------

loc_7F803587:				; CODE XREF: sub_7F8034ED+86j
		mov	[ebp+var_20], 1

loc_7F80358E:				; CODE XREF: sub_7F8034ED+67j
					; sub_7F8034ED+96j
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F8035A0

loc_7F80359A:				; DATA XREF: .text:stru_7F801128o
		mov	esp, [ebp+ms_exc.old_esp] ; Finally handler 0 for function 7F8034ED
		mov	eax, [ebp+var_20]

loc_7F8035A0:				; DATA XREF: sub_7F8034ED+A8o
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F8034ED	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8035B3	proc near		; CODE XREF: sub_7F802DB7+560p

Buffer		= byte ptr -130h
Msg		= tagMSG ptr -30h
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		= word ptr  14h

		push	ebp
		xor	ecx, ecx
		mov	ebp, esp
		sub	esp, 130h
		push	ebx
		mov	[ebp+var_14], ecx
		push	esi
		push	edi
		mov	dx, [ebp+arg_C]
		mov	esi, [ebp+arg_0]
		dec	[ebp+arg_C]
		mov	eax, [esi+0A8h]
		add	eax, 4
		inc	dword ptr [esi+4ACh]
		test	dx, dx
		mov	[esi+0A8h], eax
		mov	dword ptr [eax], 0F04h
		jz	loc_7F803880
		xor	ebx, ebx

loc_7F8035F5:				; CODE XREF: sub_7F8035B3+2C7j
		test	ecx, ecx
		jnz	loc_7F803880
		lea	eax, [ebp+var_4]
		mov	[ebp+var_4], ebx
		push	eax
		mov	[ebp+var_10], ebx
		push	28h
		mov	[ebp+var_C], ebx
		mov	[ebp+var_8], ebx
		call	MAPIAllocateBuffer@8
		test	eax, eax
		jnz	loc_7F8038A6
		mov	edi, [ebp+var_4]
		xor	eax, eax
		mov	ecx, 0Ah
		rep stosd
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		lea	edx, [ebp+var_10]
		mov	dword ptr [eax], 1
		mov	eax, [ebp+var_4]
		push	edx
		mov	[eax+0Ch], esi
		mov	eax, [ebp+var_4]
		push	[ebp+arg_8]
		mov	[eax+10h], ecx
		call	sub_7F811C96
		lea	eax, [ebp+var_C]
		cmp	[ebp+var_4], ebx
		push	eax
		jnz	short loc_7F80365F
		push	[ebp+var_10]
		call	MAPIAllocateBuffer@8
		jmp	short loc_7F80366A
; ---------------------------------------------------------------------------

loc_7F80365F:				; CODE XREF: sub_7F8035B3+A0j
		push	[ebp+var_4]
		push	[ebp+var_10]
		call	MAPIAllocateMore@12

loc_7F80366A:				; CODE XREF: sub_7F8035B3+AAj
		test	eax, eax
		jz	short loc_7F803678
		mov	edi, 8007000Eh
		jmp	loc_7F803781
; ---------------------------------------------------------------------------

loc_7F803678:				; CODE XREF: sub_7F8035B3+B9j
		mov	dword_7F8351C0,	ebx

loc_7F80367E:				; CODE XREF: sub_7F8035B3+FDj
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+var_C]
		push	[ebp+arg_8]
		call	sub_7F811CD9
		push	eax
		call	sub_7F80F8B4
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F8036B2
		push	edi		; dwInitParam
		push	1101h		; uID
		push	dword ptr [esi+8] ; hInstance
		push	esi		; int
		call	sub_7F80504F
		test	eax, eax
		jz	loc_7F803781
		jmp	short loc_7F80367E
; ---------------------------------------------------------------------------

loc_7F8036B2:				; CODE XREF: sub_7F8035B3+E4j
		mov	dword_7F8351C0,	ebx

loc_7F8036B8:				; CODE XREF: sub_7F8035B3+138j
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_C]
		add	eax, 18h
		push	eax
		push	0
		push	dword ptr [ecx]
		push	dword ptr [esi+54h]
		call	sub_7F80D08D
		mov	edi, eax
		test	edi, edi
		jge	short loc_7F8036ED
		push	edi		; dwInitParam
		push	1101h		; uID
		push	dword ptr [esi+8] ; hInstance
		push	esi		; int
		call	sub_7F80504F
		test	eax, eax
		jz	loc_7F803781
		jmp	short loc_7F8036B8
; ---------------------------------------------------------------------------

loc_7F8036ED:				; CODE XREF: sub_7F8035B3+11Fj
		mov	dword_7F8351C0,	ebx

loc_7F8036F3:				; CODE XREF: sub_7F8035B3+171j
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_14]
		push	eax
		mov	edx, [ebp+var_4]
		push	ecx
		push	offset unk_7F83D058
		push	dword ptr [edx+18h]
		call	sub_7F80D1F3
		mov	edi, eax
		test	edi, edi
		jge	short loc_7F803726
		push	edi		; dwInitParam
		push	1101h		; uID
		push	dword ptr [esi+8] ; hInstance
		push	esi		; int
		call	sub_7F80504F
		test	eax, eax
		jz	short loc_7F803781
		jmp	short loc_7F8036F3
; ---------------------------------------------------------------------------

loc_7F803726:				; CODE XREF: sub_7F8035B3+15Cj
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		mov	[ecx+1Ch], eax
		mov	eax, [ebp+var_8]
		cmp	dword ptr [eax], 37001Eh
		jnz	short loc_7F803743
		mov	edx, [eax+8]
		mov	ecx, [ebp+var_4]
		mov	[ecx+20h], edx

loc_7F803743:				; CODE XREF: sub_7F8035B3+185j
		mov	dword_7F8351C0,	ebx

loc_7F803749:				; CODE XREF: sub_7F8035B3+1C1j
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		add	eax, 14h
		push	eax
		push	8
		push	0
		mov	eax, [ecx]
		push	[ebp+arg_4]
		call	dword ptr [eax+4Ch]
		test	eax, eax
		jge	short loc_7F803776
		push	eax		; dwInitParam
		push	[ebp+arg_4]	; int
		push	dword ptr [esi+8] ; hInstance
		push	esi		; int
		call	sub_7F805168
		test	eax, eax
		jz	short loc_7F803781
		jmp	short loc_7F803749
; ---------------------------------------------------------------------------

loc_7F803776:				; CODE XREF: sub_7F8035B3+1AEj
		push	[ebp+var_4]
		push	esi
		call	sub_7F8038C2
		mov	edi, eax

loc_7F803781:				; CODE XREF: sub_7F8035B3+C0j
					; sub_7F8035B3+F7j ...
		cmp	[ebp+var_4], ebx
		jz	short loc_7F803797
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+18h]
		call	sub_7F80D19A
		mov	ecx, [ebp+var_4]
		mov	[ecx+18h], ebx

loc_7F803797:				; CODE XREF: sub_7F8035B3+1D1j
		push	edi
		call	sub_7F802C5D
		test	eax, eax
		jnz	loc_7F803882
		push	dword ptr [esi+8]
		push	[ebp+var_4]
		call	dword ptr [esi+4FCh]
		cmp	eax, 80040113h
		mov	edi, eax
		mov	[ebp+var_4], ebx
		jz	loc_7F803882
		push	edi
		call	sub_7F802C5D
		test	eax, eax
		jnz	loc_7F803882
		test	byte ptr [esi+0Ch], 2
		jnz	loc_7F8038AD
		push	ebx		; wRemoveMsg
		lea	eax, [ebp+Msg]
		push	ebx		; wMsgFilterMax
		push	ebx		; wMsgFilterMin
		push	ebx		; hWnd
		push	eax		; lpMsg
		call	ds:PeekMessageA
		test	eax, eax
		jz	short loc_7F80381E

loc_7F8037EB:				; CODE XREF: sub_7F8035B3+269j
		push	ebx		; wMsgFilterMax
		lea	eax, [ebp+Msg]
		push	ebx		; wMsgFilterMin
		push	ebx		; hWnd
		push	eax		; lpMsg
		call	ds:GetMessageA
		lea	eax, [ebp+Msg]
		push	eax		; lpMsg
		call	ds:TranslateMessage
		lea	eax, [ebp+Msg]
		push	eax		; lpMsg
		call	ds:DispatchMessageA
		push	ebx		; wRemoveMsg
		lea	eax, [ebp+Msg]
		push	ebx		; wMsgFilterMax
		push	ebx		; wMsgFilterMin
		push	ebx		; hWnd
		push	eax		; lpMsg
		call	ds:PeekMessageA
		test	eax, eax
		jnz	short loc_7F8037EB

loc_7F80381E:				; CODE XREF: sub_7F8035B3+236j
		cmp	[esi+10h], ebx
		jz	short loc_7F803868
		lea	edi, [esi+14h]
		push	edi
		call	sub_7F80C62C
		test	eax, eax
		jnz	short loc_7F803868
		push	0FFh		; cchBufferMax
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		push	1001h		; uID
		push	dword ptr [esi+8] ; hInstance
		call	ds:LoadStringA
		push	2024h		; uType
		lea	ecx, [ebp+Buffer]
		push	offset Caption	; lpCaption
		push	ecx		; lpText
		push	dword ptr [edi]	; hWnd
		call	ds:MessageBoxA
		cmp	eax, 6
		jz	short loc_7F8038B4

loc_7F803868:				; CODE XREF: sub_7F8035B3+26Ej
					; sub_7F8035B3+27Bj
		cmp	dword ptr [esi+0Ch], 1
		mov	ax, [ebp+arg_C]
		sbb	ecx, ecx
		dec	[ebp+arg_C]
		inc	ecx
		test	ax, ax
		jnz	loc_7F8035F5

loc_7F803880:				; CODE XREF: sub_7F8035B3+3Aj
					; sub_7F8035B3+44j
		xor	edi, edi

loc_7F803882:				; CODE XREF: sub_7F8035B3+1ECj
					; sub_7F8035B3+208j ...
		mov	eax, [esi+0A8h]
		mov	dword ptr [eax], 0F00h
		mov	eax, edi
		pop	edi
		dec	dword ptr [esi+4ACh]
		sub	dword ptr [esi+0A8h], 4
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------

loc_7F8038A6:				; CODE XREF: sub_7F8035B3+63j
		mov	edi, 8007000Eh
		jmp	short loc_7F803882
; ---------------------------------------------------------------------------

loc_7F8038AD:				; CODE XREF: sub_7F8035B3+220j
		mov	edi, 80040113h
		jmp	short loc_7F803882
; ---------------------------------------------------------------------------

loc_7F8038B4:				; CODE XREF: sub_7F8035B3+2B3j
		mov	dword ptr [esi+0Ch], 2
		mov	edi, 80040113h
		jmp	short loc_7F803882
sub_7F8035B3	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8038C2	proc near		; CODE XREF: sub_7F8035B3+1C7p
					; sub_7F804058+11Fp

var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		sub	esp, 4
		push	ebx
		push	esi
		mov	esi, [esp+0Ch+arg_4]
		push	edi
		mov	eax, [esp+10h+arg_0]
		push	ebp
		mov	edi, [esi+1Ch]
		mov	ebx, [esi+14h]
		add	eax, 8
		push	5		; int
		push	dword ptr [esi+18h] ; int
		push	ebx		; int
		push	dword ptr [eax]	; hInstance
		push	esi		; int
		mov	[esp+28h+var_4], eax
		call	sub_7F8045B6
		mov	ebp, eax
		test	ebp, ebp
		jnz	short loc_7F803971
		mov	eax, [esp+14h+var_4]
		push	dword ptr [eax]	; hInstance
		push	esi		; int
		call	sub_7F803EAC
		mov	ebp, eax
		test	ebp, ebp
		jl	short loc_7F803971
		mov	eax, [esi+18h]
		cmp	dword ptr [eax+54h], 2
		jnz	short loc_7F80391F
		push	esi
		push	[esp+18h+arg_0]
		call	sub_7F804058
		mov	ebp, eax
		test	ebp, ebp
		jge	short loc_7F803937
		jmp	short loc_7F803971
; ---------------------------------------------------------------------------

loc_7F80391F:				; CODE XREF: sub_7F8038C2+49j
		test	byte ptr [edi+18h], 10h
		jz	short loc_7F803937
		mov	eax, [esp+14h+var_4]
		push	dword ptr [eax]	; hInstance
		push	esi		; int
		call	sub_7F8042DA
		mov	ebp, eax
		test	ebp, ebp
		jl	short loc_7F803971

loc_7F803937:				; CODE XREF: sub_7F8038C2+59j
					; sub_7F8038C2+61j
		test	byte ptr [edi+18h], 1
		jz	short loc_7F80396A
		mov	dword_7F8351C0,	0

loc_7F803947:				; CODE XREF: sub_7F8038C2+A6j
		push	9
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+54h]
		test	eax, eax
		jge	short loc_7F80396A
		mov	ecx, [esp+14h+var_4]
		push	eax		; dwInitParam
		push	ebx		; int
		push	dword ptr [ecx]	; hInstance
		push	[esp+20h+arg_0]	; int
		call	sub_7F805168
		test	eax, eax
		jz	short loc_7F803971
		jmp	short loc_7F803947
; ---------------------------------------------------------------------------

loc_7F80396A:				; CODE XREF: sub_7F8038C2+79j
					; sub_7F8038C2+8Fj
		mov	dword ptr [esi+24h], 1

loc_7F803971:				; CODE XREF: sub_7F8038C2+2Ej
					; sub_7F8038C2+40j ...
		mov	eax, ebp
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn	8
sub_7F8038C2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80397D(int, HINSTANCE hInstance)
sub_7F80397D	proc near		; CODE XREF: StartAddress+12Ep
					; DATA XREF: sub_7F8026ED+13Do

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
hInstance	= dword	ptr  0Ch

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 4
		push	esi
		push	edi
		mov	esi, [eax+0Ch]
		mov	edi, 1
		mov	ecx, [esi+0A0h]
		test	ecx, ecx
		jz	short loc_7F8039E6
		cmp	dword ptr [eax+24h], 0
		jz	short loc_7F8039E6
		push	dword ptr [esi+64h]
		push	dword ptr [esi+98h]
		push	dword ptr [esi+94h]
		push	dword ptr [esi+90h]
		push	dword ptr [esi+0A4h]
		push	dword ptr [eax+14h]
		push	dword ptr [esi+9Ch]
		push	dword ptr [esi+4]
		call	ecx
		mov	[ebp+var_4], eax
		cmp	eax, 80040113h
		jnz	short loc_7F8039DB
		mov	dword ptr [esi+0Ch], 2

loc_7F8039DB:				; CODE XREF: sub_7F80397D+55j
		cmp	[ebp+var_4], 40580h
		jnz	short loc_7F8039E6
		xor	edi, edi

loc_7F8039E6:				; CODE XREF: sub_7F80397D+1Cj
					; sub_7F80397D+22j ...
		push	edi		; int
		lea	ecx, [ebp+arg_0]
		push	[ebp+hInstance]	; hInstance
		push	ecx		; int
		call	sub_7F804D6B
		test	eax, eax
		jge	short loc_7F8039FA
		mov	[ebp+var_4], eax

loc_7F8039FA:				; CODE XREF: sub_7F80397D+78j
		cmp	[ebp+var_4], 0
		jge	short loc_7F803A08
		inc	dword ptr [esi+4E0h]
		jmp	short loc_7F803A0E
; ---------------------------------------------------------------------------

loc_7F803A08:				; CODE XREF: sub_7F80397D+81j
		inc	dword ptr [esi+4D4h]

loc_7F803A0E:				; CODE XREF: sub_7F80397D+89j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F80397D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F803A19(int, DWORD	nCount,	HANDLE *pHandles, BOOL fWaitAll, DWORD dwMilliseconds, DWORD dwWakeMask)
sub_7F803A19	proc near		; CODE XREF: sub_7F802B1B+A6p
					; sub_7F802DB7+63Bp ...

Msg		= tagMSG ptr -1Ch
arg_0		= dword	ptr  8
nCount		= dword	ptr  0Ch
pHandles	= dword	ptr  10h
fWaitAll	= dword	ptr  14h
dwMilliseconds	= dword	ptr  18h
dwWakeMask	= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		xor	edi, edi

loc_7F803A26:				; CODE XREF: sub_7F803A19+7Fj
		push	[ebp+dwWakeMask] ; dwWakeMask
		push	[ebp+dwMilliseconds] ; dwMilliseconds
		push	[ebp+fWaitAll]	; fWaitAll
		push	[ebp+pHandles]	; pHandles
		push	[ebp+nCount]	; nCount
		call	ds:MsgWaitForMultipleObjects
		cmp	eax, [ebp+nCount]
		mov	ebx, eax
		jz	short loc_7F803A49
		mov	esi, 1
		jmp	short loc_7F803A8E
; ---------------------------------------------------------------------------

loc_7F803A49:				; CODE XREF: sub_7F803A19+27j
		push	edi		; wRemoveMsg
		lea	eax, [ebp+Msg]
		push	edi		; wMsgFilterMax
		push	edi		; wMsgFilterMin
		push	edi		; hWnd
		push	eax		; lpMsg
		call	ds:PeekMessageA
		test	eax, eax
		jz	short loc_7F803A8E

loc_7F803A5B:				; CODE XREF: sub_7F803A19+73j
		push	edi		; wMsgFilterMax
		lea	eax, [ebp+Msg]
		push	edi		; wMsgFilterMin
		push	edi		; hWnd
		push	eax		; lpMsg
		call	ds:GetMessageA
		lea	eax, [ebp+Msg]
		push	eax		; lpMsg
		call	ds:TranslateMessage
		lea	eax, [ebp+Msg]
		push	eax		; lpMsg
		call	ds:DispatchMessageA
		push	edi		; wRemoveMsg
		lea	eax, [ebp+Msg]
		push	edi		; wMsgFilterMax
		push	edi		; wMsgFilterMin
		push	edi		; hWnd
		push	eax		; lpMsg
		call	ds:PeekMessageA
		test	eax, eax
		jnz	short loc_7F803A5B

loc_7F803A8E:				; CODE XREF: sub_7F803A19+2Ej
					; sub_7F803A19+40j
		test	esi, esi
		jnz	short loc_7F803A9A
		mov	eax, [ebp+arg_0]
		cmp	[eax+0Ch], edi
		jz	short loc_7F803A26

loc_7F803A9A:				; CODE XREF: sub_7F803A19+77j
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F803A19	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F803AA5(int, HINSTANCE hInstance)
sub_7F803AA5	proc near		; DATA XREF: sub_7F802962+183o

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
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
hInstance	= dword	ptr  0Ch

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F801138
		push	offset sub_7F82FBD0
		push	eax
		mov	large fs:0, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	[ebp+ms_exc.old_esp], esp
		mov	eax, [esi+0Ch]
		xor	edi, edi
		mov	[ebp+var_1C], eax
		add	eax, 500h
		mov	[ebp+var_24], edi
		mov	[ebp+var_2C], 80004005h
		mov	ecx, [eax]
		mov	[ebp+var_28], eax
		mov	[ebp+var_20], ecx
		mov	[ebp+ms_exc.registration.TryLevel], edi
		mov	eax, [ebp+var_1C]
		add	eax, 510h
		push	eax		; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	ecx, [ebp+var_1C]
		add	ecx, 528h
		cmp	[ecx], edi
		jnz	short loc_7F803B1D
		mov	eax, [ebp+var_1C]
		mov	[eax+530h], esi
		mov	[eax+534h], esi
		jmp	short loc_7F803B32
; ---------------------------------------------------------------------------

loc_7F803B1D:				; CODE XREF: sub_7F803AA5+65j
		mov	edx, [ebp+var_1C]
		add	edx, 534h
		mov	eax, [edx]
		mov	[esi+8], eax
		mov	eax, [edx]
		mov	[eax+4], esi
		mov	[edx], esi

loc_7F803B32:				; CODE XREF: sub_7F803AA5+76j
		inc	dword ptr [ecx]
		mov	eax, [ebp+var_28]
		mov	edx, [eax]
		mov	ecx, [ecx]
		cmp	edx, ecx
		jb	short loc_7F803B6E
		mov	[ebp+var_20], 0
		cmp	[ebp+var_20], edx
		jnb	short loc_7F803B6E
		mov	esi, [ebp+var_20]
		shl	esi, 4
		mov	eax, [ebp+var_1C]
		mov	eax, [eax+504h]
		lea	eax, [esi+eax+8]

loc_7F803B5E:				; CODE XREF: sub_7F803AA5+C7j
		cmp	dword ptr [eax], 0
		jz	short loc_7F803B6E
		add	eax, 10h
		inc	[ebp+var_20]
		cmp	[ebp+var_20], edx
		jb	short loc_7F803B5E

loc_7F803B6E:				; CODE XREF: sub_7F803AA5+98j
					; sub_7F803AA5+A4j ...
		lea	eax, ds:0[edx*2]
		cmp	eax, ecx
		mov	eax, 1
		adc	eax, 0FFFFFFFFh
		mov	[ebp+var_24], eax
		jz	short loc_7F803B93
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+50Ch] ; hEvent
		call	ds:ResetEvent

loc_7F803B93:				; CODE XREF: sub_7F803AA5+DDj
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F803C0E

loc_7F803B9F:				; DATA XREF: .text:stru_7F801138o
		mov	eax, [ebp+var_1C] ; Finally handler 0 for function 7F803AA5
		add	eax, 510h
		push	eax		; lpCriticalSection
		call	ds:LeaveCriticalSection
		mov	eax, [ebp+var_28]
		mov	ecx, [ebp+var_20]
		cmp	[eax], ecx
		jbe	short loc_7F803BCE
		shl	ecx, 4
		mov	eax, [ebp+var_1C]
		mov	eax, [eax+504h]
		push	dword ptr [ecx+eax+4] ;	hEvent
		call	ds:SetEvent

loc_7F803BCE:				; CODE XREF: sub_7F803AA5+111j
		xor	esi, esi
		cmp	[ebp+var_24], esi
		jz	short loc_7F803C01
		push	0FFh		; dwWakeMask
		push	0FFFFFFFFh	; dwMilliseconds
		push	esi		; fWaitAll
		mov	eax, [ebp+var_1C]
		add	eax, 50Ch
		push	eax		; pHandles
		push	1		; nCount
		push	[ebp+var_1C]	; int
		call	sub_7F803A19
		mov	eax, [ebp+var_1C]
		cmp	[eax+0Ch], esi
		jz	short loc_7F803C01
		push	[ebp+hInstance]	; hInstance
		push	eax		; int
		call	sub_7F803DCD

loc_7F803C01:				; CODE XREF: sub_7F803AA5+12Ej
					; sub_7F803AA5+151j
		mov	[ebp+var_2C], 0
		mov	esp, [ebp+ms_exc.old_esp]
		mov	eax, [ebp+var_2C]

loc_7F803C0E:				; DATA XREF: sub_7F803AA5+F5o
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F803AA5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; DWORD	__stdcall StartAddress(LPVOID lpThreadParameter)
StartAddress	proc near		; DATA XREF: sub_7F802962+146o

var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
lpCriticalSection= dword ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
lpThreadParameter= dword ptr  8

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F801148
		push	offset sub_7F82FBD0
		push	eax
		mov	eax, [ebp+lpThreadParameter]
		mov	large fs:0, esp
		mov	ecx, [eax+0Ch]
		sub	esp, 2Ch
		lea	eax, [ecx+510h]
		mov	[ebp+var_1C], ecx
		mov	[ebp+lpCriticalSection], eax
		push	ebx
		push	esi
		push	edi

loc_7F803C56:				; CODE XREF: StartAddress+191j
		xor	esi, esi
		mov	[ebp+var_38], esi
		mov	[ebp+ms_exc.registration.TryLevel], esi
		push	[ebp+lpCriticalSection]	; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	eax, [ebp+var_1C]
		add	eax, 528h
		mov	[ebp+var_30], eax
		mov	eax, [eax]
		mov	[ebp+var_3C], eax
		cmp	eax, 1
		jnz	short loc_7F803CB4
		mov	eax, [ebp+var_1C]
		add	eax, 534h
		mov	[ebp+var_28], eax
		mov	eax, [eax]
		mov	[ebp+var_34], eax
		mov	eax, [ebp+var_1C]
		mov	[eax+530h], esi
		mov	eax, [ebp+var_28]
		mov	[eax], esi
		mov	eax, [ebp+var_30]
		mov	[eax], esi
		mov	eax, [ebp+var_1C]
		add	eax, 52Ch
		mov	[ebp+var_20], eax
		inc	dword ptr [eax]
		mov	eax, [ebp+var_34]
		mov	[ebp+var_24], eax
		jmp	short loc_7F803CF3
; ---------------------------------------------------------------------------

loc_7F803CB4:				; CODE XREF: StartAddress+59j
		cmp	[ebp+var_3C], 1
		jbe	short loc_7F803CEC
		mov	eax, [ebp+var_1C]
		add	eax, 534h
		mov	[ebp+var_28], eax
		mov	eax, [eax]
		mov	[ebp+var_34], eax
		mov	eax, [eax+8]
		mov	ecx, [ebp+var_28]
		mov	[ecx], eax
		mov	eax, [ebp+var_30]
		dec	dword ptr [eax]
		mov	eax, [ebp+var_1C]
		add	eax, 52Ch
		mov	[ebp+var_20], eax
		inc	dword ptr [eax]
		mov	eax, [ebp+var_34]
		mov	[ebp+var_24], eax
		jmp	short loc_7F803CF3
; ---------------------------------------------------------------------------

loc_7F803CEC:				; CODE XREF: StartAddress+97j
		mov	[ebp+var_24], 0

loc_7F803CF3:				; CODE XREF: StartAddress+91j
					; StartAddress+C9j
		mov	eax, [ebp+var_24]
		mov	ecx, [ebp+lpThreadParameter]
		mov	[ecx+8], eax
		mov	eax, [ebp+var_1C]
		mov	eax, [eax+500h]
		mov	ecx, [ebp+var_30]
		sub	eax, [ecx]
		cmp	eax, 1
		sbb	eax, eax
		neg	eax
		mov	[ebp+var_38], eax
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F803D3F

loc_7F803D20:				; DATA XREF: .text:stru_7F801148o
		push	[ebp+lpCriticalSection]	; Finally handler 0 for	function 7F803C21
		call	ds:LeaveCriticalSection
		cmp	[ebp+var_38], 0
		jz	short locret_7F803D3E
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+50Ch] ; hEvent
		call	ds:SetEvent

locret_7F803D3E:			; CODE XREF: StartAddress+10Cj
		retn
; ---------------------------------------------------------------------------

loc_7F803D3F:				; DATA XREF: StartAddress+FAo
		xor	esi, esi
		cmp	[ebp+var_24], esi
		jz	short loc_7F803D93
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+8] ; hInstance
		push	[ebp+var_24]	; int
		call	sub_7F80397D
		push	[ebp+lpCriticalSection]	; lpCriticalSection
		mov	[ebp+var_24], esi
		call	ds:EnterCriticalSection
		mov	eax, [ebp+var_1C]
		add	eax, 52Ch
		mov	[ebp+var_20], eax
		mov	edi, [eax]
		mov	ecx, [ebp+var_20]
		lea	eax, [edi-1]
		push	[ebp+lpCriticalSection]	; lpCriticalSection
		mov	[ecx], eax
		call	ds:LeaveCriticalSection
		test	edi, edi
		jnz	short loc_7F803DAB
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+50Ch] ; hEvent
		call	ds:SetEvent
		jmp	short loc_7F803DAB
; ---------------------------------------------------------------------------

loc_7F803D93:				; CODE XREF: StartAddress+123j
		mov	esi, [ebp+lpThreadParameter]
		add	esi, 4
		push	dword ptr [esi]	; hEvent
		call	ds:ResetEvent
		push	0FFFFFFFFh	; dwMilliseconds
		push	dword ptr [esi]	; hHandle
		call	ds:WaitForSingleObject

loc_7F803DAB:				; CODE XREF: StartAddress+15Fj
					; StartAddress+170j
		mov	eax, [ebp+var_1C]
		cmp	dword ptr [eax+0Ch], 0
		jz	loc_7F803C56
		xor	eax, eax
		mov	ecx, [ebp+ms_exc.registration.Next]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
StartAddress	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_7F803DCD(int,	HINSTANCE hInstance)
sub_7F803DCD	proc near		; CODE XREF: sub_7F803AA5+157p

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
hInstance	= dword	ptr  0Ch

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F801158
		push	offset sub_7F82FBD0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+ms_exc.registration.TryLevel], 0
		mov	eax, [ebp+arg_0]
		add	eax, 510h
		push	eax		; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	edi, [ebp+arg_0]
		add	edi, 528h
		mov	esi, [ebp+var_24]
		mov	ebx, [ebp+var_28]

loc_7F803E15:				; CODE XREF: sub_7F803DCD+AFj
		cmp	dword ptr [edi], 1
		jnz	short loc_7F803E3F
		mov	esi, [ebp+arg_0]
		add	esi, 534h
		mov	ebx, [esi]
		mov	ecx, [ebp+arg_0]
		xor	eax, eax
		mov	[ecx+530h], eax
		mov	[esi], eax
		mov	[edi], eax
		inc	dword ptr [ecx+52Ch]
		mov	[ebp+var_1C], ebx
		jmp	short loc_7F803E68
; ---------------------------------------------------------------------------

loc_7F803E3F:				; CODE XREF: sub_7F803DCD+4Bj
		jbe	short loc_7F803E61
		mov	esi, [ebp+arg_0]
		add	esi, 534h
		mov	ebx, [esi]
		mov	eax, [ebx+8]
		mov	[esi], eax
		dec	dword ptr [edi]
		mov	eax, [ebp+arg_0]
		inc	dword ptr [eax+52Ch]
		mov	[ebp+var_1C], ebx
		jmp	short loc_7F803E68
; ---------------------------------------------------------------------------

loc_7F803E61:				; CODE XREF: sub_7F803DCD:loc_7F803E3Fj
		mov	[ebp+var_1C], 0

loc_7F803E68:				; CODE XREF: sub_7F803DCD+70j
					; sub_7F803DCD+92j
		cmp	[ebp+var_1C], 0
		jz	short loc_7F803E7E
		push	1		; int
		push	[ebp+hInstance]	; hInstance
		lea	eax, [ebp+var_1C]
		push	eax		; int
		call	sub_7F804D6B
		jmp	short loc_7F803E15
; ---------------------------------------------------------------------------

loc_7F803E7E:				; CODE XREF: sub_7F803DCD+9Fj
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F803E9A

loc_7F803E8A:				; DATA XREF: .text:stru_7F801158o
		mov	eax, [ebp+arg_0] ; Finally handler 0 for function 7F803DCD
		add	eax, 510h
		push	eax		; lpCriticalSection
		call	ds:LeaveCriticalSection
		retn
; ---------------------------------------------------------------------------

loc_7F803E9A:				; DATA XREF: sub_7F803DCD+B8o
		mov	eax, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, eax
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F803DCD	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F803EAC(int, HINSTANCE hInstance)
sub_7F803EAC	proc near		; CODE XREF: sub_7F8038C2+37p

var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
dwInitParam	= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
hInstance	= dword	ptr  0Ch

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F801168
		push	offset sub_7F82FBD0
		push	eax
		xor	ecx, ecx
		mov	large fs:0, esp
		sub	esp, 1Ch
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_24], ecx
		mov	[ebp+var_2C], 80004005h
		push	ebx
		push	esi
		push	edi
		mov	esi, [eax+14h]
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+ms_exc.registration.TryLevel], ecx
		add	eax, 0Ch
		mov	[ebp+var_1C], eax
		mov	eax, [eax]
		add	dword ptr [eax+0A8h], 4
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		inc	dword ptr [eax+4ACh]
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		mov	eax, [eax+0A8h]
		mov	dword ptr [eax], 0F05h
		mov	dword_7F8351C0,	ecx
		mov	ebx, [ebp+arg_0]
		add	ebx, 18h
		mov	edi, [ebp+hInstance]

loc_7F803F21:				; CODE XREF: sub_7F803EAC+A3j
		lea	eax, [ebp+var_24]
		push	eax
		push	0
		push	dword ptr [ebx]
		call	sub_7F80DB1E
		mov	[ebp+dwInitParam], eax
		test	eax, eax
		jge	short loc_7F803F51
		mov	[ebp+var_2C], eax
		push	eax		; dwInitParam
		push	1103h		; uID
		push	edi		; hInstance
		push	[ebp+arg_0]	; int
		call	sub_7F80504F
		test	eax, eax
		jz	loc_7F803FF4
		jmp	short loc_7F803F21
; ---------------------------------------------------------------------------

loc_7F803F51:				; CODE XREF: sub_7F803EAC+87j
					; sub_7F803EAC+12Aj
		xor	eax, eax
		mov	[ebp+var_28], eax
		mov	dword_7F8351C0,	eax

loc_7F803F5B:				; CODE XREF: sub_7F803EAC+DAj
		lea	eax, [ebp+var_28]
		push	eax
		push	0
		push	32h
		push	[ebp+var_24]
		mov	eax, [ebp+var_24]
		mov	eax, [eax]
		call	dword ptr [eax+4Ch]
		mov	[ebp+dwInitParam], eax
		test	eax, eax
		jge	short loc_7F803F88
		push	eax		; dwInitParam
		push	[ebp+var_24]	; int
		push	edi		; hInstance
		push	[ebp+arg_0]	; int
		call	sub_7F805168
		test	eax, eax
		jz	short loc_7F803FF4
		jmp	short loc_7F803F5B
; ---------------------------------------------------------------------------

loc_7F803F88:				; CODE XREF: sub_7F803EAC+C7j
		mov	eax, [ebp+var_28]
		cmp	dword ptr [eax], 0
		jz	short loc_7F803FDE
		mov	dword_7F8351C0,	0

loc_7F803F9A:				; CODE XREF: sub_7F803EAC+11Fj
		push	[ebp+var_28]
		push	2
		push	esi
		mov	eax, [esi]
		call	dword ptr [eax+4Ch]
		mov	[ebp+dwInitParam], eax
		push	[ebp+var_28]
		call	FreeProws@4
		xor	eax, eax
		mov	[ebp+var_28], eax
		cmp	[ebp+dwInitParam], eax
		jge	short loc_7F803FCD
		push	[ebp+dwInitParam] ; dwInitParam
		push	esi		; int
		push	edi		; hInstance
		push	[ebp+arg_0]	; int
		call	sub_7F805168
		test	eax, eax
		jz	short loc_7F803FF4
		jmp	short loc_7F803F9A
; ---------------------------------------------------------------------------

loc_7F803FCD:				; CODE XREF: sub_7F803EAC+10Cj
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		cmp	dword ptr [eax+0Ch], 0
		jz	loc_7F803F51
		jmp	short loc_7F803FED
; ---------------------------------------------------------------------------

loc_7F803FDE:				; CODE XREF: sub_7F803EAC+E2j
		push	[ebp+var_28]
		call	FreeProws@4
		mov	[ebp+var_28], 0

loc_7F803FED:				; CODE XREF: sub_7F803EAC+130j
		mov	[ebp+var_2C], 0

loc_7F803FF4:				; CODE XREF: sub_7F803EAC+9Dj
					; sub_7F803EAC+D8j ...
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F804045

loc_7F804000:				; DATA XREF: .text:stru_7F801168o
		cmp	[ebp+var_24], 0	; Finally handler 0 for	function 7F803EAC
		jz	short loc_7F804011
		push	[ebp+var_24]
		mov	eax, [ebp+var_24]
		mov	eax, [eax]
		call	dword ptr [eax+8]

loc_7F804011:				; CODE XREF: sub_7F803EAC+158j
		mov	eax, [ebp+arg_0]
		add	eax, 0Ch
		mov	[ebp+var_1C], eax
		mov	eax, [eax]
		mov	eax, [eax+0A8h]
		mov	dword ptr [eax], 0F00h
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		sub	dword ptr [eax+0A8h], 4
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		dec	dword ptr [eax+4ACh]
		mov	esp, [ebp+ms_exc.old_esp]
		mov	eax, [ebp+var_2C]

loc_7F804045:				; DATA XREF: sub_7F803EAC+14Fo
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F803EAC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F804058	proc near		; CODE XREF: sub_7F8038C2+50p

var_70		= dword	ptr -70h
var_6C		= byte ptr -6Ch
var_68		= dword	ptr -68h
var_60		= dword	ptr -60h
var_58		= dword	ptr -58h
var_50		= dword	ptr -50h
var_48		= dword	ptr -48h
var_40		= byte ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
hInstance	= 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
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F801178
		push	offset sub_7F82FBD0
		push	eax
		mov	large fs:0, esp
		sub	esp, 60h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+var_1C], esi
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_28], esi
		mov	[ebp+var_24], esi
		mov	[ebp+var_20], esi
		mov	ecx, [eax+8]
		mov	[ebp+hInstance], ecx
		mov	[ebp+ms_exc.registration.TryLevel], esi
		mov	eax, [ebp+arg_4]
		add	eax, 0Ch
		mov	[ebp+var_2C], eax
		mov	eax, [eax]
		add	dword ptr [eax+0A8h], 4
		mov	eax, [ebp+var_2C]
		mov	eax, [eax]
		inc	dword ptr [eax+4ACh]
		mov	eax, [ebp+var_2C]
		mov	eax, [eax]
		mov	eax, [eax+0A8h]
		mov	dword ptr [eax], 0F06h
		mov	dword_7F8351C0,	esi
		mov	edi, [ebp+arg_4]
		add	edi, 14h

loc_7F8040D2:				; CODE XREF: sub_7F804058+AEj
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_40]
		push	eax
		push	8
		push	0
		push	dword ptr [edi]
		mov	eax, [edi]
		mov	eax, [eax]
		call	dword ptr [eax+40h]
		mov	esi, eax
		test	esi, esi
		jge	short loc_7F804108
		mov	[ebp+var_28], esi
		push	esi		; dwInitParam
		push	dword ptr [edi]	; int
		push	[ebp+hInstance]	; hInstance
		push	[ebp+arg_4]	; int
		call	sub_7F805168
		test	eax, eax
		jz	loc_7F8041DC
		jmp	short loc_7F8040D2
; ---------------------------------------------------------------------------

loc_7F804108:				; CODE XREF: sub_7F804058+93j
		mov	dword_7F8351C0,	0

loc_7F804112:				; CODE XREF: sub_7F804058+F7j
		lea	eax, [ebp+var_20]
		push	eax
		push	3
		push	0
		push	offset dword_7F801930
		push	3701000Dh
		push	[ebp+var_24]
		mov	eax, [ebp+var_24]
		mov	eax, [eax]
		call	dword ptr [eax+1Ch]
		mov	esi, eax
		test	esi, esi
		jge	short loc_7F804151
		mov	[ebp+var_28], esi
		push	esi		; dwInitParam
		push	[ebp+var_24]	; int
		push	[ebp+hInstance]	; hInstance
		push	[ebp+arg_4]	; int
		call	sub_7F805168
		test	eax, eax
		jz	loc_7F8041DC
		jmp	short loc_7F804112
; ---------------------------------------------------------------------------

loc_7F804151:				; CODE XREF: sub_7F804058+DBj
		mov	ebx, [ebp+arg_4]
		add	ebx, 18h
		mov	eax, [ebx]
		add	eax, 54h
		mov	ecx, [eax]
		mov	[ebp+var_38], ecx
		mov	dword ptr [eax], 8
		mov	eax, [edi]
		mov	[ebp+var_3C], eax
		mov	eax, [ebp+var_20]
		mov	[edi], eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F8038C2
		mov	[ebp+var_28], eax
		mov	eax, [ebp+var_3C]
		mov	[edi], eax
		mov	eax, [ebx]
		mov	ecx, [ebp+var_38]
		mov	[eax+54h], ecx
		cmp	[ebp+var_28], 0
		mov	eax, 1
		jge	short loc_7F804199
		xor	eax, eax

loc_7F804199:				; CODE XREF: sub_7F804058+13Dj
		mov	[ebp+var_1C], eax
		xor	eax, eax
		cmp	[ebp+var_1C], eax
		jz	short loc_7F8041DC
		mov	dword_7F8351C0,	eax

loc_7F8041A8:				; CODE XREF: sub_7F804058+174j
		push	0
		push	[ebp+var_20]
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		call	dword ptr [eax+10h]
		mov	esi, eax
		test	esi, esi
		jge	short loc_7F8041D0
		push	esi		; dwInitParam
		push	[ebp+var_20]	; int
		push	[ebp+hInstance]	; hInstance
		push	[ebp+arg_4]	; int
		call	sub_7F805168
		test	eax, eax
		jnz	short loc_7F8041A8
		test	esi, esi

loc_7F8041D0:				; CODE XREF: sub_7F804058+161j
		mov	eax, 1
		jge	short loc_7F8041D9
		xor	eax, eax

loc_7F8041D9:				; CODE XREF: sub_7F804058+17Dj
		mov	[ebp+var_1C], eax

loc_7F8041DC:				; CODE XREF: sub_7F804058+A8j
					; sub_7F804058+F1j ...
		cmp	[ebp+var_20], 0
		jz	short loc_7F8041ED
		push	[ebp+var_20]
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		call	dword ptr [eax+8]

loc_7F8041ED:				; CODE XREF: sub_7F804058+188j
		xor	ebx, ebx
		cmp	[ebp+var_1C], ebx
		jz	short loc_7F804249
		mov	[ebp+var_70], ebx
		lea	edi, [ebp+var_6C]
		xor	eax, eax
		mov	ecx, 0Bh
		rep stosd
		mov	[ebp+var_70], 37050003h
		mov	[ebp+var_68], 5
		mov	[ebp+var_60], 370B0003h
		mov	[ebp+var_58], ebx
		mov	[ebp+var_50], 3704001Eh
		mov	[ebp+var_48], offset Default
		push	ebx
		lea	eax, [ebp+var_70]
		push	eax
		push	3
		push	[ebp+var_24]
		mov	eax, [ebp+var_24]
		mov	eax, [eax]
		call	dword ptr [eax+20h]
		test	eax, eax
		mov	eax, 1
		jge	short loc_7F804246
		xor	eax, eax

loc_7F804246:				; CODE XREF: sub_7F804058+1EAj
		mov	[ebp+var_1C], eax

loc_7F804249:				; CODE XREF: sub_7F804058+19Aj
		push	[ebp+var_1C]	; int
		push	[ebp+var_24]	; int
		push	[ebp+hInstance]	; hInstance
		push	[ebp+arg_4]	; int
		call	sub_7F804E37
		cmp	[ebp+var_1C], 0
		jz	short loc_7F80426D
		mov	eax, [ebp+var_2C]
		mov	eax, [eax]
		inc	dword ptr [eax+4DCh]
		jmp	short loc_7F80427E
; ---------------------------------------------------------------------------

loc_7F80426D:				; CODE XREF: sub_7F804058+206j
		cmp	[ebp+var_28], 0
		jge	short loc_7F80427E
		mov	eax, [ebp+var_2C]
		mov	eax, [eax]
		inc	dword ptr [eax+4ECh]

loc_7F80427E:				; CODE XREF: sub_7F804058+213j
					; sub_7F804058+219j
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F8042C7

loc_7F80428A:				; DATA XREF: .text:stru_7F801178o
		cmp	[ebp+var_1C], 0	; Finally handler 0 for	function 7F804058
		jz	short loc_7F80429C
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+0Ch]
		inc	dword ptr [eax+4D8h]

loc_7F80429C:				; CODE XREF: sub_7F804058+236j
		mov	ecx, [ebp+arg_4]
		add	ecx, 0Ch
		mov	eax, [ecx]
		mov	eax, [eax+0A8h]
		mov	dword ptr [eax], 0F00h
		mov	eax, [ecx]
		sub	dword ptr [eax+0A8h], 4
		mov	eax, [ecx]
		dec	dword ptr [eax+4ACh]
		mov	esp, [ebp+ms_exc.old_esp]
		mov	eax, [ebp+var_28]

loc_7F8042C7:				; DATA XREF: sub_7F804058+22Do
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F804058	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8042DA(int, HINSTANCE hInstance)
sub_7F8042DA	proc near		; CODE XREF: sub_7F8038C2+6Ap

var_4C		= byte ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
hInstance	= dword	ptr  0Ch

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F801188
		push	offset sub_7F82FBD0
		push	eax
		xor	ecx, ecx
		mov	large fs:0, esp
		sub	esp, 3Ch
		mov	[ebp+var_20], ecx
		mov	[ebp+var_24], ecx
		push	ebx
		mov	[ebp+var_40], ecx
		push	esi
		mov	[ebp+var_1C], ecx
		push	edi
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+ms_exc.registration.TryLevel], ecx
		mov	esi, [ebp+arg_0]
		add	esi, 0Ch
		mov	eax, [esi]
		add	dword ptr [eax+0A8h], 4
		mov	eax, [esi]
		inc	dword ptr [eax+4ACh]
		mov	eax, [esi]
		mov	eax, [eax+0A8h]
		mov	dword ptr [eax], 0F06h
		mov	dword_7F8351C0,	ecx
		mov	eax, [ebp+arg_0]
		add	eax, 18h
		mov	[ebp+var_44], eax
		mov	ebx, eax
		mov	edi, [ebp+var_2C]

loc_7F80434A:				; CODE XREF: sub_7F8042DA+A2j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		push	dword ptr [ebx]
		call	sub_7F80D6D8
		mov	edi, eax
		mov	[ebp+var_2C], edi
		test	edi, edi
		jge	short loc_7F80437E
		mov	[ebp+var_1C], edi
		push	edi		; dwInitParam
		push	1104h		; uID
		push	[ebp+hInstance]	; hInstance
		push	[ebp+arg_0]	; int
		call	sub_7F80504F
		test	eax, eax
		jz	loc_7F804549
		jmp	short loc_7F80434A
; ---------------------------------------------------------------------------

loc_7F80437E:				; CODE XREF: sub_7F8042DA+84j
		xor	eax, eax
		cmp	[ebp+var_20], eax
		jz	loc_7F804549
		mov	dword_7F8351C0,	eax

loc_7F80438E:				; CODE XREF: sub_7F8042DA+E9j
		push	0
		push	offset unk_7F8351F8
		push	[ebp+var_20]
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		call	dword ptr [eax+1Ch]
		mov	edi, eax
		mov	[ebp+var_2C], edi
		test	edi, edi
		jge	short loc_7F8043C5
		mov	[ebp+var_1C], edi
		push	edi		; dwInitParam
		push	[ebp+var_20]	; int
		push	[ebp+hInstance]	; hInstance
		push	[ebp+arg_0]	; int
		call	sub_7F805168
		test	eax, eax
		jz	loc_7F804549
		jmp	short loc_7F80438E
; ---------------------------------------------------------------------------

loc_7F8043C5:				; CODE XREF: sub_7F8042DA+CDj
		mov	ebx, [ebp+var_48]

loc_7F8043C8:				; CODE XREF: sub_7F8042DA+269j
		xor	eax, eax
		mov	[ebp+var_38], eax
		mov	[ebp+var_34], eax
		mov	[ebp+var_28], eax
		mov	[ebp+var_30], eax
		mov	dword_7F8351C0,	eax

loc_7F8043DB:				; CODE XREF: sub_7F8042DA+131j
		lea	eax, [ebp+var_28]
		push	eax
		push	0
		push	1
		push	[ebp+var_20]
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		call	dword ptr [eax+4Ch]
		mov	edi, eax
		mov	[ebp+var_2C], edi
		test	edi, edi
		jge	short loc_7F804419
		mov	[ebp+var_1C], edi
		push	edi		; dwInitParam
		push	[ebp+var_20]	; int
		push	[ebp+hInstance]	; hInstance
		push	[ebp+arg_0]	; int
		call	sub_7F805168
		test	eax, eax
		jnz	short loc_7F8043DB
		mov	[ebp+var_24], 1
		jmp	loc_7F8044EA
; ---------------------------------------------------------------------------

loc_7F804419:				; CODE XREF: sub_7F8042DA+11Bj
		mov	eax, [ebp+var_28]
		cmp	dword ptr [eax], 0
		jnz	short loc_7F80442D
		mov	[ebp+var_24], 1
		jmp	loc_7F8044EA
; ---------------------------------------------------------------------------

loc_7F80442D:				; CODE XREF: sub_7F8042DA+145j
		mov	dword_7F8351C0,	0

loc_7F804437:				; CODE XREF: sub_7F8042DA+19Ej
		lea	eax, [ebp+var_38]
		push	eax
		push	0
		mov	eax, [ebp+var_28]
		mov	eax, [eax+0Ch]
		push	dword ptr [eax+8]
		mov	eax, [ebp+var_44]
		push	dword ptr [eax]
		call	sub_7F80DC30
		mov	edi, eax
		mov	[ebp+var_2C], edi
		test	edi, edi
		jge	short loc_7F80447A
		mov	[ebp+var_24], 1
		mov	[ebp+var_1C], edi
		push	edi		; dwInitParam
		push	1105h		; uID
		push	[ebp+hInstance]	; hInstance
		push	[ebp+arg_0]	; int
		call	sub_7F80504F
		test	eax, eax
		jz	short loc_7F8044EA
		jmp	short loc_7F804437
; ---------------------------------------------------------------------------

loc_7F80447A:				; CODE XREF: sub_7F8042DA+17Dj
		mov	dword_7F8351C0,	0
		mov	ebx, [ebp+arg_0]
		add	ebx, 14h

loc_7F80448A:				; CODE XREF: sub_7F8042DA+1E1j
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [ebp+var_4C]
		push	eax
		push	8
		push	0
		push	dword ptr [ebx]
		mov	eax, [ebx]
		mov	eax, [eax]
		call	dword ptr [eax+40h]
		mov	edi, eax
		mov	[ebp+var_2C], edi
		test	edi, edi
		jge	short loc_7F8044C6
		mov	[ebp+var_1C], edi
		push	edi		; dwInitParam
		push	dword ptr [ebx]	; int
		push	[ebp+hInstance]	; hInstance
		push	[ebp+arg_0]	; int
		call	sub_7F805168
		test	eax, eax
		jnz	short loc_7F80448A
		mov	[ebp+var_24], 1
		jmp	short loc_7F8044EA
; ---------------------------------------------------------------------------

loc_7F8044C6:				; CODE XREF: sub_7F8042DA+1CCj
		push	7		; int
		push	[ebp+var_38]	; int
		push	[ebp+var_34]	; int
		push	[ebp+hInstance]	; hInstance
		push	[ebp+arg_0]	; int
		call	sub_7F8045B6
		mov	[ebp+var_1C], eax
		test	eax, eax
		mov	eax, 1
		jge	short loc_7F8044E7
		xor	eax, eax

loc_7F8044E7:				; CODE XREF: sub_7F8042DA+209j
		mov	[ebp+var_30], eax

loc_7F8044EA:				; CODE XREF: sub_7F8042DA+13Aj
					; sub_7F8042DA+14Ej ...
		push	[ebp+var_28]
		call	FreeProws@4
		mov	[ebp+var_28], 0
		push	[ebp+var_38]
		call	sub_7F80DD88
		push	[ebp+var_30]	; int
		push	[ebp+var_34]	; int
		push	[ebp+hInstance]	; hInstance
		push	[ebp+arg_0]	; int
		call	sub_7F804E37
		cmp	[ebp+var_30], 0
		jz	short loc_7F804529
		mov	[ebp+var_40], 1
		mov	eax, [esi]
		inc	dword ptr [eax+4DCh]
		jmp	short loc_7F804537
; ---------------------------------------------------------------------------

loc_7F804529:				; CODE XREF: sub_7F8042DA+23Cj
		cmp	[ebp+var_1C], 0
		jge	short loc_7F804537
		mov	eax, [esi]
		inc	dword ptr [eax+4ECh]

loc_7F804537:				; CODE XREF: sub_7F8042DA+24Dj
					; sub_7F8042DA+253j
		cmp	[ebp+var_24], 0
		jnz	short loc_7F804549
		mov	eax, [esi]
		cmp	dword ptr [eax+0Ch], 0
		jz	loc_7F8043C8

loc_7F804549:				; CODE XREF: sub_7F8042DA+9Cj
					; sub_7F8042DA+A9j ...
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F8045A3

loc_7F804555:				; DATA XREF: .text:stru_7F801188o
		cmp	[ebp+var_40], 0	; Finally handler 0 for	function 7F8042DA
		jz	short loc_7F804567
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+0Ch]
		inc	dword ptr [eax+4D8h]

loc_7F804567:				; CODE XREF: sub_7F8042DA+27Fj
		cmp	[ebp+var_20], 0
		jz	short loc_7F804578
		push	[ebp+var_20]
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		call	dword ptr [eax+8]

loc_7F804578:				; CODE XREF: sub_7F8042DA+291j
		mov	ecx, [ebp+arg_0]
		add	ecx, 0Ch
		mov	eax, [ecx]
		mov	eax, [eax+0A8h]
		mov	dword ptr [eax], 0F00h
		mov	eax, [ecx]
		sub	dword ptr [eax+0A8h], 4
		mov	eax, [ecx]
		dec	dword ptr [eax+4ACh]
		mov	esp, [ebp+ms_exc.old_esp]
		mov	eax, [ebp+var_1C]

loc_7F8045A3:				; DATA XREF: sub_7F8042DA+276o
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F8042DA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8045B6(int, HINSTANCE hInstance, int, int, int)
sub_7F8045B6	proc near		; CODE XREF: sub_7F8038C2+25p
					; sub_7F8042DA+1FAp

pguid		= GUID ptr -88h
var_78		= dword	ptr -78h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_40		= dword	ptr -40h
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_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
hInstance	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F801198
		push	offset sub_7F82FBD0
		push	eax
		mov	large fs:0, esp
		sub	esp, 78h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+var_2C], esi
		mov	[ebp+var_28], esi
		mov	[ebp+var_20], esi
		mov	[ebp+var_1C], 80004005h
		mov	[ebp+var_30], esi
		mov	[ebp+ms_exc.registration.TryLevel], esi
		mov	eax, [ebp+arg_10]
		cmp	eax, 5
		jz	short loc_7F80464F
		cmp	eax, 7
		jz	loc_7F804752
		mov	[ebp+var_1C], 80040302h

loc_7F80460C:				; CODE XREF: sub_7F8045B6+13Cj
					; sub_7F8045B6+17Aj ...
		mov	dword_7F8351C0,	0

loc_7F804616:				; CODE XREF: sub_7F8045B6+97j
		lea	eax, [ebp+var_30]
		push	eax
		push	[ebp+var_20]
		push	[ebp+var_28]
		push	[ebp+arg_8]
		mov	eax, [ebp+arg_8]
		mov	eax, [eax]
		call	dword ptr [eax+20h]
		test	eax, eax
		jge	loc_7F8047D8
		mov	[ebp+var_1C], eax
		push	eax		; dwInitParam
		push	[ebp+arg_8]	; int
		push	[ebp+hInstance]	; hInstance
		push	[ebp+arg_0]	; int
		call	sub_7F805168
		test	eax, eax
		jz	loc_7F8048E3
		jmp	short loc_7F804616
; ---------------------------------------------------------------------------

loc_7F80464F:				; CODE XREF: sub_7F8045B6+44j
		mov	edi, [ebp+arg_C]
		mov	dword_7F8351C0,	0

loc_7F80465C:				; CODE XREF: sub_7F8045B6+DDj
		lea	eax, [ebp+var_2C]
		push	eax
		push	offset unk_7F83D090
		push	dword ptr [edi+44h]
		push	dword ptr [edi+54h]
		push	dword ptr [edi+48h]
		call	sub_7F80F674
		mov	[ebp+var_1C], eax
		test	eax, eax
		jge	short loc_7F804695
		push	eax		; dwInitParam
		push	1102h		; uID
		push	[ebp+hInstance]	; hInstance
		push	[ebp+arg_0]	; int
		call	sub_7F80504F
		test	eax, eax
		jz	loc_7F8048E3
		jmp	short loc_7F80465C
; ---------------------------------------------------------------------------

loc_7F804695:				; CODE XREF: sub_7F8045B6+C2j
		push	offset unk_7F83D078
		push	[ebp+var_2C]
		call	sub_7F804D0C
		mov	dword_7F8351C0,	0

loc_7F8046AC:				; CODE XREF: sub_7F8045B6+127j
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		push	[ebp+var_2C]
		push	edi
		call	sub_7F80D1F3
		mov	[ebp+var_1C], eax
		test	eax, eax
		jge	short loc_7F8046DF
		push	eax		; dwInitParam
		push	1102h		; uID
		push	[ebp+hInstance]	; hInstance
		push	[ebp+arg_0]	; int
		call	sub_7F80504F
		test	eax, eax
		jz	loc_7F8048E3
		jmp	short loc_7F8046AC
; ---------------------------------------------------------------------------

loc_7F8046DF:				; CODE XREF: sub_7F8045B6+10Cj
		mov	edi, 300B0102h
		push	edi
		push	[ebp+var_28]
		push	[ebp+var_20]
		call	PpropFindProp@12
		test	eax, eax
		jnz	loc_7F80460C
		lea	eax, [ebp+pguid]
		push	eax		; pguid
		call	ds:CoCreateGuid
		mov	[ebp+var_78], edi
		mov	[ebp+var_70], 10h
		lea	eax, [ebp+pguid]
		mov	[ebp+var_6C], eax
		mov	dword_7F8351C0,	0

loc_7F804722:				; CODE XREF: sub_7F8045B6+19Aj
		lea	eax, [ebp+var_78]
		push	eax
		push	[ebp+arg_8]
		call	HrSetOneProp@8
		test	eax, eax
		jge	loc_7F80460C
		mov	[ebp+var_1C], eax
		push	eax		; dwInitParam
		push	[ebp+arg_8]	; int
		push	[ebp+hInstance]	; hInstance
		push	[ebp+arg_0]	; int
		call	sub_7F805168
		test	eax, eax
		jz	loc_7F8048E3
		jmp	short loc_7F804722
; ---------------------------------------------------------------------------

loc_7F804752:				; CODE XREF: sub_7F8045B6+49j
		mov	edi, [ebp+arg_C]
		mov	dword_7F8351C0,	0

loc_7F80475F:				; CODE XREF: sub_7F8045B6+1DFj
		lea	eax, [ebp+var_2C]
		push	eax
		push	offset unk_7F83D068
		push	dword ptr [edi+44h]
		push	0
		push	dword ptr [edi+48h]
		call	sub_7F80F674
		mov	[ebp+var_1C], eax
		test	eax, eax
		jge	short loc_7F804797
		push	eax		; dwInitParam
		push	1105h		; uID
		push	[ebp+hInstance]	; hInstance
		push	[ebp+arg_0]	; int
		call	sub_7F80504F
		test	eax, eax
		jz	loc_7F8048E3
		jmp	short loc_7F80475F
; ---------------------------------------------------------------------------

loc_7F804797:				; CODE XREF: sub_7F8045B6+1C4j
		mov	dword_7F8351C0,	0

loc_7F8047A1:				; CODE XREF: sub_7F8045B6+220j
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		push	[ebp+var_2C]
		push	edi
		call	sub_7F80DDB5
		mov	[ebp+var_1C], eax
		test	eax, eax
		jge	loc_7F80460C
		push	eax		; dwInitParam
		push	1105h		; uID
		push	[ebp+hInstance]	; hInstance
		push	[ebp+arg_0]	; int
		call	sub_7F80504F
		test	eax, eax
		jz	loc_7F8048E3
		jmp	short loc_7F8047A1
; ---------------------------------------------------------------------------

loc_7F8047D8:				; CODE XREF: sub_7F8045B6+77j
		cmp	[ebp+var_30], 0
		jz	short loc_7F804829
		mov	eax, [ebp+var_30]
		mov	eax, [eax]
		mov	[ebp+var_38], eax
		mov	edi, eax
		dec	[ebp+var_38]
		test	edi, edi
		jz	short loc_7F804829
		mov	ebx, [ebp+var_38]
		imul	ebx, 0Ch

loc_7F8047F5:				; CODE XREF: sub_7F8045B6+271j
		mov	eax, [ebp+var_30]
		lea	eax, [eax+ebx+4]
		cmp	dword ptr [eax+8], 8007000Eh
		jnz	short loc_7F80481C
		push	dword ptr [eax+4] ; int
		push	[ebp+arg_C]	; int
		push	[ebp+arg_8]	; int
		push	[ebp+hInstance]	; hInstance
		push	[ebp+arg_0]	; int
		call	sub_7F80493B
		mov	[ebp+var_1C], eax

loc_7F80481C:				; CODE XREF: sub_7F8045B6+24Dj
		mov	edi, [ebp+var_38]
		sub	ebx, 0Ch
		dec	[ebp+var_38]
		test	edi, edi
		jnz	short loc_7F8047F5

loc_7F804829:				; CODE XREF: sub_7F8045B6+226j
					; sub_7F8045B6+237j
		mov	[ebp+var_34], 0
		mov	eax, [ebp+var_34]
		cmp	eax, [ebp+var_28]
		jnb	short loc_7F804890
		lea	ebx, ds:0[eax*4]
		mov	edi, eax
		shl	edi, 4

loc_7F804844:				; CODE XREF: sub_7F8045B6+2D8j
		mov	eax, [ebp+var_20]
		add	eax, edi
		mov	[ebp+var_40], eax
		mov	eax, [eax]
		and	eax, 0FFFFh
		cmp	eax, 0Ah
		jnz	short loc_7F80487F
		mov	eax, [ebp+var_40]
		cmp	dword ptr [eax+8], 8007000Eh
		jnz	short loc_7F80487F
		mov	eax, [ebp+var_2C]
		push	dword ptr [eax+ebx+4] ;	int
		push	[ebp+arg_C]	; int
		push	[ebp+arg_8]	; int
		push	[ebp+hInstance]	; hInstance
		push	[ebp+arg_0]	; int
		call	sub_7F80493B
		mov	[ebp+var_1C], eax

loc_7F80487F:				; CODE XREF: sub_7F8045B6+2A0j
					; sub_7F8045B6+2ACj
		add	ebx, 4
		add	edi, 10h
		inc	[ebp+var_34]
		mov	eax, [ebp+var_34]
		cmp	eax, [ebp+var_28]
		jb	short loc_7F804844

loc_7F804890:				; CODE XREF: sub_7F8045B6+280j
		cmp	[ebp+arg_10], 5
		jnz	short loc_7F8048DC
		push	390040h
		push	[ebp+var_28]
		push	[ebp+var_20]
		call	PpropFindProp@12
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F8048DC
		mov	edi, 0E060040h
		push	edi
		push	[ebp+var_28]
		push	[ebp+var_20]
		call	PpropFindProp@12
		test	eax, eax
		jnz	short loc_7F8048DC
		mov	[ebp+var_68], edi
		mov	eax, [esi+8]
		mov	[ebp+var_60], eax
		mov	eax, [esi+0Ch]
		mov	[ebp+var_5C], eax
		lea	eax, [ebp+var_68]
		push	eax
		push	[ebp+arg_8]
		call	HrSetOneProp@8

loc_7F8048DC:				; CODE XREF: sub_7F8045B6+2DEj
					; sub_7F8045B6+2F4j ...
		mov	[ebp+var_1C], 0

loc_7F8048E3:				; CODE XREF: sub_7F8045B6+91j
					; sub_7F8045B6+D7j ...
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F804928

loc_7F8048EF:				; DATA XREF: .text:stru_7F801198o
		mov	esi, [ebp+arg_0] ; Finally handler 0 for function 7F8045B6
		add	esi, 0Ch
		push	[ebp+var_2C]
		mov	eax, [esi]
		call	dword ptr [eax+98h]
		cmp	[ebp+var_30], 0
		jz	short loc_7F804911
		push	[ebp+var_30]
		mov	eax, [esi]
		call	dword ptr [eax+98h]

loc_7F804911:				; CODE XREF: sub_7F8045B6+34Ej
		cmp	[ebp+var_20], 0
		jz	short loc_7F804922
		push	[ebp+var_20]
		mov	eax, [esi]
		call	dword ptr [eax+98h]

loc_7F804922:				; CODE XREF: sub_7F8045B6+35Fj
		mov	esp, [ebp+ms_exc.old_esp]
		mov	eax, [ebp+var_1C]

loc_7F804928:				; DATA XREF: sub_7F8045B6+334o
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F8045B6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80493B(int, HINSTANCE hInstance, int, int, int)
sub_7F80493B	proc near		; CODE XREF: sub_7F8045B6+25Ep
					; sub_7F8045B6+2C1p

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_24		= dword	ptr -24h
var_20		= dword	ptr -20h
dwInitParam	= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
hInstance	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F8011A8
		push	offset sub_7F82FBD0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		push	ebx
		push	esi
		push	edi
		mov	eax, 0FFFFFFFFh
		xor	edi, edi
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+var_24], edi
		mov	[ebp+var_20], edi
		mov	[ebp+var_30], eax
		mov	[ebp+var_2C], eax
		mov	[ebp+var_38], edi
		mov	[ebp+var_34], edi
		mov	[ebp+var_40], edi
		mov	[ebp+var_3C], edi
		mov	[ebp+dwInitParam], 80004005h
		mov	[ebp+ms_exc.registration.TryLevel], edi
		lea	eax, [ebp+var_24]
		push	eax
		push	edi
		push	edi
		push	offset dword_7F8019B0
		push	edi
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		call	sub_7F80F805
		mov	esi, eax
		mov	[ebp+dwInitParam], esi
		cmp	esi, edi
		jl	loc_7F804A55
		mov	dword_7F8351C0,	0
		mov	edi, [ebp+arg_0]
		mov	ebx, [ebp+arg_8]

loc_7F8049BE:				; CODE XREF: sub_7F80493B+B1j
		lea	eax, [ebp+var_20]
		push	eax
		push	0Bh
		push	0
		push	offset dword_7F8019B0
		push	[ebp+arg_10]
		push	ebx
		mov	eax, [ebx]
		call	dword ptr [eax+1Ch]
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F8049EE
		mov	[ebp+dwInitParam], esi
		push	esi		; dwInitParam
		push	ebx		; int
		push	[ebp+hInstance]	; hInstance
		push	edi		; int
		call	sub_7F805168
		test	eax, eax
		jz	short loc_7F804A55
		jmp	short loc_7F8049BE
; ---------------------------------------------------------------------------

loc_7F8049EE:				; CODE XREF: sub_7F80493B+9Dj
		mov	dword_7F8351C0,	0

loc_7F8049F8:				; CODE XREF: sub_7F80493B+103j
					; sub_7F80493B+118j
		lea	eax, [ebp+var_40]
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		push	[ebp+var_2C]
		push	[ebp+var_30]
		push	[ebp+var_20]
		push	[ebp+var_24]
		call	sub_7F80E04F
		mov	esi, eax
		mov	[ebp+dwInitParam], esi
		test	esi, esi
		jge	short loc_7F804A55
		mov	eax, [edi+0Ch]
		mov	eax, [eax+0A8h]
		cmp	dword ptr [eax], 0F06h
		jnz	short loc_7F804A40
		push	esi		; dwInitParam
		push	1105h		; uID
		push	[ebp+hInstance]	; hInstance
		push	edi		; int
		call	sub_7F80504F
		test	eax, eax
		jz	short loc_7F804A55
		jmp	short loc_7F8049F8
; ---------------------------------------------------------------------------

loc_7F804A40:				; CODE XREF: sub_7F80493B+EEj
		push	[ebp+dwInitParam] ; dwInitParam
		push	1102h		; uID
		push	[ebp+hInstance]	; hInstance
		push	edi		; int
		call	sub_7F80504F
		test	eax, eax
		jnz	short loc_7F8049F8

loc_7F804A55:				; CODE XREF: sub_7F80493B+6Dj
					; sub_7F80493B+AFj ...
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F804A80

loc_7F804A61:				; DATA XREF: .text:stru_7F8011A8o
		push	[ebp+var_24]	; Finally handler 0 for	function 7F80493B
		call	sub_7F80E024
		cmp	[ebp+var_20], 0
		jz	short loc_7F804A7A
		push	[ebp+var_20]
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		call	dword ptr [eax+8]

loc_7F804A7A:				; CODE XREF: sub_7F80493B+132j
		mov	esp, [ebp+ms_exc.old_esp]
		mov	eax, [ebp+dwInitParam]

loc_7F804A80:				; DATA XREF: sub_7F80493B+121o
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F80493B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F804A93(int, int, int, int, LPCSTR	lpString1, int)
sub_7F804A93	proc near		; CODE XREF: sub_7F802DB7+4DAp

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_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
lpString1	= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F8011B8
		push	offset sub_7F82FBD0
		push	eax
		xor	eax, eax
		mov	large fs:0, esp
		sub	esp, 24h
		mov	[ebp+var_24], eax
		mov	[ebp+var_1C], eax
		push	ebx
		mov	[ebp+var_2C], eax
		push	esi
		mov	[ebp+var_28], eax
		push	edi
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+ms_exc.registration.TryLevel], eax
		cmp	[ebp+arg_8], eax
		jnz	short loc_7F804AF7
		push	offset unk_7F83D080
		push	eax
		mov	esi, [ebp+arg_C]
		push	esi
		lea	eax, [ebp+arg_8]
		push	eax
		mov	edi, [ebp+arg_0]
		push	edi
		call	sub_7F804C4A
		test	eax, eax
		jz	loc_7F804BFE
		mov	[ebp+var_2C], 1
		jmp	short loc_7F804AFD
; ---------------------------------------------------------------------------

loc_7F804AF7:				; CODE XREF: sub_7F804A93+3Aj
		mov	edi, [ebp+arg_0]
		mov	esi, [ebp+arg_C]

loc_7F804AFD:				; CODE XREF: sub_7F804A93+62j
		mov	dword_7F8351C0,	0

loc_7F804B07:				; CODE XREF: sub_7F804A93+9Dj
		xor	ebx, ebx
		push	ebx
		push	ebx
		push	ebx
		push	[ebp+arg_8]
		mov	eax, [ebp+arg_8]
		mov	eax, [eax]
		call	dword ptr [eax+28h]
		cmp	eax, ebx
		jge	short loc_7F804B59
		push	eax		; dwInitParam
		push	[ebp+arg_8]	; int
		push	dword ptr [edi+8] ; hInstance
		push	edi		; int
		call	sub_7F805168
		test	eax, eax
		jz	loc_7F804BFE
		jmp	short loc_7F804B07
; ---------------------------------------------------------------------------

loc_7F804B32:				; CODE XREF: sub_7F804A93+E5j
		mov	eax, [ebp+var_1C]
		xor	ebx, ebx
		cmp	[eax], ebx
		jz	short loc_7F804B8D
		mov	eax, [eax+0Ch]
		push	dword ptr [eax+18h] ; lpString2
		push	[ebp+lpString1]	; lpString1
		call	ds:lstrcmpiA
		test	eax, eax
		jz	short loc_7F804B8D
		push	[ebp+var_1C]
		call	FreeProws@4
		mov	[ebp+var_1C], ebx

loc_7F804B59:				; CODE XREF: sub_7F804A93+86j
		mov	dword_7F8351C0,	0

loc_7F804B63:				; CODE XREF: sub_7F804A93+F8j
		lea	eax, [ebp+var_1C]
		push	eax
		push	0
		push	1
		push	[ebp+arg_8]
		mov	eax, [ebp+arg_8]
		mov	eax, [eax]
		call	dword ptr [eax+4Ch]
		test	eax, eax
		jge	short loc_7F804B32
		push	eax		; dwInitParam
		push	[ebp+arg_8]	; int
		push	dword ptr [edi+8] ; hInstance
		push	edi		; int
		call	sub_7F805168
		test	eax, eax
		jz	short loc_7F804BFE
		jmp	short loc_7F804B63
; ---------------------------------------------------------------------------

loc_7F804B8D:				; CODE XREF: sub_7F804A93+A6j
					; sub_7F804A93+B9j
		xor	eax, eax
		cmp	[ebp+var_1C], eax
		jz	short loc_7F804BF7
		mov	ecx, [ebp+var_1C]
		cmp	[ecx], eax
		jz	short loc_7F804BF7
		mov	dword_7F8351C0,	eax
		mov	ebx, [ebp+var_34]

loc_7F804BA3:				; CODE XREF: sub_7F804A93+142j
		mov	eax, [ebp+var_1C]
		mov	ebx, [eax+0Ch]
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_30]
		push	eax
		push	[ebp+arg_14]
		push	0
		push	dword ptr [ebx+0Ch]
		push	dword ptr [ebx+8]
		push	esi
		mov	eax, [esi]
		call	dword ptr [eax+40h]
		test	eax, eax
		jge	short loc_7F804BD7
		push	eax		; dwInitParam
		push	esi		; int
		push	dword ptr [edi+8] ; hInstance
		push	edi		; int
		call	sub_7F805168
		test	eax, eax
		jz	short loc_7F804BFE
		jmp	short loc_7F804BA3
; ---------------------------------------------------------------------------

loc_7F804BD7:				; CODE XREF: sub_7F804A93+131j
		cmp	[ebp+var_30], 3
		jz	short loc_7F804BF7
		cmp	[ebp+var_24], 0
		jz	short loc_7F804BEE
		push	[ebp+var_24]
		mov	eax, [ebp+var_24]
		mov	eax, [eax]
		call	dword ptr [eax+8]

loc_7F804BEE:				; CODE XREF: sub_7F804A93+14Ej
		mov	[ebp+var_24], 0
		jmp	short loc_7F804BFE
; ---------------------------------------------------------------------------

loc_7F804BF7:				; CODE XREF: sub_7F804A93+FFj
					; sub_7F804A93+106j ...
		mov	[ebp+var_28], 1

loc_7F804BFE:				; CODE XREF: sub_7F804A93+55j
					; sub_7F804A93+97j ...
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F804C37

loc_7F804C0A:				; DATA XREF: .text:stru_7F8011B8o
		mov	ecx, [ebp+var_24] ; Finally handler 0 for function 7F804A93
		mov	eax, [ebp+arg_4]
		mov	[eax], ecx
		cmp	[ebp+var_2C], 0
		jz	short loc_7F804C29
		cmp	[ebp+arg_8], 0
		jz	short loc_7F804C29
		push	[ebp+arg_8]
		mov	eax, [ebp+arg_8]
		mov	eax, [eax]
		call	dword ptr [eax+8]

loc_7F804C29:				; CODE XREF: sub_7F804A93+183j
					; sub_7F804A93+189j
		push	[ebp+var_1C]
		call	FreeProws@4
		mov	esp, [ebp+ms_exc.old_esp]
		mov	eax, [ebp+var_28]

loc_7F804C37:				; DATA XREF: sub_7F804A93+172o
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F804A93	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F804C4A	proc near		; CODE XREF: sub_7F802DB7+2A2p
					; sub_7F804A93+4Ep

var_20		= dword	ptr -20h
ms_exc		= CPPEH_RECORD ptr -18h
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

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F8011C8
		push	offset sub_7F82FBD0
		push	eax
		xor	eax, eax
		mov	large fs:0, esp
		sub	esp, 10h
		mov	[ebp+var_20], eax
		push	ebx
		push	esi
		push	edi
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+ms_exc.registration.TryLevel], eax
		mov	dword_7F8351C0,	eax
		mov	esi, [ebp+arg_0]
		mov	edi, [ebp+arg_4]
		mov	ebx, [ebp+arg_8]

loc_7F804C86:				; CODE XREF: sub_7F804C4A+60j
		push	edi
		push	[ebp+arg_C]
		push	ebx
		mov	eax, [ebx]
		call	dword ptr [eax+3Ch]
		test	eax, eax
		jz	short loc_7F804CB2
		cmp	eax, 80040102h
		jz	short loc_7F804CAC
		push	eax		; dwInitParam
		push	ebx		; int
		push	dword ptr [esi+8] ; hInstance
		push	esi		; int
		call	sub_7F805168
		test	eax, eax
		jz	short loc_7F804CE7
		jmp	short loc_7F804C86
; ---------------------------------------------------------------------------

loc_7F804CAC:				; CODE XREF: sub_7F804C4A+4Fj
		mov	dword ptr [edi], 0

loc_7F804CB2:				; CODE XREF: sub_7F804C4A+48j
		mov	dword_7F8351C0,	0

loc_7F804CBC:				; CODE XREF: sub_7F804C4A+94j
		push	0
		push	[ebp+arg_10]
		push	dword ptr [edi]
		mov	eax, [edi]
		mov	eax, [eax]
		call	dword ptr [eax+1Ch]
		test	eax, eax
		jge	short loc_7F804CE0
		push	eax		; dwInitParam
		push	dword ptr [edi]	; int
		push	dword ptr [esi+8] ; hInstance
		push	esi		; int
		call	sub_7F805168
		test	eax, eax
		jz	short loc_7F804CE7
		jmp	short loc_7F804CBC
; ---------------------------------------------------------------------------

loc_7F804CE0:				; CODE XREF: sub_7F804C4A+82j
		mov	[ebp+var_20], 1

loc_7F804CE7:				; CODE XREF: sub_7F804C4A+5Ej
					; sub_7F804C4A+92j
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F804CF9

loc_7F804CF3:				; DATA XREF: .text:stru_7F8011C8o
		mov	esp, [ebp+ms_exc.old_esp] ; Finally handler 0 for function 7F804C4A
		mov	eax, [ebp+var_20]

loc_7F804CF9:				; DATA XREF: sub_7F804C4A+A4o
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F804C4A	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F804D0C	proc near		; CODE XREF: sub_7F8045B6+E7p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	ebx
		mov	edx, [esp+4+arg_0]
		push	esi
		push	edi
		mov	eax, [eax]
		push	ebp
		cmp	[edx], eax
		jnb	short loc_7F804D22
		xor	eax, eax
		jmp	short loc_7F804D64
; ---------------------------------------------------------------------------

loc_7F804D22:				; CODE XREF: sub_7F804D0C+10j
		xor	esi, esi
		test	eax, eax
		jz	short loc_7F804D62
		mov	edi, [esp+10h+arg_4]
		add	edi, 4

loc_7F804D2F:				; CODE XREF: sub_7F804D0C+54j
		xor	ebx, ebx
		mov	eax, [edx]
		cmp	eax, ebx
		jz	short loc_7F804D56
		lea	ebp, [edx+4]

loc_7F804D3A:				; CODE XREF: sub_7F804D0C+3Bj
		mov	ecx, [edi]
		cmp	[ebp+0], ecx
		jz	short loc_7F804D4B
		add	ebp, 4
		inc	ebx
		cmp	eax, ebx
		ja	short loc_7F804D3A
		jmp	short loc_7F804D56
; ---------------------------------------------------------------------------

loc_7F804D4B:				; CODE XREF: sub_7F804D0C+33j
		dec	eax
		mov	[edx], eax
		mov	ecx, [edx+eax*4+4]
		mov	[edx+ebx*4+4], ecx

loc_7F804D56:				; CODE XREF: sub_7F804D0C+29j
					; sub_7F804D0C+3Dj
		mov	eax, [esp+10h+arg_4]
		add	edi, 4
		inc	esi
		cmp	[eax], esi
		ja	short loc_7F804D2F

loc_7F804D62:				; CODE XREF: sub_7F804D0C+1Aj
		mov	eax, [edx]

loc_7F804D64:				; CODE XREF: sub_7F804D0C+14j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F804D0C	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F804D6B(int, HINSTANCE hInstance, int)
sub_7F804D6B	proc near		; CODE XREF: sub_7F80397D+71p
					; sub_7F803DCD+AAp

arg_0		= dword	ptr  4
hInstance	= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		push	edi
		mov	esi, 80004005h
		mov	edi, [esp+0Ch+arg_0]
		push	ebp
		mov	ebx, [edi]
		test	ebx, ebx
		jz	loc_7F804E2E
		lea	ebp, [ebx+0Ch]
		mov	eax, [ebp+0]
		add	dword ptr [eax+0A8h], 4
		mov	eax, [ebp+0]
		inc	dword ptr [eax+4ACh]
		xor	eax, eax
		mov	ecx, [ebp+0]
		mov	edx, [ecx+0A8h]
		mov	dword ptr [edx], 0F07h
		cmp	[ebx+24h], eax
		jz	short loc_7F804DDE
		cmp	[esp+10h+arg_8], eax
		jz	short loc_7F804DDE
		mov	dword_7F8351C0,	eax

loc_7F804DB9:				; CODE XREF: sub_7F804D6B+6Fj
		mov	eax, [ebx+14h]
		push	0
		push	eax
		mov	esi, [eax]
		call	dword ptr [esi+10h]
		mov	esi, eax
		test	esi, esi
		jge	short loc_7F804DE7
		push	esi		; dwInitParam
		push	dword ptr [ebx+14h] ; int
		push	[esp+18h+hInstance] ; hInstance
		push	ebx		; int
		call	sub_7F805168
		test	eax, eax
		jnz	short loc_7F804DB9
		jmp	short loc_7F804DE7
; ---------------------------------------------------------------------------

loc_7F804DDE:				; CODE XREF: sub_7F804D6B+41j
					; sub_7F804D6B+47j
		cmp	[esp+10h+arg_8], 0
		jnz	short loc_7F804DE7
		xor	esi, esi

loc_7F804DE7:				; CODE XREF: sub_7F804D6B+5Dj
					; sub_7F804D6B+71j ...
		mov	eax, [ebx+14h]
		test	eax, eax
		jz	short loc_7F804DF4
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]

loc_7F804DF4:				; CODE XREF: sub_7F804D6B+81j
		mov	eax, [ebp+0]
		push	dword ptr [ebx+1Ch]
		call	dword ptr [eax+98h]
		mov	ecx, [ebp+0]
		push	ebx
		mov	edx, [ecx+0A8h]
		mov	dword ptr [edx], 0F00h
		mov	ecx, [ebp+0]
		sub	dword ptr [ecx+0A8h], 4
		mov	eax, [ebp+0]
		dec	dword ptr [eax+4ACh]
		call	MAPIFreeBuffer@4
		mov	dword ptr [edi], 0

loc_7F804E2E:				; CODE XREF: sub_7F804D6B+11j
		mov	eax, esi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_7F804D6B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F804E37(int, HINSTANCE hInstance, int, int)
sub_7F804E37	proc near		; CODE XREF: sub_7F804058+1FDp
					; sub_7F8042DA+233p

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
hInstance	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F8011D8
		push	offset sub_7F82FBD0
		push	eax
		xor	eax, eax
		mov	large fs:0, esp
		sub	esp, 10h
		mov	[ebp+var_1C], eax
		push	ebx
		push	esi
		push	edi
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+ms_exc.registration.TryLevel], eax
		mov	esi, [ebp+arg_8]
		cmp	esi, eax
		jz	short loc_7F804E9B
		cmp	[ebp+arg_C], eax
		jz	short loc_7F804E95
		mov	dword_7F8351C0,	eax

loc_7F804E76:				; CODE XREF: sub_7F804E37+5Cj
		push	0
		push	esi
		mov	eax, [esi]
		call	dword ptr [eax+10h]
		test	eax, eax
		jz	short loc_7F804E95
		push	eax		; dwInitParam
		push	esi		; int
		push	[ebp+hInstance]	; hInstance
		push	[ebp+arg_0]	; int
		call	sub_7F805168
		test	eax, eax
		jz	short loc_7F804EA2
		jmp	short loc_7F804E76
; ---------------------------------------------------------------------------

loc_7F804E95:				; CODE XREF: sub_7F804E37+38j
					; sub_7F804E37+49j
		push	esi
		mov	eax, [esi]
		call	dword ptr [eax+8]

loc_7F804E9B:				; CODE XREF: sub_7F804E37+33j
		mov	[ebp+var_1C], 1

loc_7F804EA2:				; CODE XREF: sub_7F804E37+5Aj
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F804EB4

loc_7F804EAE:				; DATA XREF: .text:stru_7F8011D8o
		mov	esp, [ebp+ms_exc.old_esp] ; Finally handler 0 for function 7F804E37
		mov	eax, [ebp+var_1C]

loc_7F804EB4:				; DATA XREF: sub_7F804E37+72o
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F804E37	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F804EC7	proc near		; CODE XREF: sub_7F80504F+68p
					; sub_7F805168+CDp

String2		= byte ptr -580h
String1		= byte ptr -480h
Buffer		= byte ptr -80h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		xor	ecx, ecx
		mov	ebp, esp
		sub	esp, 580h
		cmp	dword_7F835290,	ecx
		push	esi
		push	edi
		mov	[ebp+String1], cl
		jz	short loc_7F804F29
		mov	eax, dword_7F835290
		cmp	[eax+8], ecx
		jz	short loc_7F804F29
		push	80h		; cchBufferMax
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		mov	esi, [ebp+arg_0]
		push	1534h		; uID
		push	dword ptr [esi+8] ; hInstance
		call	ds:LoadStringA
		mov	eax, dword_7F835290
		lea	edx, [ebp+Buffer]
		push	dword ptr [eax+8]
		push	edx
		push	offset aSS	; "%s:	%s\r\n"
		lea	eax, [ebp+String1]
		push	eax		; LPSTR
		call	ds:wsprintfA
		add	esp, 10h
		jmp	short loc_7F804F2C
; ---------------------------------------------------------------------------

loc_7F804F29:				; CODE XREF: sub_7F804EC7+19j
					; sub_7F804EC7+23j
		mov	esi, [ebp+arg_0]

loc_7F804F2C:				; CODE XREF: sub_7F804EC7+60j
		lea	edi, [esi+4F8h]
		cmp	dword ptr [edi], 0
		jz	short loc_7F804F6A
		push	80h		; cchBufferMax
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		push	152Fh		; uID
		push	dword ptr [esi+8] ; hInstance
		call	ds:LoadStringA
		lea	edx, [ebp+Buffer]
		lea	eax, [ebp+String1]
		push	dword ptr [edi]
		push	edx
		push	eax
		push	offset aSSS	; "%s%s:  %s\r\n"
		push	eax		; LPSTR
		call	ds:wsprintfA
		add	esp, 14h

loc_7F804F6A:				; CODE XREF: sub_7F804EC7+6Ej
		mov	edi, [ebp+arg_8]
		test	edi, edi
		jz	short loc_7F804FA3
		push	80h		; cchBufferMax
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		push	1530h		; uID
		push	dword ptr [esi+8] ; hInstance
		call	ds:LoadStringA
		push	edi
		lea	ecx, [ebp+Buffer]
		push	ecx
		lea	eax, [ebp+String1]
		push	eax
		push	offset aSSS_0	; "%s%s: %s\r\n"
		push	eax		; LPSTR
		call	ds:wsprintfA
		add	esp, 14h

loc_7F804FA3:				; CODE XREF: sub_7F804EC7+A8j
		push	[ebp+arg_4]
		lea	ecx, [ebp+String1]
		push	ecx
		push	offset aSS_0	; "%s%s\r\n"
		push	ecx		; LPSTR
		call	ds:wsprintfA
		add	esp, 10h
		cmp	dword ptr [esi+88h], 0
		jz	short loc_7F804FED
		cmp	dword ptr [esi+8Ch], 0
		jnz	short loc_7F804FED
		mov	eax, [esi+9Ch]
		lea	ecx, [ebp+String1]
		and	eax, 20000000h
		shr	eax, 1Dh
		push	eax		; int
		push	ecx		; lpString
		call	sub_7F80549A
		test	eax, eax
		jnz	short loc_7F805041

loc_7F804FED:				; CODE XREF: sub_7F804EC7+FCj
					; sub_7F804EC7+105j
		push	100h		; cchBufferMax
		lea	eax, [ebp+String2]
		push	eax		; lpBuffer
		push	1005h		; uID
		push	dword ptr [esi+8] ; hInstance
		call	ds:LoadStringA
		lea	ecx, [ebp+String2]
		lea	edx, [ebp+String1]
		push	ecx		; lpString2
		push	edx		; lpString1
		call	ds:lstrcatA
		push	2001h		; uType
		lea	ecx, [ebp+String1]
		push	offset Caption	; lpCaption
		push	ecx		; lpText
		push	dword ptr [esi+4] ; hWnd
		call	ds:MessageBoxA
		cmp	eax, 2
		jnz	short loc_7F805041
		mov	dword ptr [esi+0Ch], 2

loc_7F805041:				; CODE XREF: sub_7F804EC7+124j
					; sub_7F804EC7+171j
		pop	edi
		inc	dword_7F833FB0
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F804EC7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80504F(int, HINSTANCE hInstance, UINT uID, LPARAM	dwInitParam)
sub_7F80504F	proc near		; CODE XREF: sub_7F802DB7+36Bp
					; sub_7F8035B3+F0p ...

var_400		= byte ptr -400h
Buffer		= byte ptr -200h
arg_0		= dword	ptr  8
hInstance	= dword	ptr  0Ch
uID		= dword	ptr  10h
dwInitParam	= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 400h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	esi, [ebp+arg_0]
		cmp	[esi], ebx
		jz	short loc_7F80506A
		mov	ebx, [esi+20h]
		mov	esi, [esi+0Ch]

loc_7F80506A:				; CODE XREF: sub_7F80504F+13j
		lea	edi, [ebp+Buffer]
		xor	eax, eax
		mov	ecx, 80h
		push	200h		; cchBufferMax
		rep stosd
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		push	[ebp+uID]	; uID
		push	dword ptr [esi+8] ; hInstance
		call	ds:LoadStringA
		mov	edi, [ebp+dwInitParam]
		lea	eax, [ebp+Buffer]
		push	edi
		lea	ecx, [ebp+var_400]
		push	eax		; LPCSTR
		push	ecx		; LPSTR
		call	ds:wsprintfA
		add	esp, 0Ch
		lea	ecx, [ebp+var_400]
		push	0
		push	ebx
		push	ecx
		push	esi
		call	sub_7F804EC7
		test	byte ptr [esi+0Ch], 2
		jnz	loc_7F80515D
		cmp	edi, 80040115h
		jz	short loc_7F8050DE
		cmp	edi, 80040116h
		jz	short loc_7F8050DE
		cmp	edi, 8004010Dh
		jnz	short loc_7F80515D

loc_7F8050DE:				; CODE XREF: sub_7F80504F+7Dj
					; sub_7F80504F+85j
		cmp	dword_7F8351C0,	5
		jnb	short loc_7F80511D
		push	1F4h		; dwMilliseconds
		call	ds:Sleep
		cmp	dword ptr [esi+88h], 0
		jz	short loc_7F805110
		test	byte ptr [esi+9Fh], 20h
		jz	short loc_7F805110
		push	0		; int
		push	40000003h	; dwEventID
		call	sub_7F805583

loc_7F805110:				; CODE XREF: sub_7F80504F+AAj
					; sub_7F80504F+B3j
		mov	eax, 1
		inc	dword_7F8351C0
		jmp	short loc_7F80515F
; ---------------------------------------------------------------------------

loc_7F80511D:				; CODE XREF: sub_7F80504F+96j
		push	edi		; dwInitParam
		push	offset DialogFunc ; lpDialogFunc
		push	dword ptr [esi+4] ; hWndParent
		push	41Ah		; lpTemplateName
		push	[ebp+hInstance]	; hInstance
		call	ds:DialogBoxParamA
		test	eax, eax
		jz	short loc_7F80515D
		cmp	dword ptr [esi+88h], 0
		jz	short loc_7F805156
		test	byte ptr [esi+9Fh], 20h
		jz	short loc_7F805156
		push	0		; int
		push	40000003h	; dwEventID
		call	sub_7F805583

loc_7F805156:				; CODE XREF: sub_7F80504F+F0j
					; sub_7F80504F+F9j
		mov	eax, 1
		jmp	short loc_7F80515F
; ---------------------------------------------------------------------------

loc_7F80515D:				; CODE XREF: sub_7F80504F+71j
					; sub_7F80504F+8Dj ...
		xor	eax, eax

loc_7F80515F:				; CODE XREF: sub_7F80504F+CCj
					; sub_7F80504F+10Cj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F80504F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F805168(int, HINSTANCE hInstance, int, LPARAM dwInitParam)
sub_7F805168	proc near		; CODE XREF: sub_7F802DB7+E9p
					; sub_7F802DB7+130p ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
lpBuffer	= dword	ptr -4
arg_0		= dword	ptr  8
hInstance	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
dwInitParam	= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		mov	esi, [ebp+arg_0]
		mov	[ebp+lpBuffer],	ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_C], ebx
		cmp	[esi], ebx
		jz	short loc_7F80518B
		mov	edi, [esi+20h]
		mov	esi, [esi+0Ch]

loc_7F80518B:				; CODE XREF: sub_7F805168+1Bj
		lea	eax, [ebp+var_8]
		push	eax
		push	0
		push	[ebp+dwInitParam]
		mov	eax, [ebp+arg_8]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+0Ch]
		cmp	[ebp+var_8], 0
		jz	short loc_7F8051CA
		mov	eax, [ebp+var_8]
		mov	ecx, [eax+4]
		mov	[ebp+lpBuffer],	ecx
		test	ecx, ecx
		mov	ebx, [eax+8]
		jz	short loc_7F8051B8
		cmp	byte ptr [ecx],	0
		jnz	short loc_7F8051BF

loc_7F8051B8:				; CODE XREF: sub_7F805168+49j
		mov	[ebp+lpBuffer],	0

loc_7F8051BF:				; CODE XREF: sub_7F805168+4Ej
		test	ebx, ebx
		jz	short loc_7F8051C8
		cmp	byte ptr [ebx],	0
		jnz	short loc_7F8051CA

loc_7F8051C8:				; CODE XREF: sub_7F805168+59j
		xor	ebx, ebx

loc_7F8051CA:				; CODE XREF: sub_7F805168+39j
					; sub_7F805168+5Ej
		cmp	[ebp+lpBuffer],	0
		jnz	short loc_7F805221
		lea	eax, [ebp+lpBuffer]
		push	eax
		push	100h
		call	dword ptr [esi+90h]
		test	eax, eax
		jnz	short loc_7F805221
		push	100h		; cchBufferMax
		mov	eax, [ebp+dwInitParam]
		push	[ebp+lpBuffer]	; lpBuffer
		and	eax, 0FFFh
		add	eax, 1300h
		push	eax		; uID
		push	dword ptr [esi+8] ; hInstance
		call	ds:LoadStringA
		test	eax, eax
		jnz	short loc_7F80521A
		push	[ebp+dwInitParam]
		push	offset aMapiError08lx ;	"MAPI Error: %08lX"
		push	[ebp+lpBuffer]	; LPSTR
		call	ds:wsprintfA
		add	esp, 0Ch

loc_7F80521A:				; CODE XREF: sub_7F805168+9Cj
		mov	[ebp+var_C], 1

loc_7F805221:				; CODE XREF: sub_7F805168+66j
					; sub_7F805168+79j
		push	[ebp+dwInitParam]
		call	sub_7F802C5D
		push	ebx
		mov	[esi+8Ch], eax
		push	edi
		push	[ebp+lpBuffer]
		push	esi
		call	sub_7F804EC7
		cmp	[ebp+var_8], 0
		jz	short loc_7F805249
		push	[ebp+var_8]
		call	dword ptr [esi+98h]

loc_7F805249:				; CODE XREF: sub_7F805168+D6j
		cmp	[ebp+var_C], 0
		jz	short loc_7F805258
		push	[ebp+lpBuffer]
		call	dword ptr [esi+98h]

loc_7F805258:				; CODE XREF: sub_7F805168+E5j
		test	byte ptr [esi+0Ch], 2
		jnz	loc_7F805302
		cmp	[ebp+dwInitParam], 80040115h
		jz	short loc_7F805281
		cmp	[ebp+dwInitParam], 80040116h
		jz	short loc_7F805281
		cmp	[ebp+dwInitParam], 8004010Dh
		jnz	loc_7F805302

loc_7F805281:				; CODE XREF: sub_7F805168+101j
					; sub_7F805168+10Aj
		cmp	dword_7F8351C0,	5
		jnb	short loc_7F8052C0
		push	1F4h		; dwMilliseconds
		call	ds:Sleep
		cmp	dword ptr [esi+88h], 0
		jz	short loc_7F8052B3
		test	byte ptr [esi+9Fh], 20h
		jz	short loc_7F8052B3
		push	0		; int
		push	40000003h	; dwEventID
		call	sub_7F805583

loc_7F8052B3:				; CODE XREF: sub_7F805168+134j
					; sub_7F805168+13Dj
		mov	eax, 1
		inc	dword_7F8351C0
		jmp	short loc_7F805304
; ---------------------------------------------------------------------------

loc_7F8052C0:				; CODE XREF: sub_7F805168+120j
		push	[ebp+dwInitParam] ; dwInitParam
		push	offset DialogFunc ; lpDialogFunc
		push	dword ptr [esi+4] ; hWndParent
		push	41Ah		; lpTemplateName
		push	[ebp+hInstance]	; hInstance
		call	ds:DialogBoxParamA
		test	eax, eax
		jz	short loc_7F805302
		cmp	dword ptr [esi+88h], 0
		jz	short loc_7F8052FB
		test	byte ptr [esi+9Fh], 20h
		jz	short loc_7F8052FB
		push	0		; int
		push	40000003h	; dwEventID
		call	sub_7F805583

loc_7F8052FB:				; CODE XREF: sub_7F805168+17Cj
					; sub_7F805168+185j
		mov	eax, 1
		jmp	short loc_7F805304
; ---------------------------------------------------------------------------

loc_7F805302:				; CODE XREF: sub_7F805168+F4j
					; sub_7F805168+113j ...
		xor	eax, eax

loc_7F805304:				; CODE XREF: sub_7F805168+156j
					; sub_7F805168+198j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F805168	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80530D(int, HINSTANCE hInstance, int)
sub_7F80530D	proc near		; CODE XREF: ScMMFMigrateToMDB@48+14Ep
					; sub_7F807D9C+257p ...

var_20		= dword	ptr -20h
lpString2	= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
hInstance	= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F8011E8
		push	offset sub_7F82FBD0
		push	eax
		xor	eax, eax
		mov	large fs:0, esp
		sub	esp, 10h
		mov	[ebp+lpString2], eax
		mov	[ebp+var_20], eax
		push	ebx
		push	esi
		push	edi
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+ms_exc.registration.TryLevel], eax
		cmp	[ebp+arg_8], eax
		jz	short loc_7F805353
		push	[ebp+hInstance]	; hInstance
		call	sub_7F80560A
		mov	[ebp+var_20], eax
		jmp	loc_7F8053DE
; ---------------------------------------------------------------------------

loc_7F805353:				; CODE XREF: sub_7F80530D+34j
		push	5Ch
		push	[ebp+arg_0]
		call	sub_7F82FCB0
		add	esp, 8
		mov	[ebp+lpString2], eax
		test	eax, eax
		jz	short loc_7F80536C
		inc	[ebp+lpString2]
		jmp	short loc_7F805372
; ---------------------------------------------------------------------------

loc_7F80536C:				; CODE XREF: sub_7F80530D+58j
		mov	eax, [ebp+arg_0]
		mov	[ebp+lpString2], eax

loc_7F805372:				; CODE XREF: sub_7F80530D+5Dj
		push	[ebp+lpString2]	; lpString2
		mov	esi, offset FileName
		push	esi		; lpString1
		call	ds:lstrcpyA
		push	2Eh
		push	esi
		call	sub_7F82FCB0
		add	esp, 8
		mov	[ebp+lpString2], eax
		test	eax, eax
		jz	short loc_7F8053A1
		push	offset a_log	; ".log"
		push	eax		; lpString1
		call	ds:lstrcpyA
		jmp	short loc_7F8053B1
; ---------------------------------------------------------------------------

loc_7F8053A1:				; CODE XREF: sub_7F80530D+84j
		push	offset a_log_0	; ".LOG"
		push	offset FileName	; lpString1
		call	ds:lstrcatA

loc_7F8053B1:				; CODE XREF: sub_7F80530D+92j
		xor	eax, eax
		push	eax		; hTemplateFile
		push	8000080h	; dwFlagsAndAttributes
		push	2		; dwCreationDisposition
		push	eax		; lpSecurityAttributes
		push	eax		; dwShareMode
		push	0C0000000h	; dwDesiredAccess
		push	offset FileName	; lpFileName
		call	ds:CreateFileA
		mov	hFile, eax
		cmp	eax, 0FFFFFFFFh
		jz	short loc_7F8053DE
		mov	[ebp+var_20], 1

loc_7F8053DE:				; CODE XREF: sub_7F80530D+41j
					; sub_7F80530D+C8j
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F8053F0

loc_7F8053EA:				; DATA XREF: .text:stru_7F8011E8o
		mov	esp, [ebp+ms_exc.old_esp] ; Finally handler 0 for function 7F80530D
		mov	eax, [ebp+var_20]

loc_7F8053F0:				; DATA XREF: sub_7F80530D+D8o
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F80530D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F805403	proc near		; CODE XREF: ScMMFMigrateToMDB@48+2F3p
					; sub_7F807D9C+332p

ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F8011F8
		push	offset sub_7F82FBD0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	[ebp+ms_exc.registration.TryLevel], esi
		cmp	[ebp+arg_0], esi
		jnz	short loc_7F805463
		cmp	hFile, 0FFFFFFFFh
		jz	short loc_7F805463
		push	esi		; lpFileSizeHigh
		mov	eax, hFile
		push	eax		; hFile
		call	ds:GetFileSize
		mov	edi, eax
		mov	eax, hFile
		push	eax		; hObject
		call	ds:CloseHandle
		test	edi, edi
		jnz	short loc_7F805463
		push	offset FileName	; lpFileName
		call	ds:DeleteFileA

loc_7F805463:				; CODE XREF: sub_7F805403+2Bj
					; sub_7F805403+34j ...
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F805488

loc_7F80546F:				; DATA XREF: .text:stru_7F8011F8o
		mov	hFile, 0FFFFFFFFh ; Finally handler 0 for function 7F805403
		mov	edi, offset FileName
		xor	eax, eax
		mov	ecx, 41h
		rep stosd
		retn
; ---------------------------------------------------------------------------

loc_7F805488:				; DATA XREF: sub_7F805403+67o
		mov	eax, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, eax
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F805403	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80549A(LPCSTR lpString, int)
sub_7F80549A	proc near		; CODE XREF: sub_7F804EC7+11Dp
					; sub_7F80B343+2Ep

NumberOfBytesWritten= dword ptr	-20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
lpString	= dword	ptr  8
arg_4		= dword	ptr  0Ch

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F801208
		push	offset sub_7F82FBD0
		push	eax
		xor	eax, eax
		mov	large fs:0, esp
		sub	esp, 14h
		mov	[ebp+NumberOfBytesWritten], eax
		mov	[ebp+var_1C], eax
		push	ebx
		push	esi
		push	edi
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+ms_exc.registration.TryLevel], eax
		cmp	[ebp+arg_4], eax
		push	[ebp+lpString]	; int
		jz	short loc_7F8054E2
		push	0C0000001h	; dwEventID
		call	sub_7F805583
		mov	[ebp+var_1C], eax
		jmp	short loc_7F80555A
; ---------------------------------------------------------------------------

loc_7F8054E2:				; CODE XREF: sub_7F80549A+37j
		call	ds:lstrlenA
		mov	esi, eax
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		push	esi		; nNumberOfBytesToWrite
		push	[ebp+lpString]	; lpBuffer
		mov	eax, hFile
		push	eax		; hFile
		call	ds:WriteFile
		test	eax, eax
		jz	short loc_7F805512
		cmp	esi, [ebp+NumberOfBytesWritten]
		jnz	short loc_7F805512
		mov	[ebp+var_1C], 1
		jmp	short loc_7F805519
; ---------------------------------------------------------------------------

loc_7F805512:				; CODE XREF: sub_7F80549A+68j
					; sub_7F80549A+6Dj
		mov	[ebp+var_1C], 0

loc_7F805519:				; CODE XREF: sub_7F80549A+76j
		mov	edi, offset Buffer ; "\r\n\r\n"
		push	edi		; lpString
		call	ds:lstrlenA
		mov	esi, eax
		cmp	[ebp+var_1C], 0
		jz	short loc_7F805553
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		push	esi		; nNumberOfBytesToWrite
		push	edi		; lpBuffer
		mov	eax, hFile
		push	eax		; hFile
		call	ds:WriteFile
		test	eax, eax
		jz	short loc_7F805553
		cmp	esi, [ebp+NumberOfBytesWritten]
		jnz	short loc_7F805553
		mov	[ebp+var_1C], 1
		jmp	short loc_7F80555A
; ---------------------------------------------------------------------------

loc_7F805553:				; CODE XREF: sub_7F80549A+91j
					; sub_7F80549A+A9j ...
		mov	[ebp+var_1C], 0

loc_7F80555A:				; CODE XREF: sub_7F80549A+46j
					; sub_7F80549A+B7j
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F805570

loc_7F805566:				; DATA XREF: .text:stru_7F801208o
		cmp	[ebp+arg_4], 0	; Finally handler 0 for	function 7F80549A
		mov	esp, [ebp+ms_exc.old_esp]
		mov	eax, [ebp+var_1C]

loc_7F805570:				; DATA XREF: sub_7F80549A+C7o
		mov	ecx, [ebp+ms_exc.registration.Next]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F80549A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F805583(DWORD dwEventID, int)
sub_7F805583	proc near		; CODE XREF: sub_7F80504F+BCp
					; sub_7F80504F+102p ...

Strings		= dword	ptr -10h
hEventLog	= dword	ptr -8
wNumStrings	= word ptr -2
dwEventID	= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	eax, [esp+arg_4]
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		cmp	eax, esi
		jz	short loc_7F8055A1
		mov	[ebp+wNumStrings], 1
		mov	[ebp+Strings], eax
		jmp	short loc_7F8055A7
; ---------------------------------------------------------------------------

loc_7F8055A1:				; CODE XREF: sub_7F805583+11j
		mov	[ebp+wNumStrings], 0

loc_7F8055A7:				; CODE XREF: sub_7F805583+1Cj
		mov	eax, [ebp+dwEventID]
		shr	eax, 1Eh
		cmp	eax, 1
		jbe	short loc_7F8055BD
		cmp	eax, 2
		jz	short loc_7F8055C3
		mov	di, 1
		jmp	short loc_7F8055C7
; ---------------------------------------------------------------------------

loc_7F8055BD:				; CODE XREF: sub_7F805583+2Dj
		mov	di, 4
		jmp	short loc_7F8055C7
; ---------------------------------------------------------------------------

loc_7F8055C3:				; CODE XREF: sub_7F805583+32j
		mov	di, 2

loc_7F8055C7:				; CODE XREF: sub_7F805583+38j
					; sub_7F805583+3Ej
		push	offset SourceName ; lpSourceName
		xor	ebx, ebx
		push	ebx		; lpUNCServerName
		call	ds:RegisterEventSourceA
		mov	[ebp+hEventLog], eax
		cmp	eax, ebx
		jz	short loc_7F8055FF
		push	ebx		; lpRawData
		lea	eax, [ebp+Strings]
		push	eax		; lpStrings
		push	ebx		; dwDataSize
		push	dword ptr [ebp+wNumStrings] ; wNumStrings
		push	ebx		; lpUserSid
		push	[ebp+dwEventID]	; dwEventID
		push	ebx		; wCategory
		push	edi		; wType
		push	[ebp+hEventLog]	; hEventLog
		call	ds:ReportEventA
		push	[ebp+hEventLog]	; hEventLog
		mov	esi, eax
		call	ds:DeregisterEventSource

loc_7F8055FF:				; CODE XREF: sub_7F805583+57j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F805583	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80560A(HINSTANCE hInstance)
sub_7F80560A	proc near		; CODE XREF: sub_7F80530D+39p

Buffer		= byte ptr -12Ch
Data		= byte ptr -28h
var_24		= dword	ptr -24h
phkResult	= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
hInstance	= dword	ptr  8

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F801218
		push	offset sub_7F82FBD0
		push	eax
		mov	large fs:0, esp
		sub	esp, 11Ch
		mov	[ebp+var_24], 1
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+phkResult], esi
		mov	[ebp+var_1C], esi
		mov	[ebp+ms_exc.registration.TryLevel], esi
		mov	edi, 104h
		push	edi		; cchBufferMax
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		push	1008h		; uID
		push	[ebp+hInstance]	; hInstance
		call	ds:LoadStringA
		push	20h		; cchBufferMax
		mov	ebx, offset SourceName
		push	ebx		; lpBuffer
		push	1009h		; uID
		push	[ebp+hInstance]	; hInstance
		call	ds:LoadStringA
		push	ebx		; lpString2
		lea	eax, [ebp+Buffer]
		push	eax		; lpString1
		call	ds:lstrcatA
		lea	eax, [ebp+phkResult]
		push	eax		; phkResult
		lea	eax, [ebp+Buffer]
		push	eax		; lpSubKey
		push	80000002h	; hKey
		call	ds:RegCreateKeyA
		mov	[ebp+var_1C], eax
		cmp	eax, esi
		jnz	short loc_7F80570F
		push	edi		; nSize
		lea	eax, [ebp+Buffer]
		push	eax		; lpFilename
		push	[ebp+hInstance]	; hModule
		call	ds:GetModuleFileNameA
		test	eax, eax
		jnz	short loc_7F8056BE
		call	ds:GetLastError
		jmp	short loc_7F80570C
; ---------------------------------------------------------------------------

loc_7F8056BE:				; CODE XREF: sub_7F80560A+AAj
		lea	eax, [ebp+Buffer]
		push	eax		; lpString
		call	ds:lstrlenA
		inc	eax
		push	eax		; cbData
		lea	eax, [ebp+Buffer]
		push	eax		; lpData
		push	1		; dwType
		xor	esi, esi
		push	esi		; Reserved
		push	offset ValueName ; "EventMessageFile"
		push	[ebp+phkResult]	; hKey
		call	ds:RegSetValueExA
		mov	[ebp+var_1C], eax
		cmp	eax, esi
		jnz	short loc_7F80570F
		mov	dword ptr [ebp+Data], 7
		push	4		; cbData
		lea	eax, [ebp+Data]
		push	eax		; lpData
		push	4		; dwType
		push	esi		; Reserved
		push	offset aTypessupported ; "TypesSupported"
		push	[ebp+phkResult]	; hKey
		call	ds:RegSetValueExA

loc_7F80570C:				; CODE XREF: sub_7F80560A+B2j
		mov	[ebp+var_1C], eax

loc_7F80570F:				; CODE XREF: sub_7F80560A+95j
					; sub_7F80560A+E2j
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F80573A

loc_7F80571B:				; DATA XREF: .text:stru_7F801218o
		xor	eax, eax	; Finally handler 0 for	function 7F80560A
		cmp	[ebp+var_1C], eax
		jz	short loc_7F805725
		mov	[ebp+var_24], eax

loc_7F805725:				; CODE XREF: sub_7F80560A+116j
		cmp	[ebp+phkResult], 0
		jz	short loc_7F805734
		push	[ebp+phkResult]	; hKey
		call	ds:RegCloseKey

loc_7F805734:				; CODE XREF: sub_7F80560A+11Fj
		mov	esp, [ebp+ms_exc.old_esp]
		mov	eax, [ebp+var_24]

loc_7F80573A:				; DATA XREF: sub_7F80560A+10Co
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F80560A	endp

; Exported entry   1. MMFMIG_ProcessMMF@4

; =============== S U B	R O U T	I N E =======================================


; int __stdcall	MMFMIG_ProcessMMF(LPARAM dwInitParam)
		public MMFMIG_ProcessMMF@4
MMFMIG_ProcessMMF@4 proc near		; DATA XREF: .text:off_7F8326A8o

dwInitParam	= dword	ptr  4

		push	esi
		push	offset ModuleName ; "mmfmig32.dll"
		call	ds:GetModuleHandleA
		mov	esi, [esp+4+dwInitParam]
		mov	hInstance, eax
		push	esi
		mov	eax, [esi]
		call	dword ptr [eax+4]
		push	esi		; dwInitParam
		mov	eax, hInstance
		push	eax		; hInstance
		call	sub_7F80577A
		xor	eax, eax
		pop	esi
		retn	4
MMFMIG_ProcessMMF@4 endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80577A(HINSTANCE hInstance, LPARAM dwInitParam)
sub_7F80577A	proc near		; CODE XREF: MMFMIG_ProcessMMF@4+22p

var_44		= byte ptr -44h
hWnd		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
hInstance	= dword	ptr  8
dwInitParam	= dword	ptr  0Ch

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F801228
		push	offset sub_7F82FBD0
		push	eax
		mov	large fs:0, esp
		sub	esp, 34h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+var_1C], esi
		mov	[ebp+var_20], esi
		mov	[ebp+ms_exc.registration.TryLevel], esi
		mov	edi, [ebp+dwInitParam]
		cmp	edi, esi
		jnz	short loc_7F8057BE
		call	sub_7F808A02
		mov	[ebp+var_1C], eax
		cmp	eax, esi
		jz	short loc_7F805821

loc_7F8057BE:				; CODE XREF: sub_7F80577A+36j
		mov	esi, [ebp+hInstance]
		push	esi
		lea	eax, [ebp+var_44]
		push	eax
		call	sub_7F80C828
		lea	eax, [ebp+var_44]
		push	eax
		call	sub_7F80C955
		push	80h		; cchBufferMax
		push	offset byte_7F833F30 ; lpBuffer
		push	1513h		; uID
		push	esi		; hInstance
		call	ds:LoadStringA
		call	ds:GetFocus
		mov	[ebp+hWnd], eax
		push	edi		; dwInitParam
		push	offset sub_7F805851 ; lpDialogFunc
		call	ds:GetActiveWindow
		push	eax		; hWndParent
		push	258h		; lpTemplateName
		push	esi		; hInstance
		call	ds:DialogBoxParamA
		mov	[ebp+var_20], eax
		push	[ebp+hWnd]	; hWnd
		call	ds:SetFocus
		lea	eax, [ebp+var_44]
		push	eax
		call	sub_7F80C933

loc_7F805821:				; CODE XREF: sub_7F80577A+42j
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F80583E

loc_7F80582D:				; DATA XREF: .text:stru_7F801228o
		cmp	[ebp+var_1C], 0	; Finally handler 0 for	function 7F80577A
		jz	short loc_7F805838
		call	MAPIUninitialize@0

loc_7F805838:				; CODE XREF: sub_7F80577A+B7j
		mov	esp, [ebp+ms_exc.old_esp]
		mov	eax, [ebp+var_20]

loc_7F80583E:				; DATA XREF: sub_7F80577A+AEo
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F80577A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; BOOL __stdcall sub_7F805851(HWND, UINT, WPARAM, LPARAM)
sub_7F805851	proc near		; DATA XREF: sub_7F80577A+7Ao

Buffer		= byte ptr -58h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
Rect		= tagRECT ptr -10h
hDlg		= 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, 58h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_8]
		mov	eax, esi
		mov	edx, [ebp+arg_4]
		shr	eax, 10h
		cmp	edx, 0Fh
		movzx	edi, si
		movzx	ecx, ax
		jz	short loc_7F8058C2
		cmp	edx, 10h
		jz	short loc_7F8058CC
		cmp	edx, 53h
		jz	short loc_7F8058DE
		cmp	edx, 110h
		jz	short loc_7F8058EF
		mov	eax, 111h
		cmp	edx, eax
		jz	loc_7F805B78
		cmp	edx, 112h
		jz	loc_7F805E6F
		cmp	edx, dword_7F8352A0
		jnz	short loc_7F8058B7
		push	0		; lParam
		push	387h		; wParam
		push	eax		; Msg
		mov	eax, hDlg
		push	eax		; hWnd

loc_7F8058B1:				; CODE XREF: sub_7F805851+9Cj
					; sub_7F805851+2F8j ...
		call	ds:PostMessageA

loc_7F8058B7:				; CODE XREF: sub_7F805851+50j
					; sub_7F805851+79j ...
		xor	eax, eax

loc_7F8058B9:				; CODE XREF: sub_7F805851+8Bj
					; sub_7F805851+E2j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------

loc_7F8058C2:				; CODE XREF: sub_7F805851+1Dj
		push	[ebp+hDlg]	; hWnd
		call	sub_7F8097B9
		jmp	short loc_7F8058B7
; ---------------------------------------------------------------------------

loc_7F8058CC:				; CODE XREF: sub_7F805851+22j
		push	0		; nResult
		push	[ebp+hDlg]	; hDlg
		call	ds:EndDialog
		mov	eax, 1
		jmp	short loc_7F8058B9
; ---------------------------------------------------------------------------

loc_7F8058DE:				; CODE XREF: sub_7F805851+27j
		push	0
		push	387h
		push	111h
		push	[ebp+hDlg]
		jmp	short loc_7F8058B1
; ---------------------------------------------------------------------------

loc_7F8058EF:				; CODE XREF: sub_7F805851+2Fj
		mov	eax, [ebp+hDlg]
		mov	hDlg, eax
		call	sub_7F8088BB
		mov	dword_7F835290,	eax
		test	eax, eax
		jnz	short loc_7F805935
		push	30h		; uType
		push	offset byte_7F833F30 ; lpCaption
		push	1007h		; uID
		push	[ebp+hDlg]	; hWnd
		call	sub_7F808359
		push	0		; lParam
		push	0D0h		; wParam
		push	111h		; Msg
		push	[ebp+hDlg]	; hWnd
		call	ds:PostMessageA
		mov	eax, 1
		jmp	short loc_7F8058B9
; ---------------------------------------------------------------------------

loc_7F805935:				; CODE XREF: sub_7F805851+B2j
		cmp	[ebp+arg_C], 0
		mov	eax, dword_7F835290
		jz	loc_7F805B2B
		mov	edx, [ebp+arg_C]
		or	byte ptr [eax],	8
		mov	ecx, dword_7F835290
		mov	[ecx+24h], edx

loc_7F805953:				; CODE XREF: sub_7F805851+30Dj
		xor	esi, esi
		mov	ebx, 0F1h
		push	[ebp+hDlg]	; hDlg
		call	sub_7F808C12
		push	esi		; lParam
		mov	edi, ds:SendDlgItemMessageA
		push	1		; wParam
		push	ebx		; Msg
		push	268h		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	edi ; SendDlgItemMessageA
		push	esi		; lParam
		push	1		; wParam
		push	ebx		; Msg
		push	270h		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	edi ; SendDlgItemMessageA
		push	esi		; lParam
		push	1		; wParam
		push	ebx		; Msg
		push	271h		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	edi ; SendDlgItemMessageA
		push	4		; nIndex
		mov	ebx, ds:GetSystemMetrics
		mov	dword_7F833268,	esi
		call	ebx ; GetSystemMetrics
		push	20h		; nIndex
		mov	[ebp+var_14], eax
		call	ebx ; GetSystemMetrics
		mov	edi, eax
		push	21h		; nIndex
		call	ebx ; GetSystemMetrics
		mov	[ebp+var_18], eax
		mov	[ebp+Rect.left], esi
		lea	eax, [ebp+Rect]
		mov	[ebp+Rect.top],	esi
		push	eax		; lpRect
		add	edi, edi
		push	[ebp+hDlg]	; hDlg
		mov	[ebp+Rect.right], 100h
		mov	[ebp+Rect.bottom], 0A4h
		call	ds:MapDialogRect
		mov	eax, [ebp+Rect.right]
		mov	ebx, [ebp+var_18]
		add	eax, edi
		add	ebx, ebx
		mov	dword_7F833150,	eax
		mov	dword_7F8338A8,	esi
		mov	eax, [ebp+Rect.bottom]
		mov	dword_7F8338AC,	esi
		add	eax, ebx
		lea	ecx, [ebp+Rect]
		add	eax, [ebp+var_14]
		push	ecx		; lpRect
		push	[ebp+hDlg]	; hDlg
		mov	[ebp+Rect.right], 0C0h
		mov	[ebp+Rect.bottom], 60h
		mov	dword_7F833154,	eax
		call	ds:MapDialogRect
		mov	eax, [ebp+Rect.right]
		mov	[ebp+Rect.right], 100h
		add	eax, edi
		lea	ecx, [ebp+Rect]
		push	ecx		; lpRect
		mov	dword_7F8338B0,	eax
		push	[ebp+hDlg]	; hDlg
		mov	eax, [ebp+Rect.bottom]
		mov	[ebp+Rect.bottom], 65h
		add	eax, ebx
		add	eax, [ebp+var_14]
		mov	dword_7F8338B4,	eax
		call	ds:MapDialogRect
		mov	eax, [ebp+Rect.right]
		mov	[ebp+Rect.right], 100h
		add	eax, edi
		lea	ecx, [ebp+Rect]
		push	ecx		; lpRect
		mov	dword_7F833270,	eax
		push	[ebp+hDlg]	; hDlg
		mov	eax, [ebp+Rect.bottom]
		mov	[ebp+Rect.bottom], 87h
		add	eax, ebx
		add	eax, [ebp+var_14]
		mov	dword_7F833274,	eax
		call	ds:MapDialogRect
		mov	eax, [ebp+Rect.right]
		mov	[ebp+Rect.right], 100h
		add	eax, edi
		lea	ecx, [ebp+Rect]
		push	ecx		; lpRect
		mov	dword_7F833278,	eax
		push	[ebp+hDlg]	; hDlg
		mov	eax, [ebp+Rect.bottom]
		mov	[ebp+Rect.bottom], 5Ah
		add	eax, ebx
		add	eax, [ebp+var_14]
		mov	dword_7F83327C,	eax
		call	ds:MapDialogRect
		mov	eax, [ebp+Rect.right]
		mov	[ebp+Rect.right], 0C0h
		add	eax, edi
		lea	ecx, [ebp+Rect]
		push	ecx		; lpRect
		mov	dword_7F8339C8,	eax
		push	[ebp+hDlg]	; hDlg
		mov	eax, [ebp+Rect.bottom]
		mov	[ebp+Rect.bottom], 57h
		add	eax, ebx
		add	eax, [ebp+var_14]
		mov	dword_7F8339CC,	eax
		call	ds:MapDialogRect
		mov	eax, [ebp+Rect.right]
		add	eax, edi
		mov	dword_7F833688,	eax
		mov	eax, [ebp+Rect.bottom]
		add	eax, ebx
		add	eax, [ebp+var_14]
		mov	dword_7F83368C,	eax
		cmp	dword_7F8352A0,	esi
		jnz	short loc_7F805B0F
		push	offset String	; "commdlg_help"
		call	ds:RegisterWindowMessageA
		mov	dword_7F8352A0,	eax

loc_7F805B0F:				; CODE XREF: sub_7F805851+2ACj
		push	[ebp+hDlg]	; hDlg
		call	sub_7F805EBF
		push	0		; int
		push	[ebp+hDlg]	; hWnd
		call	sub_7F809758
		mov	eax, 1
		jmp	loc_7F8058B9
; ---------------------------------------------------------------------------

loc_7F805B2B:				; CODE XREF: sub_7F805851+EDj
		push	[ebp+hDlg]	; hWnd
		and	byte ptr [eax],	0F7h
		call	sub_7F808A6D
		test	eax, eax
		jnz	short loc_7F805B4E
		push	0
		push	0D0h
		push	111h
		push	[ebp+hDlg]
		jmp	loc_7F8058B1
; ---------------------------------------------------------------------------

loc_7F805B4E:				; CODE XREF: sub_7F805851+2E7j
		mov	eax, dword_7F835290
		push	eax
		push	[ebp+hDlg]
		call	sub_7F808BE2
		test	eax, eax
		jnz	loc_7F805953
		push	0
		push	0D0h
		push	111h
		push	[ebp+hDlg]
		jmp	loc_7F8058B1
; ---------------------------------------------------------------------------

loc_7F805B78:				; CODE XREF: sub_7F805851+38j
		cmp	edi, 0C8h
		jg	short loc_7F805B94
		jz	loc_7F805D9A
		cmp	edi, 0BEh
		jz	loc_7F805C26
		jmp	short loc_7F805C04
; ---------------------------------------------------------------------------

loc_7F805B94:				; CODE XREF: sub_7F805851+32Dj
		cmp	edi, 339h
		jg	short loc_7F805BF8
		jz	loc_7F805E28
		cmp	edi, 0C9h
		jz	loc_7F805DA7
		cmp	edi, 0CAh
		jz	loc_7F805DB4
		cmp	edi, 0CCh
		jz	loc_7F805DC1
		cmp	edi, 0CDh
		jz	loc_7F805DCE
		cmp	edi, 0CEh
		jz	loc_7F805DDB
		cmp	edi, 0CFh
		jz	loc_7F805DE8
		cmp	edi, 0D0h
		jz	loc_7F805DF5
		jmp	short loc_7F805C04
; ---------------------------------------------------------------------------

loc_7F805BF8:				; CODE XREF: sub_7F805851+349j
		cmp	edi, 387h
		jz	loc_7F805E35

loc_7F805C04:				; CODE XREF: sub_7F805851+341j
					; sub_7F805851+3A5j
		cmp	dword_7F835294,	0
		jz	loc_7F8058B7
		push	ecx
		push	edi
		push	[ebp+arg_C]
		push	esi
		push	edx
		push	[ebp+hDlg]
		call	dword_7F835294
		jmp	loc_7F8058B7
; ---------------------------------------------------------------------------

loc_7F805C26:				; CODE XREF: sub_7F805851+33Bj
		push	40h		; cchBufferMax
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		push	1513h		; uID
		push	hInstance	; hInstance
		call	ds:LoadStringA
		lea	ecx, [ebp+Buffer]
		push	ecx		; lpString
		push	[ebp+hDlg]	; hWnd
		call	ds:SetWindowTextA
		mov	eax, [ebp+arg_C]
		cmp	eax, 1
		jz	short loc_7F805C69
		cmp	eax, 2
		jz	loc_7F805CF6
		cmp	eax, 3
		jz	loc_7F805D86
		jmp	loc_7F8058B7
; ---------------------------------------------------------------------------

loc_7F805C69:				; CODE XREF: sub_7F805851+3FFj
		cmp	dword_7F8353C8,	0
		jnz	short loc_7F805C86
		push	0
		push	0D0h
		push	111h
		push	[ebp+hDlg]
		jmp	loc_7F8058B1
; ---------------------------------------------------------------------------

loc_7F805C86:				; CODE XREF: sub_7F805851+41Fj
		mov	eax, dword_7F8353C8
		dec	eax
		mov	dword_7F8338B8,	eax
		js	short loc_7F805CB0
		shl	eax, 4
		add	eax, offset unk_7F83534C

loc_7F805C9B:				; CODE XREF: sub_7F805851+45Dj
		cmp	dword ptr [eax], 0
		jnz	short loc_7F805CC4
		sub	eax, 10h
		dec	dword_7F8338B8
		cmp	eax, offset unk_7F83534C
		jnb	short loc_7F805C9B

loc_7F805CB0:				; CODE XREF: sub_7F805851+440j
		push	0
		push	0D0h
		push	111h
		push	[ebp+hDlg]
		jmp	loc_7F8058B1
; ---------------------------------------------------------------------------

loc_7F805CC4:				; CODE XREF: sub_7F805851+44Dj
		mov	eax, dword_7F8338B8
		push	0		; lParam
		mov	dword_7F8353C8,	eax
		shl	eax, 4
		push	dword_7F835348[eax] ; wParam
		push	111h		; Msg
		push	[ebp+hDlg]	; hWnd
		call	ds:PostMessageA
		mov	dword_7F8352D8,	1
		jmp	loc_7F8058B7
; ---------------------------------------------------------------------------

loc_7F805CF6:				; CODE XREF: sub_7F805851+404j
		cmp	dword_7F8353C8,	7
		jnz	short loc_7F805D13
		push	0
		push	0D0h
		push	111h
		push	[ebp+hDlg]
		jmp	loc_7F8058B1
; ---------------------------------------------------------------------------

loc_7F805D13:				; CODE XREF: sub_7F805851+4ACj
		mov	eax, dword_7F8353C8
		inc	eax
		mov	dword_7F8338B8,	eax
		cmp	eax, 7
		jg	short loc_7F805D40
		shl	eax, 4
		add	eax, offset unk_7F83534C

loc_7F805D2B:				; CODE XREF: sub_7F805851+4EDj
		cmp	dword ptr [eax], 0
		jnz	short loc_7F805D54
		add	eax, 10h
		inc	dword_7F8338B8
		cmp	eax, offset dword_7F8353BC
		jbe	short loc_7F805D2B

loc_7F805D40:				; CODE XREF: sub_7F805851+4D0j
		push	0
		push	0D0h
		push	111h
		push	[ebp+hDlg]
		jmp	loc_7F8058B1
; ---------------------------------------------------------------------------

loc_7F805D54:				; CODE XREF: sub_7F805851+4DDj
		mov	eax, dword_7F8338B8
		push	0		; lParam
		mov	dword_7F8353C8,	eax
		shl	eax, 4
		push	dword_7F835348[eax] ; wParam
		push	111h		; Msg
		push	[ebp+hDlg]	; hWnd
		call	ds:PostMessageA
		mov	dword_7F8352D8,	2
		jmp	loc_7F8058B7
; ---------------------------------------------------------------------------

loc_7F805D86:				; CODE XREF: sub_7F805851+40Dj
		push	0
		push	0D0h
		push	111h
		push	[ebp+hDlg]
		jmp	loc_7F8058B1
; ---------------------------------------------------------------------------

loc_7F805D9A:				; CODE XREF: sub_7F805851+32Fj
		push	[ebp+hDlg]	; hDlg
		call	sub_7F805EBF
		jmp	loc_7F8058B7
; ---------------------------------------------------------------------------

loc_7F805DA7:				; CODE XREF: sub_7F805851+357j
		push	[ebp+hDlg]	; hWnd
		call	sub_7F8065A0
		jmp	loc_7F8058B7
; ---------------------------------------------------------------------------

loc_7F805DB4:				; CODE XREF: sub_7F805851+363j
		push	[ebp+hDlg]	; hDlg
		call	sub_7F8061C8
		jmp	loc_7F8058B7
; ---------------------------------------------------------------------------

loc_7F805DC1:				; CODE XREF: sub_7F805851+36Fj
		push	[ebp+hDlg]	; hDlg
		call	sub_7F806FF2
		jmp	loc_7F8058B7
; ---------------------------------------------------------------------------

loc_7F805DCE:				; CODE XREF: sub_7F805851+37Bj
		push	[ebp+hDlg]	; hWnd
		call	sub_7F80725C
		jmp	loc_7F8058B7
; ---------------------------------------------------------------------------

loc_7F805DDB:				; CODE XREF: sub_7F805851+387j
		push	[ebp+hDlg]	; hWnd
		call	sub_7F807D9C
		jmp	loc_7F8058B7
; ---------------------------------------------------------------------------

loc_7F805DE8:				; CODE XREF: sub_7F805851+393j
		push	[ebp+hDlg]	; hDlg
		call	sub_7F80795B
		jmp	loc_7F8058B7
; ---------------------------------------------------------------------------

loc_7F805DF5:				; CODE XREF: sub_7F805851+39Fj
		xor	esi, esi
		cmp	dword_7F8352DC,	esi
		jz	short loc_7F805E0D
		mov	eax, dword_7F8352DC
		push	eax
		call	dword ptr [eax]
		mov	dword_7F8352DC,	esi

loc_7F805E0D:				; CODE XREF: sub_7F805851+5ACj
		mov	eax, dword_7F835290
		push	eax
		call	sub_7F808949
		push	1		; nResult
		push	[ebp+hDlg]	; hDlg
		call	ds:EndDialog
		jmp	loc_7F8058B7
; ---------------------------------------------------------------------------

loc_7F805E28:				; CODE XREF: sub_7F805851+34Bj
		push	[ebp+hDlg]	; hWnd
		call	sub_7F80A3C3
		jmp	loc_7F8058B7
; ---------------------------------------------------------------------------

loc_7F805E35:				; CODE XREF: sub_7F805851+3ADj
		cmp	dword_7F8352E8,	0
		mov	eax, 0BBEh
		jnz	short loc_7F805E51
		mov	eax, dword_7F8353C8
		shl	eax, 4
		mov	eax, dword_7F835354[eax]

loc_7F805E51:				; CODE XREF: sub_7F805851+5F0j
		test	eax, eax
		jz	loc_7F8058B7
		push	eax		; dwData
		push	1		; uCommand
		push	offset szHelp	; "EXCHNG.HLP"
		push	[ebp+hDlg]	; hWndMain
		call	ds:WinHelpA
		jmp	loc_7F8058B7
; ---------------------------------------------------------------------------

loc_7F805E6F:				; CODE XREF: sub_7F805851+44j
		and	esi, 0FFF0h
		cmp	esi, 0F060h
		jnz	loc_7F8058B7
		cmp	dword_7F835294,	0
		jnz	short loc_7F805E90
		push	0
		push	10h
		jmp	short loc_7F805EA7
; ---------------------------------------------------------------------------

loc_7F805E90:				; CODE XREF: sub_7F805851+637j
		cmp	dword_7F835298,	0
		push	0		; lParam
		jz	short loc_7F805EA2
		push	339h
		jmp	short loc_7F805EA7
; ---------------------------------------------------------------------------

loc_7F805EA2:				; CODE XREF: sub_7F805851+648j
		push	385h		; wParam

loc_7F805EA7:				; CODE XREF: sub_7F805851+63Dj
					; sub_7F805851+64Fj
		push	111h		; Msg
		push	[ebp+hDlg]	; hWnd
		call	ds:PostMessageA
		mov	eax, 1
		jmp	loc_7F8058B9
sub_7F805851	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F805EBF(HWND hDlg)
sub_7F805EBF	proc near		; CODE XREF: sub_7F805851+2C1p
					; sub_7F805851+54Cp

Buf		= byte ptr -104h
hDlg		= dword	ptr  4

		sub	esp, 104h
		push	ebx
		push	esi
		push	edi
		mov	ebx, 386h
		xor	edi, edi
		mov	esi, [esp+110h+hDlg]
		push	edi		; nCmdShow
		mov	dword_7F835298,	edi
		push	ebx		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	edi		; bEnable
		push	ebx		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	edi		; nCmdShow
		push	esi		; hWnd
		call	ds:ShowWindow
		push	0FFFFFFFFh	; int
		push	esi		; hWnd
		call	sub_7F8087A7
		mov	eax, dword_7F8353C8
		push	6		; uFlags
		shl	eax, 4
		mov	eax, off_7F835350[eax]
		push	dword ptr [eax+4] ; cy
		push	dword ptr [eax]	; cx
		push	edi		; Y
		push	edi		; X
		push	edi		; hWndInsertAfter
		push	esi		; hWnd
		call	ds:SetWindowPos
		mov	eax, offset dword_7F83535C

loc_7F805F30:				; CODE XREF: sub_7F805EBF+7Bj
		mov	[eax], edi
		add	eax, 10h
		cmp	eax, offset dword_7F8353BC
		jbe	short loc_7F805F30
		xor	eax, eax
		push	offset sub_7F809A3F ; int
		mov	ecx, dword_7F835290
		mov	dword_7F8353C8,	eax
		add	ecx, 8
		push	ecx		; int
		push	1		; int
		push	1		; int
		push	1		; int
		push	1502h		; uID
		push	eax		; nIDDlgItem
		push	esi		; hDlg
		call	sub_7F808498
		test	eax, eax
		mov	eax, dword_7F835290
		jnz	short loc_7F805F7E
		push	eax
		call	sub_7F808949
		push	1		; nResult
		push	esi		; hDlg
		call	ds:EndDialog
		jmp	short loc_7F805FD2
; ---------------------------------------------------------------------------

loc_7F805F7E:				; CODE XREF: sub_7F805EBF+ACj
		push	dword ptr [eax+8] ; lpString2
		mov	esi, offset String1
		push	esi		; lpString1
		call	ds:lstrcpyA
		lea	ecx, [esp+110h+Buf]
		push	104h		; cchSize
		push	ecx		; Buf
		push	esi		; LPCSTR
		call	GetFileTitleA
		push	esi		; lpString
		call	ds:lstrlenA
		mov	esi, eax
		lea	eax, [esp+110h+Buf]
		push	eax		; lpString
		call	ds:lstrlenA
		sub	esi, eax
		push	2		; lParam
		push	0BEh		; wParam
		mov	eax, hDlg
		mov	String1[esi], 0
		push	111h		; Msg
		push	eax		; hWnd
		call	ds:PostMessageA

loc_7F805FD2:				; CODE XREF: sub_7F805EBF+BDj
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 104h
		retn	4
sub_7F805EBF	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F805FDE(int, LPCSTR lpString, int,	int, int)
sub_7F805FDE	proc near		; CODE XREF: sub_7F806352+151p
					; sub_7F809A3F+1A8p

String1		= byte ptr -104h
lpString	= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h

		sub	esp, 104h
		push	ebx
		push	esi
		mov	ebx, [esp+10Ch+arg_10]
		push	edi
		mov	edi, [esp+110h+arg_C]
		push	ebp
		xor	ebp, ebp
		push	80h		; dwFlagsAndAttributes
		mov	esi, [esp+118h+lpString]
		push	0C0000000h	; __int16
		push	esi		; lpFileName
		mov	[edi], ebp
		mov	[ebx], ebp
		call	sub_7F8083A0
		mov	[ebx], eax
		test	eax, eax
		jz	short loc_7F806093
		cmp	eax, 2
		jz	short loc_7F80602A
		cmp	eax, 12h
		jz	short loc_7F80602A
		xor	eax, eax
		jmp	loc_7F8060B4
; ---------------------------------------------------------------------------

loc_7F80602A:				; CODE XREF: sub_7F805FDE+3Ej
					; sub_7F805FDE+43j
		push	esi		; lpString
		call	ds:lstrlenA
		cmp	eax, 4
		mov	ebp, eax
		jbe	short loc_7F806046
		push	esi		; lpString
		call	ds:lstrlenA
		cmp	byte ptr [esi+eax-4], 2Eh
		jz	short loc_7F80608F

loc_7F806046:				; CODE XREF: sub_7F805FDE+58j
		add	ebp, 4
		cmp	ebp, 104h
		jnb	short loc_7F80608F
		lea	eax, [esp+114h+String1]
		push	esi		; lpString2
		push	eax		; lpString1
		call	ds:lstrcpyA
		push	offset a_mmf	; ".MMF"
		push	esi		; lpString1
		call	ds:lstrcatA
		push	80h		; dwFlagsAndAttributes
		push	0C0000000h	; __int16
		push	esi		; lpFileName
		call	sub_7F8083A0
		mov	[ebx], eax
		test	eax, eax
		jz	short loc_7F806093
		lea	eax, [esp+114h+String1]
		push	eax		; lpString2
		push	esi		; lpString1
		call	ds:lstrcpyA
		xor	eax, eax
		jmp	short loc_7F8060B4
; ---------------------------------------------------------------------------

loc_7F80608F:				; CODE XREF: sub_7F805FDE+66j
					; sub_7F805FDE+71j
		xor	eax, eax
		jmp	short loc_7F8060B4
; ---------------------------------------------------------------------------

loc_7F806093:				; CODE XREF: sub_7F805FDE+39j
					; sub_7F805FDE+9Fj
		push	edi
		push	offset dword_7F833264
		push	[esp+11Ch+arg_8]
		push	esi
		call	ScMMFVerify@16
		test	eax, eax
		mov	eax, 0
		jl	short loc_7F8060B4
		mov	eax, 1

loc_7F8060B4:				; CODE XREF: sub_7F805FDE+47j
					; sub_7F805FDE+AFj ...
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 104h
		retn	14h
sub_7F805FDE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8060C1(int, LPCSTR lpString, int)
sub_7F8060C1	proc near		; CODE XREF: sub_7F809A3F+1ECp
					; sub_7F809A3F+265p ...

String1		= byte ptr -10Ch
var_8		= dword	ptr -8
var_4		= word ptr -4
var_2		= word ptr -2
lpString	= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10Ch
		mov	[ebp+var_8], 8004010Fh
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+lpString]
		push	80h		; dwFlagsAndAttributes
		push	0C0000000h	; __int16
		push	esi		; lpFileName
		call	sub_7F8083A0
		mov	edi, [ebp+arg_8]
		test	eax, eax
		mov	[edi], eax
		jz	short loc_7F80616D
		cmp	eax, 2
		jz	short loc_7F8060FE
		cmp	eax, 12h
		jnz	loc_7F8061BD

loc_7F8060FE:				; CODE XREF: sub_7F8060C1+32j
		push	esi		; lpString
		call	ds:lstrlenA
		cmp	eax, 4
		mov	ebx, eax
		jbe	short loc_7F80611E
		push	esi		; lpString
		call	ds:lstrlenA
		cmp	byte ptr [esi+eax-4], 2Eh
		jz	loc_7F8061BD

loc_7F80611E:				; CODE XREF: sub_7F8060C1+49j
		add	ebx, 4
		cmp	ebx, 104h
		jnb	loc_7F8061BD
		push	esi		; lpString2
		lea	eax, [ebp+String1]
		push	eax		; lpString1
		call	ds:lstrcpyA
		push	offset a_pab	; ".PAB"
		push	esi		; lpString1
		call	ds:lstrcatA
		push	80h		; dwFlagsAndAttributes
		push	0C0000000h	; __int16
		push	esi		; lpFileName
		call	sub_7F8083A0
		mov	[edi], eax
		test	eax, eax
		jz	short loc_7F80616D
		lea	eax, [ebp+String1]
		push	eax		; lpString2
		push	esi		; lpString1
		call	ds:lstrcpyA
		jmp	short loc_7F8061BD
; ---------------------------------------------------------------------------

loc_7F80616D:				; CODE XREF: sub_7F8060C1+2Dj
					; sub_7F8060C1+9Aj
		push	offset LibFileName ; "mspst32.dll"
		call	ds:LoadLibraryA
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F8061BD
		push	offset ProcName	; "NDBGetFileInfo"
		push	edi		; hModule
		call	ds:GetProcAddress
		test	eax, eax
		jz	short loc_7F80619C
		lea	ecx, [ebp+var_2]
		lea	edx, [ebp+var_4]
		push	ecx
		push	edx
		push	esi
		call	eax
		mov	[ebp+var_8], eax

loc_7F80619C:				; CODE XREF: sub_7F8060C1+CBj
		push	edi		; hLibModule
		call	ds:FreeLibrary
		cmp	[ebp+var_8], 0
		jnz	short loc_7F8061BD
		cmp	[ebp+var_4], 4142h
		jnz	short loc_7F8061BD
		cmp	[ebp+var_2], 16h
		mov	eax, 1
		jnb	short loc_7F8061BF

loc_7F8061BD:				; CODE XREF: sub_7F8060C1+37j
					; sub_7F8060C1+57j ...
		xor	eax, eax

loc_7F8061BF:				; CODE XREF: sub_7F8060C1+FAj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F8060C1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8061C8(HWND hDlg)
sub_7F8061C8	proc near		; CODE XREF: sub_7F805851+566p

var_28		= tagRECT ptr -28h
Rect		= tagRECT ptr -18h
var_8		= dword	ptr -8
nHeight		= dword	ptr -4
hDlg		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		mov	dword_7F835294,	offset sub_7F806352
		push	ebx
		push	esi
		push	edi
		mov	esi, ds:GetDlgItem
		push	1		; bEnable
		mov	edi, [ebp+hDlg]
		push	385h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	1		; bEnable
		push	384h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	1		; bEnable
		push	387h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	1		; int
		push	edi		; hWnd
		call	sub_7F8087A7
		lea	eax, [ebp+Rect]
		push	eax		; lpRect
		push	edi		; hWnd
		call	ds:GetClientRect
		lea	ecx, [ebp+var_28]
		push	ecx		; lpRect
		push	385h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:GetWindowRect
		mov	ebx, [ebp+var_28.right]
		mov	eax, [ebp+var_28.bottom]
		sub	ebx, [ebp+var_28.left]
		sub	eax, [ebp+var_28.top]
		push	1		; bRepaint
		mov	[ebp+nHeight], eax
		imul	eax, 3
		cdq
		push	[ebp+nHeight]	; nHeight
		push	ebx		; nWidth
		sub	eax, edx
		mov	ecx, [ebp+Rect.right]
		sar	eax, 1
		mov	[ebp+var_8], eax
		mov	eax, [ebp+Rect.bottom]
		sub	eax, [ebp+var_8]
		push	eax		; Y
		mov	eax, ebx
		imul	eax, 6
		cdq
		and	edx, 3
		add	eax, edx
		sar	eax, 2
		sub	ecx, eax
		sub	ecx, 2
		push	ecx		; X
		push	387h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:MoveWindow
		push	1		; bRepaint
		mov	eax, [ebp+Rect.bottom]
		sub	eax, [ebp+var_8]
		mov	ecx, [ebp+Rect.right]
		push	[ebp+nHeight]	; nHeight
		push	ebx		; nWidth
		push	eax		; Y
		mov	eax, ebx
		imul	eax, 0Bh
		cdq
		and	edx, 3
		add	eax, edx
		sar	eax, 2
		sub	ecx, eax
		sub	ecx, 2
		push	ecx		; X
		push	385h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:MoveWindow
		push	1		; bRepaint
		mov	eax, [ebp+Rect.bottom]
		sub	eax, [ebp+var_8]
		mov	ecx, [ebp+Rect.right]
		push	[ebp+nHeight]	; nHeight
		push	ebx		; nWidth
		push	eax		; Y
		mov	eax, ebx
		shl	eax, 4
		cdq
		and	edx, 3
		add	eax, edx
		sar	eax, 2
		sub	ecx, eax
		sub	ecx, 2
		push	ecx		; X
		push	384h		; nIDDlgItem
		push	edi		; hDlg
		mov	ebx, 272h
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:MoveWindow
		push	0		; nCmdShow
		push	ebx		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	0		; nCmdShow
		push	273h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	0		; bEnable
		push	ebx		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	0		; bEnable
		push	273h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	5		; nCmdShow
		push	edi		; hWnd
		call	ds:ShowWindow
		push	26Fh		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:SetFocus
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F8061C8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F806352(HWND hDlg,	int, int, int, int, int)
sub_7F806352	proc near		; DATA XREF: sub_7F8061C8+6o

var_8		= dword	ptr -8
var_4		= dword	ptr -4
hDlg		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		cmp	[ebp+arg_4], 111h
		push	esi
		push	edi
		jnz	loc_7F806593
		mov	eax, [ebp+arg_10]
		cmp	eax, 2
		jz	short loc_7F8063A3
		cmp	eax, 270h
		jl	loc_7F806593
		cmp	eax, 271h
		jle	short loc_7F8063D6
		cmp	eax, 384h
		jz	loc_7F80641A
		cmp	eax, 385h
		jz	short loc_7F8063A3
		cmp	eax, 386h
		jz	loc_7F80657E
		jmp	loc_7F806593
; ---------------------------------------------------------------------------

loc_7F8063A3:				; CODE XREF: sub_7F806352+1Bj
					; sub_7F806352+3Fj
		push	131h		; uType
		mov	esi, [ebp+hDlg]
		push	offset byte_7F833F30 ; lpCaption
		push	1527h		; uID
		push	esi		; hWnd
		call	sub_7F808359
		cmp	eax, 1
		jnz	loc_7F806593
		push	0
		push	0D0h
		push	111h
		push	esi
		jmp	loc_7F80658D
; ---------------------------------------------------------------------------

loc_7F8063D6:				; CODE XREF: sub_7F806352+2Dj
		push	270h		; nIDButton
		mov	esi, [ebp+hDlg]
		push	esi		; hDlg
		mov	edi, ds:IsDlgButtonChecked
		call	edi ; IsDlgButtonChecked
		test	eax, eax
		jnz	short loc_7F8063FC
		push	271h		; nIDButton
		push	esi		; hDlg
		call	edi ; IsDlgButtonChecked
		test	eax, eax
		mov	eax, 0
		jz	short loc_7F806401

loc_7F8063FC:				; CODE XREF: sub_7F806352+97j
		mov	eax, 1

loc_7F806401:				; CODE XREF: sub_7F806352+A8j
		push	eax		; bEnable
		push	384h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		jmp	loc_7F806593
; ---------------------------------------------------------------------------

loc_7F80641A:				; CODE XREF: sub_7F806352+34j
		push	270h		; nIDButton
		mov	esi, [ebp+hDlg]
		push	esi		; hDlg
		mov	edi, ds:IsDlgButtonChecked
		call	edi ; IsDlgButtonChecked
		test	eax, eax
		jnz	short loc_7F80644D
		push	271h		; nIDButton
		push	esi		; hDlg
		call	edi ; IsDlgButtonChecked
		test	eax, eax
		jnz	short loc_7F80644D
		push	0
		push	0D0h
		push	111h
		push	esi
		jmp	loc_7F80658D
; ---------------------------------------------------------------------------

loc_7F80644D:				; CODE XREF: sub_7F806352+DBj
					; sub_7F806352+E7j
		mov	eax, dword_7F835290
		add	eax, 0Ch
		push	eax		; int
		push	26Fh		; nIDDlgItem
		push	esi		; hDlg
		call	sub_7F80993C
		mov	ecx, dword_7F835290
		push	dword ptr [ecx+0Ch] ; lpString
		call	ds:lstrlenA
		cmp	eax, 0Fh
		jle	short loc_7F806481
		mov	eax, dword_7F835290
		mov	ecx, [eax+0Ch]
		mov	byte ptr [ecx+0Fh], 0

loc_7F806481:				; CODE XREF: sub_7F806352+121j
		mov	eax, dword_7F835290
		push	dword ptr [eax+0Ch] ; lpsz
		call	ds:CharUpperA
		lea	ecx, [ebp+var_4]
		lea	edx, [ebp+var_8]
		push	ecx		; int
		mov	eax, dword_7F835290
		push	edx		; int
		push	dword ptr [eax+0Ch] ; int
		push	dword ptr [eax+8] ; lpString
		push	esi		; int
		call	sub_7F805FDE
		test	eax, eax
		jz	short loc_7F8064E8
		mov	dword_7F83535C,	1
		push	270h		; nIDButton
		push	esi		; hDlg
		call	edi ; IsDlgButtonChecked
		push	271h		; nIDButton
		mov	bEnable, eax
		push	esi		; hDlg
		call	edi ; IsDlgButtonChecked
		push	2		; lParam
		mov	dword_7F83538C,	eax
		push	0BEh		; wParam
		push	111h		; Msg
		push	esi		; hWnd
		call	ds:PostMessageA
		jmp	loc_7F806569
; ---------------------------------------------------------------------------

loc_7F8064E8:				; CODE XREF: sub_7F806352+158j
		cmp	[ebp+var_8], 81h
		jnz	short loc_7F806513
		push	30h		; uType
		push	offset byte_7F833F30 ; lpCaption
		push	1151h		; uID
		push	esi		; hWnd
		call	sub_7F808359
		push	0		; lpString
		push	26Fh		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SetDlgItemTextA
		jmp	short loc_7F806569
; ---------------------------------------------------------------------------

loc_7F806513:				; CODE XREF: sub_7F806352+19Dj
		cmp	[ebp+var_4], 0
		jz	short loc_7F806569
		push	[ebp+var_4]
		call	sub_7F80998B
		test	ax, ax
		jz	short loc_7F806569
		push	200h		; cchBufferMax
		mov	edi, offset byte_7F8336A8
		movzx	eax, ax
		push	edi		; lpBuffer
		push	eax		; uID
		push	hInstance	; hInstance
		call	ds:LoadStringA
		mov	ecx, dword_7F835290
		push	dword ptr [ecx+8]
		push	edi		; LPCSTR
		mov	edi, offset Text
		push	edi		; LPSTR
		call	ds:wsprintfA
		add	esp, 0Ch
		push	30h		; uType
		push	offset byte_7F833F30 ; lpCaption
		push	edi		; lpText
		push	esi		; hWnd
		call	ds:MessageBoxA

loc_7F806569:				; CODE XREF: sub_7F806352+191j
					; sub_7F806352+1BFj ...
		push	26Fh		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:SetFocus
		jmp	short loc_7F806593
; ---------------------------------------------------------------------------

loc_7F80657E:				; CODE XREF: sub_7F806352+46j
		push	1		; lParam
		push	0BEh		; wParam
		push	111h		; Msg
		push	[ebp+hDlg]	; hWnd

loc_7F80658D:				; CODE XREF: sub_7F806352+7Fj
					; sub_7F806352+F6j
		call	ds:PostMessageA

loc_7F806593:				; CODE XREF: sub_7F806352+Fj
					; sub_7F806352+22j ...
		mov	eax, 1
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F806352	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8065A0(HWND hWnd)
sub_7F8065A0	proc near		; CODE XREF: sub_7F805851+559p

var_28		= tagRECT ptr -28h
Rect		= tagRECT ptr -18h
var_8		= dword	ptr -8
nHeight		= dword	ptr -4
hWnd		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+hWnd]
		push	5		; int
		push	esi		; hWnd
		call	sub_7F8087A7
		lea	eax, [ebp+Rect]
		push	eax		; lpRect
		push	esi		; hWnd
		call	ds:GetClientRect
		lea	ecx, [ebp+var_28]
		mov	edi, ds:GetDlgItem
		push	ecx		; lpRect
		push	385h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ds:GetWindowRect
		mov	ebx, [ebp+var_28.right]
		mov	eax, [ebp+var_28.bottom]
		sub	ebx, [ebp+var_28.left]
		sub	eax, [ebp+var_28.top]
		push	1		; bRepaint
		mov	[ebp+nHeight], eax
		imul	eax, 3
		cdq
		push	[ebp+nHeight]	; nHeight
		push	ebx		; nWidth
		sub	eax, edx
		mov	ecx, [ebp+Rect.right]
		sar	eax, 1
		mov	[ebp+var_8], eax
		mov	eax, [ebp+Rect.bottom]
		sub	eax, [ebp+var_8]
		push	eax		; Y
		mov	eax, ebx
		imul	eax, 6
		cdq
		and	edx, 3
		add	eax, edx
		sar	eax, 2
		sub	ecx, eax
		sub	ecx, 2
		push	ecx		; X
		push	387h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ds:MoveWindow
		push	1		; bRepaint
		mov	eax, [ebp+Rect.bottom]
		sub	eax, [ebp+var_8]
		mov	ecx, [ebp+Rect.right]
		push	[ebp+nHeight]	; nHeight
		push	ebx		; nWidth
		push	eax		; Y
		mov	eax, ebx
		imul	eax, 0Bh
		cdq
		and	edx, 3
		add	eax, edx
		sar	eax, 2
		sub	ecx, eax
		sub	ecx, 2
		push	ecx		; X
		push	385h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ds:MoveWindow
		push	1		; bRepaint
		mov	eax, [ebp+Rect.bottom]
		sub	eax, [ebp+var_8]
		mov	ecx, [ebp+Rect.right]
		push	[ebp+nHeight]	; nHeight
		push	ebx		; nWidth
		shl	ebx, 4
		push	eax		; Y
		mov	eax, ebx
		cdq
		and	edx, 3
		add	eax, edx
		sar	eax, 2
		sub	ecx, eax
		sub	ecx, 2
		push	ecx		; X
		push	384h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ds:MoveWindow
		push	5		; nCmdShow
		push	esi		; hWnd
		call	ds:ShowWindow
		mov	dword_7F835294,	offset sub_7F806861
		push	1		; bEnable
		push	385h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		mov	ebx, ds:EnableWindow
		call	ebx ; EnableWindow
		push	1		; bEnable
		push	384h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ebx ; EnableWindow
		push	1		; bEnable
		push	387h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ebx ; EnableWindow
		push	0		; lParam
		push	0		; wParam
		push	146h		; Msg
		push	269h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		mov	[ebp+nHeight], eax
		test	eax, eax
		jnz	short loc_7F8066F4
		push	0		; bEnable
		push	264h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ebx ; EnableWindow

loc_7F8066F4:				; CODE XREF: sub_7F8065A0+145j
		cmp	[ebp+nHeight], 0
		push	0		; lParam
		push	1		; wParam
		push	0F1h		; Msg
		jnz	loc_7F8067E7
		push	265h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		push	0		; lParam
		push	0		; wParam
		push	0F1h		; Msg
		push	264h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		push	0		; bEnable
		push	269h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ebx ; EnableWindow
		push	1		; bEnable
		push	266h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ebx ; EnableWindow
		push	1		; bEnable
		push	268h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ebx ; EnableWindow
		push	1		; bEnable
		push	267h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ebx ; EnableWindow
		push	1		; bEnable
		push	263h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ebx ; EnableWindow
		push	0		; lParam
		push	0		; wParam
		push	0C1h		; Msg
		push	266h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		test	eax, eax
		jnz	short loc_7F80678F
		push	0		; bEnable
		push	384h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ebx ; EnableWindow

loc_7F80678F:				; CODE XREF: sub_7F8065A0+1E0j
		push	267h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ds:SetFocus
		push	0		; lParam
		push	0		; wParam
		push	0C1h		; Msg
		push	266h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		test	eax, eax
		jnz	short loc_7F8067E0
		push	0		; bEnable
		push	384h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ebx ; EnableWindow
		push	266h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ds:SetFocus
		push	267h		; __int16
		push	esi		; hWnd
		call	sub_7F806F59
		jmp	short loc_7F806858
; ---------------------------------------------------------------------------

loc_7F8067E0:				; CODE XREF: sub_7F8065A0+215j
		push	384h
		jmp	short loc_7F80684E
; ---------------------------------------------------------------------------

loc_7F8067E7:				; CODE XREF: sub_7F8065A0+161j
		push	264h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		push	0		; lParam
		push	0		; wParam
		push	0F1h		; Msg
		push	265h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		push	1		; bEnable
		push	269h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ebx ; EnableWindow
		push	0		; bEnable
		push	266h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ebx ; EnableWindow
		push	0		; bEnable
		push	268h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ebx ; EnableWindow
		push	0		; bEnable
		push	267h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ebx ; EnableWindow
		push	0		; bEnable
		push	263h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ebx ; EnableWindow
		push	269h		; nIDDlgItem

loc_7F80684E:				; CODE XREF: sub_7F8065A0+245j
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ds:SetFocus

loc_7F806858:				; CODE XREF: sub_7F8065A0+23Ej
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F8065A0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F806861(HWND hDlg,	int, int, int, int nIDDlgItem, int)
sub_7F806861	proc near		; DATA XREF: sub_7F8065A0+F4o

String1		= byte ptr -110h
var_C		= dword	ptr -0Ch
hCursor		= dword	ptr -8
var_4		= dword	ptr -4
hDlg		= dword	ptr  8
arg_4		= dword	ptr  0Ch
nIDDlgItem	= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 110h
		push	ebx
		mov	[ebp+var_C], eax
		push	esi
		mov	[ebp+var_4], eax
		cmp	[ebp+arg_4], 111h
		push	edi
		jnz	loc_7F806F4B
		mov	eax, [ebp+nIDDlgItem]
		cmp	eax, 264h
		jg	short loc_7F80689C
		jz	loc_7F806935
		cmp	eax, 2
		jz	short loc_7F8068EA
		jmp	loc_7F806F4B
; ---------------------------------------------------------------------------

loc_7F80689C:				; CODE XREF: sub_7F806861+29j
		cmp	eax, 265h
		jz	loc_7F806A1A
		cmp	eax, 266h
		jz	loc_7F806B17
		cmp	eax, 267h
		jz	loc_7F806B85
		cmp	eax, 269h
		jz	loc_7F806F4B
		cmp	eax, 384h
		jz	loc_7F806BD8
		cmp	eax, 385h
		jz	short loc_7F8068EA
		cmp	eax, 386h
		jz	loc_7F806F1E
		jmp	loc_7F806F4B
; ---------------------------------------------------------------------------

loc_7F8068EA:				; CODE XREF: sub_7F806861+34j
					; sub_7F806861+77j
		push	131h		; uType
		mov	esi, [ebp+hDlg]
		push	offset byte_7F833F30 ; lpCaption
		push	1527h		; uID
		push	esi		; hWnd
		call	sub_7F808359
		cmp	eax, 1
		jnz	loc_7F806F4B
		xor	edi, edi
		cmp	dword_7F8352DC,	edi
		jz	short loc_7F806923
		mov	eax, dword_7F8352DC
		push	eax
		call	dword ptr [eax]
		mov	dword_7F8352DC,	edi

loc_7F806923:				; CODE XREF: sub_7F806861+B2j
		push	0
		push	0D0h
		push	111h
		push	esi
		jmp	loc_7F806F45
; ---------------------------------------------------------------------------

loc_7F806935:				; CODE XREF: sub_7F806861+2Bj
		push	1		; bEnable
		mov	edi, 269h
		push	edi		; nIDDlgItem
		mov	esi, [ebp+hDlg]
		push	esi		; hDlg
		xor	ebx, ebx
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	ebx		; bEnable
		push	266h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	ebx		; bEnable
		push	268h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	ebx		; bEnable
		push	267h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	ebx		; bEnable
		push	263h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	1		; bEnable
		push	384h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	384h		; __int16
		push	esi		; hWnd
		call	sub_7F806F59
		push	ebx		; lParam
		push	ebx		; wParam
		push	147h		; Msg
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		cmp	eax, 0FFFFFFFFh
		jnz	loc_7F806F4B
		cmp	wParam,	0FFFFFFFFh
		jnz	short loc_7F8069FC
		push	ebx		; lParam
		mov	eax, dword_7F835290
		push	dword ptr [eax+18h] ; wParam
		push	14Eh		; Msg
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		jmp	loc_7F806F4B
; ---------------------------------------------------------------------------

loc_7F8069FC:				; CODE XREF: sub_7F806861+17Ej
		push	0		; lParam
		mov	eax, wParam
		push	eax		; wParam
		push	14Eh		; Msg
		push	269h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		jmp	loc_7F806F4B
; ---------------------------------------------------------------------------

loc_7F806A1A:				; CODE XREF: sub_7F806861+40j
		xor	edi, edi
		mov	esi, [ebp+hDlg]
		push	edi		; bEnable
		push	269h		; nIDDlgItem
		push	esi		; hDlg
		mov	ebx, 266h
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	1		; bEnable
		push	ebx		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	1		; bEnable
		push	268h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	1		; bEnable
		push	267h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	1		; bEnable
		push	263h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	edi		; lParam
		push	edi		; wParam
		push	0C1h		; Msg
		push	ebx		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		test	eax, eax
		jz	short loc_7F806AB4
		push	1		; bEnable
		mov	edi, 384h
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	edi
		jmp	short loc_7F806ACE
; ---------------------------------------------------------------------------

loc_7F806AB4:				; CODE XREF: sub_7F806861+238j
		push	0		; bEnable
		push	384h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	267h		; __int16

loc_7F806ACE:				; CODE XREF: sub_7F806861+251j
		push	esi		; hWnd
		call	sub_7F806F59
		push	266h		; nIDDlgItem
		xor	edi, edi
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		mov	ebx, 269h
		call	ds:SetFocus
		push	edi		; lParam
		push	edi		; wParam
		push	147h		; Msg
		push	ebx		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		push	edi		; lParam
		mov	wParam,	eax
		push	0FFFFFFFFh	; wParam
		push	14Eh		; Msg
		push	ebx		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		jmp	loc_7F806F4B
; ---------------------------------------------------------------------------

loc_7F806B17:				; CODE XREF: sub_7F806861+4Bj
		cmp	[ebp+arg_14], 300h
		jnz	loc_7F806F4B
		push	0		; lParam
		mov	esi, [ebp+hDlg]
		push	0		; wParam
		push	0C1h		; Msg
		push	[ebp+nIDDlgItem] ; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		test	eax, eax
		jz	short loc_7F806B60
		push	1		; bEnable
		mov	edi, 384h
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	edi		; __int16
		push	esi		; hWnd
		call	sub_7F806F59
		jmp	loc_7F806F4B
; ---------------------------------------------------------------------------

loc_7F806B60:				; CODE XREF: sub_7F806861+2DBj
		push	0		; bEnable
		push	384h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	267h		; __int16
		push	esi		; hWnd
		call	sub_7F806F59
		jmp	loc_7F806F4B
; ---------------------------------------------------------------------------

loc_7F806B85:				; CODE XREF: sub_7F806861+56j
		xor	eax, eax
		mov	ecx, dword_7F835290
		push	eax		; int
		add	ecx, 30h
		mov	dword_7F8352E8,	1
		push	ecx		; int
		mov	esi, [ebp+hDlg]
		push	eax		; int
		push	eax		; int
		push	eax		; int
		push	1505h		; uID
		push	266h		; nIDDlgItem
		push	esi		; hDlg
		call	sub_7F808498
		test	eax, eax
		jz	short loc_7F806BC9
		push	384h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:SetFocus

loc_7F806BC9:				; CODE XREF: sub_7F806861+353j
		mov	dword_7F8352E8,	0
		jmp	loc_7F806F4B
; ---------------------------------------------------------------------------

loc_7F806BD8:				; CODE XREF: sub_7F806861+6Cj
		xor	edi, edi
		mov	esi, [ebp+hDlg]
		push	edi		; bEnable
		push	esi		; hWnd
		call	ds:EnableWindow
		push	7F02h		; lpCursorName
		push	edi		; hInstance
		call	ds:LoadCursorA
		push	eax		; hCursor
		call	ds:SetCursor
		push	edi		; lParam
		mov	[ebp+hCursor], eax
		push	edi		; wParam
		push	0F0h		; Msg
		push	264h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		test	eax, eax
		mov	eax, dword_7F835290
		jz	loc_7F806CD0
		push	edi		; lParam
		mov	ebx, 269h
		push	edi		; wParam
		mov	[eax+14h], edi
		push	147h		; Msg
		push	ebx		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		movzx	eax, ax
		push	edi		; lParam
		push	eax		; wParam
		push	150h		; Msg
		push	ebx		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		push	dword ptr [eax+0Ch] ; int
		mov	[ebp+var_C], eax
		add	eax, 8
		push	dword ptr [eax]	; int
		push	esi		; hWnd
		call	sub_7F808F4D
		mov	ecx, dword_7F835290
		mov	[ecx+2Ch], eax
		mov	ecx, dword_7F835290
		cmp	[ecx+2Ch], edi
		jz	short loc_7F806CBE
		mov	ebx, [ebp+var_C]
		lea	eax, [ecx+30h]
		add	ebx, 4
		push	eax
		push	edi
		push	dword ptr [ebx]	; lpString
		call	ds:lstrlenA
		inc	eax
		push	eax
		call	sub_7F80A757
		test	eax, eax
		jz	loc_7F806F4B
		mov	ecx, dword_7F835290
		push	dword ptr [ebx]	; lpString2
		push	dword ptr [ecx+30h] ; lpString1
		call	ds:lstrcpyA
		mov	dword_7F8353AC,	1
		push	2		; lParam
		push	0BEh		; wParam
		push	111h		; Msg
		push	esi		; hWnd
		call	ds:PostMessageA
		jmp	loc_7F806EDE
; ---------------------------------------------------------------------------

loc_7F806CBE:				; CODE XREF: sub_7F806861+406j
		push	0
		push	0D0h
		push	111h
		push	esi
		jmp	loc_7F806F45
; ---------------------------------------------------------------------------

loc_7F806CD0:				; CODE XREF: sub_7F806861+3B4j
		push	0		; lParam
		mov	edi, 266h
		mov	dword ptr [eax+14h], 1
		push	0		; wParam
		push	0C1h		; Msg
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		test	eax, eax
		jz	loc_7F806EDE
		mov	eax, dword_7F835290
		add	eax, 30h
		push	eax		; int
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	sub_7F80993C
		test	eax, eax
		jz	loc_7F806EDE
		xor	edi, edi
		mov	eax, dword_7F835290
		mov	eax, [eax+30h]
		cmp	byte ptr [eax],	20h
		jnz	short loc_7F806D29

loc_7F806D1C:				; CODE XREF: sub_7F806861+4C6j
		cmp	byte ptr [eax+edi], 0
		jz	short loc_7F806D29
		inc	edi
		cmp	byte ptr [eax+edi], 20h
		jz	short loc_7F806D1C

loc_7F806D29:				; CODE XREF: sub_7F806861+4B9j
					; sub_7F806861+4BFj
		push	eax		; lpString
		call	ds:lstrlenA
		lea	ebx, [eax-1]
		mov	eax, ebx
		sub	eax, edi
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_7F806D66
		push	1		; bEnable
		push	esi		; hWnd
		call	ds:EnableWindow
		push	266h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:SetFocus
		push	[ebp+hCursor]	; hCursor
		call	ds:SetCursor
		jmp	loc_7F806F4B
; ---------------------------------------------------------------------------

loc_7F806D66:				; CODE XREF: sub_7F806861+4D9j
		mov	eax, dword_7F835290
		mov	eax, [eax+30h]
		cmp	byte ptr [eax+ebx], 20h
		jnz	short loc_7F806D7F

loc_7F806D74:				; CODE XREF: sub_7F806861+51Cj
		cmp	ebx, edi
		jle	short loc_7F806D7F
		dec	ebx
		cmp	byte ptr [eax+ebx], 20h
		jz	short loc_7F806D74

loc_7F806D7F:				; CODE XREF: sub_7F806861+511j
					; sub_7F806861+515j
		test	edi, edi
		jle	short loc_7F806DA9
		add	eax, edi
		lea	ecx, [ebp+String1]
		push	eax		; lpString2
		push	ecx		; lpString1
		call	ds:lstrcpyA
		lea	ecx, [ebp+String1]
		mov	edx, dword_7F835290
		push	ecx		; lpString2
		push	dword ptr [edx+30h] ; lpString1
		call	ds:lstrcpyA

loc_7F806DA9:				; CODE XREF: sub_7F806861+520j
		mov	eax, dword_7F835290
		mov	eax, [eax+30h]
		sub	eax, edi
		mov	byte ptr [eax+ebx+1], 0
		mov	ecx, dword_7F835290
		push	dword ptr [ecx+30h] ; lpFileName
		call	ds:GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jz	short loc_7F806DFA
		test	al, 10h
		jz	short loc_7F806DFA
		push	1		; bEnable
		push	esi		; hWnd
		call	ds:EnableWindow
		push	[ebp+hCursor]	; hCursor
		call	ds:SetCursor
		push	266h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:SetFocus
		jmp	loc_7F806F4B
; ---------------------------------------------------------------------------

loc_7F806DFA:				; CODE XREF: sub_7F806861+569j
					; sub_7F806861+56Dj
		xor	edi, edi
		mov	eax, dword_7F835290
		mov	eax, [eax+30h]
		cmp	byte ptr [eax],	0
		jz	short loc_7F806E16

loc_7F806E09:				; CODE XREF: sub_7F806861+5B3j
		cmp	byte ptr [eax+edi], 2Eh
		jz	short loc_7F806E16
		inc	edi
		cmp	byte ptr [eax+edi], 0
		jnz	short loc_7F806E09

loc_7F806E16:				; CODE XREF: sub_7F806861+5A6j
					; sub_7F806861+5ACj
		add	eax, edi
		push	eax		; lpString
		call	ds:lstrlenA
		cmp	eax, 1
		jg	short loc_7F806E43
		mov	eax, dword_7F835290
		push	offset a_pst	; ".pst"
		mov	ecx, [eax+30h]
		mov	byte ptr [ecx+edi], 0
		mov	eax, dword_7F835290
		push	dword ptr [eax+30h] ; lpString1
		call	ds:lstrcatA

loc_7F806E43:				; CODE XREF: sub_7F806861+5C1j
		lea	eax, [ebp+var_4]
		mov	ecx, dword_7F835290
		push	eax		; int
		xor	edi, edi
		push	dword ptr [ecx+30h] ; lpFileName
		call	sub_7F806FAC
		cmp	[ebp+var_4], edi
		jnz	short loc_7F806E9A
		push	edi		; lParam
		push	edi		; wParam
		push	0F0h		; Msg
		push	268h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		test	eax, eax
		jnz	short loc_7F806E7B
		mov	eax, dword_7F835290
		mov	[eax+10h], edi

loc_7F806E7B:				; CODE XREF: sub_7F806861+610j
		mov	dword_7F8353AC,	1
		push	2		; lParam
		push	0BEh		; wParam
		push	111h		; Msg
		push	esi		; hWnd
		call	ds:PostMessageA
		jmp	short loc_7F806EDE
; ---------------------------------------------------------------------------

loc_7F806E9A:				; CODE XREF: sub_7F806861+5F9j
		cmp	[ebp+var_4], 50h
		jz	short loc_7F806ECB
		cmp	[ebp+var_4], 0B7h
		jz	short loc_7F806ECB
		cmp	[ebp+var_4], 3
		jnz	short loc_7F806EB6
		mov	eax, 151Fh
		jmp	short loc_7F806ED0
; ---------------------------------------------------------------------------

loc_7F806EB6:				; CODE XREF: sub_7F806861+64Cj
		mov	eax, [ebp+var_4]
		sub	eax, 13h
		cmp	eax, 1
		sbb	eax, eax
		and	eax, 20h
		add	eax, 150Dh
		jmp	short loc_7F806ED0
; ---------------------------------------------------------------------------

loc_7F806ECB:				; CODE XREF: sub_7F806861+63Dj
					; sub_7F806861+646j
		mov	eax, 150Ch

loc_7F806ED0:				; CODE XREF: sub_7F806861+653j
					; sub_7F806861+668j
		push	30h		; uType
		push	offset byte_7F833F30 ; lpCaption
		push	eax		; uID
		push	esi		; hWnd
		call	sub_7F808359

loc_7F806EDE:				; CODE XREF: sub_7F806861+458j
					; sub_7F806861+48Ej ...
		push	1		; bEnable
		push	esi		; hWnd
		call	ds:EnableWindow
		push	[ebp+hCursor]	; hCursor
		call	ds:SetCursor
		cmp	[ebp+var_4], 0
		jz	short loc_7F806F4B
		mov	edi, 266h
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:SetFocus
		push	0FFFFFFFFh
		push	0
		push	0B1h
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax
		jmp	short loc_7F806F45
; ---------------------------------------------------------------------------

loc_7F806F1E:				; CODE XREF: sub_7F806861+7Ej
		xor	esi, esi
		cmp	dword_7F8352DC,	esi
		jz	short loc_7F806F36
		mov	eax, dword_7F8352DC
		push	eax
		call	dword ptr [eax]
		mov	dword_7F8352DC,	esi

loc_7F806F36:				; CODE XREF: sub_7F806861+6C5j
		push	1		; lParam
		push	0BEh		; wParam
		push	111h		; Msg
		push	[ebp+hDlg]	; hWnd

loc_7F806F45:				; CODE XREF: sub_7F806861+CFj
					; sub_7F806861+46Aj ...
		call	ds:PostMessageA

loc_7F806F4B:				; CODE XREF: sub_7F806861+1Bj
					; sub_7F806861+36j ...
		mov	eax, 1
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F806861	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F806F59(HWND hWnd,	__int16)
sub_7F806F59	proc near		; CODE XREF: sub_7F8065A0+239p
					; sub_7F806861+15Ap ...

hWnd		= dword	ptr  4
arg_4		= word ptr  8

		push	ebx
		push	esi
		mov	esi, [esp+8+hWnd]
		push	edi
		push	ebp
		xor	edi, edi
		push	edi		; lParam
		push	edi		; wParam
		push	400h		; Msg
		mov	ebx, 0F4h
		push	esi		; hWnd
		call	ds:SendMessageA
		movzx	eax, ax
		push	1		; lParam
		push	edi		; wParam
		push	ebx		; Msg
		push	eax		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		movzx	ebp, [esp+10h+arg_4]
		push	edi		; lParam
		push	ebp		; wParam
		push	401h		; Msg
		push	esi		; hWnd
		call	ds:SendMessageA
		push	1		; lParam
		push	1		; wParam
		push	ebx		; Msg
		push	ebp		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F806F59	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F806FAC(LPCSTR lpFileName,	int)
sub_7F806FAC	proc near		; CODE XREF: sub_7F806861+5F1p

lpFileName	= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		xor	eax, eax
		mov	esi, [esp+4+arg_4]
		push	eax		; hTemplateFile
		push	80h		; dwFlagsAndAttributes
		push	1		; dwCreationDisposition
		push	eax		; lpSecurityAttributes
		mov	[esi], eax
		push	eax		; dwShareMode
		push	0C0000000h	; dwDesiredAccess
		push	[esp+1Ch+lpFileName] ; lpFileName
		call	ds:CreateFileA
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_7F806FDD
		call	ds:GetLastError
		mov	[esi], eax
		jmp	short loc_7F806FEE
; ---------------------------------------------------------------------------

loc_7F806FDD:				; CODE XREF: sub_7F806FAC+25j
		push	eax		; hObject
		call	ds:CloseHandle
		push	[esp+4+lpFileName] ; lpFileName
		call	ds:DeleteFileA

loc_7F806FEE:				; CODE XREF: sub_7F806FAC+2Fj
		pop	esi
		retn	8
sub_7F806FAC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F806FF2(HWND hDlg)
sub_7F806FF2	proc near		; CODE XREF: sub_7F805851+573p

var_2C		= tagRECT ptr -2Ch
Rect		= tagRECT ptr -1Ch
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
lpString1	= dword	ptr -4
hDlg		= dword	ptr  8

		push	ebp
		mov	eax, dword_7F835290
		mov	ebp, esp
		sub	esp, 2Ch
		mov	dword_7F835294,	offset sub_7F8071B1
		push	ebx
		push	esi
		push	edi
		push	2Eh
		push	dword ptr [eax+8]
		call	SzFindCh@8
		test	eax, eax
		jnz	short loc_7F807077
		xor	eax, eax
		lea	ecx, [ebp+lpString1]
		push	ecx
		mov	edx, dword_7F835290
		push	eax
		mov	[ebp+lpString1], eax
		push	dword ptr [edx+8] ; lpString
		call	ds:lstrlenA
		add	eax, 2
		push	eax
		call	sub_7F80A6DD
		test	eax, eax
		jz	short loc_7F807077
		mov	eax, dword_7F835290
		push	dword ptr [eax+8] ; lpString2
		push	[ebp+lpString1]	; lpString1
		call	ds:lstrcpyA
		push	offset a_	; "."
		push	[ebp+lpString1]	; lpString1
		call	ds:lstrcatA
		mov	eax, dword_7F835290
		add	eax, 8
		push	eax
		call	sub_7F80A72A
		mov	ecx, [ebp+lpString1]
		mov	edx, dword_7F835290
		mov	[edx+8], ecx

loc_7F807077:				; CODE XREF: sub_7F806FF2+24j
					; sub_7F806FF2+4Aj
		mov	eax, dword_7F835290
		mov	esi, [ebp+hDlg]
		push	dword ptr [eax+8] ; lpString
		push	2C7h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SetDlgItemTextA
		push	1		; bEnable
		push	384h		; nIDDlgItem
		push	esi		; hDlg
		mov	edi, 385h
		call	ds:GetDlgItem
		push	eax		; hWnd
		mov	ebx, ds:EnableWindow
		call	ebx ; EnableWindow
		push	1		; bEnable
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ebx ; EnableWindow
		push	1		; bEnable
		push	387h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ebx ; EnableWindow
		push	3		; int
		push	esi		; hWnd
		call	sub_7F8087A7
		lea	eax, [ebp+Rect]
		push	eax		; lpRect
		push	esi		; hWnd
		call	ds:GetClientRect
		lea	ecx, [ebp+var_2C]
		push	ecx		; lpRect
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:GetWindowRect
		mov	ebx, [ebp+var_2C.right]
		mov	eax, [ebp+var_2C.bottom]
		sub	ebx, [ebp+var_2C.left]
		sub	eax, [ebp+var_2C.top]
		mov	ecx, ebx
		mov	[ebp+lpString1], eax
		imul	ecx, 3
		mov	eax, [ebp+Rect.right]
		sub	eax, ecx
		sub	eax, [ebp+Rect.left]
		cdq
		and	edx, 3
		add	eax, edx
		sar	eax, 2
		mov	[ebp+var_8], eax
		mov	eax, [ebp+lpString1]
		imul	eax, 3
		cdq
		sub	eax, edx
		sar	eax, 1
		mov	[ebp+var_C], eax
		push	1		; bRepaint
		mov	eax, [ebp+Rect.bottom]
		push	[ebp+lpString1]	; nHeight
		push	ebx		; nWidth
		sub	eax, [ebp+var_C]
		push	eax		; Y
		mov	eax, [ebp+var_8]
		imul	eax, 3
		lea	eax, [eax+ebx*2]
		add	eax, [ebp+Rect.left]
		push	eax		; X
		push	387h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:MoveWindow
		push	1		; bRepaint
		mov	eax, [ebp+Rect.bottom]
		push	[ebp+lpString1]	; nHeight
		push	ebx		; nWidth
		sub	eax, [ebp+var_C]
		push	eax		; Y
		mov	eax, [ebp+var_8]
		add	eax, eax
		add	eax, [ebp+Rect.left]
		add	eax, ebx
		push	eax		; X
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:MoveWindow
		push	1		; bRepaint
		mov	eax, [ebp+Rect.bottom]
		push	[ebp+lpString1]	; nHeight
		push	ebx		; nWidth
		sub	eax, [ebp+var_C]
		push	eax		; Y
		mov	eax, [ebp+Rect.left]
		add	eax, [ebp+var_8]
		push	eax		; X
		push	384h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:MoveWindow
		push	5		; nCmdShow
		push	esi		; hWnd
		call	ds:ShowWindow
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F806FF2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8071B1(HWND hWnd,	int, int, int, int, int)
sub_7F8071B1	proc near		; DATA XREF: sub_7F806FF2+Bo

hWnd		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		cmp	[esp+arg_4], 111h
		jnz	short loc_7F807225
		mov	eax, [ebp+arg_10]
		cmp	eax, 2
		jz	short loc_7F8071DD
		cmp	eax, 384h
		jz	short loc_7F807202
		cmp	eax, 385h
		jz	short loc_7F8071DD
		cmp	eax, 386h
		jz	short loc_7F807210
		jmp	short loc_7F807225
; ---------------------------------------------------------------------------

loc_7F8071DD:				; CODE XREF: sub_7F8071B1+13j
					; sub_7F8071B1+21j
		push	131h		; uType
		push	offset byte_7F833F30 ; lpCaption
		push	1527h		; uID
		push	[ebp+hWnd]	; hWnd
		call	sub_7F808359
		cmp	eax, 1
		jnz	short loc_7F807225
		push	0
		push	0D0h
		jmp	short loc_7F807217
; ---------------------------------------------------------------------------

loc_7F807202:				; CODE XREF: sub_7F8071B1+1Aj
		mov	dword_7F83538C,	1
		push	2
		jmp	short loc_7F807212
; ---------------------------------------------------------------------------

loc_7F807210:				; CODE XREF: sub_7F8071B1+28j
		push	1		; lParam

loc_7F807212:				; CODE XREF: sub_7F8071B1+5Dj
		push	0BEh		; wParam

loc_7F807217:				; CODE XREF: sub_7F8071B1+4Fj
		push	111h		; Msg
		push	[ebp+hWnd]	; hWnd
		call	ds:PostMessageA

loc_7F807225:				; CODE XREF: sub_7F8071B1+Bj
					; sub_7F8071B1+2Aj ...
		mov	eax, 1
		pop	ebp
		retn	18h
sub_7F8071B1	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F80722E(int, UINT uValue, int)
sub_7F80722E	proc near		; DATA XREF: sub_7F80725C+72o

uValue		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+uValue]
		push	338h		; int
		push	[esp+4+arg_8]	; int
		push	[esp+8+uValue]	; uValue
		push	hDlg		; hDlg
		mov	dword_7F833698,	eax
		call	sub_7F80A47A
		cmp	eax, 1
		sbb	eax, eax
		and	eax, 80040113h
		retn	0Ch
sub_7F80722E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80725C(HWND hWnd)
sub_7F80725C	proc near		; CODE XREF: sub_7F805851+580p

Buffer		= byte ptr -74h
Rect		= tagRECT ptr -34h
var_24		= tagRECT ptr -24h
Points		= tagPOINT ptr -14h
var_C		= dword	ptr -0Ch
nWidth		= dword	ptr -8
hCursor		= dword	ptr -4
hWnd		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 74h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		cmp	dword_7F8352DC,	esi
		jz	short loc_7F80727D
		mov	eax, dword_7F8352DC
		push	eax
		call	dword ptr [eax]
		mov	dword_7F8352DC,	esi

loc_7F80727D:				; CODE XREF: sub_7F80725C+11j
		cmp	dword_7F8352D8,	1
		jnz	short loc_7F8072B0
		push	offset dword_7F8352E4
		call	sub_7F80A72A
		xor	eax, eax
		push	1
		push	0BEh
		mov	dword_7F8352E4,	eax
		push	111h
		mov	dword_7F8353AC,	eax
		push	[ebp+hWnd]
		jmp	loc_7F8076CE
; ---------------------------------------------------------------------------

loc_7F8072B0:				; CODE XREF: sub_7F80725C+28j
		push	7F02h		; lpCursorName
		xor	edi, edi
		push	edi		; hInstance
		call	ds:LoadCursorA
		push	eax		; hCursor
		call	ds:SetCursor
		push	offset dword_7F8352DC ;	int
		mov	[ebp+hCursor], eax
		push	edi		; int
		push	offset sub_7F80722E ; int
		push	edi		; int
		mov	eax, dword_7F835290
		push	edi		; int
		mov	esi, [ebp+hWnd]
		push	offset MAPIFreeBuffer@4	; int
		push	offset MAPIAllocateMore@12 ; int
		push	offset MAPIAllocateBuffer@8 ; int
		mov	ecx, dword_7F835290
		push	dword ptr [eax+24h] ; int
		push	esi		; int
		mov	eax, hInstance
		push	eax		; int
		push	dword ptr [ecx+0Ch] ; int
		push	dword ptr [ecx+8] ; lpFileName
		call	ScGetPABMigrationContext@52
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F80731D
		push	offset dword_7F8352E0
		mov	eax, dword_7F8352DC
		push	eax
		call	dword ptr [eax+4]
		mov	ebx, eax

loc_7F80731D:				; CODE XREF: sub_7F80725C+AFj
		push	[ebp+hCursor]	; hCursor
		call	ds:SetCursor
		xor	edi, edi
		test	ebx, ebx
		jnz	loc_7F8073E5
		mov	eax, dword_7F8352E0
		mov	eax, [eax]
		cmp	eax, 2
		jnb	loc_7F8073E5
		push	offset dword_7F8352E4
		test	eax, eax
		jnz	short loc_7F807356
		call	sub_7F80A72A
		mov	dword_7F8352E4,	edi
		jmp	short loc_7F8073A8
; ---------------------------------------------------------------------------

loc_7F807356:				; CODE XREF: sub_7F80725C+EBj
		push	0
		push	0Ch
		call	sub_7F80A757
		test	eax, eax
		jz	loc_7F8076D4
		mov	eax, dword_7F8352E4
		add	eax, 8
		push	eax
		mov	eax, dword_7F8352E4
		push	eax
		push	4
		call	sub_7F80A757
		test	eax, eax
		jz	loc_7F8076D4
		mov	eax, dword_7F8352E0
		mov	ecx, dword_7F8352E4
		mov	edx, [eax]
		mov	[ecx], edx
		mov	eax, dword_7F8352E0
		mov	edx, [eax+8]
		mov	eax, dword_7F8352E4
		mov	ecx, [edx]
		mov	edx, [eax+8]
		mov	[edx], ecx

loc_7F8073A8:				; CODE XREF: sub_7F80725C+F8j
		mov	edi, 1
		push	2		; lParam
		push	0BEh		; wParam
		mov	dword_7F8353AC,	edi
		push	111h		; Msg
		push	esi		; hWnd
		call	ds:PostMessageA
		push	270h		; nIDButton
		push	esi		; hDlg
		call	ds:IsDlgButtonChecked
		test	eax, eax
		jnz	loc_7F8076D4
		mov	dword_7F833268,	edi
		jmp	loc_7F8076D4
; ---------------------------------------------------------------------------

loc_7F8073E5:				; CODE XREF: sub_7F80725C+CEj
					; sub_7F80725C+DEj
		push	4		; int
		push	esi		; hWnd
		call	sub_7F8087A7
		push	40h		; cchBufferMax
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		push	1526h		; uID
		push	hInstance	; hInstance
		call	ds:LoadStringA
		lea	ecx, [ebp+Buffer]
		push	ecx		; lpString
		push	esi		; hWnd
		call	ds:SetWindowTextA
		lea	ecx, [ebp+Rect]
		push	ecx		; lpRect
		push	esi		; hWnd
		call	ds:GetClientRect
		lea	ecx, [ebp+var_24]
		push	ecx		; lpRect
		push	385h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:GetWindowRect
		mov	eax, [ebp+var_24.right]
		xor	edi, edi
		sub	eax, [ebp+var_24.left]
		mov	[ebp+Points.y],	edi
		push	1		; cPoints
		lea	ecx, [ebp+Points]
		push	ecx		; lpPoints
		mov	[ebp+nWidth], eax
		mov	eax, [ebp+var_24.bottom]
		push	esi		; hWndTo
		sub	eax, [ebp+var_24.top]
		push	2D2h		; nIDDlgItem
		push	esi		; hDlg
		mov	[ebp+hCursor], eax
		mov	[ebp+Points.x],	edi
		call	ds:GetDlgItem
		push	eax		; hWndFrom
		call	ds:MapWindowPoints
		mov	eax, [ebp+nWidth]
		push	1		; bRepaint
		imul	eax, 6
		cdq
		push	[ebp+hCursor]	; nHeight
		push	[ebp+nWidth]	; nWidth
		push	[ebp+Points.y]	; Y
		and	edx, 3
		add	eax, edx
		sar	eax, 2
		mov	[ebp+var_C], eax
		mov	eax, [ebp+Rect.right]
		sub	eax, [ebp+var_C]
		sub	eax, 2
		push	eax		; X
		push	384h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:MoveWindow
		push	1		; bRepaint
		mov	eax, [ebp+hCursor]
		push	[ebp+hCursor]	; nHeight
		push	[ebp+nWidth]	; nWidth
		imul	eax, 3
		cdq
		sub	eax, edx
		mov	ecx, [ebp+Points.y]
		sar	eax, 1
		add	ecx, eax
		mov	eax, [ebp+Rect.right]
		push	ecx		; Y
		sub	eax, [ebp+var_C]
		sub	eax, 2
		push	eax		; X
		push	385h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:MoveWindow
		push	1		; bRepaint
		mov	eax, [ebp+hCursor]
		push	[ebp+hCursor]	; nHeight
		push	[ebp+nWidth]	; nWidth
		imul	eax, 6
		cdq
		sub	eax, edx
		mov	ecx, [ebp+Points.y]
		sar	eax, 1
		add	ecx, eax
		mov	eax, [ebp+Rect.right]
		push	ecx		; Y
		sub	eax, [ebp+var_C]
		sub	eax, 2
		push	eax		; X
		push	387h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:MoveWindow
		mov	dword_7F835294,	offset sub_7F8076DD
		test	ebx, ebx
		jnz	loc_7F8075BD
		push	5		; nCmdShow
		push	esi		; hWnd
		call	ds:ShowWindow
		push	edi		; lParam
		push	edi		; wParam
		push	184h		; Msg
		push	2D2h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		mov	eax, dword_7F8352E0
		mov	[ebp+hCursor], edi
		cmp	[eax], edi
		jbe	short loc_7F807593
		xor	ebx, ebx
		mov	edi, 2D2h

loc_7F80754C:				; CODE XREF: sub_7F80725C+335j
		mov	eax, dword_7F8352E0
		mov	ecx, [eax+4]
		push	dword ptr [ecx+ebx] ; lParam
		push	0		; wParam
		push	180h		; Msg
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		mov	ecx, dword_7F8352E0
		mov	edx, [ecx+8]
		push	dword ptr [edx+ebx] ; lParam
		push	eax		; wParam
		push	19Ah		; Msg
		add	ebx, 4
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		mov	ecx, dword_7F8352E0
		inc	[ebp+hCursor]
		mov	eax, [ebp+hCursor]
		cmp	[ecx], eax
		ja	short loc_7F80754C

loc_7F807593:				; CODE XREF: sub_7F80725C+2E7j
		push	0		; lParam
		mov	edi, 2D2h
		push	1		; wParam
		push	185h		; Msg
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:SetFocus
		jmp	loc_7F8076D4
; ---------------------------------------------------------------------------

loc_7F8075BD:				; CODE XREF: sub_7F80725C+2BBj
		cmp	ebx, 8004010Fh
		jnz	short loc_7F8075DC
		push	30h		; uType
		push	offset byte_7F833F30 ; lpCaption
		push	150Eh		; uID
		push	esi		; hWnd
		call	sub_7F808359
		jmp	loc_7F807691
; ---------------------------------------------------------------------------

loc_7F8075DC:				; CODE XREF: sub_7F80725C+367j
		cmp	ebx, 80070005h
		jnz	short loc_7F80761A
		push	200h		; cchBufferMax
		mov	edi, offset byte_7F8336A8
		push	edi		; lpBuffer
		mov	eax, hInstance
		push	1518h		; uID
		push	eax		; hInstance
		call	ds:LoadStringA
		mov	eax, dword_7F835290
		push	dword ptr [eax+8]
		push	edi		; LPCSTR
		mov	edi, offset Text
		push	edi		; LPSTR
		call	ds:wsprintfA
		add	esp, 0Ch
		jmp	short loc_7F807682
; ---------------------------------------------------------------------------

loc_7F80761A:				; CODE XREF: sub_7F80725C+386j
		push	200h		; cchBufferMax
		mov	edi, offset byte_7F8336A8
		push	edi		; lpBuffer
		cmp	ebx, 80040600h
		jnz	short loc_7F807658
		push	151Ch		; uID
		mov	eax, hInstance
		push	eax		; hInstance
		call	ds:LoadStringA
		mov	eax, dword_7F835290
		push	dword ptr [eax+8]
		push	edi		; LPCSTR
		mov	edi, offset Text
		push	edi		; LPSTR
		call	ds:wsprintfA
		add	esp, 0Ch
		jmp	short loc_7F807682
; ---------------------------------------------------------------------------

loc_7F807658:				; CODE XREF: sub_7F80725C+3CFj
		push	150Fh		; uID
		mov	eax, hInstance
		push	eax		; hInstance
		call	ds:LoadStringA
		push	ebx
		mov	eax, dword_7F835290
		push	dword ptr [eax+8]
		push	edi		; LPCSTR
		mov	edi, offset Text
		push	edi		; LPSTR
		call	ds:wsprintfA
		add	esp, 10h

loc_7F807682:				; CODE XREF: sub_7F80725C+3BCj
					; sub_7F80725C+3FAj
		push	30h		; uType
		push	offset byte_7F833F30 ; lpCaption
		push	edi		; lpText
		push	esi		; hWnd
		call	ds:MessageBoxA

loc_7F807691:				; CODE XREF: sub_7F80725C+37Bj
		xor	edi, edi
		cmp	dword_7F8352DC,	edi
		jz	short loc_7F8076A9
		mov	eax, dword_7F8352DC
		push	eax
		call	dword ptr [eax]
		mov	dword_7F8352DC,	edi

loc_7F8076A9:				; CODE XREF: sub_7F80725C+43Dj
		xor	eax, eax
		mov	dword_7F83538C,	eax
		cmp	bEnable, eax
		jz	short loc_7F8076C1
		push	2
		push	0BEh
		jmp	short loc_7F8076C8
; ---------------------------------------------------------------------------

loc_7F8076C1:				; CODE XREF: sub_7F80725C+45Aj
		push	0		; lParam
		push	0D0h		; wParam

loc_7F8076C8:				; CODE XREF: sub_7F80725C+463j
		push	111h		; Msg
		push	esi		; hWnd

loc_7F8076CE:				; CODE XREF: sub_7F80725C+4Fj
		call	ds:PostMessageA

loc_7F8076D4:				; CODE XREF: sub_7F80725C+105j
					; sub_7F80725C+123j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F80725C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8076DD(HWND hDlg,	int, int, int, int, int)
sub_7F8076DD	proc near		; DATA XREF: sub_7F80725C+2AFo

lParam		= dword	ptr -4
hDlg		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		mov	[ebp+lParam], 0
		cmp	[ebp+arg_4], 111h
		push	ebx
		push	esi
		push	edi
		jnz	loc_7F80794D
		mov	eax, [ebp+arg_10]
		cmp	eax, 2
		jz	short loc_7F80772B
		cmp	eax, 2D2h
		jz	short loc_7F80776F
		cmp	eax, 384h
		jz	loc_7F8077C2
		cmp	eax, 385h
		jz	short loc_7F80772B
		cmp	eax, 386h
		jz	loc_7F807920
		jmp	loc_7F80794D
; ---------------------------------------------------------------------------

loc_7F80772B:				; CODE XREF: sub_7F8076DD+23j
					; sub_7F8076DD+3Cj
		push	131h		; uType
		push	offset byte_7F833F30 ; lpCaption
		push	1527h		; uID
		push	[ebp+hDlg]	; hWnd
		call	sub_7F808359
		cmp	eax, 1
		jnz	loc_7F80794D
		xor	esi, esi
		cmp	dword_7F8352DC,	esi
		jz	short loc_7F807763
		mov	eax, dword_7F8352DC
		push	eax
		call	dword ptr [eax]
		mov	dword_7F8352DC,	esi

loc_7F807763:				; CODE XREF: sub_7F8076DD+76j
		push	0
		push	0D0h
		jmp	loc_7F80793F
; ---------------------------------------------------------------------------

loc_7F80776F:				; CODE XREF: sub_7F8076DD+2Aj
		push	0		; lParam
		push	0		; wParam
		push	190h		; Msg
		push	2D2h		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:SendDlgItemMessageA
		test	eax, eax
		jz	short loc_7F8077A6
		push	1		; bEnable
		push	384h		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		jmp	loc_7F80794D
; ---------------------------------------------------------------------------

loc_7F8077A6:				; CODE XREF: sub_7F8076DD+ABj
		push	0		; bEnable
		push	384h		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		jmp	loc_7F80794D
; ---------------------------------------------------------------------------

loc_7F8077C2:				; CODE XREF: sub_7F8076DD+31j
		xor	esi, esi
		push	esi		; lParam
		push	esi		; wParam
		push	190h		; Msg
		push	2D2h		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:SendDlgItemMessageA
		cmp	eax, esi
		mov	edi, eax
		jz	loc_7F80794D
		lea	ebx, ds:0[edi*4]
		lea	eax, [ebp+lParam]
		push	eax
		push	esi
		push	ebx
		call	sub_7F80A757
		test	eax, eax
		jz	loc_7F80794D
		push	[ebp+lParam]	; lParam
		push	edi		; wParam
		push	191h		; Msg
		push	2D2h		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:SendDlgItemMessageA
		cmp	eax, edi
		jnz	loc_7F80794D
		push	offset dword_7F8352E4
		push	esi
		push	0Ch
		call	sub_7F80A757
		test	eax, eax
		jz	loc_7F80794D
		mov	eax, dword_7F8352E4
		add	eax, 8
		push	eax
		mov	eax, dword_7F8352E4
		push	eax
		push	ebx
		call	sub_7F80A757
		test	eax, eax
		jz	loc_7F80794D
		mov	eax, dword_7F8352E4
		test	edi, edi
		mov	[eax], edi
		jz	short loc_7F807888
		xor	ebx, ebx

loc_7F80785B:				; CODE XREF: sub_7F8076DD+1A9j
		push	0		; lParam
		mov	eax, [ebp+lParam]
		push	dword ptr [eax+ebx] ; wParam
		push	199h		; Msg
		push	2D2h		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:SendDlgItemMessageA
		mov	ecx, dword_7F8352E4
		mov	edx, [ecx+8]
		mov	[edx+ebx], eax
		add	ebx, 4
		dec	edi
		jnz	short loc_7F80785B

loc_7F807888:				; CODE XREF: sub_7F8076DD+17Aj
		lea	eax, [ebp+lParam]
		mov	esi, 384h
		push	eax
		call	sub_7F80A72A
		mov	dword_7F8353AC,	1
		push	5		; nCmdShow
		push	esi		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		mov	ebx, 385h
		call	ds:ShowWindow
		push	5		; nCmdShow
		push	ebx		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		mov	edi, 387h
		call	ds:ShowWindow
		push	5		; nCmdShow
		push	edi		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	1		; bEnable
		push	esi		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	1		; bEnable
		push	ebx		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	1		; bEnable
		push	edi		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	2
		jmp	short loc_7F80793A
; ---------------------------------------------------------------------------

loc_7F807920:				; CODE XREF: sub_7F8076DD+43j
		xor	esi, esi
		cmp	dword_7F8352DC,	esi
		jz	short loc_7F807938
		mov	eax, dword_7F8352DC
		push	eax
		call	dword ptr [eax]
		mov	dword_7F8352DC,	esi

loc_7F807938:				; CODE XREF: sub_7F8076DD+24Bj
		push	1		; lParam

loc_7F80793A:				; CODE XREF: sub_7F8076DD+241j
		push	0BEh		; wParam

loc_7F80793F:				; CODE XREF: sub_7F8076DD+8Dj
		push	111h		; Msg
		push	[ebp+hDlg]	; hWnd
		call	ds:PostMessageA

loc_7F80794D:				; CODE XREF: sub_7F8076DD+17j
					; sub_7F8076DD+49j ...
		mov	eax, 1
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F8076DD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80795B(HWND hDlg)
sub_7F80795B	proc near		; CODE XREF: sub_7F805851+59Ap

String		= byte ptr -13Ch
Buffer		= byte ptr -0BCh
var_3C		= byte ptr -3Ch
var_2C		= tagRECT ptr -2Ch
Rect		= tagRECT ptr -1Ch
var_C		= dword	ptr -0Ch
nHeight		= dword	ptr -8
nWidth		= dword	ptr -4
hDlg		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 13Ch
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		cmp	dword_7F8352DC,	esi
		jz	short loc_7F80797F
		mov	eax, dword_7F8352DC
		push	eax
		call	dword ptr [eax]
		mov	dword_7F8352DC,	esi

loc_7F80797F:				; CODE XREF: sub_7F80795B+14j
		mov	esi, 80h
		lea	eax, [ebp+Buffer]
		push	esi		; cchBufferMax
		mov	ecx, dword_7F835290
		push	eax		; lpBuffer
		mov	eax, [ecx]
		and	eax, 1
		cmp	eax, 1
		sbb	eax, eax
		add	eax, 1525h
		push	eax		; uID
		push	hInstance	; hInstance
		call	ds:LoadStringA
		lea	ecx, [ebp+Buffer]
		mov	edi, [ebp+hDlg]
		push	ecx		; lpString
		push	33Eh		; nIDDlgItem
		push	edi		; hDlg
		call	ds:SetDlgItemTextA
		push	esi		; cchBufferMax
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		push	1528h		; uID
		push	hInstance	; hInstance
		call	ds:LoadStringA
		mov	ecx, dword_7F835290
		lea	eax, [ebp+Buffer]
		mov	ebx, offset aSLu ; "%s %lu"
		push	dword ptr [ecx+54h]
		push	eax
		push	ebx		; LPCSTR
		lea	ecx, [ebp+String]
		push	ecx		; LPSTR
		call	ds:wsprintfA
		add	esp, 10h
		lea	eax, [ebp+String]
		push	eax		; lpString
		push	33Fh		; nIDDlgItem
		push	edi		; hDlg
		call	ds:SetDlgItemTextA
		push	esi		; cchBufferMax
		lea	ecx, [ebp+Buffer]
		push	ecx		; lpBuffer
		mov	eax, hInstance
		push	1529h		; uID
		push	eax		; hInstance
		call	ds:LoadStringA
		lea	edx, [ebp+Buffer]
		lea	eax, [ebp+String]
		push	dword_7F8336A0
		push	edx
		push	ebx		; LPCSTR
		push	eax		; LPSTR
		call	ds:wsprintfA
		add	esp, 10h
		lea	ecx, [ebp+String]
		push	ecx		; lpString
		push	340h		; nIDDlgItem
		push	edi		; hDlg
		call	ds:SetDlgItemTextA
		push	esi		; cchBufferMax
		lea	ecx, [ebp+Buffer]
		mov	eax, hInstance
		push	ecx		; lpBuffer
		push	152Ah		; uID
		push	eax		; hInstance
		call	ds:LoadStringA
		lea	edx, [ebp+Buffer]
		lea	eax, [ebp+String]
		push	dword_7F833FB0
		push	edx
		push	ebx		; LPCSTR
		push	eax		; LPSTR
		call	ds:wsprintfA
		add	esp, 10h
		lea	ecx, [ebp+String]
		push	ecx		; lpString
		push	341h		; nIDDlgItem
		push	edi		; hDlg
		call	ds:SetDlgItemTextA
		push	esi		; cchTime
		lea	ecx, [ebp+Buffer]
		push	ecx		; lpTimeStr
		mov	eax, dword_7F835290
		push	0		; lpFormat
		add	eax, 38h
		mov	[ebp+Buffer], 0
		push	eax		; lpTime
		push	0Ch		; dwFlags
		push	0		; Locale
		call	ds:GetTimeFormatA
		push	esi		; cchBufferMax
		lea	ecx, [ebp+String]
		push	ecx		; lpBuffer
		push	152Bh		; uID
		push	hInstance	; hInstance
		call	ds:LoadStringA
		push	offset asc_7F8353EC ; "	"
		lea	ecx, [ebp+String]
		push	ecx		; lpString1
		call	ds:lstrcatA
		lea	ecx, [ebp+Buffer]
		lea	edx, [ebp+String]
		push	ecx		; lpString2
		push	edx		; lpString1
		call	ds:lstrcatA
		lea	ecx, [ebp+String]
		push	ecx		; lpString
		push	342h		; nIDDlgItem
		push	edi		; hDlg
		call	ds:SetDlgItemTextA
		push	7		; int
		push	edi		; hWnd
		call	sub_7F8087A7
		push	5		; nCmdShow
		mov	esi, ds:GetDlgItem
		push	387h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	1		; bEnable
		push	387h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		lea	eax, [ebp+Rect]
		mov	ebx, 385h
		push	eax		; lpRect
		push	edi		; hWnd
		call	ds:GetClientRect
		lea	ecx, [ebp+var_2C]
		push	ecx		; lpRect
		push	ebx		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:GetWindowRect
		mov	eax, [ebp+var_2C.right]
		sub	eax, [ebp+var_2C.left]
		mov	[ebp+nWidth], eax
		mov	eax, [ebp+var_2C.bottom]
		sub	eax, [ebp+var_2C.top]
		push	1		; bRepaint
		mov	[ebp+nHeight], eax
		imul	eax, 3
		cdq
		push	[ebp+nHeight]	; nHeight
		push	[ebp+nWidth]	; nWidth
		sub	eax, edx
		mov	ecx, [ebp+Rect.right]
		sar	eax, 1
		mov	[ebp+var_C], eax
		mov	eax, [ebp+Rect.bottom]
		sub	eax, [ebp+var_C]
		push	eax		; Y
		mov	eax, [ebp+nWidth]
		imul	eax, 6
		cdq
		and	edx, 3
		add	eax, edx
		sar	eax, 2
		sub	ecx, eax
		sub	ecx, 2
		push	ecx		; X
		push	387h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:MoveWindow
		push	1		; bRepaint
		mov	eax, [ebp+Rect.bottom]
		sub	eax, [ebp+var_C]
		mov	ecx, [ebp+Rect.right]
		push	[ebp+nHeight]	; nHeight
		push	[ebp+nWidth]	; nWidth
		push	eax		; Y
		mov	eax, [ebp+nWidth]
		imul	eax, 0Bh
		cdq
		and	edx, 3
		add	eax, edx
		sar	eax, 2
		sub	ecx, eax
		sub	ecx, 2
		push	ecx		; X
		push	ebx		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:MoveWindow
		push	10h		; cchMax
		lea	eax, [ebp+var_3C]
		push	eax		; lpString
		push	384h		; nIDDlgItem
		push	edi		; hDlg
		call	ds:GetDlgItemTextA
		lea	ecx, [ebp+var_3C]
		push	ecx		; lpString
		push	ebx		; nIDDlgItem
		push	edi		; hDlg
		call	ds:SetDlgItemTextA
		push	0		; nCmdShow
		push	384h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	0		; bEnable
		push	384h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	5		; nCmdShow
		push	ebx		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	1		; bEnable
		push	ebx		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	5		; nCmdShow
		push	387h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	1		; bEnable
		push	387h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	0		; bEnable
		push	32Bh		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	0		; bEnable
		push	32Ch		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	0		; bEnable
		push	32Dh		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	0		; bEnable
		push	335h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	0		; bEnable
		push	336h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	0		; bEnable
		push	337h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	0		; nCmdShow
		push	32Bh		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	0		; nCmdShow
		push	32Ch		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	0		; nCmdShow
		push	32Dh		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	0		; nCmdShow
		push	335h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	0		; nCmdShow
		push	336h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	0		; nCmdShow
		push	337h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	5		; nCmdShow
		push	edi		; hWnd
		call	ds:ShowWindow
		mov	dword_7F835294,	offset sub_7F807D63
		push	ebx		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:SetFocus
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F80795B	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F807D63(HWND hDlg,	int, int, int, int, int)
sub_7F807D63	proc near		; DATA XREF: sub_7F80795B+3EAo

hDlg		= dword	ptr  4
arg_4		= dword	ptr  8
arg_10		= dword	ptr  14h

		cmp	[esp+arg_4], 111h
		jnz	short loc_7F807D94
		mov	eax, [esp+arg_10]
		cmp	eax, 2
		jz	short loc_7F807D7D
		cmp	eax, 385h
		jnz	short loc_7F807D94

loc_7F807D7D:				; CODE XREF: sub_7F807D63+11j
		mov	eax, dword_7F835290
		push	eax
		call	sub_7F808949
		push	1		; nResult
		push	[esp+4+hDlg]	; hDlg
		call	ds:EndDialog

loc_7F807D94:				; CODE XREF: sub_7F807D63+8j
					; sub_7F807D63+18j
		mov	eax, 1
		retn	18h
sub_7F807D63	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F807D9C(HWND hWnd)
sub_7F807D9C	proc near		; CODE XREF: sub_7F805851+58Dp

var_160		= byte ptr -160h
Buffer		= byte ptr -0E0h
Rect		= tagRECT ptr -60h
var_50		= SYSTEMTIME ptr -50h
SystemTime	= _SYSTEMTIME ptr -40h
var_30		= tagRECT ptr -30h
var_20		= tagRECT ptr -20h
Points		= tagPOINT ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
hWnd		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 160h
		cmp	dword_7F833268,	0
		mov	[ebp+var_4], 1
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+hWnd]
		push	esi		; hDlg
		jz	short loc_7F807DC3
		call	sub_7F809E94
		jmp	short loc_7F807DC8
; ---------------------------------------------------------------------------

loc_7F807DC3:				; CODE XREF: sub_7F807D9C+1Ej
		call	sub_7F80887D

loc_7F807DC8:				; CODE XREF: sub_7F807D9C+25j
		mov	edi, bEnable
		xor	eax, eax
		cmp	dword_7F83538C,	eax
		jnz	short loc_7F807DE5
		cmp	dword_7F83537C,	eax
		jnz	short loc_7F807DE5
		mov	[ebp+var_8], eax
		jmp	short loc_7F807DEC
; ---------------------------------------------------------------------------

loc_7F807DE5:				; CODE XREF: sub_7F807D9C+3Aj
					; sub_7F807D9C+42j
		mov	[ebp+var_8], 1

loc_7F807DEC:				; CODE XREF: sub_7F807D9C+47j
		mov	ebx, 80h
		lea	eax, [ebp+Buffer]
		push	ebx		; cchBufferMax
		push	eax		; lpBuffer
		push	1515h		; uID
		push	hInstance	; hInstance
		call	ds:LoadStringA
		push	ebx		; cchBufferMax
		lea	ecx, [ebp+var_160]
		push	ecx		; lpBuffer
		push	1516h		; uID
		push	hInstance	; hInstance
		call	ds:LoadStringA
		mov	eax, dword_7F8353C8
		push	6		; uFlags
		shl	eax, 4
		xor	ebx, ebx
		mov	eax, off_7F835350[eax]
		push	dword ptr [eax+4] ; cy
		push	dword ptr [eax]	; cx
		push	ebx		; Y
		push	ebx		; X
		push	ebx		; hWndInsertAfter
		push	esi		; hWnd
		call	ds:SetWindowPos
		push	5		; nCmdShow
		push	esi		; hWnd
		call	ds:ShowWindow
		lea	eax, [ebp+var_160]
		lea	edx, [ebp+Buffer]
		push	[ebp+var_8]	; BOOL
		push	edi		; bEnable
		push	dword_7F833264	; int
		push	eax		; LPCSTR
		push	edx		; lpString
		push	esi		; hDlg
		call	sub_7F80A115
		lea	ecx, [ebp+Rect]
		mov	edi, 339h
		push	ecx		; lpRect
		push	esi		; hWnd
		call	ds:GetClientRect
		lea	ecx, [ebp+var_20]
		push	ecx		; lpRect
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:GetWindowRect
		lea	eax, [ebp+var_30]
		push	eax		; lpRect
		push	32Ch		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:GetClientRect
		mov	eax, [ebp+var_30.right]
		mov	ecx, [ebp+var_30.bottom]
		mov	[ebp+Points.x],	eax
		mov	[ebp+Points.y],	ecx
		push	1		; cPoints
		lea	eax, [ebp+Points]
		push	eax		; lpPoints
		push	esi		; hWndTo
		push	32Ch		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWndFrom
		call	ds:MapWindowPoints
		mov	eax, [ebp+var_20.right]
		mov	ecx, [ebp+var_20.bottom]
		sub	eax, [ebp+var_20.left]
		sub	ecx, [ebp+var_20.top]
		push	ebx		; bRepaint
		push	ecx		; nHeight
		push	eax		; nWidth
		mov	ecx, [ebp+Points.y]
		imul	eax, 6
		cdq
		inc	ecx
		and	edx, 3
		push	ecx		; Y
		add	eax, edx
		sar	eax, 2
		mov	ecx, [ebp+Rect.right]
		sub	ecx, eax
		sub	ecx, 2
		push	ecx		; X
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:MoveWindow
		push	1		; bEnable
		push	esi		; hWnd
		call	ds:EnableWindow
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:SetFocus
		push	ebx		; bEnable
		push	384h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	ebx		; bEnable
		push	385h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	ebx		; bEnable
		push	387h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		mov	dword_7F835298,	1
		push	ebx		; bErase
		push	ebx		; lpRect
		push	esi		; hWnd
		call	ds:InvalidateRect
		push	esi		; hWnd
		call	ds:UpdateWindow
		push	0FFFFFFFCh	; nIndex
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:GetWindowLongA
		push	offset sub_7F809FA2 ; dwNewLong
		mov	lpPrevWndFunc, eax
		push	0FFFFFFFCh	; nIndex
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:SetWindowLongA
		push	ebx		; lParam
		push	edi		; wParam
		push	401h		; Msg
		push	esi		; hWnd
		call	ds:SendMessageA
		push	1		; lParam
		push	1		; wParam
		push	0F4h		; Msg
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:UpdateWindow
		push	ebx		; int
		mov	uValue,	ebx
		mov	eax, hInstance
		mov	ecx, dword_7F835290
		push	eax		; hInstance
		mov	dword_7F833698,	ebx
		mov	dword_7F8336A0,	ebx
		mov	dword_7F833FB0,	ebx
		push	dword ptr [ecx+8] ; int
		call	sub_7F80530D
		mov	edi, eax
		cmp	dword_7F8352DC,	ebx
		jz	short loc_7F80800A
		mov	eax, dword_7F8352DC
		mov	[eax+5Ch], edi

loc_7F80800A:				; CODE XREF: sub_7F807D9C+264j
		lea	eax, [ebp+SystemTime]
		push	eax		; lpSystemTime
		call	ds:GetSystemTime
		mov	eax, dword_7F835290
		test	byte ptr [eax],	1
		jnz	short loc_7F808099
		xor	ebx, ebx
		cmp	bEnable, ebx
		jz	short loc_7F808099
		cmp	dword ptr [eax+14h], 1
		jnz	short loc_7F808066
		push	eax		; int
		push	esi		; hWnd
		call	sub_7F8091A3
		mov	ecx, dword_7F835290
		mov	[ecx+2Ch], eax
		mov	ecx, dword_7F835290
		cmp	[ecx+2Ch], ebx
		jnz	short loc_7F808066
		push	ebx		; lParam
		push	0D0h		; wParam
		push	111h		; Msg
		push	esi		; hWnd
		call	ds:PostMessageA
		mov	dword_7F835298,	ebx
		jmp	loc_7F80817B
; ---------------------------------------------------------------------------

loc_7F808066:				; CODE XREF: sub_7F807D9C+290j
					; sub_7F807D9C+2ABj
		mov	eax, 0
		cmp	edi, 1
		adc	eax, 0FFFFFFFFh
		and	eax, 10000000h
		push	eax		; int
		push	esi		; hWnd
		call	sub_7F8081B3
		mov	ecx, dword_7F835290
		mov	[ebp+var_4], eax
		cmp	dword ptr [ecx+14h], 1
		jnz	short loc_7F808099
		cmp	dword ptr [ecx+10h], 0
		jnz	short loc_7F808099
		push	ecx
		push	esi
		call	sub_7F8096A8

loc_7F808099:				; CODE XREF: sub_7F807D9C+280j
					; sub_7F807D9C+28Aj ...
		mov	eax, dword_7F835290
		test	byte ptr [eax],	1
		jnz	short loc_7F8080C8
		xor	eax, eax
		cmp	[ebp+var_4], eax
		jz	short loc_7F8080C8
		cmp	dword_7F8352E4,	eax
		jz	short loc_7F8080C8
		cmp	dword_7F83538C,	eax
		jnz	short loc_7F8080C2
		cmp	dword_7F83537C,	eax
		jz	short loc_7F8080C8

loc_7F8080C2:				; CODE XREF: sub_7F807D9C+31Cj
		push	esi
		call	sub_7F8082C7

loc_7F8080C8:				; CODE XREF: sub_7F807D9C+305j
					; sub_7F807D9C+30Cj ...
		test	edi, edi
		jz	short loc_7F8080D3
		push	0
		call	sub_7F805403

loc_7F8080D3:				; CODE XREF: sub_7F807D9C+32Ej
		mov	eax, lpPrevWndFunc
		mov	edi, 339h
		push	eax		; dwNewLong
		push	0FFFFFFFCh	; nIndex
		push	edi		; nIDDlgItem
		mov	ebx, 385h
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:SetWindowLongA
		mov	dword_7F835298,	0
		push	ebx		; dwNewLong
		push	0FFFFFFF4h	; nIndex
		push	edi		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:SetWindowLongA
		push	ebx		; nIDDlgItem
		push	esi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:SetFocus
		push	0		; lParam
		mov	edi, 1
		push	ebx		; wParam
		push	401h		; Msg
		push	esi		; hWnd
		call	ds:SendMessageA
		push	edi		; lParam
		push	edi		; wParam
		push	0F4h		; Msg
		push	ebx		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SendDlgItemMessageA
		lea	eax, [ebp+var_50]
		push	eax		; lpSystemTime
		call	ds:GetSystemTime
		lea	eax, [ebp+var_50]
		lea	ecx, [ebp+SystemTime]
		push	eax		; SYSTEMTIME *
		push	ecx		; lpSystemTime
		mov	eax, dword_7F835290
		add	eax, 38h
		push	eax		; LPSYSTEMTIME
		call	sub_7F809DFE
		push	2		; lParam
		mov	dword_7F8353BC,	edi
		push	0BEh		; wParam
		push	111h		; Msg
		push	esi		; hWnd
		call	ds:PostMessageA

loc_7F80817B:				; CODE XREF: sub_7F807D9C+2C5j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F807D9C	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================


sub_7F808184	proc near		; DATA XREF: sub_7F8081B3+66o
		push	32Eh		; int
		mov	eax, dword_7F833264
		push	eax		; int
		inc	uValue
		push	uValue		; uValue
		push	hDlg		; hDlg
		call	sub_7F80A47A
		cmp	eax, 1
		sbb	eax, eax
		and	eax, 80040113h
		retn	20h
sub_7F808184	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8081B3(HWND hWnd,	int)
sub_7F8081B3	proc near		; CODE XREF: sub_7F807D9C+2DCp

uMode		= dword	ptr -8
var_4		= dword	ptr -4
hWnd		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_4]
		xor	edi, edi
		or	esi, 80000000h
		push	8001h		; uMode
		mov	[ebp+var_4], edi
		call	ds:SetErrorMode
		mov	[ebp+uMode], eax
		cmp	dword_7F8353CC,	edi
		jnz	short loc_7F8081E6
		or	esi, 40000000h

loc_7F8081E6:				; CODE XREF: sub_7F8081B3+2Bj
		mov	edi, dword_7F835290
		xor	eax, eax
		add	edi, 38h
		mov	ecx, 0Fh
		rep stosd
		lea	eax, [ebp+var_4]
		push	eax		; int
		call	MAPIGetDefaultMalloc@0
		push	eax		; int
		mov	ecx, dword_7F835290
		push	offset MAPIFreeBuffer@4	; int
		push	offset MAPIAllocateMore@12 ; int
		push	offset MAPIAllocateBuffer@8 ; int
		push	0		; int
		push	offset sub_7F808184 ; int
		push	dword ptr [ecx+2Ch] ; int
		push	dword ptr [ecx+0Ch] ; int
		push	dword ptr [ecx+8] ; int
		push	esi		; int
		push	[ebp+hWnd]	; hWnd
		call	ScMMFMigrateToMDB@48
		cmp	[ebp+var_4], 0
		mov	ebx, eax
		jz	short loc_7F808252
		mov	eax, [ebp+var_4]
		mov	esi, [eax+10h]
		test	esi, esi
		jz	short loc_7F808252
		mov	edi, dword_7F835290
		mov	ecx, 0Fh
		add	edi, 38h
		rep movsd

loc_7F808252:				; CODE XREF: sub_7F8081B3+83j
					; sub_7F8081B3+8Dj
		push	[ebp+var_4]
		call	MAPIFreeBuffer@4
		push	[ebp+uMode]	; uMode
		call	ds:SetErrorMode
		test	ebx, ebx
		jge	short loc_7F8082B9
		cmp	ebx, 80040113h
		jz	short loc_7F8082B5
		push	200h		; cchBufferMax
		mov	esi, offset byte_7F8336A8
		push	esi		; lpBuffer
		mov	eax, hInstance
		push	1501h		; uID
		push	eax		; hInstance
		call	ds:LoadStringA
		push	ebx
		mov	eax, dword_7F835290
		push	dword ptr [eax+8]
		push	esi		; LPCSTR
		mov	esi, offset Text
		push	esi		; LPSTR
		call	ds:wsprintfA
		add	esp, 10h
		push	30h		; uType
		push	offset byte_7F833F30 ; lpCaption
		push	esi		; lpText
		push	[ebp+hWnd]	; hWnd
		call	ds:MessageBoxA

loc_7F8082B5:				; CODE XREF: sub_7F8081B3+BAj
		xor	eax, eax
		jmp	short loc_7F8082BE
; ---------------------------------------------------------------------------

loc_7F8082B9:				; CODE XREF: sub_7F8081B3+B2j
		mov	eax, 1

loc_7F8082BE:				; CODE XREF: sub_7F8081B3+104j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F8081B3	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8082C7	proc near		; CODE XREF: sub_7F807D9C+327p
		push	ebx
		push	esi
		push	edi
		mov	esi, ds:SetErrorMode
		push	8001h		; uMode
		call	esi ; SetErrorMode
		cmp	dword_7F8352DC,	0
		mov	edi, eax
		jnz	short loc_7F8082E9
		push	edi		; uMode
		call	esi ; SetErrorMode
		xor	eax, eax
		jmp	short loc_7F808353
; ---------------------------------------------------------------------------

loc_7F8082E9:				; CODE XREF: sub_7F8082C7+19j
		push	80000000h
		mov	eax, dword_7F8352E4
		push	dword ptr [eax+8]
		push	dword ptr [eax]
		mov	eax, dword_7F8352DC
		push	dword_7F8352DC
		call	dword ptr [eax+8]
		mov	ecx, dword_7F8352DC
		push	offset dword_7F8352E4
		xor	ebx, ebx
		mov	edx, [ecx+54h]
		mov	dword_7F8336A0,	edx
		call	sub_7F80A72A
		push	offset dword_7F8352E0
		call	sub_7F80A775
		cmp	dword_7F8352DC,	ebx
		jz	short loc_7F808341
		mov	eax, dword_7F8352DC
		push	eax
		call	dword ptr [eax]
		mov	dword_7F8352DC,	ebx

loc_7F808341:				; CODE XREF: sub_7F8082C7+6Aj
		push	offset dword_7F8352E0
		call	sub_7F80A72A
		push	edi		; uMode
		call	esi ; SetErrorMode
		mov	eax, 1

loc_7F808353:				; CODE XREF: sub_7F8082C7+20j
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_7F8082C7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F808359(HWND hWnd,	UINT uID, LPCSTR lpCaption, UINT uType)
sub_7F808359	proc near		; CODE XREF: sub_7F805851+C3p
					; sub_7F806352+64p ...

hWnd		= dword	ptr  8
uID		= dword	ptr  0Ch
lpCaption	= dword	ptr  10h
uType		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	esi
		push	400h		; cchBufferMax
		mov	esi, offset byte_7F833288
		push	esi		; lpBuffer
		push	[ebp+uID]	; uID
		push	hInstance	; hInstance
		call	ds:LoadStringA
		test	eax, eax
		jnz	short loc_7F808387
		push	offset aCouldNotFindSt ; "Could	not find string	resource in file."
		push	esi		; lpString1
		call	ds:lstrcpyA

loc_7F808387:				; CODE XREF: sub_7F808359+20j
		push	[ebp+uType]	; uType
		push	[ebp+lpCaption]	; lpCaption
		push	offset byte_7F833288 ; lpText
		push	[ebp+hWnd]	; hWnd
		call	ds:MessageBoxA
		pop	esi
		pop	ebp
		retn	10h
sub_7F808359	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8083A0(LPCSTR lpFileName,	__int16, DWORD dwFlagsAndAttributes)
sub_7F8083A0	proc near		; CODE XREF: sub_7F805FDE+30p
					; sub_7F805FDE+96p ...

FindFileData	= _WIN32_FIND_DATAA ptr	-144h
NumberOfBytesRead= dword ptr -4
lpFileName	= dword	ptr  8
arg_7		= byte ptr  0Fh
dwFlagsAndAttributes= dword ptr	 10h

		push	ebp
		mov	ebp, esp
		sub	esp, 144h
		push	esi
		push	edi
		mov	edi, 0FFFFFFFFh
		xor	esi, esi
		test	[ebp+arg_7], 40h
		jnz	short loc_7F8083E5
		lea	eax, [ebp+FindFileData]
		push	eax		; lpFindFileData
		push	[ebp+lpFileName] ; lpFileName
		call	ds:FindFirstFileA
		cmp	eax, edi
		jnz	short loc_7F8083D9
		call	ds:GetLastError
		mov	esi, eax
		jmp	loc_7F808482
; ---------------------------------------------------------------------------

loc_7F8083D9:				; CODE XREF: sub_7F8083A0+2Aj
		push	eax		; hFindFile
		call	ds:FindClose
		jmp	loc_7F808482
; ---------------------------------------------------------------------------

loc_7F8083E5:				; CODE XREF: sub_7F8083A0+16j
		xor	eax, eax
		push	eax		; hTemplateFile
		push	[ebp+dwFlagsAndAttributes] ; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	eax		; lpSecurityAttributes
		push	eax		; dwShareMode
		push	dword ptr [ebp+0Ch] ; dwDesiredAccess
		push	[ebp+lpFileName] ; lpFileName
		call	ds:CreateFileA
		cmp	eax, 0FFFFFFFFh
		mov	edi, eax
		jnz	short loc_7F80840C
		call	ds:GetLastError
		mov	esi, eax
		jmp	short loc_7F808482
; ---------------------------------------------------------------------------

loc_7F80840C:				; CODE XREF: sub_7F8083A0+60j
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesRead]
		push	eax		; lpNumberOfBytesRead
		lea	ecx, [ebp+FindFileData+13Fh]
		mov	byte ptr [ebp+FindFileData+13Fh], 0
		push	1		; nNumberOfBytesToRead
		push	ecx		; lpBuffer
		push	edi		; hFile
		call	ds:ReadFile
		test	eax, eax
		jnz	short loc_7F808431
		call	ds:GetLastError
		mov	esi, eax
		jmp	short loc_7F808482
; ---------------------------------------------------------------------------

loc_7F808431:				; CODE XREF: sub_7F8083A0+85j
		cmp	[ebp+NumberOfBytesRead], 1
		jnz	short loc_7F808482
		xor	eax, eax
		push	eax		; dwMoveMethod
		push	eax		; lpDistanceToMoveHigh
		push	eax		; lDistanceToMove
		push	edi		; hFile
		call	ds:SetFilePointer
		mov	[ebp+NumberOfBytesRead], eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_7F808455
		call	ds:GetLastError
		mov	esi, eax
		jmp	short loc_7F808482
; ---------------------------------------------------------------------------

loc_7F808455:				; CODE XREF: sub_7F8083A0+A9j
		cmp	[ebp+NumberOfBytesRead], 0
		jnz	short loc_7F808482
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesRead]
		push	eax		; lpNumberOfBytesWritten
		lea	ecx, [ebp+FindFileData+13Fh]
		push	1		; nNumberOfBytesToWrite
		push	ecx		; lpBuffer
		push	edi		; hFile
		call	ds:WriteFile
		test	eax, eax
		jz	short loc_7F80847D
		push	edi		; hFile
		call	ds:FlushFileBuffers
		test	eax, eax
		jnz	short loc_7F808482

loc_7F80847D:				; CODE XREF: sub_7F8083A0+D0j
		mov	esi, 5

loc_7F808482:				; CODE XREF: sub_7F8083A0+34j
					; sub_7F8083A0+40j ...
		cmp	edi, 0FFFFFFFFh
		jz	short loc_7F80848E
		push	edi		; hObject
		call	ds:CloseHandle

loc_7F80848E:				; CODE XREF: sub_7F8083A0+E5j
		mov	eax, esi
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F8083A0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F808498(HWND hDlg,	int nIDDlgItem,	UINT uID, int, int, int, int, int)
sub_7F808498	proc near		; CODE XREF: sub_7F805EBF+A0p
					; sub_7F806861+34Cp

FindFileData	= _WIN32_FIND_DATAA ptr	-3FCh
String		= byte ptr -2BCh
String1		= byte ptr -1B8h
Buffer		= byte ptr -0B8h
String2		= byte ptr -7Ch
var_5C		= byte ptr -5Ch
var_4C		= tagOFNA ptr -4Ch
hDlg		= dword	ptr  8
nIDDlgItem	= dword	ptr  0Ch
uID		= 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
		xor	eax, eax
		mov	ebp, esp
		mov	ecx, 40h
		sub	esp, 3FCh
		push	ebx
		push	esi
		push	edi
		lea	edi, [ebp+String1]
		rep stosd
		lea	edi, [ebp+var_5C]
		mov	ecx, 13h
		stosd
		stosd
		stosd
		stosd
		lea	edi, [ebp+var_4C]
		push	3Ch		; cchBufferMax
		rep stosd
		lea	eax, [ebp+Buffer]
		mov	edi, [ebp+uID]
		push	eax		; lpBuffer
		mov	esi, ds:LoadStringA
		push	edi		; uID
		mov	eax, hInstance
		push	eax		; hInstance
		call	esi ; LoadStringA
		push	0F6h		; cchBufferMax
		lea	ecx, [ebp+String1]
		push	ecx		; lpBuffer
		lea	eax, [edi+1]
		push	eax		; uID
		add	edi, 2
		push	hInstance	; hInstance
		call	esi ; LoadStringA
		push	10h		; cchBufferMax
		lea	ecx, [ebp+var_5C]
		push	ecx		; lpBuffer
		mov	eax, hInstance
		push	edi		; uID
		push	eax		; hInstance
		call	esi ; LoadStringA
		cmp	[ebp+nIDDlgItem], 0
		jz	short loc_7F808542
		push	104h		; cchMax
		lea	eax, [ebp+String]
		push	eax		; lpString
		push	[ebp+nIDDlgItem] ; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:GetDlgItemTextA
		cmp	[ebp+String], 0
		jz	short loc_7F808542
		lea	eax, [ebp+String]
		push	eax		; lpString2
		push	offset String1	; lpString1
		call	ds:lstrcpyA

loc_7F808542:				; CODE XREF: sub_7F808498+75j
					; sub_7F808498+96j
		push	80h		; dwFlagsAndAttributes
		mov	edi, offset String1
		mov	Buf, 0
		push	0C0000000h	; __int16
		push	edi		; lpFileName
		call	sub_7F8083A0
		test	eax, eax
		jnz	loc_7F80864C
		push	104h		; cchSize
		mov	ebx, offset Buf
		push	ebx		; Buf
		push	edi		; LPCSTR
		call	GetFileTitleA
		push	edi		; lpString
		call	ds:lstrlenA
		mov	edi, eax
		push	ebx		; lpString
		call	ds:lstrlenA
		sub	edi, eax
		mov	String1[edi], 0

loc_7F808590:				; CODE XREF: sub_7F808498+1E1j
					; sub_7F808498+1F0j ...
		cmp	[ebp+arg_10], 0
		jz	short loc_7F8085CC
		push	20h		; cchBufferMax
		lea	eax, [ebp+String2]
		push	eax		; lpBuffer
		push	1508h		; uID
		push	hInstance	; hInstance
		call	esi ; LoadStringA
		push	offset a@	; "@"
		lea	ecx, [ebp+String1]
		push	ecx		; lpString1
		call	ds:lstrcatA
		lea	ecx, [ebp+String2]
		lea	edx, [ebp+String1]
		push	ecx		; lpString2
		push	edx		; lpString1
		call	ds:lstrcatA

loc_7F8085CC:				; CODE XREF: sub_7F808498+FCj
		xor	ecx, ecx
		cmp	[ebp+String1], cl
		jz	short loc_7F8085F0

loc_7F8085D6:				; CODE XREF: sub_7F808498+156j
		lea	eax, [ebp+ecx+String1]
		cmp	byte ptr [eax],	40h
		jnz	short loc_7F8085E5
		mov	byte ptr [eax],	0

loc_7F8085E5:				; CODE XREF: sub_7F808498+148j
		inc	ecx
		cmp	[ebp+ecx+String1], 0
		jnz	short loc_7F8085D6

loc_7F8085F0:				; CODE XREF: sub_7F808498+13Cj
		mov	eax, [ebp+hDlg]
		lea	ecx, [ebp+String1]
		mov	[ebp+var_4C.hwndOwner],	eax
		mov	[ebp+var_4C.lpstrFilter], ecx
		mov	[ebp+var_4C.lStructSize], 4Ch
		mov	[ebp+var_4C.lpstrCustomFilter],	0
		mov	[ebp+var_4C.nFilterIndex], 1
		mov	[ebp+var_4C.lpstrFile],	offset Buf
		mov	[ebp+var_4C.nMaxFile], 104h
		mov	[ebp+var_4C.lpstrInitialDir], offset String1
		lea	eax, [ebp+Buffer]
		push	eax		; lpString
		call	ds:lstrlenA
		test	eax, eax
		jz	loc_7F8086D7
		lea	eax, [ebp+Buffer]
		mov	[ebp+var_4C.lpstrTitle], eax
		jmp	loc_7F8086DE
; ---------------------------------------------------------------------------

loc_7F80864C:				; CODE XREF: sub_7F808498+C8j
		mov	edi, offset String1

loc_7F808651:				; CODE XREF: sub_7F808498+23Aj
		lea	eax, [ebp+FindFileData]
		push	eax		; lpFindFileData
		push	edi		; lpFileName
		call	ds:FindFirstFileA
		cmp	eax, 0FFFFFFFFh
		mov	ebx, eax
		jz	short loc_7F80867F
		push	ebx		; hFindFile
		call	ds:FindClose
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_7F80867F
		test	byte ptr [ebp+FindFileData.dwFileAttributes], 10h
		jnz	loc_7F808590

loc_7F80867F:				; CODE XREF: sub_7F808498+1CCj
					; sub_7F808498+1D8j
		push	edi		; lpString
		call	ds:lstrlenA
		test	eax, eax
		jz	loc_7F808590

loc_7F80868E:				; CODE XREF: sub_7F808498+207j
		mov	cl, String1[eax]
		cmp	cl, 5Ch
		jz	short loc_7F8086A1
		cmp	cl, 3Ah
		jz	short loc_7F8086A1
		dec	eax
		jnz	short loc_7F80868E

loc_7F8086A1:				; CODE XREF: sub_7F808498+1FFj
					; sub_7F808498+204j
		test	eax, eax
		jz	loc_7F808590
		lea	ebx, String1[eax]
		cmp	byte ptr [ebx],	3Ah
		jz	loc_7F808590
		cmp	[ebp+arg_C], 0
		jnz	short loc_7F8086CF
		add	eax, offset unk_7F8338C1
		push	eax		; lpString2
		push	offset Buf	; lpString1
		call	ds:lstrcpyA

loc_7F8086CF:				; CODE XREF: sub_7F808498+224j
		mov	byte ptr [ebx],	0
		jmp	loc_7F808651
; ---------------------------------------------------------------------------

loc_7F8086D7:				; CODE XREF: sub_7F808498+1A0j
		mov	[ebp+var_4C.lpstrTitle], 0

loc_7F8086DE:				; CODE XREF: sub_7F808498+1AFj
		cmp	[ebp+arg_C], 1
		mov	eax, 0
		adc	eax, 0FFFFFFFFh
		and	eax, 1000h
		or	eax, 1081Ch
		mov	[ebp+var_4C.Flags], eax
		call	sub_7F80C7CE
		cmp	eax, 4
		jb	short loc_7F808705
		or	byte ptr [ebp+var_4C.Flags+2], 8

loc_7F808705:				; CODE XREF: sub_7F808498+267j
		lea	eax, [ebp+var_5C]
		push	eax		; lpString
		call	ds:lstrlenA
		test	eax, eax
		jz	short loc_7F80871B
		lea	eax, [ebp+var_5C]
		mov	[ebp+var_4C.lpstrDefExt], eax
		jmp	short loc_7F808722
; ---------------------------------------------------------------------------

loc_7F80871B:				; CODE XREF: sub_7F808498+279j
		mov	[ebp+var_4C.lpstrDefExt], 0

loc_7F808722:				; CODE XREF: sub_7F808498+281j
		mov	eax, [ebp+arg_1C]
		mov	[ebp+var_4C.lpfnHook], eax
		test	eax, eax
		jz	short loc_7F808730
		or	byte ptr [ebp+var_4C.Flags], 20h

loc_7F808730:				; CODE XREF: sub_7F808498+292j
		cmp	[ebp+arg_14], 0
		lea	eax, [ebp+var_4C]
		push	eax		; LPOPENFILENAMEA
		jz	short loc_7F808741
		call	GetOpenFileNameA
		jmp	short loc_7F808746
; ---------------------------------------------------------------------------

loc_7F808741:				; CODE XREF: sub_7F808498+2A0j
		call	GetSaveFileNameA

loc_7F808746:				; CODE XREF: sub_7F808498+2A7j
		test	eax, eax
		jz	short loc_7F80879C
		mov	esi, [ebp+arg_18]
		push	esi
		push	0
		push	[ebp+var_4C.lpstrFile] ; lpString
		call	ds:lstrlenA
		inc	eax
		push	eax
		call	sub_7F80A757
		test	eax, eax
		jz	short loc_7F80879C
		push	[ebp+var_4C.lpstrFile] ; lpString2
		push	dword ptr [esi]	; lpString1
		call	ds:lstrcpyA
		push	[ebp+var_4C.lpstrFile] ; lpString
		push	[ebp+nIDDlgItem] ; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:SetDlgItemTextA
		push	1		; bEnable
		push	384h		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		mov	eax, 1
		jmp	short loc_7F80879E
; ---------------------------------------------------------------------------

loc_7F80879C:				; CODE XREF: sub_7F808498+2B0j
					; sub_7F808498+2CAj
		xor	eax, eax

loc_7F80879E:				; CODE XREF: sub_7F808498+302j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	20h
sub_7F808498	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8087A7(HWND hWnd,	int)
sub_7F8087A7	proc near		; CODE XREF: sub_7F805EBF+48p
					; sub_7F8061C8+52p ...

var_4		= dword	ptr -4
hWnd		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		push	esi
		push	edi
		push	[ebp+hWnd]	; hWnd
		call	ds:GetParent
		push	eax		; hWnd
		call	ds:SetActiveWindow
		push	0		; nCmdShow
		push	[ebp+hWnd]	; hWnd
		call	ds:ShowWindow
		mov	eax, dword_7F8353C8
		push	6		; uFlags
		shl	eax, 4
		mov	eax, off_7F835350[eax]
		push	dword ptr [eax+4] ; cy
		push	dword ptr [eax]	; cx
		push	0		; Y
		push	0		; X
		xor	esi, esi
		push	0		; hWndInsertAfter
		push	[ebp+hWnd]	; hWnd
		call	ds:SetWindowPos
		cmp	dword_7F8352F0,	esi
		jz	short loc_7F808874
		mov	ebx, offset unk_7F8352F4

loc_7F8087FE:				; CODE XREF: sub_7F8087A7+CBj
		mov	edi, [ebx-4]
		cmp	esi, [ebp+arg_4]
		jnz	short loc_7F80883C
		cmp	[ebx], edi
		jl	short loc_7F808834

loc_7F80880A:				; CODE XREF: sub_7F8087A7+8Bj
		push	edi		; nIDDlgItem
		push	[ebp+hWnd]	; hDlg
		call	ds:GetDlgItem
		mov	[ebp+var_4], eax
		test	eax, eax
		jz	short loc_7F80882F
		push	5		; nCmdShow
		push	eax		; hWnd
		call	ds:ShowWindow
		push	1		; bEnable
		push	[ebp+var_4]	; hWnd
		call	ds:EnableWindow

loc_7F80882F:				; CODE XREF: sub_7F8087A7+72j
		inc	edi
		cmp	[ebx], edi
		jge	short loc_7F80880A

loc_7F808834:				; CODE XREF: sub_7F8087A7+61j
		cmp	[ebp+arg_4], 7
		jnz	short loc_7F80886A
		jmp	short loc_7F808874
; ---------------------------------------------------------------------------

loc_7F80883C:				; CODE XREF: sub_7F8087A7+5Dj
		cmp	[ebx], edi
		jl	short loc_7F80886A

loc_7F808840:				; CODE XREF: sub_7F8087A7+C1j
		push	edi		; nIDDlgItem
		push	[ebp+hWnd]	; hDlg
		call	ds:GetDlgItem
		mov	[ebp+var_4], eax
		test	eax, eax
		jz	short loc_7F808865
		push	0		; nCmdShow
		push	eax		; hWnd
		call	ds:ShowWindow
		push	0		; bEnable
		push	[ebp+var_4]	; hWnd
		call	ds:EnableWindow

loc_7F808865:				; CODE XREF: sub_7F8087A7+A8j
		inc	edi
		cmp	[ebx], edi
		jge	short loc_7F808840

loc_7F80886A:				; CODE XREF: sub_7F8087A7+91j
					; sub_7F8087A7+97j
		add	ebx, 8
		inc	esi
		cmp	dword ptr [ebx-4], 0
		jnz	short loc_7F8087FE

loc_7F808874:				; CODE XREF: sub_7F8087A7+50j
					; sub_7F8087A7+93j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F8087A7	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F80887D(HWND hDlg)
sub_7F80887D	proc near		; CODE XREF: sub_7F807D9C:loc_7F807DC3p

hDlg		= dword	ptr  4

		cmp	dword_7F8352F0,	0
		push	esi
		push	edi
		jz	short loc_7F8088B6
		mov	esi, offset dword_7F8352F0

loc_7F80888D:				; CODE XREF: sub_7F80887D+37j
		mov	edi, [esi]
		cmp	[esi+4], edi
		jl	short loc_7F8088AE

loc_7F808894:				; CODE XREF: sub_7F80887D+2Fj
		push	0		; bEnable
		push	edi		; nIDDlgItem
		push	[esp+10h+hDlg]	; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		inc	edi
		call	ds:EnableWindow
		cmp	[esi+4], edi
		jge	short loc_7F808894

loc_7F8088AE:				; CODE XREF: sub_7F80887D+15j
		add	esi, 8
		cmp	dword ptr [esi], 0
		jnz	short loc_7F80888D

loc_7F8088B6:				; CODE XREF: sub_7F80887D+9j
		pop	edi
		pop	esi
		retn	4
sub_7F80887D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8088BB	proc near		; CODE XREF: sub_7F805851+A6p

var_4		= dword	ptr -4

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 4
		lea	ecx, [ebp+var_4]
		mov	[ebp+var_4], eax
		push	ecx
		push	eax
		push	178h
		call	sub_7F80A757
		test	eax, eax
		mov	eax, 0
		jz	short loc_7F808945
		mov	eax, [ebp+var_4]
		xor	ecx, ecx
		mov	[eax], ecx
		mov	eax, [ebp+var_4]
		mov	edx, 1
		mov	[eax+4], ecx
		mov	eax, [ebp+var_4]
		mov	[eax+8], ecx
		mov	eax, [ebp+var_4]
		mov	[eax+0Ch], ecx
		mov	eax, [ebp+var_4]
		mov	[eax+10h], edx
		mov	eax, [ebp+var_4]
		mov	[eax+30h], ecx
		mov	eax, [ebp+var_4]
		mov	[eax+14h], edx
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax+18h], 0FFFFFFFFh
		mov	eax, [ebp+var_4]
		mov	[eax+1Ch], ecx
		mov	eax, [ebp+var_4]
		mov	[eax+20h], ecx
		mov	eax, [ebp+var_4]
		mov	[eax+24h], ecx
		mov	eax, [ebp+var_4]
		mov	[eax+28h], ecx
		mov	eax, [ebp+var_4]
		mov	[eax+34h], ecx
		mov	eax, [ebp+var_4]
		mov	[eax+2Ch], ecx
		mov	eax, [ebp+var_4]
		mov	[eax+74h], cl
		mov	eax, [ebp+var_4]

loc_7F808945:				; CODE XREF: sub_7F8088BB+21j
		mov	esp, ebp
		pop	ebp
		retn
sub_7F8088BB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F808949	proc near		; CODE XREF: sub_7F805851+5C2p
					; sub_7F805EBF+AFp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	esi
		cmp	[ebp+arg_0], 0
		jz	loc_7F8089FD
		mov	eax, [ebp+arg_0]
		add	eax, 8
		cmp	dword ptr [eax], 0
		jz	short loc_7F808968
		push	eax
		call	sub_7F80A72A

loc_7F808968:				; CODE XREF: sub_7F808949+17j
		mov	eax, [ebp+arg_0]
		add	eax, 0Ch
		cmp	dword ptr [eax], 0
		jz	short loc_7F808979
		push	eax
		call	sub_7F80A72A

loc_7F808979:				; CODE XREF: sub_7F808949+28j
		mov	eax, [ebp+arg_0]
		add	eax, 30h
		cmp	dword ptr [eax], 0
		jz	short loc_7F80898A
		push	eax
		call	sub_7F80A72A

loc_7F80898A:				; CODE XREF: sub_7F808949+39j
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+2Ch]
		call	UlRelease@4
		mov	ecx, [ebp+arg_0]
		push	dword ptr [ecx+28h]
		call	UlRelease@4
		mov	eax, [ebp+arg_0]
		add	eax, 34h
		cmp	dword ptr [eax], 0
		jz	short loc_7F8089B1
		push	eax
		call	sub_7F80A72A

loc_7F8089B1:				; CODE XREF: sub_7F808949+60j
		mov	eax, [ebp+arg_0]
		xor	ecx, ecx
		mov	eax, [eax+24h]
		test	eax, eax
		jz	short loc_7F8089D9
		mov	edx, [ebp+arg_0]
		test	byte ptr [edx],	8
		jnz	short loc_7F8089CE
		push	ecx
		mov	esi, [eax]
		push	ecx
		push	ecx
		push	eax
		call	dword ptr [esi+44h]

loc_7F8089CE:				; CODE XREF: sub_7F808949+7Aj
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+24h]
		call	UlRelease@4

loc_7F8089D9:				; CODE XREF: sub_7F808949+72j
		lea	eax, [ebp+arg_0]
		xor	esi, esi
		push	eax
		call	sub_7F80A72A
		cmp	dword_7F83529C,	esi
		jz	short loc_7F8089FD
		mov	eax, dword_7F83529C
		push	eax
		call	FreeProws@4
		mov	dword_7F83529C,	esi

loc_7F8089FD:				; CODE XREF: sub_7F808949+8j
					; sub_7F808949+A1j
		pop	esi
		pop	ebp
		retn	4
sub_7F808949	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F808A02	proc near		; CODE XREF: sub_7F80577A+38p

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F801238
		push	offset sub_7F82FBD0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+var_1C], esi
		mov	[ebp+ms_exc.registration.TryLevel], esi
		mov	[ebp+var_28], esi
		mov	[ebp+var_24], esi
		lea	eax, [ebp+var_28]
		push	eax
		call	MAPIInitialize@4
		cmp	eax, esi
		jl	short loc_7F808A4A
		mov	[ebp+var_1C], 1

loc_7F808A4A:				; CODE XREF: sub_7F808A02+3Fj
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F808A5C

loc_7F808A56:				; DATA XREF: .text:stru_7F801238o
		mov	esp, [ebp+ms_exc.old_esp] ; Finally handler 0 for function 7F808A02
		mov	eax, [ebp+var_1C]

loc_7F808A5C:				; DATA XREF: sub_7F808A02+4Fo
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_7F808A02	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F808A6D(HWND hWnd)
sub_7F808A6D	proc near		; CODE XREF: sub_7F805851+2E0p

var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
uID		= 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
ms_exc		= CPPEH_RECORD ptr -18h
hWnd		= dword	ptr  8

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F801248
		push	offset sub_7F82FBD0
		push	eax
		mov	large fs:0, esp
		sub	esp, 2Ch
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+var_24], esi
		mov	[ebp+var_28], esi
		mov	[ebp+var_30], esi
		mov	[ebp+uID], 1509h
		mov	[ebp+ms_exc.registration.TryLevel], esi
		lea	eax, [ebp+var_24]
		push	eax
		push	esi
		call	MAPIAdminProfiles@8
		cmp	eax, esi
		jl	loc_7F808B8A
		lea	eax, [ebp+var_20]
		push	eax
		push	esi
		push	[ebp+var_24]
		mov	eax, [ebp+var_24]
		mov	eax, [eax]
		call	dword ptr [eax+10h]
		cmp	eax, esi
		jl	loc_7F808B8A
		push	[ebp+var_20]
		call	sub_7F80970F
		mov	[ebp+var_38], eax
		cmp	eax, esi
		jz	loc_7F808B8A
		push	esi
		push	offset unk_7F8352C8
		push	[ebp+var_20]
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		call	dword ptr [eax+1Ch]
		cmp	eax, esi
		jl	loc_7F808B8A
		lea	eax, [ebp+var_28]
		push	eax
		push	esi
		push	[ebp+var_38]
		push	[ebp+var_20]
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		call	dword ptr [eax+4Ch]
		cmp	eax, esi
		jl	short loc_7F808B8A
		mov	eax, [ebp+var_28]
		mov	edx, [eax]
		cmp	edx, esi
		jz	short loc_7F808B8A
		mov	[ebp+uID], 150Ah
		mov	[ebp+var_2C], esi
		cmp	esi, edx
		jnb	short loc_7F808B8A
		mov	eax, esi
		imul	eax, 0Ch
		mov	ecx, [ebp+var_28]
		lea	eax, [eax+ecx+0Ch]
		mov	esi, [ebp+var_3C]

loc_7F808B3B:				; CODE XREF: sub_7F808A6D+E3j
		mov	esi, [eax]
		mov	[ebp+var_3C], esi
		cmp	word ptr [esi+8], 1
		jz	short loc_7F808B54
		add	eax, 0Ch
		inc	[ebp+var_2C]
		cmp	[ebp+var_2C], edx
		jb	short loc_7F808B3B
		jmp	short loc_7F808B8A
; ---------------------------------------------------------------------------

loc_7F808B54:				; CODE XREF: sub_7F808A6D+D8j
		mov	eax, dword_7F835290
		add	eax, 20h
		push	eax
		push	0
		push	dword ptr [esi+18h] ; lpString
		call	ds:lstrlenA
		push	eax
		call	sub_7F80A757
		test	eax, eax
		jz	short loc_7F808B8A
		push	dword ptr [esi+18h] ; lpString2
		mov	eax, dword_7F835290
		push	dword ptr [eax+20h] ; lpString1
		call	ds:lstrcpyA
		mov	[ebp+var_30], 1

loc_7F808B8A:				; CODE XREF: sub_7F808A6D+47j
					; sub_7F808A6D+5Fj ...
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F808BCF

loc_7F808B96:				; DATA XREF: .text:stru_7F801248o
		push	[ebp+var_28]	; Finally handler 0 for	function 7F808A6D
		call	FreeProws@4
		push	[ebp+var_20]
		call	UlRelease@4
		push	[ebp+var_24]
		call	UlRelease@4
		cmp	[ebp+var_30], 0
		jnz	short loc_7F808BC9
		push	2010h		; uType
		push	offset byte_7F833F30 ; lpCaption
		push	[ebp+uID]	; uID
		push	[ebp+hWnd]	; hWnd
		call	sub_7F808359

loc_7F808BC9:				; CODE XREF: sub_7F808A6D+145j
		mov	esp, [ebp+ms_exc.old_esp]
		mov	eax, [ebp+var_30]

loc_7F808BCF:				; DATA XREF: sub_7F808A6D+124o
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F808A6D	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F808BE2	proc near		; CODE XREF: sub_7F805851+306p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	esi
		push	edi
		lea	esi, [eax+24h]
		push	esi
		xor	edi, edi
		push	8021h
		push	edi
		push	dword ptr [eax+20h]
		push	[esp+18h+arg_0]
		call	MAPILogonEx@20
		test	eax, eax
		mov	eax, 1
		jz	short loc_7F808C0D
		xor	eax, eax
		mov	[esi], edi

loc_7F808C0D:				; CODE XREF: sub_7F808BE2+25j
		pop	edi
		pop	esi
		retn	8
sub_7F808BE2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F808C12(HWND hDlg)
sub_7F808C12	proc near		; CODE XREF: sub_7F805851+10Cp

var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
lParam		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
hDlg		= dword	ptr  8

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F801258
		push	offset sub_7F82FBD0
		push	eax
		mov	large fs:0, esp
		sub	esp, 44h
		mov	eax, dword_7F835290
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	edi, [eax+24h]
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+var_34], esi
		mov	[ebp+lParam], esi
		mov	[ebp+ms_exc.registration.TryLevel], esi
		add	eax, 28h
		cmp	[eax], esi
		jnz	short loc_7F808C6D
		push	eax
		push	esi
		push	edi
		mov	eax, [edi]
		call	dword ptr [eax+10h]
		cmp	eax, esi
		jge	short loc_7F808C6D
		push	eax		; int
		push	edi		; int
		push	[ebp+hDlg]	; hWnd
		call	sub_7F808F95
		jmp	loc_7F808EE6
; ---------------------------------------------------------------------------

loc_7F808C6D:				; CODE XREF: sub_7F808C12+3Ej
					; sub_7F808C12+4Aj
		mov	eax, dword_7F835290
		mov	esi, [eax+28h]
		push	esi
		call	sub_7F80970F
		mov	edi, eax
		test	edi, edi
		jz	loc_7F808EE6
		push	0
		push	offset unk_7F8352A8
		push	esi
		mov	eax, [esi]
		call	dword ptr [eax+1Ch]
		test	eax, eax
		jge	short loc_7F808CA5
		push	eax		; int
		push	esi		; int
		push	[ebp+hDlg]	; hWnd
		call	sub_7F808F95
		jmp	loc_7F808EE6
; ---------------------------------------------------------------------------

loc_7F808CA5:				; CODE XREF: sub_7F808C12+82j
		xor	ebx, ebx
		cmp	dword_7F83529C,	ebx
		jz	short loc_7F808CC0
		mov	eax, dword_7F83529C
		push	eax
		call	FreeProws@4
		mov	dword_7F83529C,	ebx

loc_7F808CC0:				; CODE XREF: sub_7F808C12+9Bj
		push	offset dword_7F83529C
		push	0
		push	edi
		push	esi
		mov	eax, [esi]
		call	dword ptr [eax+4Ch]
		test	eax, eax
		jge	short loc_7F808CE1
		push	eax		; int
		push	esi		; int
		push	[ebp+hDlg]	; hWnd
		call	sub_7F808F95
		jmp	loc_7F808EE6
; ---------------------------------------------------------------------------

loc_7F808CE1:				; CODE XREF: sub_7F808C12+BEj
		mov	eax, dword_7F83529C
		xor	esi, esi
		cmp	[eax], esi
		jz	loc_7F808EE6
		push	esi		; lParam
		push	esi		; wParam
		push	14Bh		; Msg
		push	269h		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:SendDlgItemMessageA
		mov	[ebp+var_24], esi
		mov	[ebp+var_3C], esi
		mov	eax, dword_7F83529C
		cmp	[eax], esi
		jbe	loc_7F808EAD
		mov	eax, esi
		imul	eax, 0Ch
		mov	[ebp+var_38], eax
		mov	ebx, [ebp+var_28]

loc_7F808D23:				; CODE XREF: sub_7F808C12+295j
		mov	ecx, dword_7F83529C
		mov	eax, [ebp+var_38]
		lea	eax, [ecx+eax+4]
		add	eax, 8
		mov	[ebp+var_2C], eax
		mov	eax, [eax]
		mov	ebx, eax
		add	ebx, 10h
		mov	[ebp+var_28], ebx
		jz	loc_7F808E93
		cmp	dword ptr [ebx], 3001001Eh
		jnz	loc_7F808E93
		add	eax, 30h
		jz	short loc_7F808D69
		cmp	dword ptr [eax], 30090003h
		jnz	short loc_7F808D69
		test	byte ptr [eax+8], 40h
		jnz	loc_7F808E96

loc_7F808D69:				; CODE XREF: sub_7F808C12+143j
					; sub_7F808C12+14Bj
		mov	eax, dword_7F835290
		mov	eax, [eax+34h]
		mov	[ebp+var_40], eax
		test	eax, eax
		jnz	short loc_7F808D9C
		mov	eax, dword_7F835290
		add	eax, 34h
		push	eax
		push	0
		push	10h
		call	sub_7F80A757
		test	eax, eax
		jz	loc_7F808F0B
		mov	eax, dword_7F835290
		mov	eax, [eax+34h]
		jmp	short loc_7F808DB6
; ---------------------------------------------------------------------------

loc_7F808D9C:				; CODE XREF: sub_7F808C12+164j
		push	[ebp+lParam]
		push	[ebp+var_40]
		push	10h
		call	sub_7F80A757
		test	eax, eax
		jz	loc_7F808F37
		mov	eax, [ebp+lParam]
		mov	eax, [eax]

loc_7F808DB6:				; CODE XREF: sub_7F808C12+188j
		mov	[ebp+lParam], eax
		push	dword ptr [ebx+8] ; lParam
		push	0		; wParam
		push	143h		; Msg
		mov	esi, 269h
		push	esi		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:SendDlgItemMessageA
		push	[ebp+lParam]	; lParam
		movzx	eax, ax
		push	eax		; wParam
		push	151h		; Msg
		push	esi		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:SendDlgItemMessageA
		mov	eax, [ebp+lParam]
		add	eax, 4
		push	eax
		mov	eax, dword_7F835290
		push	dword ptr [eax+34h]
		push	dword ptr [ebx+8] ; lpString
		call	ds:lstrlenA
		push	eax
		call	sub_7F80A757
		test	eax, eax
		jz	short loc_7F808E19
		push	dword ptr [ebx+8] ; lpString2
		mov	eax, [ebp+lParam]
		push	dword ptr [eax+4] ; lpString1
		call	ds:lstrcpyA

loc_7F808E19:				; CODE XREF: sub_7F808C12+1F6j
		mov	eax, [ebp+var_2C]
		mov	ebx, [eax]
		mov	[ebp+var_28], ebx
		test	ebx, ebx
		jz	short loc_7F808E6F
		cmp	dword ptr [ebx], 0FFF0102h
		jnz	short loc_7F808E6F
		mov	eax, [ebp+lParam]
		add	eax, 0Ch
		push	eax
		mov	eax, dword_7F835290
		push	dword ptr [eax+34h]
		push	dword ptr [ebx+8]
		call	sub_7F80A757
		test	eax, eax
		jz	loc_7F808F21
		mov	edx, [ebx+8]
		mov	eax, [ebp+lParam]
		mov	edi, [eax+0Ch]
		mov	esi, [ebx+0Ch]
		mov	ecx, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	ecx, [ebx+8]
		mov	eax, [ebp+lParam]
		mov	[eax+8], ecx

loc_7F808E6F:				; CODE XREF: sub_7F808C12+211j
					; sub_7F808C12+219j
		mov	eax, [ebp+var_2C]
		mov	ebx, [eax]
		add	ebx, 20h
		mov	[ebp+var_28], ebx
		jz	short loc_7F808E93
		cmp	dword ptr [ebx], 3400000Bh
		jnz	short loc_7F808E93
		cmp	word ptr [ebx+8], 1
		jnz	short loc_7F808E93
		mov	eax, [ebp+var_3C]
		mov	dword_7F8352D4,	eax

loc_7F808E93:				; CODE XREF: sub_7F808C12+12Ej
					; sub_7F808C12+13Aj ...
		inc	[ebp+var_3C]

loc_7F808E96:				; CODE XREF: sub_7F808C12+151j
		add	[ebp+var_38], 0Ch
		inc	[ebp+var_24]
		mov	eax, dword_7F83529C
		mov	ecx, [ebp+var_24]
		cmp	[eax], ecx
		ja	loc_7F808D23

loc_7F808EAD:				; CODE XREF: sub_7F808C12+100j
		mov	eax, dword_7F835290
		add	eax, 18h
		cmp	dword ptr [eax], 0FFFFFFFFh
		jnz	short loc_7F808EC2
		mov	ecx, dword_7F8352D4
		mov	[eax], ecx

loc_7F808EC2:				; CODE XREF: sub_7F808C12+2A6j
		push	0		; lParam
		mov	eax, dword_7F835290
		push	dword ptr [eax+18h] ; wParam
		push	14Eh		; Msg
		push	269h		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:SendDlgItemMessageA
		mov	[ebp+var_34], 1

loc_7F808EE6:				; CODE XREF: sub_7F808C12+56j
					; sub_7F808C12+6Dj ...
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F808EF8

loc_7F808EF2:				; DATA XREF: .text:stru_7F801258o
		mov	esp, [ebp+ms_exc.old_esp] ; Finally handler 0 for function 7F808C12
		mov	eax, [ebp+var_34]

loc_7F808EF8:				; DATA XREF: sub_7F808C12+2DBo
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------

loc_7F808F0B:				; CODE XREF: sub_7F808C12+17Aj
		push	30h		; uType
		push	offset byte_7F833F30 ; lpCaption
		push	1007h		; uID
		push	[ebp+hDlg]	; hWnd
		call	sub_7F808359
		jmp	short loc_7F808EE6
; ---------------------------------------------------------------------------

loc_7F808F21:				; CODE XREF: sub_7F808C12+234j
		push	30h		; uType
		push	offset byte_7F833F30 ; lpCaption
		push	1007h		; uID
		push	[ebp+hDlg]	; hWnd
		call	sub_7F808359
		jmp	short loc_7F808EE6
; ---------------------------------------------------------------------------

loc_7F808F37:				; CODE XREF: sub_7F808C12+199j
		push	30h		; uType
		push	offset byte_7F833F30 ; lpCaption
		push	1007h		; uID
		push	[ebp+hDlg]	; hWnd
		call	sub_7F808359
		jmp	short loc_7F808EE6
sub_7F808C12	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F808F4D(HWND hWnd,	int, int)
sub_7F808F4D	proc near		; CODE XREF: sub_7F806861+3EFp

var_4		= dword	ptr -4
hWnd		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	eax, dword_7F835290
		mov	ebp, esp
		sub	esp, 4
		push	esi
		push	edi
		mov	esi, [eax+24h]
		xor	edi, edi
		lea	eax, [ebp+var_4]
		mov	[ebp+var_4], edi
		push	eax
		push	4
		push	edi
		mov	eax, [esi]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+hWnd]
		push	esi
		call	dword ptr [eax+14h]
		test	eax, eax
		jge	short loc_7F808F8A
		push	eax		; int
		push	esi		; int
		push	[ebp+hWnd]	; hWnd
		call	sub_7F808F95
		xor	eax, eax
		jmp	short loc_7F808F8D
; ---------------------------------------------------------------------------

loc_7F808F8A:				; CODE XREF: sub_7F808F4D+2Dj
		mov	eax, [ebp+var_4]

loc_7F808F8D:				; CODE XREF: sub_7F808F4D+3Bj
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F808F4D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F808F95(HWND hWnd,	int, int)
sub_7F808F95	proc near		; CODE XREF: sub_7F808C12+51p
					; sub_7F808C12+89p ...

Text		= byte ptr -488h
Buffer		= byte ptr -88h
var_8		= dword	ptr -8
lpBuffer	= dword	ptr -4
hWnd		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 488h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		lea	eax, [ebp+var_8]
		push	eax
		mov	[ebp+lpBuffer],	ebx
		push	ebx
		mov	eax, [ebp+arg_4]
		mov	esi, [eax]
		mov	[ebp+var_8], ebx
		push	[ebp+arg_8]
		push	eax
		call	dword ptr [esi+0Ch]
		mov	esi, eax
		cmp	[ebp+var_8], ebx
		jz	short loc_7F808FE0
		mov	eax, [ebp+var_8]
		mov	ecx, [eax+4]
		mov	[ebp+lpBuffer],	ecx
		cmp	ecx, ebx
		mov	edi, [eax+8]
		jz	short loc_7F808FE0
		cmp	[ecx], bl
		jnz	short loc_7F808FE0
		push	ecx
		call	MAPIFreeBuffer@4
		mov	[ebp+lpBuffer],	ebx

loc_7F808FE0:				; CODE XREF: sub_7F808F95+2Cj
					; sub_7F808F95+3Cj ...
		cmp	[ebp+lpBuffer],	0
		jnz	short loc_7F809040
		lea	eax, [ebp+lpBuffer]
		push	eax
		push	100h
		call	MAPIAllocateBuffer@8
		test	eax, eax
		jnz	short loc_7F809040
		cmp	[ebp+arg_8], 80040111h
		jz	short loc_7F809025
		cmp	[ebp+arg_8], 8004011Ch
		jz	short loc_7F809025
		push	[ebp+arg_8]
		push	offset aMapiError08lx ;	"MAPI Error: %08lX"
		push	[ebp+lpBuffer]	; LPSTR
		call	ds:wsprintfA
		add	esp, 0Ch
		mov	ebx, 1
		jmp	short loc_7F809040
; ---------------------------------------------------------------------------

loc_7F809025:				; CODE XREF: sub_7F808F95+6Aj
					; sub_7F808F95+73j
		push	100h		; cchBufferMax
		xor	edi, edi
		push	[ebp+lpBuffer]	; lpBuffer
		push	152Ch		; uID
		push	hInstance	; hInstance
		call	ds:LoadStringA

loc_7F809040:				; CODE XREF: sub_7F808F95+4Fj
					; sub_7F808F95+61j ...
		push	[ebp+lpBuffer]
		push	offset aS	; "%s\r\n"
		lea	ecx, [ebp+Text]
		push	ecx		; LPSTR
		call	ds:wsprintfA
		add	esp, 0Ch
		test	edi, edi
		jz	short loc_7F809097
		push	80h		; cchBufferMax
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		push	1531h		; uID
		push	hInstance	; hInstance
		call	ds:LoadStringA
		push	edi
		lea	ecx, [ebp+Buffer]
		push	ecx
		lea	eax, [ebp+Text]
		push	eax
		push	offset aSSS	; "%s%s:  %s\r\n"
		push	eax		; LPSTR
		call	ds:wsprintfA
		add	esp, 14h

loc_7F809097:				; CODE XREF: sub_7F808F95+C5j
		push	30h		; uType
		lea	eax, [ebp+Text]
		push	offset byte_7F833F30 ; lpCaption
		push	eax		; lpText
		push	[ebp+hWnd]	; hWnd
		call	ds:MessageBoxA
		test	ebx, ebx
		jz	short loc_7F8090BA
		push	[ebp+lpBuffer]
		call	MAPIFreeBuffer@4

loc_7F8090BA:				; CODE XREF: sub_7F808F95+11Bj
		cmp	[ebp+var_8], 0
		jz	short loc_7F8090C8
		push	[ebp+var_8]
		call	MAPIFreeBuffer@4

loc_7F8090C8:				; CODE XREF: sub_7F808F95+129j
		pop	edi
		cmp	esi, 1
		sbb	eax, eax
		pop	esi
		pop	ebx
		mov	esp, ebp
		neg	eax
		pop	ebp
		retn	0Ch
sub_7F808F95	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8090D8	proc near		; DATA XREF: sub_7F8091A3+159o

ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F801268
		push	offset sub_7F82FBD0
		push	eax
		mov	large fs:0, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		xor	ebx, ebx
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+ms_exc.registration.TryLevel], ebx
		mov	ecx, [ebp+arg_8]
		cmp	dword ptr [ecx], 100h
		jnz	short loc_7F809159
		cmp	dword ptr [ecx+8], 3
		jnz	short loc_7F809159
		mov	edi, [ebp+arg_0]
		push	dword ptr [edi]
		push	dword ptr [ecx+34h]
		push	dword ptr [ecx+38h]
		call	PpropFindProp@12
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F809159
		lea	esi, [edi+8]
		lea	edi, [esi+4]
		push	edi
		push	0
		push	dword ptr [ebx+8]
		call	sub_7F80A757
		test	eax, eax
		jz	short loc_7F809159
		mov	eax, [ebx+8]
		mov	[esi], eax
		mov	edi, [edi]
		mov	esi, [ebx+0Ch]
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb

loc_7F809159:				; CODE XREF: sub_7F8090D8+36j
					; sub_7F8090D8+3Cj ...
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F80916A

loc_7F809165:				; DATA XREF: .text:stru_7F801268o
		mov	esp, [ebp+ms_exc.old_esp] ; Finally handler 0 for function 7F8090D8
		xor	eax, eax

loc_7F80916A:				; DATA XREF: sub_7F8090D8+88o
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F8090D8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80917D	proc near		; CODE XREF: sub_7F8091A3+1E4p
					; sub_7F8091A3+4E7p

var_8		= byte ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		lea	eax, [ebp+var_4]
		lea	ecx, [ebp+var_8]
		push	eax
		push	ecx
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+40h]
		lea	ecx, [ebp+var_4]
		push	ecx
		call	sub_7F80A775
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F80917D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8091A3(HWND hWnd,	int)
sub_7F8091A3	proc near		; CODE XREF: sub_7F807D9C+294p

var_D0		= dword	ptr -0D0h
var_C8		= dword	ptr -0C8h
Msg		= tagMSG ptr -0A0h
var_84		= dword	ptr -84h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_68		= dword	ptr -68h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
ms_exc		= CPPEH_RECORD ptr -18h
hWnd		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F801278
		push	offset sub_7F82FBD0
		push	eax
		mov	eax, [ebp+arg_4]
		mov	large fs:0, esp
		mov	ecx, [eax+24h]
		sub	esp, 0C0h
		mov	[ebp+var_28], ecx
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+var_24], esi
		mov	[ebp+var_20], esi
		mov	[ebp+var_34], esi
		mov	[ebp+var_2C], esi
		mov	[ebp+var_50], esi
		mov	[ebp+var_54], esi
		mov	[ebp+var_30], esi
		mov	[ebp+var_3C], esi
		mov	[ebp+var_38], esi
		mov	[ebp+var_40], esi
		mov	[ebp+ms_exc.registration.TryLevel], esi
		mov	[ebp+var_78], esi
		lea	eax, [ebp+var_24]
		push	eax
		push	esi
		push	ecx
		mov	eax, [ecx]
		call	dword ptr [eax+4Ch]
		cmp	eax, esi
		jge	short loc_7F80921B
		push	eax		; int
		push	[ebp+var_28]	; int
		push	[ebp+hWnd]	; hWnd
		call	sub_7F808F95
		jmp	loc_7F8095E9
; ---------------------------------------------------------------------------

loc_7F80921B:				; CODE XREF: sub_7F8091A3+65j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		push	[ebp+var_24]
		mov	eax, [ebp+var_24]
		mov	eax, [eax]
		call	dword ptr [eax+10h]
		test	eax, eax
		jge	short loc_7F809241
		push	eax		; int
		push	[ebp+var_24]	; int
		push	[ebp+hWnd]	; hWnd
		call	sub_7F808F95
		jmp	loc_7F8095E9
; ---------------------------------------------------------------------------

loc_7F809241:				; CODE XREF: sub_7F8091A3+8Bj
		push	0
		push	offset unk_7F8352C0
		push	[ebp+var_20]
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		call	dword ptr [eax+1Ch]
		test	eax, eax
		jge	short loc_7F809268
		push	eax		; int
		push	[ebp+var_20]	; int
		push	[ebp+hWnd]	; hWnd
		call	sub_7F808F95
		jmp	loc_7F8095E9
; ---------------------------------------------------------------------------

loc_7F809268:				; CODE XREF: sub_7F8091A3+B2j
		push	[ebp+var_20]
		call	sub_7F80970F
		mov	[ebp+var_30], eax
		xor	esi, esi
		cmp	eax, esi
		jz	short loc_7F8092A1
		lea	eax, [ebp+var_38]
		push	eax
		push	esi
		push	[ebp+var_30]
		push	[ebp+var_20]
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		call	dword ptr [eax+4Ch]
		cmp	eax, esi
		jge	short loc_7F8092A1
		push	eax		; int
		push	[ebp+var_20]	; int
		push	[ebp+hWnd]	; hWnd
		call	sub_7F808F95
		jmp	loc_7F8095E9
; ---------------------------------------------------------------------------

loc_7F8092A1:				; CODE XREF: sub_7F8091A3+D4j
					; sub_7F8091A3+EBj
		push	[ebp+var_20]
		call	UlRelease@4
		xor	esi, esi
		mov	[ebp+var_20], esi
		mov	edi, [ebp+arg_4]
		add	edi, 28h
		cmp	[edi], esi
		jnz	short loc_7F8092DA
		push	edi
		push	esi
		push	[ebp+var_28]
		mov	eax, [ebp+var_28]
		mov	eax, [eax]
		call	dword ptr [eax+10h]
		cmp	eax, esi
		jge	short loc_7F8092DA
		push	eax		; int
		push	[ebp+var_28]	; int
		push	[ebp+hWnd]	; hWnd
		call	sub_7F808F95
		jmp	loc_7F8095E9
; ---------------------------------------------------------------------------

loc_7F8092DA:				; CODE XREF: sub_7F8091A3+113j
					; sub_7F8091A3+124j
		mov	eax, [edi]
		mov	[ebp+var_34], eax
		mov	[ebp+var_84], 0FFF0102h
		xor	esi, esi
		mov	[ebp+var_7C], esi
		mov	[ebp+var_78], esi
		lea	eax, [ebp+var_68]
		push	eax
		lea	eax, [ebp+var_84]
		push	eax
		push	offset sub_7F8090D8
		call	HrAllocAdviseSink@12
		cmp	eax, esi
		jge	short loc_7F809323
		push	30h		; uType
		push	offset byte_7F833F30 ; lpCaption
		push	1007h		; uID
		push	[ebp+hWnd]	; hWnd
		call	sub_7F808359
		jmp	loc_7F8095E9
; ---------------------------------------------------------------------------

loc_7F809323:				; CODE XREF: sub_7F8091A3+165j
		lea	eax, [ebp+var_5C]
		push	eax
		push	[ebp+var_68]
		push	100h
		push	[ebp+var_34]
		mov	eax, [ebp+var_34]
		mov	eax, [eax]
		call	dword ptr [eax+10h]
		test	eax, eax
		jge	short loc_7F80934F
		push	eax		; int
		push	[ebp+var_34]	; int
		push	[ebp+hWnd]	; hWnd
		call	sub_7F808F95
		jmp	loc_7F8095E9
; ---------------------------------------------------------------------------

loc_7F80934F:				; CODE XREF: sub_7F8091A3+199j
		mov	[ebp+var_54], 1
		xor	esi, esi
		push	esi
		push	esi
		push	offset aMmfMigrationTa ; "MMF MIGRATION	Target Store"
		push	offset aMspstMs	; "MSPST MS"
		push	[ebp+var_24]
		mov	eax, [ebp+var_24]
		mov	eax, [eax]
		call	dword ptr [eax+14h]
		cmp	eax, esi
		jge	short loc_7F809384
		push	eax		; int
		push	[ebp+var_24]	; int
		push	[ebp+hWnd]	; hWnd
		call	sub_7F808F95
		jmp	loc_7F8095E9
; ---------------------------------------------------------------------------

loc_7F809384:				; CODE XREF: sub_7F8091A3+1CEj
		push	[ebp+var_28]
		call	sub_7F80917D
		mov	esi, ds:GetTickCount
		call	esi ; GetTickCount
		mov	edi, eax
		call	esi ; GetTickCount
		sub	eax, edi
		cmp	eax, 2710h
		jnb	short loc_7F809409

loc_7F8093A1:				; CODE XREF: sub_7F8091A3+264j
		xor	eax, eax
		cmp	[ebp+var_7C], eax
		jnz	short loc_7F809409
		push	eax		; wRemoveMsg
		push	eax		; wMsgFilterMax
		push	eax		; wMsgFilterMin
		push	eax		; hWnd
		lea	eax, [ebp+Msg]
		push	eax		; lpMsg
		call	ds:PeekMessageA
		test	eax, eax
		jz	short loc_7F8093FE

loc_7F8093BD:				; CODE XREF: sub_7F8091A3+259j
		xor	ebx, ebx
		push	ebx		; wMsgFilterMax
		push	ebx		; wMsgFilterMin
		push	ebx		; hWnd
		lea	eax, [ebp+Msg]
		push	eax		; lpMsg
		call	ds:GetMessageA
		lea	eax, [ebp+Msg]
		push	eax		; lpMsg
		call	ds:TranslateMessage
		lea	eax, [ebp+Msg]
		push	eax		; lpMsg
		call	ds:DispatchMessageA
		push	ebx		; wRemoveMsg
		push	ebx		; wMsgFilterMax
		push	ebx		; wMsgFilterMin
		push	ebx		; hWnd
		lea	eax, [ebp+Msg]
		push	eax		; lpMsg
		call	ds:PeekMessageA
		test	eax, eax
		jnz	short loc_7F8093BD

loc_7F8093FE:				; CODE XREF: sub_7F8091A3+218j
		call	esi ; GetTickCount
		sub	eax, edi
		cmp	eax, 2710h
		jb	short loc_7F8093A1

loc_7F809409:				; CODE XREF: sub_7F8091A3+1FCj
					; sub_7F8091A3+203j
		xor	esi, esi
		cmp	[ebp+var_7C], esi
		jz	loc_7F8095E9
		lea	eax, [ebp+var_20]
		push	eax
		push	esi
		push	[ebp+var_24]
		mov	eax, [ebp+var_24]
		mov	eax, [eax]
		call	dword ptr [eax+10h]
		cmp	eax, esi
		jge	short loc_7F809439
		push	eax		; int
		push	[ebp+var_24]	; int
		push	[ebp+hWnd]	; hWnd
		call	sub_7F808F95
		jmp	loc_7F8095E9
; ---------------------------------------------------------------------------

loc_7F809439:				; CODE XREF: sub_7F8091A3+283j
		push	0
		push	offset unk_7F8352C0
		push	[ebp+var_20]
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		call	dword ptr [eax+1Ch]
		test	eax, eax
		jge	short loc_7F809460
		push	eax		; int
		push	[ebp+var_20]	; int
		push	[ebp+hWnd]	; hWnd
		call	sub_7F808F95
		jmp	loc_7F8095E9
; ---------------------------------------------------------------------------

loc_7F809460:				; CODE XREF: sub_7F8091A3+2AAj
		push	[ebp+var_20]
		call	sub_7F80970F
		mov	[ebp+var_30], eax
		lea	eax, [ebp+var_3C]
		push	eax
		push	0
		push	[ebp+var_30]
		push	[ebp+var_20]
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		call	dword ptr [eax+4Ch]
		test	eax, eax
		jge	short loc_7F809494
		push	eax		; int
		push	[ebp+var_20]	; int
		push	[ebp+hWnd]	; hWnd
		call	sub_7F808F95
		jmp	loc_7F8095E9
; ---------------------------------------------------------------------------

loc_7F809494:				; CODE XREF: sub_7F8091A3+2DEj
		mov	eax, [ebp+var_3C]
		mov	ecx, [eax]
		test	ecx, ecx
		jz	loc_7F8095E9
		cmp	[ebp+var_38], 0
		jnz	loc_7F809534
		mov	eax, [eax+0Ch]
		add	eax, 8
		mov	[ebp+var_2C], eax

loc_7F8094B4:				; CODE XREF: sub_7F8091A3+434j
		xor	esi, esi
		mov	[ebp+var_48], esi
		mov	ecx, esi
		shl	ecx, 4
		mov	[ebp+ecx+var_D0], 6700001Eh
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+30h]
		mov	[ebp+ecx+var_C8], eax
		inc	[ebp+var_48]
		mov	edi, [ebp+hWnd]
		lea	eax, [ebp+var_D0]
		push	eax
		push	[ebp+var_48]
		push	2
		push	edi
		mov	eax, [ebp+var_2C]
		push	dword ptr [eax+4]
		push	[ebp+var_24]
		mov	eax, [ebp+var_24]
		mov	eax, [eax]
		call	dword ptr [eax+24h]
		cmp	eax, esi
		jl	loc_7F8095E9
		lea	eax, [ebp+var_50]
		push	eax
		push	4
		push	esi
		push	[ebp+var_78]
		push	[ebp+var_7C]
		push	edi
		push	[ebp+var_28]
		mov	eax, [ebp+var_28]
		mov	eax, [eax]
		call	dword ptr [eax+14h]
		cmp	eax, esi
		jge	loc_7F8095E2
		push	eax		; int
		push	[ebp+var_28]	; int
		push	[ebp+hWnd]	; hWnd
		call	sub_7F808F95
		jmp	loc_7F8095E9
; ---------------------------------------------------------------------------

loc_7F809534:				; CODE XREF: sub_7F8091A3+302j
		mov	[ebp+var_44], 0
		lea	eax, [ecx-1]
		mov	[ebp+var_30], eax
		imul	eax, 0Ch
		mov	edx, [ebp+var_70]
		mov	ebx, [ebp+var_74]

loc_7F80954A:				; CODE XREF: sub_7F8091A3+429j
		mov	ecx, [ebp+var_38]
		mov	ecx, [ecx]
		dec	ecx
		mov	[ebp+var_4C], ecx
		mov	ecx, [ebp+var_3C]
		mov	ecx, [ecx+eax+0Ch]
		add	ecx, 8
		mov	[ebp+var_2C], ecx
		mov	ecx, [ebp+var_4C]
		imul	ecx, 0Ch
		mov	[ebp+var_58], ecx

loc_7F809569:				; CODE XREF: sub_7F8091A3+416j
		mov	esi, [ebp+var_38]
		mov	ecx, [ebp+var_58]
		mov	ebx, [esi+ecx+0Ch]
		mov	ecx, [ebp+var_2C]
		mov	edx, [ecx]
		cmp	[ebx+8], edx
		jnz	short loc_7F8095A0
		mov	esi, ecx
		mov	ecx, edx
		shr	ecx, 2
		mov	esi, [esi+4]
		mov	edi, [ebx+0Ch]
		repe cmpsd
		jnz	short loc_7F8095A0
		mov	ecx, edx
		and	ecx, 3
		repe cmpsb
		jnz	short loc_7F8095A0
		mov	[ebp+var_44], 1
		jmp	short loc_7F8095A7
; ---------------------------------------------------------------------------

loc_7F8095A0:				; CODE XREF: sub_7F8091A3+3D8j
					; sub_7F8091A3+3E9j ...
		mov	[ebp+var_44], 0

loc_7F8095A7:				; CODE XREF: sub_7F8091A3+3FBj
		mov	ecx, [ebp+var_4C]
		sub	[ebp+var_58], 0Ch
		dec	[ebp+var_4C]
		test	ecx, ecx
		jz	short loc_7F8095BB
		cmp	[ebp+var_44], 0
		jz	short loc_7F809569

loc_7F8095BB:				; CODE XREF: sub_7F8091A3+410j
		mov	ecx, [ebp+var_30]
		sub	eax, 0Ch
		dec	[ebp+var_30]
		test	ecx, ecx
		jz	short loc_7F8095D2
		cmp	[ebp+var_44], 0
		jnz	loc_7F80954A

loc_7F8095D2:				; CODE XREF: sub_7F8091A3+423j
		xor	eax, eax
		cmp	[ebp+var_44], eax
		jz	loc_7F8094B4
		mov	[ebp+var_2C], eax
		jmp	short loc_7F8095E9
; ---------------------------------------------------------------------------

loc_7F8095E2:				; CODE XREF: sub_7F8091A3+37Aj
		mov	[ebp+var_40], 1

loc_7F8095E9:				; CODE XREF: sub_7F8091A3+73j
					; sub_7F8091A3+99j ...
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F809695

loc_7F8095F5:				; DATA XREF: .text:stru_7F801278o
		xor	edi, edi	; Finally handler 0 for	function 7F8091A3
		cmp	[ebp+var_40], edi
		jz	short loc_7F80962D
		mov	esi, [ebp+arg_4]
		add	esi, 1Ch
		push	esi
		push	edi
		mov	eax, [ebp+var_2C]
		push	dword ptr [eax]
		call	sub_7F80A757
		mov	[ebp+var_40], eax
		cmp	eax, edi
		jz	short loc_7F80962D
		mov	eax, [ebp+var_2C]
		mov	edx, [eax]
		mov	edi, [esi]
		mov	esi, [eax+4]
		mov	ecx, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb

loc_7F80962D:				; CODE XREF: sub_7F8091A3+457j
					; sub_7F8091A3+470j
		cmp	[ebp+var_40], 0
		jnz	short loc_7F80964A
		cmp	[ebp+var_2C], 0
		jz	short loc_7F80964A
		mov	eax, [ebp+var_2C]
		push	dword ptr [eax+4]
		push	[ebp+var_24]
		mov	eax, [ebp+var_24]
		mov	eax, [eax]
		call	dword ptr [eax+18h]

loc_7F80964A:				; CODE XREF: sub_7F8091A3+48Ej
					; sub_7F8091A3+494j
		lea	eax, [ebp+var_78]
		push	eax
		call	sub_7F80A72A
		cmp	[ebp+var_54], 0
		jz	short loc_7F809667
		push	[ebp+var_5C]
		push	[ebp+var_34]
		mov	eax, [ebp+var_34]
		mov	eax, [eax]
		call	dword ptr [eax+14h]

loc_7F809667:				; CODE XREF: sub_7F8091A3+4B4j
		push	[ebp+var_3C]
		call	FreeProws@4
		push	[ebp+var_38]
		call	FreeProws@4
		push	[ebp+var_20]
		call	UlRelease@4
		push	[ebp+var_24]
		call	UlRelease@4
		push	[ebp+var_28]
		call	sub_7F80917D
		mov	esp, [ebp+ms_exc.old_esp]
		mov	eax, [ebp+var_50]

loc_7F809695:				; DATA XREF: sub_7F8091A3+44Do
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F8091A3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8096A8	proc near		; CODE XREF: sub_7F807D9C+2F8p

var_4		= dword	ptr -4
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		mov	eax, [ebp+arg_4]
		push	esi
		xor	ebx, ebx
		push	edi
		lea	esi, [eax+1Ch]
		xor	edi, edi
		mov	[ebp+var_4], ebx
		cmp	[esi], ebx
		jz	short loc_7F8096F0
		mov	eax, [eax+24h]
		lea	ecx, [ebp+var_4]
		push	ecx
		push	ebx
		push	eax
		mov	edi, [eax]
		call	dword ptr [edi+4Ch]
		mov	edi, eax
		test	edi, edi
		jl	short loc_7F8096F0
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_7F8096F0
		push	eax
		mov	ecx, [ebp+var_4]
		mov	eax, [ecx]
		push	[ebp+var_4]
		call	dword ptr [eax+18h]
		mov	edi, eax
		test	edi, edi
		jl	short loc_7F8096F0
		mov	[esi], ebx

loc_7F8096F0:				; CODE XREF: sub_7F8096A8+18j
					; sub_7F8096A8+2Cj ...
		push	[ebp+var_4]
		call	UlRelease@4
		mov	eax, 0
		test	edi, edi
		jl	short loc_7F809706
		mov	eax, 1

loc_7F809706:				; CODE XREF: sub_7F8096A8+57j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F8096A8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80970F	proc near		; CODE XREF: sub_7F808A6D+68p
					; sub_7F808C12+64p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	esi
		lea	eax, [ebp+var_4]
		push	edi
		xor	esi, esi
		push	eax
		mov	edi, [ebp+arg_0]
		push	esi
		mov	[ebp+var_4], esi
		push	edi
		mov	eax, [edi]
		call	dword ptr [eax+24h]
		test	eax, eax
		jge	short loc_7F80974D
		push	esi
		mov	eax, [edi]
		push	esi
		push	esi
		push	edi
		call	dword ptr [eax+28h]
		lea	eax, [ebp+var_4]
		push	eax
		push	esi
		push	2
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+28h]
		push	esi
		mov	eax, [edi]
		push	esi
		push	esi
		push	edi
		call	dword ptr [eax+28h]

loc_7F80974D:				; CODE XREF: sub_7F80970F+1Dj
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F80970F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F809758(HWND hWnd,	int)
sub_7F809758	proc near		; CODE XREF: sub_7F805851+2CBp
					; DialogFunc+BBp

Rect		= tagRECT ptr -10h
hWnd		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		lea	eax, [ebp+Rect]
		push	esi
		push	edi
		push	eax		; lpRect
		xor	edi, edi
		push	[ebp+hWnd]	; hWnd
		call	ds:GetWindowRect
		mov	esi, [ebp+Rect.right]
		mov	ebx, [ebp+Rect.bottom]
		sub	esi, [ebp+Rect.left]
		sub	ebx, [ebp+Rect.top]
		push	edi		; nIndex
		call	ds:GetSystemMetrics
		sub	eax, esi
		push	1		; nIndex
		cdq
		sub	eax, edx
		sar	eax, 1
		mov	esi, eax
		call	ds:GetSystemMetrics
		sub	eax, ebx
		mov	ecx, [ebp+arg_4]
		cdq
		sub	eax, edx
		or	cl, 4
		sar	eax, 1
		push	ecx		; uFlags
		push	edi		; cy
		push	edi		; cx
		push	eax		; Y
		push	esi		; X
		push	edi		; hWndInsertAfter
		push	[ebp+hWnd]	; hWnd
		call	ds:SetWindowPos
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F809758	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F8097B9(HWND hWnd)
sub_7F8097B9	proc near		; CODE XREF: sub_7F805851+74p

Paint		= tagPAINTSTRUCT ptr -40h
hWnd		= dword	ptr  4

		sub	esp, 40h
		lea	eax, [esp+40h+Paint]
		push	esi
		push	edi
		push	eax		; lpPaint
		mov	edi, [esp+4Ch+hWnd]
		push	edi		; hWnd
		call	ds:BeginPaint
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F8097F7
		cmp	dword_7F835298,	0
		jz	short loc_7F8097E4
		push	esi		; hdc
		push	edi		; hDlg
		call	sub_7F8097FF

loc_7F8097E4:				; CODE XREF: sub_7F8097B9+22j
		push	esi		; hDC
		push	edi		; int
		call	sub_7F80A689
		lea	eax, [esp+48h+Paint]
		push	eax		; lpPaint
		push	edi		; hWnd
		call	ds:EndPaint

loc_7F8097F7:				; CODE XREF: sub_7F8097B9+19j
		pop	edi
		pop	esi
		add	esp, 40h
		retn	4
sub_7F8097B9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8097FF(HWND hDlg,	HDC hdc)
sub_7F8097FF	proc near		; CODE XREF: sub_7F8097B9+26p

Rect		= tagRECT ptr -34h
var_24		= tagRECT ptr -24h
var_14		= dword	ptr -14h
Point		= tagPOINT ptr -10h
h		= dword	ptr -8
ho		= dword	ptr -4
hDlg		= dword	ptr  8
hdc		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 34h
		push	ebx
		push	esi
		push	edi
		call	ds:GetDialogBaseUnits
		call	ds:GetDialogBaseUnits
		shr	eax, 10h
		push	385h		; nIDDlgItem
		movzx	esi, ax
		mov	edi, [ebp+hDlg]
		push	edi		; hDlg
		call	ds:GetDlgItem
		test	eax, eax
		jnz	short loc_7F809841
		push	339h		; nIDDlgItem
		push	edi		; hDlg
		call	ds:GetDlgItem
		test	eax, eax
		jz	loc_7F809933

loc_7F809841:				; CODE XREF: sub_7F8097FF+2Cj
		lea	ecx, [ebp+Rect]
		push	ecx		; lpRect
		push	eax		; hWnd
		call	ds:GetWindowRect
		mov	ecx, [ebp+Rect.left]
		mov	edx, [ebp+Rect.top]
		mov	[ebp+Point.x], ecx
		mov	[ebp+Point.y], edx
		lea	ecx, [ebp+Point]
		push	ecx		; lpPoint
		push	edi		; hWnd
		call	ds:ScreenToClient
		lea	ecx, [ebp+var_24]
		push	ecx		; lpRect
		push	edi		; hWnd
		call	ds:GetClientRect
		mov	edi, [ebp+Point.y]
		lea	eax, ds:0[esi*8]
		cdq
		and	edx, 7
		push	14h		; nIndex
		add	eax, edx
		sar	eax, 3
		sub	di, ax
		call	ds:GetSysColor
		sub	di, 5
		push	eax		; color
		push	1		; cWidth
		push	0		; iStyle
		call	ds:CreatePen
		push	10h		; nIndex
		mov	[ebp+h], eax
		call	ds:GetSysColor
		push	eax		; color
		push	1		; cWidth
		push	0		; iStyle
		call	ds:CreatePen
		movsx	edi, di
		push	eax		; h
		mov	esi, [ebp+hdc]
		push	esi		; hdc
		mov	[ebp+ho], eax
		call	ds:SelectObject
		push	0		; lppt
		mov	[ebp+var_14], eax
		push	edi		; y
		push	4		; x
		push	esi		; hdc
		call	ds:MoveToEx
		push	edi		; y
		mov	eax, [ebp+var_24.right]
		sub	eax, 4
		lea	ebx, [edi+1]
		push	eax		; x
		push	esi		; hdc
		call	ds:LineTo
		push	[ebp+h]		; h
		push	esi		; hdc
		call	ds:SelectObject
		push	0		; lppt
		push	ebx		; y
		push	4		; x
		push	esi		; hdc
		call	ds:MoveToEx
		push	ebx		; y
		mov	eax, [ebp+var_24.right]
		sub	eax, 4
		push	eax		; x
		push	esi		; hdc
		call	ds:LineTo
		push	edi		; y
		mov	eax, [ebp+var_24.right]
		sub	eax, 4
		push	eax		; x
		push	esi		; hdc
		call	ds:LineTo
		push	[ebp+var_14]	; h
		push	esi		; hdc
		call	ds:SelectObject
		push	[ebp+h]		; ho
		call	ds:DeleteObject
		push	[ebp+ho]	; ho
		call	ds:DeleteObject

loc_7F809933:				; CODE XREF: sub_7F8097FF+3Cj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F8097FF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80993C(HWND hDlg,	int nIDDlgItem,	int)
sub_7F80993C	proc near		; CODE XREF: sub_7F806352+10Ap
					; sub_7F806861+49Fp

hDlg		= dword	ptr  8
nIDDlgItem	= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	edi
		push	0		; lParam
		push	0		; wParam
		push	0C1h		; Msg
		push	[ebp+nIDDlgItem] ; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:SendDlgItemMessageA
		lea	ebx, [eax+0Ch]
		mov	edi, [ebp+arg_8]
		push	edi
		push	0
		push	ebx
		call	sub_7F80A757
		test	eax, eax
		mov	eax, 0
		jz	short loc_7F809985
		movzx	eax, bx
		push	eax		; cchMax
		push	dword ptr [edi]	; lpString
		push	[ebp+nIDDlgItem] ; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:GetDlgItemTextA
		mov	eax, 1

loc_7F809985:				; CODE XREF: sub_7F80993C+30j
		pop	edi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_7F80993C	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80998B	proc near		; CODE XREF: sub_7F806352+1CAp
					; sub_7F809A3F+316p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, 12h
		ja	short loc_7F8099AF
		jz	short loc_7F8099CA
		test	eax, eax
		jz	short loc_7F8099C5
		cmp	eax, 2
		jz	short loc_7F8099CA
		cmp	eax, 3
		jz	short loc_7F8099D0
		cmp	eax, 5
		jz	short loc_7F8099D6

loc_7F8099A9:				; CODE XREF: sub_7F80998B+2Aj
					; sub_7F80998B+33j
					; DATA XREF: ...
		mov	ax, 151Eh	; jumptable 7F8099BE default case
		jmp	short locret_7F8099F8
; ---------------------------------------------------------------------------

loc_7F8099AF:				; CODE XREF: sub_7F80998B+7j
		sub	eax, 20h	; switch 36 cases
		cmp	eax, 23h
		ja	short loc_7F8099A9 ; jumptable 7F8099BE	default	case
		movzx	ecx, ds:byte_7F809A1B[eax]
		jmp	ds:off_7F8099FB[ecx*4] ; switch	jump
; ---------------------------------------------------------------------------

loc_7F8099C5:				; CODE XREF: sub_7F80998B+Dj
		xor	ax, ax
		jmp	short locret_7F8099F8
; ---------------------------------------------------------------------------

loc_7F8099CA:				; CODE XREF: sub_7F80998B+9j
					; sub_7F80998B+12j
		mov	ax, 1517h
		jmp	short locret_7F8099F8
; ---------------------------------------------------------------------------

loc_7F8099D0:				; CODE XREF: sub_7F80998B+17j
		mov	ax, 151Fh
		jmp	short locret_7F8099F8
; ---------------------------------------------------------------------------

loc_7F8099D6:				; CODE XREF: sub_7F80998B+1Cj
		mov	ax, 1519h
		jmp	short locret_7F8099F8
; ---------------------------------------------------------------------------

loc_7F8099DC:				; CODE XREF: sub_7F80998B+33j
					; DATA XREF: .text:off_7F8099FBo
		mov	ax, 1518h	; jumptable 7F8099BE case 32
		jmp	short locret_7F8099F8
; ---------------------------------------------------------------------------

loc_7F8099E2:				; CODE XREF: sub_7F80998B+33j
					; DATA XREF: .text:off_7F8099FBo
		mov	ax, 1522h	; jumptable 7F8099BE cases 53,55,66,67
		jmp	short locret_7F8099F8
; ---------------------------------------------------------------------------

loc_7F8099E8:				; CODE XREF: sub_7F80998B+33j
					; DATA XREF: .text:off_7F8099FBo
		mov	ax, 1521h	; jumptable 7F8099BE case 54
		jmp	short locret_7F8099F8
; ---------------------------------------------------------------------------

loc_7F8099EE:				; CODE XREF: sub_7F80998B+33j
					; DATA XREF: .text:off_7F8099FBo
		mov	ax, 1523h	; jumptable 7F8099BE cases 58,59
		jmp	short locret_7F8099F8
; ---------------------------------------------------------------------------

loc_7F8099F4:				; CODE XREF: sub_7F80998B+33j
					; DATA XREF: .text:off_7F8099FBo
		mov	ax, 1520h	; jumptable 7F8099BE case 65

locret_7F8099F8:			; CODE XREF: sub_7F80998B+22j
					; sub_7F80998B+3Dj ...
		retn	4
sub_7F80998B	endp

; ---------------------------------------------------------------------------
off_7F8099FB	dd offset loc_7F8099DC	; DATA XREF: sub_7F80998B+33r
		dd offset loc_7F8099E2	; jump table for switch	statement
		dd offset loc_7F8099E8
		dd offset loc_7F8099E2
		dd offset loc_7F8099EE
		dd offset loc_7F8099F4
		dd offset loc_7F8099E2
		dd offset loc_7F8099A9
byte_7F809A1B	db	0,     7,     7,     7 ; DATA XREF: sub_7F80998B+2Cr
		db	7,     7,     7,     7 ; indirect table	for switch statement
		db	7,     7,     7,     7
		db	7,     7,     7,     7
		db	7,     7,     7,     7
		db	7,     1,     2,     3
		db	7,     7,     4,     4
		db	7,     7,     7,     7
		db	7,     5,     6,     6

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F809A3F(HWND hDlg,	int, __int16, int)
sub_7F809A3F	proc near		; DATA XREF: sub_7F805EBF+7Fo

var_218		= byte ptr -218h
String1		= byte ptr -118h
String		= byte ptr -114h
var_113		= byte ptr -113h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
hDlg		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= word ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	eax, [esp+arg_4]
		mov	ebp, esp
		sub	esp, 218h
		cmp	eax, 4Eh
		push	ebx
		push	esi
		push	edi
		jz	short loc_7F809A5F
		cmp	eax, 111h
		jnz	loc_7F809D42

loc_7F809A5F:				; CODE XREF: sub_7F809A3F+13j
		cmp	[ebp+arg_4], 111h
		jnz	short loc_7F809AAA
		cmp	[ebp+arg_8], 1
		jnz	loc_7F809D42
		mov	[ebp+String], 0
		lea	eax, [ebp+String]
		push	eax		; lpString
		call	ds:lstrlenA
		test	eax, eax
		jnz	short loc_7F809AA5
		push	104h		; cchMax
		lea	eax, [ebp+String]
		push	eax		; lpString
		push	480h		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:GetDlgItemTextA

loc_7F809AA5:				; CODE XREF: sub_7F809A3F+4Aj
		mov	eax, [ebp+hDlg]
		jmp	short loc_7F809AE4
; ---------------------------------------------------------------------------

loc_7F809AAA:				; CODE XREF: sub_7F809A3F+27j
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+8], 0FFFFFDA2h
		jnz	loc_7F809D42
		lea	eax, [ebp+String]
		push	eax		; lParam
		push	104h		; wParam
		push	464h		; Msg
		push	[ebp+hDlg]	; hWnd
		call	ds:GetParent
		push	eax		; hWnd
		call	ds:SendMessageA
		push	[ebp+hDlg]	; hWnd
		call	ds:GetParent

loc_7F809AE4:				; CODE XREF: sub_7F809A3F+69j
		mov	[ebp+var_8], eax
		lea	eax, [ebp+String]
		push	eax		; lpFileName
		call	ds:GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jz	short loc_7F809B01
		test	al, 10h
		jnz	loc_7F809D42

loc_7F809B01:				; CODE XREF: sub_7F809A3F+B8j
		lea	eax, [ebp+String]
		push	eax		; lpString
		call	ds:lstrlenA
		cmp	eax, 2
		jnz	short loc_7F809B20
		cmp	[ebp+var_113], 3Ah
		jz	loc_7F809D42

loc_7F809B20:				; CODE XREF: sub_7F809A3F+D2j
		xor	esi, esi
		lea	eax, [ebp+String]
		push	eax		; lpString
		call	ds:lstrlenA
		test	eax, eax
		jle	short loc_7F809B53

loc_7F809B33:				; CODE XREF: sub_7F809A3F+112j
		cmp	[ebp+esi+String], 2Ah
		jz	loc_7F809D42
		inc	esi
		lea	eax, [ebp+String]
		push	eax		; lpString
		call	ds:lstrlenA
		cmp	eax, esi
		jg	short loc_7F809B33

loc_7F809B53:				; CODE XREF: sub_7F809A3F+F2j
		lea	eax, [ebp+String]
		push	eax		; lpString
		call	ds:lstrlenA
		test	eax, eax
		jz	loc_7F809D42
		xor	si, si
		xor	edi, edi
		mov	[ebp+var_C], 0
		lea	eax, [ebp+String]
		push	eax		; lpString
		call	ds:lstrlenA
		cmp	eax, 4
		jle	short loc_7F809BBB
		lea	ebx, [ebp+eax+String1]
		push	offset a_mmf	; ".MMF"
		push	ebx		; lpString1
		call	ds:lstrcmpiA
		test	eax, eax
		jnz	short loc_7F809BA4
		mov	edi, 1
		jmp	short loc_7F809BBB
; ---------------------------------------------------------------------------

loc_7F809BA4:				; CODE XREF: sub_7F809A3F+15Cj
		push	offset a_pab	; ".PAB"
		push	ebx		; lpString1
		call	ds:lstrcmpiA
		test	eax, eax
		jnz	short loc_7F809BBB
		mov	[ebp+var_C], 1

loc_7F809BBB:				; CODE XREF: sub_7F809A3F+145j
					; sub_7F809A3F+163j ...
		test	edi, edi
		jnz	short loc_7F809BD3
		lea	eax, [ebp+String]
		lea	ecx, [ebp+var_218]
		push	eax		; lpString2
		push	ecx		; lpString1
		call	ds:lstrcpyA

loc_7F809BD3:				; CODE XREF: sub_7F809A3F+17Ej
		lea	eax, [ebp+var_4]
		lea	ecx, [ebp+var_10]
		push	eax		; int
		lea	edx, [ebp+String]
		push	ecx		; int
		push	0		; int
		push	edx		; lpString
		push	[ebp+hDlg]	; int
		call	sub_7F805FDE
		test	eax, eax
		jz	short loc_7F809C60
		test	edi, edi
		jnz	short loc_7F809C40
		lea	eax, [ebp+String]
		push	eax		; lpString
		call	ds:lstrlenA
		cmp	eax, 4
		jle	short loc_7F809C40
		lea	edi, [ebp+eax+String1]
		push	offset a_mmf	; ".MMF"
		push	edi		; lpString1
		call	ds:lstrcmpiA
		test	eax, eax
		jnz	short loc_7F809C40
		lea	eax, [ebp+var_4]
		lea	ecx, [ebp+var_218]
		push	eax		; int
		push	ecx		; lpString
		push	[ebp+hDlg]	; int
		call	sub_7F8060C1
		test	eax, eax
		jz	short loc_7F809C40
		mov	si, 152Eh
		mov	byte ptr [edi],	0
		jmp	loc_7F809D22
; ---------------------------------------------------------------------------

loc_7F809C40:				; CODE XREF: sub_7F809A3F+1B3j
					; sub_7F809A3F+1C5j ...
		mov	[ebp+var_4], 0
		mov	eax, 1
		mov	dword_7F83535C,	eax
		mov	bEnable, eax
		mov	dword_7F83538C,	eax
		jmp	loc_7F809D22
; ---------------------------------------------------------------------------

loc_7F809C60:				; CODE XREF: sub_7F809A3F+1AFj
		cmp	[ebp+var_10], 81h
		jnz	short loc_7F809CD3
		test	edi, edi
		jnz	short loc_7F809CB6
		lea	eax, [ebp+String]
		push	eax		; lpString
		call	ds:lstrlenA
		cmp	eax, 4
		jle	short loc_7F809CB6
		lea	edi, [ebp+eax+String1]
		push	offset a_mmf	; ".MMF"
		push	edi		; lpString1
		call	ds:lstrcmpiA
		test	eax, eax
		jnz	short loc_7F809CB6
		lea	eax, [ebp+var_4]
		lea	ecx, [ebp+var_218]
		push	eax		; int
		push	ecx		; lpString
		push	[ebp+hDlg]	; int
		call	sub_7F8060C1
		test	eax, eax
		jz	short loc_7F809CB6
		mov	si, 152Eh
		mov	byte ptr [edi],	0
		jmp	short loc_7F809D22
; ---------------------------------------------------------------------------

loc_7F809CB6:				; CODE XREF: sub_7F809A3F+22Cj
					; sub_7F809A3F+23Ej ...
		mov	[ebp+var_4], 0
		mov	eax, 1
		mov	dword_7F83535C,	eax
		mov	bEnable, eax
		mov	dword_7F83538C,	eax
		jmp	short loc_7F809D22
; ---------------------------------------------------------------------------

loc_7F809CD3:				; CODE XREF: sub_7F809A3F+228j
		test	edi, edi
		jz	short loc_7F809CE3
		cmp	[ebp+var_4], 0
		jnz	short loc_7F809D22
		mov	si, 151Ah
		jmp	short loc_7F809D22
; ---------------------------------------------------------------------------

loc_7F809CE3:				; CODE XREF: sub_7F809A3F+296j
		lea	eax, [ebp+var_4]
		lea	ecx, [ebp+String]
		push	eax		; int
		push	ecx		; lpString
		push	[ebp+hDlg]	; int
		call	sub_7F8060C1
		test	eax, eax
		jz	short loc_7F809D06
		mov	dword_7F83537C,	1
		jmp	short loc_7F809D22
; ---------------------------------------------------------------------------

loc_7F809D06:				; CODE XREF: sub_7F809A3F+2B9j
		cmp	[ebp+var_C], 0
		jz	short loc_7F809D18
		cmp	[ebp+var_4], 0
		jnz	short loc_7F809D22
		mov	si, 151Ch
		jmp	short loc_7F809D22
; ---------------------------------------------------------------------------

loc_7F809D18:				; CODE XREF: sub_7F809A3F+2CBj
		cmp	[ebp+var_4], 0
		jnz	short loc_7F809D22
		mov	si, 151Dh

loc_7F809D22:				; CODE XREF: sub_7F809A3F+1FCj
					; sub_7F809A3F+21Cj ...
		test	si, si
		jnz	short loc_7F809D5D
		cmp	[ebp+var_4], 0
		jnz	short loc_7F809D4D
		lea	eax, [ebp+String]
		push	eax		; lpString
		push	480h		; nIDDlgItem
		push	[ebp+var_8]	; hDlg
		call	ds:SetDlgItemTextA

loc_7F809D42:				; CODE XREF: sub_7F809A3F+1Aj
					; sub_7F809A3F+2Ej ...
		xor	eax, eax

loc_7F809D44:				; CODE XREF: sub_7F809A3F+380j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------

loc_7F809D4D:				; CODE XREF: sub_7F809A3F+2ECj
		test	si, si
		jnz	short loc_7F809D62
		push	[ebp+var_4]
		call	sub_7F80998B
		mov	si, ax

loc_7F809D5D:				; CODE XREF: sub_7F809A3F+2E6j
		test	si, si
		jz	short loc_7F809DA5

loc_7F809D62:				; CODE XREF: sub_7F809A3F+311j
		push	200h		; cchBufferMax
		mov	edi, offset byte_7F8336A8
		movzx	eax, si
		push	edi		; lpBuffer
		push	eax		; uID
		push	hInstance	; hInstance
		call	ds:LoadStringA
		lea	ecx, [ebp+String]
		push	ecx
		push	edi		; LPCSTR
		mov	edi, offset Text
		push	edi		; LPSTR
		call	ds:wsprintfA
		add	esp, 0Ch
		push	30h		; uType
		push	offset byte_7F833F30 ; lpCaption
		push	edi		; lpText
		push	[ebp+hDlg]	; hWnd
		call	ds:MessageBoxA

loc_7F809DA5:				; CODE XREF: sub_7F809A3F+321j
		cmp	[ebp+arg_4], 4Eh
		jnz	short loc_7F809DBA
		movzx	eax, si
		push	eax		; dwNewLong
		push	0		; nIndex
		push	[ebp+hDlg]	; hWnd
		call	ds:SetWindowLongA

loc_7F809DBA:				; CODE XREF: sub_7F809A3F+36Aj
		mov	eax, 1
		jmp	short loc_7F809D44
sub_7F809A3F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F809DC1	proc near		; CODE XREF: sub_7F809DFE+5Cp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	edx, [esp+arg_4]
		mov	ebp, esp
		push	esi
		push	edi
		xor	esi, esi
		mov	edi, [ebp+arg_8]
		mov	eax, [edx]
		mov	ecx, [edi]
		cmp	ecx, eax
		jnb	short loc_7F809DE6
		sub	ecx, eax
		mov	esi, 0FFFFFFFFh
		dec	ecx
		mov	eax, [ebp+arg_0]
		mov	[eax], ecx
		jmp	short loc_7F809DED
; ---------------------------------------------------------------------------

loc_7F809DE6:				; CODE XREF: sub_7F809DC1+14j
		sub	ecx, eax
		mov	eax, [ebp+arg_0]
		mov	[eax], ecx

loc_7F809DED:				; CODE XREF: sub_7F809DC1+23j
		mov	ecx, [edi+4]
		pop	edi
		sub	ecx, [edx+4]
		add	ecx, esi
		pop	esi
		pop	ebp
		mov	[eax+4], ecx
		retn	0Ch
sub_7F809DC1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F809DFE(LPSYSTEMTIME, SYSTEMTIME *lpSystemTime, SYSTEMTIME	*)
sub_7F809DFE	proc near		; CODE XREF: sub_7F807D9C+3C1p

var_34		= _FILETIME ptr	-34h
FileTime	= _FILETIME ptr	-2Ch
var_24		= FILETIME ptr -24h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
lpSystemTime	= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F801288
		push	offset sub_7F82FBD0
		push	eax
		xor	eax, eax
		mov	large fs:0, esp
		sub	esp, 24h
		mov	[ebp+var_1C], eax
		push	ebx
		push	esi
		push	edi
		mov	[ebp+ms_exc.old_esp], esp
		mov	[ebp+ms_exc.registration.TryLevel], eax
		lea	eax, [ebp+FileTime]
		push	eax		; lpFileTime
		push	[ebp+lpSystemTime] ; lpSystemTime
		call	ds:SystemTimeToFileTime
		test	eax, eax
		jz	short loc_7F809E6F
		lea	eax, [ebp+var_34]
		push	eax		; lpFileTime
		push	[ebp+arg_8]	; lpSystemTime
		call	ds:SystemTimeToFileTime
		test	eax, eax
		jz	short loc_7F809E6F
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [ebp+FileTime]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_7F809DC1
		push	[ebp+arg_0]	; lpSystemTime
		lea	eax, [ebp+var_24]
		push	eax		; lpFileTime
		call	ds:FileTimeToSystemTime
		mov	[ebp+var_1C], eax

loc_7F809E6F:				; CODE XREF: sub_7F809DFE+3Dj
					; sub_7F809DFE+4Ej
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	offset loc_7F809E81

loc_7F809E7B:				; DATA XREF: .text:stru_7F801288o
		mov	esp, [ebp+ms_exc.old_esp] ; Finally handler 0 for function 7F809DFE
		mov	eax, [ebp+var_1C]

loc_7F809E81:				; DATA XREF: sub_7F809DFE+78o
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F809DFE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F809E94(HWND hDlg)
sub_7F809E94	proc near		; CODE XREF: sub_7F807D9C+20p

hDlg		= dword	ptr  8

		push	ebp
		mov	eax, dword_7F835290
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+hDlg]
		xor	ebx, ebx
		push	dword ptr [eax+8] ; lpString
		push	273h		; nIDDlgItem
		push	edi		; hDlg
		call	ds:SetDlgItemTextA
		push	ebx		; nCmdShow
		mov	esi, ds:GetDlgItem
		push	26Ch		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	ebx		; nCmdShow
		push	26Dh		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	ebx		; nCmdShow
		push	26Eh		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	ebx		; nCmdShow
		push	26Fh		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	ebx		; nCmdShow
		push	270h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	ebx		; nCmdShow
		push	271h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	ebx		; bEnable
		push	26Ch		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	ebx		; bEnable
		push	26Dh		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	ebx		; bEnable
		push	26Eh		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	ebx		; bEnable
		push	26Fh		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	ebx		; bEnable
		push	270h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	ebx		; bEnable
		push	271h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	5		; nCmdShow
		push	272h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		push	5		; nCmdShow
		push	273h		; nIDDlgItem
		push	edi		; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	4
sub_7F809E94	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F809FA2(HWND hWnd,	UINT Msg, WPARAM wParam, LPARAM	lParam)
sub_7F809FA2	proc near		; DATA XREF: sub_7F807D9C+1E6o

hWnd		= dword	ptr  8
Msg		= dword	ptr  0Ch
wParam		= dword	ptr  10h
lParam		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		cmp	[esp+Msg], 100h
		jnz	short loc_7F809FD3
		cmp	[ebp+wParam], 0Dh
		jz	short loc_7F809FBB
		cmp	[ebp+wParam], 1Bh
		jnz	short loc_7F809FD3

loc_7F809FBB:				; CODE XREF: sub_7F809FA2+11j
		push	0		; lParam
		mov	eax, hDlg
		push	339h		; wParam
		push	111h		; Msg
		push	eax		; hWnd
		call	ds:PostMessageA

loc_7F809FD3:				; CODE XREF: sub_7F809FA2+Bj
					; sub_7F809FA2+17j
		push	[ebp+lParam]	; lParam
		push	[ebp+wParam]	; wParam
		push	[ebp+Msg]	; Msg
		push	[ebp+hWnd]	; hWnd
		push	lpPrevWndFunc	; lpPrevWndFunc
		call	ds:CallWindowProcA
		pop	ebp
		retn	10h
sub_7F809FA2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; BOOL __stdcall DialogFunc(HWND, UINT,	WPARAM,	LPARAM)
DialogFunc	proc near		; DATA XREF: sub_7F80504F+CFo
					; sub_7F805168+15Bo ...

hWnd		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	eax, 1415h
		movzx	edx, word ptr [esp+arg_8]
		mov	ecx, [esp+arg_4]
		mov	ebp, esp
		push	esi
		cmp	ecx, 2
		jz	short loc_7F80A039
		cmp	ecx, 110h
		jz	short loc_7F80A056
		cmp	ecx, 111h
		jz	loc_7F80A0B9
		cmp	ecx, 112h
		jz	loc_7F80A0EE
		cmp	ecx, 113h
		jz	loc_7F80A105

loc_7F80A032:				; CODE XREF: DialogFunc+53j
					; DialogFunc+65j ...
		xor	eax, eax

loc_7F80A034:				; CODE XREF: DialogFunc+C5j
		pop	esi
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------

loc_7F80A039:				; CODE XREF: DialogFunc+15j
		mov	eax, uIDEvent
		xor	esi, esi
		test	eax, eax
		jz	short loc_7F80A032
		push	eax		; uIDEvent
		push	[ebp+hWnd]	; hWnd
		call	ds:KillTimer
		mov	uIDEvent, esi
		jmp	short loc_7F80A032
; ---------------------------------------------------------------------------

loc_7F80A056:				; CODE XREF: DialogFunc+1Dj
		cmp	[ebp+arg_C], 8004010Dh
		jnz	short loc_7F80A064
		mov	eax, 140Dh

loc_7F80A064:				; CODE XREF: DialogFunc+6Ej
		push	200h		; cchBufferMax
		mov	esi, offset Text
		push	esi		; lpBuffer
		push	eax		; uID
		push	hInstance	; hInstance
		call	ds:LoadStringA
		push	esi		; lpString
		push	41Bh		; nIDDlgItem
		push	[ebp+hWnd]	; hDlg
		call	ds:SetDlgItemTextA
		push	0		; lpTimerFunc
		push	927C0h		; uElapse
		push	2EBh		; nIDEvent
		push	[ebp+hWnd]	; hWnd
		call	ds:SetTimer
		push	1		; int
		mov	uIDEvent, eax
		push	[ebp+hWnd]	; hWnd
		call	sub_7F809758
		mov	eax, 1
		jmp	loc_7F80A034
; ---------------------------------------------------------------------------

loc_7F80A0B9:				; CODE XREF: DialogFunc+25j
		cmp	edx, 422h
		jz	short loc_7F80A0CE
		cmp	edx, 423h
		jz	short loc_7F80A0DE
		jmp	loc_7F80A032
; ---------------------------------------------------------------------------

loc_7F80A0CE:				; CODE XREF: DialogFunc+D0j
		push	1		; nResult
		push	[ebp+hWnd]	; hDlg
		call	ds:EndDialog
		jmp	loc_7F80A032
; ---------------------------------------------------------------------------

loc_7F80A0DE:				; CODE XREF: DialogFunc+D8j
		push	0		; nResult
		push	[ebp+hWnd]	; hDlg
		call	ds:EndDialog
		jmp	loc_7F80A032
; ---------------------------------------------------------------------------

loc_7F80A0EE:				; CODE XREF: DialogFunc+31j
		mov	eax, [ebp+arg_8]
		and	eax, 0FFF0h
		cmp	eax, 0F060h
		jnz	loc_7F80A032
		push	0
		jmp	short loc_7F80A107
; ---------------------------------------------------------------------------

loc_7F80A105:				; CODE XREF: DialogFunc+3Dj
		push	1		; nResult

loc_7F80A107:				; CODE XREF: DialogFunc+114j
		push	[ebp+hWnd]	; hDlg
		call	ds:EndDialog
		jmp	loc_7F80A032
DialogFunc	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80A115(HWND hDlg,	LPCSTR lpString, LPCSTR, int, BOOL bEnable, BOOL)
sub_7F80A115	proc near		; CODE XREF: sub_7F807D9C+CAp

String		= byte ptr -50h
var_30		= tagRECT ptr -30h
Rect		= tagRECT ptr -20h
var_10		= tagRECT ptr -10h
hDlg		= dword	ptr  8
lpString	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
bEnable		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 50h
		push	ebx
		push	esi
		push	edi
		mov	ebx, 384h
		push	0FFFFFFF0h	; nIndex
		mov	esi, [ebp+hDlg]
		push	ebx		; nIDDlgItem
		mov	edi, ds:GetDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ds:GetWindowLongA
		mov	dword_7F833BF8,	eax
		test	eax, 10000000h
		jz	short loc_7F80A152
		push	0		; nCmdShow
		push	ebx		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow

loc_7F80A152:				; CODE XREF: sub_7F80A115+2Ej
		push	0FFFFFFF0h	; nIndex
		mov	ebx, 386h
		push	ebx		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ds:GetWindowLongA
		mov	dword_7F833BD0,	eax
		test	eax, 10000000h
		jz	short loc_7F80A17D
		push	0		; nCmdShow
		push	ebx		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow

loc_7F80A17D:				; CODE XREF: sub_7F80A115+59j
		push	0		; nCmdShow
		mov	ebx, 32Bh
		push	387h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow

loc_7F80A193:				; CODE XREF: sub_7F80A115+A0j
		push	[ebp+bEnable]	; bEnable
		push	ebx		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	5		; nCmdShow
		push	ebx		; nIDDlgItem
		push	esi		; hDlg
		inc	ebx
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		cmp	ebx, 32Eh
		jle	short loc_7F80A193
		mov	ebx, 335h

loc_7F80A1BC:				; CODE XREF: sub_7F80A115+C9j
		push	[ebp+arg_14]	; bEnable
		push	ebx		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	5		; nCmdShow
		push	ebx		; nIDDlgItem
		push	esi		; hDlg
		inc	ebx
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ds:ShowWindow
		cmp	ebx, 338h
		jle	short loc_7F80A1BC
		mov	ebx, 339h
		push	ebx		; dwNewLong
		push	0FFFFFFF4h	; nIndex
		push	385h		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ds:SetWindowLongA
		push	1		; bEnable
		push	ebx		; nIDDlgItem
		push	esi		; hDlg
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ds:EnableWindow
		push	[ebp+lpString]	; lpString
		push	32Bh		; nIDDlgItem
		push	esi		; hDlg
		xor	ebx, ebx
		call	ds:SetDlgItemTextA
		push	[ebp+arg_8]	; lpString
		push	335h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SetDlgItemTextA
		push	ebx		; lpString
		push	32Dh		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SetDlgItemTextA
		push	ebx		; lpString
		push	337h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SetDlgItemTextA
		cmp	[ebp+bEnable], ebx
		jz	short loc_7F80A29E
		push	ebx		; bSigned
		push	ebx		; uValue
		push	32Ch		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SetDlgItemInt
		cmp	[ebp+arg_C], ebx
		jz	short loc_7F80A29E
		push	104h		; cchBufferMax
		mov	eax, dword_7F835290
		add	eax, 74h
		push	eax		; lpBuffer
		push	1006h		; uID
		push	hInstance	; hInstance
		call	ds:LoadStringA
		mov	eax, dword_7F835290
		lea	ecx, [ebp+String]
		push	[ebp+arg_C]
		add	eax, 74h
		push	eax		; LPCSTR
		push	ecx		; LPSTR
		call	ds:wsprintfA
		add	esp, 0Ch
		lea	ecx, [ebp+String]
		push	ecx		; lpString
		push	32Dh		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SetDlgItemTextA

loc_7F80A29E:				; CODE XREF: sub_7F80A115+12Cj
					; sub_7F80A115+13Fj
		mov	eax, dword_7F835290
		mov	edx, [ebp+arg_C]
		xor	ebx, ebx
		and	byte ptr [eax],	0FEh
		mov	ecx, dword_7F835290
		lea	eax, [ebp+Rect]
		push	eax		; lpRect
		push	32Eh		; nIDDlgItem
		push	esi		; hDlg
		mov	[ecx+4], edx
		mov	rc.bottom, ebx
		mov	rc.top,	ebx
		mov	rc.left, ebx
		mov	rc.right, ebx
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ds:GetWindowRect
		lea	eax, [ebp+var_10]
		push	eax		; lpRect
		push	esi		; hWnd
		call	ds:GetWindowRect
		lea	ecx, [ebp+var_30]
		push	ecx		; lpRect
		push	esi		; hWnd
		call	ds:GetClientRect
		mov	eax, [ebp+var_10.right]
		mov	ecx, [ebp+var_10.bottom]
		sub	eax, [ebp+var_30.right]
		sub	eax, [ebp+var_10.left]
		cdq
		sub	eax, edx
		mov	edx, [ebp+var_10.left]
		sar	eax, 1
		sub	ecx, eax
		add	edx, eax
		sub	ecx, [ebp+var_30.bottom]
		add	eax, [ebp+var_10.left]
		sub	ecx, [ebp+var_10.top]
		sub	[ebp+Rect.right], edx
		push	1		; bErase
		sub	[ebp+Rect.left], eax
		mov	eax, [ebp+var_10.top]
		add	eax, ecx
		add	ecx, [ebp+var_10.top]
		sub	[ebp+Rect.bottom], eax
		sub	[ebp+Rect.top],	ecx
		lea	eax, [ebp+Rect]
		push	eax		; lpRect
		push	esi		; hWnd
		call	ds:InvalidateRect
		lea	ecx, [ebp+Rect]
		mov	stru_7F833BE8.bottom, ebx
		push	ecx		; lpRect
		mov	stru_7F833BE8.top, ebx
		push	338h		; nIDDlgItem
		mov	stru_7F833BE8.left, ebx
		push	esi		; hDlg
		mov	stru_7F833BE8.right, ebx
		call	edi ; GetDlgItem
		push	eax		; hWnd
		call	ds:GetWindowRect
		lea	eax, [ebp+var_10]
		push	eax		; lpRect
		push	esi		; hWnd
		call	ds:GetWindowRect
		lea	ecx, [ebp+var_30]
		push	ecx		; lpRect
		push	esi		; hWnd
		call	ds:GetClientRect
		mov	eax, [ebp+var_10.right]
		sub	eax, [ebp+var_30.right]
		sub	eax, [ebp+var_10.left]
		cdq
		sub	eax, edx
		mov	ecx, [ebp+var_10.left]
		sar	eax, 1
		mov	edx, [ebp+var_10.bottom]
		sub	edx, eax
		add	ecx, eax
		sub	edx, [ebp+var_30.bottom]
		add	eax, [ebp+var_10.left]
		sub	edx, [ebp+var_10.top]
		sub	[ebp+Rect.right], ecx
		push	1		; bErase
		sub	[ebp+Rect.left], eax
		mov	eax, [ebp+var_10.top]
		add	eax, edx
		add	edx, [ebp+var_10.top]
		sub	[ebp+Rect.bottom], eax
		sub	[ebp+Rect.top],	edx
		lea	eax, [ebp+Rect]
		push	eax		; lpRect
		push	esi		; hWnd
		call	ds:InvalidateRect
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F80A115	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F80A3C3(HWND hWnd)
sub_7F80A3C3	proc near		; CODE XREF: sub_7F805851+5DAp

Buffer		= byte ptr -100h
hWnd		= dword	ptr  4

		sub	esp, 100h
		mov	eax, dword_7F835290
		test	byte ptr [eax],	1
		jnz	short loc_7F80A417
		lea	eax, [esp+100h+Buffer]
		push	100h		; cchBufferMax
		push	eax		; lpBuffer
		push	1527h		; uID
		push	hInstance	; hInstance
		call	ds:LoadStringA
		lea	ecx, [esp+100h+Buffer]
		push	131h		; uType
		push	offset byte_7F833F30 ; lpCaption
		push	ecx		; lpText
		push	[esp+10Ch+hWnd]	; hWnd
		call	ds:MessageBoxA
		cmp	eax, 1
		jnz	short loc_7F80A417
		mov	eax, dword_7F835290
		or	byte ptr [eax],	1

loc_7F80A417:				; CODE XREF: sub_7F80A3C3+Ej
					; sub_7F80A3C3+4Aj
		add	esp, 100h
		retn	4
sub_7F80A3C3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80A420(HWND hWnd)
sub_7F80A420	proc near		; CODE XREF: sub_7F80A47A+Cp

Msg		= tagMSG ptr -1Ch
hWnd		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	1		; wRemoveMsg
		lea	ecx, [ebp+Msg]
		push	0		; wMsgFilterMax
		push	0		; wMsgFilterMin
		push	[ebp+hWnd]	; hWnd
		push	ecx		; lpMsg
		call	ds:PeekMessageA
		test	eax, eax
		jz	short loc_7F80A468

loc_7F80A43D:				; CODE XREF: sub_7F80A420+46j
		lea	eax, [ebp+Msg]
		push	eax		; lpMsg
		call	ds:TranslateMessage
		lea	eax, [ebp+Msg]
		push	eax		; lpMsg
		call	ds:DispatchMessageA
		push	1		; wRemoveMsg
		lea	ecx, [ebp+Msg]
		push	0		; wMsgFilterMax
		push	0		; wMsgFilterMin
		push	[ebp+hWnd]	; hWnd
		push	ecx		; lpMsg
		call	ds:PeekMessageA
		test	eax, eax
		jnz	short loc_7F80A43D

loc_7F80A468:				; CODE XREF: sub_7F80A420+1Bj
		mov	eax, dword_7F835290
		mov	eax, [eax]
		mov	esp, ebp
		not	eax
		and	eax, 1
		pop	ebp
		retn	4
sub_7F80A420	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80A47A(HWND hDlg,	UINT uValue, int, int)
sub_7F80A47A	proc near		; CODE XREF: sub_7F80722E+1Cp
					; sub_7F808184+1Dp

String		= byte ptr -50h
var_30		= tagRECT ptr -30h
var_20		= tagRECT ptr -20h
Rect		= tagRECT ptr -10h
hDlg		= dword	ptr  8
uValue		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 50h
		push	ebx
		push	esi
		push	edi
		push	[ebp+hDlg]	; hWnd
		call	sub_7F80A420
		test	eax, eax
		jnz	short loc_7F80A496
		xor	eax, eax
		jmp	loc_7F80A680
; ---------------------------------------------------------------------------

loc_7F80A496:				; CODE XREF: sub_7F80A47A+13j
		mov	ebx, [ebp+arg_8]
		test	ebx, ebx
		jnz	short loc_7F80A4D6
		mov	eax, dword_7F835290
		cmp	[eax+4], ebx
		jz	short loc_7F80A4D0
		push	0		; lpString
		mov	eax, [ebp+arg_C]
		sub	eax, 32Eh
		cmp	eax, 1
		sbb	eax, eax
		and	al, 0F6h
		add	eax, 337h
		push	eax		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:SetDlgItemTextA
		mov	ecx, dword_7F835290
		mov	[ecx+4], ebx

loc_7F80A4D0:				; CODE XREF: sub_7F80A47A+2Bj
		mov	ebx, [ebp+uValue]
		inc	ebx
		jmp	short loc_7F80A53F
; ---------------------------------------------------------------------------

loc_7F80A4D6:				; CODE XREF: sub_7F80A47A+21j
		mov	eax, dword_7F835290
		add	eax, 4
		cmp	[eax], ebx
		jz	short loc_7F80A53F
		push	104h		; cchBufferMax
		mov	[eax], ebx
		mov	eax, dword_7F835290
		add	eax, 74h
		push	eax		; lpBuffer
		push	1006h		; uID
		push	hInstance	; hInstance
		call	ds:LoadStringA
		mov	ecx, dword_7F835290
		push	dword ptr [ecx+4]
		lea	eax, [ecx+74h]
		lea	ecx, [ebp+String]
		push	eax		; LPCSTR
		push	ecx		; LPSTR
		call	ds:wsprintfA
		add	esp, 0Ch
		lea	ecx, [ebp+String]
		mov	eax, [ebp+arg_C]
		push	ecx		; lpString
		sub	eax, 32Eh
		cmp	eax, 1
		sbb	eax, eax
		and	al, 0F6h
		add	eax, 337h
		push	eax		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:SetDlgItemTextA

loc_7F80A53F:				; CODE XREF: sub_7F80A47A+5Aj
					; sub_7F80A47A+66j
		cmp	ebx, [ebp+uValue]
		jnb	short loc_7F80A547
		mov	[ebp+uValue], ebx

loc_7F80A547:				; CODE XREF: sub_7F80A47A+C8j
		mov	eax, dword_7F835290
		push	0		; bSigned
		push	[ebp+uValue]	; uValue
		or	byte ptr [eax],	2
		mov	eax, [ebp+arg_C]
		sub	eax, 32Eh
		cmp	eax, 1
		sbb	eax, eax
		and	al, 0F6h
		add	eax, 336h
		push	eax		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:SetDlgItemInt
		cmp	[ebp+arg_C], 32Eh
		jnz	short loc_7F80A582
		mov	esi, offset rc
		jmp	short loc_7F80A587
; ---------------------------------------------------------------------------

loc_7F80A582:				; CODE XREF: sub_7F80A47A+FFj
		mov	esi, offset stru_7F833BE8

loc_7F80A587:				; CODE XREF: sub_7F80A47A+106j
		lea	edi, [ebp+Rect]
		lea	eax, [ebp+Rect]
		movsd
		movsd
		movsd
		movsd
		push	eax		; lpRect
		mov	eax, [ebp+arg_C]
		sub	eax, 32Eh
		cmp	eax, 1
		sbb	eax, eax
		and	al, 0F6h
		add	eax, 338h
		push	eax		; nIDDlgItem
		push	[ebp+hDlg]	; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:GetWindowRect
		lea	ecx, [ebp+var_20]
		push	ecx		; lpRect
		push	[ebp+hDlg]	; hWnd
		call	ds:GetWindowRect
		lea	ecx, [ebp+var_30]
		push	ecx		; lpRect
		push	[ebp+hDlg]	; hWnd
		call	ds:GetClientRect
		mov	eax, [ebp+var_20.right]
		mov	ecx, [ebp+var_20.bottom]
		sub	eax, [ebp+var_30.right]
		sub	eax, [ebp+var_20.left]
		cdq
		sub	eax, edx
		sar	eax, 1
		sub	ecx, eax
		mov	esi, eax
		sub	ecx, [ebp+var_30.bottom]
		sub	ecx, [ebp+var_20.top]
		mov	eax, [ebp+Rect.right]
		sub	eax, [ebp+Rect.left]
		sub	edx, edx
		imul	eax, [ebp+uValue]
		div	ebx
		sub	eax, esi
		sub	eax, [ebp+var_20.left]
		add	eax, [ebp+Rect.left]
		mov	[ebp+Rect.right], eax
		mov	eax, 3
		sub	eax, esi
		sub	eax, [ebp+var_20.left]
		add	[ebp+Rect.left], eax
		mov	edx, [ebp+Rect.left]
		cmp	[ebp+Rect.right], edx
		jge	short loc_7F80A61D
		mov	[ebp+Rect.right], edx

loc_7F80A61D:				; CODE XREF: sub_7F80A47A+19Ej
		mov	eax, [ebp+var_20.top]
		add	eax, ecx
		push	0		; bErase
		inc	eax
		sub	[ebp+Rect.bottom], eax
		mov	eax, 7
		sub	eax, ecx
		lea	ecx, [ebp+Rect]
		sub	eax, [ebp+var_20.top]
		push	ecx		; lpRect
		lea	esi, [ebp+Rect]
		add	[ebp+Rect.top],	eax
		push	[ebp+hDlg]	; hWnd
		call	ds:InvalidateRect
		cmp	[ebp+arg_C], 32Eh
		jnz	short loc_7F80A659
		mov	edi, offset rc
		movsd
		movsd
		movsd
		movsd
		jmp	short loc_7F80A662
; ---------------------------------------------------------------------------

loc_7F80A659:				; CODE XREF: sub_7F80A47A+1D2j
		mov	edi, offset stru_7F833BE8
		movsd
		movsd
		movsd
		movsd

loc_7F80A662:				; CODE XREF: sub_7F80A47A+1DDj
		push	[ebp+hDlg]	; hWnd
		call	ds:UpdateWindow
		push	[ebp+hDlg]	; hWnd
		call	ds:GetParent
		push	eax		; hWnd
		call	ds:UpdateWindow
		mov	eax, 1

loc_7F80A680:				; CODE XREF: sub_7F80A47A+17j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F80A47A	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F80A689(int, HDC hDC)
sub_7F80A689	proc near		; CODE XREF: sub_7F8097B9+2Dp

hDC		= dword	ptr  8

		cmp	dword_7F835290,	0
		push	esi
		jz	short loc_7F80A6D9
		mov	eax, dword_7F835290
		test	byte ptr [eax],	2
		jz	short loc_7F80A6D9
		push	2		; nIndex
		call	ds:GetSysColor
		push	eax		; color
		call	ds:CreateSolidBrush
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F80A6D9
		push	esi		; hbr
		push	offset rc	; lprc
		push	[esp+0Ch+hDC]	; hDC
		call	ds:FillRect
		push	esi		; hbr
		push	offset stru_7F833BE8 ; lprc
		push	[esp+0Ch+hDC]	; hDC
		call	ds:FillRect
		push	esi		; ho
		call	ds:DeleteObject

loc_7F80A6D9:				; CODE XREF: sub_7F80A689+8j
					; sub_7F80A689+12j ...
		pop	esi
		retn	8
sub_7F80A689	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80A6DD	proc near		; CODE XREF: sub_7F806FF2+43p
					; sub_7F80A757+15p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	eax, [esp+arg_4]
		mov	ebp, esp
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		add	esi, 2
		test	eax, eax
		jz	short loc_7F80A6F9
		push	eax
		push	esi
		call	sub_7F80C373
		jmp	short loc_7F80A6FF
; ---------------------------------------------------------------------------

loc_7F80A6F9:				; CODE XREF: sub_7F80A6DD+11j
		push	esi
		call	sub_7F80C351

loc_7F80A6FF:				; CODE XREF: sub_7F80A6DD+1Aj
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		mov	eax, 0
		mov	edi, [ecx]
		test	edi, edi
		jz	short loc_7F80A724
		xor	eax, eax
		mov	ecx, esi
		shr	ecx, 2
		rep stosd
		mov	ecx, esi
		and	ecx, 3
		rep stosb
		mov	eax, 1

loc_7F80A724:				; CODE XREF: sub_7F80A6DD+30j
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
sub_7F80A6DD	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80A72A	proc near		; CODE XREF: sub_7F806FF2+74p
					; sub_7F80725C+2Fp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi]
		test	eax, eax
		jnz	short loc_7F80A739
		xor	eax, eax
		jmp	short loc_7F80A753
; ---------------------------------------------------------------------------

loc_7F80A739:				; CODE XREF: sub_7F80A72A+9j
		push	eax
		call	sub_7F80C398
		test	eax, eax
		mov	eax, 0
		jnz	short loc_7F80A753
		mov	eax, 1
		mov	dword ptr [esi], 0

loc_7F80A753:				; CODE XREF: sub_7F80A72A+Dj
					; sub_7F80A72A+1Cj
		pop	esi
		retn	4
sub_7F80A72A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80A757	proc near		; CODE XREF: sub_7F806861+41Dp
					; sub_7F80725C+FEp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	[esp+arg_8]
		call	sub_7F80A72A
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F80A6DD
		pop	ebp
		retn	0Ch
sub_7F80A757	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80A775	proc near		; CODE XREF: sub_7F8082C7+5Fp
					; sub_7F80917D+1Bp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi]
		test	eax, eax
		jnz	short loc_7F80A784
		xor	eax, eax
		jmp	short loc_7F80A795
; ---------------------------------------------------------------------------

loc_7F80A784:				; CODE XREF: sub_7F80A775+9j
		push	eax
		call	MAPIFreeBuffer@4
		mov	eax, 1
		mov	dword ptr [esi], 0

loc_7F80A795:				; CODE XREF: sub_7F80A775+Dj
		pop	esi
		retn	4
sub_7F80A775	endp

; Exported entry   5. ScGetPABMigrationContext@52

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	ScGetPABMigrationContext(LPCSTR	lpFileName, int, int, int, int,	int, int, int, int, int, int, int, int)
		public ScGetPABMigrationContext@52
ScGetPABMigrationContext@52 proc near	; CODE XREF: ScMigrateMMFPAB@32+7Bp
					; sub_7F80725C+A6p
					; DATA XREF: ...

Buffer		= dword	ptr -8
var_4		= dword	ptr -4
lpFileName	= dword	ptr  8
arg_4		= dword	ptr  0Ch
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
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch
arg_28		= dword	ptr  30h
arg_2C		= dword	ptr  34h
arg_30		= dword	ptr  38h

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		lea	eax, [ebp+var_4]
		push	esi
		xor	ebx, ebx
		push	edi
		mov	[ebp+var_4], ebx
		push	eax
		push	64h
		call	[ebp+arg_14]
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F80A882
		mov	edi, [ebp+var_4]
		xor	eax, eax
		mov	ecx, 19h
		rep stosd
		mov	eax, [ebp+var_4]
		mov	esi, [ebp+lpFileName]
		mov	dword ptr [eax+4Ch], 0FFFFFFFFh
		mov	eax, [ebp+var_4]
		mov	[eax+5Ch], ebx
		mov	eax, [ebp+var_4]
		mov	[eax+60h], esi
		mov	eax, [ebp+var_4]
		push	offset ModuleName ; "mmfmig32.dll"
		mov	dword ptr [eax], offset	sub_7F80A95F
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax+4], offset sub_7F80A9A4
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax+8], offset sub_7F80A9B6
		call	ds:GetModuleHandleA
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+arg_14]
		mov	[ecx+0Ch], eax
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_C]
		mov	[ecx+10h], eax
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_18]
		mov	[ecx+18h], edx
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+arg_1C]
		mov	[ecx+1Ch], eax
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_20]
		mov	[ecx+20h], edx
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+arg_24]
		mov	[ecx+24h], eax
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_28]
		mov	[ecx+28h], edx
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+arg_2C]
		mov	[ecx+2Ch], eax
		mov	ecx, [ebp+var_4]
		lea	eax, [ebp+Buffer]
		mov	[ecx+30h], edx
		push	eax		; lpBuffer
		push	esi		; lpFileName
		call	sub_7F80AA5A
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F80A882
		mov	eax, [ebp+Buffer]
		cmp	eax, 1AFDEADh
		jz	short loc_7F80A895
		cmp	eax, 214244E4h
		jz	short loc_7F80A8B0
		cmp	eax, 4E444221h
		jz	short loc_7F80A8B0
		mov	edi, 80040119h

loc_7F80A882:				; CODE XREF: ScGetPABMigrationContext@52+1Bj
					; ScGetPABMigrationContext@52+CAj ...
		push	[ebp+var_4]
		call	sub_7F80A95F

loc_7F80A88A:				; CODE XREF: ScGetPABMigrationContext@52+1C1j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	34h
; ---------------------------------------------------------------------------

loc_7F80A895:				; CODE XREF: ScGetPABMigrationContext@52+D4j
		mov	eax, [ebp+var_4]
		add	eax, 50h
		push	eax
		push	[ebp+arg_4]
		push	esi
		push	[ebp+var_4]
		call	sub_7F80B4E1
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F80A8CD
		jmp	short loc_7F80A882
; ---------------------------------------------------------------------------

loc_7F80A8B0:				; CODE XREF: ScGetPABMigrationContext@52+DBj
					; ScGetPABMigrationContext@52+E2j
		mov	eax, [ebp+var_4]
		add	eax, 50h
		push	eax
		mov	eax, [ebp+var_4]
		add	eax, 4Ch
		push	eax
		push	esi
		push	[ebp+var_4]
		call	sub_7F80C275
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F80A882

loc_7F80A8CD:				; CODE XREF: ScGetPABMigrationContext@52+113j
		mov	eax, [ebp+var_4]
		add	eax, 14h
		push	eax
		push	0
		push	0
		mov	eax, [ebp+arg_10]
		mov	ebx, [eax]
		push	[ebp+arg_C]
		push	eax
		call	dword ptr [ebx+18h]
		mov	edi, eax
		test	edi, edi
		jl	short loc_7F80A882
		mov	eax, [ebp+var_4]
		add	eax, 38h
		push	eax
		mov	ecx, [eax-24h]
		mov	eax, [ebp+var_4]
		mov	ebx, [ecx]
		add	eax, 34h
		push	eax
		push	ecx
		call	dword ptr [ebx+64h]
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F80A882
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+34h]
		test	ecx, ecx
		jnz	short loc_7F80A91F
		mov	edi, 8004010Fh
		jmp	loc_7F80A882
; ---------------------------------------------------------------------------

loc_7F80A91F:				; CODE XREF: ScGetPABMigrationContext@52+17Aj
		mov	eax, [ebp+var_4]
		add	eax, 48h
		push	eax
		mov	eax, [ebp+var_4]
		add	eax, 44h
		push	eax
		mov	eax, [ebp+var_4]
		add	eax, 40h
		push	eax
		mov	eax, [ebp+var_4]
		add	eax, 3Ch
		push	eax
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+38h]
		push	ecx
		push	eax
		call	sub_7F80B0EB
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F80A882
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_30]
		mov	[eax], ecx
		jmp	loc_7F80A88A
ScGetPABMigrationContext@52 endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80A95F	proc near		; CODE XREF: ScGetPABMigrationContext@52+ECp
					; DATA XREF: ScGetPABMigrationContext@52+4Eo

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, [esp+8+arg_0]
		test	esi, esi
		jz	short loc_7F80A99F
		lea	edi, [esi+20h]
		push	dword ptr [esi+40h]
		call	dword ptr [edi]
		push	dword ptr [esi+48h]
		call	dword ptr [edi]
		push	dword ptr [esi+38h]
		call	dword ptr [edi]
		push	dword ptr [esi+14h]
		call	UlRelease@4
		mov	eax, [esi+50h]
		test	eax, eax
		jz	short loc_7F80A98D
		push	eax
		call	dword ptr [eax]

loc_7F80A98D:				; CODE XREF: sub_7F80A95F+29j
		mov	eax, [esi+4Ch]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_7F80A99C
		push	eax		; hLibModule
		call	ds:FreeLibrary

loc_7F80A99C:				; CODE XREF: sub_7F80A95F+34j
		push	esi
		call	dword ptr [edi]

loc_7F80A99F:				; CODE XREF: sub_7F80A95F+8j
		pop	edi
		pop	esi
		retn	4
sub_7F80A95F	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80A9A4	proc near		; DATA XREF: ScGetPABMigrationContext@52+57o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	[esp+arg_4]
		mov	eax, [eax+50h]
		push	eax
		call	dword ptr [eax+4]
		retn	8
sub_7F80A9A4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80A9B6	proc near		; DATA XREF: ScGetPABMigrationContext@52+61o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= word ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		cmp	dword ptr [esi+5Ch], 0
		jnz	short loc_7F80A9E2
		mov	eax, dword ptr [ebp+arg_C]
		and	eax, 20000000h
		shr	eax, 1Dh
		push	eax		; int
		push	dword ptr [esi+0Ch] ; hInstance
		push	dword ptr [esi+60h] ; int
		call	sub_7F80530D
		mov	[esi+5Ch], eax

loc_7F80A9E2:				; CODE XREF: sub_7F80A9B6+10j
		lea	edi, [esi+58h]

loc_7F80A9E5:				; CODE XREF: sub_7F80A9B6+55j
		mov	ecx, [esi+50h]
		push	edi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	ecx
		call	dword ptr [ecx+8]
		mov	[ebp+var_4], eax
		test	eax, eax
		jz	short loc_7F80AA12
		push	dword ptr [ebp+arg_C] ;	__int16
		push	eax		; dwInitParam
		push	esi		; int
		call	sub_7F80B3E3
		test	eax, eax
		jz	short loc_7F80AA4E
		cmp	eax, 1
		jz	short loc_7F80A9E5
		cmp	eax, 2
		jz	short loc_7F80AA4E

loc_7F80AA12:				; CODE XREF: sub_7F80A9B6+42j
		mov	dword ptr [esi+54h], 0
		xor	ebx, ebx
		cmp	[ebp+arg_4], ebx
		jz	short loc_7F80AA4E
		mov	edi, [ebp+arg_8]

loc_7F80AA23:				; CODE XREF: sub_7F80A9B6+91j
		push	dword ptr [ebp+arg_C]
		push	dword ptr [edi]
		push	esi
		call	sub_7F80AAD1
		test	eax, eax
		jz	short loc_7F80AA40
		cmp	eax, 80040113h
		jz	short loc_7F80AA4B
		mov	[ebp+var_4], 40680h

loc_7F80AA40:				; CODE XREF: sub_7F80A9B6+7Aj
		add	edi, 4
		inc	ebx
		cmp	ebx, [ebp+arg_4]
		jb	short loc_7F80AA23
		jmp	short loc_7F80AA4E
; ---------------------------------------------------------------------------

loc_7F80AA4B:				; CODE XREF: sub_7F80A9B6+81j
		mov	[ebp+var_4], eax

loc_7F80AA4E:				; CODE XREF: sub_7F80A9B6+50j
					; sub_7F80A9B6+5Aj ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F80A9B6	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F80AA5A(LPCSTR lpFileName,	LPVOID lpBuffer)
sub_7F80AA5A	proc near		; CODE XREF: ScGetPABMigrationContext@52+C1p

NumberOfBytesRead= dword ptr -4
lpFileName	= dword	ptr  4
lpBuffer	= dword	ptr  8

		sub	esp, 4
		push	esi
		push	edi
		xor	esi, esi
		push	esi		; hTemplateFile
		push	8000080h	; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	esi		; lpSecurityAttributes
		push	esi		; dwShareMode
		push	80000000h	; dwDesiredAccess
		push	[esp+24h+lpFileName] ; lpFileName
		call	ds:CreateFileA
		cmp	eax, 0FFFFFFFFh
		mov	edi, eax
		jnz	short loc_7F80AA9D
		call	ds:GetLastError
		sub	eax, 20h
		cmp	eax, 1
		sbb	esi, esi
		and	esi, 2FEEFh
		sub	esi, 7FFBFEEAh
		jmp	short loc_7F80AAC0
; ---------------------------------------------------------------------------

loc_7F80AA9D:				; CODE XREF: sub_7F80AA5A+25j
		lea	eax, [esp+0Ch+NumberOfBytesRead]
		push	0		; lpOverlapped
		push	eax		; lpNumberOfBytesRead
		push	4		; nNumberOfBytesToRead
		push	[esp+18h+lpBuffer] ; lpBuffer
		push	edi		; hFile
		call	ds:ReadFile
		test	eax, eax
		jnz	short loc_7F80AAC0
		mov	esi, 80004005h
		call	ds:GetLastError

loc_7F80AAC0:				; CODE XREF: sub_7F80AA5A+41j
					; sub_7F80AA5A+59j
		push	edi		; hObject
		call	ds:CloseHandle
		mov	eax, esi
		pop	edi
		pop	esi
		add	esp, 4
		retn	8
sub_7F80AA5A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80AAD1	proc near		; CODE XREF: sub_7F80A9B6+73p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= word ptr  10h

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		mov	[ebp+var_4], eax
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]

loc_7F80AAE2:				; CODE XREF: sub_7F80AAD1+3Dj
		lea	eax, [ebp+var_4]
		push	eax
		push	dword ptr [esi+38h]
		push	dword ptr [esi+34h]
		push	[ebp+arg_4]
		push	0
		push	esi
		call	sub_7F80B28E
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F80AB15
		push	dword ptr [ebp+arg_8] ;	__int16
		push	edi		; dwInitParam
		push	esi		; int
		call	sub_7F80B3E3
		test	eax, eax
		jz	short loc_7F80AB4C
		cmp	eax, 1
		jz	short loc_7F80AAE2
		cmp	eax, 2
		jz	short loc_7F80AB4C

loc_7F80AB15:				; CODE XREF: sub_7F80AAD1+2Aj
		mov	eax, [ebp+var_4]
		mov	ebx, eax
		mov	[ebp+var_8], eax
		test	eax, eax
		jz	short loc_7F80AB4C

loc_7F80AB21:				; CODE XREF: sub_7F80AAD1+75j
		push	dword ptr [ebp+arg_8]
		lea	ecx, [ebp+var_8]
		push	ecx
		push	ebx
		push	[ebp+var_4]
		push	esi
		call	sub_7F80AB5D
		test	eax, eax
		jz	short loc_7F80AB42
		cmp	eax, 80040113h
		jz	short loc_7F80AB4A
		mov	edi, 40680h

loc_7F80AB42:				; CODE XREF: sub_7F80AAD1+63j
		mov	ebx, [ebx]
		test	ebx, ebx
		jnz	short loc_7F80AB21
		jmp	short loc_7F80AB4C
; ---------------------------------------------------------------------------

loc_7F80AB4A:				; CODE XREF: sub_7F80AAD1+6Aj
		mov	edi, eax

loc_7F80AB4C:				; CODE XREF: sub_7F80AAD1+38j
					; sub_7F80AAD1+42j ...
		push	[ebp+var_4]
		call	dword ptr [esi+20h]
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F80AAD1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80AB5D	proc near		; CODE XREF: sub_7F80AAD1+5Cp

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= word ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	ebx
		mov	eax, [ebp+arg_8]
		push	esi
		add	eax, 14h
		push	edi
		xor	esi, esi
		mov	[ebp+var_18], esi
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_8]
		add	eax, 10h
		mov	[ebp+var_8], eax

loc_7F80AB7D:				; CODE XREF: sub_7F80AB5D+57j
		mov	ecx, [ebp+arg_0]
		mov	ebx, [ebp+arg_8]
		push	[ebp+var_10]
		push	[ebp+var_8]
		push	dword ptr [ebx+4]
		push	[ebp+arg_4]
		mov	ecx, [ecx+50h]
		push	ecx
		call	dword ptr [ecx+0Ch]
		mov	[ebp+var_4], eax
		test	eax, eax
		jz	short loc_7F80ABBF
		push	dword ptr [ebp+arg_10] ; __int16
		push	eax		; dwInitParam
		push	[ebp+arg_0]	; int
		call	sub_7F80B3E3
		test	eax, eax
		jz	loc_7F80AE0E
		cmp	eax, 1
		jz	short loc_7F80AB7D
		cmp	eax, 2
		jz	loc_7F80AE0E

loc_7F80ABBF:				; CODE XREF: sub_7F80AB5D+3Ej
		mov	eax, [ebp+arg_8]
		mov	edx, [ebp+var_8]
		add	eax, 18h
		mov	ecx, [ebp+arg_0]
		push	eax
		mov	[ebp+var_14], eax
		push	[ebp+arg_4]
		mov	eax, [edx]
		shl	eax, 3
		push	eax
		call	dword ptr [ecx+1Ch]
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	loc_7F80AE0E
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+var_14]
		mov	ecx, [eax]
		mov	edi, [edx]
		shl	ecx, 3
		xor	eax, eax
		shr	ecx, 2
		rep stosd
		mov	ecx, [ebp+arg_0]
		lea	eax, [ebp+var_18]
		push	eax
		lea	edx, [ebp+var_4]
		mov	ecx, [ecx+14h]
		push	edx
		push	1
		mov	ebx, [ebp+arg_8]
		push	offset dword_7F801348
		mov	eax, [ecx]
		push	dword ptr [ebx+0Ch]
		push	dword ptr [ebx+8]
		push	ecx
		call	dword ptr [eax+38h]
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	loc_7F80AE0E
		mov	eax, [ebp+arg_8]
		cmp	eax, [ebp+arg_4]
		jz	loc_7F80AD25
		mov	eax, [ebp+var_8]
		mov	esi, [eax]
		mov	ecx, esi
		dec	esi
		test	ecx, ecx
		jz	short loc_7F80ACA8
		lea	eax, ds:0[esi*8]
		lea	ebx, ds:0[esi*4]
		mov	[ebp+var_4], eax

loc_7F80AC52:				; CODE XREF: sub_7F80AB5D+149j
		mov	edi, [ebp+arg_4]
		cmp	[ebp+arg_8], edi
		jz	short loc_7F80AC9A

loc_7F80AC5A:				; CODE XREF: sub_7F80AB5D+11Dj
		lea	eax, [ebp+var_C]
		push	eax
		mov	eax, [ebp+var_10]
		push	dword ptr [edi+14h]
		mov	ecx, [eax]
		push	dword ptr [edi+10h]
		push	dword ptr [ecx+ebx]
		call	sub_7F80B2F6
		test	eax, eax
		jnz	short loc_7F80AC7E
		mov	edi, [edi]
		cmp	[ebp+arg_8], edi
		jnz	short loc_7F80AC5A
		jmp	short loc_7F80AC9A
; ---------------------------------------------------------------------------

loc_7F80AC7E:				; CODE XREF: sub_7F80AB5D+116j
		mov	eax, [edi+18h]
		mov	ecx, [ebp+var_C]
		mov	edx, [eax+ecx*8+4]
		lea	eax, [eax+ecx*8]
		mov	edi, [eax]
		mov	eax, [ebp+var_14]
		mov	eax, [eax]
		add	eax, [ebp+var_4]
		mov	[eax], edi
		mov	[eax+4], edx

loc_7F80AC9A:				; CODE XREF: sub_7F80AB5D+FBj
					; sub_7F80AB5D+11Fj
		mov	eax, esi
		sub	ebx, 4
		sub	[ebp+var_4], 8
		dec	esi
		test	eax, eax
		jnz	short loc_7F80AC52

loc_7F80ACA8:				; CODE XREF: sub_7F80AB5D+E2j
		push	[ebp+arg_8]
		push	[ebp+var_18]
		push	[ebp+arg_0]
		call	sub_7F80AE22
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	loc_7F80AE0E
		xor	ecx, ecx
		mov	eax, [ebp+var_8]
		cmp	[eax], ecx
		jbe	short loc_7F80AD25
		xor	esi, esi
		xor	edx, edx

loc_7F80ACCE:				; CODE XREF: sub_7F80AB5D+1C6j
		mov	eax, [ebp+var_14]
		mov	ebx, [eax]
		lea	edi, [edx+ebx]
		mov	[ebp+var_C], edi
		cmp	dword ptr [edi], 0
		jnz	short loc_7F80ACE7
		add	esi, 4
		add	edx, 8
		inc	ecx
		jmp	short loc_7F80AD1E
; ---------------------------------------------------------------------------

loc_7F80ACE7:				; CODE XREF: sub_7F80AB5D+17Fj
		mov	eax, [ebp+var_8]
		mov	edi, [eax]
		dec	edi
		mov	[eax], edi
		lea	eax, [ebx+edi*8]
		mov	ebx, [eax]
		mov	eax, [eax+4]
		mov	[ebp+var_20], ebx
		mov	[ebp+var_1C], eax
		mov	ebx, [ebp+var_C]
		mov	eax, ebx
		mov	[ebp+var_C], ebx
		mov	ebx, [ebp+var_20]
		mov	[eax], ebx
		mov	eax, [ebp+var_C]
		mov	ebx, [ebp+var_1C]
		mov	[eax+4], ebx
		mov	eax, [ebp+var_10]
		mov	ebx, [eax]
		mov	edi, [ebx+edi*4]
		mov	[esi+ebx], edi

loc_7F80AD1E:				; CODE XREF: sub_7F80AB5D+188j
		mov	eax, [ebp+var_8]
		cmp	[eax], ecx
		ja	short loc_7F80ACCE

loc_7F80AD25:				; CODE XREF: sub_7F80AB5D+D2j
					; sub_7F80AB5D+16Bj
		mov	eax, [ebp+var_10]
		xor	edi, edi
		mov	esi, [eax]
		mov	eax, [ebp+var_8]
		cmp	[eax], edi
		jbe	short loc_7F80AD71

loc_7F80AD33:				; CODE XREF: sub_7F80AB5D+212j
		mov	eax, [ebp+var_10]
		mov	ecx, [eax]
		lea	eax, [ebp+var_C]
		push	eax
		push	esi
		mov	ebx, [ecx+edi*4]
		push	edi
		push	ebx
		call	sub_7F80B2F6
		mov	eax, [ebp+var_C]
		mov	ecx, edi
		sub	ecx, [ebp+var_C]
		inc	edi
		shl	ecx, 2
		lea	eax, [esi+eax*4]
		push	ecx
		push	eax
		add	eax, 4
		push	eax
		call	sub_7F82FCE0
		add	esp, 0Ch
		mov	ecx, [ebp+var_C]
		mov	eax, [ebp+var_8]
		mov	[esi+ecx*4], ebx
		cmp	[eax], edi
		ja	short loc_7F80AD33

loc_7F80AD71:				; CODE XREF: sub_7F80AB5D+1D4j
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_8]
		mov	esi, [eax]
		mov	edi, [ecx]
		lea	eax, ds:0[edi*4]
		lea	ebx, ds:0[edi*8]
		mov	[ebp+var_8], eax

loc_7F80AD8C:				; CODE XREF: sub_7F80AB5D+285j
					; sub_7F80AB5D+2A8j
		mov	eax, edi
		sub	ebx, 8
		sub	[ebp+var_8], 4
		dec	edi
		test	eax, eax
		jz	short loc_7F80AE09

loc_7F80AD9A:				; CODE XREF: sub_7F80AB5D+280j
		mov	eax, [ebp+var_14]
		push	esi
		mov	edx, [ebp+var_10]
		mov	eax, [eax]
		add	eax, ebx
		lea	ecx, [eax+4]
		push	ecx
		push	eax
		mov	ecx, [edx]
		mov	eax, [ebp+var_8]
		push	dword ptr [ecx+eax]
		mov	ecx, [ebp+arg_8]
		push	dword ptr [ecx+4]
		push	[ebp+var_18]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F80AEC7
		test	eax, eax
		jz	short loc_7F80ADE4
		push	dword ptr [ebp+arg_10] ; __int16
		push	eax		; dwInitParam
		push	[ebp+arg_0]	; int
		call	sub_7F80B3E3
		test	eax, eax
		jz	short loc_7F80AE0E
		cmp	eax, 1
		jz	short loc_7F80AD9A
		cmp	eax, 2
		jz	short loc_7F80AD8C

loc_7F80ADE4:				; CODE XREF: sub_7F80AB5D+26Bj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_7F80ADEC
		mov	esi, eax

loc_7F80ADEC:				; CODE XREF: sub_7F80AB5D+28Bj
		mov	ecx, [ebp+arg_0]
		push	dword ptr [ecx+58h]
		mov	eax, [ecx+54h]
		inc	eax
		push	eax
		mov	[ecx+54h], eax
		push	dword ptr [ecx+30h]
		call	dword ptr [ecx+2Ch]
		mov	[ebp+var_4], eax
		test	eax, eax
		jz	short loc_7F80AD8C
		jmp	short loc_7F80AE0E
; ---------------------------------------------------------------------------

loc_7F80AE09:				; CODE XREF: sub_7F80AB5D+23Bj
		mov	eax, [ebp+arg_C]
		mov	[eax], esi

loc_7F80AE0E:				; CODE XREF: sub_7F80AB5D+4Ej
					; sub_7F80AB5D+5Cj ...
		push	[ebp+var_18]
		call	UlRelease@4
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F80AB5D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80AE22	proc near		; CODE XREF: sub_7F80AB5D+154p

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, 0Ch
		push	ebx
		lea	eax, [ebp+var_4]
		push	esi
		mov	ecx, [ebp+arg_8]
		push	edi
		mov	ebx, [ebp+arg_0]
		mov	[ebp+var_4], 0
		push	eax
		mov	eax, [ecx+10h]
		shl	eax, 3
		push	eax
		call	dword ptr [ebx+18h]
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F80AEB3
		xor	edx, edx
		mov	eax, [ebp+arg_8]
		mov	ecx, [eax+10h]
		mov	ebx, ecx
		dec	ecx
		test	ebx, ebx
		jz	short loc_7F80AE91
		lea	esi, ds:0[ecx*8]
		mov	[ebp+var_8], edx

loc_7F80AE65:				; CODE XREF: sub_7F80AE22+6Dj
		mov	eax, [ebp+arg_8]
		mov	eax, [eax+18h]
		add	eax, esi
		cmp	dword ptr [eax], 0
		jz	short loc_7F80AE87
		mov	edi, [eax]
		mov	ebx, [ebp+var_4]
		mov	eax, [eax+4]
		add	ebx, [ebp+var_8]
		add	[ebp+var_8], 8
		inc	edx
		mov	[ebx], edi
		mov	[ebx+4], eax

loc_7F80AE87:				; CODE XREF: sub_7F80AE22+4Ej
		mov	eax, ecx
		sub	esi, 8
		dec	ecx
		test	eax, eax
		jnz	short loc_7F80AE65

loc_7F80AE91:				; CODE XREF: sub_7F80AE22+37j
		mov	eax, [ebp+var_4]
		push	0
		push	0
		mov	ecx, [ebp+arg_0]
		mov	[ebp+var_C], edx
		push	dword ptr [ecx+10h]
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_C]
		push	eax
		mov	eax, [ebp+arg_4]
		push	eax
		mov	ebx, [eax]
		call	dword ptr [ebx+50h]
		mov	esi, eax

loc_7F80AEB3:				; CODE XREF: sub_7F80AE22+28j
		mov	ebx, [ebp+arg_0]
		push	[ebp+var_4]
		call	dword ptr [ebx+20h]
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F80AE22	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80AEC7	proc near		; CODE XREF: sub_7F80AB5D+264p

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		mov	ebx, [ebp+arg_0]
		mov	[ebp+var_C], edi
		mov	[ebp+var_10], edi
		mov	[ebp+var_18], edi
		mov	ecx, [ebx+50h]
		lea	eax, [ebp+var_14]
		push	eax
		lea	edx, [ebp+var_C]
		push	edx
		lea	esi, [ebp+var_28]
		push	esi
		lea	eax, [ebp+var_18]
		push	eax
		lea	edx, [ebp+var_10]
		push	edx
		mov	esi, [ebp+arg_8]
		mov	[ebp+var_8], edi
		mov	[ebp+var_14], edi
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	esi
		push	ecx
		call	dword ptr [ecx+10h]
		mov	[ebp+var_4], eax
		cmp	eax, edi
		jnz	loc_7F80B057
		cmp	[ebp+var_14], edi
		jnz	short loc_7F80AF3B
		mov	ecx, [ebx+24h]
		test	ecx, ecx
		jz	short loc_7F80AF3B
		lea	eax, [ebp+var_C]
		lea	edx, [ebp+var_28]
		push	eax
		push	edx
		push	[ebp+var_10]
		push	dword ptr [ebx+28h]
		call	ecx
		mov	[ebp+var_4], eax
		cmp	eax, edi
		jnz	loc_7F80B057

loc_7F80AF3B:				; CODE XREF: sub_7F80AEC7+50j
					; sub_7F80AEC7+57j
		cmp	[ebp+var_C], 0
		jz	short loc_7F80AF55
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+var_C]
		push	[ebp+var_28]
		push	[ebp+var_10]
		push	esi
		push	ebx
		call	sub_7F80B081

loc_7F80AF55:				; CODE XREF: sub_7F80AEC7+78j
		cmp	[ebp+var_8], 0
		jnz	short loc_7F80AF8A
		cmp	[ebp+var_14], 0
		jnz	short loc_7F80AF69
		mov	eax, [ebx+3Ch]
		mov	ecx, [ebx+40h]
		jmp	short loc_7F80AF6F
; ---------------------------------------------------------------------------

loc_7F80AF69:				; CODE XREF: sub_7F80AEC7+98j
		mov	eax, [ebx+44h]
		mov	ecx, [ebx+48h]

loc_7F80AF6F:				; CODE XREF: sub_7F80AEC7+A0j
		lea	edx, [ebp+var_8]
		push	edx
		push	ecx
		push	eax
		push	[ebp+var_10]
		push	esi
		push	ebx
		call	sub_7F80B081
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	loc_7F80B057

loc_7F80AF8A:				; CODE XREF: sub_7F80AEC7+92j
		xor	esi, esi
		push	esi
		push	esi
		push	[ebp+var_8]
		push	offset dword_7F801910
		push	esi
		mov	edx, [ebp+var_18]
		push	dword ptr [ebx+10h]
		push	esi
		push	esi
		mov	eax, [edx]
		push	esi
		push	[ebp+var_18]
		call	dword ptr [eax+28h]
		mov	[ebp+var_4], eax
		cmp	eax, esi
		jnz	loc_7F80B057
		push	esi
		mov	eax, [ebp+var_8]
		mov	edi, [eax]
		push	[ebp+var_8]
		call	dword ptr [edi+10h]
		mov	[ebp+var_4], eax
		cmp	eax, esi
		jnz	loc_7F80B057
		lea	eax, [ebp+var_20]
		push	eax
		push	0FFF0102h
		push	[ebp+var_8]
		call	HrGetOneProp@12
		mov	[ebp+var_4], eax
		cmp	eax, esi
		jnz	short loc_7F80B057
		mov	eax, [ebp+var_20]
		lea	edx, [ebp+var_24]
		push	edx
		mov	ecx, [eax+8]
		push	[ebp+arg_4]
		push	ecx
		mov	[ebp+var_1C], ecx
		call	dword ptr [ebx+1Ch]
		mov	[ebp+var_4], eax
		cmp	eax, esi
		jz	short loc_7F80B005
		push	[ebp+var_20]
		call	dword ptr [ebx+20h]
		jmp	short loc_7F80B057
; ---------------------------------------------------------------------------

loc_7F80B005:				; CODE XREF: sub_7F80AEC7+134j
		mov	edx, [ebp+var_1C]
		mov	eax, [ebp+var_20]
		mov	edi, [ebp+var_24]
		mov	ecx, edx
		shr	ecx, 2
		mov	esi, [eax+0Ch]
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		push	[ebp+var_20]
		call	dword ptr [ebx+20h]
		cmp	[ebp+var_14], 0
		jz	short loc_7F80B047
		push	[ebp+arg_1C]
		push	[ebp+var_24]
		push	[ebp+var_1C]
		push	[ebp+var_14]
		push	[ebp+arg_4]
		push	ebx
		call	sub_7F80B28E
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	short loc_7F80B057

loc_7F80B047:				; CODE XREF: sub_7F80AEC7+162j
		mov	eax, [ebp+arg_14]
		mov	ecx, [ebp+var_1C]
		mov	edx, [ebp+var_24]
		mov	[eax], ecx
		mov	eax, [ebp+arg_18]
		mov	[eax], edx

loc_7F80B057:				; CODE XREF: sub_7F80AEC7+47j
					; sub_7F80AEC7+6Ej ...
		push	[ebp+var_10]
		call	UlRelease@4
		push	[ebp+var_18]
		call	UlRelease@4
		push	[ebp+var_8]
		call	UlRelease@4
		push	[ebp+var_C]
		call	dword ptr [ebx+20h]
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	20h
sub_7F80AEC7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80B081	proc near		; CODE XREF: sub_7F80AEC7+89p
					; sub_7F80AEC7+B3p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	esi
		lea	eax, [ebp+var_4]
		push	edi
		xor	esi, esi
		push	eax
		mov	[ebp+var_4], esi
		push	esi
		mov	eax, [ebp+arg_4]
		push	[ebp+arg_10]
		mov	edi, [eax]
		push	[ebp+arg_C]
		push	eax
		call	dword ptr [edi+4Ch]
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F80B0D9
		mov	ecx, [ebp+arg_8]
		cmp	ecx, esi
		jz	short loc_7F80B0CF
		push	esi
		mov	edx, [ebp+arg_0]
		push	esi
		push	[ebp+var_4]
		push	offset dword_7F801910
		push	esi
		mov	eax, [ecx]
		push	dword ptr [edx+10h]
		push	esi
		push	esi
		push	esi
		push	ecx
		call	dword ptr [eax+28h]
		mov	edi, eax
		test	edi, edi
		jl	short loc_7F80B0D9

loc_7F80B0CF:				; CODE XREF: sub_7F80B081+2Cj
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_14]
		mov	[eax], ecx
		jmp	short loc_7F80B0E1
; ---------------------------------------------------------------------------

loc_7F80B0D9:				; CODE XREF: sub_7F80B081+25j
					; sub_7F80B081+4Cj
		push	[ebp+var_4]
		call	UlRelease@4

loc_7F80B0E1:				; CODE XREF: sub_7F80B081+56j
		mov	eax, edi
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F80B081	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80B0EB	proc near		; CODE XREF: ScGetPABMigrationContext@52+1AAp

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_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	edi, [ebp+arg_0]
		lea	eax, [ebp+var_10]
		push	eax
		mov	[ebp+var_4], ebx
		mov	ecx, [edi+14h]
		lea	edx, [ebp+var_1C]
		push	edx
		mov	[ebp+var_C], ebx
		push	ebx
		mov	[ebp+var_8], ebx
		push	offset dword_7F801348
		mov	esi, [ecx]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	ecx
		call	dword ptr [esi+38h]
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F80B1AC
		lea	eax, [ebp+var_4]
		mov	ecx, [ebp+var_10]
		push	eax
		push	ebx
		push	ebx
		mov	eax, [ecx]
		push	offset dword_7F8018F0
		push	3604000Dh
		push	[ebp+var_10]
		call	dword ptr [eax+1Ch]
		push	[ebp+var_10]
		mov	esi, eax
		call	UlRelease@4
		test	esi, esi
		jnz	short loc_7F80B1AC
		lea	eax, [ebp+var_C]
		lea	ecx, [ebp+var_18]
		push	eax
		push	ecx
		push	offset Default
		push	[ebp+var_4]
		push	edi
		call	sub_7F80B1CB
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F80B1AC
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_14]
		push	eax
		push	ecx
		push	offset aMapipdl	; "MAPIPDL"
		push	[ebp+var_4]
		push	edi
		call	sub_7F80B1CB
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F80B1AC
		mov	ecx, [ebp+var_18]
		mov	eax, [ebp+arg_C]
		mov	edx, [ebp+var_C]
		mov	ebx, [ebp+var_14]
		mov	[eax], ecx
		mov	ecx, [ebp+arg_10]
		mov	eax, [ebp+arg_14]
		mov	[ecx], edx
		mov	ecx, [ebp+var_8]
		mov	edx, [ebp+arg_18]
		mov	[eax], ebx
		mov	[edx], ecx
		jmp	short loc_7F80B1B8
; ---------------------------------------------------------------------------

loc_7F80B1AC:				; CODE XREF: sub_7F80B0EB+38j
					; sub_7F80B0EB+65j ...
		push	[ebp+var_C]
		call	dword ptr [edi+20h]
		push	[ebp+var_8]
		call	dword ptr [edi+20h]

loc_7F80B1B8:				; CODE XREF: sub_7F80B0EB+BFj
		push	[ebp+var_4]
		call	UlRelease@4
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	1Ch
sub_7F80B0EB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80B1CB	proc near		; CODE XREF: sub_7F80B0EB+78p
					; sub_7F80B0EB+94p

var_24		= dword	ptr -24h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		mov	eax, 4
		push	ebx
		push	esi
		mov	ecx, 3002001Eh
		push	edi
		xor	esi, esi
		lea	edx, [ebp+var_24]
		mov	[ebp+var_4], esi
		mov	[ebp+var_14], eax
		mov	[ebp+var_24], ecx
		push	esi
		mov	[ebp+var_C], ecx
		push	esi
		lea	ecx, [ebp+var_14]
		push	ecx
		mov	edi, [ebp+arg_4]
		push	edi
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_8], edx
		mov	[ebp+var_1C], eax
		mov	eax, [edi]
		call	dword ptr [eax+34h]
		mov	[ebp+var_8], eax
		cmp	eax, esi
		jnz	short loc_7F80B27A
		push	esi
		mov	eax, [edi]
		push	offset unk_7F835438
		push	edi
		call	dword ptr [eax+1Ch]
		mov	[ebp+var_8], eax
		cmp	eax, esi
		jnz	short loc_7F80B27A
		lea	eax, [ebp+var_4]
		mov	ebx, [edi]
		push	eax
		push	esi
		push	1
		push	edi
		call	dword ptr [ebx+4Ch]
		mov	[ebp+var_8], eax
		cmp	eax, esi
		jnz	short loc_7F80B27A
		mov	eax, [ebp+var_4]
		mov	edi, [ebp+arg_0]
		mov	ecx, [eax+0Ch]
		lea	eax, [ebp+var_18]
		push	eax
		mov	ebx, [ecx+8]
		push	ebx
		call	dword ptr [edi+18h]
		mov	[ebp+var_8], eax
		cmp	eax, esi
		jnz	short loc_7F80B27A
		mov	eax, [ebp+var_4]
		mov	edi, [ebp+var_18]
		mov	ecx, [eax+0Ch]
		mov	esi, [ecx+0Ch]
		mov	ecx, ebx
		shr	ecx, 2
		rep movsd
		mov	ecx, ebx
		and	ecx, 3
		rep movsb
		mov	edx, [ebp+arg_C]
		mov	eax, [ebp+arg_10]
		mov	[edx], ebx
		mov	ebx, [ebp+var_18]
		mov	[eax], ebx

loc_7F80B27A:				; CODE XREF: sub_7F80B1CB+44j
					; sub_7F80B1CB+57j ...
		push	[ebp+var_4]
		call	FreeProws@4
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F80B1CB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80B28E	proc near		; CODE XREF: sub_7F80AAD1+21p
					; sub_7F80AEC7+174p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	eax, [esp+arg_4]
		mov	ebp, esp
		sub	esp, 4
		test	eax, eax
		push	edi
		jnz	short loc_7F80B2AB
		lea	eax, [ebp+var_4]
		push	eax
		push	1Ch
		mov	eax, [ebp+arg_0]
		call	dword ptr [eax+18h]
		jmp	short loc_7F80B2B8
; ---------------------------------------------------------------------------

loc_7F80B2AB:				; CODE XREF: sub_7F80B28E+Dj
		lea	ecx, [ebp+var_4]
		push	ecx
		push	eax
		push	1Ch
		mov	eax, [ebp+arg_0]
		call	dword ptr [eax+1Ch]

loc_7F80B2B8:				; CODE XREF: sub_7F80B28E+1Bj
		mov	edx, eax
		test	edx, edx
		jnz	short loc_7F80B2ED
		mov	edi, [ebp+var_4]
		xor	eax, eax
		mov	ecx, 7
		rep stosd
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_8]
		mov	[ecx+4], eax
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_C]
		mov	[ecx+8], eax
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_10]
		mov	[ecx+0Ch], eax
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_14]
		mov	[eax], ecx

loc_7F80B2ED:				; CODE XREF: sub_7F80B28E+2Ej
		mov	eax, edx
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F80B28E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80B2F6	proc near		; CODE XREF: sub_7F80AB5D+10Fp
					; sub_7F80AB5D+1E5p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	edx, [esp+arg_4]
		mov	ebp, esp
		mov	eax, edx
		push	ebx
		push	esi
		push	edi
		mov	ecx, [ebp+arg_0]
		xor	edi, edi
		mov	esi, [ebp+arg_8]
		test	edx, edx
		jz	short loc_7F80B323

loc_7F80B30E:				; CODE XREF: sub_7F80B2F6+2Bj
		lea	ebx, [eax+edi]
		shr	ebx, 1
		cmp	[esi+ebx*4], ecx
		jnb	short loc_7F80B31D
		lea	edi, [ebx+1]
		jmp	short loc_7F80B31F
; ---------------------------------------------------------------------------

loc_7F80B31D:				; CODE XREF: sub_7F80B2F6+20j
		mov	eax, ebx

loc_7F80B31F:				; CODE XREF: sub_7F80B2F6+25j
		cmp	edi, eax
		jb	short loc_7F80B30E

loc_7F80B323:				; CODE XREF: sub_7F80B2F6+16j
		mov	eax, [ebp+arg_C]
		test	eax, eax
		jz	short loc_7F80B32C
		mov	[eax], edi

loc_7F80B32C:				; CODE XREF: sub_7F80B2F6+32j
		cmp	edx, edi
		jbe	short loc_7F80B33A
		mov	eax, 1
		cmp	[esi+edi*4], ecx
		jz	short loc_7F80B33C

loc_7F80B33A:				; CODE XREF: sub_7F80B2F6+38j
		xor	eax, eax

loc_7F80B33C:				; CODE XREF: sub_7F80B2F6+42j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_7F80B2F6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80B343(int, LPCSTR lpString, __int16)
sub_7F80B343	proc near		; CODE XREF: sub_7F80B3E3+B1p

Text		= byte ptr -500h
Buffer		= byte ptr -100h
arg_0		= dword	ptr  8
lpString	= dword	ptr  0Ch
arg_B		= byte ptr  13h

		push	ebp
		inc	dword_7F833FB0
		mov	ebp, esp
		sub	esp, 500h
		push	esi
		mov	esi, [ebp+arg_0]
		cmp	dword ptr [esi+5Ch], 0
		jz	short loc_7F80B37A
		test	[ebp+arg_B], 80h
		jz	short loc_7F80B37A
		mov	eax, [ebp+10h]
		and	eax, 20000000h
		shr	eax, 1Dh
		push	eax		; int
		push	[ebp+lpString]	; lpString
		call	sub_7F80549A
		test	eax, eax
		jnz	short loc_7F80B3D7

loc_7F80B37A:				; CODE XREF: sub_7F80B343+17j
					; sub_7F80B343+1Dj
		push	100h		; cchBufferMax
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		push	1005h		; uID
		push	dword ptr [esi+0Ch] ; hInstance
		call	ds:LoadStringA
		lea	ecx, [ebp+Buffer]
		lea	eax, [ebp+Text]
		push	ecx
		push	[ebp+lpString]
		push	offset aSS_0	; "%s%s\r\n"
		push	eax		; LPSTR
		call	ds:wsprintfA
		add	esp, 10h
		lea	ecx, [ebp+Text]
		push	2001h		; uType
		push	offset Caption	; lpCaption
		push	ecx		; lpText
		push	dword ptr [esi+10h] ; hWnd
		call	ds:MessageBoxA
		cmp	eax, 2
		mov	eax, 0
		jz	short loc_7F80B3DC

loc_7F80B3D7:				; CODE XREF: sub_7F80B343+35j
		mov	eax, 1

loc_7F80B3DC:				; CODE XREF: sub_7F80B343+92j
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F80B343	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80B3E3(int, LPARAM dwInitParam, __int16)
sub_7F80B3E3	proc near		; CODE XREF: sub_7F80A9B6+49p
					; sub_7F80AAD1+31p ...

String		= byte ptr -680h
Buffer		= byte ptr -280h
var_80		= byte ptr -80h
arg_0		= dword	ptr  8
dwInitParam	= dword	ptr  0Ch
arg_8		= word ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 680h
		mov	[ebp+String], 0
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	edi, 2
		cmp	dword ptr [esi+60h], 0
		jz	short loc_7F80B43D
		push	200h		; cchBufferMax
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		push	1534h		; uID
		push	dword ptr [esi+0Ch] ; hInstance
		call	ds:LoadStringA
		lea	edx, [ebp+Buffer]
		lea	eax, [ebp+String]
		push	dword ptr [esi+60h]
		push	edx
		push	offset aSS_1	; "%s: %s\r\n"
		push	eax		; LPSTR
		call	ds:wsprintfA
		add	esp, 10h

loc_7F80B43D:				; CODE XREF: sub_7F80B3E3+1Fj
		push	80h		; cchBufferMax
		lea	eax, [ebp+var_80]
		push	eax		; lpBuffer
		push	1107h		; uID
		push	dword ptr [esi+0Ch] ; hInstance
		call	ds:LoadStringA
		mov	ebx, [ebp+dwInitParam]
		lea	eax, [ebp+var_80]
		push	ebx
		lea	ecx, [ebp+Buffer]
		push	eax		; LPCSTR
		push	ecx		; LPSTR
		call	ds:wsprintfA
		add	esp, 0Ch
		lea	ecx, [ebp+Buffer]
		lea	edx, [ebp+String]
		push	ecx
		push	edx
		push	offset aSS_0	; "%s%s\r\n"
		push	edx		; LPSTR
		call	ds:wsprintfA
		add	esp, 10h
		lea	edx, [ebp+String]
		push	dword ptr [ebp+arg_8] ;	__int16
		push	edx		; lpString
		push	esi		; int
		call	sub_7F80B343
		test	eax, eax
		jnz	short loc_7F80B4A1
		xor	edi, edi
		jmp	short loc_7F80B4D6
; ---------------------------------------------------------------------------

loc_7F80B4A1:				; CODE XREF: sub_7F80B3E3+B8j
		cmp	ebx, 80040115h
		jz	short loc_7F80B4B9
		cmp	ebx, 80040116h
		jz	short loc_7F80B4B9
		cmp	ebx, 8004010Dh
		jnz	short loc_7F80B4D6

loc_7F80B4B9:				; CODE XREF: sub_7F80B3E3+C4j
					; sub_7F80B3E3+CCj
		push	ebx		; dwInitParam
		push	offset DialogFunc ; lpDialogFunc
		push	dword ptr [esi+10h] ; hWndParent
		push	41Ah		; lpTemplateName
		push	dword ptr [esi+0Ch] ; hInstance
		call	ds:DialogBoxParamA
		cmp	eax, 1
		sbb	edi, edi
		inc	edi

loc_7F80B4D6:				; CODE XREF: sub_7F80B3E3+BCj
					; sub_7F80B3E3+D4j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F80B3E3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80B4E1	proc near		; CODE XREF: ScGetPABMigrationContext@52+10Ap

var_48		= byte ptr -48h
var_30		= byte ptr -30h
var_18		= byte ptr -18h
var_14		= byte ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 48h
		push	ebx
		lea	eax, [ebp+var_4]
		push	esi
		xor	ebx, ebx
		push	edi
		mov	esi, [ebp+arg_0]
		push	eax
		mov	[ebp+var_4], ebx
		push	28h
		call	dword ptr [esi+18h]
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F80B593
		mov	edi, [ebp+var_4]
		xor	eax, eax
		mov	ecx, 0Ah
		rep stosd
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax], offset	sub_7F80B5DE
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax+4], offset sub_7F80B608
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax+8], offset sub_7F80B6E7
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax+0Ch], offset sub_7F80B766
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax+10h], offset sub_7F80B80E
		mov	edx, [esi+18h]
		mov	eax, [ebp+var_4]
		mov	[eax+14h], edx
		mov	eax, [ebp+var_4]
		mov	edi, [esi+1Ch]
		lea	ecx, [ebp+var_48]
		push	ecx
		mov	[eax+18h], edi
		mov	edx, [esi+20h]
		mov	eax, [ebp+var_4]
		mov	[eax+1Ch], edx
		call	sub_7F80FD0E
		lea	ecx, [ebp+var_30]
		push	ecx
		call	sub_7F80FCE4
		lea	ecx, [ebp+var_48]
		lea	edx, [ebp+var_30]
		mov	[ebp+var_10], ecx
		mov	[ebp+var_C], edx
		lea	ecx, [ebp+var_10]
		mov	[ebp+var_8], ebx
		push	ecx
		call	sub_7F8173E6
		test	eax, eax
		jz	short loc_7F80B5A6
		push	eax
		call	sub_7F80F8B4
		mov	edi, eax

loc_7F80B593:				; CODE XREF: sub_7F80B4E1+1Ej
					; sub_7F80B4E1+F1j
		push	[ebp+var_4]
		call	sub_7F80B5DE

loc_7F80B59B:				; CODE XREF: sub_7F80B4E1+FBj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------

loc_7F80B5A6:				; CODE XREF: sub_7F80B4E1+A8j
		mov	eax, [ebp+var_4]
		lea	ecx, [ebp+var_14]
		lea	edx, [ebp+var_18]
		mov	dword ptr [eax+20h], 1
		mov	eax, [ebp+var_4]
		add	eax, 24h
		push	eax
		push	ecx
		push	edx
		push	20h
		push	[ebp+arg_8]
		push	0
		push	[ebp+arg_4]
		call	sub_7F80F91C
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F80B593
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_C]
		mov	[eax], ecx
		jmp	short loc_7F80B59B
sub_7F80B4E1	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80B5DE	proc near		; CODE XREF: sub_7F80B4E1+B5p
					; DATA XREF: sub_7F80B4E1+33o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_7F80B604
		lea	eax, [esi+24h]
		cmp	dword ptr [eax], 0
		jz	short loc_7F80B5F5
		push	eax
		call	sub_7F820C0E

loc_7F80B5F5:				; CODE XREF: sub_7F80B5DE+Fj
		cmp	dword ptr [esi+20h], 0
		jz	short loc_7F80B600
		call	sub_7F81762E

loc_7F80B600:				; CODE XREF: sub_7F80B5DE+1Bj
		push	esi
		call	dword ptr [esi+1Ch]

loc_7F80B604:				; CODE XREF: sub_7F80B5DE+7j
		pop	esi
		retn	4
sub_7F80B5DE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80B608	proc near		; DATA XREF: sub_7F80B4E1+3Co

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		lea	eax, [ebp+var_4]
		push	esi
		xor	ebx, ebx
		push	edi
		mov	esi, [ebp+arg_0]
		push	eax
		mov	[ebp+var_4], ebx
		push	0Ch
		call	dword ptr [esi+14h]
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F80B6D6
		mov	eax, [ebp+var_4]
		add	eax, 8
		push	eax
		push	[ebp+var_4]
		push	64694881h
		push	[ebp+var_4]
		push	esi
		call	sub_7F80B766
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F80B6D6
		mov	eax, [ebp+var_4]
		cmp	[eax], ebx
		jbe	short loc_7F80B680
		xor	ecx, ecx

loc_7F80B657:				; CODE XREF: sub_7F80B608+76j
		mov	eax, [ebp+var_4]
		mov	edx, [eax+8]
		cmp	byte ptr [edx+ecx], 70h
		jz	short loc_7F80B675
		dec	dword ptr [eax]
		mov	eax, [ebp+var_4]
		mov	edx, [eax+8]
		mov	edi, [eax]
		mov	eax, [edx+edi*4]
		mov	[edx+ecx], eax
		jmp	short loc_7F80B679
; ---------------------------------------------------------------------------

loc_7F80B675:				; CODE XREF: sub_7F80B608+59j
		add	ecx, 4
		inc	ebx

loc_7F80B679:				; CODE XREF: sub_7F80B608+6Bj
		mov	eax, [ebp+var_4]
		cmp	[eax], ebx
		ja	short loc_7F80B657

loc_7F80B680:				; CODE XREF: sub_7F80B608+4Bj
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		mov	eax, [ebp+var_4]
		push	[ebp+var_4]
		mov	eax, [eax]
		shl	eax, 2
		push	eax
		call	dword ptr [esi+18h]
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F80B6D6
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		mov	edi, [eax+4]
		shl	ecx, 2
		xor	eax, eax
		shr	ecx, 2
		rep stosd
		push	[ebp+var_4]
		push	esi
		call	sub_7F80BBF6
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F80B6D6
		push	[ebp+var_4]
		push	esi
		call	sub_7F80BD6C
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F80B6D6
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_4]
		mov	[eax], ecx
		jmp	short loc_7F80B6DC
; ---------------------------------------------------------------------------

loc_7F80B6D6:				; CODE XREF: sub_7F80B608+1Ej
					; sub_7F80B608+40j ...
		push	[ebp+var_4]
		call	dword ptr [esi+1Ch]

loc_7F80B6DC:				; CODE XREF: sub_7F80B608+CCj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F80B608	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80B6E7	proc near		; DATA XREF: sub_7F80B4E1+46o

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
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, 0Ch
		push	ebx
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_8], 0
		push	esi
		push	edi
		xor	esi, esi
		lea	edi, [eax-1]
		test	eax, eax
		jz	short loc_7F80B74A
		mov	eax, [ebp+arg_8]
		lea	ebx, [eax+edi*4]

loc_7F80B709:				; CODE XREF: sub_7F80B6E7+61j
		push	0
		lea	eax, [ebp+var_C]
		push	0
		mov	ecx, [ebp+arg_0]
		push	eax
		push	0
		push	ebx
		push	dword ptr [ecx+24h]
		call	sub_7F81197C
		test	eax, eax
		jnz	short loc_7F80B75B
		lea	eax, [ebp+var_2]
		sub	ebx, 4
		push	eax
		push	0
		push	[ebp+var_C]
		call	sub_7F811C6F
		lea	ecx, [ebp+var_C]
		push	ecx
		call	sub_7F811B7E
		movsx	ecx, [ebp+var_2]
		add	esi, ecx
		mov	eax, edi
		dec	edi
		test	eax, eax
		jnz	short loc_7F80B709

loc_7F80B74A:				; CODE XREF: sub_7F80B6E7+1Aj
		mov	eax, [ebp+arg_C]
		mov	[eax], esi

loc_7F80B74F:				; CODE XREF: sub_7F80B6E7+7Dj
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------

loc_7F80B75B:				; CODE XREF: sub_7F80B6E7+3Aj
		push	eax
		call	sub_7F80F8B4
		mov	[ebp+var_8], eax
		jmp	short loc_7F80B74F
sub_7F80B6E7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80B766	proc near		; CODE XREF: sub_7F80B608+37p
					; DATA XREF: sub_7F80B4E1+50o

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		xor	esi, esi
		lea	eax, [ebp+var_8]
		push	esi
		lea	ecx, [ebp+arg_8]
		push	esi
		mov	ebx, [ebp+arg_0]
		push	eax
		mov	[ebp+var_8], esi
		push	esi
		mov	[ebp+var_C], esi
		push	ecx
		push	dword ptr [ebx+24h]
		call	sub_7F81197C
		test	eax, eax
		jz	short loc_7F80B79A
		push	eax
		call	sub_7F80F8B4
		mov	esi, eax
		jmp	short loc_7F80B7F5
; ---------------------------------------------------------------------------

loc_7F80B79A:				; CODE XREF: sub_7F80B766+28j
		lea	eax, [ebp+var_2]
		push	eax
		push	0
		push	[ebp+var_8]
		call	sub_7F811C6F
		cmp	[ebp+var_2], 0
		jle	short loc_7F80B7E4
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+arg_4]
		movsx	eax, [ebp+var_2]
		shl	eax, 2
		push	eax
		call	dword ptr [ebx+18h]
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F80B7F5
		lea	eax, [ebp+var_2]
		push	eax
		push	[ebp+var_C]
		push	[ebp+var_8]
		call	sub_7F811EA7
		test	eax, eax
		jz	short loc_7F80B7E4
		push	eax
		call	sub_7F80F8B4
		mov	esi, eax
		jmp	short loc_7F80B7F5
; ---------------------------------------------------------------------------

loc_7F80B7E4:				; CODE XREF: sub_7F80B766+47j
					; sub_7F80B766+72j
		mov	eax, [ebp+arg_C]
		mov	edx, [ebp+var_C]
		movsx	ecx, [ebp+var_2]
		mov	[eax], ecx
		mov	ecx, [ebp+arg_10]
		mov	[ecx], edx

loc_7F80B7F5:				; CODE XREF: sub_7F80B766+32j
					; sub_7F80B766+5Fj ...
		cmp	[ebp+var_8], 0
		jz	short loc_7F80B804
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F811B7E

loc_7F80B804:				; CODE XREF: sub_7F80B766+93j
		mov	eax, esi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F80B766	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80B80E	proc near		; DATA XREF: sub_7F80B4E1+5Ao

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_8		= dword	ptr  10h
arg_C		= byte ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		mov	[ebp+var_14], edi
		mov	[ebp+var_1C], edi
		push	edi
		mov	[ebp+var_20], edi
		push	edi
		lea	eax, [ebp+var_18]
		push	eax
		lea	ecx, [ebp+arg_C]
		push	edi
		mov	esi, [ebp+arg_0]
		push	ecx
		mov	[ebp+var_18], edi
		mov	[ebp+var_10], edi
		mov	[ebp+var_4], edi
		push	[ebp+arg_8]
		push	dword ptr [esi+24h]
		call	sub_7F81028C
		test	eax, eax
		jz	short loc_7F80B855
		push	eax
		call	sub_7F80F8B4
		mov	edi, eax
		jmp	loc_7F80B9B0
; ---------------------------------------------------------------------------

loc_7F80B855:				; CODE XREF: sub_7F80B80E+38j
		lea	eax, [ebp+var_8]
		push	eax
		push	2800Ch
		push	[ebp+var_18]
		call	sub_7F810E3F
		test	eax, eax
		jz	short loc_7F80B877
		push	eax
		call	sub_7F80F8B4
		mov	edi, eax
		jmp	loc_7F80B9B0
; ---------------------------------------------------------------------------

loc_7F80B877:				; CODE XREF: sub_7F80B80E+5Aj
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+var_8]
		call	dword ptr [esi+14h]
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F80B9B0
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+var_10]
		push	2800Ch
		push	[ebp+var_18]
		call	sub_7F810E8D
		test	eax, eax
		jz	short loc_7F80B8B0
		push	eax
		call	sub_7F80F8B4
		mov	edi, eax
		jmp	loc_7F80B9B0
; ---------------------------------------------------------------------------

loc_7F80B8B0:				; CODE XREF: sub_7F80B80E+93j
		lea	eax, [ebp+var_14]
		mov	ebx, offset dword_7F801990
		push	eax
		push	0
		push	dword ptr [esi+1Ch]
		push	dword ptr [esi+18h]
		push	dword ptr [esi+14h]
		push	ebx
		call	CreateIProp@24
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F80B9A0
		lea	eax, [ebp+var_1C]
		push	eax
		push	0
		push	dword ptr [esi+1Ch]
		push	dword ptr [esi+18h]
		push	dword ptr [esi+14h]
		push	ebx
		call	CreateIProp@24
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F80B9A0
		push	[ebp+var_10]
		call	sub_7F80C1B6
		lea	ecx, [ebp+var_4]
		mov	[ebp+var_8], eax
		shl	eax, 4
		push	ecx
		push	eax
		mov	[ebp+var_24], eax
		call	dword ptr [esi+14h]
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F80B9A0
		mov	eax, [ebp+var_8]
		dec	eax
		cmp	[ebp+var_8], 0
		mov	[ebp+var_C], eax
		jz	loc_7F80BA97
		shl	eax, 4
		mov	[ebp+var_28], eax

loc_7F80B92D:				; CODE XREF: sub_7F80B80E+283j
		push	[ebp+var_C]
		push	[ebp+var_10]
		mov	ebx, [ebp+var_4]
		add	ebx, [ebp+var_28]
		call	sub_7F80C1C4
		mov	ecx, [eax]
		test	ecx, ecx
		jz	short loc_7F80B982
		cmp	ecx, 4
		jz	loc_7F80B9D8
		cmp	ecx, 5
		jz	loc_7F80B9E0
		cmp	ecx, 0Ah
		jz	loc_7F80BA13
		cmp	ecx, 3000h
		jz	loc_7F80BA1E
		cmp	ecx, 0C001h
		jz	loc_7F80BA57
		mov	dword ptr [ebx], 1
		jmp	loc_7F80BA85
; ---------------------------------------------------------------------------

loc_7F80B982:				; CODE XREF: sub_7F80B80E+134j
		mov	dword ptr [ebx], 3001001Eh

loc_7F80B988:				; CODE XREF: sub_7F80B80E+1D0j
					; sub_7F80B80E+20Bj
		add	ebx, 8
		push	ebx
		push	eax
		push	[ebp+var_4]
		push	esi
		call	sub_7F80BB96
		mov	edi, eax
		test	edi, edi
		jz	loc_7F80BA85

loc_7F80B9A0:				; CODE XREF: sub_7F80B80E+C0j
					; sub_7F80B80E+DFj ...
		push	[ebp+var_1C]
		call	UlRelease@4
		push	[ebp+var_14]
		call	UlRelease@4

loc_7F80B9B0:				; CODE XREF: sub_7F80B80E+42j
					; sub_7F80B80E+64j ...
		push	[ebp+var_4]
		call	dword ptr [esi+1Ch]
		push	[ebp+var_10]
		call	dword ptr [esi+1Ch]
		cmp	[ebp+var_18], 0
		jz	short loc_7F80B9CD
		push	0
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_7F810922

loc_7F80B9CD:				; CODE XREF: sub_7F80B80E+1B2j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	24h
; ---------------------------------------------------------------------------

loc_7F80B9D8:				; CODE XREF: sub_7F80B80E+139j
		mov	dword ptr [ebx], 3003001Eh
		jmp	short loc_7F80B988
; ---------------------------------------------------------------------------

loc_7F80B9E0:				; CODE XREF: sub_7F80B80E+142j
		mov	dword ptr [ebx], 3002001Eh
		add	ebx, 8
		push	ebx
		push	eax
		push	[ebp+var_4]
		push	esi
		call	sub_7F80BB96
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F80B9A0
		push	offset aMtp	; "MTP"
		push	dword ptr [ebx]	; lpString1
		call	ds:lstrcmpiA
		test	eax, eax
		jnz	short loc_7F80BA85
		mov	dword ptr [ebx], offset	aSmtp ;	"SMTP"
		jmp	short loc_7F80BA85
; ---------------------------------------------------------------------------

loc_7F80BA13:				; CODE XREF: sub_7F80B80E+14Bj
		mov	dword ptr [ebx], 3A20001Eh
		jmp	loc_7F80B988
; ---------------------------------------------------------------------------

loc_7F80BA1E:				; CODE XREF: sub_7F80B80E+157j
		mov	dword ptr [ebx], 1
		cmp	dword ptr [eax+1Ch], 4
		jnz	short loc_7F80BA85
		lea	eax, [ebp+var_2C]
		lea	ecx, [ebp+var_20]
		mov	[ebp+var_2C], 4
		push	eax
		push	ecx
		push	80000h
		push	[ebp+var_18]
		call	sub_7F810E8D
		test	eax, eax
		jz	short loc_7F80BA85
		push	eax
		call	sub_7F80F8B4
		mov	edi, eax
		jmp	loc_7F80B9A0
; ---------------------------------------------------------------------------

loc_7F80BA57:				; CODE XREF: sub_7F80B80E+163j
		mov	dword ptr [ebx], 3003001Eh
		add	ebx, 8
		push	ebx
		push	[ebp+var_4]
		push	1000h
		call	dword ptr [esi+18h]
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F80B9A0
		push	1000h
		push	dword ptr [ebx]
		push	[ebp+var_10]
		call	sub_7F80BFB5

loc_7F80BA85:				; CODE XREF: sub_7F80B80E+16Fj
					; sub_7F80B80E+18Cj ...
		sub	[ebp+var_28], 10h
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jnz	loc_7F80B92D

loc_7F80BA97:				; CODE XREF: sub_7F80B80E+113j
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	[ebp+var_14]
		call	sub_7F80BE69
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F80B9A0
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	[ebp+var_14]
		call	sub_7F80BF60
		push	0
		mov	eax, [ebp+var_14]
		push	[ebp+var_4]
		push	[ebp+var_8]
		mov	ebx, [eax]
		push	[ebp+var_14]
		call	dword ptr [ebx+20h]
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F80B9A0
		mov	eax, [ebp+var_8]
		mov	ebx, [ebp+var_24]
		mov	[ebp+var_C], eax

loc_7F80BAE3:				; CODE XREF: sub_7F80B80E+303j
					; sub_7F80B80E+31Dj ...
		mov	eax, [ebp+var_C]
		sub	ebx, 10h
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_7F80BB51
		push	[ebp+var_C]
		push	[ebp+var_10]
		mov	edi, [ebp+var_4]
		call	sub_7F80C1C4
		add	edi, ebx
		mov	ecx, [eax]
		test	ecx, ecx
		jz	short loc_7F80BB13
		cmp	ecx, 9
		jz	short loc_7F80BB32
		mov	dword ptr [edi], 1
		jmp	short loc_7F80BAE3
; ---------------------------------------------------------------------------

loc_7F80BB13:				; CODE XREF: sub_7F80B80E+2F6j
		mov	dword ptr [edi], 3001001Eh
		add	edi, 8
		push	edi
		push	eax
		push	[ebp+var_4]
		push	esi
		call	sub_7F80BB96
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F80BAE3
		jmp	loc_7F80B9A0
; ---------------------------------------------------------------------------

loc_7F80BB32:				; CODE XREF: sub_7F80B80E+2FBj
		mov	dword ptr [edi], 3004001Eh
		add	edi, 8
		push	edi
		push	eax
		push	[ebp+var_4]
		push	esi
		call	sub_7F80BB96
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F80BAE3
		jmp	loc_7F80B9A0
; ---------------------------------------------------------------------------

loc_7F80BB51:				; CODE XREF: sub_7F80B80E+2E0j
		xor	ebx, ebx
		mov	edx, [ebp+var_1C]
		push	ebx
		mov	eax, [edx]
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	[ebp+var_1C]
		call	dword ptr [eax+20h]
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F80B9A0
		mov	ecx, [ebp+var_14]
		mov	eax, [ebp+arg_10]
		mov	edx, [ebp+var_1C]
		mov	[eax], ecx
		mov	ecx, [ebp+arg_14]
		mov	eax, [ebp+arg_18]
		mov	[ecx], edx
		mov	edx, [ebp+arg_1C]
		mov	ecx, [ebp+var_20]
		mov	[eax], ebx
		mov	eax, [ebp+arg_20]
		mov	[edx], ebx
		mov	[eax], ecx
		jmp	loc_7F80B9B0
sub_7F80B80E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80BB96	proc near		; CODE XREF: sub_7F80B80E+183p
					; sub_7F80B80E+1E1p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_8]
		mov	ecx, [ebx+4]
		test	ecx, ecx
		jz	short loc_7F80BBB8
		cmp	[ecx+ebx+7], al
		jnz	short loc_7F80BBB8
		add	ebx, 8
		mov	ecx, [ebp+arg_C]
		mov	[ecx], ebx
		jmp	short loc_7F80BBEF
; ---------------------------------------------------------------------------

loc_7F80BBB8:				; CODE XREF: sub_7F80BB96+10j
					; sub_7F80BB96+16j
		inc	ecx
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	ecx
		call	dword ptr [eax+18h]
		test	eax, eax
		jnz	short loc_7F80BBEF
		mov	ecx, [ebp+arg_C]
		mov	edx, [ebx+4]
		lea	esi, [ebx+8]
		mov	edi, [ecx]
		mov	ecx, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	ecx, [ebp+arg_C]
		mov	ebx, [ebx+4]
		mov	edx, [ecx]
		mov	byte ptr [edx+ebx], 0

loc_7F80BBEF:				; CODE XREF: sub_7F80BB96+20j
					; sub_7F80BB96+32j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_7F80BB96	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80BBF6	proc near		; CODE XREF: sub_7F80B608+AAp

nSize		= dword	ptr -18h
lpReturnedString= dword	ptr -14h
ReturnedString	= byte ptr -10h
var_F		= byte ptr -0Fh
var_E		= byte ptr -0Eh
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
lpBuffer	= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		lea	eax, [ebp+lpBuffer]
		push	esi
		push	edi
		xor	esi, esi
		push	eax
		mov	edi, 104h
		mov	ebx, [ebp+arg_0]
		push	edi
		mov	[ebp+lpBuffer],	esi
		call	dword ptr [ebx+14h]
		mov	[ebp+var_8], eax
		cmp	eax, esi
		jnz	loc_7F80BD57
		push	edi		; uSize
		push	[ebp+lpBuffer]	; lpBuffer
		call	ds:GetWindowsDirectoryA
		mov	[ebp+var_C], eax
		cmp	eax, esi
		jnz	short loc_7F80BC42
		call	ds:GetLastError
		mov	[ebp+var_8], 8004010Eh
		jmp	loc_7F80BD57
; ---------------------------------------------------------------------------

loc_7F80BC42:				; CODE XREF: sub_7F80BBF6+38j
		mov	eax, [ebp+var_C]
		add	eax, [ebp+lpBuffer]
		cmp	byte ptr [eax-1], 5Ch
		jz	short loc_7F80BC54
		mov	byte ptr [eax],	5Ch
		inc	[ebp+var_C]

loc_7F80BC54:				; CODE XREF: sub_7F80BBF6+56j
		push	offset aMsmailpv_ini ; "MSMAILPV.INI"
		mov	eax, [ebp+lpBuffer]
		add	eax, [ebp+var_C]
		push	eax		; lpString1
		call	ds:lstrcpyA
		lea	ecx, [ebp+nSize]
		push	ecx		; int
		push	[ebp+lpBuffer]	; lpFileName
		call	sub_7F80BE17
		test	eax, eax
		jnz	loc_7F80BD50
		lea	eax, [ebp+lpReturnedString]
		mov	esi, [ebp+arg_4]
		push	eax
		mov	ebx, [ebp+arg_0]
		push	esi
		push	[ebp+nSize]
		call	dword ptr [ebx+18h]
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	loc_7F80BD57
		push	[ebp+lpBuffer]	; lpFileName
		push	[ebp+nSize]	; nSize
		push	[ebp+lpReturnedString] ; lpReturnedString
		push	offset AppName	; "Transport"
		call	ds:GetPrivateProfileSectionA
		mov	ebx, [ebp+lpReturnedString]
		cmp	byte ptr [ebx],	0
		jz	loc_7F80BD57

loc_7F80BCB6:				; CODE XREF: sub_7F80BBF6+152j
		lea	edi, [ebp+ReturnedString]
		xor	eax, eax
		stosd
		push	3Dh
		push	ebx
		call	SzFindCh@8
		mov	byte ptr [eax],	0
		mov	edi, eax
		inc	edi
		push	ebx
		push	offset aMsmailSFiles_i ; "MSMAIL\\%s\\FILES.INI"
		mov	eax, [ebp+lpBuffer]
		add	eax, [ebp+var_C]
		push	eax		; LPSTR
		call	ds:wsprintfA
		add	esp, 0Ch
		lea	edx, [ebp+ReturnedString]
		push	[ebp+lpBuffer]	; lpFileName
		push	4		; nSize
		push	edx		; lpReturnedString
		push	offset Default	; lpDefault
		push	offset KeyName	; "PABID"
		push	offset AppName	; "Transport"
		call	ds:GetPrivateProfileStringA
		movzx	ecx, [ebp+var_E]
		movzx	eax, [ebp+ReturnedString]
		shl	ecx, 10h
		or	ecx, eax
		mov	edx, [esi]
		movzx	eax, [ebp+var_F]
		shl	ecx, 8
		shl	eax, 10h
		or	ecx, eax
		and	cl, 70h
		or	cl, 70h

loc_7F80BD1F:				; CODE XREF: sub_7F80BBF6+136j
					; sub_7F80BBF6+13Fj
		mov	eax, edx
		dec	edx
		test	eax, eax
		jz	short loc_7F80BD3A
		mov	eax, [esi+8]
		cmp	[eax+edx*4], ecx
		jnz	short loc_7F80BD1F
		mov	eax, [esi+4]
		cmp	dword ptr [eax+edx*4], 0
		jnz	short loc_7F80BD1F
		mov	[eax+edx*4], edi

loc_7F80BD3A:				; CODE XREF: sub_7F80BBF6+12Ej
		push	edi		; lpString
		call	ds:lstrlenA
		lea	ebx, [edi+eax+1]
		cmp	byte ptr [ebx],	0
		jnz	loc_7F80BCB6
		jmp	short loc_7F80BD57
; ---------------------------------------------------------------------------

loc_7F80BD50:				; CODE XREF: sub_7F80BBF6+7Ej
		mov	[ebp+var_8], 0

loc_7F80BD57:				; CODE XREF: sub_7F80BBF6+23j
					; sub_7F80BBF6+47j ...
		mov	ebx, [ebp+arg_0]
		push	[ebp+lpBuffer]
		call	dword ptr [ebx+1Ch]
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F80BBF6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80BD6C	proc near		; CODE XREF: sub_7F80B608+B9p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		lea	eax, [ebp+var_C]
		push	esi
		push	edi
		push	eax
		mov	esi, [ebp+arg_4]
		push	esi
		mov	ebx, [ebp+arg_0]
		mov	eax, [esi]
		imul	eax, 82h
		push	eax
		call	dword ptr [ebx+18h]
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	short loc_7F80BE0B
		mov	edi, [esi]
		mov	eax, edi
		dec	edi
		test	eax, eax
		jz	short loc_7F80BE0B
		mov	eax, edi
		lea	ebx, ds:0[edi*4]
		imul	eax, 82h
		mov	[ebp+var_8], eax

loc_7F80BDAE:				; CODE XREF: sub_7F80BD6C+92j
		mov	eax, [esi+4]
		cmp	dword ptr [eax+ebx], 0
		jnz	short loc_7F80BDEF
		push	0
		lea	eax, [ebp+var_10]
		push	eax
		mov	ecx, [esi+8]
		mov	[ebp+var_10], 82h
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_8]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [ecx+ebx]
		push	dword ptr [eax+24h]
		call	sub_7F81B3E4
		test	eax, eax
		jnz	short loc_7F80BE02
		mov	eax, [ebp+var_C]
		mov	ecx, [esi+4]
		add	eax, [ebp+var_8]
		add	eax, 2
		mov	[ecx+ebx], eax

loc_7F80BDEF:				; CODE XREF: sub_7F80BD6C+49j
		mov	eax, edi
		sub	ebx, 4
		sub	[ebp+var_8], 82h
		dec	edi
		test	eax, eax
		jnz	short loc_7F80BDAE
		jmp	short loc_7F80BE0B
; ---------------------------------------------------------------------------

loc_7F80BE02:				; CODE XREF: sub_7F80BD6C+72j
		push	eax
		call	sub_7F80F8B4
		mov	[ebp+var_4], eax

loc_7F80BE0B:				; CODE XREF: sub_7F80BD6C+25j
					; sub_7F80BD6C+2Ej ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F80BD6C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80BE17(LPCSTR lpFileName,	int)
sub_7F80BE17	proc near		; CODE XREF: sub_7F80BBF6+77p

FindFileData	= _WIN32_FIND_DATAA ptr	-140h
lpFileName	= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 140h
		push	esi
		lea	eax, [ebp+FindFileData]
		xor	esi, esi
		push	eax		; lpFindFileData
		push	[ebp+lpFileName] ; lpFileName
		call	ds:FindFirstFileA
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_7F80BE4E
		mov	esi, 8004010Fh
		call	ds:GetLastError
		sub	eax, 2
		cmp	eax, 1
		adc	esi, 0FFFFFFFFh
		jmp	short loc_7F80BE60
; ---------------------------------------------------------------------------

loc_7F80BE4E:				; CODE XREF: sub_7F80BE17+1Fj
		push	eax		; hFindFile
		call	ds:FindClose
		mov	ecx, [ebp+FindFileData.nFileSizeLow]
		mov	eax, [ebp+arg_4]
		mov	[eax], ecx

loc_7F80BE60:				; CODE XREF: sub_7F80BE17+35j
		mov	eax, esi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F80BE17	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80BE69	proc near		; CODE XREF: sub_7F80B80E+292p

var_34		= dword	ptr -34h
var_2C		= dword	ptr -2Ch
var_24		= dword	ptr -24h
var_1C		= dword	ptr -1Ch
var_14		= dword	ptr -14h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 34h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	3002001Eh
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		call	PpropFindProp@12
		test	eax, eax
		jz	loc_7F80BF55
		push	offset aFax	; "FAX"
		push	dword ptr [eax+8] ; lpString1
		call	ds:lstrcmpiA
		test	eax, eax
		jnz	loc_7F80BF55
		push	3003001Eh
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		call	PpropFindProp@12
		mov	esi, eax
		test	esi, esi
		jz	loc_7F80BF55
		push	0Dh
		push	dword ptr [esi+8]
		call	SzFindCh@8
		test	eax, eax
		jz	loc_7F80BF55
		inc	eax
		push	0Dh
		push	eax
		mov	[ebp+var_2C], eax
		call	SzFindCh@8
		test	eax, eax
		jz	short loc_7F80BF55
		mov	edi, eax
		push	0Dh
		inc	eax
		push	eax
		mov	[ebp+var_1C], eax
		call	SzFindCh@8
		test	eax, eax
		jz	short loc_7F80BF55
		push	0Dh
		mov	[ebp+var_4], eax
		inc	eax
		push	eax
		mov	[ebp+var_C], eax
		call	SzFindCh@8
		test	eax, eax
		jz	short loc_7F80BF55
		mov	[eax], bl
		mov	eax, [ebp+var_4]
		mov	[eax], bl
		mov	[edi], bl
		mov	ecx, [ebp+var_C]
		mov	[esi+8], ecx
		mov	ecx, [ebp+var_1C]
		mov	edx, [ebp+var_2C]
		cmp	byte ptr [edx],	1
		sbb	eax, eax
		and	eax, 0C5E6FFE3h
		add	eax, 3A19001Eh
		mov	[ebp+var_34], eax
		push	ebx
		cmp	byte ptr [ecx],	1
		lea	ecx, [ebp+var_34]
		sbb	eax, eax
		push	ecx
		and	eax, 0C5E9FFE3h
		push	3
		add	eax, 3A16001Eh
		mov	[ebp+var_24], eax
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ebx, [eax]
		mov	[ebp+var_14], 3A23001Eh
		call	dword ptr [ebx+20h]
		mov	ebx, eax

loc_7F80BF55:				; CODE XREF: sub_7F80BE69+1Dj
					; sub_7F80BE69+33j ...
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F80BE69	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80BF60	proc near		; CODE XREF: sub_7F80B80E+2AAp

var_10		= dword	ptr -10h
var_8		= word ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	3002001Eh
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		call	PpropFindProp@12
		xor	esi, esi
		test	eax, eax
		jz	short loc_7F80BFAC
		push	offset aMs	; "MS"
		push	dword ptr [eax+8] ; lpString1
		call	ds:lstrcmpiA
		test	eax, eax
		jz	short loc_7F80BFAC
		mov	[ebp+var_8], si
		push	esi
		lea	eax, [ebp+var_10]
		push	eax
		push	1
		mov	eax, [ebp+arg_0]
		push	eax
		mov	esi, [eax]
		mov	[ebp+var_10], 3A40000Bh
		call	dword ptr [esi+20h]
		mov	esi, eax

loc_7F80BFAC:				; CODE XREF: sub_7F80BF60+1Bj
					; sub_7F80BF60+2Dj
		mov	eax, esi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F80BF60	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80BFB5	proc near		; CODE XREF: sub_7F80B80E+272p

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
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_0]
		push	0C001h
		call	sub_7F80C239
		push	eax
		push	[ebp+arg_0]
		call	sub_7F80C1C4
		push	eax
		xor	esi, esi
		mov	[ebp+var_4], eax
		call	sub_7F80C1B6
		mov	[ebp+var_8], eax
		dec	[ebp+arg_8]
		cmp	eax, esi
		jle	loc_7F80C098

loc_7F80BFED:				; CODE XREF: sub_7F80BFB5+DDj
		push	esi
		push	[ebp+var_4]
		call	sub_7F80C1C4
		push	eax
		push	[ebp+arg_0]
		call	sub_7F80C0A9
		test	eax, eax
		jz	loc_7F80C08C
		lea	eax, [esi+1]
		push	eax
		push	[ebp+var_4]
		call	sub_7F80C1C4
		mov	edi, eax
		lea	ecx, [esi+2]
		push	ecx
		add	edi, 8
		push	[ebp+var_4]
		call	sub_7F80C1C4
		lea	ebx, [eax+8]

loc_7F80C027:				; CODE XREF: sub_7F80BFB5+D3j
		mov	al, [ebx]
		inc	ebx
		test	al, al
		jz	short loc_7F80C08C
		cmp	al, 25h
		jz	short loc_7F80C03F
		mov	ecx, [ebp+arg_4]
		dec	[ebp+arg_8]
		inc	[ebp+arg_4]
		mov	[ecx], al
		jmp	short loc_7F80C084
; ---------------------------------------------------------------------------

loc_7F80C03F:				; CODE XREF: sub_7F80BFB5+7Bj
		mov	al, [ebx]
		inc	ebx
		movzx	eax, al
		cmp	eax, 25h
		jz	short loc_7F80C051
		cmp	eax, 73h
		jz	short loc_7F80C05F
		jmp	short loc_7F80C084
; ---------------------------------------------------------------------------

loc_7F80C051:				; CODE XREF: sub_7F80BFB5+93j
		mov	ecx, [ebp+arg_4]
		dec	[ebp+arg_8]
		inc	[ebp+arg_4]
		mov	byte ptr [ecx],	25h
		jmp	short loc_7F80C084
; ---------------------------------------------------------------------------

loc_7F80C05F:				; CODE XREF: sub_7F80BFB5+98j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	dword ptr [edi]
		call	sub_7F80C1F7
		push	eax
		add	edi, 4
		call	sub_7F80C18A
		mov	ecx, [ebp+arg_4]
		sub	[ebp+arg_8], eax
		add	[ebp+arg_8], ecx
		mov	[ebp+arg_4], eax

loc_7F80C084:				; CODE XREF: sub_7F80BFB5+88j
					; sub_7F80BFB5+9Aj ...
		cmp	[ebp+arg_8], 0
		jnz	short loc_7F80C027
		jmp	short loc_7F80C098
; ---------------------------------------------------------------------------

loc_7F80C08C:				; CODE XREF: sub_7F80BFB5+4Cj
					; sub_7F80BFB5+77j
		add	esi, 3
		cmp	esi, [ebp+var_8]
		jl	loc_7F80BFED

loc_7F80C098:				; CODE XREF: sub_7F80BFB5+32j
					; sub_7F80BFB5+D5j
		mov	ecx, [ebp+arg_4]
		pop	edi
		mov	eax, ecx
		pop	esi
		pop	ebx
		mov	byte ptr [ecx],	0
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F80BFB5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80C0A9	proc near		; CODE XREF: sub_7F80BFB5+45p
					; sub_7F80C0A9+67p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_4]
		mov	eax, [esi]
		cmp	eax, 0F003h
		jz	short loc_7F80C0DC
		cmp	eax, 0F005h
		jz	short loc_7F80C109
		cmp	eax, 0F008h
		jz	short loc_7F80C11E
		cmp	eax, 0F009h
		jz	short loc_7F80C125
		cmp	eax, 0F00Ah
		jz	short loc_7F80C153
		jmp	loc_7F80C17A
; ---------------------------------------------------------------------------

loc_7F80C0DC:				; CODE XREF: sub_7F80C0A9+10j
		push	[ebp+arg_0]
		push	dword ptr [esi+8]
		call	sub_7F80C239
		inc	eax
		cmp	eax, 1
		sbb	eax, eax
		neg	eax
		test	eax, eax
		jnz	loc_7F80C17A
		push	eax
		push	[ebp+arg_0]
		call	sub_7F80C1C4
		cmp	byte ptr [eax+8], 1
		sbb	eax, eax
		inc	eax
		jmp	short loc_7F80C17C
; ---------------------------------------------------------------------------

loc_7F80C109:				; CODE XREF: sub_7F80C0A9+17j
		add	esi, 8
		push	esi
		push	[ebp+arg_0]
		call	sub_7F80C0A9
		cmp	eax, 1
		sbb	eax, eax
		neg	eax
		jmp	short loc_7F80C17C
; ---------------------------------------------------------------------------

loc_7F80C11E:				; CODE XREF: sub_7F80C0A9+1Ej
		mov	eax, 1
		jmp	short loc_7F80C17C
; ---------------------------------------------------------------------------

loc_7F80C125:				; CODE XREF: sub_7F80C0A9+25j
		push	esi
		xor	ebx, ebx
		call	sub_7F80C1B6
		mov	edi, eax
		test	edi, edi
		jle	short loc_7F80C14C

loc_7F80C133:				; CODE XREF: sub_7F80C0A9+A1j
		push	ebx
		push	esi
		call	sub_7F80C1C4
		push	eax
		push	[ebp+arg_0]
		call	sub_7F80C0A9
		test	eax, eax
		jz	short loc_7F80C17A
		inc	ebx
		cmp	ebx, edi
		jl	short loc_7F80C133

loc_7F80C14C:				; CODE XREF: sub_7F80C0A9+88j
		mov	eax, 1
		jmp	short loc_7F80C17C
; ---------------------------------------------------------------------------

loc_7F80C153:				; CODE XREF: sub_7F80C0A9+2Cj
		push	esi
		xor	ebx, ebx
		call	sub_7F80C1B6
		mov	edi, eax
		test	edi, edi
		jle	short loc_7F80C17A

loc_7F80C161:				; CODE XREF: sub_7F80C0A9+CFj
		push	ebx
		push	esi
		call	sub_7F80C1C4
		push	eax
		push	[ebp+arg_0]
		call	sub_7F80C0A9
		test	eax, eax
		jnz	short loc_7F80C183
		inc	ebx
		cmp	ebx, edi
		jl	short loc_7F80C161

loc_7F80C17A:				; CODE XREF: sub_7F80C0A9+2Ej
					; sub_7F80C0A9+48j ...
		xor	eax, eax

loc_7F80C17C:				; CODE XREF: sub_7F80C0A9+5Ej
					; sub_7F80C0A9+73j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
; ---------------------------------------------------------------------------

loc_7F80C183:				; CODE XREF: sub_7F80C0A9+CAj
		mov	eax, 1
		jmp	short loc_7F80C17C
sub_7F80C0A9	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80C18A	proc near		; CODE XREF: sub_7F80BFB5+BEp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	edx, [esp+arg_0]
		push	ebx
		mov	eax, [esp+4+arg_4]

loc_7F80C193:				; CODE XREF: sub_7F80C18A+20j
		mov	ecx, [esp+4+arg_8]
		dec	[esp+4+arg_8]
		cmp	ecx, 1
		jbe	short loc_7F80C1AF
		mov	ecx, eax
		mov	bl, [edx]
		inc	eax
		inc	edx
		mov	[ecx], bl
		test	bl, bl
		jnz	short loc_7F80C193
		dec	eax
		jmp	short loc_7F80C1B2
; ---------------------------------------------------------------------------

loc_7F80C1AF:				; CODE XREF: sub_7F80C18A+14j
		mov	byte ptr [eax],	0

loc_7F80C1B2:				; CODE XREF: sub_7F80C18A+23j
		pop	ebx
		retn	0Ch
sub_7F80C18A	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80C1B6	proc near		; CODE XREF: sub_7F80B80E+E8p
					; sub_7F80BFB5+25p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, [eax+8]
		mov	eax, [ecx+eax+8]
		retn	4
sub_7F80C1B6	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80C1C4	proc near		; CODE XREF: sub_7F80B80E+12Bp
					; sub_7F80B80E+2EBp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	edx, [esp+arg_4]
		add	eax, 8
		imul	edx, 0Ch
		mov	ecx, [eax]
		add	ecx, eax
		add	eax, [ecx+edx+0Ch]
		retn	8
sub_7F80C1C4	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80C1DD	proc near		; CODE XREF: sub_7F80C1F7+38p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	ecx, [esp+arg_8]
		mov	eax, [esp+arg_0]
		imul	ecx, 0Ch
		mov	edx, [ecx+eax+0Ch]
		mov	ecx, [esp+arg_4]
		lea	eax, [ecx+edx+8]
		retn	0Ch
sub_7F80C1DD	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80C1F7	proc near		; CODE XREF: sub_7F80BFB5+B5p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_4]
		push	edi
		push	esi
		call	sub_7F80C1B6
		mov	ecx, [esi+8]
		lea	ebx, [ecx+esi+8]
		xor	ecx, ecx
		test	eax, eax
		jle	short loc_7F80C224
		lea	edx, [ebx+4]
		mov	edi, [esp+0Ch+arg_0]

loc_7F80C218:				; CODE XREF: sub_7F80C1F7+2Bj
		cmp	[edx], edi
		jz	short loc_7F80C22C
		add	edx, 0Ch
		inc	ecx
		cmp	eax, ecx
		jg	short loc_7F80C218

loc_7F80C224:				; CODE XREF: sub_7F80C1F7+18j
		xor	eax, eax

loc_7F80C226:				; CODE XREF: sub_7F80C1F7+40j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------

loc_7F80C22C:				; CODE XREF: sub_7F80C1F7+23j
		push	ecx
		push	esi
		push	ebx
		call	sub_7F80C1DD
		add	eax, 8
		jmp	short loc_7F80C226
sub_7F80C1F7	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80C239	proc near		; CODE XREF: sub_7F80BFB5+11p
					; sub_7F80C0A9+39p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	esi, [esp+8+arg_4]
		test	esi, esi
		jz	short loc_7F80C26B
		push	esi
		call	sub_7F80C1B6
		mov	edi, eax
		mov	eax, [esi+8]
		lea	edx, [eax+esi+8]
		xor	eax, eax
		test	edi, edi
		jle	short loc_7F80C26B
		add	edx, 4
		mov	ecx, [esp+8+arg_0]

loc_7F80C25F:				; CODE XREF: sub_7F80C239+30j
		cmp	[edx], ecx
		jz	short loc_7F80C270
		add	edx, 0Ch
		inc	eax
		cmp	eax, edi
		jl	short loc_7F80C25F

loc_7F80C26B:				; CODE XREF: sub_7F80C239+8j
					; sub_7F80C239+1Dj
		mov	eax, 0FFFFFFFFh

loc_7F80C270:				; CODE XREF: sub_7F80C239+28j
		pop	edi
		pop	esi
		retn	8
sub_7F80C239	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80C275	proc near		; CODE XREF: ScGetPABMigrationContext@52+129p

var_C		= dword	ptr -0Ch
hLibModule	= dword	ptr -8
var_2		= byte ptr -2
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, 0Ch
		push	esi
		lea	ecx, [ebp+hLibModule]
		mov	[ebp+hLibModule], 0FFFFFFFFh
		mov	[ebp+var_C], 0
		push	ecx		; int
		push	offset aMspst32_dll_0 ;	"MSPST32.DLL"
		call	sub_7F80C30F
		test	eax, eax
		jz	short loc_7F80C2C1

loc_7F80C29C:				; CODE XREF: sub_7F80C275+64j
		mov	esi, 80040119h

loc_7F80C2A1:				; CODE XREF: sub_7F80C275+86j
		cmp	[ebp+var_C], 0
		jz	short loc_7F80C2AF
		mov	eax, [ebp+var_C]
		push	[ebp+var_C]
		call	dword ptr [eax]

loc_7F80C2AF:				; CODE XREF: sub_7F80C275+30j
		push	[ebp+hLibModule] ; hLibModule
		call	ds:FreeLibrary

loc_7F80C2B8:				; CODE XREF: sub_7F80C275+98j
		mov	eax, esi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------

loc_7F80C2C1:				; CODE XREF: sub_7F80C275+25j
		push	offset aScgetpabimport ; "ScGetPABImporter"
		push	[ebp+hLibModule] ; hModule
		call	ds:GetProcAddress
		test	eax, eax
		jnz	short loc_7F80C2DB
		call	ds:GetLastError
		jmp	short loc_7F80C29C
; ---------------------------------------------------------------------------

loc_7F80C2DB:				; CODE XREF: sub_7F80C275+5Cj
		lea	ecx, [ebp+var_2]
		lea	edx, [ebp+var_C]
		push	ecx
		push	edx
		mov	edx, [ebp+arg_0]
		push	[ebp+arg_4]
		push	dword ptr [edx+20h]
		push	dword ptr [edx+1Ch]
		push	dword ptr [edx+18h]
		push	[ebp+hLibModule]
		call	eax
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F80C2A1
		mov	ecx, [ebp+hLibModule]
		mov	eax, [ebp+arg_8]
		mov	edx, [ebp+var_C]
		mov	[eax], ecx
		mov	ecx, [ebp+arg_C]
		mov	[ecx], edx
		jmp	short loc_7F80C2B8
sub_7F80C275	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F80C30F(LPCSTR lpLibFileName, int)
sub_7F80C30F	proc near		; CODE XREF: sub_7F80C275+1Ep

lpLibFileName	= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		push	ebp
		push	8000h		; uMode
		call	ds:SetErrorMode
		mov	edi, eax
		mov	esi, [esp+10h+arg_4]
		push	[esp+10h+lpLibFileName]	; lpLibFileName
		mov	dword ptr [esi], 0
		call	ds:LoadLibraryA
		mov	ebp, eax
		push	edi		; uMode
		call	ds:SetErrorMode
		mov	eax, 80004005h
		test	ebp, ebp
		jz	short loc_7F80C34A
		xor	eax, eax
		mov	[esi], ebp

loc_7F80C34A:				; CODE XREF: sub_7F80C30F+35j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F80C30F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80C351	proc near		; CODE XREF: sub_7F80A6DD+1Dp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		mov	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	MAPIAllocateBuffer@8
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F80C351	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80C373	proc near		; CODE XREF: sub_7F80A6DD+15p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		mov	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	MAPIAllocateMore@12
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F80C373	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80C398	proc near		; CODE XREF: sub_7F80A72A+10p

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	MAPIFreeBuffer@4
		xor	eax, eax
		retn	4
sub_7F80C398	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80C3A6	proc near		; CODE XREF: sub_7F80C62C+11Cp

Msg		= tagMSG ptr -1Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	esi
		mov	esi, [ebp+arg_0]
		test	esi, esi
		jnz	short loc_7F80C3BB
		mov	eax, 1
		jmp	short loc_7F80C405
; ---------------------------------------------------------------------------

loc_7F80C3BB:				; CODE XREF: sub_7F80C3A6+Cj
		push	1		; wRemoveMsg
		lea	ecx, [ebp+Msg]
		push	0		; wMsgFilterMax
		push	0		; wMsgFilterMin
		push	dword ptr [esi]	; hWnd
		push	ecx		; lpMsg
		call	ds:PeekMessageA
		test	eax, eax
		jz	short loc_7F80C3FB

loc_7F80C3D1:				; CODE XREF: sub_7F80C3A6+53j
		lea	eax, [ebp+Msg]
		push	eax		; lpMsg
		call	ds:TranslateMessage
		lea	eax, [ebp+Msg]
		push	eax		; lpMsg
		call	ds:DispatchMessageA
		push	1		; wRemoveMsg
		lea	ecx, [ebp+Msg]
		push	0		; wMsgFilterMax
		push	0		; wMsgFilterMin
		push	dword ptr [esi]	; hWnd
		push	ecx		; lpMsg
		call	ds:PeekMessageA
		test	eax, eax
		jnz	short loc_7F80C3D1

loc_7F80C3FB:				; CODE XREF: sub_7F80C3A6+29j
		mov	eax, [esi+30h]
		mov	dword ptr [esi+30h], 0

loc_7F80C405:				; CODE XREF: sub_7F80C3A6+13j
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F80C3A6	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F80C40C(HWND hWnd)
sub_7F80C40C	proc near		; CODE XREF: sub_7F80C519+99p

hWnd		= dword	ptr  4

		push	8		; nIndex
		push	[esp+4+hWnd]	; hWnd
		call	ds:GetWindowLongA
		test	eax, eax
		jz	short locret_7F80C423
		mov	dword ptr [eax+30h], 1

locret_7F80C423:			; CODE XREF: sub_7F80C40C+Ej
		retn	4
sub_7F80C40C	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80C426	proc near		; CODE XREF: sub_7F80C519+80p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		mov	ebx, 32Bh
		mov	edi, [esp+0Ch+arg_0]
		mov	esi, ds:GetDlgItem

loc_7F80C438:				; CODE XREF: sub_7F80C426+27j
		push	1		; bEnable
		push	ebx		; nIDDlgItem
		push	dword ptr [edi]	; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		inc	ebx
		call	ds:EnableWindow
		cmp	ebx, 32Eh
		jle	short loc_7F80C438
		mov	ebx, 3ECh
		push	ebx		; nIDDlgItem
		push	dword ptr [edi]	; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:SetFocus
		push	7F00h		; lpCursorName
		mov	eax, dword_7F833C00
		push	eax		; hInstance
		call	ds:LoadCursorA
		push	eax		; hCursor
		call	ds:SetCursor
		push	dword ptr [edi+8] ; lpString
		push	dword ptr [edi]	; hWnd
		mov	[edi+28h], eax
		call	ds:SetWindowTextA
		push	0FFFFFFFCh	; nIndex
		push	ebx		; nIDDlgItem
		push	dword ptr [edi]	; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:GetWindowLongA
		push	offset sub_7F80C77D ; dwNewLong
		mov	dword_7F833BFC,	eax
		push	0FFFFFFFCh	; nIndex
		push	ebx		; nIDDlgItem
		push	dword ptr [edi]	; hDlg
		call	esi ; GetDlgItem
		push	eax		; hWnd
		call	ds:SetWindowLongA
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_7F80C426	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80C4B4	proc near		; CODE XREF: sub_7F80C519+6Cp

Paint		= tagPAINTSTRUCT ptr -44h
hDC		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 44h
		push	ebx
		lea	eax, [ebp+Paint]
		push	esi
		mov	ebx, [ebp+arg_0]
		push	edi
		push	eax		; lpPaint
		mov	esi, [ebx]
		xor	edi, edi
		push	esi		; hWnd
		call	ds:BeginPaint
		mov	[ebp+hDC], eax
		cmp	[ebx+10h], edi
		jz	short loc_7F80C4FA
		push	2		; nIndex
		call	ds:GetSysColor
		push	eax		; color
		call	ds:CreateSolidBrush
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F80C505
		push	edi		; hbr
		add	ebx, 18h
		push	ebx		; lprc
		push	[ebp+hDC]	; hDC
		call	ds:FillRect

loc_7F80C4FA:				; CODE XREF: sub_7F80C4B4+21j
		test	edi, edi
		jz	short loc_7F80C505
		push	edi		; ho
		call	ds:DeleteObject

loc_7F80C505:				; CODE XREF: sub_7F80C4B4+36j
					; sub_7F80C4B4+48j
		lea	eax, [ebp+Paint]
		push	eax		; lpPaint
		push	esi		; hWnd
		call	ds:EndPaint
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F80C4B4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; BOOL __stdcall sub_7F80C519(HWND, UINT, WPARAM, LPARAM)
sub_7F80C519	proc near		; DATA XREF: sub_7F80C5C0+37o

hWnd		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
dwNewLong	= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		cmp	[ebp+arg_4], 110h
		mov	esi, 1
		jnz	short loc_7F80C535
		mov	ebx, [ebp+dwNewLong]
		mov	edi, [ebp+hWnd]
		jmp	short loc_7F80C543
; ---------------------------------------------------------------------------

loc_7F80C535:				; CODE XREF: sub_7F80C519+12j
		push	8		; nIndex
		mov	edi, [ebp+hWnd]
		push	edi		; hWnd
		call	ds:GetWindowLongA
		mov	ebx, eax

loc_7F80C543:				; CODE XREF: sub_7F80C519+1Aj
		mov	eax, [ebp+arg_4]
		cmp	eax, 2
		jz	short loc_7F80C567
		cmp	eax, 6
		jz	short loc_7F80C572
		cmp	eax, 0Fh
		jz	short loc_7F80C582
		cmp	eax, 110h
		jz	short loc_7F80C58C
		cmp	eax, 111h
		jz	short loc_7F80C5A2
		xor	esi, esi
		jmp	short loc_7F80C5B7
; ---------------------------------------------------------------------------

loc_7F80C567:				; CODE XREF: sub_7F80C519+30j
		push	dword ptr [ebx+28h] ; hCursor
		call	ds:SetCursor
		jmp	short loc_7F80C5B7
; ---------------------------------------------------------------------------

loc_7F80C572:				; CODE XREF: sub_7F80C519+35j
		cmp	word ptr [ebp+arg_8], 0
		jz	short loc_7F80C5B7
		push	edi		; hWnd
		call	ds:BringWindowToTop
		jmp	short loc_7F80C5B7
; ---------------------------------------------------------------------------

loc_7F80C582:				; CODE XREF: sub_7F80C519+3Aj
		push	ebx
		xor	esi, esi
		call	sub_7F80C4B4
		jmp	short loc_7F80C5B7
; ---------------------------------------------------------------------------

loc_7F80C58C:				; CODE XREF: sub_7F80C519+41j
		push	ebx		; dwNewLong
		push	8		; nIndex
		push	edi		; hWnd
		call	ds:SetWindowLongA
		push	ebx
		mov	[ebx], edi
		call	sub_7F80C426
		mov	esi, eax
		jmp	short loc_7F80C5B7
; ---------------------------------------------------------------------------

loc_7F80C5A2:				; CODE XREF: sub_7F80C519+48j
		movzx	eax, word ptr [ebp+arg_8]
		cmp	eax, 3ECh
		jz	short loc_7F80C5B1
		xor	esi, esi
		jmp	short loc_7F80C5B7
; ---------------------------------------------------------------------------

loc_7F80C5B1:				; CODE XREF: sub_7F80C519+92j
		push	edi		; hWnd
		call	sub_7F80C40C

loc_7F80C5B7:				; CODE XREF: sub_7F80C519+4Cj
					; sub_7F80C519+57j ...
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_7F80C519	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80C5C0(int, LPARAM dwInitParam, HWND hWndParent, int, int, int)
sub_7F80C5C0	proc near		; CODE XREF: ScMMFMigrateToMDB@48+23Dp
					; ScMigrateMMFPAB@32+EFp

arg_0		= dword	ptr  8
dwInitParam	= dword	ptr  0Ch
hWndParent	= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		mov	dword_7F833C00,	eax
		push	esi
		xor	eax, eax
		push	edi
		mov	esi, [ebp+dwInitParam]
		mov	edi, esi
		stosd
		mov	edi, [ebp+hWndParent]
		mov	eax, [ebp+arg_14]
		mov	[esi+4], edi
		test	eax, eax
		mov	[esi+10h], eax
		jnz	short loc_7F80C5ED
		mov	dword ptr [esi+10h], 1

loc_7F80C5ED:				; CODE XREF: sub_7F80C5C0+24j
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+arg_10]
		push	esi		; dwInitParam
		mov	[esi+8], eax
		push	offset sub_7F80C519 ; lpDialogFunc
		mov	[esi+0Ch], ecx
		push	edi		; hWndParent
		mov	eax, dword_7F833C00
		push	3E8h		; lpTemplateName
		push	eax		; hInstance
		call	ds:CreateDialogParamA
		mov	[esi], eax
		cmp	eax, 1
		sbb	esi, esi
		inc	esi
		jz	short loc_7F80C624
		push	0		; bEnable
		push	edi		; hWnd
		call	ds:EnableWindow

loc_7F80C624:				; CODE XREF: sub_7F80C5C0+59j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		retn	18h
sub_7F80C5C0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80C62C	proc near		; CODE XREF: sub_7F8023F1+38p
					; sub_7F8035B3+274p

String		= byte ptr -64h
var_24		= tagRECT ptr -24h
Rect		= tagRECT ptr -14h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 64h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		test	esi, esi
		lea	ebx, [esi+18h]
		jnz	short loc_7F80C649
		mov	eax, 1
		jmp	loc_7F80C754
; ---------------------------------------------------------------------------

loc_7F80C649:				; CODE XREF: sub_7F80C62C+11j
		mov	edi, [esi]
		mov	eax, [esi+14h]
		inc	eax
		cmp	dword ptr [esi+10h], 0
		mov	[esi+14h], eax
		jnz	short loc_7F80C65E
		lea	ecx, [eax+1]
		mov	[esi+10h], ecx

loc_7F80C65E:				; CODE XREF: sub_7F80C62C+2Aj
		sub	edx, edx
		lea	ecx, [ebp+String]
		imul	eax, 64h
		div	dword ptr [esi+10h]
		push	eax
		push	offset aD	; "%d%%"
		push	ecx		; LPSTR
		call	ds:wsprintfA
		add	esp, 0Ch
		lea	ecx, [ebp+String]
		push	ecx		; lpString
		push	3EAh		; nIDDlgItem
		push	edi		; hDlg
		call	ds:SetDlgItemTextA
		push	dword ptr [esi+14h]
		push	dword ptr [esi+0Ch] ; LPCSTR
		lea	edx, [ebp+String]
		push	edx		; LPSTR
		call	ds:wsprintfA
		add	esp, 0Ch
		lea	ecx, [ebp+String]
		push	ecx		; lpString
		push	3E9h		; nIDDlgItem
		push	edi		; hDlg
		call	ds:SetDlgItemTextA
		push	ebx		; lpRect
		push	3EBh		; nIDDlgItem
		push	edi		; hDlg
		call	ds:GetDlgItem
		push	eax		; hWnd
		call	ds:GetWindowRect
		lea	eax, [ebp+Rect]
		push	eax		; lpRect
		push	edi		; hWnd
		call	ds:GetWindowRect
		lea	ecx, [ebp+var_24]
		push	ecx		; lpRect
		push	edi		; hWnd
		call	ds:GetClientRect
		mov	eax, [ebp+Rect.right]
		sub	eax, [ebp+var_24.right]
		sub	eax, [ebp+Rect.left]
		cdq
		sub	eax, edx
		sar	eax, 1
		mov	ecx, eax
		mov	eax, [ebp+Rect.bottom]
		sub	eax, ecx
		sub	edx, edx
		sub	eax, [ebp+var_24.bottom]
		sub	eax, [ebp+Rect.top]
		mov	[ebp+var_4], eax
		mov	eax, [ebx+8]
		sub	eax, [ebx]
		imul	eax, [esi+14h]
		div	dword ptr [esi+10h]
		sub	eax, ecx
		sub	eax, [ebp+Rect.left]
		add	eax, [ebx]
		mov	[ebx+8], eax
		mov	eax, [ebx]
		sub	eax, ecx
		sub	eax, [ebp+Rect.left]
		inc	eax
		mov	[ebx], eax
		cmp	[ebx+8], eax
		jge	short loc_7F80C71E
		mov	[ebx+8], eax

loc_7F80C71E:				; CODE XREF: sub_7F80C62C+EDj
		mov	eax, [ebp+var_4]
		add	eax, [ebp+Rect.top]
		push	0		; bErase
		inc	eax
		push	ebx		; lpRect
		push	edi		; hWnd
		sub	[ebx+0Ch], eax
		mov	eax, 8
		sub	eax, [ebp+var_4]
		sub	eax, [ebp+Rect.top]
		add	[ebx+4], eax
		call	ds:InvalidateRect
		push	edi		; hWnd
		call	ds:UpdateWindow
		push	esi
		call	sub_7F80C3A6
		cmp	eax, 1
		sbb	eax, eax
		neg	eax

loc_7F80C754:				; CODE XREF: sub_7F80C62C+18j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F80C62C	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80C75D	proc near		; CODE XREF: ScMMFMigrateToMDB@48+2B8p
					; ScMigrateMMFPAB@32+123p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_7F80C779
		push	1		; bEnable
		push	dword ptr [esi+4] ; hWnd
		call	ds:EnableWindow
		push	dword ptr [esi]	; hWnd
		call	ds:DestroyWindow

loc_7F80C779:				; CODE XREF: sub_7F80C75D+7j
		pop	esi
		retn	4
sub_7F80C75D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80C77D(HWND hWnd,	UINT Msg, WPARAM wParam, LPARAM	lParam)
sub_7F80C77D	proc near		; DATA XREF: sub_7F80C426+6Eo

hWnd		= dword	ptr  8
Msg		= dword	ptr  0Ch
wParam		= dword	ptr  10h
lParam		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		cmp	[esp+Msg], 100h
		jnz	short loc_7F80C7B2
		cmp	[ebp+wParam], 0Dh
		jz	short loc_7F80C796
		cmp	[ebp+wParam], 1Bh
		jnz	short loc_7F80C7B2

loc_7F80C796:				; CODE XREF: sub_7F80C77D+11j
		push	0		; lParam
		push	3ECh		; wParam
		push	111h		; Msg
		push	[ebp+hWnd]	; hWnd
		call	ds:GetParent
		push	eax		; hWnd
		call	ds:PostMessageA

loc_7F80C7B2:				; CODE XREF: sub_7F80C77D+Bj
					; sub_7F80C77D+17j
		push	[ebp+lParam]	; lParam
		push	[ebp+wParam]	; wParam
		push	[ebp+Msg]	; Msg
		push	[ebp+hWnd]	; hWnd
		push	dword_7F833BFC	; lpPrevWndFunc
		call	ds:CallWindowProcA
		pop	ebp
		retn	10h
sub_7F80C77D	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80C7CE	proc near		; CODE XREF: sub_7F808498+25Fp
					; sub_7F80C828+9p
		mov	eax, dword_7F835554
		test	al, 1
		jnz	short loc_7F80C7EB
		test	eax, eax
		jnz	short loc_7F80C7E4
		call	sub_7F80C7F1
		test	eax, eax
		jnz	short loc_7F80C7EB

loc_7F80C7E4:				; CODE XREF: sub_7F80C7CE+Bj
		mov	eax, 3
		jmp	short locret_7F80C7F0
; ---------------------------------------------------------------------------

loc_7F80C7EB:				; CODE XREF: sub_7F80C7CE+7j
					; sub_7F80C7CE+14j
		mov	eax, VersionInformation.dwMajorVersion

locret_7F80C7F0:			; CODE XREF: sub_7F80C7CE+1Bj
		retn
sub_7F80C7CE	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80C7F1	proc near		; CODE XREF: sub_7F80C7CE+Dp
		mov	VersionInformation.dwOSVersionInfoSize,	94h
		push	esi
		push	offset VersionInformation ; lpVersionInformation
		xor	esi, esi
		call	ds:GetVersionExA
		test	eax, eax
		jz	short loc_7F80C81A
		mov	esi, 1
		mov	dword_7F835554,	esi
		jmp	short loc_7F80C824
; ---------------------------------------------------------------------------

loc_7F80C81A:				; CODE XREF: sub_7F80C7F1+1Aj
		mov	dword_7F835554,	80000000h

loc_7F80C824:				; CODE XREF: sub_7F80C7F1+27j
		mov	eax, esi
		pop	esi
		retn
sub_7F80C7F1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80C828	proc near		; CODE XREF: sub_7F80577A+4Cp

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		call	sub_7F80C7CE
		mov	esi, [ebp+arg_0]
		cmp	eax, 4
		jb	short loc_7F80C84A
		xor	eax, eax
		mov	[esi+4], eax
		mov	[esi], eax
		jmp	loc_7F80C92A
; ---------------------------------------------------------------------------

loc_7F80C84A:				; CODE XREF: sub_7F80C828+14j
		mov	edi, esi
		xor	eax, eax
		mov	ecx, 8
		push	offset aCtl3d32_dll ; "ctl3d32.dll"
		rep stosd
		call	ds:LoadLibraryA
		mov	edi, eax
		test	edi, edi
		jz	loc_7F80C91A
		push	offset aCtl3dgetver ; "Ctl3dGetVer"
		mov	ebx, ds:GetProcAddress
		push	edi		; hModule
		call	ebx ; GetProcAddress
		call	eax
		cmp	eax, 220h
		jl	loc_7F80C91A
		mov	eax, [ebp+arg_4]
		push	offset aCtl3denabled ; "Ctl3dEnabled"
		push	edi		; hModule
		mov	[esi+4], eax
		call	ebx ; GetProcAddress
		push	offset aCtl3dregister ;	"Ctl3dRegister"
		mov	[ebp+var_8], eax
		push	edi		; hModule
		call	ebx ; GetProcAddress
		push	offset aCtl3dautosubcl ; "Ctl3dAutoSubclass"
		mov	[ebp+var_4], eax
		push	edi		; hModule
		call	ebx ; GetProcAddress
		push	offset aCtl3dunautosub ; "Ctl3dUnAutoSubclass"
		mov	[esi+0Ch], eax
		push	edi		; hModule
		call	ebx ; GetProcAddress
		push	offset aCtl3dsubclassd ; "Ctl3dSubclassDlgEx"
		mov	[esi+10h], eax
		push	edi		; hModule
		call	ebx ; GetProcAddress
		push	offset aCtl3dunregiste ; "Ctl3dUnregister"
		mov	[esi+14h], eax
		push	edi		; hModule
		call	ebx ; GetProcAddress
		push	offset aCtl3dcolorchan ; "Ctl3dColorChange"
		mov	[esi+18h], eax
		push	edi		; hModule
		call	ebx ; GetProcAddress
		cmp	[ebp+var_8], 0
		mov	[esi+1Ch], eax
		jz	short loc_7F80C91A
		cmp	[ebp+var_4], 0
		jz	short loc_7F80C91A
		cmp	dword ptr [esi+18h], 0
		jz	short loc_7F80C91A
		cmp	dword ptr [esi+0Ch], 0
		jz	short loc_7F80C91A
		cmp	dword ptr [esi+10h], 0
		jz	short loc_7F80C91A
		cmp	dword ptr [esi+14h], 0
		jz	short loc_7F80C91A
		test	eax, eax
		jz	short loc_7F80C91A
		call	[ebp+var_8]
		test	eax, eax
		jnz	short loc_7F80C918
		push	dword ptr [esi+4]
		call	[ebp+var_4]
		test	eax, eax
		jz	short loc_7F80C91A
		mov	dword ptr [esi+8], 1

loc_7F80C918:				; CODE XREF: sub_7F80C828+DDj
		mov	[esi], edi

loc_7F80C91A:				; CODE XREF: sub_7F80C828+3Cj
					; sub_7F80C828+57j ...
		cmp	dword ptr [esi], 0
		jnz	short loc_7F80C92A
		test	edi, edi
		jz	short loc_7F80C92A
		push	edi		; hLibModule
		call	ds:FreeLibrary

loc_7F80C92A:				; CODE XREF: sub_7F80C828+1Dj
					; sub_7F80C828+F5j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F80C828	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80C933	proc near		; CODE XREF: sub_7F80577A+A2p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	dword ptr [esi], 0
		jz	short loc_7F80C951
		cmp	dword ptr [esi+8], 0
		jz	short loc_7F80C949
		push	dword ptr [esi+4]
		call	dword ptr [esi+18h]

loc_7F80C949:				; CODE XREF: sub_7F80C933+Ej
		push	dword ptr [esi]	; hLibModule
		call	ds:FreeLibrary

loc_7F80C951:				; CODE XREF: sub_7F80C933+8j
		pop	esi
		retn	4
sub_7F80C933	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80C955	proc near		; CODE XREF: sub_7F80577A+55p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	dword ptr [eax], 0
		jz	short loc_7F80C966
		push	dword ptr [eax+4]
		call	dword ptr [eax+0Ch]
		jmp	short locret_7F80C96B
; ---------------------------------------------------------------------------

loc_7F80C966:				; CODE XREF: sub_7F80C955+7j
		mov	eax, 1

locret_7F80C96B:			; CODE XREF: sub_7F80C955+Fj
		retn	4
sub_7F80C955	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80C96E(int, int, LPCSTR lpString,	int, int, int, int, int)
sub_7F80C96E	proc near		; CODE XREF: sub_7F8028D4+61p

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
lpString	= 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, 0Ch
		push	ebx
		mov	ecx, [ebp+arg_1C]
		push	esi
		lea	eax, [ebp+var_4]
		push	edi
		xor	esi, esi
		push	eax
		mov	ebx, [ebp+arg_0]
		push	64h
		mov	[ebp+var_4], esi
		mov	[ecx], esi
		call	dword ptr [ebx]
		mov	[ebp+var_8], eax
		cmp	eax, esi
		jl	loc_7F80CAF5
		mov	edi, [ebp+var_4]
		xor	eax, eax
		mov	ecx, 19h
		rep stosd
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+arg_0]
		mov	[ecx], esi
		mov	eax, [ebp+arg_18]
		mov	[ecx+4], esi
		mov	[ecx+8], esi
		mov	[ecx+0Ch], esi
		mov	[ecx+10h], esi
		mov	[ecx+2Ch], edx
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+arg_14]
		mov	[ecx+48h], eax
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_4]
		mov	[ecx+40h], edx
		mov	ecx, [ebp+var_4]
		mov	[ecx+44h], eax
		mov	ecx, [ebp+arg_10]
		mov	edx, [ebp+var_4]
		mov	[edx+4Ch], ecx
		mov	edx, [ebp+var_4]
		cmp	[edx+4Ch], esi
		jz	loc_7F80CAEB
		mov	eax, 1
		cmp	[ebp+lpString],	esi
		jz	short loc_7F80C9FE
		push	[ebp+lpString]	; lpString
		call	ds:lstrlenA
		inc	eax

loc_7F80C9FE:				; CODE XREF: sub_7F80C96E+84j
		add	eax, 1Ch
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_4]
		add	eax, 58h
		push	eax
		push	[ebp+var_C]
		push	[ebp+var_4]
		call	sub_7F80FD38
		mov	[ebp+var_8], eax
		test	eax, eax
		jl	loc_7F80CAF5
		mov	ebx, [ebp+arg_C]
		mov	eax, [ebp+var_4]
		test	ebx, ebx
		jnz	short loc_7F80CA67
		mov	ebx, [eax+58h]
		mov	byte ptr [ebx+3], 0
		lea	ecx, [ebx+4]
		mov	edx, [ebp+arg_10]
		mov	byte ptr [ebx+2], 0
		mov	byte ptr [ebx+1], 0
		push	ecx
		mov	byte ptr [ebx],	0
		mov	esi, [edx]
		push	[ebp+arg_10]
		call	dword ptr [esi+2Ch]
		mov	[ebp+var_8], eax
		test	eax, eax
		jl	loc_7F80CAF5
		mov	dword ptr [ebx+14h], 1
		mov	dword ptr [ebx+18h], 64694881h
		jmp	short loc_7F80CA73
; ---------------------------------------------------------------------------

loc_7F80CA67:				; CODE XREF: sub_7F80C96E+BBj
		mov	edi, [eax+58h]
		mov	esi, ebx
		mov	ecx, 7
		rep movsd

loc_7F80CA73:				; CODE XREF: sub_7F80C96E+F7j
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_4]
		mov	eax, [eax+58h]
		add	eax, 1Ch
		cmp	[ebp+lpString],	0
		mov	[ecx+54h], eax
		jz	short loc_7F80CAB0
		mov	edi, [ebp+lpString]
		mov	ecx, 0FFFFFFFFh
		sub	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	edx, ecx
		mov	eax, [ebp+var_4]
		shr	ecx, 2
		mov	esi, edi
		mov	edi, [eax+54h]
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		jmp	short loc_7F80CAB9
; ---------------------------------------------------------------------------

loc_7F80CAB0:				; CODE XREF: sub_7F80C96E+118j
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+54h]
		mov	byte ptr [ecx],	0

loc_7F80CAB9:				; CODE XREF: sub_7F80C96E+140j
		mov	eax, [ebp+var_4]
		add	eax, 60h
		push	eax
		mov	eax, [ebp+var_4]
		add	eax, 5Ch
		mov	edx, [ebp+arg_10]
		push	eax
		push	ebx
		push	[ebp+var_C]
		mov	ebx, [edx]
		push	[ebp+arg_10]
		call	dword ptr [ebx+0A0h]
		mov	[ebp+var_8], eax
		test	eax, eax
		jl	short loc_7F80CAF5
		mov	ecx, [ebp+arg_10]
		push	[ebp+arg_10]
		mov	ebx, [ecx]
		call	dword ptr [ebx+4]

loc_7F80CAEB:				; CODE XREF: sub_7F80C96E+76j
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_1C]
		mov	[ecx], eax
		jmp	short loc_7F80CB26
; ---------------------------------------------------------------------------

loc_7F80CAF5:				; CODE XREF: sub_7F80C96E+23j
					; sub_7F80C96E+ADj ...
		cmp	[ebp+var_4], 0
		jz	short loc_7F80CB26
		mov	eax, [ebp+var_4]
		mov	eax, [eax+58h]
		test	eax, eax
		jz	short loc_7F80CB0C
		push	eax
		mov	ebx, [ebp+arg_0]
		call	dword ptr [ebx+8]

loc_7F80CB0C:				; CODE XREF: sub_7F80C96E+195j
		mov	eax, [ebp+var_4]
		mov	eax, [eax+60h]
		test	eax, eax
		jz	short loc_7F80CB1D
		push	eax
		mov	ebx, [ebp+arg_0]
		call	dword ptr [ebx+8]

loc_7F80CB1D:				; CODE XREF: sub_7F80C96E+1A6j
		mov	ebx, [ebp+arg_0]
		push	[ebp+var_4]
		call	dword ptr [ebx+8]

loc_7F80CB26:				; CODE XREF: sub_7F80C96E+185j
					; sub_7F80C96E+18Bj
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	20h
sub_7F80C96E	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80CB32	proc near		; CODE XREF: ScMMFVerify@16+FFp
					; ScMMFMigrateToMDB@48+2A1p

var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		sub	esp, 4
		push	ebx
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		push	edi
		push	ebp
		xor	ebp, ebp
		test	esi, esi
		jz	short loc_7F80CBAB
		mov	edi, [esi+4Ch]
		lea	ebx, [esi+44h]
		cmp	[ebx], ebp
		jz	short loc_7F80CB55
		push	ebx
		call	sub_7F820C0E
		mov	[ebx], ebp

loc_7F80CB55:				; CODE XREF: sub_7F80CB32+19j
		test	byte ptr [esi+48h], 20h
		jnz	short loc_7F80CB77
		test	edi, edi
		jz	short loc_7F80CB77
		mov	[esp+14h+var_4], 8
		lea	eax, [esp+14h+var_4]
		mov	ebx, [edi]
		push	eax
		push	dword ptr [esi+4Ch]
		call	dword ptr [ebx+98h]

loc_7F80CB77:				; CODE XREF: sub_7F80CB32+27j
					; sub_7F80CB32+2Bj
		push	dword ptr [esi+60h]
		push	esi
		call	sub_7F80FD78
		push	dword ptr [esi+58h]
		push	esi
		call	sub_7F80FD78
		mov	eax, [esi+40h]
		xor	ecx, ecx
		test	eax, eax
		jz	short loc_7F80CB95
		mov	[eax+48h], ecx

loc_7F80CB95:				; CODE XREF: sub_7F80CB32+5Ej
		xor	eax, eax
		mov	[esi], eax
		cmp	[esi+8], eax
		jnz	short loc_7F80CBA5
		push	esi
		push	esi
		call	sub_7F80FD78

loc_7F80CBA5:				; CODE XREF: sub_7F80CB32+6Aj
		push	edi
		call	UlRelease@4

loc_7F80CBAB:				; CODE XREF: sub_7F80CB32+Fj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn	4
sub_7F80CB32	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80CBB5	proc near		; CODE XREF: sub_7F802DB7+352p

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
lpString	= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 1Ch
		mov	[ebp+var_2], ax
		push	ebx
		push	esi
		mov	ecx, [ebp+arg_14]
		push	edi
		mov	[ebp+var_C], eax
		mov	edx, [ebp+arg_18]
		mov	[ebp+lpString],	eax
		mov	[ebp+var_1C], eax
		mov	[ecx], eax
		mov	[edx], eax
		cmp	[ebp+arg_4], eax
		jz	short loc_7F80CBFA
		mov	eax, [ebp+arg_4]
		mov	ecx, 0FFFFFFFFh
		add	eax, 2
		mov	edi, eax
		mov	[ebp+lpString],	eax
		sub	eax, eax
		repne scasb
		not	ecx
		mov	eax, [ebp+lpString]
		add	eax, ecx
		mov	[ebp+var_1C], eax

loc_7F80CBFA:				; CODE XREF: sub_7F80CBB5+25j
		mov	eax, [ebp+arg_10]
		xor	esi, esi
		push	[ebp+arg_18]
		push	esi
		mov	ecx, [eax]
		shl	ecx, 4
		push	ecx
		push	[ebp+arg_C]
		call	sub_7F80FD4C
		mov	[ebp+var_8], eax
		cmp	eax, esi
		jl	loc_7F80CD51
		mov	ecx, [ebp+arg_18]
		mov	eax, [ebp+arg_10]
		mov	ebx, [ecx]
		mov	ecx, [eax]
		add	eax, 4
		mov	[ebp+var_14], ecx
		mov	[ebp+var_18], eax
		cmp	ecx, esi
		jz	loc_7F80D06D

loc_7F80CC37:				; CODE XREF: sub_7F80CBB5+4B2j
		mov	eax, [ebp+var_18]
		mov	ecx, [eax]
		mov	[ebx], ecx
		mov	eax, [eax]
		shr	eax, 10h
		cmp	eax, 0FF7h
		ja	short loc_7F80CC60
		jz	loc_7F80CD8D
		cmp	eax, 0E09h
		jz	loc_7F80CD02
		jmp	loc_7F80CCE8
; ---------------------------------------------------------------------------

loc_7F80CC60:				; CODE XREF: sub_7F80CBB5+93j
		cmp	eax, 3001h
		ja	short loc_7F80CCA6
		jz	loc_7F80CEBE
		cmp	eax, 0FF9h
		jz	loc_7F80CDA4
		cmp	eax, 0FFAh
		jz	loc_7F80CDE8
		cmp	eax, 0FFBh
		jz	loc_7F80CE32
		cmp	eax, 0FFEh
		jz	loc_7F80CEA7
		cmp	eax, 0FFFh
		jz	loc_7F80CDA4
		jmp	short loc_7F80CCE8
; ---------------------------------------------------------------------------

loc_7F80CCA6:				; CODE XREF: sub_7F80CBB5+B0j
		cmp	eax, 3004h
		jz	loc_7F80CF35
		cmp	eax, 3005h
		jz	loc_7F80CFAC
		cmp	eax, 3601h
		jz	loc_7F80CFC3
		cmp	eax, 3603h
		jz	loc_7F80CFE3
		cmp	eax, 360Ah
		jz	loc_7F80D026
		cmp	eax, 360Bh
		jz	loc_7F80D047

loc_7F80CCE8:				; CODE XREF: sub_7F80CBB5+A6j
					; sub_7F80CBB5+EFj
		and	ecx, 0FFFF000Ah
		inc	[ebp+var_C]
		or	cl, 0Ah
		mov	[ebx], ecx
		mov	dword ptr [ebx+8], 8004010Fh
		jmp	loc_7F80D059
; ---------------------------------------------------------------------------

loc_7F80CD02:				; CODE XREF: sub_7F80CBB5+A0j
		xor	eax, eax
		cmp	[ebp+arg_4], eax
		jz	short loc_7F80CD73
		mov	edx, [ebp+arg_C]
		cmp	[edx+58h], eax
		jz	short loc_7F80CD73
		cmp	[ebp+arg_8], eax
		jnz	short loc_7F80CD1D
		mov	[ebp+arg_8], 4D504981h

loc_7F80CD1D:				; CODE XREF: sub_7F80CBB5+15Fj
		and	ecx, 0FFFF0102h
		lea	eax, [ebx+0Ch]
		or	ecx, 102h
		push	eax
		push	[ebp+arg_8]
		mov	[ebx], ecx
		mov	dword ptr [ebx+8], 1Ch

loc_7F80CD39:				; CODE XREF: sub_7F80CBB5+22Ej
					; sub_7F80CBB5+278j
		mov	edx, [ebp+arg_18]
		push	dword ptr [edx]
		push	[ebp+arg_C]
		call	sub_7F80F869
		mov	[ebp+var_8], eax
		test	eax, eax
		jge	loc_7F80D059

loc_7F80CD51:				; CODE XREF: sub_7F80CBB5+61j
					; sub_7F80CBB5+2CEj ...
		mov	ecx, [ebp+arg_18]
		push	dword ptr [ecx]
		push	[ebp+arg_C]
		call	sub_7F80FD78
		mov	ecx, [ebp+arg_18]
		mov	dword ptr [ecx], 0

loc_7F80CD67:				; CODE XREF: sub_7F80CBB5+4C6j
					; sub_7F80CBB5+4D3j
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	1Ch
; ---------------------------------------------------------------------------

loc_7F80CD73:				; CODE XREF: sub_7F80CBB5+152j
					; sub_7F80CBB5+15Aj
		and	ecx, 0FFFF000Ah
		inc	[ebp+var_C]
		or	cl, 0Ah
		mov	[ebx], ecx
		mov	dword ptr [ebx+8], 8004010Fh
		jmp	loc_7F80D059
; ---------------------------------------------------------------------------

loc_7F80CD8D:				; CODE XREF: sub_7F80CBB5+95j
		and	ecx, 0FFFF0003h
		or	cl, 3
		mov	[ebx], ecx
		mov	dword ptr [ebx+8], 1
		jmp	loc_7F80D059
; ---------------------------------------------------------------------------

loc_7F80CDA4:				; CODE XREF: sub_7F80CBB5+BDj
					; sub_7F80CBB5+E9j
		mov	edx, [ebp+arg_C]
		cmp	dword ptr [edx+58h], 0
		jnz	short loc_7F80CDC7
		and	ecx, 0FFFF000Ah
		inc	[ebp+var_C]
		or	cl, 0Ah
		mov	[ebx], ecx
		mov	dword ptr [ebx+8], 8004010Fh
		jmp	loc_7F80D059
; ---------------------------------------------------------------------------

loc_7F80CDC7:				; CODE XREF: sub_7F80CBB5+1F6j
		and	ecx, 0FFFF0102h
		lea	eax, [ebx+0Ch]
		or	ecx, 102h
		push	eax
		push	[ebp+arg_0]
		mov	[ebx], ecx
		mov	dword ptr [ebx+8], 1Ch
		jmp	loc_7F80CD39
; ---------------------------------------------------------------------------

loc_7F80CDE8:				; CODE XREF: sub_7F80CBB5+C8j
		mov	edx, [ebp+arg_C]
		cmp	dword ptr [edx+58h], 0
		jnz	short loc_7F80CE0B
		and	ecx, 0FFFF000Ah
		inc	[ebp+var_C]
		or	cl, 0Ah
		mov	[ebx], ecx
		mov	dword ptr [ebx+8], 8004010Fh
		jmp	loc_7F80D059
; ---------------------------------------------------------------------------

loc_7F80CE0B:				; CODE XREF: sub_7F80CBB5+23Aj
		and	ecx, 0FFFF0102h
		lea	eax, [ebx+0Ch]
		or	ecx, 102h
		push	eax
		mov	edx, [ebp+arg_C]
		mov	[ebx], ecx
		mov	dword ptr [ebx+8], 1Ch
		mov	ecx, [edx+58h]
		push	dword ptr [ecx+18h]
		jmp	loc_7F80CD39
; ---------------------------------------------------------------------------

loc_7F80CE32:				; CODE XREF: sub_7F80CBB5+D3j
		mov	edx, [ebp+arg_C]
		cmp	dword ptr [edx+60h], 0
		jnz	short loc_7F80CE55
		and	ecx, 0FFFF000Ah
		inc	[ebp+var_C]
		or	cl, 0Ah
		mov	[ebx], ecx
		mov	dword ptr [ebx+8], 8004010Fh
		jmp	loc_7F80D059
; ---------------------------------------------------------------------------

loc_7F80CE55:				; CODE XREF: sub_7F80CBB5+284j
		and	ecx, 0FFFF0102h
		mov	edx, [ebp+arg_C]
		or	ecx, 102h
		lea	esi, [ebx+0Ch]
		push	esi
		mov	[ebx], ecx
		mov	edx, [edx+5Ch]
		mov	ecx, [ebp+arg_18]
		mov	[ebx+8], edx
		push	dword ptr [ecx]
		push	edx
		push	[ebp+arg_C]
		call	sub_7F80FD4C
		mov	[ebp+var_8], eax
		test	eax, eax
		jl	loc_7F80CD51
		mov	eax, [ebx+8]
		mov	edi, [esi]
		mov	edx, [ebp+arg_C]
		mov	ecx, eax
		shr	ecx, 2
		mov	esi, [edx+60h]
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		jmp	loc_7F80D059
; ---------------------------------------------------------------------------

loc_7F80CEA7:				; CODE XREF: sub_7F80CBB5+DEj
		and	ecx, 0FFFF0003h
		or	cl, 3
		mov	[ebx], ecx
		mov	dword ptr [ebx+8], 3
		jmp	loc_7F80D059
; ---------------------------------------------------------------------------

loc_7F80CEBE:				; CODE XREF: sub_7F80CBB5+B2j
		and	ecx, 0FFFF001Eh
		or	cl, 1Eh
		cmp	[ebp+arg_4], 0
		mov	[ebx], ecx
		jnz	short loc_7F80CEE6
		and	ecx, 0FFFF000Ah
		or	cl, 0Ah
		mov	[ebx], ecx
		mov	dword ptr [ebx+8], 8004010Fh
		jmp	loc_7F80D059
; ---------------------------------------------------------------------------

loc_7F80CEE6:				; CODE XREF: sub_7F80CBB5+318j
		lea	eax, [ebx+8]
		mov	ecx, [ebp+arg_18]
		push	eax
		push	dword ptr [ecx]
		push	[ebp+lpString]	; lpString
		call	ds:lstrlenA
		inc	eax
		push	eax
		push	[ebp+arg_C]
		call	sub_7F80FD4C
		mov	[ebp+var_8], eax
		test	eax, eax
		jl	loc_7F80CD51
		mov	edi, [ebp+lpString]
		mov	ecx, 0FFFFFFFFh
		sub	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	eax, ecx
		shr	ecx, 2
		mov	esi, edi
		mov	edi, [ebx+8]
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		jmp	loc_7F80D059
; ---------------------------------------------------------------------------

loc_7F80CF35:				; CODE XREF: sub_7F80CBB5+F6j
		and	ecx, 0FFFF001Eh
		or	cl, 1Eh
		cmp	[ebp+arg_4], 0
		mov	[ebx], ecx
		jnz	short loc_7F80CF5D
		and	ecx, 0FFFF000Ah
		or	cl, 0Ah
		mov	[ebx], ecx
		mov	dword ptr [ebx+8], 8004010Fh
		jmp	loc_7F80D059
; ---------------------------------------------------------------------------

loc_7F80CF5D:				; CODE XREF: sub_7F80CBB5+38Fj
		lea	eax, [ebx+8]
		mov	ecx, [ebp+arg_18]
		push	eax
		push	dword ptr [ecx]
		push	[ebp+var_1C]	; lpString
		call	ds:lstrlenA
		inc	eax
		push	eax
		push	[ebp+arg_C]
		call	sub_7F80FD4C
		mov	[ebp+var_8], eax
		test	eax, eax
		jl	loc_7F80CD51
		mov	edi, [ebp+var_1C]
		mov	ecx, 0FFFFFFFFh
		sub	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	eax, ecx
		shr	ecx, 2
		mov	esi, edi
		mov	edi, [ebx+8]
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		jmp	loc_7F80D059
; ---------------------------------------------------------------------------

loc_7F80CFAC:				; CODE XREF: sub_7F80CBB5+101j
		and	ecx, 0FFFF0003h
		or	cl, 3
		mov	[ebx], ecx
		mov	dword ptr [ebx+8], 1
		jmp	loc_7F80D059
; ---------------------------------------------------------------------------

loc_7F80CFC3:				; CODE XREF: sub_7F80CBB5+10Cj
		and	ecx, 0FFFF0003h
		xor	eax, eax
		or	cl, 3
		cmp	[ebp+arg_4], eax
		mov	[ebx], ecx
		jnz	short loc_7F80CFDA
		mov	[ebx+8], eax
		jmp	short loc_7F80D059
; ---------------------------------------------------------------------------

loc_7F80CFDA:				; CODE XREF: sub_7F80CBB5+41Ej
		mov	dword ptr [ebx+8], 1
		jmp	short loc_7F80D059
; ---------------------------------------------------------------------------

loc_7F80CFE3:				; CODE XREF: sub_7F80CBB5+117j
		and	ecx, 0FFFF0003h
		xor	eax, eax
		or	cl, 3
		cmp	[ebp+arg_4], eax
		mov	[ebx], ecx
		jnz	short loc_7F80CFFA
		mov	[ebx+8], eax
		jmp	short loc_7F80D059
; ---------------------------------------------------------------------------

loc_7F80CFFA:				; CODE XREF: sub_7F80CBB5+43Ej
		lea	eax, [ebp+var_2]
		mov	edx, [ebp+arg_C]
		push	eax
		push	[ebp+arg_0]
		push	dword ptr [edx+44h]
		call	sub_7F82C3A8
		push	eax
		call	sub_7F80F8B4
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	loc_7F80CD51
		movsx	eax, [ebp+var_2]
		mov	[ebx+8], eax
		jmp	short loc_7F80D059
; ---------------------------------------------------------------------------

loc_7F80D026:				; CODE XREF: sub_7F80CBB5+122j
		and	ecx, 0FFFF000Bh
		or	cl, 0Bh
		cmp	[ebp+arg_4], 0
		mov	[ebx], ecx
		jnz	short loc_7F80D03F
		mov	word ptr [ebx+8], 1
		jmp	short loc_7F80D059
; ---------------------------------------------------------------------------

loc_7F80D03F:				; CODE XREF: sub_7F80CBB5+480j
		mov	word ptr [ebx+8], 0
		jmp	short loc_7F80D059
; ---------------------------------------------------------------------------

loc_7F80D047:				; CODE XREF: sub_7F80CBB5+12Dj
		and	ecx, 0FFFF0003h
		or	cl, 3
		mov	[ebx], ecx
		mov	dword ptr [ebx+8], 0

loc_7F80D059:				; CODE XREF: sub_7F80CBB5+148j
					; sub_7F80CBB5+196j ...
		add	ebx, 10h
		dec	[ebp+var_14]
		add	[ebp+var_18], 4
		cmp	[ebp+var_14], 0
		jnz	loc_7F80CC37

loc_7F80D06D:				; CODE XREF: sub_7F80CBB5+7Cj
		mov	eax, [ebp+arg_10]
		mov	ecx, [ebp+arg_14]
		cmp	[ebp+var_C], 0
		mov	edx, [eax]
		mov	[ecx], edx
		jz	loc_7F80CD67
		mov	[ebp+var_8], 40380h
		jmp	loc_7F80CD67
sub_7F80CBB5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80D08D	proc near		; CODE XREF: sub_7F8035B3+116p

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, 10h
		push	ebx
		mov	ecx, [ebp+arg_C]
		push	esi
		xor	ebx, ebx
		push	edi
		mov	esi, [ebp+arg_0]
		lea	eax, [ebp+var_10]
		mov	[ebp+var_C], ebx
		push	eax
		mov	[ebp+var_4], ebx
		push	[ebp+arg_4]
		mov	[ecx], ebx
		push	dword ptr [esi+44h]
		call	sub_7F82D073
		push	eax
		call	sub_7F80F8B4
		mov	[ebp+var_8], eax
		cmp	eax, ebx
		jl	loc_7F80D174
		push	ebx
		lea	eax, [ebp+var_C]
		push	ebx
		lea	ecx, [ebp+arg_4]
		push	eax
		push	ebx
		push	ecx
		push	[ebp+var_10]
		push	dword ptr [esi+44h]
		call	sub_7F81028C
		push	eax
		call	sub_7F80F8B4
		mov	[ebp+var_8], eax
		cmp	eax, ebx
		jl	loc_7F80D174
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	68h
		push	esi
		call	sub_7F80FD4C
		mov	[ebp+var_8], eax
		cmp	eax, ebx
		jl	short loc_7F80D174
		mov	edi, [ebp+var_4]
		xor	eax, eax
		mov	ecx, 1Ah
		rep stosd
		mov	ecx, [ebp+var_4]
		mov	eax, [esi+2Ch]
		mov	[ecx], ebx
		mov	[ecx+4], ebx
		mov	[ecx+8], ebx
		mov	[ecx+0Ch], ebx
		mov	[ecx+10h], ebx
		mov	[ecx+2Ch], eax
		mov	ecx, [ebp+var_4]
		mov	[ecx+40h], esi
		mov	ecx, [ebp+var_4]
		mov	[ecx+44h], esi
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+var_C]
		mov	[ecx+48h], eax
		mov	ecx, [ebp+var_4]
		mov	[ecx+58h], ebx
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_8]
		mov	[ecx+5Ch], ebx
		mov	ecx, [ebp+var_4]
		push	ebx
		push	esi
		mov	[ecx+60h], ebx
		mov	ecx, [ebp+var_4]
		mov	[ecx+64h], ebx
		mov	ecx, [ebp+var_4]
		mov	[ecx+50h], eax
		push	[ebp+var_4]
		call	sub_7F80E354
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+arg_C]
		mov	[ecx+54h], eax
		mov	eax, [ebp+var_4]
		mov	[edx], eax
		jmp	short loc_7F80D18E
; ---------------------------------------------------------------------------

loc_7F80D174:				; CODE XREF: sub_7F80D08D+33j
					; sub_7F80D08D+5Aj ...
		push	[ebp+var_4]
		push	esi
		call	sub_7F80FD78
		cmp	[ebp+var_C], 0
		jz	short loc_7F80D18E
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_7F810922

loc_7F80D18E:				; CODE XREF: sub_7F80D08D+E5j
					; sub_7F80D08D+F4j
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F80D08D	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80D19A	proc near		; CODE XREF: sub_7F8035B3+1D9p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, [esp+8+arg_0]
		xor	edi, edi
		test	esi, esi
		jz	short loc_7F80D1EE
		mov	eax, [esi+60h]
		test	eax, eax
		jz	short loc_7F80D1B9
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]
		mov	[esi+64h], edi
		mov	[esi+60h], edi

loc_7F80D1B9:				; CODE XREF: sub_7F80D19A+11j
		mov	eax, [esi+58h]
		xor	edi, edi
		test	eax, eax
		jz	short loc_7F80D1CE
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+8]
		mov	[esi+5Ch], edi
		mov	[esi+58h], edi

loc_7F80D1CE:				; CODE XREF: sub_7F80D19A+26j
		lea	eax, [esi+48h]
		cmp	dword ptr [eax], 0
		jz	short loc_7F80D1DE
		push	0
		push	eax
		call	sub_7F810922

loc_7F80D1DE:				; CODE XREF: sub_7F80D19A+3Aj
		xor	eax, eax
		mov	[esi], eax
		cmp	[esi+8], eax
		jnz	short loc_7F80D1EE
		push	esi
		push	esi
		call	sub_7F80FD78

loc_7F80D1EE:				; CODE XREF: sub_7F80D19A+Aj
					; sub_7F80D19A+4Bj
		pop	edi
		pop	esi
		retn	4
sub_7F80D19A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80D1F3	proc near		; CODE XREF: sub_7F8035B3+153p
					; sub_7F8045B6+102p

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	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 18h
		mov	ecx, [eax+44h]
		push	ebx
		push	esi
		mov	edx, [ebp+arg_4]
		push	edi
		mov	[ebp+var_8], ecx
		push	[ebp+arg_C]
		push	0
		mov	[ebp+var_C], 0
		mov	eax, [edx]
		shl	eax, 4
		push	eax
		push	ecx
		call	sub_7F80FD4C
		mov	[ebp+var_4], eax
		test	eax, eax
		jl	loc_7F80D391
		mov	ecx, [ebp+arg_C]
		mov	eax, [ebp+arg_4]
		mov	ebx, [ecx]
		mov	ecx, [eax]
		add	eax, 4
		mov	[ebp+var_14], ecx
		mov	[ebp+var_10], eax
		test	ecx, ecx
		jz	short loc_7F80D2A9

loc_7F80D243:				; CODE XREF: sub_7F80D1F3+B4j
		mov	eax, [ebp+var_10]
		mov	edx, [eax]
		mov	[ebx], edx
		mov	eax, [eax]
		shr	eax, 10h
		cmp	eax, 0E09h
		ja	short loc_7F80D2C5
		jz	loc_7F80D334
		cmp	eax, 1Ah
		jz	loc_7F80D30C

loc_7F80D265:				; CODE XREF: sub_7F80D1F3+114j
					; sub_7F80D1F3+122j
		push	ebx
		mov	ecx, [ebp+arg_C]
		push	[ebp+var_10]
		push	dword ptr [ecx]
		mov	ecx, [ebp+arg_0]
		push	[ebp+var_8]
		push	dword ptr [ecx+54h]
		push	dword ptr [ecx+48h]
		call	sub_7F80F533

loc_7F80D27F:				; CODE XREF: sub_7F80D1F3+13Cj
		mov	[ebp+var_4], eax
		test	eax, eax
		jl	loc_7F80D391
		mov	eax, [ebx]
		and	eax, 0FFFFh
		cmp	eax, 0Ah
		jnz	short loc_7F80D299

loc_7F80D296:				; CODE XREF: sub_7F80D1F3+1D2j
					; sub_7F80D1F3+209j ...
		inc	[ebp+var_C]

loc_7F80D299:				; CODE XREF: sub_7F80D1F3+A1j
					; sub_7F80D1F3+198j ...
		add	ebx, 10h
		dec	[ebp+var_14]
		add	[ebp+var_10], 4
		cmp	[ebp+var_14], 0
		jnz	short loc_7F80D243

loc_7F80D2A9:				; CODE XREF: sub_7F80D1F3+4Ej
		cmp	[ebp+var_C], 0
		jz	short loc_7F80D2B6
		mov	[ebp+var_4], 40380h

loc_7F80D2B6:				; CODE XREF: sub_7F80D1F3+BAj
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+arg_8]
		mov	ecx, [eax]
		mov	[edx], ecx
		jmp	loc_7F80D3A7
; ---------------------------------------------------------------------------

loc_7F80D2C5:				; CODE XREF: sub_7F80D1F3+61j
		cmp	eax, 0FF7h
		jz	loc_7F80D3CA
		cmp	eax, 0FF9h
		jz	loc_7F80D3E1
		cmp	eax, 0FFAh
		jz	loc_7F80D42D
		cmp	eax, 0FFBh
		jz	loc_7F80D47C
		cmp	eax, 0FFEh
		jz	loc_7F80D4EE
		cmp	eax, 0FFFh
		jz	loc_7F80D3E1
		jmp	loc_7F80D265
; ---------------------------------------------------------------------------

loc_7F80D30C:				; CODE XREF: sub_7F80D1F3+6Cj
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+54h]
		cmp	eax, 8
		jz	loc_7F80D265
		push	ebx
		mov	ecx, [ebp+arg_C]
		push	dword ptr [ecx]
		push	eax
		push	0
		push	[ebp+var_8]
		push	[ebp+arg_0]
		call	sub_7F80E39F
		jmp	loc_7F80D27F
; ---------------------------------------------------------------------------

loc_7F80D334:				; CODE XREF: sub_7F80D1F3+63j
		lea	eax, [ebp+var_18]
		mov	ecx, [ebp+arg_0]
		push	eax
		mov	esi, [ebp+var_8]
		push	dword ptr [ecx+4Ch]
		push	dword ptr [esi+44h]
		call	sub_7F82D073
		push	eax
		call	sub_7F80F8B4
		mov	[ebp+var_4], eax
		test	eax, eax
		jl	short loc_7F80D3B3
		mov	ecx, [ebp+var_8]
		cmp	dword ptr [ecx+58h], 0
		jz	short loc_7F80D3B3
		mov	eax, [ebx]
		mov	edx, [ebp+arg_C]
		and	eax, 0FFFF0102h
		or	eax, 102h
		mov	[ebx], eax
		lea	eax, [ebx+0Ch]
		mov	dword ptr [ebx+8], 1Ch
		push	eax
		push	[ebp+var_18]
		push	dword ptr [edx]
		push	ecx

loc_7F80D381:				; CODE XREF: sub_7F80D1F3+235j
					; sub_7F80D1F3+284j
		call	sub_7F80F869
		mov	[ebp+var_4], eax
		test	eax, eax
		jge	loc_7F80D299

loc_7F80D391:				; CODE XREF: sub_7F80D1F3+33j
					; sub_7F80D1F3+91j ...
		mov	ecx, [ebp+arg_C]
		push	dword ptr [ecx]
		push	[ebp+var_8]
		call	sub_7F80FD78
		mov	ecx, [ebp+arg_C]
		mov	dword ptr [ecx], 0

loc_7F80D3A7:				; CODE XREF: sub_7F80D1F3+CDj
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------

loc_7F80D3B3:				; CODE XREF: sub_7F80D1F3+161j
					; sub_7F80D1F3+16Aj
		mov	eax, [ebx]
		and	eax, 0FFFF000Ah
		or	al, 0Ah
		mov	[ebx], eax
		mov	dword ptr [ebx+8], 8004010Fh
		jmp	loc_7F80D296
; ---------------------------------------------------------------------------

loc_7F80D3CA:				; CODE XREF: sub_7F80D1F3+D7j
		and	edx, 0FFFF0003h
		or	dl, 3
		mov	[ebx], edx
		mov	dword ptr [ebx+8], 0
		jmp	loc_7F80D299
; ---------------------------------------------------------------------------

loc_7F80D3E1:				; CODE XREF: sub_7F80D1F3+E2j
					; sub_7F80D1F3+10Ej
		mov	ecx, [ebp+var_8]
		cmp	dword ptr [ecx+58h], 0
		jnz	short loc_7F80D401
		and	edx, 0FFFF000Ah
		or	dl, 0Ah
		mov	[ebx], edx
		mov	dword ptr [ebx+8], 8004010Fh
		jmp	loc_7F80D296
; ---------------------------------------------------------------------------

loc_7F80D401:				; CODE XREF: sub_7F80D1F3+1F5j
		and	edx, 0FFFF0102h
		lea	eax, [ebx+0Ch]
		or	edx, 102h
		push	eax
		mov	ecx, [ebp+arg_0]
		mov	esi, [ebp+arg_C]
		mov	[ebx], edx
		mov	dword ptr [ebx+8], 1Ch
		push	dword ptr [ecx+4Ch]
		push	dword ptr [esi]
		push	[ebp+var_8]
		jmp	loc_7F80D381
; ---------------------------------------------------------------------------

loc_7F80D42D:				; CODE XREF: sub_7F80D1F3+EDj
		mov	ecx, [ebp+var_8]
		cmp	dword ptr [ecx+58h], 0
		jnz	short loc_7F80D44D
		and	edx, 0FFFF000Ah
		or	dl, 0Ah
		mov	[ebx], edx
		mov	dword ptr [ebx+8], 8004010Fh
		jmp	loc_7F80D296
; ---------------------------------------------------------------------------

loc_7F80D44D:				; CODE XREF: sub_7F80D1F3+241j
		and	edx, 0FFFF0102h
		lea	eax, [ebx+0Ch]
		or	edx, 102h
		push	eax
		mov	ecx, [ebp+var_8]
		mov	[ebx], edx
		mov	dword ptr [ebx+8], 1Ch
		mov	edx, [ecx+58h]
		mov	ecx, [ebp+arg_C]
		push	dword ptr [edx+18h]
		push	dword ptr [ecx]
		push	[ebp+var_8]
		jmp	loc_7F80D381
; ---------------------------------------------------------------------------

loc_7F80D47C:				; CODE XREF: sub_7F80D1F3+F8j
		mov	ecx, [ebp+var_8]
		cmp	dword ptr [ecx+60h], 0
		jnz	short loc_7F80D49C
		and	edx, 0FFFF000Ah
		or	dl, 0Ah
		mov	[ebx], edx
		mov	dword ptr [ebx+8], 8004010Fh
		jmp	loc_7F80D296
; ---------------------------------------------------------------------------

loc_7F80D49C:				; CODE XREF: sub_7F80D1F3+290j
		and	edx, 0FFFF0102h
		mov	ecx, [ebp+var_8]
		or	edx, 102h
		lea	esi, [ebx+0Ch]
		push	esi
		mov	[ebx], edx
		mov	eax, [ecx+5Ch]
		mov	ecx, [ebp+arg_C]
		mov	[ebx+8], eax
		push	dword ptr [ecx]
		push	eax
		push	[ebp+var_8]
		call	sub_7F80FD4C
		mov	[ebp+var_4], eax
		test	eax, eax
		jl	loc_7F80D391
		mov	ecx, [ebp+var_8]
		mov	eax, [ebx+8]
		mov	edi, [esi]
		mov	esi, [ecx+60h]
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		jmp	loc_7F80D299
; ---------------------------------------------------------------------------

loc_7F80D4EE:				; CODE XREF: sub_7F80D1F3+103j
		and	edx, 0FFFF0003h
		or	dl, 3
		mov	[ebx], edx
		mov	dword ptr [ebx+8], 5
		jmp	loc_7F80D299
sub_7F80D1F3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80D505	proc near		; CODE XREF: sub_7F80D5D7+9Fp

var_10		= dword	ptr -10h
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	eax, [esp+arg_0]
		mov	ebp, esp
		add	eax, 8
		sub	esp, 10h
		mov	[ebp+var_10], eax
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	esi, [ebp+arg_C]
		mov	eax, [ebp+arg_8]
		lea	ecx, [ebp+var_8]
		mov	[ebp+var_8], ebx
		push	ecx
		mov	[esi+4], ebx
		push	ebx
		mov	[esi+8], ebx
		mov	edi, [eax]
		mov	eax, edi
		shl	eax, 4
		push	eax
		push	[ebp+arg_4]
		call	sub_7F80FD4C
		mov	[ebp+var_4], eax
		cmp	eax, ebx
		jl	short loc_7F80D5C0
		mov	ecx, [ebp+var_8]
		mov	edx, [ebp+arg_8]
		add	edx, 4
		test	edi, edi
		jz	short loc_7F80D5B0

loc_7F80D552:				; CODE XREF: sub_7F80D505+A9j
		mov	eax, [edx]
		mov	[ecx], eax
		mov	ebx, [edx]
		shr	ebx, 10h
		cmp	ebx, 0E21h
		jz	short loc_7F80D57D
		cmp	ebx, 370Bh
		jz	short loc_7F80D58D
		and	eax, 0FFFF000Ah
		or	al, 0Ah
		mov	[ecx], eax
		mov	dword ptr [ecx+8], 8004010Fh
		jmp	short loc_7F80D59F
; ---------------------------------------------------------------------------

loc_7F80D57D:				; CODE XREF: sub_7F80D505+5Cj
		and	eax, 0FFFF0003h
		mov	ebx, [ebp+arg_0]
		or	al, 3
		mov	[ecx], eax
		mov	eax, [ebx]
		jmp	short loc_7F80D59C
; ---------------------------------------------------------------------------

loc_7F80D58D:				; CODE XREF: sub_7F80D505+64j
		and	eax, 0FFFF0003h
		mov	ebx, [ebp+var_10]
		or	al, 3
		mov	[ecx], eax
		mov	eax, [ebx+2]

loc_7F80D59C:				; CODE XREF: sub_7F80D505+86j
		mov	[ecx+8], eax

loc_7F80D59F:				; CODE XREF: sub_7F80D505+76j
		cmp	[ebp+var_4], 0
		jl	short loc_7F80D5C0
		dec	edi
		add	ecx, 10h
		add	edx, 4
		test	edi, edi
		jnz	short loc_7F80D552

loc_7F80D5B0:				; CODE XREF: sub_7F80D505+4Bj
		mov	eax, [ebp+arg_8]
		mov	edx, [ebp+var_8]
		mov	ecx, [eax]
		mov	[esi+4], ecx
		mov	[esi+8], edx
		jmp	short loc_7F80D5CB
; ---------------------------------------------------------------------------

loc_7F80D5C0:				; CODE XREF: sub_7F80D505+3Ej
					; sub_7F80D505+9Ej
		push	[ebp+var_8]
		push	[ebp+arg_4]
		call	sub_7F80FD78

loc_7F80D5CB:				; CODE XREF: sub_7F80D505+B9j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F80D505	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80D5D7	proc near		; CODE XREF: sub_7F80D6D8+A0p

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, 18h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		xor	ebx, ebx
		mov	[ebp+var_8], esi
		mov	[ebp+var_4], esi
		mov	[ebp+var_18], esi
		mov	[ebp+var_14], esi
		mov	[ebp+var_10], esi
		mov	[ebp+var_C], 16h
		cmp	[ebp+arg_4], esi
		jz	loc_7F80D6B8
		lea	eax, [ebp+var_4]
		mov	edi, [ebp+arg_0]
		push	eax
		push	esi
		push	16h
		push	edi
		call	sub_7F80FD4C
		cmp	eax, esi
		mov	ebx, eax
		jl	loc_7F80D6BB

loc_7F80D61D:				; CODE XREF: sub_7F80D5D7+77j
					; sub_7F80D5D7+CBj
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+var_4]
		push	[ebp+arg_4]
		call	sub_7F811CD9
		test	eax, eax
		jnz	short loc_7F80D6A7
		lea	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		mov	[ebp+var_C], 16h
		push	eax
		push	esi
		push	dword ptr [ecx]
		push	dword ptr [edi+48h]
		call	sub_7F81121A
		cmp	eax, 1001h
		jz	short loc_7F80D61D
		push	eax
		call	sub_7F80F8B4
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_7F80D6BB
		push	esi
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F810922
		lea	eax, [ebp+var_18]
		mov	[ebp+var_8], esi
		push	eax
		push	offset unk_7F835610
		push	edi
		push	[ebp+var_4]
		call	sub_7F80D505
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_7F80D6BB
		lea	eax, [ebp+var_18]
		mov	ecx, [ebp+arg_8]
		push	eax
		mov	eax, [ecx]
		push	[ebp+arg_8]
		call	dword ptr [eax+10h]
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_7F80D6BB
		push	[ebp+var_10]
		push	edi
		call	sub_7F80FD78
		mov	[ebp+var_10], esi
		jmp	loc_7F80D61D
; ---------------------------------------------------------------------------

loc_7F80D6A7:				; CODE XREF: sub_7F80D5D7+57j
		cmp	eax, 1005h
		jz	short loc_7F80D6BB
		push	eax
		call	sub_7F80F8B4
		mov	ebx, eax
		jmp	short loc_7F80D6BB
; ---------------------------------------------------------------------------

loc_7F80D6B8:				; CODE XREF: sub_7F80D5D7+26j
		mov	edi, [ebp+arg_0]

loc_7F80D6BB:				; CODE XREF: sub_7F80D5D7+40j
					; sub_7F80D5D7+83j ...
		push	[ebp+var_10]
		push	edi
		call	sub_7F80FD78
		push	[ebp+var_4]
		push	edi
		call	sub_7F80FD78
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F80D5D7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80D6D8	proc near		; CODE XREF: sub_7F8042DA+78p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		xor	edi, edi
		mov	[ebp+var_4], edi
		mov	[ebp+var_8], edi
		cmp	[esi+58h], edi
		jnz	loc_7F80D789
		lea	eax, [ebp+var_8]
		push	eax
		push	dword ptr [esi+48h]
		call	sub_7F8111EE
		test	eax, eax
		jz	short loc_7F80D746
		cmp	eax, 1001h
		jz	short loc_7F80D746
		push	eax
		call	sub_7F80F8B4

loc_7F80D712:				; CODE XREF: sub_7F80D6D8+97j
		mov	edi, eax

loc_7F80D714:				; CODE XREF: sub_7F80D6D8+A9j
					; sub_7F80D6D8+C8j
		xor	ebx, ebx
		cmp	[ebp+var_4], ebx
		jz	short loc_7F80D72C
		mov	eax, [ebp+var_4]
		push	[ebp+var_4]
		mov	eax, [eax]
		call	dword ptr [eax+8]
		mov	[esi+58h], ebx
		mov	[esi+64h], ebx

loc_7F80D72C:				; CODE XREF: sub_7F80D6D8+41j
					; sub_7F80D6D8+D1j
		cmp	[ebp+var_8], 0
		jz	short loc_7F80D73B
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F811B7E

loc_7F80D73B:				; CODE XREF: sub_7F80D6D8+58j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------

loc_7F80D746:				; CODE XREF: sub_7F80D6D8+2Bj
					; sub_7F80D6D8+32j
		mov	ecx, [esi+2Ch]
		lea	eax, [ebp+var_4]
		push	eax
		push	offset unk_7F835610
		push	0E210003h
		push	2
		push	0
		push	dword ptr [ecx+8]
		push	dword ptr [ecx+4]
		push	dword ptr [ecx]
		push	offset dword_7F801980
		call	CreateTable@36
		test	eax, eax
		jl	short loc_7F80D712
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	esi
		call	sub_7F80D5D7
		mov	edi, eax
		test	edi, edi
		jl	short loc_7F80D714
		mov	eax, [ebp+var_4]
		mov	[esi+58h], eax

loc_7F80D789:				; CODE XREF: sub_7F80D6D8+17j
		push	[ebp+arg_8]
		push	esi
		push	0
		mov	ecx, [ebp+var_4]
		push	0
		mov	eax, [ecx]
		push	[ebp+var_4]
		call	dword ptr [eax+0Ch]
		mov	edi, eax
		test	edi, edi
		jl	loc_7F80D714
		inc	dword ptr [esi+5Ch]
		jmp	short loc_7F80D72C
sub_7F80D6D8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80D7AB(void *lp, int, int, int, int, int,	int)
sub_7F80D7AB	proc near		; CODE XREF: sub_7F80D991+EDp

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
lp		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		mov	ecx, [ebp+arg_14]
		push	esi
		mov	edx, [ebp+arg_18]
		push	edi
		mov	[ebp+var_14], eax
		mov	[ebp+var_10], eax
		mov	[ecx], eax
		mov	[edx], eax
		cmp	[ebp+lp], eax
		jnz	short loc_7F80D7F4
		mov	[ebp+var_4], 80004005h

loc_7F80D7D2:				; CODE XREF: sub_7F80D7AB+64j
					; sub_7F80D7AB+127j ...
		mov	ecx, [ebp+arg_18]
		push	dword ptr [ecx]
		push	[ebp+arg_C]
		call	sub_7F80FD78
		mov	ecx, [ebp+arg_18]
		mov	dword ptr [ecx], 0

loc_7F80D7E8:				; CODE XREF: sub_7F80D7AB+1E1j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	1Ch
; ---------------------------------------------------------------------------

loc_7F80D7F4:				; CODE XREF: sub_7F80D7AB+1Ej
		mov	eax, [ebp+arg_10]
		push	[ebp+arg_18]
		push	0
		mov	eax, [eax]
		shl	eax, 4
		push	eax
		push	[ebp+arg_C]
		call	sub_7F80FD4C
		mov	[ebp+var_4], eax
		test	eax, eax
		jl	short loc_7F80D7D2
		mov	ecx, [ebp+arg_18]
		mov	eax, [ebp+arg_10]
		mov	ebx, [ecx]
		mov	ecx, [eax]
		add	eax, 4
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], eax
		test	ecx, ecx
		jz	loc_7F80D975

loc_7F80D82C:				; CODE XREF: sub_7F80D7AB+1C4j
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		mov	[ebx], ecx
		mov	eax, [eax]
		shr	eax, 10h
		cmp	eax, 0C15h
		jz	short loc_7F80D889
		cmp	eax, 0FFFh
		jz	short loc_7F80D89F
		cmp	eax, 3000h
		jz	loc_7F80D8DD
		cmp	eax, 3001h
		jz	loc_7F80D8F6
		cmp	eax, 3002h
		jz	loc_7F80D915
		cmp	eax, 3003h
		jz	loc_7F80D934
		and	ecx, 0FFFF000Ah
		or	cl, 0Ah
		mov	[ebx], ecx
		mov	dword ptr [ebx+8], 8004010Fh
		jmp	loc_7F80D952
; ---------------------------------------------------------------------------

loc_7F80D889:				; CODE XREF: sub_7F80D7AB+92j
		and	ecx, 0FFFF0003h
		mov	eax, [ebp+arg_4]
		or	cl, 3
		mov	[ebx], ecx
		mov	[ebx+8], eax
		jmp	loc_7F80D952
; ---------------------------------------------------------------------------

loc_7F80D89F:				; CODE XREF: sub_7F80D7AB+99j
		cmp	[ebp+var_10], 0
		jz	short loc_7F80D8BA
		mov	edi, ebx
		mov	esi, [ebp+var_10]
		movsd
		movsd
		movsd
		movsd
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		mov	[ebx], ecx
		jmp	loc_7F80D952
; ---------------------------------------------------------------------------

loc_7F80D8BA:				; CODE XREF: sub_7F80D7AB+F8j
		push	ebx		; int
		mov	ecx, [ebp+arg_18]
		push	dword ptr [ecx]	; int
		push	[ebp+arg_C]	; int
		push	[ebp+lp]	; lp
		push	0		; int
		call	sub_7F80EE72
		mov	[ebp+var_4], eax
		test	eax, eax
		jl	loc_7F80D7D2
		mov	[ebp+var_10], ebx
		jmp	short loc_7F80D952
; ---------------------------------------------------------------------------

loc_7F80D8DD:				; CODE XREF: sub_7F80D7AB+A0j
		and	ecx, 0FFFF0003h
		mov	eax, [ebp+arg_4]
		shl	eax, 10h
		or	cl, 3
		add	eax, [ebp+arg_8]
		mov	[ebx], ecx
		mov	[ebx+8], eax
		jmp	short loc_7F80D952
; ---------------------------------------------------------------------------

loc_7F80D8F6:				; CODE XREF: sub_7F80D7AB+ABj
		push	ebx		; int
		mov	ecx, [ebp+arg_18]
		push	dword ptr [ecx]	; int
		push	[ebp+arg_C]	; int
		push	[ebp+lp]	; lp
		push	0		; int
		call	sub_7F80EC41
		mov	[ebp+var_4], eax
		test	eax, eax
		jge	short loc_7F80D952
		jmp	loc_7F80D7D2
; ---------------------------------------------------------------------------

loc_7F80D915:				; CODE XREF: sub_7F80D7AB+B6j
		push	ebx		; int
		mov	ecx, [ebp+arg_18]
		push	dword ptr [ecx]	; int
		push	[ebp+arg_C]	; int
		push	[ebp+lp]	; lp
		push	0		; int
		call	sub_7F80EBCF
		mov	[ebp+var_4], eax
		test	eax, eax
		jge	short loc_7F80D952
		jmp	loc_7F80D7D2
; ---------------------------------------------------------------------------

loc_7F80D934:				; CODE XREF: sub_7F80D7AB+C1j
		push	ebx		; int
		mov	ecx, [ebp+arg_18]
		push	dword ptr [ecx]	; int
		push	[ebp+arg_C]	; int
		push	[ebp+lp]	; lp
		push	0		; int
		call	sub_7F80EB5D
		mov	[ebp+var_4], eax
		test	eax, eax
		jl	loc_7F80D7D2

loc_7F80D952:				; CODE XREF: sub_7F80D7AB+D9j
					; sub_7F80D7AB+EFj ...
		mov	eax, [ebx]
		and	eax, 0FFFFh
		cmp	eax, 0Ah
		jnz	short loc_7F80D961
		inc	[ebp+var_14]

loc_7F80D961:				; CODE XREF: sub_7F80D7AB+1B1j
		add	ebx, 10h
		dec	[ebp+var_C]
		add	[ebp+var_8], 4
		cmp	[ebp+var_C], 0
		jnz	loc_7F80D82C

loc_7F80D975:				; CODE XREF: sub_7F80D7AB+7Bj
		cmp	[ebp+var_14], 0
		jz	short loc_7F80D982
		mov	[ebp+var_4], 40380h

loc_7F80D982:				; CODE XREF: sub_7F80D7AB+1CEj
		mov	eax, [ebp+arg_10]
		mov	ecx, [ebp+arg_14]
		mov	edx, [eax]
		mov	[ecx], edx
		jmp	loc_7F80D7E8
sub_7F80D7AB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80D991	proc near		; CODE XREF: sub_7F80DB1E+ABp
					; sub_7F80DB1E+C6p ...

var_1C		= dword	ptr -1Ch
ucb		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
lp		= 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
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+lp], ebx
		mov	[ebp+var_14], ebx
		mov	esi, [ebp+arg_0]
		lea	eax, [ebp+ucb]
		push	eax
		mov	edi, [ebp+arg_4]
		push	edi
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_8], ebx
		push	dword ptr [esi+48h]
		call	sub_7F810E3F
		cmp	eax, 1004h
		jz	loc_7F80DAF2
		test	eax, eax
		jz	short loc_7F80D9DA
		push	eax
		call	sub_7F80F8B4
		mov	ebx, eax
		jmp	loc_7F80DAF2
; ---------------------------------------------------------------------------

loc_7F80D9DA:				; CODE XREF: sub_7F80D991+3Aj
		lea	eax, [ebp+lp]
		push	eax
		push	0
		push	[ebp+ucb]
		push	dword ptr [esi+44h]
		call	sub_7F80FD4C
		mov	ebx, eax
		test	ebx, ebx
		jl	loc_7F80DAF4
		lea	eax, [ebp+ucb]
		push	eax
		push	[ebp+lp]
		push	edi
		push	dword ptr [esi+48h]
		call	sub_7F810E8D
		push	eax
		call	sub_7F80F8B4
		mov	ebx, eax
		test	ebx, ebx
		jl	loc_7F80DAF4
		push	[ebp+ucb]	; ucb
		push	[ebp+lp]	; lp
		push	edi		; int
		call	sub_7F80FC77
		test	eax, eax
		jnz	short loc_7F80DA2F
		mov	ebx, 80004005h
		jmp	loc_7F80DAF2
; ---------------------------------------------------------------------------

loc_7F80DA2F:				; CODE XREF: sub_7F80D991+92j
		mov	[ebp+var_1C], 0
		mov	edi, [ebp+lp]
		push	edi		; lp
		call	sub_7F80FAC3
		test	eax, eax
		jz	loc_7F80DAF2

loc_7F80DA47:				; CODE XREF: sub_7F80D991+15Bj
		cmp	word ptr [edi],	0
		jz	loc_7F80DAF2
		cmp	[ebp+var_8], 0
		jz	short loc_7F80DA67
		push	[ebp+var_8]
		push	esi
		call	sub_7F80FD78
		mov	[ebp+var_8], 0

loc_7F80DA67:				; CODE XREF: sub_7F80D991+C4j
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_C]
		push	eax		; int
		push	ecx		; int
		push	offset unk_7F8355F0 ; int
		push	dword ptr [esi+44h] ; int
		push	[ebp+var_1C]	; int
		push	[ebp+arg_8]	; int
		push	edi		; lp
		call	sub_7F80D7AB
		mov	ebx, eax
		test	ebx, ebx
		jge	short loc_7F80DA8E
		inc	[ebp+var_14]
		jmp	short loc_7F80DAD2
; ---------------------------------------------------------------------------

loc_7F80DA8E:				; CODE XREF: sub_7F80D991+F6j
		jz	short loc_7F80DABD
		push	3001001Eh
		push	[ebp+var_C]
		push	[ebp+var_8]
		call	PpropFindProp@12
		test	eax, eax
		jz	short loc_7F80DAB8
		push	0C150003h
		push	[ebp+var_C]
		push	[ebp+var_8]
		call	PpropFindProp@12
		test	eax, eax
		jnz	short loc_7F80DABD

loc_7F80DAB8:				; CODE XREF: sub_7F80D991+111j
		inc	[ebp+var_14]
		jmp	short loc_7F80DAD2
; ---------------------------------------------------------------------------

loc_7F80DABD:				; CODE XREF: sub_7F80D991:loc_7F80DA8Ej
					; sub_7F80D991+125j
		lea	eax, [ebp+var_10]
		mov	ecx, [ebp+arg_C]
		push	eax
		mov	eax, [ecx]
		push	[ebp+arg_C]
		call	dword ptr [eax+10h]
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_7F80DAF4

loc_7F80DAD2:				; CODE XREF: sub_7F80D991+FBj
					; sub_7F80D991+12Aj
		movzx	ecx, word ptr [edi+4]
		movzx	eax, word ptr [edi+6]
		add	ecx, eax
		inc	[ebp+var_1C]
		add	ecx, 8
		add	edi, ecx
		push	edi		; lp
		call	sub_7F80FAC3
		test	eax, eax
		jnz	loc_7F80DA47

loc_7F80DAF2:				; CODE XREF: sub_7F80D991+32j
					; sub_7F80D991+44j ...
		test	ebx, ebx

loc_7F80DAF4:				; CODE XREF: sub_7F80D991+5Ej
					; sub_7F80D991+7Ej ...
		jnz	short loc_7F80DB01
		cmp	[ebp+var_14], 0
		jz	short loc_7F80DB01
		mov	ebx, 40380h

loc_7F80DB01:				; CODE XREF: sub_7F80D991:loc_7F80DAF4j
					; sub_7F80D991+169j
		push	[ebp+lp]
		push	esi
		call	sub_7F80FD78
		push	[ebp+var_8]
		push	esi
		call	sub_7F80FD78
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F80D991	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80DB1E	proc near		; CODE XREF: sub_7F803EAC+7Dp

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		xor	edi, edi
		mov	[ebp+var_8], edi
		mov	[ebp+var_4], edi
		cmp	[esi+60h], edi
		jnz	loc_7F80DC0D
		mov	ecx, [esi+2Ch]
		lea	eax, [ebp+var_4]
		push	eax
		push	offset unk_7F8355F0
		push	30000003h
		push	2
		push	edi
		push	dword ptr [ecx+8]
		push	dword ptr [ecx+4]
		push	dword ptr [ecx]
		push	offset dword_7F801980
		call	CreateTable@36
		test	eax, eax
		jge	short loc_7F80DB99
		mov	ebx, eax

loc_7F80DB67:				; CODE XREF: sub_7F80DB1E+104j
		xor	edi, edi
		cmp	[ebp+var_4], edi
		jz	short loc_7F80DB7F
		mov	eax, [ebp+var_4]
		push	[ebp+var_4]
		mov	eax, [eax]
		call	dword ptr [eax+8]
		mov	[esi+60h], edi
		mov	[esi+64h], edi

loc_7F80DB7F:				; CODE XREF: sub_7F80DB1E+4Ej
					; sub_7F80DB1E+10Dj
		test	ebx, ebx
		jl	short loc_7F80DB8E
		cmp	[ebp+var_8], 0
		jz	short loc_7F80DB8E
		mov	ebx, 40380h

loc_7F80DB8E:				; CODE XREF: sub_7F80DB1E+63j
					; sub_7F80DB1E+69j
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------

loc_7F80DB99:				; CODE XREF: sub_7F80DB1E+45j
		mov	ecx, 8001h
		mov	ebx, 8002h
		mov	edi, 8003h
		mov	eax, [esi+54h]
		cmp	eax, 2
		jz	short loc_7F80DBB5
		cmp	eax, 8
		jnz	short loc_7F80DBBE

loc_7F80DBB5:				; CODE XREF: sub_7F80DB1E+90j
		mov	ecx, 2
		xor	ebx, ebx
		xor	edi, edi

loc_7F80DBBE:				; CODE XREF: sub_7F80DB1E+95j
		test	ecx, ecx
		jz	short loc_7F80DBD9
		push	[ebp+var_4]
		push	1
		push	ecx
		push	esi
		call	sub_7F80D991
		test	eax, eax
		jge	short loc_7F80DBD9
		mov	[ebp+var_8], 1

loc_7F80DBD9:				; CODE XREF: sub_7F80DB1E+A2j
					; sub_7F80DB1E+B2j
		test	ebx, ebx
		jz	short loc_7F80DBF0
		push	[ebp+var_4]
		push	2
		push	ebx
		push	esi
		call	sub_7F80D991
		test	eax, eax
		jge	short loc_7F80DBF0
		inc	[ebp+var_8]

loc_7F80DBF0:				; CODE XREF: sub_7F80DB1E+BDj
					; sub_7F80DB1E+CDj
		test	edi, edi
		jz	short loc_7F80DC07
		push	[ebp+var_4]
		push	3
		push	edi
		push	esi
		call	sub_7F80D991
		test	eax, eax
		jge	short loc_7F80DC07
		inc	[ebp+var_8]

loc_7F80DC07:				; CODE XREF: sub_7F80DB1E+D4j
					; sub_7F80DB1E+E4j
		mov	eax, [ebp+var_4]
		mov	[esi+60h], eax

loc_7F80DC0D:				; CODE XREF: sub_7F80DB1E+17j
		push	[ebp+arg_8]
		push	esi
		mov	ecx, [esi+60h]
		push	0
		mov	eax, [ecx]
		push	0
		push	ecx
		call	dword ptr [eax+0Ch]
		mov	ebx, eax
		test	ebx, ebx
		jl	loc_7F80DB67
		inc	dword ptr [esi+64h]
		jmp	loc_7F80DB7F
sub_7F80DB1E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80DC30	proc near		; CODE XREF: sub_7F8042DA+171p

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, 10h
		mov	[ebp+var_10], 16h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	ecx, [ebp+arg_C]
		mov	esi, [ebp+arg_0]
		lea	eax, [ebp+var_8]
		mov	[ebp+var_8], ebx
		push	eax
		mov	[ebp+var_C], ebx
		mov	[ebp+var_4], ebx
		mov	[ecx], ebx
		push	dword ptr [esi+48h]
		call	sub_7F8111EE
		push	eax
		call	sub_7F80F8B4
		cmp	eax, ebx
		mov	edi, eax
		jl	loc_7F80DD54
		push	1
		push	[ebp+arg_4]
		push	[ebp+var_8]
		call	sub_7F811C27
		push	eax
		call	sub_7F80F8B4
		cmp	eax, ebx
		mov	edi, eax
		jl	loc_7F80DD54
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	5Ch
		push	dword ptr [esi+44h]
		call	sub_7F80FD4C
		cmp	eax, ebx
		mov	edi, eax
		jl	loc_7F80DD54
		mov	edi, [ebp+var_4]
		xor	eax, eax
		mov	ecx, 17h
		rep stosd
		mov	ecx, [ebp+var_4]
		mov	eax, [esi+2Ch]
		mov	[ecx], ebx
		mov	[ecx+4], ebx
		mov	[ecx+8], ebx
		mov	[ecx+0Ch], ebx
		mov	[ecx+10h], ebx
		mov	[ecx+2Ch], eax
		mov	eax, [ebp+var_4]
		add	eax, 54h
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_10]
		push	dword ptr [esi+44h]
		call	sub_7F80FD4C
		cmp	eax, ebx
		mov	edi, eax
		jl	short loc_7F80DD54
		lea	eax, [ebp+var_10]
		mov	ecx, [ebp+var_4]
		push	eax
		push	dword ptr [ecx+54h]
		push	[ebp+var_8]
		call	sub_7F811CD9
		push	eax
		call	sub_7F80F8B4
		cmp	eax, ebx
		mov	edi, eax
		jl	short loc_7F80DD54
		mov	eax, [esi+44h]
		mov	ecx, [ebp+var_4]
		mov	[ecx+44h], eax
		mov	ecx, [ebp+var_4]
		mov	[ecx+40h], esi
		mov	ecx, [ebp+var_4]
		lea	edx, [ebp+var_C]
		mov	eax, [ecx+54h]
		add	eax, 8
		push	edx
		push	ebx
		mov	[ecx+58h], eax
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_8]
		push	[ebp+arg_4]
		mov	[ecx+50h], eax
		push	dword ptr [esi+48h]
		call	sub_7F81121A
		push	eax
		call	sub_7F80F8B4
		cmp	eax, ebx
		mov	edi, eax
		jl	short loc_7F80DD54
		mov	eax, [ebp+var_C]
		mov	ecx, [ebp+var_4]
		mov	[ecx+48h], eax
		mov	eax, [ebp+arg_C]
		mov	edx, [ebp+var_4]
		mov	[eax], edx
		jmp	short loc_7F80DD6E
; ---------------------------------------------------------------------------

loc_7F80DD54:				; CODE XREF: sub_7F80DC30+39j
					; sub_7F80DC30+56j ...
		push	[ebp+var_4]
		push	esi
		call	sub_7F80FD78
		cmp	[ebp+var_C], 0
		jz	short loc_7F80DD6E
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_7F810922

loc_7F80DD6E:				; CODE XREF: sub_7F80DC30+122j
					; sub_7F80DC30+131j
		cmp	[ebp+var_8], 0
		jz	short loc_7F80DD7D
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F811B7E

loc_7F80DD7D:				; CODE XREF: sub_7F80DC30+142j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F80DC30	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80DD88	proc near		; CODE XREF: sub_7F8042DA+222p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_7F80DDB1
		lea	eax, [esi+48h]
		cmp	dword ptr [eax], 0
		jz	short loc_7F80DDA1
		push	0
		push	eax
		call	sub_7F810922

loc_7F80DDA1:				; CODE XREF: sub_7F80DD88+Fj
		xor	eax, eax
		mov	[esi], eax
		cmp	[esi+8], eax
		jnz	short loc_7F80DDB1
		push	esi
		push	esi
		call	sub_7F80FD78

loc_7F80DDB1:				; CODE XREF: sub_7F80DD88+7j
					; sub_7F80DD88+20j
		pop	esi
		retn	4
sub_7F80DD88	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80DDB5	proc near		; CODE XREF: sub_7F8045B6+1F7p

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	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 14h
		mov	ecx, [eax+44h]
		push	ebx
		push	esi
		mov	edx, [ebp+arg_4]
		push	edi
		mov	[ebp+var_8], ecx
		push	[ebp+arg_C]
		push	0
		mov	[ebp+var_14], 0
		mov	eax, [edx]
		shl	eax, 4
		push	eax
		push	ecx
		call	sub_7F80FD4C
		mov	[ebp+var_4], eax
		test	eax, eax
		jl	loc_7F80DF45
		mov	ecx, [ebp+arg_C]
		mov	eax, [ebp+arg_4]
		mov	ebx, [ecx]
		mov	ecx, [eax]
		add	eax, 4
		mov	[ebp+var_10], ecx
		mov	[ebp+var_C], eax
		test	ecx, ecx
		jz	loc_7F80DF2C

loc_7F80DE09:				; CODE XREF: sub_7F80DDB5+171j
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		mov	[ebx], ecx
		mov	eax, [eax]
		cmp	eax, 0FF70003h
		jz	short loc_7F80DE79
		cmp	eax, 0FFE0003h
		jz	short loc_7F80DE85
		cmp	eax, 37050003h
		jz	short loc_7F80DE91
		cmp	eax, 370A0102h
		jz	loc_7F80DEB6
		cmp	eax, 370B0003h
		jz	loc_7F80DF0C
		push	ebx
		mov	ecx, [ebp+arg_C]
		push	[ebp+var_C]
		push	dword ptr [ecx]
		mov	ecx, [ebp+arg_0]
		push	[ebp+var_8]
		push	0
		push	dword ptr [ecx+48h]
		call	sub_7F80F533
		mov	[ebp+var_4], eax
		test	eax, eax
		jl	loc_7F80DF45
		mov	eax, [ebx]
		and	eax, 0FFFFh
		cmp	eax, 0Ah
		jnz	loc_7F80DF18
		inc	[ebp+var_14]
		jmp	loc_7F80DF18
; ---------------------------------------------------------------------------

loc_7F80DE79:				; CODE XREF: sub_7F80DDB5+62j
		mov	dword ptr [ebx+8], 0
		jmp	loc_7F80DF18
; ---------------------------------------------------------------------------

loc_7F80DE85:				; CODE XREF: sub_7F80DDB5+69j
		mov	dword ptr [ebx+8], 7
		jmp	loc_7F80DF18
; ---------------------------------------------------------------------------

loc_7F80DE91:				; CODE XREF: sub_7F80DDB5+70j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+58h]
		movzx	eax, word ptr [ecx]
		cmp	eax, 2
		jl	short loc_7F80DEA4
		cmp	eax, 3
		jle	short loc_7F80DEAD

loc_7F80DEA4:				; CODE XREF: sub_7F80DDB5+E8j
		mov	dword ptr [ebx+8], 1
		jmp	short loc_7F80DF18
; ---------------------------------------------------------------------------

loc_7F80DEAD:				; CODE XREF: sub_7F80DDB5+EDj
		mov	dword ptr [ebx+8], 6
		jmp	short loc_7F80DF18
; ---------------------------------------------------------------------------

loc_7F80DEB6:				; CODE XREF: sub_7F80DDB5+77j
		mov	eax, [ebp+arg_0]
		mov	edx, [eax+58h]
		movzx	eax, word ptr [edx]
		cmp	eax, 2
		jl	short loc_7F80DEC9
		cmp	eax, 3
		jle	short loc_7F80DEDD

loc_7F80DEC9:				; CODE XREF: sub_7F80DDB5+10Dj
		and	ecx, 0FFFF000Ah
		or	cl, 0Ah
		mov	[ebx], ecx
		mov	dword ptr [ebx+8], 8004010Fh
		jmp	short loc_7F80DF18
; ---------------------------------------------------------------------------

loc_7F80DEDD:				; CODE XREF: sub_7F80DDB5+112j
		lea	edi, [ebx+0Ch]
		mov	ecx, [ebp+arg_C]
		push	edi
		push	dword ptr [ecx]
		push	0Bh
		push	[ebp+var_8]
		call	sub_7F80FD4C
		mov	[ebp+var_4], eax
		test	eax, eax
		jl	short loc_7F80DF45
		mov	esi, offset dword_7F8019C0
		mov	edi, [edi]
		movsd
		movsd
		movsw
		movsb
		mov	dword ptr [ebx+8], 0Bh
		jmp	short loc_7F80DF18
; ---------------------------------------------------------------------------

loc_7F80DF0C:				; CODE XREF: sub_7F80DDB5+82j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+58h]
		mov	edx, [ecx+2]
		mov	[ebx+8], edx

loc_7F80DF18:				; CODE XREF: sub_7F80DDB5+B6j
					; sub_7F80DDB5+BFj ...
		add	ebx, 10h
		dec	[ebp+var_10]
		add	[ebp+var_C], 4
		cmp	[ebp+var_10], 0
		jnz	loc_7F80DE09

loc_7F80DF2C:				; CODE XREF: sub_7F80DDB5+4Ej
		cmp	[ebp+var_14], 0
		jz	short loc_7F80DF39
		mov	[ebp+var_4], 40380h

loc_7F80DF39:				; CODE XREF: sub_7F80DDB5+17Bj
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+arg_8]
		mov	ecx, [eax]
		mov	[edx], ecx
		jmp	short loc_7F80DF5B
; ---------------------------------------------------------------------------

loc_7F80DF45:				; CODE XREF: sub_7F80DDB5+33j
					; sub_7F80DDB5+A6j ...
		mov	ecx, [ebp+arg_C]
		push	dword ptr [ecx]
		push	[ebp+var_8]
		call	sub_7F80FD78
		mov	ecx, [ebp+arg_C]
		mov	dword ptr [ecx], 0

loc_7F80DF5B:				; CODE XREF: sub_7F80DDB5+18Ej
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F80DDB5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80DF67	proc near		; CODE XREF: sub_7F80F805+52p

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, 0Ch
		push	ebx
		mov	ecx, [ebp+arg_C]
		push	esi
		lea	eax, [ebp+var_C]
		push	edi
		xor	esi, esi
		push	eax
		mov	[ebp+var_4], esi
		push	esi
		mov	ebx, [ebp+arg_0]
		push	esi
		mov	[ebp+var_C], esi
		push	[ebp+arg_4]
		mov	[ecx], esi
		push	dword ptr [ebx+48h]
		call	sub_7F810FCE
		push	eax
		call	sub_7F80F8B4
		mov	[ebp+var_8], eax
		cmp	eax, esi
		jl	short loc_7F80E000
		lea	eax, [ebp+var_4]
		push	eax
		push	esi
		push	54h
		push	ebx
		call	sub_7F80FD4C
		mov	[ebp+var_8], eax
		cmp	eax, esi
		jl	short loc_7F80E000
		mov	edi, [ebp+var_4]
		xor	eax, eax
		mov	ecx, 15h
		rep stosd
		mov	eax, [ebx+2Ch]
		mov	ecx, [ebp+var_4]
		mov	[ecx], esi
		mov	[ecx+4], esi
		mov	[ecx+8], esi
		mov	[ecx+0Ch], esi
		mov	[ecx+10h], esi
		mov	[ecx+2Ch], eax
		mov	eax, [ebx+44h]
		mov	ecx, [ebp+var_4]
		mov	[ecx+44h], eax
		mov	ecx, [ebp+var_4]
		mov	[ecx+40h], ebx
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+var_C]
		mov	[ecx+48h], eax
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_8]
		mov	[ecx+50h], eax
		mov	ecx, [ebp+arg_C]
		mov	edx, [ebp+var_4]
		mov	[ecx], edx
		jmp	short loc_7F80E018
; ---------------------------------------------------------------------------

loc_7F80E000:				; CODE XREF: sub_7F80DF67+35j
					; sub_7F80DF67+49j
		push	[ebp+var_4]
		push	ebx
		call	sub_7F80FD78
		cmp	[ebp+var_C], 0
		jz	short loc_7F80E018
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_7F811095

loc_7F80E018:				; CODE XREF: sub_7F80DF67+97j
					; sub_7F80DF67+A6j
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F80DF67	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80E024	proc near		; CODE XREF: sub_7F80493B+129p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_7F80E04B
		lea	eax, [esi+48h]
		cmp	dword ptr [eax], 0
		jz	short loc_7F80E03B
		push	eax
		call	sub_7F811095

loc_7F80E03B:				; CODE XREF: sub_7F80E024+Fj
		xor	eax, eax
		mov	[esi], eax
		cmp	[esi+8], eax
		jnz	short loc_7F80E04B
		push	esi
		push	esi
		call	sub_7F80FD78

loc_7F80E04B:				; CODE XREF: sub_7F80E024+7j
					; sub_7F80E024+1Ej
		pop	esi
		retn	4
sub_7F80E024	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80E04F	proc near		; CODE XREF: sub_7F80493B+D1p

var_10		= dword	ptr -10h
ucb		= dword	ptr -0Ch
lp		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	[ebp+lp], esi
		mov	[ebp+var_10], esi
		cmp	[ebp+arg_14], esi
		jz	short loc_7F80E06D
		mov	eax, [ebp+arg_14]
		mov	[eax], esi
		mov	[eax+4], esi

loc_7F80E06D:				; CODE XREF: sub_7F80E04F+14j
		xor	eax, eax
		cmp	[ebp+arg_10], eax
		jz	short loc_7F80E07C
		mov	ecx, [ebp+arg_10]
		mov	[ecx], eax
		mov	[ecx+4], eax

loc_7F80E07C:				; CODE XREF: sub_7F80E04F+23j
		cmp	[ebp+arg_C], 0
		jz	short loc_7F80E089
		mov	[ebp+arg_8], 0FFFFFFFFh

loc_7F80E089:				; CODE XREF: sub_7F80E04F+31j
		mov	[ebp+ucb], 4000h

loc_7F80E090:				; CODE XREF: sub_7F80E04F+68j
		lea	eax, [ebp+lp]
		mov	edx, [ebp+arg_0]
		push	eax
		push	0
		push	[ebp+ucb]
		push	dword ptr [edx+44h]
		call	sub_7F80FD4C
		cmp	eax, 8007000Eh
		mov	edi, eax
		jnz	short loc_7F80E0B9
		shr	[ebp+ucb], 1
		cmp	[ebp+ucb], 80h
		jnb	short loc_7F80E090

loc_7F80E0B9:				; CODE XREF: sub_7F80E04F+5Cj
		test	edi, edi
		jl	loc_7F80E14E
		mov	[ebp+var_4], 0
		xor	ebx, ebx
		cmp	[ebp+arg_8], ebx
		jz	short loc_7F80E131

loc_7F80E0CF:				; CODE XREF: sub_7F80E04F+E0j
		cmp	[ebp+var_4], ebx
		jnz	short loc_7F80E131
		test	edi, edi
		jl	short loc_7F80E14E
		mov	ebx, [ebp+ucb]
		mov	eax, [ebp+arg_8]
		cmp	ebx, eax
		jb	short loc_7F80E0E4
		mov	ebx, eax

loc_7F80E0E4:				; CODE XREF: sub_7F80E04F+91j
		lea	eax, [ebp+var_4]
		push	eax		; LPVOID
		push	ebx		; ucb
		push	[ebp+lp]	; lp
		push	[ebp+arg_0]	; void *
		call	sub_7F80E173
		mov	edi, eax
		add	esi, [ebp+var_4]
		cmp	[ebp+var_4], 0
		jz	short loc_7F80E126
		lea	eax, [ebp+var_4]
		push	eax
		mov	eax, [ebp+arg_4]
		push	[ebp+var_4]
		push	[ebp+lp]
		mov	eax, [eax]
		push	[ebp+arg_4]
		call	dword ptr [eax+10h]
		test	eax, eax
		jz	short loc_7F80E126
		test	edi, edi
		jz	short loc_7F80E124
		test	eax, eax
		jge	short loc_7F80E126
		test	edi, edi
		jl	short loc_7F80E126

loc_7F80E124:				; CODE XREF: sub_7F80E04F+CBj
		mov	edi, eax

loc_7F80E126:				; CODE XREF: sub_7F80E04F+AEj
					; sub_7F80E04F+C7j ...
		mov	ecx, [ebp+var_4]
		add	[ebp+var_10], ecx
		sub	[ebp+arg_8], ecx
		jnz	short loc_7F80E0CF

loc_7F80E131:				; CODE XREF: sub_7F80E04F+7Ej
					; sub_7F80E04F+83j
		test	edi, edi
		jl	short loc_7F80E14E
		cmp	[ebp+arg_14], 0
		jz	short loc_7F80E143
		mov	eax, [ebp+arg_14]
		mov	ecx, [ebp+var_10]
		mov	[eax], ecx

loc_7F80E143:				; CODE XREF: sub_7F80E04F+EAj
		cmp	[ebp+arg_10], 0
		jz	short loc_7F80E14E
		mov	ecx, [ebp+arg_10]
		mov	[ecx], esi

loc_7F80E14E:				; CODE XREF: sub_7F80E04F+6Cj
					; sub_7F80E04F+87j ...
		push	[ebp+lp]
		push	[ebp+arg_0]
		call	sub_7F80FD78
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F80E04F	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F80E164(void *lp)
sub_7F80E164	proc near		; CODE XREF: sub_7F80E173+16p

lp		= dword	ptr  4

		push	4		; ucb
		push	[esp+4+lp]	; lp
		call	ds:IsBadReadPtr
		retn	4
sub_7F80E164	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80E173(void *, void *lp, UINT_PTR	ucb, LPVOID)
sub_7F80E173	proc near		; CODE XREF: sub_7F80E04F+A0p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
lp		= dword	ptr  0Ch
ucb		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	[ebp+arg_0]	; lp
		xor	edi, edi
		mov	[ebp+var_8], edi
		mov	[ebp+var_4], edi
		call	sub_7F80E164
		test	eax, eax
		jnz	loc_7F80E216
		mov	esi, [ebp+ucb]
		push	esi		; ucb
		push	[ebp+lp]	; lp
		call	ds:IsBadHugeReadPtr
		test	eax, eax
		jnz	short loc_7F80E216
		cmp	[ebp+arg_C], edi
		jz	short loc_7F80E1BB
		push	4		; ucb
		push	[ebp+arg_C]	; lp
		call	ds:IsBadWritePtr
		test	eax, eax
		jnz	short loc_7F80E216

loc_7F80E1BB:				; CODE XREF: sub_7F80E173+37j
		mov	eax, [ebp+arg_C]
		test	esi, esi
		mov	dword ptr [eax], 0
		jz	short loc_7F80E200

loc_7F80E1C8:				; CODE XREF: sub_7F80E173+8Bj
		test	ebx, ebx
		jnz	short loc_7F80E204
		mov	eax, [ebp+var_8]
		cmp	[ebp+var_4], eax
		jnz	short loc_7F80E200
		lea	eax, [ebp+var_4]
		mov	edx, [ebp+arg_0]
		push	eax
		mov	[ebp+var_8], esi
		push	[ebp+lp]
		push	dword ptr [edx+48h]
		mov	[ebp+var_4], esi
		call	sub_7F8110DD
		mov	ebx, eax
		sub	esi, [ebp+var_4]
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_C]
		add	[ebp+lp], ecx
		add	[eax], ecx
		test	esi, esi
		jnz	short loc_7F80E1C8

loc_7F80E200:				; CODE XREF: sub_7F80E173+53j
					; sub_7F80E173+5Fj
		test	ebx, ebx
		jz	short loc_7F80E21B

loc_7F80E204:				; CODE XREF: sub_7F80E173+57j
		cmp	ebx, 1014h
		jz	short loc_7F80E21B
		push	ebx
		call	sub_7F80F8B4
		mov	edi, eax
		jmp	short loc_7F80E21B
; ---------------------------------------------------------------------------

loc_7F80E216:				; CODE XREF: sub_7F80E173+1Dj
					; sub_7F80E173+32j ...
		mov	edi, 80070057h

loc_7F80E21B:				; CODE XREF: sub_7F80E173+8Fj
					; sub_7F80E173+97j ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F80E173	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80E226	proc near		; CODE XREF: sub_7F80F674+121p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	eax, [esp+arg_4]
		mov	ebp, esp
		mov	eax, ds:dword_7F801828[eax*4]
		test	eax, eax
		jz	short loc_7F80E24E
		cmp	dword ptr [eax+4], 0
		jz	short loc_7F80E24E

loc_7F80E23E:				; CODE XREF: sub_7F80E226+26j
		mov	ecx, [ebp+arg_0]
		cmp	[eax], ecx
		jz	short loc_7F80E26E
		add	eax, 0Ch
		cmp	dword ptr [eax+4], 0
		jnz	short loc_7F80E23E

loc_7F80E24E:				; CODE XREF: sub_7F80E226+10j
					; sub_7F80E226+16j
		cmp	ds:dword_7F80139C, 0
		mov	eax, offset dword_7F801398
		jz	short loc_7F80E26C

loc_7F80E25C:				; CODE XREF: sub_7F80E226+44j
		mov	ecx, [ebp+arg_0]
		cmp	[eax], ecx
		jz	short loc_7F80E26E
		add	eax, 0Ch
		cmp	dword ptr [eax+4], 0
		jnz	short loc_7F80E25C

loc_7F80E26C:				; CODE XREF: sub_7F80E226+34j
		xor	eax, eax

loc_7F80E26E:				; CODE XREF: sub_7F80E226+1Dj
					; sub_7F80E226+3Bj
		pop	ebp
		retn	8
sub_7F80E226	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80E272	proc near		; CODE XREF: sub_7F80F533+30p
					; sub_7F80F533+4Ep ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		cmp	dword ptr [eax+4], 0
		jz	short loc_7F80E294

loc_7F80E27C:				; CODE XREF: sub_7F80E272+20j
		mov	ecx, [eax+4]
		xor	ecx, [esp+arg_4]
		test	ecx, 0FFFF0000h
		jz	short locret_7F80E296
		add	eax, 0Ch
		cmp	dword ptr [eax+4], 0
		jnz	short loc_7F80E27C

loc_7F80E294:				; CODE XREF: sub_7F80E272+8j
		xor	eax, eax

locret_7F80E296:			; CODE XREF: sub_7F80E272+17j
		retn	8
sub_7F80E272	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80E299	proc near		; CODE XREF: sub_7F80F674+92p
					; sub_7F80F674+A2p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		xor	eax, eax
		mov	ecx, [esp+arg_0]
		cmp	[ecx+4], eax
		jz	short locret_7F80E2BC
		mov	edx, [esp+arg_4]

loc_7F80E2A8:				; CODE XREF: sub_7F80E299+21j
		cmp	[ecx], edx
		jnz	short loc_7F80E2AF
		inc	eax
		jmp	short loc_7F80E2B3
; ---------------------------------------------------------------------------

loc_7F80E2AF:				; CODE XREF: sub_7F80E299+11j
		test	eax, eax
		jnz	short locret_7F80E2BC

loc_7F80E2B3:				; CODE XREF: sub_7F80E299+14j
		add	ecx, 0Ch
		cmp	dword ptr [ecx+4], 0
		jnz	short loc_7F80E2A8

locret_7F80E2BC:			; CODE XREF: sub_7F80E299+9j
					; sub_7F80E299+18j
		retn	8
sub_7F80E299	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80E2BF	proc near		; CODE XREF: sub_7F80E354+1Fp
					; sub_7F80E39F+36p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= word ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp+var_C], 80h
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		test	esi, esi
		jz	short loc_7F80E314
		lea	eax, [ebp+var_8]
		mov	edi, 78008h
		push	eax
		push	edi
		push	dword ptr [esi+48h]
		call	sub_7F810E3F
		push	eax
		call	sub_7F80F8B4
		test	eax, eax
		jl	short loc_7F80E33D
		cmp	[ebp+var_8], 2
		jnz	short loc_7F80E33D
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_2]
		push	eax
		push	ecx
		push	edi
		push	dword ptr [esi+48h]
		call	sub_7F810E8D
		push	eax
		call	sub_7F80F8B4
		test	eax, eax
		jge	short loc_7F80E31C
		jmp	short loc_7F80E33D
; ---------------------------------------------------------------------------

loc_7F80E314:				; CODE XREF: sub_7F80E2BF+14j
		mov	ax, [ebp+arg_8]
		mov	[ebp+var_2], ax

loc_7F80E31C:				; CODE XREF: sub_7F80E2BF+51j
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		mov	edx, [ebp+arg_4]
		push	[ebp+arg_C]
		push	dword ptr [ebp+var_2]
		push	dword ptr [edx+44h]
		call	sub_7F82CB67
		push	eax
		call	sub_7F80F8B4
		test	eax, eax
		jge	short loc_7F80E34C

loc_7F80E33D:				; CODE XREF: sub_7F80E2BF+30j
					; sub_7F80E2BF+36j ...
		mov	esi, offset aIpm_microsoftM ; "IPM.Microsoft Mail.Note"
		mov	edi, [ebp+arg_C]
		mov	ecx, 6
		rep movsd

loc_7F80E34C:				; CODE XREF: sub_7F80E2BF+7Cj
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F80E2BF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80E354	proc near		; CODE XREF: sub_7F80D08D+D2p
					; sub_7F80E439+18p

String1		= byte ptr -80h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 80h
		push	esi
		lea	eax, [ebp+String1]
		push	edi
		xor	esi, esi
		push	eax
		mov	edi, offset off_7F8017E0
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F80E2BF

loc_7F80E378:				; CODE XREF: sub_7F80E354+3Fj
		push	dword ptr [edi+4] ; lpString2
		lea	ecx, [ebp+String1]
		push	ecx		; lpString1
		call	ds:lstrcmpiA
		test	eax, eax
		jz	short loc_7F80E395
		inc	esi
		add	edi, 8
		cmp	edi, offset dword_7F801828
		jb	short loc_7F80E378

loc_7F80E395:				; CODE XREF: sub_7F80E354+33j
		mov	eax, esi
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F80E354	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80E39F	proc near		; CODE XREF: sub_7F80D1F3+137p
					; sub_7F80E439+2Ep

String		= byte ptr -84h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 84h
		push	ebx
		mov	eax, [ebp+arg_C]
		push	esi
		mov	ebx, [ebp+arg_14]
		push	edi
		cmp	eax, 9
		lea	edi, [ebx+8]
		mov	dword ptr [edi], 0
		jb	short loc_7F80E3DC
		lea	eax, [ebp+String]
		lea	esi, [ebp+String]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F80E2BF
		jmp	short loc_7F80E3E3
; ---------------------------------------------------------------------------

loc_7F80E3DC:				; CODE XREF: sub_7F80E39F+1Ej
		mov	esi, ds:off_7F8017E0[eax*8]

loc_7F80E3E3:				; CODE XREF: sub_7F80E39F+3Bj
		push	esi		; lpString
		call	ds:lstrlenA
		inc	eax
		push	edi
		push	[ebp+arg_10]
		push	eax
		push	[ebp+arg_4]
		mov	[ebp+var_4], eax
		call	sub_7F80FD4C
		test	eax, eax
		jge	short loc_7F80E410
		mov	ecx, [ebx]
		mov	[edi], eax
		and	ecx, 0FFFF000Ah
		or	cl, 0Ah
		mov	[ebx], ecx
		jmp	short loc_7F80E430
; ---------------------------------------------------------------------------

loc_7F80E410:				; CODE XREF: sub_7F80E39F+5Ej
		mov	edx, [ebp+var_4]
		mov	edi, [edi]
		mov	ecx, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	ecx, [ebx]
		and	ecx, 0FFFF001Eh
		or	cl, 1Eh
		mov	[ebx], ecx

loc_7F80E430:				; CODE XREF: sub_7F80E39F+6Fj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F80E39F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80E439	proc near		; DATA XREF: .text:7F801508o
					; .text:7F8017A8o

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
		xor	eax, eax
		mov	ebp, esp
		push	esi
		cmp	[ebp+arg_0], 2
		mov	esi, [ebp+arg_4]
		jnz	short loc_7F80E456
		mov	ax, [esi]
		push	eax
		push	[ebp+arg_8]
		push	0
		call	sub_7F80E354

loc_7F80E456:				; CODE XREF: sub_7F80E439+Dj
		mov	ecx, [ebp+arg_10]
		push	ecx
		push	[ebp+arg_C]
		push	eax
		mov	cx, [esi]
		push	ecx
		push	[ebp+arg_8]
		push	0
		call	sub_7F80E39F
		pop	esi
		pop	ebp
		retn	14h
sub_7F80E439	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80E471	proc near		; DATA XREF: .text:7F8013DCo
					; .text:7F8013E8o ...

FileTime	= _FILETIME ptr	-18h
SystemTime	= SYSTEMTIME ptr -10h
arg_4		= dword	ptr  0Ch
arg_10		= dword	ptr  18h

		push	ebp
		mov	ecx, [esp+arg_4]
		mov	ax, [ecx+0Ah]
		mov	ebp, esp
		mov	dx, [ecx+8]
		sub	esp, 18h
		mov	[ebp+SystemTime.wSecond], ax
		push	esi
		mov	[ebp+SystemTime.wMilliseconds],	0
		mov	si, [ecx+6]
		mov	ax, [ecx+4]
		mov	[ebp+SystemTime.wMinute], dx
		mov	dx, [ecx+2]
		mov	[ebp+SystemTime.wHour],	si
		mov	si, [ecx]
		mov	[ebp+SystemTime.wDay], ax
		mov	ax, [ecx+0Ch]
		lea	ecx, [ebp+FileTime]
		mov	[ebp+SystemTime.wMonth], dx
		push	ecx		; lpFileTime
		mov	[ebp+SystemTime.wYear],	si
		lea	esi, [ebp+SystemTime]
		mov	[ebp+SystemTime.wDayOfWeek], ax
		push	esi		; lpSystemTime
		call	ds:SystemTimeToFileTime
		mov	esi, [ebp+arg_10]
		test	eax, eax
		jz	short loc_7F80E4E0
		lea	eax, [esi+8]
		lea	ecx, [ebp+FileTime]
		push	eax		; lpFileTime
		push	ecx		; lpLocalFileTime
		call	ds:LocalFileTimeToFileTime
		test	eax, eax
		jnz	short loc_7F80E506

loc_7F80E4E0:				; CODE XREF: sub_7F80E471+5Bj
		lea	eax, [ebp+SystemTime]
		push	eax		; lpSystemTime
		call	ds:GetSystemTime
		lea	eax, [ebp+FileTime]
		lea	ecx, [ebp+SystemTime]
		push	eax		; lpFileTime
		push	ecx		; lpSystemTime
		call	ds:SystemTimeToFileTime
		lea	ecx, [esi+8]
		lea	edx, [ebp+FileTime]
		push	ecx		; lpFileTime
		push	edx		; lpLocalFileTime
		call	ds:LocalFileTimeToFileTime

loc_7F80E506:				; CODE XREF: sub_7F80E471+6Dj
		mov	eax, [esi]
		and	eax, 0FFFF0040h
		or	al, 40h
		mov	[esi], eax
		xor	eax, eax
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F80E471	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80E51A	proc near		; DATA XREF: .text:7F8014C0o

arg_4		= dword	ptr  0Ch
arg_10		= dword	ptr  18h

		push	ebp
		mov	eax, [esp+arg_4]
		movsx	eax, word ptr [eax]
		mov	ebp, esp
		cmp	eax, 1
		jz	short loc_7F80E53F
		cmp	eax, 2
		jz	short loc_7F80E54B
		mov	ecx, [ebp+arg_10]
		cmp	eax, 3
		jz	short loc_7F80E557
		mov	dword ptr [ecx+8], 0
		jmp	short loc_7F80E55E
; ---------------------------------------------------------------------------

loc_7F80E53F:				; CODE XREF: sub_7F80E51A+Dj
		mov	ecx, [ebp+arg_10]
		mov	dword ptr [ecx+8], 1
		jmp	short loc_7F80E55E
; ---------------------------------------------------------------------------

loc_7F80E54B:				; CODE XREF: sub_7F80E51A+12j
		mov	ecx, [ebp+arg_10]
		mov	dword ptr [ecx+8], 0
		jmp	short loc_7F80E55E
; ---------------------------------------------------------------------------

loc_7F80E557:				; CODE XREF: sub_7F80E51A+1Aj
		mov	dword ptr [ecx+8], 0FFFFFFFFh

loc_7F80E55E:				; CODE XREF: sub_7F80E51A+23j
					; sub_7F80E51A+2Fj ...
		mov	eax, [ecx]
		pop	ebp
		and	eax, 0FFFF0003h
		or	al, 3
		mov	[ecx], eax
		xor	eax, eax
		retn	14h
sub_7F80E51A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80E56F	proc near		; DATA XREF: .text:7F8014CCo

arg_4		= dword	ptr  0Ch
arg_10		= dword	ptr  18h

		push	ebp
		mov	eax, [esp+arg_4]
		movsx	eax, word ptr [eax]
		mov	ebp, esp
		cmp	eax, 1
		jz	short loc_7F80E594
		cmp	eax, 2
		jz	short loc_7F80E5A0
		mov	ecx, [ebp+arg_10]
		cmp	eax, 3
		jz	short loc_7F80E5AC
		mov	dword ptr [ecx+8], 1
		jmp	short loc_7F80E5B3
; ---------------------------------------------------------------------------

loc_7F80E594:				; CODE XREF: sub_7F80E56F+Dj
		mov	ecx, [ebp+arg_10]
		mov	dword ptr [ecx+8], 2
		jmp	short loc_7F80E5B3
; ---------------------------------------------------------------------------

loc_7F80E5A0:				; CODE XREF: sub_7F80E56F+12j
		mov	ecx, [ebp+arg_10]
		mov	dword ptr [ecx+8], 1
		jmp	short loc_7F80E5B3
; ---------------------------------------------------------------------------

loc_7F80E5AC:				; CODE XREF: sub_7F80E56F+1Aj
		mov	dword ptr [ecx+8], 0

loc_7F80E5B3:				; CODE XREF: sub_7F80E56F+23j
					; sub_7F80E56F+2Fj ...
		mov	eax, [ecx]
		pop	ebp
		and	eax, 0FFFF0003h
		or	al, 3
		mov	[ecx], eax
		xor	eax, eax
		retn	14h
sub_7F80E56F	endp

; ---------------------------------------------------------------------------

loc_7F80E5C4:				; DATA XREF: .text:7F8013A0o
		mov	eax, [esp+8]
		xor	ecx, ecx
		mov	dl, [eax]
		mov	cl, dl
		mov	al, dl
		and	ecx, 4
		and	al, 80h
		cmp	al, 1
		mov	eax, 0
		adc	eax, 0FFFFFFFFh
		and	eax, 10h
		or	ecx, eax
		mov	al, dl
		and	al, 2
		cmp	al, 1
		mov	eax, 0
		adc	eax, 0FFFFFFFFh
		and	eax, 8
		or	ecx, eax
		mov	al, dl
		and	al, 20h
		cmp	al, 1
		sbb	eax, eax
		and	dl, 1
		inc	eax
		or	ecx, eax
		cmp	dl, 1
		sbb	eax, eax
		mov	edx, [esp+14h]
		and	eax, 2
		or	ecx, eax
		mov	eax, [edx]
		and	eax, 0FFFF0003h
		mov	[edx+8], ecx
		or	al, 3
		mov	[edx], eax
		xor	eax, eax
		retn	14h
; ---------------------------------------------------------------------------

loc_7F80E626:				; DATA XREF: .text:7F8013ACo
		mov	eax, [esp+8]
		mov	ecx, [esp+14h]
		mov	al, [eax]
		and	al, 80h
		cmp	al, 1
		sbb	eax, eax
		inc	eax
		mov	[ecx+8], ax
		mov	eax, [ecx]
		and	eax, 0FFFF000Bh
		or	al, 0Bh
		mov	[ecx], eax
		xor	eax, eax
		retn	14h

; =============== S U B	R O U T	I N E =======================================


sub_7F80E64B	proc near		; DATA XREF: .text:7F8013D0o
					; .text:7F801400o ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h

		push	ebx
		push	esi
		mov	ebx, [esp+8+arg_10]
		push	edi
		push	ebp
		lea	eax, [ebx+8]
		mov	ebp, [esp+10h+arg_0]
		push	eax
		push	[esp+14h+arg_C]
		mov	dword ptr [ebx+8], 0
		lea	eax, [ebp+1]
		push	eax
		push	[esp+1Ch+arg_8]
		call	sub_7F80FD4C
		test	eax, eax
		jge	short loc_7F80E689
		mov	ecx, [ebx]
		mov	[ebx+8], eax
		and	ecx, 0FFFF000Ah
		or	cl, 0Ah
		mov	[ebx], ecx
		jmp	short loc_7F80E6B2
; ---------------------------------------------------------------------------

loc_7F80E689:				; CODE XREF: sub_7F80E64B+2Aj
		mov	edi, [ebx+8]
		mov	esi, [esp+10h+arg_4]
		mov	ecx, ebp
		shr	ecx, 2
		rep movsd
		mov	ecx, ebp
		and	ecx, 3
		rep movsb
		mov	ecx, [ebx+8]
		mov	byte ptr [ecx+ebp], 0
		mov	ecx, [ebx]
		and	ecx, 0FFFF001Eh
		or	cl, 1Eh
		mov	[ebx], ecx

loc_7F80E6B2:				; CODE XREF: sub_7F80E64B+3Cj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	14h
sub_7F80E64B	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80E6B9	proc near		; DATA XREF: .text:7F8013B8o
					; .text:7F8013C4o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h

		push	ebx
		push	esi
		mov	ebx, [esp+8+arg_10]
		push	edi
		push	ebp
		xor	edi, edi
		lea	esi, [ebx+0Ch]
		mov	ebp, [esp+10h+arg_0]
		push	esi
		mov	[ebx+8], edi
		push	[esp+14h+arg_C]
		push	ebp
		push	[esp+1Ch+arg_8]
		mov	[esi], edi
		call	sub_7F80FD4C
		test	eax, eax
		jge	short loc_7F80E6F4
		mov	ecx, [ebx]
		mov	[ebx+8], eax
		and	ecx, 0FFFF000Ah
		or	cl, 0Ah
		mov	[ebx], ecx
		jmp	short loc_7F80E71B
; ---------------------------------------------------------------------------

loc_7F80E6F4:				; CODE XREF: sub_7F80E6B9+27j
		mov	edi, [esi]
		mov	ecx, ebp
		shr	ecx, 2
		mov	esi, [esp+10h+arg_4]
		rep movsd
		mov	ecx, ebp
		and	ecx, 3
		rep movsb
		mov	ecx, [ebx]
		mov	[ebx+8], ebp
		and	ecx, 0FFFF0102h
		or	ecx, 102h
		mov	[ebx], ecx

loc_7F80E71B:				; CODE XREF: sub_7F80E6B9+39j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	14h
sub_7F80E6B9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80E722	proc near		; DATA XREF: .text:7F80140Co
					; .text:7F8014A8o ...

var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	esi, [ebp+arg_10]
		lea	eax, [esi+0Ch]
		mov	[esi+8], ebx
		push	eax
		mov	[esi+0Ch], ebx
		push	[ebp+arg_C]
		push	10h
		push	[ebp+arg_8]
		call	sub_7F80FD4C
		mov	[ebp+var_4], eax
		cmp	eax, ebx
		jge	short loc_7F80E766
		mov	eax, [esi]
		mov	ecx, [ebp+var_4]
		and	eax, 0FFFF000Ah
		mov	[esi+8], ecx
		or	al, 0Ah
		mov	[esi], eax
		mov	eax, ecx
		jmp	loc_7F80E7ED
; ---------------------------------------------------------------------------

loc_7F80E766:				; CODE XREF: sub_7F80E722+2Aj
		mov	edx, 10h
		mov	eax, [ebp+arg_0]
		shr	eax, 1
		mov	edi, [esi+0Ch]
		sub	edx, eax
		test	edx, edx
		jle	short loc_7F80E797
		xor	eax, eax
		mov	ecx, edx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		mov	eax, 10h
		mov	edi, [esi+0Ch]
		add	edi, edx
		sub	eax, edx
		jmp	short loc_7F80E79C
; ---------------------------------------------------------------------------

loc_7F80E797:				; CODE XREF: sub_7F80E722+55j
		mov	eax, 10h

loc_7F80E79C:				; CODE XREF: sub_7F80E722+73j
		add	eax, eax
		mov	[ebp+var_8], eax
		test	eax, eax
		jz	short loc_7F80E7D5

loc_7F80E7A5:				; CODE XREF: sub_7F80E722+B1j
		mov	eax, [ebp+arg_4]
		mov	al, [eax+ebx+1]
		push	eax		; CHAR
		call	sub_7F80FCA0
		mov	ecx, [ebp+arg_4]
		mov	[ebp+var_C], al
		mov	dl, [ecx+ebx]
		add	ebx, 2
		push	edx		; CHAR
		call	sub_7F80FCA0
		shl	al, 4
		add	[ebp+var_C], al
		mov	cl, [ebp+var_C]
		mov	[edi], cl
		inc	edi
		cmp	[ebp+var_8], ebx
		ja	short loc_7F80E7A5

loc_7F80E7D5:				; CODE XREF: sub_7F80E722+81j
		mov	dword ptr [esi+8], 10h
		mov	eax, [esi]
		and	eax, 0FFFF0102h
		or	eax, 102h
		mov	[esi], eax
		mov	eax, [ebp+var_4]

loc_7F80E7ED:				; CODE XREF: sub_7F80E722+3Fj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F80E722	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80E7F6(int, int, void *lp, int, int, int)
sub_7F80E7F6	proc near		; CODE XREF: sub_7F80EB5D+1Ap
					; sub_7F80EBCF+1Ap ...

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
cchLength	= dword	ptr -8
lpString	= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
lp		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		mov	[ebp+var_C], eax
		push	esi
		mov	[ebp+var_10], eax
		push	edi
		mov	[ebp+lpString],	eax
		cmp	[ebp+arg_14], eax
		jz	short loc_7F80E814
		mov	ecx, [ebp+arg_14]
		mov	[ecx], eax

loc_7F80E814:				; CODE XREF: sub_7F80E7F6+17j
		mov	edi, [ebp+arg_C]
		xor	eax, eax
		test	edi, edi
		jz	short loc_7F80E81F
		mov	[edi], eax

loc_7F80E81F:				; CODE XREF: sub_7F80E7F6+25j
		xor	eax, eax
		cmp	[ebp+arg_10], eax
		jz	short loc_7F80E82B
		mov	ecx, [ebp+arg_10]
		mov	[ecx], eax

loc_7F80E82B:				; CODE XREF: sub_7F80E7F6+2Ej
		mov	ebx, [ebp+lp]
		push	ebx		; lp
		call	sub_7F80FAC3
		test	eax, eax
		jz	loc_7F80EA4B
		test	edi, edi
		jz	short loc_7F80E896
		cmp	word ptr [ebx+4], 0
		jz	short loc_7F80E896
		lea	esi, [ebx+8]
		test	esi, esi
		jz	short loc_7F80E896

loc_7F80E84E:				; CODE XREF: sub_7F80E7F6+63j
		mov	al, [esi]
		cmp	al, 20h
		jz	short loc_7F80E858
		cmp	al, 9
		jnz	short loc_7F80E85B

loc_7F80E858:				; CODE XREF: sub_7F80E7F6+5Cj
		inc	esi
		jmp	short loc_7F80E84E
; ---------------------------------------------------------------------------

loc_7F80E85B:				; CODE XREF: sub_7F80E7F6+60j
		cmp	byte ptr [esi],	0
		jz	short loc_7F80E896
		push	esi		; lpString
		call	ds:lstrlenA
		inc	eax
		push	edi
		push	[ebp+arg_4]
		push	eax
		push	[ebp+arg_0]
		mov	[ebp+cchLength], eax
		call	sub_7F80FD4C
		mov	[ebp+var_C], eax
		test	eax, eax
		jl	loc_7F80EA4B
		mov	eax, [ebp+cchLength]
		mov	edi, [edi]
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb

loc_7F80E896:				; CODE XREF: sub_7F80E7F6+48j
					; sub_7F80E7F6+4Fj ...
		movzx	eax, word ptr [ebx]
		cmp	eax, 2
		jz	short loc_7F80E8BB
		cmp	eax, 3
		jl	loc_7F80E978
		cmp	eax, 4
		jle	short loc_7F80E907
		cmp	eax, 5
		jz	short loc_7F80E8BB
		cmp	eax, 9
		jz	short loc_7F80E907
		jmp	loc_7F80E978
; ---------------------------------------------------------------------------

loc_7F80E8BB:				; CODE XREF: sub_7F80E7F6+A6j
					; sub_7F80E7F6+B9j
		movzx	eax, word ptr [ebx+4]
		mov	edi, offset aXabNsp ; "XAB NSP"
		mov	ecx, 8
		lea	esi, [eax+ebx+0Ch]
		lea	eax, [eax+ebx+8]
		repe cmpsb
		jnz	loc_7F80E978
		mov	[ebp+var_10], offset aSmtp_0 ; "SMTP"
		mov	[ebp+cchLength], 5
		cmp	dword ptr [eax+14h], 6
		jnz	short loc_7F80E8F2
		add	eax, 1Ch
		jmp	short loc_7F80E8F5
; ---------------------------------------------------------------------------

loc_7F80E8F2:				; CODE XREF: sub_7F80E7F6+F5j
		add	eax, 45h

loc_7F80E8F5:				; CODE XREF: sub_7F80E7F6+FAj
		mov	[ebp+lpString],	eax
		push	[ebp+lpString]	; lpString
		call	ds:lstrlenA
		inc	eax
		mov	[ebp+var_14], eax
		jmp	short loc_7F80E978
; ---------------------------------------------------------------------------

loc_7F80E907:				; CODE XREF: sub_7F80E7F6+B4j
					; sub_7F80E7F6+BEj
		cmp	word ptr [ebx+6], 0
		jz	short loc_7F80E978
		movzx	eax, word ptr [ebx+4]
		push	3Ah
		lea	esi, [eax+ebx+8]
		push	esi
		mov	[ebp+var_10], esi
		call	sub_7F82FE30
		add	esp, 8
		mov	[ebp+lpString],	eax
		test	eax, eax
		jz	short loc_7F80E945
		inc	[ebp+lpString]
		push	[ebp+lpString]	; lpString
		mov	eax, [ebp+lpString]
		sub	eax, esi
		mov	[ebp+cchLength], eax
		call	ds:lstrlenA
		inc	eax
		mov	[ebp+var_14], eax
		jmp	short loc_7F80E950
; ---------------------------------------------------------------------------

loc_7F80E945:				; CODE XREF: sub_7F80E7F6+133j
		push	esi		; lpString
		call	ds:lstrlenA
		inc	eax
		mov	[ebp+cchLength], eax

loc_7F80E950:				; CODE XREF: sub_7F80E7F6+14Dj
		cmp	[ebp+cchLength], 4
		jnz	short loc_7F80E978
		push	[ebp+cchLength]	; cchLength
		push	esi		; lpsz
		call	ds:CharUpperBuffA
		mov	ecx, ds:dword_7F8018D8
		cmp	[esi], ecx
		jnz	short loc_7F80E978
		mov	[ebp+var_10], offset aSmtp_0 ; "SMTP"
		mov	[ebp+cchLength], 5

loc_7F80E978:				; CODE XREF: sub_7F80E7F6+ABj
					; sub_7F80E7F6+C0j ...
		xor	ebx, ebx
		cmp	[ebp+arg_10], ebx
		jz	short loc_7F80E9CE
		cmp	[ebp+var_10], ebx
		jz	short loc_7F80E9CE
		mov	eax, [ebp+var_10]
		cmp	[eax], bl
		jz	short loc_7F80E9CE
		push	[ebp+arg_10]
		push	[ebp+arg_4]
		push	[ebp+cchLength]
		push	[ebp+arg_0]
		call	sub_7F80FD4C
		mov	[ebp+var_C], eax
		cmp	eax, ebx
		jl	loc_7F80EA4B
		mov	eax, [ebp+cchLength]
		mov	ecx, [ebp+arg_10]
		mov	esi, [ebp+var_10]
		mov	edi, [ecx]
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	ecx, [ebp+arg_10]
		mov	eax, [ebp+cchLength]
		mov	edx, [ecx]
		mov	[edx+eax-1], bl
		jmp	short loc_7F80E9DA
; ---------------------------------------------------------------------------

loc_7F80E9CE:				; CODE XREF: sub_7F80E7F6+187j
					; sub_7F80E7F6+18Cj ...
		xor	eax, eax
		cmp	[ebp+arg_10], eax
		jz	short loc_7F80E9DA
		mov	ecx, [ebp+arg_10]
		mov	[ecx], eax

loc_7F80E9DA:				; CODE XREF: sub_7F80E7F6+1D6j
					; sub_7F80E7F6+1DDj
		cmp	[ebp+arg_14], 0
		jz	short loc_7F80EA3F
		cmp	[ebp+lpString],	0
		jz	short loc_7F80EA3F
		mov	eax, [ebp+lpString]
		mov	al, [eax]
		test	al, al
		jz	short loc_7F80EA3F
		cmp	[ebp+lpString],	0
		jz	short loc_7F80E9F9
		test	al, al
		jnz	short loc_7F80EA0C

loc_7F80E9F9:				; CODE XREF: sub_7F80E7F6+1FDj
		mov	eax, offset aInvalid ; "Invalid"
		push	eax		; lpString
		mov	[ebp+lpString],	eax
		call	ds:lstrlenA
		inc	eax
		mov	[ebp+var_14], eax

loc_7F80EA0C:				; CODE XREF: sub_7F80E7F6+201j
		push	[ebp+arg_14]
		push	[ebp+arg_4]
		push	[ebp+var_14]
		push	[ebp+arg_0]
		call	sub_7F80FD4C
		mov	[ebp+var_C], eax
		test	eax, eax
		jl	short loc_7F80EA4B
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+arg_14]
		mov	esi, [ebp+lpString]
		mov	edi, [ecx]
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		jmp	short loc_7F80EA4B
; ---------------------------------------------------------------------------

loc_7F80EA3F:				; CODE XREF: sub_7F80E7F6+1E8j
					; sub_7F80E7F6+1EEj ...
		xor	eax, eax
		cmp	[ebp+arg_14], eax
		jz	short loc_7F80EA4B
		mov	ecx, [ebp+arg_14]
		mov	[ecx], eax

loc_7F80EA4B:				; CODE XREF: sub_7F80E7F6+40j
					; sub_7F80E7F6+87j ...
		mov	eax, [ebp+var_C]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F80E7F6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80EA57(int, void *lp, int, int, int)
sub_7F80EA57	proc near		; DATA XREF: .text:7F8013F4o
					; .text:7F801608o

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
lp		= 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
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	edi, [ebp+lp]
		mov	esi, 1
		cmp	[edi], bx
		mov	[ebp+var_4], ebx
		jz	short loc_7F80EAAD

loc_7F80EA72:				; CODE XREF: sub_7F80EA57+54j
		push	edi		; lp
		call	sub_7F80FAC3
		test	eax, eax
		jz	short loc_7F80EAAD
		cmp	[ebp+arg_0], ebx
		jb	short loc_7F80EAAD
		lea	ecx, [edi+8]
		inc	[ebp+var_4]
		movzx	eax, word ptr [edi+4]
		add	ebx, eax
		push	ecx		; lpString
		call	ds:lstrlenA
		lea	esi, [eax+esi+1]
		movzx	ecx, word ptr [edi+4]
		movzx	eax, word ptr [edi+6]
		add	eax, ecx
		add	eax, 8
		add	edi, eax
		cmp	word ptr [edi],	0
		jnz	short loc_7F80EA72

loc_7F80EAAD:				; CODE XREF: sub_7F80EA57+19j
					; sub_7F80EA57+23j ...
		mov	ebx, [ebp+arg_10]
		lea	eax, [ebx+8]
		push	eax
		push	[ebp+arg_C]
		push	esi
		push	[ebp+arg_8]
		call	sub_7F80FD4C
		mov	[ebp+var_8], eax
		test	eax, eax
		jge	short loc_7F80EADC
		mov	eax, [ebx]
		mov	ecx, [ebp+var_8]
		and	eax, 0FFFF000Ah
		mov	[ebx+8], ecx
		or	al, 0Ah
		mov	[ebx], eax
		mov	eax, ecx
		jmp	short loc_7F80EB54
; ---------------------------------------------------------------------------

loc_7F80EADC:				; CODE XREF: sub_7F80EA57+6Ej
		mov	eax, [ebp+lp]
		mov	edx, [ebx+8]
		mov	ecx, [ebp+var_4]
		mov	[ebp+var_C], eax
		dec	[ebp+var_4]
		test	ecx, ecx
		jz	short loc_7F80EB38

loc_7F80EAEF:				; CODE XREF: sub_7F80EA57+DFj
		mov	esi, [ebp+var_C]
		mov	ecx, 0FFFFFFFFh
		add	esi, 8
		sub	eax, eax
		mov	edi, esi
		repne scasb
		not	ecx
		mov	edi, edx
		lea	eax, [ecx-1]
		mov	ecx, eax
		add	edx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+var_C]
		mov	byte ptr [edx],	3Bh
		movzx	ecx, word ptr [eax+4]
		movzx	esi, word ptr [eax+6]
		inc	edx
		add	ecx, esi
		add	ecx, 8
		mov	eax, [ebp+var_4]
		add	[ebp+var_C], ecx
		dec	[ebp+var_4]
		test	eax, eax
		jnz	short loc_7F80EAEF

loc_7F80EB38:				; CODE XREF: sub_7F80EA57+96j
		cmp	[ebx+8], edx
		jnb	short loc_7F80EB43
		mov	byte ptr [edx-1], 0
		jmp	short loc_7F80EB46
; ---------------------------------------------------------------------------

loc_7F80EB43:				; CODE XREF: sub_7F80EA57+E4j
		mov	byte ptr [edx],	0

loc_7F80EB46:				; CODE XREF: sub_7F80EA57+EAj
		mov	eax, [ebx]
		and	eax, 0FFFF001Eh
		or	al, 1Eh
		mov	[ebx], eax
		mov	eax, [ebp+var_8]

loc_7F80EB54:				; CODE XREF: sub_7F80EA57+83j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F80EA57	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80EB5D(int, void *lp, int, int, int)
sub_7F80EB5D	proc near		; CODE XREF: sub_7F80D7AB+197p
					; DATA XREF: .text:7F801448o ...

var_4		= dword	ptr -4
lp		= 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, 4
		push	ebx
		lea	eax, [ebp+var_4]
		push	esi
		mov	ebx, [ebp+arg_C]
		push	eax		; int
		push	0		; int
		push	0		; int
		push	[ebp+lp]	; lp
		push	ebx		; int
		push	[ebp+arg_8]	; int
		call	sub_7F80E7F6
		mov	esi, eax
		test	esi, esi
		jge	short loc_7F80EB99
		test	ebx, ebx
		jnz	short loc_7F80EBC5
		cmp	[ebp+var_4], 0
		jz	short loc_7F80EBC5
		push	[ebp+var_4]
		push	[ebp+arg_8]
		call	sub_7F80FD78
		jmp	short loc_7F80EBC5
; ---------------------------------------------------------------------------

loc_7F80EB99:				; CODE XREF: sub_7F80EB5D+23j
		mov	ecx, [ebp+arg_10]
		cmp	[ebp+var_4], 0
		mov	eax, [ecx]
		jz	short loc_7F80EBB5
		and	eax, 0FFFF001Eh
		mov	edx, [ebp+var_4]
		or	al, 1Eh
		mov	[ecx+8], edx
		mov	[ecx], eax
		jmp	short loc_7F80EBC5
; ---------------------------------------------------------------------------

loc_7F80EBB5:				; CODE XREF: sub_7F80EB5D+45j
		mov	dword ptr [ecx+8], 8004010Fh
		and	eax, 0FFFF000Ah
		or	al, 0Ah
		mov	[ecx], eax

loc_7F80EBC5:				; CODE XREF: sub_7F80EB5D+27j
					; sub_7F80EB5D+2Dj ...
		mov	eax, esi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F80EB5D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80EBCF(int, void *lp, int, int, int)
sub_7F80EBCF	proc near		; CODE XREF: sub_7F80D7AB+178p
					; DATA XREF: .text:7F80143Co ...

var_4		= dword	ptr -4
lp		= 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, 4
		push	ebx
		lea	eax, [ebp+var_4]
		push	edi
		mov	ebx, [ebp+arg_C]
		push	0		; int
		push	eax		; int
		push	0		; int
		push	[ebp+lp]	; lp
		push	ebx		; int
		push	[ebp+arg_8]	; int
		call	sub_7F80E7F6
		mov	edi, eax
		test	edi, edi
		jge	short loc_7F80EC0B
		test	ebx, ebx
		jnz	short loc_7F80EC37
		cmp	[ebp+var_4], 0
		jz	short loc_7F80EC37
		push	[ebp+var_4]
		push	[ebp+arg_8]
		call	sub_7F80FD78
		jmp	short loc_7F80EC37
; ---------------------------------------------------------------------------

loc_7F80EC0B:				; CODE XREF: sub_7F80EBCF+23j
		mov	ecx, [ebp+arg_10]
		cmp	[ebp+var_4], 0
		mov	eax, [ecx]
		jz	short loc_7F80EC27
		and	eax, 0FFFF001Eh
		mov	edx, [ebp+var_4]
		or	al, 1Eh
		mov	[ecx+8], edx
		mov	[ecx], eax
		jmp	short loc_7F80EC37
; ---------------------------------------------------------------------------

loc_7F80EC27:				; CODE XREF: sub_7F80EBCF+45j
		mov	dword ptr [ecx+8], 8004010Fh
		and	eax, 0FFFF000Ah
		or	al, 0Ah
		mov	[ecx], eax

loc_7F80EC37:				; CODE XREF: sub_7F80EBCF+27j
					; sub_7F80EBCF+2Dj ...
		mov	eax, edi
		pop	edi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F80EBCF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80EC41(int, void *lp, int, int, int)
sub_7F80EC41	proc near		; CODE XREF: sub_7F80D7AB+159p
					; DATA XREF: .text:7F801430o ...

var_4		= dword	ptr -4
lp		= 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, 4
		push	ebx
		lea	eax, [ebp+var_4]
		push	edi
		mov	ebx, [ebp+arg_C]
		push	0		; int
		push	0		; int
		push	eax		; int
		push	[ebp+lp]	; lp
		push	ebx		; int
		push	[ebp+arg_8]	; int
		call	sub_7F80E7F6
		mov	edi, eax
		test	edi, edi
		jge	short loc_7F80EC7D
		test	ebx, ebx
		jnz	short loc_7F80ECA9
		cmp	[ebp+var_4], 0
		jz	short loc_7F80ECA9
		push	[ebp+var_4]
		push	[ebp+arg_8]
		call	sub_7F80FD78
		jmp	short loc_7F80ECA9
; ---------------------------------------------------------------------------

loc_7F80EC7D:				; CODE XREF: sub_7F80EC41+23j
		mov	ecx, [ebp+arg_10]
		cmp	[ebp+var_4], 0
		mov	eax, [ecx]
		jz	short loc_7F80EC99
		and	eax, 0FFFF001Eh
		mov	edx, [ebp+var_4]
		or	al, 1Eh
		mov	[ecx+8], edx
		mov	[ecx], eax
		jmp	short loc_7F80ECA9
; ---------------------------------------------------------------------------

loc_7F80EC99:				; CODE XREF: sub_7F80EC41+45j
		mov	dword ptr [ecx+8], 8004010Fh
		and	eax, 0FFFF000Ah
		or	al, 0Ah
		mov	[ecx], eax

loc_7F80ECA9:				; CODE XREF: sub_7F80EC41+27j
					; sub_7F80EC41+2Dj ...
		mov	eax, edi
		pop	edi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F80EC41	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80ECB3(int, int, LPCSTR lpString,	LPCSTR,	LPCSTR,	int, int, int)
sub_7F80ECB3	proc near		; CODE XREF: sub_7F80EE72+56p
					; sub_7F80F339+5Fp

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
lpString	= 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_4], 0
		test	[ebp+arg_14], 7FFFFFFFh
		push	ebx
		push	esi
		push	edi
		jz	short loc_7F80ECD6
		mov	eax, 80040106h
		jmp	loc_7F80EE69
; ---------------------------------------------------------------------------

loc_7F80ECD6:				; CODE XREF: sub_7F80ECB3+17j
					; sub_7F80ECB3+33j
		mov	eax, [ebp+arg_C]
		mov	al, [eax]
		cmp	al, 20h
		jz	short loc_7F80ECE3
		cmp	al, 9
		jnz	short loc_7F80ECE8

loc_7F80ECE3:				; CODE XREF: sub_7F80ECB3+2Aj
		inc	[ebp+arg_C]
		jmp	short loc_7F80ECD6
; ---------------------------------------------------------------------------

loc_7F80ECE8:				; CODE XREF: sub_7F80ECB3+2Ej
					; sub_7F80ECB3+45j
		mov	eax, [ebp+arg_10]
		mov	al, [eax]
		cmp	al, 20h
		jz	short loc_7F80ECF5
		cmp	al, 9
		jnz	short loc_7F80ECFA

loc_7F80ECF5:				; CODE XREF: sub_7F80ECB3+3Cj
		inc	[ebp+arg_10]
		jmp	short loc_7F80ECE8
; ---------------------------------------------------------------------------

loc_7F80ECFA:				; CODE XREF: sub_7F80ECB3+40j
		cmp	[ebp+lpString],	0
		jnz	loc_7F80EE4E
		mov	eax, [ebp+arg_10]
		mov	[ebp+lpString],	eax

loc_7F80ED0A:				; CODE XREF: sub_7F80ECB3+1A6j
		xor	ebx, ebx
		mov	eax, [ebp+lpString]
		cmp	[eax], bl
		jz	loc_7F80EE64
		mov	eax, [ebp+arg_C]
		cmp	[eax], bl
		jz	loc_7F80EE64
		mov	eax, [ebp+arg_10]
		cmp	[eax], bl
		jz	loc_7F80EE64
		push	[ebp+lpString]	; lpString
		call	ds:lstrlenA
		push	[ebp+arg_10]	; lpString
		mov	esi, eax
		call	ds:lstrlenA
		push	[ebp+arg_C]	; lpString
		add	esi, eax
		call	ds:lstrlenA
		lea	ecx, [esi+eax+1Bh]
		lea	eax, [ebp+var_4]
		push	eax
		mov	[ebp+var_8], ecx
		push	[ebp+arg_4]
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F80FD4C
		test	eax, eax
		jl	loc_7F80EE69
		mov	edx, [ebp+var_8]
		mov	edi, [ebp+var_4]
		xor	eax, eax
		mov	ecx, edx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		mov	eax, [ebp+var_4]
		mov	esi, offset unk_7F835828
		mov	dword ptr [eax+14h], 0
		mov	edi, [ebp+var_4]
		add	edi, 4
		movsd
		movsd
		movsd
		movsd
		push	[ebp+lpString]	; lpString
		mov	ebx, [ebp+var_4]
		add	ebx, 18h
		call	ds:lstrlenA
		mov	edi, ebx
		mov	esi, [ebp+lpString]
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		push	[ebp+lpString]	; lpString
		call	ds:lstrlenA
		add	ebx, eax
		push	[ebp+arg_C]	; lpString
		mov	byte ptr [ebx],	0
		inc	ebx
		mov	edi, ebx
		call	ds:lstrlenA
		mov	esi, [ebp+arg_C]
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	esi, ebx
		cmp	byte ptr [ebx],	20h
		jz	short loc_7F80EDFE

loc_7F80EDEE:				; CODE XREF: sub_7F80ECB3+149j
		mov	al, [ebx]
		cmp	al, 9
		jz	short loc_7F80EDFE
		test	al, al
		jz	short loc_7F80EDFE
		inc	ebx
		cmp	byte ptr [ebx],	20h
		jnz	short loc_7F80EDEE

loc_7F80EDFE:				; CODE XREF: sub_7F80ECB3+139j
					; sub_7F80ECB3+13Fj ...
		push	esi		; lpString
		mov	byte ptr [ebx],	0
		inc	ebx
		call	ds:lstrlenA
		push	eax		; cchLength
		mov	edi, ebx
		push	esi		; lpsz
		call	ds:CharUpperBuffA
		push	[ebp+arg_10]	; lpString
		call	ds:lstrlenA
		mov	esi, [ebp+arg_10]
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		push	[ebp+arg_10]	; lpString
		call	ds:lstrlenA
		mov	edx, [ebp+arg_1C]
		mov	byte ptr [ebx+eax], 0
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_18]
		mov	[edx], ecx
		mov	ecx, [ebp+var_8]
		mov	[eax], ecx
		xor	eax, eax
		jmp	short loc_7F80EE69
; ---------------------------------------------------------------------------

loc_7F80EE4E:				; CODE XREF: sub_7F80ECB3+4Bj
					; sub_7F80ECB3+1AFj
		mov	eax, [ebp+lpString]
		mov	al, [eax]
		cmp	al, 20h
		jz	short loc_7F80EE5F
		cmp	al, 9
		jnz	loc_7F80ED0A

loc_7F80EE5F:				; CODE XREF: sub_7F80ECB3+1A2j
		inc	[ebp+lpString]
		jmp	short loc_7F80EE4E
; ---------------------------------------------------------------------------

loc_7F80EE64:				; CODE XREF: sub_7F80ECB3+5Ej
					; sub_7F80ECB3+69j ...
		mov	eax, 80070057h

loc_7F80EE69:				; CODE XREF: sub_7F80ECB3+1Ej
					; sub_7F80ECB3+B2j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	20h
sub_7F80ECB3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80EE72(int, void *lp, int, int, int)
sub_7F80EE72	proc near		; CODE XREF: sub_7F80D7AB+11Dp
					; DATA XREF: .text:7F801460o ...

lpString	= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
lp		= 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
		push	ebx
		lea	eax, [ebp+var_4]
		push	esi
		xor	ebx, ebx
		push	edi
		lea	ecx, [ebp+var_8]
		mov	edi, [ebp+arg_10]
		push	eax		; int
		push	ecx		; int
		lea	edx, [ebp+lpString]
		push	edx		; int
		mov	[edi+8], ebx
		push	[ebp+lp]	; lp
		push	ebx		; int
		push	[ebp+arg_8]	; int
		call	sub_7F80E7F6
		cmp	eax, ebx
		mov	esi, eax
		jl	short loc_7F80EEF5
		cmp	[ebp+var_8], ebx
		jz	short loc_7F80EEE3
		cmp	[ebp+var_4], ebx
		jz	short loc_7F80EEE3
		lea	eax, [edi+0Ch]
		mov	[edi+8], ebx
		push	eax		; int
		mov	[eax], ebx
		lea	eax, [edi+8]
		push	eax		; int
		push	ebx		; int
		push	[ebp+var_4]	; LPCSTR
		push	[ebp+var_8]	; LPCSTR
		push	[ebp+lpString]	; lpString
		push	[ebp+arg_C]	; int
		push	[ebp+arg_8]	; int
		call	sub_7F80ECB3
		cmp	eax, ebx
		mov	esi, eax
		jnz	short loc_7F80EEF5
		mov	eax, [edi]
		and	eax, 0FFFF0102h
		or	eax, 102h
		mov	[edi], eax
		jmp	short loc_7F80EEF5
; ---------------------------------------------------------------------------

loc_7F80EEE3:				; CODE XREF: sub_7F80EE72+32j
					; sub_7F80EE72+37j
		mov	dword ptr [edi+8], 8004010Fh
		mov	eax, [edi]
		and	eax, 0FFFF000Ah
		or	al, 0Ah
		mov	[edi], eax

loc_7F80EEF5:				; CODE XREF: sub_7F80EE72+2Dj
					; sub_7F80EE72+5Fj ...
		push	[ebp+lpString]
		push	[ebp+arg_8]
		call	sub_7F80FD78
		push	[ebp+var_8]
		push	[ebp+arg_8]
		call	sub_7F80FD78
		push	[ebp+var_4]
		push	[ebp+arg_8]
		call	sub_7F80FD78
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F80EE72	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80EF21(int, void *lp, int, int, int)
sub_7F80EF21	proc near		; DATA XREF: .text:7F801454o
					; .text:7F801490o ...

var_10		= dword	ptr -10h
lpsz		= dword	ptr -0Ch
var_8		= dword	ptr -8
lpString	= dword	ptr -4
lp		= 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, 10h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_10]
		xor	edi, edi
		lea	eax, [ebp+lpString]
		push	eax		; int
		mov	[ebp+lpsz], edi
		lea	ecx, [ebp+var_8]
		mov	[ebp+var_8], edi
		push	ecx		; int
		mov	[ebp+lpString],	edi
		push	edi		; int
		mov	[esi+8], edi
		push	[ebp+lp]	; lp
		push	edi		; int
		push	[ebp+arg_8]	; int
		call	sub_7F80E7F6
		mov	[ebp+var_10], eax
		cmp	eax, edi
		jl	loc_7F80F001
		cmp	[ebp+var_8], edi
		jz	loc_7F80EFEF
		cmp	[ebp+lpString],	edi
		jz	loc_7F80EFEF
		mov	[esi+8], edi
		mov	[esi+0Ch], edi
		push	[ebp+lpString]	; lpString
		call	ds:lstrlenA
		push	[ebp+var_8]	; lpString
		mov	ebx, eax
		call	ds:lstrlenA
		lea	ebx, [ebx+eax+2]
		lea	eax, [ebp+lpsz]
		push	eax
		push	[ebp+arg_C]
		push	ebx
		push	[ebp+arg_8]
		call	sub_7F80FD4C
		mov	[ebp+var_10], eax
		cmp	eax, edi
		jl	short loc_7F80F001
		mov	edi, [ebp+lpsz]
		xor	eax, eax
		mov	ecx, ebx
		shr	ecx, 2
		rep stosd
		mov	ecx, ebx
		and	ecx, 3
		rep stosb
		push	[ebp+lpString]
		push	[ebp+var_8]
		push	offset aSS_2	; "%s:%s"
		push	[ebp+lpsz]	; LPSTR
		call	ds:wsprintfA
		add	esp, 10h
		push	ebx		; cchLength
		push	[ebp+lpsz]	; lpsz
		call	ds:CharUpperBuffA
		mov	eax, [ebp+lpsz]
		mov	[esi+8], ebx
		mov	[esi+0Ch], eax
		mov	eax, [esi]
		and	eax, 0FFFF0102h
		or	eax, 102h
		mov	[esi], eax
		jmp	short loc_7F80F001
; ---------------------------------------------------------------------------

loc_7F80EFEF:				; CODE XREF: sub_7F80EF21+3Dj
					; sub_7F80EF21+46j
		mov	dword ptr [esi+8], 8004010Fh
		mov	eax, [esi]
		and	eax, 0FFFF000Ah
		or	al, 0Ah
		mov	[esi], eax

loc_7F80F001:				; CODE XREF: sub_7F80EF21+34j
					; sub_7F80EF21+7Fj ...
		push	[ebp+var_8]
		push	[ebp+arg_8]
		call	sub_7F80FD78
		push	[ebp+lpString]
		push	[ebp+arg_8]
		call	sub_7F80FD78
		mov	eax, [ebp+var_10]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F80EF21	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80F023(int, int, LPCSTR, int, int, int)
sub_7F80F023	proc near		; CODE XREF: sub_7F80F1DB+1Ap
					; sub_7F80F24D+1Ep ...

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
lpString	= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		mov	[ebp+var_C], eax
		push	esi
		mov	ebx, [ebp+arg_10]
		push	edi
		cmp	ebx, eax
		jnz	short loc_7F80F046
		cmp	[ebp+arg_14], eax
		jnz	short loc_7F80F046
		cmp	[ebp+arg_C], eax
		jz	loc_7F80F1CF

loc_7F80F046:				; CODE XREF: sub_7F80F023+13j
					; sub_7F80F023+18j
		xor	eax, eax
		test	ebx, ebx
		jz	short loc_7F80F04E
		mov	[ebx], eax

loc_7F80F04E:				; CODE XREF: sub_7F80F023+27j
		xor	eax, eax
		cmp	[ebp+arg_14], eax
		jz	short loc_7F80F05A
		mov	ecx, [ebp+arg_14]
		mov	[ecx], eax

loc_7F80F05A:				; CODE XREF: sub_7F80F023+30j
		xor	eax, eax
		cmp	[ebp+arg_C], eax
		jz	short loc_7F80F066
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax

loc_7F80F066:				; CODE XREF: sub_7F80F023+3Cj
		mov	eax, [ebp+arg_8]
		add	[ebp+arg_8], 2
		movzx	ecx, word ptr [eax]
		cmp	[ebp+arg_C], 0
		mov	[ebp+lpString],	ecx
		jz	short loc_7F80F0DE
		test	ecx, ecx
		jz	short loc_7F80F0DE
		mov	esi, [ebp+arg_8]

loc_7F80F080:				; CODE XREF: sub_7F80F023+68j
		mov	al, [esi]
		cmp	al, 20h
		jz	short loc_7F80F08A
		cmp	al, 9
		jnz	short loc_7F80F08D

loc_7F80F08A:				; CODE XREF: sub_7F80F023+61j
		inc	esi
		jmp	short loc_7F80F080
; ---------------------------------------------------------------------------

loc_7F80F08D:				; CODE XREF: sub_7F80F023+65j
		cmp	byte ptr [esi],	0
		jz	short loc_7F80F0DE
		mov	ecx, [ebp+arg_8]
		mov	eax, [ebp+lpString]
		push	[ebp+arg_C]
		sub	ecx, esi
		push	[ebp+arg_4]
		lea	edx, [ecx+eax+1]
		push	edx
		mov	[ebp+var_8], edx
		push	[ebp+arg_0]
		call	sub_7F80FD4C
		mov	[ebp+var_C], eax
		test	eax, eax
		jl	loc_7F80F1CF
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_C]
		mov	edi, [ecx]
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	ecx, [ebp+arg_C]
		mov	edx, [ebp+var_8]
		mov	eax, [ecx]
		mov	byte ptr [eax+edx-1], 0

loc_7F80F0DE:				; CODE XREF: sub_7F80F023+54j
					; sub_7F80F023+58j ...
		mov	eax, [ebp+lpString]
		add	[ebp+arg_8], eax
		mov	ecx, [ebp+arg_8]
		cmp	word ptr [ecx],	0
		jz	loc_7F80F1CF
		add	[ebp+arg_8], 2
		push	3Ah
		push	[ebp+arg_8]
		call	sub_7F82FE30
		add	esp, 8
		mov	[ebp+lpString],	eax
		test	eax, eax
		jz	short loc_7F80F124
		inc	[ebp+lpString]
		push	[ebp+lpString]	; lpString
		mov	eax, [ebp+lpString]
		sub	eax, [ebp+arg_8]
		mov	[ebp+var_8], eax
		call	ds:lstrlenA
		inc	eax
		mov	[ebp+var_10], eax
		jmp	short loc_7F80F131
; ---------------------------------------------------------------------------

loc_7F80F124:				; CODE XREF: sub_7F80F023+E4j
		push	[ebp+arg_8]	; lpString
		call	ds:lstrlenA
		inc	eax
		mov	[ebp+var_8], eax

loc_7F80F131:				; CODE XREF: sub_7F80F023+FFj
		test	ebx, ebx
		jz	short loc_7F80F175
		mov	eax, [ebp+arg_8]
		cmp	byte ptr [eax],	0
		jz	short loc_7F80F175
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+var_8]
		push	[ebp+arg_0]
		call	sub_7F80FD4C
		mov	[ebp+var_C], eax
		test	eax, eax
		jl	short loc_7F80F1CF
		mov	eax, [ebp+var_8]
		mov	edi, [ebx]
		mov	esi, [ebp+arg_8]
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	edx, [ebx]
		mov	eax, [ebp+var_8]
		mov	byte ptr [edx+eax-1], 0
		jmp	short loc_7F80F17D
; ---------------------------------------------------------------------------

loc_7F80F175:				; CODE XREF: sub_7F80F023+110j
					; sub_7F80F023+118j
		xor	eax, eax
		test	ebx, ebx
		jz	short loc_7F80F17D
		mov	[ebx], eax

loc_7F80F17D:				; CODE XREF: sub_7F80F023+150j
					; sub_7F80F023+156j
		xor	ebx, ebx
		cmp	[ebp+arg_14], ebx
		jz	short loc_7F80F1C3
		cmp	[ebp+lpString],	ebx
		jz	short loc_7F80F1C3
		mov	eax, [ebp+lpString]
		cmp	[eax], bl
		jz	short loc_7F80F1C3
		push	[ebp+arg_14]
		push	[ebp+arg_4]
		push	[ebp+var_10]
		push	[ebp+arg_0]
		call	sub_7F80FD4C
		mov	[ebp+var_C], eax
		cmp	eax, ebx
		jl	short loc_7F80F1CF
		mov	eax, [ebp+var_10]
		mov	ecx, [ebp+arg_14]
		mov	esi, [ebp+lpString]
		mov	edi, [ecx]
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		jmp	short loc_7F80F1CF
; ---------------------------------------------------------------------------

loc_7F80F1C3:				; CODE XREF: sub_7F80F023+15Fj
					; sub_7F80F023+164j ...
		xor	eax, eax
		cmp	[ebp+arg_14], eax
		jz	short loc_7F80F1CF
		mov	ecx, [ebp+arg_14]
		mov	[ecx], eax

loc_7F80F1CF:				; CODE XREF: sub_7F80F023+1Dj
					; sub_7F80F023+92j ...
		mov	eax, [ebp+var_C]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F80F023	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80F1DB(int, LPCSTR, int, int, int)
sub_7F80F1DB	proc near		; DATA XREF: .text:7F801544o
					; .text:7F801580o ...

var_4		= dword	ptr -4
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, 4
		push	ebx
		lea	eax, [ebp+var_4]
		push	edi
		mov	ebx, [ebp+arg_C]
		push	0		; int
		push	0		; int
		push	eax		; int
		push	[ebp+arg_4]	; LPCSTR
		push	ebx		; int
		push	[ebp+arg_8]	; int
		call	sub_7F80F023
		mov	edi, eax
		test	edi, edi
		jge	short loc_7F80F217
		test	ebx, ebx
		jnz	short loc_7F80F243
		cmp	[ebp+var_4], 0
		jz	short loc_7F80F243
		push	[ebp+var_4]
		push	[ebp+arg_8]
		call	sub_7F80FD78
		jmp	short loc_7F80F243
; ---------------------------------------------------------------------------

loc_7F80F217:				; CODE XREF: sub_7F80F1DB+23j
		mov	ecx, [ebp+arg_10]
		cmp	[ebp+var_4], 0
		mov	eax, [ecx]
		jz	short loc_7F80F233
		and	eax, 0FFFF001Eh
		mov	edx, [ebp+var_4]
		or	al, 1Eh
		mov	[ecx+8], edx
		mov	[ecx], eax
		jmp	short loc_7F80F243
; ---------------------------------------------------------------------------

loc_7F80F233:				; CODE XREF: sub_7F80F1DB+45j
		mov	dword ptr [ecx+8], 8004010Fh
		and	eax, 0FFFF000Ah
		or	al, 0Ah
		mov	[ecx], eax

loc_7F80F243:				; CODE XREF: sub_7F80F1DB+27j
					; sub_7F80F1DB+2Dj ...
		mov	eax, edi
		pop	edi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F80F1DB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80F24D(int, LPCSTR, int, int, int)
sub_7F80F24D	proc near		; DATA XREF: .text:7F80155Co
					; .text:7F801598o ...

var_4		= dword	ptr -4
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, 4
		push	ebx
		lea	eax, [ebp+var_4]
		push	esi
		push	edi
		xor	esi, esi
		push	eax		; int
		push	esi		; int
		mov	ebx, [ebp+arg_C]
		push	esi		; int
		mov	[ebp+var_4], esi
		push	[ebp+arg_4]	; LPCSTR
		push	ebx		; int
		push	[ebp+arg_8]	; int
		call	sub_7F80F023
		cmp	eax, esi
		mov	edi, eax
		jge	short loc_7F80F28C
		test	ebx, ebx
		jnz	short loc_7F80F2B8
		cmp	[ebp+var_4], esi
		jz	short loc_7F80F2B8
		push	[ebp+var_4]
		push	[ebp+arg_8]
		call	sub_7F80FD78
		jmp	short loc_7F80F2B8
; ---------------------------------------------------------------------------

loc_7F80F28C:				; CODE XREF: sub_7F80F24D+27j
		mov	ecx, [ebp+arg_10]
		cmp	[ebp+var_4], 0
		mov	eax, [ecx]
		jz	short loc_7F80F2A8
		and	eax, 0FFFF001Eh
		mov	edx, [ebp+var_4]
		or	al, 1Eh
		mov	[ecx+8], edx
		mov	[ecx], eax
		jmp	short loc_7F80F2B8
; ---------------------------------------------------------------------------

loc_7F80F2A8:				; CODE XREF: sub_7F80F24D+48j
		mov	dword ptr [ecx+8], 8004010Fh
		and	eax, 0FFFF000Ah
		or	al, 0Ah
		mov	[ecx], eax

loc_7F80F2B8:				; CODE XREF: sub_7F80F24D+2Bj
					; sub_7F80F24D+30j ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F80F24D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80F2C3(int, LPCSTR, int, int, int)
sub_7F80F2C3	proc near		; DATA XREF: .text:7F801550o
					; .text:7F80158Co ...

var_4		= dword	ptr -4
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, 4
		push	ebx
		lea	eax, [ebp+var_4]
		push	esi
		push	edi
		xor	esi, esi
		mov	ebx, [ebp+arg_C]
		push	esi		; int
		mov	[ebp+var_4], esi
		push	eax		; int
		push	esi		; int
		push	[ebp+arg_4]	; LPCSTR
		push	ebx		; int
		push	[ebp+arg_8]	; int
		call	sub_7F80F023
		cmp	eax, esi
		mov	edi, eax
		jge	short loc_7F80F302
		test	ebx, ebx
		jnz	short loc_7F80F32E
		cmp	[ebp+var_4], esi
		jz	short loc_7F80F32E
		push	[ebp+var_4]
		push	[ebp+arg_8]
		call	sub_7F80FD78
		jmp	short loc_7F80F32E
; ---------------------------------------------------------------------------

loc_7F80F302:				; CODE XREF: sub_7F80F2C3+27j
		mov	ecx, [ebp+arg_10]
		cmp	[ebp+var_4], 0
		mov	eax, [ecx]
		jz	short loc_7F80F31E
		and	eax, 0FFFF001Eh
		mov	edx, [ebp+var_4]
		or	al, 1Eh
		mov	[ecx+8], edx
		mov	[ecx], eax
		jmp	short loc_7F80F32E
; ---------------------------------------------------------------------------

loc_7F80F31E:				; CODE XREF: sub_7F80F2C3+48j
		mov	dword ptr [ecx+8], 8004010Fh
		and	eax, 0FFFF000Ah
		or	al, 0Ah
		mov	[ecx], eax

loc_7F80F32E:				; CODE XREF: sub_7F80F2C3+2Bj
					; sub_7F80F2C3+30j ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F80F2C3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80F339(int, LPCSTR, int, int, int)
sub_7F80F339	proc near		; DATA XREF: .text:7F801538o
					; .text:7F801574o ...

lpString	= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
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
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	edi, [ebp+arg_10]
		lea	eax, [ebp+var_4]
		push	eax		; int
		mov	[ebp+lpString],	ebx
		lea	ecx, [ebp+var_8]
		lea	edx, [ebp+lpString]
		push	ecx		; int
		mov	[ebp+var_8], ebx
		push	edx		; int
		mov	[ebp+var_4], ebx
		push	[ebp+arg_4]	; LPCSTR
		push	ebx		; int
		push	[ebp+arg_8]	; int
		mov	[edi+8], ebx
		call	sub_7F80F023
		cmp	eax, ebx
		mov	esi, eax
		jl	short loc_7F80F3C5
		cmp	[ebp+var_8], ebx
		jz	short loc_7F80F3B3
		cmp	[ebp+var_4], ebx
		jz	short loc_7F80F3B3
		lea	eax, [edi+0Ch]
		mov	[edi+8], ebx
		push	eax		; int
		mov	[eax], ebx
		lea	eax, [edi+8]
		push	eax		; int
		push	ebx		; int
		push	[ebp+var_4]	; LPCSTR
		push	[ebp+var_8]	; LPCSTR
		push	[ebp+lpString]	; lpString
		push	[ebp+arg_C]	; int
		push	[ebp+arg_8]	; int
		call	sub_7F80ECB3
		cmp	eax, ebx
		mov	esi, eax
		jnz	short loc_7F80F3C5
		mov	eax, [edi]
		and	eax, 0FFFF0102h
		or	eax, 102h
		mov	[edi], eax
		jmp	short loc_7F80F3C5
; ---------------------------------------------------------------------------

loc_7F80F3B3:				; CODE XREF: sub_7F80F339+3Bj
					; sub_7F80F339+40j
		mov	dword ptr [edi+8], 8004010Fh
		mov	eax, [edi]
		and	eax, 0FFFF000Ah
		or	al, 0Ah
		mov	[edi], eax

loc_7F80F3C5:				; CODE XREF: sub_7F80F339+36j
					; sub_7F80F339+68j ...
		push	[ebp+lpString]
		push	[ebp+arg_8]
		call	sub_7F80FD78
		push	[ebp+var_8]
		push	[ebp+arg_8]
		call	sub_7F80FD78
		push	[ebp+var_4]
		push	[ebp+arg_8]
		call	sub_7F80FD78
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F80F339	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80F3F1(int, LPCSTR, int, int, int)
sub_7F80F3F1	proc near		; DATA XREF: .text:7F801568o
					; .text:7F8015A4o ...

var_10		= dword	ptr -10h
lpsz		= dword	ptr -0Ch
lpString	= dword	ptr -8
var_4		= dword	ptr -4
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, 10h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_10]
		xor	edi, edi
		lea	eax, [ebp+var_4]
		push	eax		; int
		mov	[ebp+lpsz], edi
		lea	ecx, [ebp+lpString]
		mov	[ebp+lpString],	edi
		push	ecx		; int
		mov	[ebp+var_4], edi
		push	edi		; int
		mov	[esi+8], edi
		push	[ebp+arg_4]	; LPCSTR
		push	edi		; int
		push	[ebp+arg_8]	; int
		call	sub_7F80F023
		mov	[ebp+var_10], eax
		cmp	eax, edi
		jl	loc_7F80F4D1
		cmp	[ebp+lpString],	edi
		jz	loc_7F80F4BF
		cmp	[ebp+var_4], edi
		jz	loc_7F80F4BF
		mov	[esi+8], edi
		mov	[esi+0Ch], edi
		push	[ebp+lpString]	; lpString
		call	ds:lstrlenA
		push	[ebp+var_4]	; lpString
		mov	ebx, eax
		call	ds:lstrlenA
		lea	ebx, [ebx+eax+2]
		lea	eax, [ebp+lpsz]
		push	eax
		push	[ebp+arg_C]
		push	ebx
		push	[ebp+arg_8]
		call	sub_7F80FD4C
		mov	[ebp+var_10], eax
		cmp	eax, edi
		jl	short loc_7F80F4D1
		mov	edi, [ebp+lpsz]
		xor	eax, eax
		mov	ecx, ebx
		shr	ecx, 2
		rep stosd
		mov	ecx, ebx
		and	ecx, 3
		rep stosb
		push	[ebp+var_4]
		push	[ebp+lpString]
		push	offset aSS_2	; "%s:%s"
		push	[ebp+lpsz]	; LPSTR
		call	ds:wsprintfA
		add	esp, 10h
		push	ebx		; cchLength
		push	[ebp+lpsz]	; lpsz
		call	ds:CharUpperBuffA
		mov	eax, [ebp+lpsz]
		mov	[esi+8], ebx
		mov	[esi+0Ch], eax
		mov	eax, [esi]
		and	eax, 0FFFF0102h
		or	eax, 102h
		mov	[esi], eax
		jmp	short loc_7F80F4D1
; ---------------------------------------------------------------------------

loc_7F80F4BF:				; CODE XREF: sub_7F80F3F1+3Dj
					; sub_7F80F3F1+46j
		mov	dword ptr [esi+8], 8004010Fh
		mov	eax, [esi]
		and	eax, 0FFFF000Ah
		or	al, 0Ah
		mov	[esi], eax

loc_7F80F4D1:				; CODE XREF: sub_7F80F3F1+34j
					; sub_7F80F3F1+7Fj ...
		push	[ebp+lpString]
		push	[ebp+arg_8]
		call	sub_7F80FD78
		push	[ebp+var_4]
		push	[ebp+arg_8]
		call	sub_7F80FD78
		mov	eax, [ebp+var_10]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F80F3F1	endp

; ---------------------------------------------------------------------------

loc_7F80F4F3:				; DATA XREF: .text:7F801520o
		mov	eax, [esp+8]
		mov	ecx, [esp+14h]
		mov	edx, [eax]
		mov	eax, [ecx]
		and	eax, 0FFFF0003h
		mov	[ecx+8], edx
		or	al, 3
		mov	[ecx], eax
		xor	eax, eax
		retn	14h
; ---------------------------------------------------------------------------

loc_7F80F510:				; DATA XREF: .text:7F801514o
		mov	eax, [esp+8]
		mov	ecx, [esp+14h]
		cmp	word ptr [eax],	1
		sbb	eax, eax
		inc	eax
		mov	[ecx+8], ax
		mov	eax, [ecx]
		and	eax, 0FFFF000Bh
		or	al, 0Bh
		mov	[ecx], eax
		xor	eax, eax
		retn	14h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80F533	proc near		; CODE XREF: sub_7F80D1F3+87p
					; sub_7F80DDB5+9Cp

lp		= dword	ptr -8
ucb		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	eax, [esp+arg_4]
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+lp], 0
		push	ebx
		push	esi
		push	edi
		mov	ebx, ds:dword_7F801828[eax*4]
		test	ebx, ebx
		jnz	short loc_7F80F557
		mov	ebx, offset dword_7F801398

loc_7F80F557:				; CODE XREF: sub_7F80F533+1Dj
		mov	esi, ebx

loc_7F80F559:				; CODE XREF: sub_7F80F533+82j
		test	esi, esi
		jz	short loc_7F80F56E
		mov	eax, [ebp+arg_10]
		push	dword ptr [eax]
		push	esi
		call	sub_7F80E272
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F80F58C

loc_7F80F56E:				; CODE XREF: sub_7F80F533+28j
		cmp	ebx, offset dword_7F801398
		jz	short loc_7F80F588
		mov	ebx, offset dword_7F801398
		mov	eax, [ebp+arg_10]
		push	dword ptr [eax]
		push	ebx
		call	sub_7F80E272
		mov	esi, eax

loc_7F80F588:				; CODE XREF: sub_7F80F533+41j
		test	esi, esi
		jz	short loc_7F80F5B7

loc_7F80F58C:				; CODE XREF: sub_7F80F533+39j
		lea	eax, [ebp+ucb]
		push	eax
		push	dword ptr [esi]
		push	[ebp+arg_0]
		call	sub_7F810E3F
		push	eax
		call	sub_7F80F8B4
		mov	edi, eax
		test	edi, edi
		jge	short loc_7F80F5C1
		cmp	edi, 8004010Fh
		jnz	loc_7F80F642
		add	esi, 0Ch
		jmp	short loc_7F80F559
; ---------------------------------------------------------------------------

loc_7F80F5B7:				; CODE XREF: sub_7F80F533+57j
		mov	edi, 8004010Fh
		jmp	loc_7F80F642
; ---------------------------------------------------------------------------

loc_7F80F5C1:				; CODE XREF: sub_7F80F533+71j
		cmp	[ebp+ucb], 4000h
		jbe	short loc_7F80F5D1
		mov	edi, 8007000Eh
		jmp	short loc_7F80F642
; ---------------------------------------------------------------------------

loc_7F80F5D1:				; CODE XREF: sub_7F80F533+95j
		lea	eax, [ebp+lp]
		push	eax
		push	0
		push	[ebp+ucb]
		push	[ebp+arg_8]
		call	sub_7F80FD4C
		mov	edi, eax
		test	edi, edi
		jl	short loc_7F80F646
		lea	eax, [ebp+ucb]
		push	eax
		push	[ebp+lp]
		push	dword ptr [esi]
		push	[ebp+arg_0]
		call	sub_7F810E8D
		push	eax
		call	sub_7F80F8B4
		mov	edi, eax
		test	edi, edi
		jl	short loc_7F80F646
		push	[ebp+ucb]	; ucb
		push	[ebp+lp]	; lp
		push	dword ptr [esi]	; int
		call	sub_7F80FC77
		test	eax, eax
		jnz	short loc_7F80F62E
		mov	eax, [ebp+arg_10]
		cmp	dword ptr [eax], 37010102h
		jnz	short loc_7F80F627
		cmp	[ebp+ucb], 0
		jz	short loc_7F80F62E

loc_7F80F627:				; CODE XREF: sub_7F80F533+ECj
		mov	edi, 8004010Fh
		jmp	short loc_7F80F642
; ---------------------------------------------------------------------------

loc_7F80F62E:				; CODE XREF: sub_7F80F533+E1j
					; sub_7F80F533+F2j
		push	[ebp+arg_14]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+lp]
		push	[ebp+ucb]
		call	dword ptr [esi+8]
		mov	edi, eax

loc_7F80F642:				; CODE XREF: sub_7F80F533+79j
					; sub_7F80F533+89j ...
		test	edi, edi
		jge	short loc_7F80F65E

loc_7F80F646:				; CODE XREF: sub_7F80F533+B3j
					; sub_7F80F533+D0j
		mov	eax, [ebp+arg_14]
		mov	ecx, [eax]
		mov	[eax+8], edi
		and	ecx, 0FFFF000Ah
		mov	edi, 40380h
		or	cl, 0Ah
		mov	[eax], ecx

loc_7F80F65E:				; CODE XREF: sub_7F80F533+111j
		push	[ebp+lp]
		push	[ebp+arg_8]
		call	sub_7F80FD78
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F80F533	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80F674	proc near		; CODE XREF: sub_7F8045B6+B8p
					; sub_7F8045B6+1BAp

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= word ptr -4
var_2		= word ptr -2
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, 14h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_2], bx
		lea	eax, [ebp+var_2]
		push	eax
		mov	[ebp+var_10], ebx
		push	[ebp+arg_0]
		mov	[ebp+var_C], ebx
		call	sub_7F810EFE
		cmp	[ebp+var_2], bx
		jz	short loc_7F80F6DC
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		movsx	eax, [ebp+var_2]
		shl	eax, 2
		push	eax
		push	[ebp+arg_8]
		call	sub_7F80FD4C
		mov	[ebp+var_8], eax
		cmp	eax, ebx
		jl	loc_7F80F7D7
		lea	eax, [ebp+var_2]
		push	eax
		push	[ebp+var_10]
		push	ebx
		push	[ebp+arg_0]
		call	sub_7F810EE0
		push	eax
		call	sub_7F80F8B4
		mov	[ebp+var_8], eax
		cmp	eax, ebx
		jl	loc_7F80F7D7

loc_7F80F6DC:				; CODE XREF: sub_7F80F674+25j
		mov	ax, [ebp+var_2]
		mov	esi, [ebp+var_10]
		mov	[ebp+var_4], ax
		xor	edi, edi
		cmp	ax, di
		jz	short loc_7F80F72B
		mov	eax, [ebp+arg_4]
		mov	ecx, ds:dword_7F801828[eax*4]
		mov	[ebp+var_8], ecx

loc_7F80F6FB:				; CODE XREF: sub_7F80F674+B5j
		cmp	[ebp+var_8], 0
		jz	short loc_7F80F70F
		push	dword ptr [esi]
		push	[ebp+var_8]
		call	sub_7F80E299
		test	eax, eax
		jnz	short loc_7F80F71B

loc_7F80F70F:				; CODE XREF: sub_7F80F674+8Bj
		push	dword ptr [esi]
		push	offset dword_7F801398
		call	sub_7F80E299

loc_7F80F71B:				; CODE XREF: sub_7F80F674+99j
		add	esi, 4
		dec	[ebp+var_4]
		add	edi, eax
		cmp	[ebp+var_4], 0
		jnz	short loc_7F80F6FB

loc_7F80F72B:				; CODE XREF: sub_7F80F674+78j
		mov	esi, [ebp+arg_C]
		test	esi, esi
		jz	short loc_7F80F734
		mov	ebx, [esi]

loc_7F80F734:				; CODE XREF: sub_7F80F674+BCj
		add	edi, ebx
		lea	eax, [ebp+var_C]
		push	eax
		push	0
		lea	ecx, ds:4[edi*4]
		push	ecx
		push	[ebp+arg_8]
		call	sub_7F80FD4C
		mov	[ebp+var_8], eax
		test	eax, eax
		jl	loc_7F80F7D7
		mov	eax, [ebp+var_C]
		add	eax, 4
		test	ebx, ebx
		mov	[ebp+var_14], eax
		jz	short loc_7F80F77E
		lea	ecx, ds:0[ebx*4]
		add	esi, 4
		shr	ecx, 2
		mov	edi, eax
		rep movsd
		mov	ecx, [ebp+var_14]
		lea	eax, [ecx+ebx*4]
		mov	[ebp+var_14], eax

loc_7F80F77E:				; CODE XREF: sub_7F80F674+EEj
		mov	ax, [ebp+var_2]
		mov	edi, [ebp+var_10]
		mov	[ebp+var_4], ax
		xor	esi, esi
		cmp	ax, si
		jz	short loc_7F80F7C8

loc_7F80F790:				; CODE XREF: sub_7F80F674+152j
		push	[ebp+arg_4]
		push	dword ptr [edi]
		call	sub_7F80E226
		test	eax, eax
		jz	short loc_7F80F7BA
		mov	ecx, [eax]
		cmp	[edi], ecx
		jnz	short loc_7F80F7BA

loc_7F80F7A4:				; CODE XREF: sub_7F80F674+144j
		mov	edx, [eax+4]
		mov	ecx, [ebp+var_14]
		add	eax, 0Ch
		inc	esi
		add	[ebp+var_14], 4
		mov	[ecx], edx
		mov	ecx, [eax]
		cmp	[edi], ecx
		jz	short loc_7F80F7A4

loc_7F80F7BA:				; CODE XREF: sub_7F80F674+128j
					; sub_7F80F674+12Ej
		dec	[ebp+var_4]
		add	edi, 4
		cmp	[ebp+var_4], 0
		jnz	short loc_7F80F790

loc_7F80F7C8:				; CODE XREF: sub_7F80F674+11Aj
		add	esi, ebx
		mov	ecx, [ebp+var_C]
		mov	eax, [ebp+arg_10]
		mov	[ecx], esi
		mov	ecx, [ebp+var_C]
		mov	[eax], ecx

loc_7F80F7D7:				; CODE XREF: sub_7F80F674+41j
					; sub_7F80F674+62j ...
		push	[ebp+var_10]
		push	[ebp+arg_8]
		call	sub_7F80FD78
		cmp	[ebp+var_8], 0
		jge	short loc_7F80F7F9
		cmp	[ebp+var_C], 0
		jz	short loc_7F80F7F9
		push	[ebp+var_C]
		push	[ebp+arg_8]
		call	sub_7F80FD78

loc_7F80F7F9:				; CODE XREF: sub_7F80F674+172j
					; sub_7F80F674+178j
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F80F674	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80F805	proc near		; CODE XREF: sub_7F80493B+61p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ecx, 10h
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, offset dword_7F8019B0
		mov	esi, [ebp+arg_C]
		repe cmpsb
		jnz	short loc_7F80F85E
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_7F80FA8E
		test	eax, eax
		jnz	short loc_7F80F85E
		push	[ebp+arg_4]
		push	offset dword_7F801398
		call	sub_7F80E272
		test	eax, eax
		jz	short loc_7F80F85E
		mov	ecx, [eax]
		mov	eax, ecx
		shr	eax, 10h
		test	ax, ax
		jz	short loc_7F80F85E
		cmp	ax, 3
		jz	short loc_7F80F85E
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F80DF67
		jmp	short loc_7F80F863
; ---------------------------------------------------------------------------

loc_7F80F85E:				; CODE XREF: sub_7F80F805+14j
					; sub_7F80F805+23j ...
		mov	eax, 80040102h

loc_7F80F863:				; CODE XREF: sub_7F80F805+57j
		pop	edi
		pop	esi
		pop	ebp
		retn	1Ch
sub_7F80F805	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80F869	proc near		; CODE XREF: sub_7F80CBB5+18Cp
					; sub_7F80D1F3:loc_7F80D381p

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	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		cmp	dword ptr [esi+58h], 0
		jnz	short loc_7F80F87F
		mov	eax, 80070057h
		jmp	short loc_7F80F8AD
; ---------------------------------------------------------------------------

loc_7F80F87F:				; CODE XREF: sub_7F80F869+Dj
		mov	ebx, [ebp+arg_C]
		push	ebx
		push	[ebp+arg_4]
		push	1Ch
		push	esi
		call	sub_7F80FD4C
		test	eax, eax
		jge	short loc_7F80F899
		mov	eax, 8007000Eh
		jmp	short loc_7F80F8AD
; ---------------------------------------------------------------------------

loc_7F80F899:				; CODE XREF: sub_7F80F869+27j
		mov	edi, [ebx]
		mov	esi, [esi+58h]
		mov	ecx, 7
		rep movsd
		mov	edx, [ebx]
		mov	ecx, [ebp+arg_8]
		mov	[edx+18h], ecx

loc_7F80F8AD:				; CODE XREF: sub_7F80F869+14j
					; sub_7F80F869+2Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_7F80F869	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80F8B4	proc near		; CODE XREF: sub_7F802896+35p
					; sub_7F802C9E+2Fp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jnz	short loc_7F80F8C0
		xor	eax, eax
		jmp	short locret_7F80F919
; ---------------------------------------------------------------------------

loc_7F80F8C0:				; CODE XREF: sub_7F80F8B4+6j
		cmp	eax, 1000h
		jl	short loc_7F80F8D7
		cmp	eax, 101Eh
		jg	short loc_7F80F8D7
		mov	eax, [eax*4+7F7FD850h]
		jmp	short locret_7F80F919
; ---------------------------------------------------------------------------

loc_7F80F8D7:				; CODE XREF: sub_7F80F8B4+11j
					; sub_7F80F8B4+18j
		cmp	eax, 600h
		jl	short loc_7F80F8EC
		cmp	eax, 620h
		jg	short loc_7F80F8EC
		mov	eax, 80040115h
		jmp	short locret_7F80F919
; ---------------------------------------------------------------------------

loc_7F80F8EC:				; CODE XREF: sub_7F80F8B4+28j
					; sub_7F80F8B4+2Fj
		cmp	eax, 200h
		jl	short loc_7F80F901
		cmp	eax, 215h
		jg	short loc_7F80F901
		mov	eax, 80040116h
		jmp	short locret_7F80F919
; ---------------------------------------------------------------------------

loc_7F80F901:				; CODE XREF: sub_7F80F8B4+3Dj
					; sub_7F80F8B4+44j
		cmp	eax, 400h
		jl	short loc_7F80F914
		cmp	eax, 40Bh
		mov	eax, 8007000Eh
		jle	short locret_7F80F919

loc_7F80F914:				; CODE XREF: sub_7F80F8B4+52j
		mov	eax, 80004005h

locret_7F80F919:			; CODE XREF: sub_7F80F8B4+Aj
					; sub_7F80F8B4+21j ...
		retn	4
sub_7F80F8B4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80F91C	proc near		; CODE XREF: sub_7F8028D4+46p
					; sub_7F80B4E1+E8p

var_20		= dword	ptr -20h
var_18		= byte ptr -18h
var_10		= dword	ptr -10h
var_4		= byte ptr -4
lpString	= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= word ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	ebx
		push	esi
		push	edi
		mov	esi, offset aTmp ; "TMP:"
		lea	edi, [ebp+var_10]
		movsd
		movsb
		mov	edi, [ebp+arg_4]
		test	edi, edi
		jz	short loc_7F80F96E
		mov	edx, 0FFFFFFFFh
		sub	eax, eax
		mov	ecx, edx
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	ebx, ecx
		mov	esi, edi
		mov	ecx, edx
		lea	edi, [ebp+var_10]
		sub	eax, eax
		repne scasb
		add	edi, edx
		mov	ecx, ebx
		shr	ecx, 2
		rep movsd
		mov	ecx, ebx
		and	ecx, 3
		rep movsb
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_7F82FE50
		add	esp, 4

loc_7F80F96E:				; CODE XREF: sub_7F80F91C+18j
		mov	edi, [ebp+arg_8]
		test	edi, edi
		jz	short loc_7F80F9A3
		mov	ecx, 0FFFFFFFFh
		sub	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	eax, ecx
		shr	ecx, 2
		mov	esi, edi
		lea	edi, [ebp+var_20]
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		lea	ecx, [ebp+var_20]
		push	ecx
		call	sub_7F82FE50
		add	esp, 4
		jmp	short loc_7F80F9A7
; ---------------------------------------------------------------------------

loc_7F80F9A3:				; CODE XREF: sub_7F80F91C+57j
		mov	byte ptr [ebp+var_20], 0

loc_7F80F9A7:				; CODE XREF: sub_7F80F91C+85j
		mov	si, [ebp+arg_C]
		push	0		; int
		push	0		; int
		lea	ecx, [ebp+var_20]
		push	[ebp+arg_18]	; int
		push	esi		; __int16
		push	ecx		; int
		lea	eax, [ebp+var_10]
		push	eax		; int
		push	[ebp+lpString]	; lpString
		call	sub_7F8207A6
		cmp	eax, 202h
		jz	short loc_7F80F9DA
		cmp	eax, 60Eh
		jz	short loc_7F80F9E0
		cmp	eax, 101Bh
		jz	short loc_7F80F9E6
		jmp	short loc_7F80FA07
; ---------------------------------------------------------------------------

loc_7F80F9DA:				; CODE XREF: sub_7F80F91C+ACj
		mov	[ebp+var_4], 0
		jmp	short loc_7F80F9EF
; ---------------------------------------------------------------------------

loc_7F80F9E0:				; CODE XREF: sub_7F80F91C+B3j
		mov	[ebp+var_18], 0
		jmp	short loc_7F80F9EF
; ---------------------------------------------------------------------------

loc_7F80F9E6:				; CODE XREF: sub_7F80F91C+BAj
		and	si, 0FFF9h
		or	si, 8

loc_7F80F9EF:				; CODE XREF: sub_7F80F91C+C2j
					; sub_7F80F91C+C8j
		push	0		; int
		lea	ecx, [ebp+var_20]
		push	0		; int
		lea	edx, [ebp+var_10]
		push	[ebp+arg_18]	; int
		push	esi		; __int16
		push	ecx		; int
		push	edx		; int
		push	[ebp+lpString]	; lpString
		call	sub_7F8207A6

loc_7F80FA07:				; CODE XREF: sub_7F80F91C+BCj
		test	eax, eax
		jz	short loc_7F80FA34
		cmp	eax, 202h
		jz	short loc_7F80FA3F
		cmp	eax, 253h
		jz	short loc_7F80FA53
		mov	ecx, [ebp+arg_14]
		cmp	eax, 60Eh
		jz	short loc_7F80FA67
		mov	edx, [ebp+arg_10]
		mov	dword ptr [ecx], 17h
		mov	dword ptr [edx], 82h
		jmp	short loc_7F80FA76
; ---------------------------------------------------------------------------

loc_7F80FA34:				; CODE XREF: sub_7F80F91C+EDj
		mov	ecx, [ebp+arg_10]
		mov	dword ptr [ecx], 0
		jmp	short loc_7F80FA76
; ---------------------------------------------------------------------------

loc_7F80FA3F:				; CODE XREF: sub_7F80F91C+F4j
		mov	ecx, [ebp+arg_14]
		mov	edx, [ebp+arg_10]
		mov	dword ptr [ecx], 16h
		mov	dword ptr [edx], 84h
		jmp	short loc_7F80FA76
; ---------------------------------------------------------------------------

loc_7F80FA53:				; CODE XREF: sub_7F80F91C+FBj
		mov	ecx, [ebp+arg_14]
		mov	edx, [ebp+arg_10]
		mov	dword ptr [ecx], 16h
		mov	dword ptr [edx], 83h
		jmp	short loc_7F80FA76
; ---------------------------------------------------------------------------

loc_7F80FA67:				; CODE XREF: sub_7F80F91C+105j
		mov	edx, [ebp+arg_10]
		mov	dword ptr [ecx], 15h
		mov	dword ptr [edx], 81h

loc_7F80FA76:				; CODE XREF: sub_7F80F91C+116j
					; sub_7F80F91C+121j ...
		push	eax
		call	sub_7F80F8B4
		test	eax, eax
		jge	short loc_7F80FA85
		mov	eax, 80040111h

loc_7F80FA85:				; CODE XREF: sub_7F80F91C+162j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	1Ch
sub_7F80F91C	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80FA8E	proc near		; CODE XREF: sub_7F80F805+1Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		test	ecx, ecx
		jz	short loc_7F80FAB7
		shr	[esp+arg_0], 10h
		mov	eax, [ecx]
		add	ecx, 4
		test	eax, eax
		jz	short loc_7F80FAB7

loc_7F80FAA4:				; CODE XREF: sub_7F80FA8E+27j
		mov	edx, [ecx]
		shr	edx, 10h
		cmp	edx, [esp+arg_0]
		jz	short loc_7F80FABC
		dec	eax
		add	ecx, 4
		test	eax, eax
		jnz	short loc_7F80FAA4

loc_7F80FAB7:				; CODE XREF: sub_7F80FA8E+6j
					; sub_7F80FA8E+14j
		xor	eax, eax

locret_7F80FAB9:			; CODE XREF: sub_7F80FA8E+33j
		retn	8
; ---------------------------------------------------------------------------

loc_7F80FABC:				; CODE XREF: sub_7F80FA8E+1Fj
		mov	eax, 1
		jmp	short locret_7F80FAB9
sub_7F80FA8E	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F80FAC3(void *lp)
sub_7F80FAC3	proc near		; CODE XREF: sub_7F80D991+A9p
					; sub_7F80D991+154p ...

lp		= dword	ptr  4

		push	esi
		push	edi
		xor	edi, edi
		push	8		; ucb
		mov	esi, [esp+0Ch+lp]
		push	esi		; lp
		call	ds:IsBadReadPtr
		test	eax, eax
		jnz	short loc_7F80FB1D
		movzx	eax, word ptr [esi+6]
		movzx	ecx, word ptr [esi+4]
		add	eax, ecx
		add	eax, 8
		push	eax		; ucb
		push	esi		; lp
		call	ds:IsBadReadPtr
		test	eax, eax
		jnz	short loc_7F80FB1D
		cmp	word ptr [esi],	0Ah
		jnb	short loc_7F80FB1D
		mov	ax, [esi+4]
		lea	ecx, [esi+8]
		test	ax, ax
		jz	short loc_7F80FB18
		movzx	esi, ax
		cmp	byte ptr [esi+ecx-1], 0
		jz	short loc_7F80FB18
		push	ecx		; lpString
		call	ds:lstrlenA
		cmp	eax, esi
		ja	short loc_7F80FB1D

loc_7F80FB18:				; CODE XREF: sub_7F80FAC3+3Ej
					; sub_7F80FAC3+48j
		mov	edi, 1

loc_7F80FB1D:				; CODE XREF: sub_7F80FAC3+13j
					; sub_7F80FAC3+2Cj ...
		mov	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_7F80FAC3	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F80FB24(int, void *lp, UINT_PTR ucb)
sub_7F80FB24	proc near		; CODE XREF: sub_7F80FC77+1Ep
					; DATA XREF: .data:off_7F835800o

lp		= dword	ptr  8
ucb		= dword	ptr  0Ch

		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	edi, [esp+0Ch+ucb]
		mov	esi, [esp+0Ch+lp]
		push	edi		; ucb
		push	esi		; lp
		call	ds:IsBadReadPtr
		test	eax, eax
		jnz	short loc_7F80FB55
		cmp	edi, 8
		jb	short loc_7F80FB55
		cmp	word ptr [esi],	0Ah
		jnb	short loc_7F80FB55
		movzx	eax, word ptr [esi+6]
		cmp	eax, edi
		ja	short loc_7F80FB55
		mov	ebx, 1

loc_7F80FB55:				; CODE XREF: sub_7F80FB24+17j
					; sub_7F80FB24+1Cj ...
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_7F80FB24	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F80FB5D(int, void *lp, UINT_PTR ucb)
sub_7F80FB5D	proc near		; CODE XREF: sub_7F80FC77+1Ep
					; DATA XREF: .data:7F835804o

lp		= dword	ptr  8
ucb		= dword	ptr  0Ch

		push	[esp+ucb]	; ucb
		push	[esp+4+lp]	; lp
		call	ds:IsBadReadPtr
		cmp	eax, 1
		sbb	eax, eax
		neg	eax
		retn	0Ch
sub_7F80FB5D	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F80FB75(int, void *lp, UINT_PTR ucb)
sub_7F80FB75	proc near		; CODE XREF: sub_7F80FC77+1Ep
					; DATA XREF: .data:7F835808o

lp		= dword	ptr  8
ucb		= dword	ptr  0Ch

		push	[esp+ucb]	; ucb
		push	[esp+4+lp]	; lp
		call	ds:IsBadReadPtr
		cmp	eax, 1
		sbb	eax, eax
		neg	eax
		retn	0Ch
sub_7F80FB75	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F80FB8D(int, void *lp, UINT_PTR ucb)
sub_7F80FB8D	proc near		; CODE XREF: sub_7F80FC77+1Ep
					; DATA XREF: .data:7F83580Co

lp		= dword	ptr  8
ucb		= dword	ptr  0Ch

		push	[esp+ucb]	; ucb
		push	[esp+4+lp]	; lp
		call	ds:IsBadReadPtr
		test	eax, eax
		jnz	short loc_7F80FBAB
		cmp	[esp+ucb], 0Eh
		mov	eax, 1
		jnb	short locret_7F80FBAD

loc_7F80FBAB:				; CODE XREF: sub_7F80FB8D+10j
		xor	eax, eax

locret_7F80FBAD:			; CODE XREF: sub_7F80FB8D+1Cj
		retn	0Ch
sub_7F80FB8D	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F80FBB0(int, void *lp, UINT_PTR ucb)
sub_7F80FBB0	proc near		; CODE XREF: sub_7F80FC77+1Ep
					; DATA XREF: .data:7F835810o

lp		= dword	ptr  8
ucb		= dword	ptr  0Ch

		push	[esp+ucb]	; ucb
		push	[esp+4+lp]	; lp
		call	ds:IsBadReadPtr
		test	eax, eax
		jnz	short loc_7F80FBCE
		cmp	[esp+ucb], 2
		mov	eax, 1
		jnb	short locret_7F80FBD0

loc_7F80FBCE:				; CODE XREF: sub_7F80FBB0+10j
		xor	eax, eax

locret_7F80FBD0:			; CODE XREF: sub_7F80FBB0+1Cj
		retn	0Ch
sub_7F80FBB0	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F80FBD3(int, void *lp, UINT_PTR ucb)
sub_7F80FBD3	proc near		; CODE XREF: sub_7F80FC77+1Ep
					; DATA XREF: .data:7F835814o

lp		= dword	ptr  8
ucb		= dword	ptr  0Ch

		push	[esp+ucb]	; ucb
		push	[esp+4+lp]	; lp
		call	ds:IsBadReadPtr
		test	eax, eax
		jnz	short loc_7F80FBF1
		cmp	[esp+ucb], 4
		mov	eax, 1
		jnb	short locret_7F80FBF3

loc_7F80FBF1:				; CODE XREF: sub_7F80FBD3+10j
		xor	eax, eax

locret_7F80FBF3:			; CODE XREF: sub_7F80FBD3+1Cj
		retn	0Ch
sub_7F80FBD3	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F80FBF6(int, void *lp, UINT_PTR ucb)
sub_7F80FBF6	proc near		; CODE XREF: sub_7F80FC77+1Ep
					; DATA XREF: .data:7F835818o

lp		= dword	ptr  8
ucb		= dword	ptr  0Ch

		push	[esp+ucb]	; ucb
		push	[esp+4+lp]	; lp
		call	ds:IsBadReadPtr
		test	eax, eax
		jnz	short loc_7F80FC14
		cmp	[esp+ucb], 1
		mov	eax, 1
		jnb	short locret_7F80FC16

loc_7F80FC14:				; CODE XREF: sub_7F80FBF6+10j
		xor	eax, eax

locret_7F80FC16:			; CODE XREF: sub_7F80FBF6+1Cj
		retn	0Ch
sub_7F80FBF6	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F80FC19(int, void *lp, UINT_PTR ucb)
sub_7F80FC19	proc near		; CODE XREF: sub_7F80FC77+1Ep
					; DATA XREF: .data:7F83581Co

lp		= dword	ptr  8
ucb		= dword	ptr  0Ch

		push	[esp+ucb]	; ucb
		push	[esp+4+lp]	; lp
		call	ds:IsBadReadPtr
		test	eax, eax
		jnz	short loc_7F80FC37
		cmp	[esp+ucb], 2
		mov	eax, 1
		jnb	short locret_7F80FC39

loc_7F80FC37:				; CODE XREF: sub_7F80FC19+10j
		xor	eax, eax

locret_7F80FC39:			; CODE XREF: sub_7F80FC19+1Cj
		retn	0Ch
sub_7F80FC19	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F80FC3C(int, void *lp, UINT_PTR ucb)
sub_7F80FC3C	proc near		; CODE XREF: sub_7F80FC77+1Ep
					; DATA XREF: .data:7F835820o

lp		= dword	ptr  8
ucb		= dword	ptr  0Ch

		push	[esp+ucb]	; ucb
		push	[esp+4+lp]	; lp
		call	ds:IsBadReadPtr
		test	eax, eax
		jnz	short loc_7F80FC5A
		cmp	[esp+ucb], 4
		mov	eax, 1
		jnb	short locret_7F80FC5C

loc_7F80FC5A:				; CODE XREF: sub_7F80FC3C+10j
		xor	eax, eax

locret_7F80FC5C:			; CODE XREF: sub_7F80FC3C+1Cj
		retn	0Ch
sub_7F80FC3C	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F80FC5F(int, void *lp, UINT_PTR ucb)
sub_7F80FC5F	proc near		; CODE XREF: sub_7F80FC77+1Ep
					; DATA XREF: .data:7F835824o

lp		= dword	ptr  8
ucb		= dword	ptr  0Ch

		push	[esp+ucb]	; ucb
		push	[esp+4+lp]	; lp
		call	ds:IsBadReadPtr
		cmp	eax, 1
		sbb	eax, eax
		neg	eax
		retn	0Ch
sub_7F80FC5F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80FC77(int, void *lp, UINT_PTR ucb)
sub_7F80FC77	proc near		; CODE XREF: sub_7F80D991+8Bp
					; sub_7F80F533+DAp

arg_0		= dword	ptr  8
lp		= dword	ptr  0Ch
ucb		= dword	ptr  10h

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		mov	ecx, [esp+arg_0]
		shr	ecx, 10h
		cmp	cx, 0Bh
		jnb	short loc_7F80FC9C
		push	[ebp+ucb]	; ucb
		movzx	eax, cx
		push	[ebp+lp]	; lp
		push	[ebp+arg_0]	; int
		call	off_7F835800[eax*4]

loc_7F80FC9C:				; CODE XREF: sub_7F80FC77+10j
		pop	ebp
		retn	0Ch
sub_7F80FC77	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80FCA0(CHAR)
sub_7F80FCA0	proc near		; CODE XREF: sub_7F80E722+8Bp
					; sub_7F80E722+9Dp

arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		xor	bl, bl
		push	dword ptr [ebp+arg_0] ;	ch
		call	ds:IsCharUpperA
		test	eax, eax
		mov	eax, offset a0123456789abcd ; "0123456789ABCDEF"
		jnz	short loc_7F80FCBD
		mov	eax, offset a0123456789ab_0 ; "0123456789abcdef"

loc_7F80FCBD:				; CODE XREF: sub_7F80FCA0+16j
		mov	dl, [ebp+arg_0]
		cmp	[eax], dl
		jz	short loc_7F80FCD6

loc_7F80FCC4:				; CODE XREF: sub_7F80FCA0+34j
		cmp	bl, 10h
		jnb	short loc_7F80FCDB
		inc	bl
		mov	dl, [ebp+arg_0]
		movzx	ecx, bl
		cmp	[ecx+eax], dl
		jnz	short loc_7F80FCC4

loc_7F80FCD6:				; CODE XREF: sub_7F80FCA0+22j
		cmp	bl, 10h
		jb	short loc_7F80FCDD

loc_7F80FCDB:				; CODE XREF: sub_7F80FCA0+27j
		xor	bl, bl

loc_7F80FCDD:				; CODE XREF: sub_7F80FCA0+39j
		mov	al, bl
		pop	ebx
		pop	ebp
		retn	4
sub_7F80FCA0	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80FCE4	proc near		; CODE XREF: sub_7F802896+13p
					; sub_7F80B4E1+89p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx
		mov	word ptr [eax],	3
		mov	[eax+6], ecx
		mov	[eax+2], cx
		mov	[eax+0Ah], ecx
		mov	[eax+0Eh], ecx
		mov	[eax+12h], ecx
		mov	word ptr [eax+4], 0FA0h
		mov	word ptr [eax+16h], 1
		retn	4
sub_7F80FCE4	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80FD0E	proc near		; CODE XREF: sub_7F802896+Ap
					; sub_7F80B4E1+80p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx
		mov	word ptr [eax],	3
		mov	[eax+6], ecx
		mov	[eax+2], cx
		mov	[eax+0Ah], ecx
		mov	[eax+0Eh], ecx
		mov	[eax+12h], ecx
		mov	word ptr [eax+4], 0FA6h
		mov	word ptr [eax+16h], 1
		retn	4
sub_7F80FD0E	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80FD38	proc near		; CODE XREF: sub_7F80C96E+A3p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	edx, [esp+4+arg_0]
		push	[esp+4+arg_4]
		mov	eax, [edx+2Ch]
		call	dword ptr [eax]
		retn	0Ch
sub_7F80FD38	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80FD4C	proc near		; CODE XREF: sub_7F80CBB5+57p
					; sub_7F80CBB5+2C4p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	eax, [esp+arg_8]
		mov	ebp, esp
		test	eax, eax
		push	[ebp+arg_C]
		jz	short loc_7F80FD69
		push	eax
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx+2Ch]
		push	[ebp+arg_4]
		call	dword ptr [eax+4]
		jmp	short loc_7F80FD74
; ---------------------------------------------------------------------------

loc_7F80FD69:				; CODE XREF: sub_7F80FD4C+Cj
		mov	edx, [ebp+arg_0]
		push	[ebp+arg_4]
		mov	eax, [edx+2Ch]
		call	dword ptr [eax]

loc_7F80FD74:				; CODE XREF: sub_7F80FD4C+1Bj
		pop	ebp
		retn	10h
sub_7F80FD4C	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F80FD78	proc near		; CODE XREF: sub_7F80CB32+49p
					; sub_7F80CB32+52p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		test	eax, eax
		jz	short locret_7F80FD8B
		mov	ecx, [esp+arg_0]
		push	eax
		mov	eax, [ecx+2Ch]
		call	dword ptr [eax+8]

locret_7F80FD8B:			; CODE XREF: sub_7F80FD78+6j
		retn	8
sub_7F80FD78	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F80FD8E	proc near		; CODE XREF: sub_7F8207A6+242p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
lpString	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= byte ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		lea	eax, [ebp+var_4]
		mov	[ebp+var_8], 74634180h
		push	esi
		lea	ecx, [ebp+var_8]
		push	edi
		xor	esi, esi
		push	eax
		mov	[ebp+var_4], esi
		push	1
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		test	eax, eax
		jz	short loc_7F80FE0D
		cmp	eax, 1001h
		jnz	short loc_7F80FE00
		test	[ebp+arg_C], 8
		jz	short loc_7F80FDD5
		mov	dword_7F83587C,	59h
		jmp	loc_7F80FE87
; ---------------------------------------------------------------------------

loc_7F80FDD5:				; CODE XREF: sub_7F80FD8E+36j
		test	[ebp+arg_C], 6
		jz	short loc_7F80FDEF
		lea	eax, [ebp+var_4]
		lea	ecx, [ebp+var_8]
		push	eax
		push	2
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		jmp	short loc_7F80FDF9
; ---------------------------------------------------------------------------

loc_7F80FDEF:				; CODE XREF: sub_7F80FD8E+4Bj
		mov	eax, dword_7F835864
		xor	eax, 1252h

loc_7F80FDF9:				; CODE XREF: sub_7F80FD8E+5Fj
		cmp	eax, 1
		sbb	esi, esi
		neg	esi

loc_7F80FE00:				; CODE XREF: sub_7F80FD8E+30j
		test	eax, eax
		jz	short loc_7F80FE0D
		xor	al, 59h
		mov	dword_7F83587C,	eax
		jmp	short loc_7F80FE87
; ---------------------------------------------------------------------------

loc_7F80FE0D:				; CODE XREF: sub_7F80FD8E+29j
					; sub_7F80FD8E+74j
		mov	ebx, [ebp+arg_10]
		push	ebx		; int
		push	[ebp+arg_8]	; LPCSTR
		push	[ebp+lpString]	; lpString
		push	[ebp+var_4]	; int
		call	sub_7F80FE90
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F80FE6E
		cmp	edi, 60Eh
		jnz	short loc_7F80FE4D
		push	[ebp+arg_8]	; lpString
		push	[ebp+var_4]	; int
		call	sub_7F810181
		test	eax, eax
		jz	short loc_7F80FE6E
		push	ebx		; int
		push	[ebp+arg_8]	; lpString
		push	[ebp+lpString]	; lpString2
		push	[ebp+var_4]	; int
		call	sub_7F80FFF8
		jmp	short loc_7F80FE65
; ---------------------------------------------------------------------------

loc_7F80FE4D:				; CODE XREF: sub_7F80FD8E+9Dj
		cmp	edi, 619h
		jnz	short loc_7F80FE6E
		push	[ebp+arg_8]	; lpString
		push	[ebp+lpString]	; lpString2
		push	dword ptr [ebx]	; int
		push	[ebp+var_4]	; int
		call	sub_7F810109

loc_7F80FE65:				; CODE XREF: sub_7F80FD8E+BDj
		cmp	eax, 1
		mov	edi, eax
		sbb	esi, esi
		neg	esi

loc_7F80FE6E:				; CODE XREF: sub_7F80FD8E+95j
					; sub_7F80FD8E+ACj ...
		push	esi
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_7F81813C
		test	edi, edi
		jnz	short loc_7F80FE7E
		mov	edi, eax

loc_7F80FE7E:				; CODE XREF: sub_7F80FD8E+ECj
		xor	edi, 59h
		mov	dword_7F83587C,	edi

loc_7F80FE87:				; CODE XREF: sub_7F80FD8E+42j
					; sub_7F80FD8E+7Dj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F80FD8E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80FE90(int, LPCSTR lpString, LPCSTR, int)
sub_7F80FE90	proc near		; CODE XREF: sub_7F80FD8E+8Cp

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= byte ptr -2
arg_0		= dword	ptr  8
lpString	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+lpString]
		test	esi, esi
		jz	loc_7F80FFEA
		cmp	[ebp+arg_8], 0
		jz	loc_7F80FFEA
		push	esi		; lpString
		call	ds:lstrlenA
		inc	eax
		push	3Ah
		push	esi
		mov	[ebp+var_C], eax
		call	sub_7F82FE30
		add	esp, 8
		mov	edi, eax
		test	edi, edi
		jz	loc_7F80FFEA
		lea	eax, [ebp+var_2]
		push	eax
		push	0
		push	0
		mov	eax, edi
		sub	eax, esi
		mov	ebx, [ebp+arg_0]
		inc	eax
		push	eax
		push	esi
		push	ebx
		call	sub_7F819536
		test	eax, eax
		jz	short loc_7F80FF04
		cmp	eax, 1004h
		jnz	loc_7F80FFEF
		mov	eax, dword_7F835868
		xor	eax, 1252h
		jmp	loc_7F80FFEF
; ---------------------------------------------------------------------------

loc_7F80FF04:				; CODE XREF: sub_7F80FE90+58j
		push	dword ptr [ebp+var_2]
		push	ebx
		call	sub_7F819508
		mov	ecx, [ebp+arg_C]
		mov	[ebp+var_8], 220h
		mov	[ecx], eax
		lea	eax, [ebp+var_8]
		push	eax
		push	offset ReturnedString
		push	0
		push	dword ptr [ebp+var_2]
		push	ebx
		call	sub_7F818D47
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F80FF43
		cmp	ebx, 1014h
		jnz	short loc_7F80FFA6
		cmp	[ebp+var_8], 0
		jbe	short loc_7F80FFA6
		xor	ebx, ebx

loc_7F80FF43:				; CODE XREF: sub_7F80FE90+A1j
		push	[ebp+arg_8]	; lpString
		call	ds:lstrlenA
		inc	eax
		push	eax
		push	[ebp+arg_8]
		push	offset ReturnedString ;	lpString
		call	ds:lstrlenA
		add	eax, (offset ReturnedString+1)
		push	eax
		call	sub_7F81AF66
		test	eax, eax
		jnz	short loc_7F80FF77
		mov	ebx, dword_7F835860
		xor	ebx, 1252h

loc_7F80FF77:				; CODE XREF: sub_7F80FE90+D9j
		cmp	byte ptr [edi+1], 0
		jz	short loc_7F80FFD8
		push	[ebp+var_C]
		push	esi
		push	offset ReturnedString
		call	sub_7F81AF66
		test	eax, eax
		jnz	short loc_7F80FFD8
		sub	edi, esi
		cmp	byte ptr (ReturnedString+1)[edi], 0
		jnz	short loc_7F80FFC0
		test	ebx, ebx
		jz	short loc_7F80FFB8
		mov	ebx, dword_7F835878
		jmp	short loc_7F80FFD2
; ---------------------------------------------------------------------------

loc_7F80FFA6:				; CODE XREF: sub_7F80FE90+A9j
					; sub_7F80FE90+AFj
		mov	edi, offset ReturnedString
		xor	eax, eax
		mov	ecx, 88h
		rep stosd
		mov	eax, ebx
		jmp	short loc_7F80FFEF
; ---------------------------------------------------------------------------

loc_7F80FFB8:				; CODE XREF: sub_7F80FE90+10Cj
		mov	ebx, dword_7F83586C
		jmp	short loc_7F80FFD2
; ---------------------------------------------------------------------------

loc_7F80FFC0:				; CODE XREF: sub_7F80FE90+108j
		test	ebx, ebx
		jz	short loc_7F80FFCC
		mov	ebx, dword_7F835870
		jmp	short loc_7F80FFD2
; ---------------------------------------------------------------------------

loc_7F80FFCC:				; CODE XREF: sub_7F80FE90+132j
		mov	ebx, dword_7F835874

loc_7F80FFD2:				; CODE XREF: sub_7F80FE90+114j
					; sub_7F80FE90+12Ej ...
		xor	ebx, 1252h

loc_7F80FFD8:				; CODE XREF: sub_7F80FE90+EBj
					; sub_7F80FE90+FDj
		mov	edi, offset ReturnedString
		xor	eax, eax
		mov	ecx, 88h
		rep stosd
		mov	eax, ebx
		jmp	short loc_7F80FFEF
; ---------------------------------------------------------------------------

loc_7F80FFEA:				; CODE XREF: sub_7F80FE90+Ej
					; sub_7F80FE90+18j ...
		mov	eax, 210h

loc_7F80FFEF:				; CODE XREF: sub_7F80FE90+5Fj
					; sub_7F80FE90+6Fj ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F80FE90	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F80FFF8(int, LPCSTR lpString2, LPCSTR lpString, int)
sub_7F80FFF8	proc near		; CODE XREF: sub_7F80FD8E+B8p

var_8		= dword	ptr -8
var_2		= byte ptr -2
arg_0		= dword	ptr  8
lpString2	= dword	ptr  0Ch
lpString	= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+lpString]
		test	edi, edi
		jz	loc_7F8100FB
		mov	esi, [ebp+lpString2]
		test	esi, esi
		jz	loc_7F8100FB
		push	edi		; lpString
		call	ds:lstrlenA
		cmp	eax, 20h
		jnb	loc_7F8100FB
		push	esi		; lpString
		call	ds:lstrlenA
		test	eax, eax
		jz	loc_7F8100FB
		cmp	eax, 200h
		jnb	loc_7F8100FB
		push	3Ah
		push	esi
		call	sub_7F82FE30
		add	esp, 8
		test	eax, eax
		jz	loc_7F8100FB
		push	4
		push	offset aTmp_0	; "TMP:"
		push	esi
		call	sub_7F81AF66
		test	eax, eax
		jz	short loc_7F810075
		mov	ecx, [ebp+arg_C]
		xor	eax, eax
		mov	dword ptr [ecx], 0
		jmp	loc_7F810100
; ---------------------------------------------------------------------------

loc_7F810075:				; CODE XREF: sub_7F80FFF8+6Bj
		push	edi		; lpString
		call	ds:lstrlenA
		mov	ebx, eax
		push	edi		; lpString2
		push	esi		; lpString2
		push	offset ReturnedString ;	lpString1
		call	ds:lstrcpyA
		mov	edi, eax
		push	esi		; lpString
		call	ds:lstrlenA
		add	edi, eax
		inc	edi
		push	edi		; lpString1
		call	ds:lstrcpyA
		add	ebx, eax
		mov	edi, [ebp+arg_0]
		sub	ebx, offset unk_7F8367D7
		push	edi
		mov	[ebp+var_8], ebx
		call	sub_7F8198FC
		push	[ebp+var_8]
		movsx	esi, ax
		inc	esi
		lea	eax, [ebp+var_2]
		push	esi
		push	eax
		push	edi
		call	sub_7F818B75
		mov	edx, eax
		test	edx, edx
		jnz	short loc_7F8100E0
		push	[ebp+var_8]
		push	offset ReturnedString
		push	0
		lea	ecx, [ebp+var_2]
		push	ecx
		push	edi
		call	sub_7F818DC7
		mov	edx, eax

loc_7F8100E0:				; CODE XREF: sub_7F80FFF8+D0j
		mov	edi, offset ReturnedString
		xor	eax, eax
		mov	ecx, 88h
		test	edx, edx
		rep stosd
		jnz	short loc_7F8100F7
		mov	ecx, [ebp+arg_C]
		mov	[ecx], esi

loc_7F8100F7:				; CODE XREF: sub_7F80FFF8+F8j
		mov	eax, edx
		jmp	short loc_7F810100
; ---------------------------------------------------------------------------

loc_7F8100FB:				; CODE XREF: sub_7F80FFF8+Ej
					; sub_7F80FFF8+19j ...
		mov	eax, 210h

loc_7F810100:				; CODE XREF: sub_7F80FFF8+78j
					; sub_7F80FFF8+101j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F80FFF8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F810109(int, int, LPCSTR lpString2, LPCSTR	lpString)
sub_7F810109	proc near		; CODE XREF: sub_7F80FD8E+D2p

var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
lpString2	= dword	ptr  10h
lpString	= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		push	esi
		push	edi
		push	0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F8194ED
		mov	[ebp+var_2], ax
		push	[ebp+lpString]	; lpString
		call	ds:lstrlenA
		mov	esi, eax
		mov	edi, offset ReturnedString
		push	[ebp+lpString]	; lpString2
		push	[ebp+lpString2]	; lpString
		call	ds:lstrlenA
		push	[ebp+lpString2]	; lpString2
		push	edi		; lpString1
		mov	ebx, eax
		call	ds:lstrcpyA
		add	ebx, eax
		inc	ebx
		push	ebx		; lpString1
		call	ds:lstrcpyA
		add	esi, eax
		lea	eax, [ebp+var_2]
		sub	esi, offset unk_7F8367D7
		push	esi
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	sub_7F818E95
		mov	edx, eax
		mov	ecx, 88h
		xor	eax, eax
		rep stosd
		mov	eax, edx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F810109	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F810181(int, LPCSTR lpString)
sub_7F810181	proc near		; CODE XREF: sub_7F80FD8E+A5p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
lpString	= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		push	esi
		push	edi
		push	[ebp+lpString]	; lpString
		call	ds:lstrlenA
		push	[ebp+arg_0]
		lea	edi, [eax+1]
		call	sub_7F8198FC
		mov	si, ax
		test	si, si
		jg	short loc_7F8101AD
		mov	eax, 1
		jmp	short loc_7F810218
; ---------------------------------------------------------------------------

loc_7F8101AD:				; CODE XREF: sub_7F810181+23j
		mov	ebx, offset ReturnedString

loc_7F8101B2:				; CODE XREF: sub_7F810181+87j
		dec	si
		lea	eax, [ebp+var_4]
		mov	[ebp+var_4], 220h
		push	eax
		push	ebx
		push	0
		push	esi
		push	[ebp+arg_0]
		call	sub_7F818D47
		test	eax, eax
		jz	short loc_7F8101DC
		cmp	eax, 1014h
		jnz	short loc_7F81020A
		cmp	[ebp+var_4], 0
		jz	short loc_7F81020A

loc_7F8101DC:				; CODE XREF: sub_7F810181+4Cj
		push	0
		push	[ebp+var_4]
		push	ebx
		call	sub_7F82A3C9
		test	eax, eax
		jz	short loc_7F81020A
		inc	eax
		mov	ecx, ebx
		sub	ecx, eax
		add	ecx, [ebp+var_4]
		cmp	ecx, edi
		jnz	short loc_7F810205
		push	edi
		push	[ebp+lpString]
		push	eax
		call	sub_7F81AF66
		test	eax, eax
		jnz	short loc_7F810221

loc_7F810205:				; CODE XREF: sub_7F810181+74j
		test	si, si
		jg	short loc_7F8101B2

loc_7F81020A:				; CODE XREF: sub_7F810181+53j
					; sub_7F810181+59j ...
		mov	edi, offset ReturnedString
		xor	eax, eax
		mov	ecx, 88h
		rep stosd

loc_7F810218:				; CODE XREF: sub_7F810181+2Aj
					; sub_7F810181+B3j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
; ---------------------------------------------------------------------------

loc_7F810221:				; CODE XREF: sub_7F810181+82j
		mov	edi, offset ReturnedString
		xor	eax, eax
		mov	ecx, 88h
		rep stosd
		mov	eax, 1
		jmp	short loc_7F810218
sub_7F810181	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F810236	proc near		; CODE XREF: sub_7F810254+10p

var_4		= byte ptr -4
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+arg_4]
		lea	ecx, [ebp+var_4]
		sub	eax, ecx
		mov	word_7F835850, ax
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_7F810236	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F810254	proc near		; CODE XREF: sub_7F8173E6+8Dp

var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_7F810236
		lea	eax, [ebp+arg_4]
		lea	ecx, [ebp+var_4]
		sub	eax, ecx
		mov	word_7F835854, ax
		lea	eax, [ebp+arg_0]
		lea	ecx, [ebp+var_4]
		sub	eax, ecx
		mov	word_7F835858, ax
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_7F810254	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81028C	proc near		; CODE XREF: sub_7F80B80E+31p
					; sub_7F80D08D+4Ap

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		mov	eax, [ebp+arg_10]
		push	esi
		push	edi
		mov	si, 1002h
		mov	edi, [ebp+arg_8]
		mov	[ebp+var_2], si
		mov	dword ptr [eax], 0
		mov	eax, [edi]
		cmp	al, 87h
		jnz	short loc_7F8102B9
		mov	eax, 1015h
		jmp	loc_7F810396
; ---------------------------------------------------------------------------

loc_7F8102B9:				; CODE XREF: sub_7F81028C+21j
		and	word ptr [ebp+arg_C], 100Fh
		mov	bx, word ptr [ebp+arg_C]
		and	bx, 2
		jnz	short loc_7F81030A
		push	0
		lea	ecx, [ebp+var_8]
		push	0
		lea	edx, [ebp+var_C]
		push	ecx
		push	edx
		push	eax
		push	[ebp+arg_0]
		call	sub_7F82D114
		test	eax, eax
		jnz	loc_7F810396
		mov	ecx, [ebp+arg_4]
		cmp	ecx, [ebp+var_C]
		jz	short loc_7F810302
		mov	eax, [ebp+var_8]
		push	ecx
		and	al, 88h
		or	al, 88h
		push	eax
		mov	[ebp+var_8], eax
		push	[ebp+arg_0]
		call	sub_7F81AFB2

loc_7F810302:				; CODE XREF: sub_7F81028C+60j
		test	eax, eax
		jnz	loc_7F810396

loc_7F81030A:				; CODE XREF: sub_7F81028C+3Bj
		push	4
		push	4
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82CFC5
		test	eax, eax
		jz	short loc_7F81032B
		cmp	eax, 1001h
		jnz	short loc_7F810396
		mov	eax, 1009h
		jmp	short loc_7F810396
; ---------------------------------------------------------------------------

loc_7F81032B:				; CODE XREF: sub_7F81028C+8Fj
		test	byte ptr [ebp+arg_C], 1
		jnz	short loc_7F810336
		test	bx, bx
		jz	short loc_7F810343

loc_7F810336:				; CODE XREF: sub_7F81028C+A3j
		mov	si, 3002h
		mov	[ebp+var_2], si
		test	bx, bx
		jnz	short loc_7F810353

loc_7F810343:				; CODE XREF: sub_7F81028C+A8j
		push	dword ptr [ebp+var_2]
		push	esi
		push	dword ptr [edi]
		push	[ebp+arg_0]
		call	sub_7F82CFC5
		jmp	short loc_7F810374
; ---------------------------------------------------------------------------

loc_7F810353:				; CODE XREF: sub_7F81028C+B5j
		mov	cl, [edi]
		test	cl, cl
		jge	short loc_7F810370
		cmp	cl, 91h
		jb	short loc_7F810363
		xor	si, si
		jmp	short loc_7F810374
; ---------------------------------------------------------------------------

loc_7F810363:				; CODE XREF: sub_7F81028C+D0j
		movzx	ecx, cl
		mov	si, word_7F8358D0[ecx*2]
		jmp	short loc_7F810374
; ---------------------------------------------------------------------------

loc_7F810370:				; CODE XREF: sub_7F81028C+CBj
		mov	si, 0B002h

loc_7F810374:				; CODE XREF: sub_7F81028C+C5j
					; sub_7F81028C+D5j ...
		test	eax, eax
		jnz	short loc_7F810396
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	7E0h
		push	esi
		push	[ebp+arg_C]
		push	edi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F81039F

loc_7F810396:				; CODE XREF: sub_7F81028C+28j
					; sub_7F81028C+54j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	1Ch
sub_7F81028C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81039F	proc near		; CODE XREF: sub_7F81028C+105p
					; sub_7F81121A+DCp

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		lea	eax, [ebp+var_8]
		push	esi
		push	edi
		xor	esi, esi
		push	eax
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		mov	[ebp+var_8], esi
		call	sub_7F817E9D
		mov	[ebp+var_4], eax
		cmp	eax, esi
		jnz	loc_7F81050E
		mov	bx, word ptr [ebp+arg_C]
		and	bx, 2
		jz	short loc_7F8103EF
		mov	eax, [ebp+arg_8]
		push	[ebp+arg_10]
		push	dword ptr [eax]
		push	[ebp+arg_0]
		call	sub_7F82CF24
		mov	[ebp+var_4], eax
		cmp	eax, esi
		jnz	loc_7F81050E

loc_7F8103EF:				; CODE XREF: sub_7F81039F+33j
		push	10h
		push	3Ch
		call	sub_7F82F18D
		mov	esi, eax
		test	esi, esi
		jz	loc_7F810507
		mov	edi, [esi]
		mov	eax, [ebp+arg_0]
		mov	edx, [ebp+arg_8]
		mov	byte ptr [edi+20h], 0
		mov	[edi], eax
		mov	ecx, [ebp+var_8]
		mov	[edi+4], ecx
		mov	ecx, [ebp+arg_4]
		test	bx, bx
		mov	eax, [edx]
		mov	dx, word ptr [ebp+arg_C]
		mov	[edi+8], eax
		mov	[edi+18h], ecx
		mov	[edi+14h], dx
		jz	short loc_7F810439
		mov	ax, dx
		or	ax, 801h
		mov	[edi+14h], ax

loc_7F810439:				; CODE XREF: sub_7F81039F+8Dj
		test	ecx, ecx
		jz	loc_7F8104DE
		mov	byte ptr [edi+38h], 0
		test	bx, bx
		jnz	short loc_7F8104A9
		push	0
		push	68007h
		push	[ebp+var_8]
		call	sub_7F8194ED
		test	ax, ax
		jl	short loc_7F810483
		mov	[ebp+var_C], 1
		lea	ecx, [ebp+var_C]
		push	ecx
		lea	ecx, [edi+38h]
		push	ecx
		push	0
		push	eax
		push	[ebp+var_8]
		call	sub_7F818D47
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	loc_7F81050E

loc_7F810483:				; CODE XREF: sub_7F81039F+BDj
		lea	ebx, [edi+1Ch]
		push	0
		push	0
		mov	eax, [ebp+arg_8]
		push	ebx
		push	0
		push	dword ptr [eax]
		push	[ebp+arg_0]
		call	sub_7F82D114
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	short loc_7F81050E
		mov	eax, [ebx]
		and	al, 89h
		or	al, 89h
		mov	[ebx], eax

loc_7F8104A9:				; CODE XREF: sub_7F81039F+A9j
		push	[ebp+arg_C]
		push	edi
		call	sub_7F8110F6
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	short loc_7F81050E
		push	esi
		push	offset sub_7F811428
		push	40000h
		push	80h
		push	[ebp+arg_0]
		call	sub_7F829F2E
		mov	[edi+0Ch], eax
		test	eax, eax
		jz	short loc_7F810507
		mov	al, [edi+38h]
		mov	[edi+39h], al

loc_7F8104DE:				; CODE XREF: sub_7F81039F+9Cj
		mov	eax, [ebp+arg_1C]
		test	eax, eax
		jz	short loc_7F81050E
		mov	ecx, [ebp+arg_20]
		mov	[edi+28h], eax
		push	ecx
		mov	[edi+24h], ecx
		push	eax
		mov	ecx, [ebp+arg_8]
		push	[ebp+arg_14]
		push	dword ptr [ecx]
		push	[ebp+arg_0]
		call	sub_7F829F2E
		mov	[edi+10h], eax
		test	eax, eax
		jnz	short loc_7F81050E

loc_7F810507:				; CODE XREF: sub_7F81039F+5Dj
					; sub_7F81039F+137j
		mov	[ebp+var_4], 400h

loc_7F81050E:				; CODE XREF: sub_7F81039F+25j
					; sub_7F81039F+4Aj ...
		xor	eax, eax
		cmp	[ebp+var_4], eax
		jz	short loc_7F81054B
		cmp	[ebp+var_8], eax
		jz	short loc_7F810524
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F81813C

loc_7F810524:				; CODE XREF: sub_7F81039F+179j
		test	esi, esi
		jz	short loc_7F81054B
		mov	edi, [esi]
		push	edi
		call	sub_7F8111BB
		mov	eax, [edi+0Ch]
		test	eax, eax
		jz	short loc_7F810545
		push	eax
		push	80h
		push	[ebp+arg_0]
		call	sub_7F829FD2

loc_7F810545:				; CODE XREF: sub_7F81039F+196j
		push	esi
		call	sub_7F82F1E1

loc_7F81054B:				; CODE XREF: sub_7F81039F+174j
					; sub_7F81039F+187j
		xor	ecx, ecx
		mov	eax, [ebp+arg_18]
		cmp	[ebp+var_4], ecx
		jz	short loc_7F810559
		mov	[eax], ecx
		jmp	short loc_7F81055B
; ---------------------------------------------------------------------------

loc_7F810559:				; CODE XREF: sub_7F81039F+1B4j
		mov	[eax], esi

loc_7F81055B:				; CODE XREF: sub_7F81039F+1B8j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	24h
sub_7F81039F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F810567	proc near		; CODE XREF: sub_7F81121A+A4p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	esi
		lea	eax, [ebp+var_10]
		push	esi
		mov	[ebp+var_C], esi
		push	eax
		mov	[ebp+var_8], esi
		push	esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82D114
		cmp	eax, esi
		mov	edi, eax
		jnz	loc_7F81074F
		mov	ecx, [ebp+arg_C]
		cmp	[ecx], esi
		jnz	short loc_7F8105A5
		mov	eax, [ebp+arg_4]
		and	eax, 0FFh
		mov	[ecx], eax

loc_7F8105A5:				; CODE XREF: sub_7F810567+32j
		lea	eax, [ebp+var_C]
		lea	ecx, [ebp+arg_4]
		push	eax
		push	0
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81074F
		push	[ebp+arg_C]
		lea	ecx, [ebp+var_8]
		push	ecx
		push	1
		push	[ebp+var_C]
		call	sub_7F819AFB
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81074F
		mov	ecx, [ebp+arg_C]
		push	[ebp+arg_10]
		push	dword ptr [ecx]
		push	[ebp+arg_0]
		call	sub_7F82CF24
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81074F
		push	10h
		push	3Ch
		call	sub_7F82F18D
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81060F
		mov	edi, 400h
		jmp	loc_7F81074F
; ---------------------------------------------------------------------------

loc_7F81060F:				; CODE XREF: sub_7F810567+9Cj
		mov	ebx, [esi]
		mov	eax, [ebp+arg_0]
		mov	edx, [ebp+arg_C]
		mov	byte ptr [ebx+20h], 0
		mov	[ebx], eax
		mov	ecx, [ebp+var_8]
		mov	[ebx+4], ecx
		mov	ecx, [ebp+arg_8]
		mov	eax, [edx]
		mov	[ebx+8], eax
		mov	eax, [ebp+arg_18]
		mov	[ebx+18h], ecx
		test	eax, eax
		mov	word ptr [ebx+14h], 803h
		jz	short loc_7F81065F
		push	[ebp+arg_1C]
		push	eax
		push	7E0h
		push	dword ptr [edx]
		push	[ebp+arg_0]
		call	sub_7F829F2E
		mov	[ebx+10h], eax
		test	eax, eax
		jnz	short loc_7F81065F
		mov	edi, 400h
		jmp	loc_7F81074F
; ---------------------------------------------------------------------------

loc_7F81065F:				; CODE XREF: sub_7F810567+D2j
					; sub_7F810567+ECj
		cmp	[ebp+arg_8], 0
		jz	loc_7F81074F
		mov	byte ptr [ebp+var_4+3],	0
		push	0
		push	68007h
		push	[ebp+var_8]
		call	sub_7F8194ED
		mov	word ptr [ebp+var_4], ax
		test	ax, ax
		jl	short loc_7F8106D2
		lea	eax, [ebp+var_14]
		lea	ecx, [ebp+var_4+3]
		mov	[ebp+var_14], 1
		push	eax
		push	ecx
		push	0
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_7F818D47
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81074F
		mov	al, byte ptr [ebp+var_4+3]
		and	al, 42h
		cmp	al, 42h
		jz	short loc_7F8106D2
		push	1
		lea	eax, [ebp+var_4+3]
		push	eax
		lea	ecx, [ebp+var_4]
		or	byte ptr [ebp+var_4+3],	42h
		push	0
		push	ecx
		push	[ebp+var_8]
		call	sub_7F818DC7
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F81074F

loc_7F8106D2:				; CODE XREF: sub_7F810567+11Cj
					; sub_7F810567+14Bj
		mov	al, byte ptr [ebp+var_4+3]
		push	esi
		push	offset sub_7F811428
		mov	[ebx+38h], al
		push	40000h
		mov	[ebx+39h], al
		push	80h
		push	[ebp+arg_0]
		call	sub_7F829F2E
		mov	[ebx+0Ch], eax
		test	eax, eax
		jnz	short loc_7F810701
		mov	edi, 400h
		jmp	short loc_7F81074F
; ---------------------------------------------------------------------------

loc_7F810701:				; CODE XREF: sub_7F810567+191j
		cmp	[ebp+var_10], 0
		jz	short loc_7F810729
		lea	eax, [ebx+1Ch]
		mov	ecx, [ebp+arg_C]
		push	eax
		push	dword ptr [ecx]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F811467
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F810729
		cmp	edi, 1001h
		jnz	short loc_7F81074F

loc_7F810729:				; CODE XREF: sub_7F810567+19Ej
					; sub_7F810567+1B8j
		mov	ax, [ebx+14h]
		and	ax, 0FFFDh
		push	eax
		push	ebx
		call	sub_7F8110F6
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F81074F
		lea	eax, [ebx+34h]
		push	eax
		push	dword ptr [ebx+2Ch]
		push	[ebp+arg_0]
		call	sub_7F8107B6
		mov	edi, eax

loc_7F81074F:				; CODE XREF: sub_7F810567+27j
					; sub_7F810567+54j ...
		cmp	[ebp+var_C], 0
		jz	short loc_7F810760
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_7F81813C

loc_7F810760:				; CODE XREF: sub_7F810567+1ECj
		test	edi, edi
		jz	short loc_7F81079C
		cmp	[ebp+var_8], 0
		jz	short loc_7F810775
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F81813C

loc_7F810775:				; CODE XREF: sub_7F810567+201j
		test	esi, esi
		jz	short loc_7F81079C
		mov	ebx, [esi]
		push	ebx
		call	sub_7F8111BB
		mov	eax, [ebx+0Ch]
		test	eax, eax
		jz	short loc_7F810796
		push	eax
		push	80h
		push	[ebp+arg_0]
		call	sub_7F829FD2

loc_7F810796:				; CODE XREF: sub_7F810567+21Fj
		push	esi
		call	sub_7F82F1E1

loc_7F81079C:				; CODE XREF: sub_7F810567+1FBj
					; sub_7F810567+210j
		xor	ecx, ecx
		mov	eax, [ebp+arg_14]
		test	edi, edi
		jz	short loc_7F8107A9
		mov	[eax], ecx
		jmp	short loc_7F8107AB
; ---------------------------------------------------------------------------

loc_7F8107A9:				; CODE XREF: sub_7F810567+23Cj
		mov	[eax], esi

loc_7F8107AB:				; CODE XREF: sub_7F810567+240j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	20h
sub_7F810567	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8107B6	proc near		; CODE XREF: sub_7F810567+1E1p

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, 0Ch
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	[ebp+arg_4]
		mov	[ebp+var_8], esi
		call	sub_7F8198FC
		mov	di, ax
		test	di, di
		jnz	short loc_7F8107DB
		xor	eax, eax
		jmp	loc_7F81086C
; ---------------------------------------------------------------------------

loc_7F8107DB:				; CODE XREF: sub_7F8107B6+1Cj
		movsx	eax, di
		shl	eax, 2
		push	0
		push	eax
		call	sub_7F82F03B
		mov	ebx, eax
		mov	[ebp+var_4], eax
		test	eax, eax
		jz	short loc_7F81085B
		mov	[ebp+var_C], 4
		mov	ax, di
		dec	di
		test	ax, ax
		jz	short loc_7F810829

loc_7F810803:				; CODE XREF: sub_7F8107B6+71j
		lea	eax, [ebp+var_C]
		push	eax
		push	ebx
		push	0
		push	edi
		push	[ebp+arg_4]
		call	sub_7F818D47
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	short loc_7F81085B
		inc	si
		add	ebx, 4
		mov	ax, di
		dec	di
		test	ax, ax
		jnz	short loc_7F810803

loc_7F810829:				; CODE XREF: sub_7F8107B6+4Bj
		test	si, si
		mov	ebx, [ebp+var_4]
		lea	edi, [esi-1]
		jz	short loc_7F81085B

loc_7F810834:				; CODE XREF: sub_7F8107B6+A3j
		push	1
		push	dword ptr [ebx]
		push	[ebp+arg_0]
		call	sub_7F82BFE4
		push	0
		push	0
		push	dword ptr [ebx]
		push	[ebp+arg_8]
		call	sub_7F81698C
		mov	cx, di
		add	ebx, 4
		dec	di
		test	cx, cx
		jnz	short loc_7F810834

loc_7F81085B:				; CODE XREF: sub_7F8107B6+3Aj
					; sub_7F8107B6+62j ...
		cmp	[ebp+var_4], 0
		jz	short loc_7F810869
		push	[ebp+var_4]
		call	sub_7F82F149

loc_7F810869:				; CODE XREF: sub_7F8107B6+A9j
		mov	eax, [ebp+var_8]

loc_7F81086C:				; CODE XREF: sub_7F8107B6+20j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F8107B6	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F810875	proc near		; CODE XREF: sub_7F810955+1A1p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	eax, 253h
		cmp	dword_7F838078,	0
		push	edi
		jnz	short loc_7F8108B8
		mov	ecx, [esp+8+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	esi, [edx]
		mov	dword_7F838078,	esi
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx
		xor	eax, eax

loc_7F8108B8:				; CODE XREF: sub_7F810875+Ej
		test	eax, eax
		jnz	short loc_7F81091D
		mov	eax, [esp+8+arg_4]
		mov	eax, [eax]
		movzx	ecx, word ptr [eax]
		mov	si, [ecx+eax+6]
		lea	edi, [ecx+eax]
		mov	ax, si
		dec	si
		test	ax, ax
		jle	short loc_7F8108EF

loc_7F8108D7:				; CODE XREF: sub_7F810875+78j
		mov	eax, edi
		push	0
		sub	edi, 6
		push	dword ptr [eax]
		call	sub_7F81479E
		mov	ax, si
		dec	si
		test	ax, ax
		jg	short loc_7F8108D7

loc_7F8108EF:				; CODE XREF: sub_7F810875+60j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F810905
		call	sub_7F82A34F
		jmp	short loc_7F810913
; ---------------------------------------------------------------------------

loc_7F810905:				; CODE XREF: sub_7F810875+87j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F810913:				; CODE XREF: sub_7F810875+8Ej
		mov	dword_7F838078,	0

loc_7F81091D:				; CODE XREF: sub_7F810875+45j
		pop	edi
		pop	esi
		retn	8
sub_7F810875	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F810922	proc near		; CODE XREF: sub_7F80B80E+1BAp
					; sub_7F80D08D+FCp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, offset sub_7F810955
		mov	ecx, [esp+arg_0]
		mov	eax, [ecx]
		mov	eax, [eax]
		movzx	eax, byte ptr [eax+20h]
		cmp	eax, 1
		jz	short loc_7F81093F
		cmp	eax, 2
		jz	short loc_7F810946
		jmp	short loc_7F81094B
; ---------------------------------------------------------------------------

loc_7F81093F:				; CODE XREF: sub_7F810922+14j
		mov	edx, offset sub_7F811343
		jmp	short loc_7F81094B
; ---------------------------------------------------------------------------

loc_7F810946:				; CODE XREF: sub_7F810922+19j
		mov	edx, offset sub_7F825C1D

loc_7F81094B:				; CODE XREF: sub_7F810922+1Bj
					; sub_7F810922+22j
		push	[esp+arg_4]
		push	ecx
		call	edx ; sub_7F810955
		retn	8
sub_7F810922	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F810955	proc near		; CODE XREF: sub_7F810922+2Ep
					; sub_7F825C1D+133p ...

var_34		= byte ptr -34h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_2B		= byte ptr -2Bh
var_2A		= dword	ptr -2Ah
var_24		= byte ptr -24h
var_20		= word ptr -20h
var_1E		= dword	ptr -1Eh
var_17		= byte ptr -17h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= word ptr -4
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		xor	ecx, ecx
		inc	word_7F838070
		mov	ebp, esp
		sub	esp, 34h
		mov	edx, [ebp+arg_0]
		mov	[ebp+var_10], ecx
		push	ebx
		push	esi
		mov	eax, [edx]
		push	edi
		mov	edi, [eax]
		mov	ebx, [edi]
		mov	eax, [edi+8]
		mov	[ebp+var_8], eax
		xor	eax, eax
		mov	dx, [edi+14h]
		mov	esi, [edi+18h]
		mov	ax, dx
		mov	[ebp+var_C], esi
		and	eax, 2
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_14], eax
		cmp	esi, ecx
		jz	short loc_7F81099C
		test	dl, 1
		jnz	short loc_7F81099C
		xor	esi, esi

loc_7F81099C:				; CODE XREF: sub_7F810955+3Ej
					; sub_7F810955+43j
		test	esi, esi
		jz	short loc_7F8109C5
		test	dh, 0Ch
		jnz	short loc_7F8109A7
		xor	esi, esi

loc_7F8109A7:				; CODE XREF: sub_7F810955+4Ej
		test	esi, esi
		jz	loc_7F810A3A
		test	dl, 80h
		jnz	short loc_7F8109C5
		push	edi
		call	sub_7F810C9B
		mov	[ebp+var_10], eax
		test	eax, eax
		jnz	loc_7F810BCF

loc_7F8109C5:				; CODE XREF: sub_7F810955+49j
					; sub_7F810955+5Dj
		test	esi, esi
		jz	short loc_7F810A3E
		cmp	[ebp+var_C], 0
		jz	short loc_7F810A3A
		cmp	[ebp+var_14], 0
		jz	short loc_7F8109F4
		lea	eax, [ebp+var_4]
		push	eax
		push	dword ptr [edi+4]
		push	[ebp+var_8]
		push	[ebp+var_C]
		push	ebx
		call	sub_7F81B8F0
		mov	[ebp+var_10], eax
		test	eax, eax
		jz	short loc_7F810A3A
		jmp	loc_7F810BCF
; ---------------------------------------------------------------------------

loc_7F8109F4:				; CODE XREF: sub_7F810955+7Ej
		test	byte ptr [edi+15h], 2
		jz	short loc_7F810A14
		dec	word_7F838070
		push	dword ptr [edi+4]
		push	[ebp+var_8]
		push	ebx
		call	sub_7F81D22C
		inc	word_7F838070

loc_7F810A14:				; CODE XREF: sub_7F810955+A3j
		mov	cl, [edi+39h]
		mov	al, [edi+38h]
		xor	al, cl
		test	al, 22h
		jz	short loc_7F810A31
		xor	eax, eax
		mov	al, cl
		and	eax, 22h
		push	eax
		push	[ebp+var_8]
		push	ebx
		call	sub_7F82C46A

loc_7F810A31:				; CODE XREF: sub_7F810955+C9j
		push	[ebp+var_8]
		push	ebx
		call	sub_7F828F0F

loc_7F810A3A:				; CODE XREF: sub_7F810955+54j
					; sub_7F810955+78j ...
		test	esi, esi
		jnz	short loc_7F810A5A

loc_7F810A3E:				; CODE XREF: sub_7F810955+72j
		mov	eax, [edi+10h]
		test	eax, eax
		jz	short loc_7F810A56
		push	eax
		push	[ebp+var_8]
		push	ebx
		call	sub_7F829FD2
		mov	dword ptr [edi+10h], 0

loc_7F810A56:				; CODE XREF: sub_7F810955+EEj
		test	esi, esi
		jz	short loc_7F810A65

loc_7F810A5A:				; CODE XREF: sub_7F810955+E7j
		test	byte ptr [edi+15h], 8
		mov	eax, 1
		jnz	short loc_7F810A67

loc_7F810A65:				; CODE XREF: sub_7F810955+103j
		xor	eax, eax

loc_7F810A67:				; CODE XREF: sub_7F810955+10Ej
		push	eax
		lea	ecx, [edi+4]
		push	ecx
		call	sub_7F81813C
		lea	ecx, [edi+2Ch]
		cmp	dword ptr [ecx], 0
		jz	short loc_7F810A91
		test	esi, esi
		jz	short loc_7F810A88
		test	byte ptr [edi+15h], 4
		mov	eax, 1
		jnz	short loc_7F810A8A

loc_7F810A88:				; CODE XREF: sub_7F810955+126j
		xor	eax, eax

loc_7F810A8A:				; CODE XREF: sub_7F810955+131j
		push	eax
		push	ecx
		call	sub_7F81813C

loc_7F810A91:				; CODE XREF: sub_7F810955+122j
		xor	eax, eax
		xor	ecx, ecx
		mov	cx, [edi+14h]
		mov	[ebp+var_1], al
		and	ecx, 0C00h
		mov	[ebp+var_17], al
		mov	[ebp+var_2A], ecx
		cmp	[ebp+var_C], eax
		jz	short loc_7F810AB9
		mov	al, [edi+38h]
		mov	cl, [edi+39h]
		mov	[ebp+var_1], al
		mov	[ebp+var_17], cl

loc_7F810AB9:				; CODE XREF: sub_7F810955+156j
		mov	eax, [edi+34h]
		test	esi, esi
		jz	short loc_7F810ADE
		test	eax, eax
		jz	short loc_7F810AD4
		push	eax
		push	ebx
		call	sub_7F810C5D
		push	dword ptr [edi+34h]
		push	ebx
		call	sub_7F82BF24

loc_7F810AD4:				; CODE XREF: sub_7F810955+16Dj
		mov	eax, [edi+30h]
		test	eax, eax
		jz	short loc_7F810AFB
		push	eax
		jmp	short loc_7F810AF5
; ---------------------------------------------------------------------------

loc_7F810ADE:				; CODE XREF: sub_7F810955+169j
		test	eax, eax
		jz	short loc_7F810AFB
		push	eax
		push	ebx
		call	sub_7F82BF24
		push	dword ptr [edi+34h]
		push	ebx
		call	sub_7F810C5D
		push	dword ptr [edi+34h]

loc_7F810AF5:				; CODE XREF: sub_7F810955+187j
		push	ebx
		call	sub_7F810875

loc_7F810AFB:				; CODE XREF: sub_7F810955+184j
					; sub_7F810955+18Bj
		test	esi, esi
		jz	short loc_7F810B17
		test	byte ptr [edi+15h], 4
		jz	short loc_7F810B17
		push	0
		lea	eax, [edi+1Ch]
		push	1
		lea	ecx, [ebp+var_8]
		push	eax
		push	ecx
		push	ebx
		call	sub_7F82D2BE

loc_7F810B17:				; CODE XREF: sub_7F810955+1A8j
					; sub_7F810955+1AEj
		mov	eax, [edi+0Ch]
		test	eax, eax
		jz	short loc_7F810B2A
		push	eax
		push	80h
		push	ebx
		call	sub_7F829FD2

loc_7F810B2A:				; CODE XREF: sub_7F810955+1C7j
		mov	eax, [edi+10h]
		test	eax, eax
		jz	short loc_7F810B3B
		push	eax
		push	[ebp+var_8]
		push	ebx
		call	sub_7F829FD2

loc_7F810B3B:				; CODE XREF: sub_7F810955+1DAj
		push	edi
		call	sub_7F8111BB
		mov	edx, [ebp+arg_0]
		push	dword ptr [edx]
		call	sub_7F82F1E1
		xor	eax, eax
		mov	edx, [ebp+arg_0]
		test	esi, esi
		mov	[edx], eax
		jz	short loc_7F810BCF
		cmp	word_7F838070, 1
		jnz	short loc_7F810BB1
		cmp	[ebp+var_14], eax
		jz	short loc_7F810B6D
		lea	eax, [ebp+var_34]
		push	eax
		push	1
		jmp	short loc_7F810B79
; ---------------------------------------------------------------------------

loc_7F810B6D:				; CODE XREF: sub_7F810955+20Ej
		cmp	[ebp+var_2A], 0
		jz	short loc_7F810B82
		lea	eax, [ebp+var_34]
		push	eax
		push	40h

loc_7F810B79:				; CODE XREF: sub_7F810955+216j
		push	[ebp+var_8]
		push	ebx
		call	sub_7F82A016

loc_7F810B82:				; CODE XREF: sub_7F810955+21Cj
		cmp	[ebp+var_14], 0
		jnz	short loc_7F810BB1
		mov	al, [ebp+var_1]
		cmp	[ebp+var_17], al
		jz	short loc_7F810BB1
		mov	eax, [ebp+var_C]
		mov	cl, [ebp+var_1]
		mov	dl, [ebp+var_17]
		mov	[ebp+var_30], eax
		lea	eax, [ebp+var_34]
		mov	[ebp+var_2C], cl
		push	eax
		mov	[ebp+var_2B], dl
		push	2
		push	[ebp+var_8]
		push	ebx
		call	sub_7F82A016

loc_7F810BB1:				; CODE XREF: sub_7F810955+209j
					; sub_7F810955+231j ...
		test	esi, esi
		jz	short loc_7F810BCF
		cmp	[ebp+var_C], 0
		jz	short loc_7F810BC9
		cmp	[ebp+var_14], 0
		jz	short loc_7F810BC9
		push	ebx
		call	sub_7F82A2C4
		jmp	short loc_7F810BCF
; ---------------------------------------------------------------------------

loc_7F810BC9:				; CODE XREF: sub_7F810955+264j
					; sub_7F810955+26Aj
		push	ebx
		call	sub_7F82A1E7

loc_7F810BCF:				; CODE XREF: sub_7F810955+6Aj
					; sub_7F810955+9Aj ...
		cmp	[ebp+var_10], 0
		jz	short loc_7F810BDD
		and	word ptr [edi+14h], 0FF7Fh
		jmp	short loc_7F810C4A
; ---------------------------------------------------------------------------

loc_7F810BDD:				; CODE XREF: sub_7F810955+27Ej
		test	esi, esi
		jz	short loc_7F810C4A
		cmp	[ebp+var_C], 0
		jz	short loc_7F810C4A
		cmp	[ebp+var_14], 0
		jz	short loc_7F810C4A
		cmp	word_7F838070, 1
		jnz	short loc_7F810C4A
		mov	ax, [ebp+var_4]
		mov	ecx, [ebp+var_8]
		mov	word_7F833C0A, ax
		lea	edx, [ebp+var_24]
		push	edx
		mov	dword_7F833C0C,	ecx
		mov	[ebp+var_1E], offset word_7F833C08
		mov	word_7F833C08, 1
		mov	[ebp+var_20], 1
		push	4000h
		push	[ebp+var_C]
		push	ebx
		call	sub_7F82A016
		mov	ecx, [ebp+var_C]
		lea	eax, [ebp+var_24]
		push	eax
		mov	[ebp+var_1E+2],	ecx
		push	100h
		push	[ebp+var_8]
		push	ebx
		call	sub_7F82A016

loc_7F810C4A:				; CODE XREF: sub_7F810955+286j
					; sub_7F810955+28Aj ...
		dec	word_7F838070
		mov	eax, [ebp+var_10]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F810955	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F810C5D	proc near		; CODE XREF: sub_7F810955+171p
					; sub_7F810955+198p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	esi
		push	edi
		mov	eax, [eax]
		movzx	ecx, word ptr [eax]
		mov	si, [ecx+eax+6]
		lea	edi, [ecx+eax]
		mov	ax, si
		dec	si
		test	ax, ax
		jle	short loc_7F810C96

loc_7F810C7A:				; CODE XREF: sub_7F810C5D+37j
		mov	eax, edi
		push	0
		sub	edi, 6
		push	dword ptr [eax]
		push	[esp+10h+arg_0]
		call	sub_7F82BFE4
		mov	ax, si
		dec	si
		test	ax, ax
		jg	short loc_7F810C7A

loc_7F810C96:				; CODE XREF: sub_7F810C5D+1Bj
		pop	edi
		pop	esi
		retn	8
sub_7F810C5D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F810C9B	proc near		; CODE XREF: sub_7F810955+60p

var_1C		= byte ptr -1Ch
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
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		mov	esi, [ebp+arg_0]
		cmp	[esi+18h], edi
		jz	loc_7F810E01
		xor	eax, eax
		push	edi
		mov	ax, [esi+14h]
		push	68007h
		push	dword ptr [esi+4]
		mov	[ebp+var_C], 1
		and	eax, 1000h
		mov	[ebp+var_8], eax
		call	sub_7F8194ED
		mov	word ptr [ebp+var_4], ax
		cmp	ax, di
		jl	short loc_7F810D06
		lea	eax, [ebp+var_C]
		lea	ecx, [ebp+var_4+2]
		push	eax
		push	ecx
		push	edi
		push	[ebp+var_4]
		push	dword ptr [esi+4]
		call	sub_7F818D47
		cmp	eax, edi
		mov	ebx, eax
		jnz	loc_7F810E34
		mov	al, byte ptr [ebp+var_4+2]
		mov	byte ptr [ebp+var_4+3],	al
		jmp	short loc_7F810D38
; ---------------------------------------------------------------------------

loc_7F810D06:				; CODE XREF: sub_7F810C9B+43j
		push	[ebp+var_C]
		push	68007h
		lea	ecx, [ebp+var_4]
		push	ecx
		push	dword ptr [esi+4]
		call	sub_7F818B75
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F810E34
		cmp	[ebp+var_8], 1
		sbb	al, al
		and	al, 42h
		mov	byte ptr [ebp+var_4+3],	al
		cmp	al, 1
		sbb	al, al
		neg	al
		mov	byte ptr [ebp+var_4+2],	al

loc_7F810D38:				; CODE XREF: sub_7F810C9B+69j
		and	byte ptr [ebp+var_4+3],	7Fh
		mov	eax, [esi+2Ch]
		test	eax, eax
		jz	short loc_7F810D52
		push	eax
		call	sub_7F8198FC
		test	ax, ax
		jle	short loc_7F810D52
		or	byte ptr [ebp+var_4+3],	80h

loc_7F810D52:				; CODE XREF: sub_7F810C9B+A6j
					; sub_7F810C9B+B1j
		cmp	[ebp+var_8], 0
		jnz	short loc_7F810D78
		mov	ax, [esi+14h]
		test	al, 20h
		jnz	short loc_7F810D78
		test	al, 2
		jz	short loc_7F810D6A
		or	byte ptr [ebp+var_4+3],	42h
		jmp	short loc_7F810D78
; ---------------------------------------------------------------------------

loc_7F810D6A:				; CODE XREF: sub_7F810C9B+C7j
		test	ah, 0Ch
		jz	short loc_7F810D78
		or	byte ptr [ebp+var_4+3],	1
		mov	edi, 1

loc_7F810D78:				; CODE XREF: sub_7F810C9B+BBj
					; sub_7F810C9B+C3j ...
		mov	al, byte ptr [ebp+var_4+2]
		cmp	byte ptr [ebp+var_4+3],	al
		jz	short loc_7F810DA9
		push	1
		lea	eax, [ebp+var_4+3]
		push	eax
		lea	ecx, [ebp+var_4]
		or	byte ptr [esi+15h], 0Ah
		mov	[ebp+var_C], 1
		push	0
		push	ecx
		push	dword ptr [esi+4]
		call	sub_7F818DC7
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F810E34

loc_7F810DA9:				; CODE XREF: sub_7F810C9B+E3j
		test	edi, edi
		jz	short loc_7F810E01
		lea	eax, [ebp+var_1C]
		mov	edi, 38020h
		push	eax
		call	sub_7F817717
		push	0Eh
		lea	eax, [ebp+var_8+2]
		push	edi
		push	eax
		push	dword ptr [esi+4]
		call	sub_7F818B75
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F810DE7
		cmp	ebx, 1003h
		jnz	short loc_7F810E34
		push	0
		push	edi
		push	dword ptr [esi+4]
		call	sub_7F8194ED
		mov	word ptr [ebp+var_8+2],	ax

loc_7F810DE7:				; CODE XREF: sub_7F810C9B+133j
		push	0Eh
		lea	eax, [ebp+var_1C]
		push	eax
		lea	ecx, [ebp+var_8+2]
		push	0
		push	ecx
		push	dword ptr [esi+4]
		call	sub_7F818DC7
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F810E34

loc_7F810E01:				; CODE XREF: sub_7F810C9B+13j
					; sub_7F810C9B+110j
		lea	edi, [esi+14h]
		test	byte ptr [edi+1], 8
		jz	short loc_7F810E18
		push	dword ptr [esi+4]
		call	sub_7F8178C4
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F810E34

loc_7F810E18:				; CODE XREF: sub_7F810C9B+16Dj
		mov	eax, [esi+2Ch]
		test	eax, eax
		jz	short loc_7F810E31
		test	byte ptr [edi+1], 4
		jz	short loc_7F810E31
		push	eax
		call	sub_7F8178C4
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F810E34

loc_7F810E31:				; CODE XREF: sub_7F810C9B+182j
					; sub_7F810C9B+188j
		or	byte ptr [edi],	80h

loc_7F810E34:				; CODE XREF: sub_7F810C9B+5Dj
					; sub_7F810C9B+83j ...
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F810C9B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F810E3F	proc near		; CODE XREF: sub_7F80B80E+53p
					; sub_7F80D991+28p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		push	esi
		push	edi
		mov	esi, [eax]
		push	0
		push	[ebp+arg_4]
		push	dword ptr [esi+4]
		call	sub_7F8194ED
		mov	di, ax
		test	di, di
		jl	short loc_7F810E6F
		push	edi
		push	dword ptr [esi+4]
		call	sub_7F81990D
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		jmp	short loc_7F810E78
; ---------------------------------------------------------------------------

loc_7F810E6F:				; CODE XREF: sub_7F810E3F+1Ej
		mov	ecx, [ebp+arg_8]
		mov	dword ptr [ecx], 0

loc_7F810E78:				; CODE XREF: sub_7F810E3F+2Ej
		test	di, di
		mov	eax, 0
		jge	short loc_7F810E87
		mov	eax, 1004h

loc_7F810E87:				; CODE XREF: sub_7F810E3F+41j
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
sub_7F810E3F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F810E8D	proc near		; CODE XREF: sub_7F80B80E+8Cp
					; sub_7F80B80E+233p ...

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	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		push	esi
		push	edi
		mov	esi, [eax]
		xor	ebx, ebx
		push	ebx
		push	[ebp+arg_4]
		push	dword ptr [esi+4]
		call	sub_7F8194ED
		test	ax, ax
		mov	edi, [ebp+arg_C]
		jge	short loc_7F810EBB
		mov	eax, 1004h
		mov	[edi], ebx
		jmp	short loc_7F810ED7
; ---------------------------------------------------------------------------

loc_7F810EBB:				; CODE XREF: sub_7F810E8D+23j
		mov	ecx, [edi]
		mov	[ebp+var_4], ecx
		lea	ecx, [ebp+var_4]
		push	ecx
		push	[ebp+arg_8]
		push	0
		push	eax
		push	dword ptr [esi+4]
		call	sub_7F818D47
		mov	ecx, [ebp+var_4]
		mov	[edi], ecx

loc_7F810ED7:				; CODE XREF: sub_7F810E8D+2Cj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F810E8D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F810EE0	proc near		; CODE XREF: sub_7F80F674+52p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	edx, [esp+arg_0]
		mov	ebp, esp
		mov	eax, [edx]
		push	[ebp+arg_8]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	dword ptr [eax+4]
		call	sub_7F819938
		pop	ebp
		retn	10h
sub_7F810EE0	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F810EFE	proc near		; CODE XREF: sub_7F80F674+1Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	ecx, [eax]
		push	dword ptr [ecx+4]
		call	sub_7F8198FC
		mov	ecx, [esp+arg_4]
		mov	[ecx], ax
		retn	8
sub_7F810EFE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F810F16	proc near		; CODE XREF: sub_7F810FCE+78p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		mov	[ebp+var_4], 0
		test	byte ptr [ebp+arg_C], 3
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		jz	short loc_7F810F45
		mov	eax, [edi]
		mov	ax, [eax+14h]
		and	al, 81h
		cmp	al, 1
		jz	short loc_7F810F45
		mov	ebx, 203h
		mov	esi, [ebp+arg_14]
		jmp	short loc_7F810FAF
; ---------------------------------------------------------------------------

loc_7F810F45:				; CODE XREF: sub_7F810F16+17j
					; sub_7F810F16+23j
		push	10h
		push	0Ah
		call	sub_7F82F18D
		mov	esi, [ebp+arg_14]
		test	eax, eax
		mov	[esi], eax
		jnz	short loc_7F810F5E
		mov	ebx, 400h
		jmp	short loc_7F810FAF
; ---------------------------------------------------------------------------

loc_7F810F5E:				; CODE XREF: sub_7F810F16+3Fj
		test	byte ptr [ebp+arg_C], 2
		jz	short loc_7F810F7E
		or	byte ptr [ebp+arg_C], 1
		lea	eax, [ebp+var_4]
		push	eax
		mov	eax, [edi]
		push	[ebp+arg_10]
		push	[ebp+arg_8]
		push	dword ptr [eax+4]
		call	sub_7F819BC5
		jmp	short loc_7F810F95
; ---------------------------------------------------------------------------

loc_7F810F7E:				; CODE XREF: sub_7F810F16+4Cj
		lea	eax, [ebp+var_4]
		mov	edx, [edi]
		push	eax
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	dword ptr [edx+4]
		call	sub_7F819D64

loc_7F810F95:				; CODE XREF: sub_7F810F16+66j
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F810FAF
		mov	eax, [esi]
		mov	ecx, [eax]
		mov	ax, word ptr [ebp+arg_C]
		mov	[ecx], edi
		mov	edx, [ebp+var_4]
		mov	[ecx+4], edx
		mov	[ecx+8], ax

loc_7F810FAF:				; CODE XREF: sub_7F810F16+2Dj
					; sub_7F810F16+46j ...
		xor	edi, edi
		test	ebx, ebx
		jz	short loc_7F810FC3
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_7F810FC3
		push	eax
		call	sub_7F82F1E1
		mov	[esi], edi

loc_7F810FC3:				; CODE XREF: sub_7F810F16+9Dj
					; sub_7F810F16+A3j
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F810F16	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F810FCE	proc near		; CODE XREF: sub_7F80DF67+25p

var_2		= word ptr -2
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

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		cmp	[ebp+arg_4], 68007h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	edi, [ebp+arg_10]
		mov	dword ptr [edi], 0
		jnz	short loc_7F810FFE
		mov	eax, [esi]
		test	byte ptr [eax+15h], 10h
		jnz	short loc_7F810FFE
		mov	eax, 210h
		jmp	loc_7F81108C
; ---------------------------------------------------------------------------

loc_7F810FFE:				; CODE XREF: sub_7F810FCE+1Cj
					; sub_7F810FCE+24j
		mov	bx, [ebp+arg_8]
		test	bl, 1
		jz	short loc_7F811016
		mov	eax, [esi]
		test	byte ptr [eax+14h], 80h
		jz	short loc_7F811016
		mov	eax, 203h
		jmp	short loc_7F81108C
; ---------------------------------------------------------------------------

loc_7F811016:				; CODE XREF: sub_7F810FCE+37j
					; sub_7F810FCE+3Fj
		test	bl, 2
		jnz	short loc_7F81103A
		push	0
		mov	ecx, [esi]
		push	[ebp+arg_4]
		push	dword ptr [ecx+4]
		call	sub_7F8194ED
		mov	[ebp+var_2], ax
		test	ax, ax
		jge	short loc_7F81103A
		mov	eax, 1004h
		jmp	short loc_7F81108C
; ---------------------------------------------------------------------------

loc_7F81103A:				; CODE XREF: sub_7F810FCE+4Bj
					; sub_7F810FCE+63j
		push	edi
		push	[ebp+arg_C]
		push	ebx
		push	[ebp+arg_4]
		push	dword ptr [ebp+var_2]
		push	esi
		call	sub_7F810F16
		test	eax, eax
		jnz	short loc_7F81108C
		test	bl, 3
		jz	short loc_7F81108C
		mov	ecx, [esi]
		cmp	dword ptr [ecx+18h], 0
		jz	short loc_7F811088
		movzx	edx, word ptr [ebp+arg_4]
		test	edx, edx
		jz	short loc_7F811084
		cmp	edx, 8000h
		jz	short loc_7F811084
		cmp	edx, 8004h
		jl	short loc_7F811088
		cmp	edx, 8008h
		jle	short loc_7F811084
		cmp	edx, 800Dh
		jnz	short loc_7F811088

loc_7F811084:				; CODE XREF: sub_7F810FCE+94j
					; sub_7F810FCE+9Cj ...
		or	byte ptr [ecx+15h], 2

loc_7F811088:				; CODE XREF: sub_7F810FCE+8Cj
					; sub_7F810FCE+A4j ...
		or	byte ptr [ecx+15h], 8

loc_7F81108C:				; CODE XREF: sub_7F810FCE+2Bj
					; sub_7F810FCE+46j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F810FCE	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F811095	proc near		; CODE XREF: sub_7F80DF67+ACp
					; sub_7F80E024+12p

var_2		= byte ptr -2
arg_0		= dword	ptr  4

		sub	esp, 4
		lea	ecx, [esp+4+var_2]
		push	ebx
		push	esi
		push	edi
		mov	esi, [esp+10h+arg_0]
		push	ecx
		mov	eax, [esi]
		mov	ebx, [eax]
		lea	eax, [ebx+4]
		push	eax
		call	sub_7F81A0C1
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F8110D2
		test	byte ptr [ebx+8], 1
		jz	short loc_7F8110C5
		mov	eax, [ebx]
		mov	eax, [eax]
		or	byte ptr [eax+15h], 8

loc_7F8110C5:				; CODE XREF: sub_7F811095+26j
		push	dword ptr [esi]
		call	sub_7F82F1E1
		mov	dword ptr [esi], 0

loc_7F8110D2:				; CODE XREF: sub_7F811095+20j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn	4
sub_7F811095	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8110DD	proc near		; CODE XREF: sub_7F80E173+74p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	edx, [esp+4+arg_0]
		push	[esp+4+arg_4]
		mov	eax, [edx]
		push	dword ptr [eax+4]
		call	sub_7F819EC5
		retn	0Ch
sub_7F8110DD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8110F6	proc near		; CODE XREF: sub_7F81039F+10Ep
					; sub_7F810567+1CCp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		push	esi
		mov	bx, word ptr [ebp+arg_4]
		push	edi
		and	bx, 3
		mov	esi, [ebp+arg_0]
		mov	edi, [esi]
		jz	short loc_7F81113F
		push	0
		push	0
		call	sub_7F816903
		mov	[esi+30h], eax
		test	eax, eax
		jnz	short loc_7F811128
		mov	eax, 400h
		jmp	loc_7F8111B2
; ---------------------------------------------------------------------------

loc_7F811128:				; CODE XREF: sub_7F8110F6+26j
		push	0
		push	0
		call	sub_7F816903
		mov	[esi+34h], eax
		test	eax, eax
		jnz	short loc_7F81113F
		mov	eax, 400h
		jmp	short loc_7F8111B2
; ---------------------------------------------------------------------------

loc_7F81113F:				; CODE XREF: sub_7F8110F6+16j
					; sub_7F8110F6+40j
		mov	eax, [esi+1Ch]
		and	al, 89h
		or	al, 89h
		mov	[ebp+var_4], eax
		test	eax, 0FFFFFF00h
		mov	eax, 1001h
		jz	short loc_7F811166
		lea	eax, [esi+2Ch]
		lea	ecx, [ebp+var_4]
		push	eax
		push	[ebp+arg_4]
		push	ecx
		push	edi
		call	sub_7F817E9D

loc_7F811166:				; CODE XREF: sub_7F8110F6+5Dj
		cmp	eax, 1001h
		jnz	short loc_7F81119F
		test	bx, bx
		jz	short loc_7F811184
		lea	eax, [esi+2Ch]
		lea	ecx, [ebp+var_4]
		push	eax
		push	2
		push	ecx
		push	edi
		call	sub_7F817E9D
		jmp	short loc_7F81119F
; ---------------------------------------------------------------------------

loc_7F811184:				; CODE XREF: sub_7F8110F6+7Aj
		lea	eax, [esi+2Ch]
		xor	ebx, ebx
		push	eax
		lea	ecx, [ebp+var_4]
		mov	[ebp+var_4], 444C4189h
		push	ebx
		push	ecx
		push	edi
		call	sub_7F817E9D
		mov	[ebp+var_4], ebx

loc_7F81119F:				; CODE XREF: sub_7F8110F6+75j
					; sub_7F8110F6+8Cj
		test	eax, eax
		jnz	short loc_7F8111B2
		test	dword ptr [esi+1Ch], 0FFFFFF00h
		jnz	short loc_7F8111B2
		mov	ecx, [ebp+var_4]
		mov	[esi+1Ch], ecx

loc_7F8111B2:				; CODE XREF: sub_7F8110F6+2Dj
					; sub_7F8110F6+47j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F8110F6	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8111BB	proc near		; CODE XREF: sub_7F81039F+18Cp
					; sub_7F810567+215p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+30h]
		test	eax, eax
		jz	short loc_7F8111CD
		push	eax
		call	sub_7F82F1E1

loc_7F8111CD:				; CODE XREF: sub_7F8111BB+Aj
		mov	eax, [esi+34h]
		test	eax, eax
		jz	short loc_7F8111DA
		push	eax
		call	sub_7F82F1E1

loc_7F8111DA:				; CODE XREF: sub_7F8111BB+17j
		add	esi, 2Ch
		cmp	dword ptr [esi], 0
		jz	short loc_7F8111EA
		push	0
		push	esi
		call	sub_7F81813C

loc_7F8111EA:				; CODE XREF: sub_7F8111BB+25j
		pop	esi
		retn	4
sub_7F8111BB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8111EE	proc near		; CODE XREF: sub_7F80D6D8+24p
					; sub_7F80DC30+2Ap

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 4
		mov	edx, [eax]
		xor	eax, eax
		push	eax
		push	eax
		push	[ebp+arg_4]
		push	eax
		mov	ecx, [edx+1Ch]
		push	eax
		lea	eax, [ebp+var_4]
		mov	[ebp+var_4], ecx
		push	eax
		push	dword ptr [edx]
		call	sub_7F811A4F
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F8111EE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81121A	proc near		; CODE XREF: sub_7F80D5D7+6Dp
					; sub_7F80DC30+100p

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		= word ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp+var_4], 87h
		push	ebx
		push	esi
		push	edi
		mov	ebx, [eax]
		mov	edi, [ebx+2Ch]
		mov	esi, [ebp+arg_C]
		test	byte ptr [ebp+arg_8], 1
		mov	dword ptr [esi], 0
		jz	short loc_7F811256
		mov	ax, [ebx+14h]
		and	al, 81h
		cmp	al, 1
		jz	short loc_7F811256
		mov	edi, 203h
		jmp	loc_7F811327
; ---------------------------------------------------------------------------

loc_7F811256:				; CODE XREF: sub_7F81121A+26j
					; sub_7F81121A+30j
		test	edi, edi
		jnz	short loc_7F811264
		mov	edi, 1015h
		jmp	loc_7F811327
; ---------------------------------------------------------------------------

loc_7F811264:				; CODE XREF: sub_7F81121A+3Ej
		push	0
		push	[ebp+arg_4]
		push	edi
		call	sub_7F8194ED
		test	ax, ax
		jge	short loc_7F81127E
		mov	edi, 1001h
		jmp	loc_7F811327
; ---------------------------------------------------------------------------

loc_7F81127E:				; CODE XREF: sub_7F81121A+58j
		lea	ecx, [ebp+var_C]
		lea	edx, [ebp+var_8]
		mov	[ebp+var_C], 4
		push	ecx
		push	edx
		push	0
		push	eax
		push	edi
		call	sub_7F818D47
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81132B
		cmp	[ebp+var_8], 0
		jz	short loc_7F8112D1
		test	byte ptr [ebp+arg_8], 3
		jz	short loc_7F8112C5
		push	0
		lea	eax, [ebp+var_4]
		push	0
		push	esi
		push	2
		push	eax
		push	0
		push	[ebp+var_8]
		push	dword ptr [ebx]
		call	sub_7F810567
		jmp	short loc_7F8112FB
; ---------------------------------------------------------------------------

loc_7F8112C5:				; CODE XREF: sub_7F81121A+90j
		cmp	[ebp+var_8], 0
		jz	short loc_7F8112D1
		mov	eax, [ebp+var_8]
		mov	[ebp+var_4], eax

loc_7F8112D1:				; CODE XREF: sub_7F81121A+8Aj
					; sub_7F81121A+AFj
		xor	ecx, ecx
		mov	eax, 0
		cmp	[ebp+arg_8], 1
		adc	eax, 0FFFFFFFFh
		push	ecx
		and	ax, 2
		push	ecx
		push	esi
		lea	edx, [ebp+var_4]
		push	7E0h
		push	2
		push	eax
		push	edx
		push	ecx
		push	dword ptr [ebx]
		call	sub_7F81039F

loc_7F8112FB:				; CODE XREF: sub_7F81121A+A9j
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F81132B
		test	byte ptr [ebp+arg_8], 3
		jz	short loc_7F811313
		push	1
		push	[ebp+var_4]
		push	dword ptr [ebx]
		call	sub_7F82BFE4

loc_7F811313:				; CODE XREF: sub_7F81121A+EBj
		mov	eax, [esi]
		mov	edx, [ebp+arg_0]
		mov	ecx, [eax]
		mov	eax, [ebp+arg_4]
		mov	[ecx+24h], edx
		mov	[ecx+2Ch], eax
		mov	byte ptr [ecx+20h], 1

loc_7F811327:				; CODE XREF: sub_7F81121A+37j
					; sub_7F81121A+45j ...
		test	edi, edi
		jz	short loc_7F811338

loc_7F81132B:				; CODE XREF: sub_7F81121A+80j
					; sub_7F81121A+E5j
		cmp	dword ptr [esi], 0
		jz	short loc_7F811338
		push	0
		push	esi
		call	sub_7F810922

loc_7F811338:				; CODE XREF: sub_7F81121A+10Fj
					; sub_7F81121A+114j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F81121A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F811343	proc near		; DATA XREF: sub_7F810922:loc_7F81093Fo

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_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		mov	ecx, [ebp+arg_0]
		push	esi
		push	edi
		xor	edi, edi
		mov	eax, [ecx]
		mov	[ebp+var_8], edi
		mov	ebx, [eax]
		cmp	[ebp+arg_4], edi
		mov	ecx, [ebx+24h]
		mov	eax, [ebx+8]
		mov	esi, [ecx]
		mov	[ebp+var_10], eax
		mov	ecx, [esi+2Ch]
		mov	[ebp+var_C], ecx
		jz	loc_7F8113FE
		push	edi
		push	dword ptr [ebx+2Ch]
		push	ecx
		call	sub_7F8194ED
		mov	[ebp+var_2], ax
		lea	ecx, [ebp+var_18]
		push	ecx
		lea	edx, [ebp+var_14]
		mov	[ebp+var_18], 4
		push	edx
		push	edi
		push	dword ptr [ebp+var_2]
		push	[ebp+var_C]
		call	sub_7F818D47
		mov	[ebp+var_8], eax
		cmp	eax, edi
		jnz	short loc_7F81141C
		add	ebx, 4
		push	dword ptr [ebx]
		call	sub_7F8178C4
		mov	[ebp+var_8], eax
		cmp	eax, edi
		jnz	short loc_7F81141C
		push	4
		lea	eax, [ebp+var_10]
		push	eax
		lea	ecx, [ebp+var_2]
		push	edi
		push	ecx
		push	[ebp+var_C]
		call	sub_7F818DC7
		mov	[ebp+var_8], eax
		cmp	eax, edi
		jnz	short loc_7F81141C
		push	1
		push	ebx
		call	sub_7F81813C
		or	byte ptr [esi+15h], 4
		cmp	[ebp+var_14], edi
		jz	short loc_7F8113EC
		push	edi
		lea	ecx, [esi+30h]
		push	edi
		push	[ebp+var_14]
		push	ecx
		call	sub_7F81698C

loc_7F8113EC:				; CODE XREF: sub_7F811343+99j
		push	0
		add	esi, 34h
		push	0
		push	[ebp+var_10]
		push	esi
		call	sub_7F81698C
		jmp	short loc_7F811409
; ---------------------------------------------------------------------------

loc_7F8113FE:				; CODE XREF: sub_7F811343+29j
		push	0
		add	ebx, 4
		push	ebx
		call	sub_7F81813C

loc_7F811409:				; CODE XREF: sub_7F811343+B9j
		mov	ecx, [ebp+arg_0]
		push	dword ptr [ecx]
		call	sub_7F82F1E1
		mov	ecx, [ebp+arg_0]
		mov	dword ptr [ecx], 0

loc_7F81141C:				; CODE XREF: sub_7F811343+5Dj
					; sub_7F811343+6Ej ...
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F811343	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F811428	proc near		; DATA XREF: sub_7F81039F+11Bo
					; sub_7F810567+16Fo

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 4
		mov	ecx, [eax]
		push	esi
		mov	esi, [ebp+arg_8]
		mov	edx, [ecx]
		cmp	[esi+4], edx
		jnz	short loc_7F81145E
		mov	[ebp+var_4], eax
		mov	eax, [ecx+24h]
		mov	edx, [ecx+28h]
		test	edx, edx
		jz	short loc_7F811453
		push	esi
		push	[ebp+arg_4]
		push	eax
		call	edx

loc_7F811453:				; CODE XREF: sub_7F811428+22j
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_7F810922

loc_7F81145E:				; CODE XREF: sub_7F811428+15j
		xor	eax, eax
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F811428	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F811467	proc near		; CODE XREF: sub_7F810567+1AFp
					; sub_7F81CCA0+C0p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	edi
		lea	eax, [ebp+var_8]
		push	0
		mov	edi, [ebp+arg_0]
		push	0
		push	eax
		push	0
		push	[ebp+arg_4]
		push	edi
		call	sub_7F82D114
		test	eax, eax
		jnz	short loc_7F8114F8
		xor	eax, eax
		cmp	[ebp+var_8], eax
		jnz	short loc_7F81149F
		mov	edx, [ebp+arg_C]
		cmp	edx, eax
		jz	short loc_7F811498
		mov	[edx], eax

loc_7F811498:				; CODE XREF: sub_7F811467+2Dj
		mov	eax, 1001h
		jmp	short loc_7F8114F8
; ---------------------------------------------------------------------------

loc_7F81149F:				; CODE XREF: sub_7F811467+26j
		mov	eax, [ebp+var_8]
		push	0
		and	al, 89h
		or	al, 89h
		push	eax
		mov	[ebp+var_8], eax
		push	edi
		call	sub_7F82BFE4
		test	eax, eax
		jnz	short loc_7F8114F8
		lea	eax, [ebp+var_2]
		lea	ecx, [ebp+var_C]
		push	eax
		lea	edx, [ebp+var_8]
		mov	[ebp+var_2], 1
		push	ecx
		push	edx
		push	edi
		call	sub_7F82BE56
		test	eax, eax
		jnz	short loc_7F8114F8
		push	0
		lea	eax, [ebp+var_C]
		push	1
		lea	ecx, [ebp+arg_8]
		push	eax
		push	ecx
		push	edi
		call	sub_7F82D2BE
		test	eax, eax
		jnz	short loc_7F8114F8
		test	eax, eax
		jnz	short loc_7F8114F8
		mov	edx, [ebp+arg_C]
		test	edx, edx
		jz	short loc_7F8114F8
		mov	ecx, [ebp+var_C]
		mov	[edx], ecx

loc_7F8114F8:				; CODE XREF: sub_7F811467+1Fj
					; sub_7F811467+36j ...
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F811467	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8114FF	proc near		; CODE XREF: sub_7F8216EE+5Dp
		push	esi
		push	30h
		push	0C8h
		call	sub_7F82F18D
		xor	ecx, ecx
		test	eax, eax
		jz	short loc_7F81154E
		mov	edx, [eax]
		mov	word ptr [edx],	0FFFFh
		add	edx, 8
		mov	[edx-6], cx
		mov	word ptr [edx-4], 8
		mov	word ptr [edx-2], 8

loc_7F81152C:				; CODE XREF: sub_7F8114FF+47j
		lea	esi, [ecx-1]
		inc	cx
		mov	[edx+4], si
		mov	[edx+6], cx
		mov	dword ptr [edx], 0FFFFFFFFh
		add	edx, 18h
		cmp	cx, 8
		jl	short loc_7F81152C
		mov	word ptr [edx-12h], 0FFFFh

loc_7F81154E:				; CODE XREF: sub_7F8114FF+11j
		pop	esi
		retn
sub_7F8114FF	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F811550	proc near		; CODE XREF: sub_7F820EE1+12p

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_7F82F1E1
		retn	4
sub_7F811550	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81155C	proc near		; CODE XREF: sub_7F817E9D+67p
					; sub_7F817E9D+28Fp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= word ptr  0Ch

		mov	eax, [esp+arg_0]
		push	esi
		push	0
		mov	ecx, [eax]
		mov	edx, [ecx]
		push	[esp+8+arg_4]
		mov	eax, [edx+258h]
		mov	esi, [eax]
		push	esi
		call	sub_7F81165C
		test	ax, ax
		jl	short loc_7F811591
		movsx	eax, ax
		movzx	ecx, [esp+4+arg_8]
		imul	eax, 6
		add	eax, ecx
		mov	eax, [esi+eax*4+10h]
		jmp	short loc_7F811593
; ---------------------------------------------------------------------------

loc_7F811591:				; CODE XREF: sub_7F81155C+20j
		xor	eax, eax

loc_7F811593:				; CODE XREF: sub_7F81155C+33j
		pop	esi
		retn	0Ch
sub_7F81155C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F811597	proc near		; CODE XREF: sub_7F817E9D+132p
					; sub_7F817E9D+1AEp ...

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
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	edi, [ebp+arg_0]
		mov	eax, [edi]
		mov	ecx, [eax]
		lea	eax, [ebp+var_4]
		push	eax
		mov	edx, [ecx+258h]
		push	[ebp+arg_4]
		mov	ebx, [edx]
		mov	[ebp+var_8], edx
		push	ebx
		call	sub_7F81165C
		mov	word ptr [ebp+var_4+2],	ax
		cmp	[ebp+arg_C], esi
		jz	short loc_7F811607
		cmp	ax, si
		jge	short loc_7F8115ED
		lea	eax, [ebp+var_4+2]
		push	eax
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	edi
		call	sub_7F8116DD
		mov	esi, eax
		mov	eax, [edi]
		mov	ecx, [eax]
		mov	edx, [ecx+258h]
		mov	ebx, [edx]

loc_7F8115ED:				; CODE XREF: sub_7F811597+36j
		test	esi, esi
		jnz	short loc_7F811651
		movsx	ecx, word ptr [ebp+var_4+2]
		movzx	eax, word ptr [ebp+arg_8]
		imul	ecx, 6
		add	ecx, eax
		mov	edx, [ebp+arg_C]
		mov	[ebx+ecx*4+10h], edx
		jmp	short loc_7F811651
; ---------------------------------------------------------------------------

loc_7F811607:				; CODE XREF: sub_7F811597+31j
		xor	ecx, ecx
		cmp	word ptr [ebp+var_4+2],	cx
		jl	short loc_7F81164C
		movsx	eax, word ptr [ebp+var_4+2]
		imul	eax, 18h
		lea	edx, [eax+ebx+8]
		mov	eax, 3
		movzx	ebx, word ptr [ebp+arg_8]
		mov	[edx+ebx*4+8], ecx
		add	edx, 14h

loc_7F81162A:				; CODE XREF: sub_7F811597+9Cj
		cmp	dword ptr [edx], 0
		jnz	short loc_7F811635
		sub	edx, 4
		dec	eax
		jns	short loc_7F81162A

loc_7F811635:				; CODE XREF: sub_7F811597+96j
		test	eax, eax
		jge	short loc_7F811651
		push	[ebp+arg_8]
		push	[ebp+var_4]
		push	[ebp+var_4+2]
		push	[ebp+var_8]
		call	sub_7F81181C
		jmp	short loc_7F811651
; ---------------------------------------------------------------------------

loc_7F81164C:				; CODE XREF: sub_7F811597+76j
		mov	esi, 1001h

loc_7F811651:				; CODE XREF: sub_7F811597+58j
					; sub_7F811597+6Ej ...
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F811597	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81165C	proc near		; CODE XREF: sub_7F81155C+18p
					; sub_7F811597+25p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	si, 0FFFFh
		mov	edi, [ebp+arg_0]
		mov	ax, [edi]
		mov	edx, [ebp+arg_8]
		test	edx, edx
		jnz	short loc_7F811697
		mov	cx, word_7F835888
		cmp	[edi+6], cx
		jle	short loc_7F811697
		movsx	ebx, cx
		imul	ebx, 18h
		mov	ecx, [ebp+arg_4]
		cmp	[ebx+edi+8], ecx
		jnz	short loc_7F811697
		mov	ax, word_7F835888
		jmp	short loc_7F8116D6
; ---------------------------------------------------------------------------

loc_7F811697:				; CODE XREF: sub_7F81165C+15j
					; sub_7F81165C+22j ...
		test	ax, ax
		jl	short loc_7F8116C4

loc_7F81169C:				; CODE XREF: sub_7F81165C+66j
		movsx	ecx, ax
		imul	ecx, 18h
		lea	ecx, [ecx+edi+8]
		mov	ebx, [ecx]
		cmp	[ebp+arg_4], ebx
		jbe	short loc_7F8116B3
		mov	cx, [ecx+6]
		jmp	short loc_7F8116B9
; ---------------------------------------------------------------------------

loc_7F8116B3:				; CODE XREF: sub_7F81165C+4Fj
		jnb	short loc_7F8116C4
		mov	cx, [ecx+4]

loc_7F8116B9:				; CODE XREF: sub_7F81165C+55j
		mov	si, ax
		mov	ax, cx
		test	cx, cx
		jge	short loc_7F81169C

loc_7F8116C4:				; CODE XREF: sub_7F81165C+3Ej
					; sub_7F81165C:loc_7F8116B3j
		test	edx, edx
		jz	short loc_7F8116CB
		mov	[edx], si

loc_7F8116CB:				; CODE XREF: sub_7F81165C+6Aj
		test	ax, ax
		jl	short loc_7F8116D6
		mov	word_7F835888, ax

loc_7F8116D6:				; CODE XREF: sub_7F81165C+39j
					; sub_7F81165C+72j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_7F81165C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8116DD	proc near		; CODE XREF: sub_7F811597+43p

var_8		= dword	ptr -8
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

		push	ebp
		mov	eax, [esp+arg_C]
		mov	word ptr [eax],	0FFFFh
		mov	ebp, esp
		sub	esp, 8
		mov	ecx, [ebp+arg_0]
		mov	[ebp+var_8], 0
		push	ebx
		mov	edx, [ecx]
		push	esi
		push	edi
		mov	edi, [edx]
		mov	eax, [edi+258h]
		mov	[ebp+var_4], eax
		mov	ecx, [eax]
		cmp	word ptr [ecx+2], 0
		jge	loc_7F811798
		mov	si, [ecx+6]
		push	30h
		lea	eax, [esi+8]
		movsx	ebx, ax
		imul	ebx, 18h
		lea	eax, [ebx+8]
		push	eax
		push	[ebp+var_4]
		call	sub_7F82F24A
		test	eax, eax
		jnz	short loc_7F811742
		mov	[ebp+var_8], 400h
		mov	dx, word ptr [ebp+var_4+2]
		jmp	loc_7F8117FD
; ---------------------------------------------------------------------------

loc_7F811742:				; CODE XREF: sub_7F8116DD+53j
		cmp	eax, [ebp+var_4]
		jz	short loc_7F811750
		mov	[edi+258h], eax
		mov	[ebp+var_4], eax

loc_7F811750:				; CODE XREF: sub_7F8116DD+68j
		mov	dx, 7
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		lea	edi, [ecx+ebx+8]

loc_7F81175D:				; CODE XREF: sub_7F8116DD+9Bj
		sub	edi, 18h
		lea	eax, [esi+edx-1]
		mov	[edi+4], ax
		lea	ebx, [esi+edx+1]
		dec	dx
		mov	[edi+6], bx
		mov	dword ptr [edi], 0FFFFFFFFh
		jns	short loc_7F81175D
		mov	word ptr [edi+0AEh], 0FFFFh
		mov	word ptr [edi+4], 0FFFFh
		mov	[ecx+2], si
		add	word ptr [ecx+6], 8
		mov	word ptr [ecx+4], 8

loc_7F811798:				; CODE XREF: sub_7F8116DD+30j
		mov	dx, [ecx+2]
		movsx	eax, dx
		imul	eax, 18h
		lea	edi, [eax+ecx]
		mov	ax, [edi+0Eh]
		mov	[ecx+2], ax
		test	ax, ax
		jl	short loc_7F8117BF
		movsx	eax, ax
		imul	eax, 18h
		mov	word ptr [eax+ecx+0Ch],	0FFFFh

loc_7F8117BF:				; CODE XREF: sub_7F8116DD+D3j
		mov	ax, [ebp+arg_8]
		add	edi, 8
		dec	word ptr [ecx+4]
		mov	esi, [ebp+arg_4]
		mov	word ptr [edi+4], 0FFFFh
		mov	word ptr [edi+6], 0FFFFh
		test	ax, ax
		mov	[edi], esi
		jge	short loc_7F8117E5
		mov	[ecx], dx
		jmp	short loc_7F8117FD
; ---------------------------------------------------------------------------

loc_7F8117E5:				; CODE XREF: sub_7F8116DD+101j
		movsx	eax, ax
		imul	eax, 18h
		lea	eax, [eax+ecx+8]
		cmp	[eax], esi
		jnb	short loc_7F8117F9
		mov	[eax+6], dx
		jmp	short loc_7F8117FD
; ---------------------------------------------------------------------------

loc_7F8117F9:				; CODE XREF: sub_7F8116DD+114j
		mov	[eax+4], dx

loc_7F8117FD:				; CODE XREF: sub_7F8116DD+60j
					; sub_7F8116DD+106j ...
		cmp	[ebp+var_8], 0
		mov	eax, [ebp+arg_C]
		jz	short loc_7F81180D
		mov	word ptr [eax],	0FFFFh
		jmp	short loc_7F811810
; ---------------------------------------------------------------------------

loc_7F81180D:				; CODE XREF: sub_7F8116DD+127j
		mov	[eax], dx

loc_7F811810:				; CODE XREF: sub_7F8116DD+12Ej
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F8116DD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81181C	proc near		; CODE XREF: sub_7F811597+AEp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch
arg_8		= word ptr  10h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 8
		mov	ecx, [eax]
		push	ebx
		mov	[ebp+var_4], 1
		movsx	eax, [ebp+arg_4]
		imul	eax, 18h
		push	esi
		push	edi
		lea	edx, [eax+ecx+8]
		cmp	word ptr [edx+4], 0
		jge	short loc_7F81184C
		lea	eax, [edx+6]
		mov	esi, [ebp+var_4]
		jmp	short loc_7F81188A
; ---------------------------------------------------------------------------

loc_7F81184C:				; CODE XREF: sub_7F81181C+26j
		mov	si, [edx+6]
		test	si, si
		jge	short loc_7F81185D
		lea	eax, [edx+4]
		mov	esi, [ebp+var_4]
		jmp	short loc_7F81188A
; ---------------------------------------------------------------------------

loc_7F81185D:				; CODE XREF: sub_7F81181C+37j
		movsx	esi, si
		imul	esi, 18h
		xor	edi, edi
		lea	eax, [edx+6]
		cmp	[esi+ecx+0Ch], di
		mov	[ebp+var_4], edi
		lea	esi, [esi+ecx+8]
		jl	short loc_7F81188A

loc_7F811876:				; CODE XREF: sub_7F81181C+6Cj
		lea	eax, [esi+4]
		movsx	esi, word ptr [eax]
		imul	esi, 18h
		lea	esi, [esi+ecx+8]
		cmp	word ptr [esi+4], 0
		jge	short loc_7F811876

loc_7F81188A:				; CODE XREF: sub_7F81181C+2Ej
					; sub_7F81181C+3Fj ...
		cmp	[ebp+arg_8], 0
		jge	short loc_7F811895
		mov	ebx, ecx
		jmp	short loc_7F8118B4
; ---------------------------------------------------------------------------

loc_7F811895:				; CODE XREF: sub_7F81181C+73j
		movsx	edi, [ebp+arg_8]
		imul	edi, 18h
		lea	ebx, [edi+ecx+0Eh]
		mov	di, [ebp+arg_4]
		cmp	[ebx], di
		jz	short loc_7F8118B4
		movsx	edi, [ebp+arg_8]
		imul	edi, 18h
		lea	ebx, [edi+ecx+0Ch]

loc_7F8118B4:				; CODE XREF: sub_7F81181C+77j
					; sub_7F81181C+8Bj
		mov	di, [eax]
		cmp	[ebp+var_4], 0
		mov	[ebx], di
		jnz	short loc_7F8118D7
		mov	di, [esi+6]
		mov	[eax], di
		mov	ax, [edx+4]
		mov	[esi+4], ax
		mov	bx, [edx+6]
		mov	[esi+6], bx

loc_7F8118D7:				; CODE XREF: sub_7F81181C+A2j
		lea	esi, [ecx+2]
		mov	ax, [esi]
		test	ax, ax
		jl	short loc_7F8118F1
		movsx	eax, ax
		imul	eax, 18h
		mov	di, [ebp+arg_4]
		mov	[eax+ecx+0Ch], di

loc_7F8118F1:				; CODE XREF: sub_7F81181C+C4j
		mov	eax, 0FFFFFFFFh
		mov	[edx+4], ax
		mov	di, [esi]
		mov	[edx+6], di
		pop	edi
		mov	[edx], eax
		mov	dx, [ebp+arg_4]
		mov	[esi], dx
		pop	esi
		inc	word ptr [ecx+4]
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F81181C	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F811917	proc near		; CODE XREF: sub_7F825FA8+70p

arg_0		= dword	ptr  4
arg_4		= word ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		mov	eax, [esi]
		mov	ecx, [eax]
		mov	edi, [ecx+258h]
		mov	eax, [edi]
		mov	bx, [eax+6]
		movsx	ecx, bx
		imul	ecx, 18h
		lea	ecx, [ecx+eax+8]
		mov	ax, bx
		dec	bx
		test	ax, ax
		jle	short loc_7F811976

loc_7F811942:				; CODE XREF: sub_7F811917+5Dj
		sub	ecx, 18h
		mov	edx, [ecx]
		cmp	edx, 0FFFFFFFFh
		jz	short loc_7F81196C
		movzx	eax, [esp+0Ch+arg_4]
		mov	eax, [ecx+eax*4+8]
		test	eax, eax
		jz	short loc_7F81196C
		push	eax
		push	edx
		push	esi
		call	[esp+18h+arg_8]
		movsx	eax, bx
		mov	ecx, [edi]
		imul	eax, 18h
		lea	ecx, [eax+ecx+8]

loc_7F81196C:				; CODE XREF: sub_7F811917+33j
					; sub_7F811917+40j
		mov	ax, bx
		dec	bx
		test	ax, ax
		jg	short loc_7F811942

loc_7F811976:				; CODE XREF: sub_7F811917+29j
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_7F811917	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81197C	proc near		; CODE XREF: sub_7F802C9E+29p
					; sub_7F802C9E+B7p ...

var_2		= word ptr -2
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

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		mov	ecx, [ebp+arg_C]
		mov	bx, [ebp+arg_8]
		push	esi
		mov	si, 1001h
		push	edi
		mov	di, si
		mov	[ecx], eax
		and	bx, 0Fh
		test	bl, 3
		jz	short loc_7F8119A7
		mov	si, 3001h
		mov	di, si

loc_7F8119A7:				; CODE XREF: sub_7F81197C+22j
		test	bl, 2
		jnz	short loc_7F8119E8
		push	0
		lea	eax, [ebp+var_2]
		push	eax
		mov	ecx, [ebp+arg_4]
		push	0
		push	0
		push	dword ptr [ecx]
		push	[ebp+arg_0]
		call	sub_7F82D114
		test	eax, eax
		jnz	short loc_7F811A46
		mov	cx, [ebp+var_2]
		and	cx, di
		and	di, si
		cmp	cx, di
		jz	short loc_7F8119DD
		mov	eax, 1015h
		jmp	short loc_7F811A46
; ---------------------------------------------------------------------------

loc_7F8119DD:				; CODE XREF: sub_7F81197C+58j
		test	byte ptr [ebp+var_2], 4
		jz	short loc_7F811A2C
		or	bh, 1
		jmp	short loc_7F811A2C
; ---------------------------------------------------------------------------

loc_7F8119E8:				; CODE XREF: sub_7F81197C+2Ej
		mov	ecx, [ebp+arg_4]
		mov	cl, [ecx]
		test	cl, cl
		jge	short loc_7F811A28
		cmp	cl, 91h
		jb	short loc_7F8119FB
		xor	cx, cx
		jmp	short loc_7F811A06
; ---------------------------------------------------------------------------

loc_7F8119FB:				; CODE XREF: sub_7F81197C+78j
		movzx	ecx, cl
		mov	cx, word_7F8358D0[ecx*2]

loc_7F811A06:				; CODE XREF: sub_7F81197C+7Dj
		mov	dx, di
		and	dx, cx
		and	di, si
		cmp	dx, di
		jz	short loc_7F811A1B
		mov	eax, 1015h
		jmp	short loc_7F811A1E
; ---------------------------------------------------------------------------

loc_7F811A1B:				; CODE XREF: sub_7F81197C+96j
		mov	si, cx

loc_7F811A1E:				; CODE XREF: sub_7F81197C+9Dj
		test	cl, 4
		jz	short loc_7F811A2C
		or	bh, 1
		jmp	short loc_7F811A2C
; ---------------------------------------------------------------------------

loc_7F811A28:				; CODE XREF: sub_7F81197C+73j
		mov	si, 0F001h

loc_7F811A2C:				; CODE XREF: sub_7F81197C+65j
					; sub_7F81197C+6Aj ...
		test	eax, eax
		jnz	short loc_7F811A46
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	esi
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F811A4F

loc_7F811A46:				; CODE XREF: sub_7F81197C+49j
					; sub_7F81197C+5Fj ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F81197C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F811A4F	proc near		; CODE XREF: sub_7F8111EE+21p
					; sub_7F81197C+C5p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		push	10h
		push	26h
		call	sub_7F82F18D
		mov	edi, eax
		test	edi, edi
		jz	loc_7F811B2C
		mov	ebx, [edi]
		lea	eax, [ebx+4]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F811B35
		test	byte ptr [ebp+arg_8], 2
		jz	short loc_7F811AB0
		or	byte ptr [ebp+arg_8], 1
		test	byte ptr [ebp+arg_8], 2
		jz	short loc_7F811AB0
		mov	eax, [ebp+arg_4]
		push	[ebp+arg_C]
		push	dword ptr [eax]
		push	[ebp+arg_0]
		call	sub_7F82CF24
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F811B35

loc_7F811AB0:				; CODE XREF: sub_7F811A4F+3Bj
					; sub_7F811A4F+45j
		push	dword ptr [ebx+4]
		call	sub_7F8198FC
		mov	[ebx+20h], ax
		mov	ecx, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		push	0
		mov	[ebx], eax
		mov	edx, [ecx]
		mov	[ebx+8], edx
		push	dword ptr [ebx+4]
		call	sub_7F819508
		mov	ecx, [ebp+arg_14]
		mov	edx, [ebp+arg_18]
		push	edi
		mov	[ebx+22h], eax
		mov	ax, word ptr [ebp+arg_8]
		push	offset sub_7F811EEF
		and	ax, 0F7FFh
		push	40000h
		push	80h
		mov	[ebx+16h], ecx
		mov	[ebx+1Ah], edx
		push	[ebp+arg_0]
		mov	[ebx+14h], ax
		call	sub_7F829F2E
		mov	[ebx+0Ch], eax
		test	eax, eax
		jz	short loc_7F811B2C
		push	edi
		mov	eax, [ebp+arg_4]
		push	offset sub_7F811EEF
		push	4002C0E0h
		push	dword ptr [eax]
		push	[ebp+arg_0]
		call	sub_7F829F2E
		mov	[ebx+10h], eax
		test	eax, eax
		jnz	short loc_7F811B31

loc_7F811B2C:				; CODE XREF: sub_7F811A4F+13j
					; sub_7F811A4F+BCj
		mov	esi, 400h

loc_7F811B31:				; CODE XREF: sub_7F811A4F+DBj
		test	esi, esi
		jz	short loc_7F811B66

loc_7F811B35:				; CODE XREF: sub_7F811A4F+31j
					; sub_7F811A4F+5Bj
		test	edi, edi
		jz	short loc_7F811B66
		mov	ebx, [edi]
		lea	eax, [ebx+4]
		cmp	dword ptr [eax], 0
		jz	short loc_7F811B4B
		push	0
		push	eax
		call	sub_7F81813C

loc_7F811B4B:				; CODE XREF: sub_7F811A4F+F2j
		mov	eax, [ebx+0Ch]
		test	eax, eax
		jz	short loc_7F811B60
		push	eax
		push	80h
		push	[ebp+arg_0]
		call	sub_7F829FD2

loc_7F811B60:				; CODE XREF: sub_7F811A4F+101j
		push	edi
		call	sub_7F82F1E1

loc_7F811B66:				; CODE XREF: sub_7F811A4F+E4j
					; sub_7F811A4F+E8j
		xor	ecx, ecx
		mov	eax, [ebp+arg_10]
		test	esi, esi
		jz	short loc_7F811B73
		mov	[eax], ecx
		jmp	short loc_7F811B75
; ---------------------------------------------------------------------------

loc_7F811B73:				; CODE XREF: sub_7F811A4F+11Ej
		mov	[eax], edi

loc_7F811B75:				; CODE XREF: sub_7F811A4F+122j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	1Ch
sub_7F811A4F	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F811B7E	proc near		; CODE XREF: sub_7F802C9E+DEp
					; sub_7F802C9E+109p ...

var_10		= byte ptr -10h
arg_0		= dword	ptr  4

		inc	word_7F838070
		sub	esp, 10h
		push	ebx
		push	esi
		mov	esi, [esp+18h+arg_0]
		push	edi
		push	ebp
		mov	eax, [esi]
		mov	ebx, [eax]
		xor	eax, eax
		lea	ebp, [ebx+14h]
		lea	ecx, [ebx+4]
		mov	ax, [ebp+0]
		and	eax, 800h
		push	eax
		push	ecx
		call	sub_7F81813C
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F811C14
		mov	eax, [ebx+10h]
		test	eax, eax
		jz	short loc_7F811BC4
		push	eax
		push	dword ptr [ebx+8]
		push	dword ptr [ebx]
		call	sub_7F829FD2

loc_7F811BC4:				; CODE XREF: sub_7F811B7E+39j
		push	dword ptr [ebx+0Ch]
		push	80h
		push	dword ptr [ebx]
		call	sub_7F829FD2
		test	byte ptr [ebp+1], 8
		jz	short loc_7F811BE0
		push	dword ptr [ebx]
		call	sub_7F82A1E7

loc_7F811BE0:				; CODE XREF: sub_7F811B7E+59j
		test	edi, edi
		jnz	short loc_7F811C14
		mov	edx, [ebx+8]
		mov	ecx, [ebx]
		test	byte ptr [ebp+1], 8
		jz	short loc_7F811C07
		cmp	word_7F838070, 1
		jnz	short loc_7F811C07
		lea	eax, [esp+20h+var_10]
		push	eax
		push	40h
		push	edx
		push	ecx
		call	sub_7F82A016

loc_7F811C07:				; CODE XREF: sub_7F811B7E+6Fj
					; sub_7F811B7E+79j
		push	dword ptr [esi]
		call	sub_7F82F1E1
		mov	dword ptr [esi], 0

loc_7F811C14:				; CODE XREF: sub_7F811B7E+32j
					; sub_7F811B7E+64j
		dec	word_7F838070
		mov	eax, edi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 10h
		retn	4
sub_7F811B7E	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F811C27	proc near		; CODE XREF: sub_7F80DC30+47p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	eax, 0
		mov	esi, [esp+4+arg_0]
		push	edi
		cmp	[esp+8+arg_8], 0
		mov	ecx, [esi]
		jnz	short loc_7F811C3F
		movsx	eax, word ptr [ecx+1Eh]

loc_7F811C3F:				; CODE XREF: sub_7F811C27+12j
		mov	edi, [esp+8+arg_4]
		push	eax
		push	edi
		push	dword ptr [ecx+4]
		call	sub_7F8194ED
		test	ax, ax
		mov	ecx, [esi]
		jl	short loc_7F811C5E
		test	ax, ax
		mov	[ecx+22h], edi
		mov	[ecx+1Eh], ax

loc_7F811C5E:				; CODE XREF: sub_7F811C27+2Bj
		mov	eax, 0
		jge	short loc_7F811C6A
		mov	eax, 1004h

loc_7F811C6A:				; CODE XREF: sub_7F811C27+3Cj
		pop	edi
		pop	esi
		retn	0Ch
sub_7F811C27	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F811C6F	proc near		; CODE XREF: sub_7F802C9E+46p
					; sub_7F802C9E+C8p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_0]
		mov	edx, [eax]
		mov	eax, [esp+arg_4]
		test	eax, eax
		jz	short loc_7F811C84
		mov	cx, [edx+1Eh]
		mov	[eax], cx

loc_7F811C84:				; CODE XREF: sub_7F811C6F+Cj
		mov	eax, [esp+arg_8]
		test	eax, eax
		jz	short locret_7F811C93
		mov	cx, [edx+20h]
		mov	[eax], cx

locret_7F811C93:			; CODE XREF: sub_7F811C6F+1Bj
		retn	0Ch
sub_7F811C6F	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F811C96	proc near		; CODE XREF: sub_7F802C9E+69p
					; sub_7F802DB7+1F2p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		xor	esi, esi
		mov	edi, [esp+8+arg_0]
		mov	ecx, [edi]
		mov	ax, [ecx+1Eh]
		cmp	[ecx+20h], ax
		jg	short loc_7F811CB5
		mov	esi, 1005h
		mov	ecx, [esp+8+arg_4]
		jmp	short loc_7F811CC7
; ---------------------------------------------------------------------------

loc_7F811CB5:				; CODE XREF: sub_7F811C96+12j
		push	eax
		push	dword ptr [ecx+4]
		call	sub_7F81990D
		add	eax, 8
		mov	ecx, [esp+8+arg_4]
		mov	[ecx], eax

loc_7F811CC7:				; CODE XREF: sub_7F811C96+1Dj
		mov	eax, [edi]
		cmp	byte ptr [eax+8], 89h
		jnz	short loc_7F811CD2
		sub	dword ptr [ecx], 4

loc_7F811CD2:				; CODE XREF: sub_7F811C96+37j
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
sub_7F811C96	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F811CD9	proc near		; CODE XREF: sub_7F802C9E+98p
					; sub_7F802DB7+22Dp ...

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
		xor	edx, edx
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		mov	ecx, [ebp+arg_8]
		push	esi
		mov	[ebp+var_C], edx
		push	edi
		mov	eax, [ecx]
		cmp	eax, 8
		jb	loc_7F811E90
		cmp	eax, 0FFFFh
		ja	loc_7F811E90
		sub	eax, 8
		mov	[ecx], edx
		mov	edx, [ebp+arg_0]
		mov	[ebp+var_8], eax
		mov	[ebp+var_10], eax
		mov	esi, [edx]
		mov	ax, [esi+1Eh]
		cmp	[esi+20h], ax
		jg	short loc_7F811D24
		mov	eax, 1005h
		jmp	loc_7F811E9E
; ---------------------------------------------------------------------------

loc_7F811D24:				; CODE XREF: sub_7F811CD9+3Fj
		mov	eax, [esi+22h]
		mov	edi, [ebp+arg_4]
		mov	[edi], eax
		cmp	byte ptr [esi+8], 89h
		jnz	short loc_7F811D4B
		mov	[ebp+var_C], 4
		mov	ax, [esi+1Eh]
		push	eax
		push	dword ptr [esi+4]
		call	sub_7F81990D
		sub	eax, 4
		jmp	short loc_7F811D58
; ---------------------------------------------------------------------------

loc_7F811D4B:				; CODE XREF: sub_7F811CD9+57j
		mov	cx, [esi+1Eh]
		push	ecx
		push	dword ptr [esi+4]
		call	sub_7F81990D

loc_7F811D58:				; CODE XREF: sub_7F811CD9+70j
		lea	ebx, [edi+8]
		mov	[edi+4], eax
		lea	eax, [ebp+var_8]
		push	eax
		push	ebx
		push	[ebp+var_C]
		mov	ax, [esi+1Eh]
		push	eax
		push	dword ptr [esi+4]
		call	sub_7F818D47
		mov	[ebp+var_4], eax
		test	eax, eax
		jz	short loc_7F811D85
		cmp	eax, 1014h
		jnz	loc_7F811E80

loc_7F811D85:				; CODE XREF: sub_7F811CD9+9Fj
		mov	eax, [ebp+arg_0]
		mov	esi, [eax]
		test	byte ptr [esi+15h], 1
		jz	loc_7F811E6A
		cmp	[ebp+var_8], 0Eh
		jb	loc_7F811E6A
		push	0Eh
		push	ebx
		push	ebx
		call	sub_7F82FF60
		mov	ax, [ebx]
		add	esp, 0Ch
		cmp	ax, 76Ch
		jl	short loc_7F811DF5
		cmp	ax, 81Fh
		jge	short loc_7F811DF5
		mov	ax, [edi+0Ah]
		test	ax, ax
		jle	short loc_7F811DF5
		cmp	ax, 0Ch
		jg	short loc_7F811DF5
		mov	ax, [edi+0Ch]
		test	ax, ax
		jle	short loc_7F811DF5
		cmp	ax, 1Fh
		jg	short loc_7F811DF5
		mov	ax, [edi+0Eh]
		test	ax, ax
		jl	short loc_7F811DF5
		cmp	ax, 18h
		jge	short loc_7F811DF5
		mov	ax, [edi+10h]
		test	ax, ax
		jl	short loc_7F811DF5
		cmp	ax, 3Ch
		jl	short loc_7F811E6A

loc_7F811DF5:				; CODE XREF: sub_7F811CD9+D8j
					; sub_7F811CD9+DEj ...
		xor	edi, edi
		cmp	dword_7F836778,	edi
		jz	short loc_7F811E6A
		cmp	dword_7F836C60,	edi
		jnz	short loc_7F811E6A
		push	9015h
		push	9005h
		push	dword ptr [esi+8]
		push	dword ptr [esi]
		call	sub_7F82CFC5
		test	eax, eax
		jnz	short loc_7F811E30
		push	dword ptr [esi+8]
		push	dword ptr [esi]
		call	sub_7F81D598
		mov	[ebp+var_4], eax
		cmp	eax, edi
		jnz	short loc_7F811E80

loc_7F811E30:				; CODE XREF: sub_7F811CD9+144j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_10]
		mov	[ebp+var_8], ecx
		mov	esi, [eax]
		lea	ecx, [ebp+var_8]
		push	ecx
		push	ebx
		push	[ebp+var_C]
		mov	cx, [esi+1Eh]
		push	ecx
		push	dword ptr [esi+4]
		call	sub_7F818D47
		mov	[ebp+var_4], eax
		test	eax, eax
		jz	short loc_7F811E5E
		cmp	eax, 1014h
		jnz	short loc_7F811E80

loc_7F811E5E:				; CODE XREF: sub_7F811CD9+17Cj
		push	0Eh
		push	ebx
		push	ebx
		call	sub_7F82FF60
		add	esp, 0Ch

loc_7F811E6A:				; CODE XREF: sub_7F811CD9+B5j
					; sub_7F811CD9+BFj ...
		mov	ax, [esi+1Eh]
		inc	ax
		mov	[esi+1Eh], ax
		push	eax
		push	dword ptr [esi+4]
		call	sub_7F819508
		mov	[esi+22h], eax

loc_7F811E80:				; CODE XREF: sub_7F811CD9+A6j
					; sub_7F811CD9+155j ...
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_8]
		add	eax, 8
		mov	[ecx], eax
		mov	eax, [ebp+var_4]
		jmp	short loc_7F811E9E
; ---------------------------------------------------------------------------

loc_7F811E90:				; CODE XREF: sub_7F811CD9+16j
					; sub_7F811CD9+21j
		mov	ecx, [ebp+arg_8]
		mov	eax, 400h
		mov	dword ptr [ecx], 0

loc_7F811E9E:				; CODE XREF: sub_7F811CD9+46j
					; sub_7F811CD9+1B5j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F811CD9	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F811EA7	proc near		; CODE XREF: sub_7F80B766+6Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	edi, [eax]
		mov	eax, [esp+10h+arg_4]
		mov	ebp, [esp+10h+arg_8]
		lea	esi, [edi+1Eh]
		push	eax
		mov	ax, [esi]
		push	ebp
		push	eax
		push	dword ptr [edi+4]
		call	sub_7F819938
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F811EE6
		mov	ax, [ebp+0]
		add	ax, [esi]
		mov	[esi], ax
		push	eax
		push	dword ptr [edi+4]
		call	sub_7F819508
		mov	[edi+22h], eax

loc_7F811EE6:				; CODE XREF: sub_7F811EA7+27j
		mov	eax, ebx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_7F811EA7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F811EEF	proc near		; DATA XREF: sub_7F811A4F+92o
					; sub_7F811A4F+C2o

var_10		= dword	ptr -10h
var_C		= word 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	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		mov	esi, [eax]
		mov	[ebp+var_8], 0
		mov	edi, [esi+16h]
		mov	eax, [esi+1Ah]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	loc_7F811F9C
		cmp	eax, 40h
		jz	loc_7F811FAB
		cmp	eax, 4000h
		jz	loc_7F81200E
		cmp	eax, 8000h
		jz	loc_7F81207F
		cmp	eax, 20000h
		jz	loc_7F8120EA
		cmp	eax, 40000h
		jz	loc_7F81210A
		cmp	eax, 40000000h
		jz	loc_7F81211F

loc_7F811F59:				; CODE XREF: sub_7F811EEF+BAj
					; sub_7F811EEF+E0j ...
		test	edi, edi
		jz	short loc_7F811F71
		cmp	[ebp+arg_4], 0
		jz	short loc_7F811F71
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+var_10]
		call	edi
		mov	[ebp+var_8], eax

loc_7F811F71:				; CODE XREF: sub_7F811EEF+6Cj
					; sub_7F811EEF+72j
		cmp	[ebp+arg_4], 40000h
		jnz	short loc_7F811F90
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_7F811B7E
		mov	[ebp+var_8], 0

loc_7F811F90:				; CODE XREF: sub_7F811EEF+89j
		mov	eax, [ebp+var_8]

loc_7F811F93:				; CODE XREF: sub_7F811EEF+22Bj
					; sub_7F811EEF+28Aj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------

loc_7F811F9C:				; CODE XREF: sub_7F811EEF+24j
		push	dword ptr [esi+10h]
		call	sub_7F8240DB
		xor	edi, edi
		mov	[esi+10h], edi
		jmp	short loc_7F811F59
; ---------------------------------------------------------------------------

loc_7F811FAB:				; CODE XREF: sub_7F811EEF+2Dj
		push	dword ptr [esi+4]
		mov	bx, [esi+1Eh]
		call	sub_7F8198FC
		mov	[esi+20h], ax
		push	0
		push	dword ptr [esi+22h]
		push	dword ptr [esi+4]
		call	sub_7F8194ED
		mov	[esi+1Eh], ax
		test	ax, ax
		jge	short loc_7F811F59
		mov	[esi+1Eh], bx
		mov	ax, [esi+20h]
		cmp	bx, ax
		jl	short loc_7F811FEE
		mov	[esi+1Eh], ax
		mov	dword ptr [esi+22h], 0FFFFFFFFh
		jmp	loc_7F811F59
; ---------------------------------------------------------------------------

loc_7F811FEE:				; CODE XREF: sub_7F811EEF+EDj
		test	bx, bx
		jge	short loc_7F811FF9
		mov	word ptr [esi+1Eh], 0

loc_7F811FF9:				; CODE XREF: sub_7F811EEF+102j
		mov	ax, [esi+1Eh]
		push	eax
		push	dword ptr [esi+4]
		call	sub_7F819508
		mov	[esi+22h], eax
		jmp	loc_7F811F59
; ---------------------------------------------------------------------------

loc_7F81200E:				; CODE XREF: sub_7F811EEF+38j
		mov	edx, [ebp+arg_8]
		mov	cx, [edx+4]
		mov	edx, [edx+6]

loc_7F812018:				; CODE XREF: sub_7F811EEF+164j
		movzx	eax, word ptr [edx]
		cmp	eax, 1
		jz	short loc_7F812027
		cmp	eax, 3
		jz	short loc_7F812035
		jmp	short loc_7F812045
; ---------------------------------------------------------------------------

loc_7F812027:				; CODE XREF: sub_7F811EEF+12Fj
		mov	ax, [esi+1Eh]
		cmp	[edx+2], ax
		jg	short loc_7F812045
		inc	ax
		jmp	short loc_7F812041
; ---------------------------------------------------------------------------

loc_7F812035:				; CODE XREF: sub_7F811EEF+134j
		mov	ax, [esi+1Eh]
		cmp	[edx+2], ax
		jge	short loc_7F812045
		dec	ax

loc_7F812041:				; CODE XREF: sub_7F811EEF+144j
		mov	[esi+1Eh], ax

loc_7F812045:				; CODE XREF: sub_7F811EEF+136j
					; sub_7F811EEF+140j ...
		dec	cx
		test	cx, cx
		jle	short loc_7F812055
		mov	eax, edx
		add	edx, 8
		test	eax, eax
		jnz	short loc_7F812018

loc_7F812055:				; CODE XREF: sub_7F811EEF+15Bj
		push	dword ptr [esi+4]
		call	sub_7F8198FC
		mov	[esi+20h], ax
		mov	ax, [esi+1Eh]
		push	eax
		push	dword ptr [esi+4]
		call	sub_7F819508
		cmp	[esi+22h], eax
		jz	loc_7F811F59
		mov	[esi+22h], eax
		jmp	loc_7F811F59
; ---------------------------------------------------------------------------

loc_7F81207F:				; CODE XREF: sub_7F811EEF+43j
		mov	ecx, 1
		mov	edx, [ebp+arg_8]
		mov	ax, [edx+6]
		add	esi, 1Eh
		mov	bx, [edx+4]
		mov	[ebp+var_C], ax
		sub	ax, bx
		add	ax, cx
		mov	word ptr [ebp+var_4+2],	ax
		mov	ax, [esi]
		cmp	bx, ax
		jg	short loc_7F8120C6
		cmp	[ebp+var_C], ax
		jl	short loc_7F8120BF
		mov	dx, [edx+8]
		xor	ecx, ecx
		sub	dx, bx
		add	dx, ax
		mov	[esi], dx
		jmp	short loc_7F8120C6
; ---------------------------------------------------------------------------

loc_7F8120BF:				; CODE XREF: sub_7F811EEF+1BDj
		sub	ax, word ptr [ebp+var_4+2]
		mov	[esi], ax

loc_7F8120C6:				; CODE XREF: sub_7F811EEF+1B7j
					; sub_7F811EEF+1CEj
		test	ecx, ecx
		jz	loc_7F811F59
		mov	ax, [esi]
		mov	edx, [ebp+arg_8]
		cmp	[edx+8], ax
		jg	loc_7F811F59
		add	ax, word ptr [ebp+var_4+2]
		mov	[esi], ax
		jmp	loc_7F811F59
; ---------------------------------------------------------------------------

loc_7F8120EA:				; CODE XREF: sub_7F811EEF+4Ej
		mov	eax, [esi+22h]
		cmp	eax, 0FFFFFFFFh
		jz	loc_7F811F59
		push	0
		push	eax
		push	dword ptr [esi+4]
		call	sub_7F8194ED
		mov	[esi+1Eh], ax
		jmp	loc_7F811F59
; ---------------------------------------------------------------------------

loc_7F81210A:				; CODE XREF: sub_7F811EEF+59j
		mov	eax, [esi]
		mov	edx, [ebp+arg_8]
		cmp	[edx+4], eax
		jz	loc_7F811F59
		xor	eax, eax
		jmp	loc_7F811F93
; ---------------------------------------------------------------------------

loc_7F81211F:				; CODE XREF: sub_7F811EEF+64j
		lea	edi, [esi+1Eh]
		push	dword ptr [esi+4]
		mov	bx, [edi]
		call	sub_7F8198FC
		mov	[esi+20h], ax
		push	0
		push	dword ptr [esi+22h]
		push	dword ptr [esi+4]
		call	sub_7F8194ED
		mov	[edi], ax
		test	ax, ax
		jge	short loc_7F812177
		mov	[edi], bx
		mov	ax, [esi+20h]
		cmp	bx, ax
		jl	short loc_7F81215E
		mov	[edi], ax
		mov	dword ptr [esi+22h], 0FFFFFFFFh
		jmp	short loc_7F812177
; ---------------------------------------------------------------------------

loc_7F81215E:				; CODE XREF: sub_7F811EEF+261j
		test	bx, bx
		jge	short loc_7F812168
		mov	word ptr [edi],	0

loc_7F812168:				; CODE XREF: sub_7F811EEF+272j
		mov	ax, [edi]
		push	eax
		push	dword ptr [esi+4]
		call	sub_7F819508
		mov	[esi+22h], eax

loc_7F812177:				; CODE XREF: sub_7F811EEF+255j
					; sub_7F811EEF+26Dj
		xor	eax, eax
		jmp	loc_7F811F93
sub_7F811EEF	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81217E	proc near		; CODE XREF: sub_7F8207A6+302p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_9		= byte ptr  0Dh

		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	edi, [esp+0Ch+arg_0]
		push	ebp
		mov	esi, [edi]
		mov	ebp, [esi]
		cmp	[ebp+218h], ebx
		jnz	short loc_7F8121AD
		call	sub_7F823FB2
		mov	[ebp+218h], eax
		cmp	eax, ebx
		jnz	short loc_7F8121AD
		mov	ebx, 400h
		jmp	loc_7F8122CB
; ---------------------------------------------------------------------------

loc_7F8121AD:				; CODE XREF: sub_7F81217E+14j
					; sub_7F81217E+23j
		push	edi
		mov	eax, [esi]
		push	offset sub_7F812460
		push	99800000h
		push	dword ptr [eax+218h]
		call	sub_7F824021
		mov	[esi+18h], eax
		test	eax, eax
		jnz	short loc_7F8121D6
		mov	ebx, 400h
		jmp	loc_7F8122CB
; ---------------------------------------------------------------------------

loc_7F8121D6:				; CODE XREF: sub_7F81217E+4Cj
		cmp	[esp+10h+arg_4], 0
		jz	short loc_7F8121ED
		push	edi
		call	sub_7F825DC6
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F8122D3

loc_7F8121ED:				; CODE XREF: sub_7F81217E+5Dj
		test	[esp+10h+arg_9], 10h
		jz	loc_7F8122CB
		cmp	dword ptr [esi+24h], 0
		jnz	short loc_7F81222F
		cmp	dword_7F83676C,	0
		jz	short loc_7F81222F
		push	2
		mov	eax, dword_7F836770
		push	eax
		push	0FFFFFFFDh
		push	0
		push	edi
		push	offset sub_7F82A441
		call	sub_7F816044
		mov	[esi+24h], eax
		test	eax, eax
		jnz	short loc_7F81222F
		mov	ebx, 400h
		jmp	loc_7F8122CB
; ---------------------------------------------------------------------------

loc_7F81222F:				; CODE XREF: sub_7F81217E+7Ej
					; sub_7F81217E+87j ...
		cmp	dword ptr [esi+28h], 0
		jnz	short loc_7F812256
		push	2
		push	64h
		push	0FFFFFFFEh
		push	0
		push	edi
		push	offset sub_7F82A802
		call	sub_7F816044
		mov	[esi+28h], eax
		test	eax, eax
		jnz	short loc_7F812256
		mov	ebx, 400h
		jmp	short loc_7F8122CB
; ---------------------------------------------------------------------------

loc_7F812256:				; CODE XREF: sub_7F81217E+B5j
					; sub_7F81217E+CFj
		cmp	dword ptr [esi+20h], 0
		jnz	short loc_7F812281
		push	2
		mov	eax, dword_7F838030
		push	eax
		push	0FFFFFFFBh
		push	0
		push	edi
		push	offset sub_7F826027
		call	sub_7F816044
		mov	[esi+20h], eax
		test	eax, eax
		jnz	short loc_7F812281
		mov	ebx, 400h
		jmp	short loc_7F8122CB
; ---------------------------------------------------------------------------

loc_7F812281:				; CODE XREF: sub_7F81217E+DCj
					; sub_7F81217E+FAj
		lea	ecx, [ebp+264h]
		mov	ax, [ecx]
		or	ah, 80h
		test	ah, 10h
		mov	[ecx], ax
		jnz	short loc_7F8122BE
		cmp	dword ptr [esi+1Ch], 0
		jnz	short loc_7F8122BE
		push	2
		push	64h
		push	0FFFFFFFAh
		push	0
		push	edi
		push	offset sub_7F81F20F
		call	sub_7F816044
		mov	[esi+1Ch], eax
		cmp	dword ptr [esi+1Ch], 0
		jnz	short loc_7F8122BE
		mov	ebx, 400h
		jmp	short loc_7F8122CB
; ---------------------------------------------------------------------------

loc_7F8122BE:				; CODE XREF: sub_7F81217E+115j
					; sub_7F81217E+11Bj ...
		push	0BF900000h
		push	dword ptr [esi+18h]
		call	sub_7F8241B0

loc_7F8122CB:				; CODE XREF: sub_7F81217E+2Aj
					; sub_7F81217E+53j ...
		test	ebx, ebx
		jz	loc_7F812360

loc_7F8122D3:				; CODE XREF: sub_7F81217E+69j
		mov	eax, [esi+1Ch]
		test	eax, eax
		jz	short loc_7F8122F2
		push	eax
		call	sub_7F816255
		mov	dword ptr [esi+1Ch], 0
		mov	eax, [esi]
		and	word ptr [eax+264h], 7FFFh

loc_7F8122F2:				; CODE XREF: sub_7F81217E+15Aj
		mov	eax, [esi+24h]
		test	eax, eax
		jz	short loc_7F812306
		push	eax
		call	sub_7F816255
		mov	dword ptr [esi+24h], 0

loc_7F812306:				; CODE XREF: sub_7F81217E+179j
		mov	eax, [esi+28h]
		test	eax, eax
		jz	short loc_7F81231A
		push	eax
		call	sub_7F816255
		mov	dword ptr [esi+28h], 0

loc_7F81231A:				; CODE XREF: sub_7F81217E+18Dj
		mov	eax, [esi+20h]
		test	eax, eax
		jz	short loc_7F81232E
		push	eax
		call	sub_7F816255
		mov	dword ptr [esi+20h], 0

loc_7F81232E:				; CODE XREF: sub_7F81217E+1A1j
		push	edi
		call	sub_7F825FA8
		mov	eax, [esi+18h]
		test	eax, eax
		jz	short loc_7F812341
		push	eax
		call	sub_7F8240DB

loc_7F812341:				; CODE XREF: sub_7F81217E+1BBj
		xor	edi, edi
		cmp	[ebp+218h], edi
		jz	short loc_7F812360
		mov	eax, [esi]
		push	dword ptr [eax+218h]
		call	sub_7F823FB7
		mov	ecx, [esi]
		mov	[ecx+218h], edi

loc_7F812360:				; CODE XREF: sub_7F81217E+14Fj
					; sub_7F81217E+1CBj
		mov	eax, ebx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_7F81217E	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F812369	proc near		; CODE XREF: sub_7F820C0E+3Ep

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		xor	ebx, ebx
		mov	edi, [esi]
		mov	eax, [edi+18h]
		test	eax, eax
		jz	short loc_7F812384
		push	eax
		call	sub_7F8240DB
		mov	[edi+18h], ebx

loc_7F812384:				; CODE XREF: sub_7F812369+10j
		mov	eax, [edi+1Ch]
		xor	ebx, ebx
		test	eax, eax
		jz	short loc_7F812396
		push	eax
		call	sub_7F816255
		mov	[edi+1Ch], ebx

loc_7F812396:				; CODE XREF: sub_7F812369+22j
		mov	eax, [edi+24h]
		xor	ebx, ebx
		test	eax, eax
		jz	short loc_7F8123A8
		push	eax
		call	sub_7F816255
		mov	[edi+24h], ebx

loc_7F8123A8:				; CODE XREF: sub_7F812369+34j
		mov	eax, [edi+28h]
		xor	ebx, ebx
		test	eax, eax
		jz	short loc_7F8123BA
		push	eax
		call	sub_7F816255
		mov	[edi+28h], ebx

loc_7F8123BA:				; CODE XREF: sub_7F812369+46j
		mov	eax, [edi+20h]
		xor	ebx, ebx
		test	eax, eax
		jz	short loc_7F8123F0
		push	eax
		call	sub_7F816255
		mov	[edi+20h], ebx
		mov	eax, [edi]
		and	word ptr [eax+264h], 7FFFh
		cmp	dword_7F838038,	ebx
		jz	short loc_7F8123F0
		push	ebx
		push	offset dword_7F838038
		call	sub_7F81813C
		mov	dword_7F838034,	ebx

loc_7F8123F0:				; CODE XREF: sub_7F812369+58j
					; sub_7F812369+74j
		mov	eax, [edi]
		cmp	word ptr [eax+210h], 1
		jg	short loc_7F812402
		push	esi
		call	sub_7F825FA8

loc_7F812402:				; CODE XREF: sub_7F812369+91j
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_7F812369	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F812408	proc near		; CODE XREF: sub_7F82A1E7+Ap
					; sub_7F82A588+15Ap

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		mov	ecx, [eax]
		mov	edi, [ecx]
		test	byte ptr [edi+265h], 10h
		jnz	short loc_7F81245B
		call	sub_7F8168ED
		mov	ecx, [edi+270h]
		mov	esi, [edi+200h]
		mov	eax, ecx
		sub	edx, edx
		imul	eax, 64h
		div	dword ptr [esi+4]
		cmp	ax, [edi+274h]
		jg	short loc_7F812447
		cmp	[edi+27Ch], ecx
		jnb	short loc_7F81245B

loc_7F812447:				; CODE XREF: sub_7F812408+35j
		push	0
		push	0
		push	100000h
		push	dword ptr [edi+218h]
		call	sub_7F824187

loc_7F81245B:				; CODE XREF: sub_7F812408+11j
					; sub_7F812408+3Dj
		pop	edi
		pop	esi
		retn	4
sub_7F812408	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F812460(int, int, LPCSTR lpString2)
sub_7F812460	proc near		; DATA XREF: sub_7F81217E+32o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
lpString2	= dword	ptr  10h

		push	ebp
		mov	eax, [esp+arg_4]
		mov	ebp, esp
		cmp	eax, 800000h
		push	esi
		push	edi
		ja	short loc_7F812481
		jz	short loc_7F8124CA
		cmp	eax, 100000h
		jz	short loc_7F8124C0

loc_7F812479:				; CODE XREF: sub_7F812460+5Ej
					; sub_7F812460+90j ...
		xor	eax, eax

loc_7F81247B:				; CODE XREF: sub_7F812460+68j
					; sub_7F812460+83j ...
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------

loc_7F812481:				; CODE XREF: sub_7F812460+Ej
		cmp	eax, 1000000h
		jz	short loc_7F8124E5
		cmp	eax, 2000000h
		jz	short loc_7F8124F2
		cmp	eax, 4000000h
		jz	short loc_7F812506
		cmp	eax, 8000000h
		jz	short loc_7F812513
		cmp	eax, 10000000h
		jz	loc_7F812559
		cmp	eax, 20000000h
		jz	loc_7F8125D8
		cmp	eax, 80000000h
		jz	loc_7F812620
		jmp	short loc_7F812479
; ---------------------------------------------------------------------------

loc_7F8124C0:				; CODE XREF: sub_7F812460+17j
		push	[ebp+arg_0]
		call	sub_7F812632
		jmp	short loc_7F81247B
; ---------------------------------------------------------------------------

loc_7F8124CA:				; CODE XREF: sub_7F812460+10j
		push	[ebp+lpString2]	; lpString
		push	[ebp+arg_0]	; int
		call	sub_7F82A0AA
		cmp	eax, 1
		mov	eax, 0
		adc	eax, 0FFFFFFFFh
		and	eax, 2
		jmp	short loc_7F81247B
; ---------------------------------------------------------------------------

loc_7F8124E5:				; CODE XREF: sub_7F812460+26j
		push	[ebp+lpString2]	; lpString2
		push	[ebp+arg_0]	; int
		call	sub_7F82A12F
		jmp	short loc_7F812479
; ---------------------------------------------------------------------------

loc_7F8124F2:				; CODE XREF: sub_7F812460+2Dj
		mov	eax, [ebp+lpString2]
		movsx	ecx, word ptr [eax]
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F8260F1
		jmp	loc_7F812479
; ---------------------------------------------------------------------------

loc_7F812506:				; CODE XREF: sub_7F812460+34j
		push	[ebp+arg_0]
		call	sub_7F82613E
		jmp	loc_7F812479
; ---------------------------------------------------------------------------

loc_7F812513:				; CODE XREF: sub_7F812460+3Bj
		mov	eax, [ebp+arg_0]
		xor	edi, edi
		push	edi
		mov	esi, [eax]
		push	dword ptr [esi]
		push	esi
		call	sub_7F821055
		push	dword ptr [esi+4]
		call	sub_7F815991
		mov	[esi+4], edi
		mov	dword_7F838080,	edi
		mov	cx, [esi+10h]
		test	cx, cx
		jl	short loc_7F81254E
		mov	eax, [esi]
		mov	edx, 1
		shl	edx, cl
		not	edx
		and	[eax+25Ch], edx

loc_7F81254E:				; CODE XREF: sub_7F812460+DBj
		mov	word ptr [esi+10h], 0FFFFh
		jmp	loc_7F812479
; ---------------------------------------------------------------------------

loc_7F812559:				; CODE XREF: sub_7F812460+42j
		cmp	dword_7F838078,	0
		mov	eax, 253h
		jnz	short loc_7F812597
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	edx, [ebp+arg_0]
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edx
		xor	eax, eax

loc_7F812597:				; CODE XREF: sub_7F812460+105j
		test	eax, eax
		jnz	short loc_7F8125CE
		call	sub_7F82A588
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F8125B6
		call	sub_7F82A34F
		jmp	short loc_7F8125C4
; ---------------------------------------------------------------------------

loc_7F8125B6:				; CODE XREF: sub_7F812460+14Dj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F8125C4:				; CODE XREF: sub_7F812460+154j
		mov	dword_7F838078,	0

loc_7F8125CE:				; CODE XREF: sub_7F812460+139j
		mov	eax, 2
		jmp	loc_7F81247B
; ---------------------------------------------------------------------------

loc_7F8125D8:				; CODE XREF: sub_7F812460+4Dj
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		mov	ecx, [eax+28h]
		test	ecx, ecx
		jz	loc_7F812479
		mov	edi, [eax]
		push	1
		push	ecx
		call	sub_7F8161D3
		lea	ecx, [edi+21Ch]
		mov	ax, [ecx]
		cmp	ax, 6
		jz	short loc_7F812616
		mov	[edi+23Ah], ax
		mov	word ptr [ecx],	6
		mov	word ptr [edi+23Ch], 0

loc_7F812616:				; CODE XREF: sub_7F812460+19Fj
		mov	eax, 2
		jmp	loc_7F81247B
; ---------------------------------------------------------------------------

loc_7F812620:				; CODE XREF: sub_7F812460+58j
		mov	eax, [ebp+lpString2]
		push	dword ptr [eax]
		push	[ebp+arg_0]
		call	sub_7F823F46
		jmp	loc_7F81247B
sub_7F812460	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F812632	proc near		; CODE XREF: sub_7F812460+63p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, [eax]
		mov	eax, [ecx+1Ch]
		test	eax, eax
		jz	short loc_7F81264E
		push	1
		push	eax
		call	sub_7F8161D3
		mov	eax, 2
		jmp	short locret_7F812650
; ---------------------------------------------------------------------------

loc_7F81264E:				; CODE XREF: sub_7F812632+Bj
		xor	eax, eax

locret_7F812650:			; CODE XREF: sub_7F812632+1Aj
		retn	4
sub_7F812632	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F812653(int, LONG lDistanceToMove,	DWORD nNumberOfBytesToRead)
sub_7F812653	proc near		; CODE XREF: sub_7F812D74+115p
					; sub_7F812D74+134p ...

NumberOfBytesWritten= dword ptr	-4
arg_0		= dword	ptr  8
lDistanceToMove	= dword	ptr  0Ch
nNumberOfBytesToRead= dword ptr	 10h

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		cmp	dword_7F836760,	0
		push	ebx
		push	esi
		push	edi
		jz	short loc_7F81266C
		mov	eax, dword_7F836760
		inc	byte ptr [eax]

loc_7F81266C:				; CODE XREF: sub_7F812653+10j
		cmp	dword_7F838080,	0
		jnz	short loc_7F812684
		call	sub_7F82A588
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81277F

loc_7F812684:				; CODE XREF: sub_7F812653+20j
		mov	edi, [ebp+nNumberOfBytesToRead]
		mov	eax, 2000h
		cmp	edi, eax
		mov	ebx, edi
		jb	short loc_7F812694
		mov	ebx, eax

loc_7F812694:				; CODE XREF: sub_7F812653+3Dj
		mov	eax, dword_7F838078
		cmp	word ptr [eax+126h], 0
		jz	short loc_7F8126B9
		push	0
		push	[ebp+lDistanceToMove]
		push	ebx
		push	lpBuffer
		push	[ebp+arg_0]
		call	sub_7F812934
		jmp	short loc_7F8126CB
; ---------------------------------------------------------------------------

loc_7F8126B9:				; CODE XREF: sub_7F812653+4Ej
		push	[ebp+lDistanceToMove]
		push	ebx
		push	lpBuffer
		push	[ebp+arg_0]
		call	sub_7F8128E1

loc_7F8126CB:				; CODE XREF: sub_7F812653+64j
		mov	eax, lpBuffer
		push	eax		; lpBuffer
		push	ebx		; nNumberOfBytesToRead
		push	[ebp+lDistanceToMove] ;	lDistanceToMove
		push	2		; __int16
		mov	eax, dword_7F838080
		push	eax		; int
		call	sub_7F815C9D
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81277F
		add	[ebp+arg_0], ebx
		add	[ebp+lDistanceToMove], ebx
		sub	edi, ebx
		jz	loc_7F81277F

loc_7F8126FA:				; CODE XREF: sub_7F812653+123j
		cmp	edi, 2000h
		mov	ebx, edi
		mov	[ebp+NumberOfBytesWritten], 0
		jb	short loc_7F812710
		mov	ebx, 2000h

loc_7F812710:				; CODE XREF: sub_7F812653+B6j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+126h], 0
		jz	short loc_7F812735
		push	0
		push	[ebp+lDistanceToMove]
		push	ebx
		push	lpBuffer
		push	[ebp+arg_0]
		call	sub_7F812934
		jmp	short loc_7F812747
; ---------------------------------------------------------------------------

loc_7F812735:				; CODE XREF: sub_7F812653+CAj
		push	[ebp+lDistanceToMove]
		push	ebx
		push	lpBuffer
		push	[ebp+arg_0]
		call	sub_7F8128E1

loc_7F812747:				; CODE XREF: sub_7F812653+E0j
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		push	ebx		; nNumberOfBytesToWrite
		push	lpBuffer	; lpBuffer
		mov	eax, dword_7F838080
		push	eax		; int
		call	sub_7F815B4C
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81277F
		cmp	[ebp+NumberOfBytesWritten], ebx
		jnz	short loc_7F81277A
		sub	edi, [ebp+NumberOfBytesWritten]
		mov	eax, [ebp+NumberOfBytesWritten]
		add	[ebp+arg_0], eax
		add	[ebp+lDistanceToMove], eax
		test	edi, edi
		jnz	short loc_7F8126FA
		jmp	short loc_7F81277F
; ---------------------------------------------------------------------------

loc_7F81277A:				; CODE XREF: sub_7F812653+113j
		mov	esi, 204h

loc_7F81277F:				; CODE XREF: sub_7F812653+2Bj
					; sub_7F812653+93j ...
		cmp	dword_7F836760,	0
		jz	short loc_7F81278F
		mov	eax, dword_7F836760
		dec	byte ptr [eax]

loc_7F81278F:				; CODE XREF: sub_7F812653+133j
		test	esi, esi
		jz	short loc_7F8127C4
		cmp	esi, 200h
		jz	short loc_7F8127C4
		cmp	esi, 204h
		jz	short loc_7F8127C4
		cmp	esi, 215h
		jz	short loc_7F8127BF
		mov	eax, 611h
		cmp	esi, eax
		jz	short loc_7F8127C4
		mov	esi, eax
		push	1
		call	sub_7F82A514
		jmp	short loc_7F8127C4
; ---------------------------------------------------------------------------

loc_7F8127BF:				; CODE XREF: sub_7F812653+156j
		mov	esi, 204h

loc_7F8127C4:				; CODE XREF: sub_7F812653+13Ej
					; sub_7F812653+146j ...
		cmp	dword_7F838080,	0
		jz	short loc_7F8127DC
		push	3		; __int16
		mov	eax, dword_7F838080
		push	0		; lDistanceToMove
		push	eax		; int
		call	sub_7F815C03

loc_7F8127DC:				; CODE XREF: sub_7F812653+178j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F812653	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8127E7(LPVOID lpBuffer, LONG lDistanceToMove, int)
sub_7F8127E7	proc near		; CODE XREF: sub_7F814E39+7Dp
					; sub_7F816F26+7Bp ...

NumberOfBytesRead= dword ptr -4
lpBuffer	= dword	ptr  8
lDistanceToMove	= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	eax, [esp+arg_8]
		mov	ebp, esp
		sub	esp, 4
		cmp	dword_7F838080,	0
		push	ebx
		push	esi
		push	edi
		mov	edi, [eax]
		jnz	short loc_7F81280E
		call	sub_7F82A588
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F812893

loc_7F81280E:				; CODE XREF: sub_7F8127E7+16j
		push	1		; __int16
		push	[ebp+lDistanceToMove] ;	lDistanceToMove
		push	dword_7F838080	; int
		call	sub_7F815C03
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F812893
		test	edi, edi
		jz	short loc_7F812893
		mov	ebx, [ebp+lpBuffer]

loc_7F81282B:				; CODE XREF: sub_7F8127E7+A3j
		mov	[ebp+NumberOfBytesRead], 0
		lea	eax, [ebp+NumberOfBytesRead]
		push	eax		; lpNumberOfBytesRead
		push	edi		; nNumberOfBytesToRead
		push	ebx		; lpBuffer
		mov	eax, dword_7F838080
		push	eax		; int
		call	sub_7F815A66
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F812893
		cmp	[ebp+NumberOfBytesRead], 0
		jz	short loc_7F81288E
		mov	eax, dword_7F838078
		cmp	word ptr [eax+126h], 0
		jz	short loc_7F81286F
		push	1
		push	[ebp+lDistanceToMove]
		push	[ebp+NumberOfBytesRead]
		push	ebx
		push	ebx
		call	sub_7F812934
		jmp	short loc_7F81287C
; ---------------------------------------------------------------------------

loc_7F81286F:				; CODE XREF: sub_7F8127E7+75j
		push	[ebp+lDistanceToMove]
		push	[ebp+NumberOfBytesRead]
		push	ebx
		push	ebx
		call	sub_7F8128E1

loc_7F81287C:				; CODE XREF: sub_7F8127E7+86j
		sub	edi, [ebp+NumberOfBytesRead]
		add	ebx, [ebp+NumberOfBytesRead]
		mov	eax, [ebp+NumberOfBytesRead]
		add	[ebp+lDistanceToMove], eax
		test	edi, edi
		jnz	short loc_7F81282B
		jmp	short loc_7F812893
; ---------------------------------------------------------------------------

loc_7F81288E:				; CODE XREF: sub_7F8127E7+66j
		mov	esi, 200h

loc_7F812893:				; CODE XREF: sub_7F8127E7+21j
					; sub_7F8127E7+3Bj ...
		mov	eax, [ebp+arg_8]
		sub	[eax], edi
		test	esi, esi
		jz	short loc_7F8128BE
		cmp	esi, 200h
		jz	short loc_7F8128BE
		cmp	esi, 204h
		jz	short loc_7F8128BE
		mov	eax, 611h
		cmp	esi, eax
		jz	short loc_7F8128BE
		mov	esi, eax
		push	1
		call	sub_7F82A514

loc_7F8128BE:				; CODE XREF: sub_7F8127E7+B3j
					; sub_7F8127E7+BBj ...
		cmp	dword_7F838080,	0
		jz	short loc_7F8128D6
		push	3		; __int16
		mov	eax, dword_7F838080
		push	0		; lDistanceToMove
		push	eax		; int
		call	sub_7F815C03

loc_7F8128D6:				; CODE XREF: sub_7F8127E7+DEj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F8127E7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8128E1	proc near		; CODE XREF: sub_7F812653+73p
					; sub_7F812653+EFp ...

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	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		mov	eax, edi
		dec	edi
		test	eax, eax
		jz	short loc_7F81292D
		mov	eax, [ebp+arg_0]
		mov	esi, [ebp+arg_4]
		mov	edx, [ebp+arg_C]

loc_7F8128FA:				; CODE XREF: sub_7F8128E1+4Aj
		mov	cl, [eax]
		inc	eax
		add	cl, dl
		movzx	ecx, cl
		mov	bl, byte_7F835AE8[ecx]
		mov	cl, dh
		add	bl, cl
		movzx	ebx, bl
		mov	bl, byte_7F835CE8[ebx]
		sub	bl, cl
		movzx	ecx, bl
		mov	cl, byte_7F835BE8[ecx]
		sub	cl, dl
		inc	edx
		mov	[esi], cl
		inc	esi
		mov	ecx, edi
		dec	edi
		test	ecx, ecx
		jnz	short loc_7F8128FA

loc_7F81292D:				; CODE XREF: sub_7F8128E1+Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_7F8128E1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F812934	proc near		; CODE XREF: sub_7F812653+5Fp
					; sub_7F812653+DBp ...

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	eax, dword_7F838078
		mov	ebp, esp
		push	ebx
		push	esi
		mov	ecx, [eax+128h]
		push	edi
		mov	eax, [ebp+arg_8]
		cmp	[ebp+arg_10], 0
		jz	short loc_7F81298B
		dec	[ebp+arg_8]
		test	eax, eax
		jz	short loc_7F8129C6
		mov	esi, [ebp+arg_0]
		mov	edi, [ebp+arg_4]

loc_7F81295B:				; CODE XREF: sub_7F812934+53j
		mov	al, [esi]
		inc	esi
		movzx	edx, al
		mov	eax, [ebp+arg_C]
		mov	bl, byte_7F835CE8[edx]
		sub	edx, edx
		inc	[ebp+arg_C]
		div	ecx
		sub	bl, al
		mov	edx, [ebp+arg_8]
		movzx	eax, bl
		dec	[ebp+arg_8]
		mov	al, byte_7F835AE8[eax]
		mov	[edi], al
		inc	edi
		test	edx, edx
		jnz	short loc_7F81295B
		jmp	short loc_7F8129C6
; ---------------------------------------------------------------------------

loc_7F81298B:				; CODE XREF: sub_7F812934+18j
		dec	[ebp+arg_8]
		test	eax, eax
		jz	short loc_7F8129C6
		mov	esi, [ebp+arg_0]
		mov	edi, [ebp+arg_4]

loc_7F812998:				; CODE XREF: sub_7F812934+90j
		mov	al, [esi]
		inc	esi
		movzx	edx, al
		mov	eax, [ebp+arg_C]
		mov	bl, byte_7F835BE8[edx]
		sub	edx, edx
		inc	[ebp+arg_C]
		div	ecx
		add	bl, al
		mov	edx, [ebp+arg_8]
		movzx	eax, bl
		dec	[ebp+arg_8]
		mov	al, byte_7F835CE8[eax]
		mov	[edi], al
		inc	edi
		test	edx, edx
		jnz	short loc_7F812998

loc_7F8129C6:				; CODE XREF: sub_7F812934+1Fj
					; sub_7F812934+55j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	14h
sub_7F812934	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8129CD(int, LPCVOID lpBuffer, __int16, __int16)
sub_7F8129CD	proc near		; CODE XREF: sub_7F813C77+1ABp
					; sub_7F82159B+110p

var_14		= dword	ptr -14h
NumberOfBytesWritten= dword ptr	-10h
var_C		= word ptr -0Ch
var_8		= word ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
lpBuffer	= dword	ptr  0Ch
arg_8		= word ptr  10h
arg_C		= word ptr  14h

		push	ebp
		xor	ecx, ecx
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		mov	[ebp+NumberOfBytesWritten], ecx
		push	esi
		mov	[ebp+var_4], ecx
		push	edi
		mov	esi, [ebp+lpBuffer]
		add	esi, 11Ch
		cmp	dword_7F836760,	ecx
		mov	edx, [esi]
		mov	[ebp+var_14], edx
		jz	short loc_7F8129FB
		mov	eax, dword_7F836760
		inc	byte ptr [eax]

loc_7F8129FB:				; CODE XREF: sub_7F8129CD+25j
		mov	ebx, [ebp+arg_0]
		cmp	dword ptr [ebx], 0
		jnz	short loc_7F812A0D
		mov	edi, 611h
		jmp	loc_7F812BB4
; ---------------------------------------------------------------------------

loc_7F812A0D:				; CODE XREF: sub_7F8129CD+34j
		mov	ax, [ebp+arg_8]
		and	ax, 4
		mov	[ebp+var_C], ax
		jz	short loc_7F812A20
		call	nullsub_1

loc_7F812A20:				; CODE XREF: sub_7F8129CD+4Cj
		mov	ax, [ebp+arg_8]
		and	ax, 2
		mov	[ebp+var_8], ax
		jz	short loc_7F812A59
		push	dword ptr [ebx]
		call	sub_7F82A7F5
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F812A59
		mov	eax, dword_7F838078
		add	eax, 254h
		cmp	word ptr [eax],	0
		jnz	loc_7F812BB4
		mov	word ptr [eax],	4
		jmp	loc_7F812BB4
; ---------------------------------------------------------------------------

loc_7F812A59:				; CODE XREF: sub_7F8129CD+5Fj
					; sub_7F8129CD+6Cj
		lea	eax, [ebp+var_4]
		push	eax
		push	dword ptr [ebx]
		call	sub_7F8159EA
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F812A88
		mov	eax, dword_7F838078
		add	eax, 254h
		cmp	word ptr [eax],	0
		jnz	loc_7F812BB4
		mov	word ptr [eax],	4
		jmp	loc_7F812BB4
; ---------------------------------------------------------------------------

loc_7F812A88:				; CODE XREF: sub_7F8129CD+9Bj
		push	dword ptr [ebx]
		call	sub_7F815991
		cmp	[ebp+arg_C], 0
		mov	eax, [ebp+var_4]
		mov	[ebx], eax
		jl	short loc_7F812AAF
		movsx	eax, [ebp+arg_C]
		push	1		; nNumberOfBytesToLockLow
		add	eax, 1E0h
		push	eax		; dwFileOffsetLow
		push	[ebp+var_4]	; int
		call	sub_7F815E19

loc_7F812AAF:				; CODE XREF: sub_7F8129CD+CCj
		push	1		; __int16
		push	0		; lDistanceToMove
		push	[ebp+var_4]	; int
		call	sub_7F815C03
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F812ADF
		mov	eax, dword_7F838078
		add	eax, 254h
		cmp	word ptr [eax],	0
		jnz	loc_7F812BB4
		mov	word ptr [eax],	4
		jmp	loc_7F812BB4
; ---------------------------------------------------------------------------

loc_7F812ADF:				; CODE XREF: sub_7F8129CD+F2j
		call	ds:GetTickCount
		mov	[esi], eax
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		push	1DFh		; nNumberOfBytesToWrite
		push	[ebp+lpBuffer]	; lpBuffer
		push	[ebp+var_4]	; int
		call	sub_7F815B4C
		cmp	[ebp+NumberOfBytesWritten], 1DFh
		mov	edi, eax
		jz	short loc_7F812B0B
		mov	edi, 200h

loc_7F812B0B:				; CODE XREF: sub_7F8129CD+137j
		test	edi, edi
		jz	short loc_7F812B2D
		mov	eax, dword_7F838078
		add	eax, 254h
		cmp	word ptr [eax],	0
		jnz	loc_7F812BB4
		mov	word ptr [eax],	4
		jmp	loc_7F812BB4
; ---------------------------------------------------------------------------

loc_7F812B2D:				; CODE XREF: sub_7F8129CD+140j
		cmp	[ebp+var_C], 0
		jz	short loc_7F812B39
		call	nullsub_1

loc_7F812B39:				; CODE XREF: sub_7F8129CD+165j
		cmp	[ebp+var_8], 0
		jz	short loc_7F812B65
		push	[ebp+var_4]
		call	sub_7F82A7F5
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F812B65
		mov	eax, dword_7F838078
		add	eax, 254h
		cmp	word ptr [eax],	0
		jnz	short loc_7F812BB4
		mov	word ptr [eax],	4
		jmp	short loc_7F812BB4
; ---------------------------------------------------------------------------

loc_7F812B65:				; CODE XREF: sub_7F8129CD+171j
					; sub_7F8129CD+17Fj
		lea	eax, [ebp+var_4]
		push	eax
		push	dword ptr [ebx]
		call	sub_7F8159EA
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F812B8D
		mov	eax, dword_7F838078
		add	eax, 254h
		cmp	word ptr [eax],	0
		jnz	short loc_7F812BB4
		mov	word ptr [eax],	4
		jmp	short loc_7F812BB4
; ---------------------------------------------------------------------------

loc_7F812B8D:				; CODE XREF: sub_7F8129CD+1A7j
		push	dword ptr [ebx]
		call	sub_7F815991
		cmp	[ebp+arg_C], 0
		mov	eax, [ebp+var_4]
		mov	[ebx], eax
		jl	short loc_7F812BB4
		movsx	eax, [ebp+arg_C]
		push	1		; nNumberOfBytesToLockLow
		add	eax, 1E0h
		push	eax		; dwFileOffsetLow
		push	[ebp+var_4]	; int
		call	sub_7F815E19

loc_7F812BB4:				; CODE XREF: sub_7F8129CD+3Bj
					; sub_7F8129CD+7Cj ...
		cmp	dword_7F836760,	0
		jz	short loc_7F812BC4
		mov	eax, dword_7F836760
		dec	byte ptr [eax]

loc_7F812BC4:				; CODE XREF: sub_7F8129CD+1EEj
		cmp	[ebp+var_4], 0
		jz	short loc_7F812BD6
		push	3		; __int16
		push	0		; lDistanceToMove
		push	[ebp+var_4]	; int
		call	sub_7F815C03

loc_7F812BD6:				; CODE XREF: sub_7F8129CD+1FBj
		test	edi, edi
		jz	short loc_7F812BDF
		mov	eax, [ebp+var_14]
		mov	[esi], eax

loc_7F812BDF:				; CODE XREF: sub_7F8129CD+20Bj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F8129CD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F812BEA(int, LPVOID lpBuffer)
sub_7F812BEA	proc near		; CODE XREF: sub_7F821428+2Fp
					; sub_7F8225B6+44p ...

NumberOfBytesRead= dword ptr -8
Buffer		= byte ptr -2
arg_0		= dword	ptr  8
lpBuffer	= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+NumberOfBytesRead], 0
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		test	esi, esi
		jnz	short loc_7F812C08
		mov	ebx, 611h
		jmp	short loc_7F812C59
; ---------------------------------------------------------------------------

loc_7F812C08:				; CODE XREF: sub_7F812BEA+15j
		push	1		; __int16
		push	0		; lDistanceToMove
		push	esi		; int
		call	sub_7F815C03
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F812C59
		lea	eax, [ebp+NumberOfBytesRead]
		mov	edi, 1DFh
		push	eax		; lpNumberOfBytesRead
		push	edi		; nNumberOfBytesToRead
		push	[ebp+lpBuffer]	; lpBuffer
		push	esi		; int
		call	sub_7F815A66
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F812C59
		cmp	[ebp+NumberOfBytesRead], edi
		jz	short loc_7F812C3B
		mov	ebx, 200h

loc_7F812C3B:				; CODE XREF: sub_7F812BEA+4Aj
		test	ebx, ebx
		jnz	short loc_7F812C59
		push	3		; __int16
		push	0FFFFFFFFh	; lDistanceToMove
		push	esi		; int
		call	sub_7F815C03
		lea	eax, [ebp+NumberOfBytesRead]
		lea	ecx, [ebp+Buffer]
		push	eax		; lpNumberOfBytesRead
		push	1		; nNumberOfBytesToRead
		push	ecx		; lpBuffer
		push	esi		; int
		call	sub_7F815A66

loc_7F812C59:				; CODE XREF: sub_7F812BEA+1Cj
					; sub_7F812BEA+2Cj ...
		test	esi, esi
		jz	short loc_7F812C67
		push	3		; __int16
		push	0		; lDistanceToMove
		push	esi		; int
		call	sub_7F815C03

loc_7F812C67:				; CODE XREF: sub_7F812BEA+71j
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F812BEA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F812C72	proc near		; CODE XREF: sub_7F813636+18Bp
					; sub_7F81F699+62p ...

NumberOfBytesWritten= dword ptr	-8
Buffer		= byte ptr -1
arg_0		= dword	ptr  8

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 8
		cmp	dword_7F836760,	eax
		push	esi
		mov	[ebp+NumberOfBytesWritten], eax
		mov	[ebp+Buffer], al
		jz	short loc_7F812C90
		mov	eax, dword_7F836760
		inc	byte ptr [eax]

loc_7F812C90:				; CODE XREF: sub_7F812C72+15j
		cmp	dword_7F838080,	0
		jnz	short loc_7F812CA8
		call	sub_7F82A588
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F812D2A

loc_7F812CA8:				; CODE XREF: sub_7F812C72+25j
		push	1		; __int16
		mov	eax, dword_7F838078
		mov	ecx, [eax+200h]
		mov	eax, [ecx+4]
		add	eax, [ebp+arg_0]
		push	eax		; lDistanceToMove
		push	dword_7F838080	; int
		call	sub_7F815C03
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F812D2A
		lea	eax, [ebp+NumberOfBytesWritten]
		lea	ecx, [ebp+Buffer]
		push	eax		; lpNumberOfBytesWritten
		push	1		; nNumberOfBytesToWrite
		push	ecx		; lpBuffer
		push	dword_7F838080	; int
		call	sub_7F815B4C
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F812CFF
		cmp	esi, 203h
		jz	short loc_7F812CF8
		cmp	esi, 215h
		jnz	short loc_7F812D2A

loc_7F812CF8:				; CODE XREF: sub_7F812C72+7Cj
		mov	esi, 204h
		jmp	short loc_7F812D2A
; ---------------------------------------------------------------------------

loc_7F812CFF:				; CODE XREF: sub_7F812C72+74j
		cmp	[ebp+NumberOfBytesWritten], 1
		jz	short loc_7F812D0C
		mov	esi, 204h
		jmp	short loc_7F812D2A
; ---------------------------------------------------------------------------

loc_7F812D0C:				; CODE XREF: sub_7F812C72+91j
		mov	eax, dword_7F838080
		push	eax
		call	sub_7F815BCA
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F812D2A
		mov	eax, dword_7F838080
		push	eax
		call	sub_7F82A7F5
		mov	esi, eax

loc_7F812D2A:				; CODE XREF: sub_7F812C72+30j
					; sub_7F812C72+59j ...
		cmp	dword_7F836760,	0
		jz	short loc_7F812D3A
		mov	eax, dword_7F836760
		dec	byte ptr [eax]

loc_7F812D3A:				; CODE XREF: sub_7F812C72+BFj
		mov	eax, dword_7F838080
		push	eax
		call	sub_7F82A7F5
		test	esi, esi
		jz	short loc_7F812D6B
		cmp	esi, 200h
		jz	short loc_7F812D6B
		cmp	esi, 204h
		jz	short loc_7F812D6B
		mov	eax, 611h
		cmp	esi, eax
		jz	short loc_7F812D6B
		mov	esi, eax
		push	1
		call	sub_7F82A514

loc_7F812D6B:				; CODE XREF: sub_7F812C72+D5j
					; sub_7F812C72+DDj ...
		mov	eax, esi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F812C72	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F812D74	proc near		; CODE XREF: sub_7F81339D+199p
					; sub_7F8139C6+D5p ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		mov	esi, dword_7F838078
		add	esi, 250h
		cmp	dword ptr [esi], 0
		jz	short loc_7F812D98
		mov	eax, 253h
		jmp	loc_7F812F6A
; ---------------------------------------------------------------------------

loc_7F812D98:				; CODE XREF: sub_7F812D74+18j
		call	GetCurrentProcessId_0
		cmp	[ebp+arg_0], 0
		mov	[esi], eax
		mov	eax, dword_7F838078
		jz	short loc_7F812DC3
		mov	ax, [eax+0Ch]
		lea	ecx, [eax+100h]
		cmp	cx, ax
		jnb	short loc_7F812DCF
		mov	esi, 1018h
		jmp	loc_7F812F58
; ---------------------------------------------------------------------------

loc_7F812DC3:				; CODE XREF: sub_7F812D74+34j
		mov	cx, [eax+208h]
		add	cx, 100h

loc_7F812DCF:				; CODE XREF: sub_7F812D74+43j
		mov	eax, dword_7F838078
		cmp	[eax+208h], cx
		jbe	short loc_7F812DE7
		mov	eax, 400h
		jmp	loc_7F812F6A
; ---------------------------------------------------------------------------

loc_7F812DE7:				; CODE XREF: sub_7F812D74+67j
		movzx	ebx, cx
		shl	ebx, 5
		push	0
		add	ebx, 1FFh
		push	70616D80h
		and	ebx, 0FFFFFE00h
		call	sub_7F8144A4
		mov	edi, eax
		lea	edx, [ebp+var_8]
		lea	eax, [ebp+var_4]
		lea	ecx, ds:1F8h[ebx*2]
		mov	[ebp+var_8], 80h
		push	eax
		push	ecx
		push	edx
		call	sub_7F812FC1
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F812F58
		push	[ebp+var_4]
		push	edi
		xor	esi, esi
		call	sub_7F814AC2
		push	[ebp+var_4]
		call	sub_7F8147DD
		and	word ptr [edi+10h], 0DFFFh
		mov	eax, [ebp+var_4]
		and	word ptr [eax+10h], 0DFFFh
		mov	eax, [edi+18h]
		mov	ecx, dword_7F838078
		add	eax, 1FFh
		and	eax, 0FFFFFE00h
		mov	[ecx+10h], eax
		add	eax, ebx
		mov	ecx, dword_7F838078
		mov	[ecx+50h], eax
		mov	ecx, [edi+18h]
		mov	eax, dword_7F838078
		mov	eax, [eax+10h]
		cmp	eax, ecx
		jz	short loc_7F812E8E
		sub	eax, ecx
		push	eax		; nNumberOfBytesToRead
		push	ecx		; lDistanceToMove
		push	lpBuffer	; int
		call	sub_7F812653

loc_7F812E8E:				; CODE XREF: sub_7F812D74+109j
		mov	eax, dword_7F838078
		mov	ebx, 200h
		push	ebx		; nNumberOfBytesToRead
		mov	eax, [eax+50h]
		sub	eax, 200h
		push	eax		; lDistanceToMove
		push	lpBuffer	; int
		call	sub_7F812653
		mov	ecx, [edi+14h]
		mov	edx, [edi+18h]
		push	ebx		; nNumberOfBytesToRead
		lea	eax, [ecx+edx-200h]
		push	eax		; lDistanceToMove
		push	lpBuffer	; int
		call	sub_7F812653
		mov	ecx, dword_7F838078
		mov	ebx, [ecx+20Ch]
		mov	edx, [ebx]
		mov	eax, [edx]
		add	edx, 4
		mov	[ebp+var_4], eax
		test	eax, eax
		jz	short loc_7F812F03

loc_7F812EE1:				; CODE XREF: sub_7F812D74+18Dj
		mov	ax, 100h

loc_7F812EE5:				; CODE XREF: sub_7F812D74+181j
		dec	ax
		mov	ecx, [ebp+var_4]
		or	byte ptr [ecx+10h], 3
		add	[ebp+var_4], 20h
		test	ax, ax
		jnz	short loc_7F812EE5
		mov	eax, [edx]
		add	edx, 4
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	short loc_7F812EE1

loc_7F812F03:				; CODE XREF: sub_7F812D74+16Bj
		mov	eax, dword_7F838078
		mov	ecx, [eax+200h]
		mov	dx, [ecx+8]
		mov	[eax+214h], dx
		mov	eax, dword_7F838078
		mov	word ptr [eax+23Ch], 0
		mov	eax, dword_7F838078
		mov	ecx, [eax+50h]
		sub	ecx, [eax+10h]
		shr	ecx, 5
		mov	[eax+0Ch], cx
		mov	eax, dword_7F838078
		add	eax, 0Ch
		mov	ecx, dword_7F838078
		mov	dx, [eax]
		cmp	[ecx+208h], dx
		jbe	short loc_7F812F58
		mov	word ptr [eax],	0FFFFh

loc_7F812F58:				; CODE XREF: sub_7F812D74+4Aj
					; sub_7F812D74+B3j ...
		mov	ecx, dword_7F838078
		mov	eax, esi
		mov	dword ptr [ecx+250h], 0

loc_7F812F6A:				; CODE XREF: sub_7F812D74+1Fj
					; sub_7F812D74+6Ej
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F812D74	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F812F73	proc near		; CODE XREF: sub_7F813059+Cp
					; sub_7F813F0D+1B5p ...

arg_0		= dword	ptr  4

		push	esi
		mov	eax, dword_7F838078
		mov	edx, [eax+20Ch]
		mov	ecx, [edx]
		mov	esi, ecx
		cmp	dword ptr [ecx], 0
		jz	short loc_7F812FA3
		mov	edx, [esp+4+arg_0]

loc_7F812F8C:				; CODE XREF: sub_7F812F73+2Ej
		mov	eax, [esi]
		cmp	edx, eax
		jb	short loc_7F812F9B
		add	eax, 2000h
		cmp	eax, edx
		ja	short loc_7F812FAA

loc_7F812F9B:				; CODE XREF: sub_7F812F73+1Dj
		add	esi, 4
		cmp	dword ptr [esi], 0
		jnz	short loc_7F812F8C

loc_7F812FA3:				; CODE XREF: sub_7F812F73+13j
		xor	ax, ax

loc_7F812FA6:				; CODE XREF: sub_7F812F73+4Cj
		pop	esi
		retn	4
; ---------------------------------------------------------------------------

loc_7F812FAA:				; CODE XREF: sub_7F812F73+26j
		mov	eax, esi
		sub	edx, [esi]
		sub	ax, cx
		shr	edx, 5
		and	ax, 0FFFCh
		shl	ax, 6
		add	ax, dx
		jmp	short loc_7F812FA6
sub_7F812F73	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F812FC1	proc near		; CODE XREF: sub_7F812D74+AAp
					; sub_7F814988+19p ...

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
		push	esi
		lea	eax, [ebp+var_8]
		push	edi
		mov	esi, [ebp+arg_0]
		push	eax
		mov	ecx, [esi]
		test	ecx, 0FFFFFF00h
		jnz	short loc_7F813036
		push	esi
		push	ecx
		call	sub_7F8142AB

loc_7F812FE1:				; CODE XREF: sub_7F812FC1+7Dj
		push	1
		lea	ecx, [ebp+var_4]
		push	[ebp+arg_4]
		push	ecx
		call	sub_7F813636
		mov	edi, eax
		xor	ecx, ecx
		test	edi, edi
		jnz	short loc_7F81302C
		mov	eax, [ebp+var_4]
		mov	[eax+8], ecx
		mov	eax, [ebp+var_4]
		mov	[eax+0Ch], ecx
		mov	eax, [ebp+var_4]
		mov	[eax+1Ch], ecx
		mov	eax, [ebp+var_4]
		and	word ptr [eax+10h], 3
		mov	eax, [ebp+var_4]
		or	byte ptr [eax+17h], 80h
		mov	eax, [ebp+var_4]
		mov	[eax+12h], cx
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	dword ptr [esi]
		call	sub_7F81444D

loc_7F81302C:				; CODE XREF: sub_7F812FC1+34j
					; sub_7F812FC1+84j
		xor	ecx, ecx
		test	edi, edi
		jz	short loc_7F813047
		mov	[esi], ecx
		jmp	short loc_7F81304A
; ---------------------------------------------------------------------------

loc_7F813036:				; CODE XREF: sub_7F812FC1+17j
		push	ecx
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F812FE1
		mov	edi, 100Ah
		jmp	short loc_7F81302C
; ---------------------------------------------------------------------------

loc_7F813047:				; CODE XREF: sub_7F812FC1+6Fj
		mov	ecx, [ebp+var_4]

loc_7F81304A:				; CODE XREF: sub_7F812FC1+73j
		mov	eax, [ebp+arg_8]
		mov	[eax], ecx
		mov	eax, edi
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F812FC1	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F813059	proc near		; CODE XREF: sub_7F813636+16Cp
					; sub_7F813F0D+1A9p ...

var_6		= word ptr -6
var_4		= word ptr -4
arg_0		= dword	ptr  4
arg_4		= word ptr  8

		sub	esp, 8
		push	ebx
		push	esi
		mov	esi, [esp+10h+arg_0]
		push	edi
		push	ebp
		push	esi
		call	sub_7F812F73
		test	byte ptr [esi+11h], 80h
		jnz	short loc_7F81308A
		cmp	byte ptr [esi+4], 8Ch
		jz	short loc_7F81308A
		mov	edx, [esi+14h]
		and	edx, 7FFFFFFFh
		add	edx, 87h
		and	dl, 80h
		jmp	short loc_7F81308D
; ---------------------------------------------------------------------------

loc_7F81308A:				; CODE XREF: sub_7F813059+15j
					; sub_7F813059+1Bj
		mov	edx, [esi+14h]

loc_7F81308D:				; CODE XREF: sub_7F813059+2Fj
		mov	ecx, dword_7F838078
		xor	ebp, ebp
		mov	[esp+18h+var_6], 0
		mov	edi, [ecx+200h]
		mov	cx, [esi+10h]
		add	edi, 0Ch
		mov	bx, [edi]
		and	cx, 3
		mov	[esi+1Ch], ebp
		mov	dword ptr [esi+4], 8Fh
		mov	[esi], bp
		mov	[esi+2], bp
		mov	[esi+14h], edx
		mov	[esp+18h+var_4], cx
		mov	[esi+10h], cx
		mov	cx, [esp+18h+arg_4]
		or	cx, [esp+18h+var_4]
		mov	[esi+12h], bp
		or	ch, 80h
		mov	[esi+10h], cx
		mov	ecx, dword_7F838078
		add	[ecx+270h], edx
		mov	ecx, dword_7F838078
		inc	word ptr [ecx+212h]
		test	bx, bx
		jz	short loc_7F813163

loc_7F813100:				; CODE XREF: sub_7F813059+108j
		cmp	bx, 1
		jb	short loc_7F81314C
		mov	ecx, dword_7F838078
		mov	ebp, [ecx+200h]
		cmp	[ebp+8], bx
		jbe	short loc_7F81314C
		mov	cx, bx
		mov	ebp, dword_7F838078
		shr	cx, 6
		mov	ebp, [ebp+20Ch]
		movzx	ecx, cx
		and	ecx, 3FFFFFCh
		mov	ebp, [ebp+0]
		mov	ecx, [ecx+ebp]
		xor	ebp, ebp
		mov	bp, bx
		and	ebp, 0FFh
		shl	ebp, 5
		add	ebp, ecx
		jmp	short loc_7F81314E
; ---------------------------------------------------------------------------

loc_7F81314C:				; CODE XREF: sub_7F813059+ABj
					; sub_7F813059+BDj
		xor	ebp, ebp

loc_7F81314E:				; CODE XREF: sub_7F813059+F1j
		cmp	[ebp+14h], edx
		jnb	short loc_7F813163
		mov	[esp+18h+var_6], bx
		lea	edi, [ebp+2]
		mov	bx, [edi]
		test	bx, bx
		jnz	short loc_7F813100

loc_7F813163:				; CODE XREF: sub_7F813059+A5j
					; sub_7F813059+F8j
		test	ebp, ebp
		jz	short loc_7F81317A
		cmp	[ebp+14h], edx
		jnz	short loc_7F81317A
		mov	cx, [ebp+0]
		push	ebp
		mov	[esi], cx
		mov	[ebp+0], ax
		jmp	short loc_7F8131E1
; ---------------------------------------------------------------------------

loc_7F81317A:				; CODE XREF: sub_7F813059+10Cj
					; sub_7F813059+111j
		mov	cx, [edi]
		cmp	[esp+18h+var_6], 0
		mov	[esi+2], cx
		mov	[edi], ax
		jz	short loc_7F8131DE
		cmp	[esp+18h+var_6], 1
		jb	short loc_7F8131DE
		mov	dx, [esp+18h+var_6]
		mov	eax, dword_7F838078
		mov	ecx, [eax+200h]
		cmp	[ecx+8], dx
		jbe	short loc_7F8131DE
		mov	ax, dx
		shr	ax, 6
		movzx	ecx, ax
		and	ecx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	edx, [eax+20Ch]
		mov	ebx, [edx]
		mov	eax, [ecx+ebx]
		xor	ecx, ecx
		mov	cx, [esp+18h+var_6]
		and	ecx, 0FFh
		shl	ecx, 5
		add	eax, ecx
		jmp	short loc_7F8131E0
; ---------------------------------------------------------------------------

loc_7F8131DE:				; CODE XREF: sub_7F813059+131j
					; sub_7F813059+139j ...
		xor	eax, eax

loc_7F8131E0:				; CODE XREF: sub_7F813059+183j
		push	eax

loc_7F8131E1:				; CODE XREF: sub_7F813059+11Fj
		call	sub_7F8148F7
		push	esi
		call	sub_7F8148F7
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 8
		retn	8
sub_7F813059	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8131F6	proc near		; CODE XREF: sub_7F813636+131p
					; sub_7F813F0D+188p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		lea	eax, [ebp+var_4]
		push	esi
		push	edi
		push	eax
		mov	edi, [ebp+arg_0]
		push	edi
		call	sub_7F813302
		mov	esi, eax
		test	esi, esi
		jz	loc_7F8132F7
		cmp	[ebp+var_4], 0
		jz	short loc_7F813243
		mov	eax, [ebp+var_4]
		mov	ecx, [edi+14h]
		cmp	[eax+14h], ecx
		jnz	short loc_7F813235
		mov	ax, [edi]
		mov	ecx, [ebp+var_4]
		mov	[ecx], ax
		jmp	loc_7F8132BE
; ---------------------------------------------------------------------------

loc_7F813235:				; CODE XREF: sub_7F8131F6+2Fj
		cmp	[ebp+var_4], 0
		jz	short loc_7F813243
		mov	ecx, [ebp+var_4]
		add	ecx, 2
		jmp	short loc_7F813251
; ---------------------------------------------------------------------------

loc_7F813243:				; CODE XREF: sub_7F8131F6+24j
					; sub_7F8131F6+43j
		mov	eax, dword_7F838078
		mov	ecx, [eax+200h]
		add	ecx, 0Ch

loc_7F813251:				; CODE XREF: sub_7F8131F6+4Bj
		mov	dx, [edi]
		test	dx, dx
		jnz	short loc_7F813262
		mov	ax, [edi+2]
		mov	[ecx], ax
		jmp	short loc_7F8132BE
; ---------------------------------------------------------------------------

loc_7F813262:				; CODE XREF: sub_7F8131F6+61j
		cmp	dx, 1
		jb	short loc_7F8132AB
		mov	eax, dword_7F838078
		mov	ebx, [eax+200h]
		cmp	[ebx+8], dx
		jbe	short loc_7F8132AB
		mov	ax, dx
		mov	ebx, dword_7F838078
		shr	ax, 6
		mov	ebx, [ebx+20Ch]
		movzx	eax, ax
		and	eax, 3FFFFFCh
		mov	ebx, [ebx]
		mov	eax, [eax+ebx]
		xor	ebx, ebx
		mov	bx, dx
		and	ebx, 0FFh
		shl	ebx, 5
		add	ebx, eax
		jmp	short loc_7F8132AD
; ---------------------------------------------------------------------------

loc_7F8132AB:				; CODE XREF: sub_7F8131F6+70j
					; sub_7F8131F6+81j
		xor	ebx, ebx

loc_7F8132AD:				; CODE XREF: sub_7F8131F6+B3j
		mov	[ecx], dx
		push	ebx
		mov	ax, [edi+2]
		mov	[ebx+2], ax
		call	sub_7F8148F7

loc_7F8132BE:				; CODE XREF: sub_7F8131F6+3Aj
					; sub_7F8131F6+6Aj
		push	[ebp+var_4]
		call	sub_7F8148F7
		mov	dword ptr [edi+4], 8Dh
		xor	eax, eax
		mov	[edi], ax
		test	byte ptr [edi+11h], 80h
		mov	[edi+2], ax
		mov	eax, [edi+14h]
		mov	ecx, dword_7F838078
		jnz	short loc_7F8132F1
		and	eax, 7FFFFFFFh
		add	eax, 87h
		and	al, 80h

loc_7F8132F1:				; CODE XREF: sub_7F8131F6+EDj
		sub	[ecx+270h], eax

loc_7F8132F7:				; CODE XREF: sub_7F8131F6+1Aj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F8131F6	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F813302	proc near		; CODE XREF: sub_7F8131F6+11p
					; sub_7F813AA8+D7p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	eax, dword_7F838078
		push	esi
		push	edi
		mov	edi, [eax+200h]
		xor	esi, esi
		mov	dx, [edi+0Ch]
		test	dx, dx
		jz	short loc_7F81337B
		mov	ecx, [esp+0Ch+arg_0]

loc_7F81331F:				; CODE XREF: sub_7F813302+77j
		cmp	dx, 1
		jb	short loc_7F81335D
		cmp	[edi+8], dx
		jbe	short loc_7F81335D
		mov	ax, dx
		shr	ax, 6
		movzx	ebx, ax
		and	ebx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	eax, [eax+20Ch]
		mov	eax, [eax]
		mov	eax, [ebx+eax]
		xor	ebx, ebx
		mov	bx, dx
		and	ebx, 0FFh
		shl	ebx, 5
		add	ebx, eax
		jmp	short loc_7F81335F
; ---------------------------------------------------------------------------

loc_7F81335D:				; CODE XREF: sub_7F813302+21j
					; sub_7F813302+27j
		xor	ebx, ebx

loc_7F81335F:				; CODE XREF: sub_7F813302+59j
		cmp	ebx, ecx
		jz	short loc_7F81337B
		mov	esi, ebx
		mov	eax, [ecx+14h]
		cmp	[ebx+14h], eax
		jnz	short loc_7F813372
		mov	dx, [ebx]
		jmp	short loc_7F813376
; ---------------------------------------------------------------------------

loc_7F813372:				; CODE XREF: sub_7F813302+69j
		mov	dx, [ebx+2]

loc_7F813376:				; CODE XREF: sub_7F813302+6Ej
		test	dx, dx
		jnz	short loc_7F81331F

loc_7F81337B:				; CODE XREF: sub_7F813302+17j
					; sub_7F813302+5Fj
		mov	eax, [esp+0Ch+arg_4]
		test	eax, eax
		jz	short loc_7F813390
		test	dx, dx
		mov	[eax], esi
		jnz	short loc_7F813390
		mov	dword ptr [eax], 0

loc_7F813390:				; CODE XREF: sub_7F813302+7Fj
					; sub_7F813302+86j
		cmp	dx, 1
		pop	edi
		sbb	eax, eax
		pop	esi
		inc	eax
		pop	ebx
		retn	8
sub_7F813302	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81339D	proc near		; CODE XREF: sub_7F813636+21p
					; sub_7F81453F+93p ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ecx, dword_7F838078
		mov	ebp, esp
		add	ecx, 20Ah
		sub	esp, 8
		mov	[ebp+var_4], 0
		push	ebx
		push	esi
		mov	bx, [ecx]
		push	edi
		test	bx, bx
		jz	short loc_7F813418
		cmp	bx, 1
		jb	short loc_7F81340A
		mov	eax, dword_7F838078
		mov	edx, [eax+200h]
		cmp	[edx+8], bx
		jbe	short loc_7F81340A
		mov	ax, bx
		shr	ax, 6
		movzx	edx, ax
		and	edx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	esi, [eax+20Ch]
		mov	edi, [esi]
		mov	eax, [edx+edi]
		xor	edx, edx
		mov	dx, bx
		and	edx, 0FFh
		shl	edx, 5
		add	edx, eax
		jmp	short loc_7F81340C
; ---------------------------------------------------------------------------

loc_7F81340A:				; CODE XREF: sub_7F81339D+28j
					; sub_7F81339D+39j
		xor	edx, edx

loc_7F81340C:				; CODE XREF: sub_7F81339D+6Bj
		mov	ax, [edx+2]
		mov	[ecx], ax
		jmp	loc_7F8135FC
; ---------------------------------------------------------------------------

loc_7F813418:				; CODE XREF: sub_7F81339D+22j
		mov	eax, dword_7F838078
		mov	eax, [eax+200h]
		add	eax, 8
		mov	bx, [eax]
		cmp	bx, 0FEC0h
		lea	ecx, [ebx+1]
		mov	[eax], cx
		jb	short loc_7F81344B
		mov	eax, dword_7F838078
		add	eax, 254h
		cmp	word ptr [eax],	0
		jnz	short loc_7F81344B
		mov	word ptr [eax],	100h

loc_7F81344B:				; CODE XREF: sub_7F81339D+97j
					; sub_7F81339D+A7j
		mov	eax, dword_7F838078
		mov	cx, [eax+208h]
		cmp	bx, cx
		jb	loc_7F81358B
		mov	dx, [eax+206h]
		mov	esi, [eax+20Ch]
		movzx	eax, cx
		lea	ecx, [eax+100h]
		cmp	ecx, eax
		jnb	short loc_7F813489
		mov	[ebp+var_4], 1018h
		mov	edx, [ebp+var_8]
		jmp	loc_7F8135E7
; ---------------------------------------------------------------------------

loc_7F813489:				; CODE XREF: sub_7F81339D+DBj
		movzx	edi, dx
		push	esi
		call	sub_7F82F1CA
		shr	eax, 2
		lea	ecx, [edi+2]
		cmp	eax, ecx
		jnb	short loc_7F8134CC
		push	30h
		lea	eax, ds:8[edi*4]
		push	eax
		push	esi
		call	sub_7F82F24A
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F8134C1
		mov	[ebp+var_4], 400h
		mov	edx, [ebp+var_8]
		jmp	loc_7F8135E7
; ---------------------------------------------------------------------------

loc_7F8134C1:				; CODE XREF: sub_7F81339D+113j
		mov	eax, dword_7F838078
		mov	[eax+20Ch], esi

loc_7F8134CC:				; CODE XREF: sub_7F81339D+FDj
		shl	edi, 2
		push	30h
		add	edi, [esi]
		push	2000h
		call	sub_7F82F03B
		mov	[edi], eax
		test	eax, eax
		jnz	short loc_7F8134F2
		mov	[ebp+var_4], 400h
		mov	edx, [ebp+var_8]
		jmp	loc_7F8135E7
; ---------------------------------------------------------------------------

loc_7F8134F2:				; CODE XREF: sub_7F81339D+144j
		mov	dword ptr [edi+4], 0
		mov	eax, dword_7F838078
		inc	word ptr [eax+206h]
		mov	eax, dword_7F838078
		inc	word ptr [eax+204h]
		mov	eax, dword_7F838078
		add	word ptr [eax+208h], 100h
		mov	ecx, dword_7F838078
		mov	eax, ecx
		mov	ax, [eax+0Ch]
		cmp	[ecx+208h], ax
		jbe	short loc_7F81359B
		push	1
		call	sub_7F812D74
		mov	[ebp+var_4], eax
		test	eax, eax
		jz	short loc_7F81359B
		mov	eax, dword_7F838078
		sub	word ptr [eax+208h], 100h
		mov	eax, dword_7F838078
		dec	word ptr [eax+204h]
		mov	eax, dword_7F838078
		dec	word ptr [eax+206h]
		mov	eax, dword_7F838078
		movzx	edi, word ptr [eax+206h]
		shl	edi, 2
		add	edi, [esi]
		push	dword ptr [edi]
		call	sub_7F82F149
		mov	edx, [ebp+var_8]
		mov	dword ptr [edi], 0
		jmp	short loc_7F8135E7
; ---------------------------------------------------------------------------

loc_7F81358B:				; CODE XREF: sub_7F81339D+BDj
		test	bl, bl
		jnz	short loc_7F81359B
		mov	eax, dword_7F838078
		inc	word ptr [eax+204h]

loc_7F81359B:				; CODE XREF: sub_7F81339D+195j
					; sub_7F81339D+1A3j ...
		cmp	bx, 1
		jb	short loc_7F8135E5
		mov	eax, dword_7F838078
		mov	ecx, [eax+200h]
		cmp	[ecx+8], bx
		jbe	short loc_7F8135E5
		mov	ax, bx
		shr	ax, 6
		movzx	ecx, ax
		and	ecx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	edx, [eax+20Ch]
		mov	esi, [edx]
		mov	eax, [ecx+esi]
		xor	ecx, ecx
		mov	cx, bx
		and	ecx, 0FFh
		shl	ecx, 5
		lea	edx, [eax+ecx]
		jmp	short loc_7F8135E7
; ---------------------------------------------------------------------------

loc_7F8135E5:				; CODE XREF: sub_7F81339D+202j
					; sub_7F81339D+213j
		xor	edx, edx

loc_7F8135E7:				; CODE XREF: sub_7F81339D+E7j
					; sub_7F81339D+11Fj ...
		cmp	[ebp+var_4], 0
		jz	short loc_7F8135FC
		mov	eax, dword_7F838078
		mov	ecx, [eax+200h]
		dec	word ptr [ecx+8]

loc_7F8135FC:				; CODE XREF: sub_7F81339D+76j
					; sub_7F81339D+24Ej
		xor	ecx, ecx
		mov	eax, [ebp+arg_0]
		cmp	[ebp+var_4], ecx
		jz	short loc_7F81361A
		cmp	eax, ecx
		jz	short loc_7F81360D
		mov	[eax], cx

loc_7F81360D:				; CODE XREF: sub_7F81339D+26Bj
		mov	eax, [ebp+arg_4]
		xor	ecx, ecx
		test	eax, eax
		jz	short loc_7F81362A
		mov	[eax], ecx
		jmp	short loc_7F81362A
; ---------------------------------------------------------------------------

loc_7F81361A:				; CODE XREF: sub_7F81339D+267j
		test	eax, eax
		jz	short loc_7F813621
		mov	[eax], bx

loc_7F813621:				; CODE XREF: sub_7F81339D+27Fj
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_7F81362A
		mov	[eax], edx

loc_7F81362A:				; CODE XREF: sub_7F81339D+277j
					; sub_7F81339D+27Bj ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F81339D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F813636	proc near		; CODE XREF: sub_7F812FC1+29p
					; sub_7F82021B+41p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	eax, [esp+arg_4]
		mov	ebp, esp
		add	eax, 87h
		sub	esp, 10h
		and	al, 80h
		mov	[ebp+var_10], eax
		push	ebx
		push	esi
		lea	eax, [ebp+var_8]
		push	edi
		lea	ecx, [ebp+var_2]
		xor	esi, esi
		push	eax
		push	ecx
		call	sub_7F81339D
		mov	[ebp+var_C], eax
		cmp	eax, esi
		jnz	loc_7F81382A
		mov	eax, [ebp+var_8]
		mov	dword ptr [eax+4], 8Ch
		mov	eax, [ebp+var_8]
		mov	[eax+8], esi
		mov	eax, [ebp+var_8]
		mov	[eax+0Ch], esi
		mov	eax, [ebp+var_8]
		mov	[eax], si
		mov	eax, [ebp+var_8]
		mov	[eax+2], si
		mov	eax, [ebp+var_8]
		mov	[eax+14h], esi
		mov	eax, [ebp+var_8]
		mov	[eax+18h], esi
		mov	eax, [ebp+var_8]
		mov	[eax+10h], si
		mov	edx, dword_7F838078
		mov	ecx, [edx+200h]
		mov	dx, [ecx+0Ch]
		test	dx, dx
		jz	loc_7F813762

loc_7F8136B6:				; CODE XREF: sub_7F813636+122j
		cmp	dx, 1
		jb	short loc_7F8136F4
		cmp	[ecx+8], dx
		jbe	short loc_7F8136F4
		mov	ax, dx
		shr	ax, 6
		movzx	edi, ax
		and	edi, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	ebx, [eax+20Ch]
		mov	eax, [ebx]
		mov	ebx, [edi+eax]
		xor	edi, edi
		mov	di, dx
		and	edi, 0FFh
		shl	edi, 5
		add	edi, ebx
		jmp	short loc_7F8136F6
; ---------------------------------------------------------------------------

loc_7F8136F4:				; CODE XREF: sub_7F813636+84j
					; sub_7F813636+8Aj
		xor	edi, edi

loc_7F8136F6:				; CODE XREF: sub_7F813636+BCj
		mov	ebx, [ebp+var_10]
		cmp	[edi+14h], ebx
		jb	short loc_7F813751
		test	dx, dx
		jz	short loc_7F813751

loc_7F813703:				; CODE XREF: sub_7F813636+119j
		cmp	dx, 1
		jb	short loc_7F813741
		cmp	[ecx+8], dx
		jbe	short loc_7F813741
		mov	ax, dx
		mov	ebx, dword_7F838078
		shr	ax, 6
		mov	ebx, [ebx+20Ch]
		movzx	eax, ax
		and	eax, 3FFFFFCh
		mov	ebx, [ebx]
		mov	eax, [eax+ebx]
		xor	ebx, ebx
		mov	bx, dx
		and	ebx, 0FFh
		shl	ebx, 5
		add	eax, ebx
		jmp	short loc_7F813743
; ---------------------------------------------------------------------------

loc_7F813741:				; CODE XREF: sub_7F813636+D1j
					; sub_7F813636+D7j
		xor	eax, eax

loc_7F813743:				; CODE XREF: sub_7F813636+109j
		test	byte ptr [eax+11h], 40h
		jz	short loc_7F813760
		mov	dx, [eax]
		test	dx, dx
		jnz	short loc_7F813703

loc_7F813751:				; CODE XREF: sub_7F813636+C6j
					; sub_7F813636+CBj
		mov	dx, [edi+2]
		test	dx, dx
		jnz	loc_7F8136B6
		jmp	short loc_7F813762
; ---------------------------------------------------------------------------

loc_7F813760:				; CODE XREF: sub_7F813636+111j
		mov	esi, eax

loc_7F813762:				; CODE XREF: sub_7F813636+7Aj
					; sub_7F813636+128j
		test	esi, esi
		jz	short loc_7F8137AF
		push	esi
		call	sub_7F8131F6
		mov	edx, [esi+14h]
		sub	edx, [ebp+var_10]
		jz	loc_7F813822
		mov	eax, [ebp+var_8]
		mov	word ptr [eax+10h], 8000h
		mov	eax, [esi+18h]
		mov	ecx, [ebp+var_8]
		add	eax, [ebp+var_10]
		push	0
		mov	[ecx+18h], eax
		mov	ecx, [ebp+var_8]
		mov	[ecx+14h], edx
		mov	ecx, [ebp+var_8]
		mov	dword ptr [ecx+4], 8Fh
		push	[ebp+var_8]
		call	sub_7F813059
		mov	ebx, [ebp+var_10]
		mov	[esi+14h], ebx
		jmp	short loc_7F81382A
; ---------------------------------------------------------------------------

loc_7F8137AF:				; CODE XREF: sub_7F813636+12Ej
		cmp	[ebp+arg_8], 0
		jnz	short loc_7F8137BE
		mov	[ebp+var_C], 1001h
		jmp	short loc_7F813822
; ---------------------------------------------------------------------------

loc_7F8137BE:				; CODE XREF: sub_7F813636+17Dj
		push	[ebp+var_10]
		call	sub_7F812C72
		mov	[ebp+var_C], eax
		test	eax, eax
		jnz	short loc_7F8137F5
		mov	esi, [ebp+var_8]
		mov	eax, dword_7F838078
		mov	ebx, [ebp+var_10]
		mov	ecx, [eax+200h]
		mov	edx, [ecx+4]
		mov	[esi+18h], edx
		mov	ecx, dword_7F838078
		mov	edx, [ecx+200h]
		add	[edx+4], ebx
		jmp	short loc_7F81382A
; ---------------------------------------------------------------------------

loc_7F8137F5:				; CODE XREF: sub_7F813636+195j
		mov	eax, dword_7F838078
		cmp	dword ptr [eax+250h], 0
		jz	short loc_7F813822
		mov	ecx, [eax+200h]
		add	ecx, 8
		movzx	edi, [ebp+var_2]
		mov	ax, [ecx]
		movzx	edx, ax
		dec	edx
		cmp	edx, edi
		jg	short loc_7F813822
		dec	ax
		mov	[ecx], ax
		jmp	short loc_7F81382A
; ---------------------------------------------------------------------------

loc_7F813822:				; CODE XREF: sub_7F813636+13Cj
					; sub_7F813636+186j ...
		push	dword ptr [ebp+var_2]
		call	sub_7F813BE4

loc_7F81382A:				; CODE XREF: sub_7F813636+2Bj
					; sub_7F813636+177j ...
		xor	ecx, ecx
		cmp	[ebp+var_C], ecx
		jz	short loc_7F813838
		mov	eax, [ebp+arg_0]
		mov	[eax], ecx
		jmp	short loc_7F81384A
; ---------------------------------------------------------------------------

loc_7F813838:				; CODE XREF: sub_7F813636+1F9j
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		mov	dword ptr [esi+4], 8Dh
		mov	[esi+14h], eax
		mov	[ecx], esi

loc_7F81384A:				; CODE XREF: sub_7F813636+200j
		mov	eax, [ebp+var_C]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F813636	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F813856	proc near		; CODE XREF: sub_7F813C77+6Cp
					; sub_7F82DD49+25p
		push	ebx
		mov	eax, dword_7F838078
		mov	cx, [eax+20Ah]
		push	esi
		test	cx, cx
		push	edi
		push	ebp
		jz	loc_7F8139B3
		mov	esi, 3FFFFFCh

loc_7F813874:				; CODE XREF: sub_7F813856+157j
		cmp	cx, 1
		jb	short loc_7F8138B9
		mov	eax, dword_7F838078
		mov	edx, [eax+200h]
		cmp	[edx+8], cx
		jbe	short loc_7F8138B9
		mov	ax, cx
		shr	ax, 6
		movzx	edx, ax
		and	edx, esi
		mov	eax, dword_7F838078
		mov	ebx, [eax+20Ch]
		mov	ebp, [ebx]
		mov	eax, [edx+ebp]
		xor	edx, edx
		mov	dx, cx
		and	edx, 0FFh
		shl	edx, 5
		add	edx, eax
		jmp	short loc_7F8138BB
; ---------------------------------------------------------------------------

loc_7F8138B9:				; CODE XREF: sub_7F813856+22j
					; sub_7F813856+33j
		xor	edx, edx

loc_7F8138BB:				; CODE XREF: sub_7F813856+61j
		mov	eax, dword_7F838078
		mov	ebx, [eax+200h]
		mov	di, [ebx+8]
		lea	ebx, [edi-1]
		cmp	bx, 1
		jb	short loc_7F813909
		cmp	bx, di
		jnb	short loc_7F813909
		mov	ax, bx
		mov	ebp, dword_7F838078
		shr	ax, 6
		mov	ebp, [ebp+20Ch]
		movzx	eax, ax
		and	eax, esi
		mov	ebp, [ebp+0]
		mov	eax, [eax+ebp]
		xor	ebp, ebp
		mov	bp, bx
		and	ebp, 0FFh
		shl	ebp, 5
		lea	ebx, [eax+ebp]
		jmp	short loc_7F81390B
; ---------------------------------------------------------------------------

loc_7F813909:				; CODE XREF: sub_7F813856+7Bj
					; sub_7F813856+80j
		xor	ebx, ebx

loc_7F81390B:				; CODE XREF: sub_7F813856+B1j
		cmp	ebx, edx
		jnz	short loc_7F813922
		mov	ax, [edx+2]
		mov	ecx, dword_7F838078
		mov	[ecx+20Ah], ax
		jmp	short loc_7F813999
; ---------------------------------------------------------------------------

loc_7F813922:				; CODE XREF: sub_7F813856+B7j
		cmp	byte ptr [ebx+4], 8Ch
		jnz	short loc_7F813983
		xor	ecx, ecx
		cmp	ebx, edx
		jz	short loc_7F813979

loc_7F81392E:				; CODE XREF: sub_7F813856+121j
		mov	ecx, edx
		mov	dx, [edx+2]
		cmp	dx, 1
		jb	short loc_7F813973
		cmp	di, dx
		jbe	short loc_7F813973
		mov	ax, dx
		mov	ebp, dword_7F838078
		shr	ax, 6
		mov	ebp, [ebp+20Ch]
		movzx	eax, ax
		and	eax, 3FFFFFCh
		mov	ebp, [ebp+0]
		mov	eax, [eax+ebp]
		xor	ebp, ebp
		mov	bp, dx
		and	ebp, 0FFh
		shl	ebp, 5
		lea	edx, [eax+ebp]
		jmp	short loc_7F813975
; ---------------------------------------------------------------------------

loc_7F813973:				; CODE XREF: sub_7F813856+E2j
					; sub_7F813856+E7j
		xor	edx, edx

loc_7F813975:				; CODE XREF: sub_7F813856+11Bj
		cmp	edx, ebx
		jnz	short loc_7F81392E

loc_7F813979:				; CODE XREF: sub_7F813856+D6j
		mov	ax, [ebx+2]
		mov	[ecx+2], ax
		jmp	short loc_7F813999
; ---------------------------------------------------------------------------

loc_7F813983:				; CODE XREF: sub_7F813856+D0j
		mov	di, [edx+2]
		push	ecx
		call	sub_7F813AA8
		mov	eax, dword_7F838078
		mov	[eax+20Ah], di

loc_7F813999:				; CODE XREF: sub_7F813856+CAj
					; sub_7F813856+12Bj
		call	sub_7F8139C6
		mov	eax, dword_7F838078
		mov	cx, [eax+20Ah]
		test	cx, cx
		jnz	loc_7F813874

loc_7F8139B3:				; CODE XREF: sub_7F813856+13j
		mov	eax, dword_7F838078
		pop	ebp
		mov	word ptr [eax+20Ah], 0
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F813856	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8139C6	proc near		; CODE XREF: sub_7F813856:loc_7F813999p
		push	ebx
		mov	eax, dword_7F838078
		push	esi
		push	edi
		xor	esi, esi
		mov	ecx, [eax+200h]
		dec	word ptr [ecx+8]
		push	esi
		mov	eax, dword_7F838078
		mov	ecx, [eax+200h]
		mov	bx, [ecx+8]
		call	sub_7F8148F7
		test	bl, bl
		jnz	short loc_7F813A26
		movzx	eax, bx
		dec	eax
		mov	ecx, dword_7F838078
		shr	eax, 8
		inc	ax
		mov	[ecx+204h], ax
		mov	edx, dword_7F838078
		mov	cx, [edx+204h]
		lea	eax, [edx+23Ch]
		cmp	[eax], cx
		jb	short loc_7F813A26
		dec	cx
		mov	[eax], cx

loc_7F813A26:				; CODE XREF: sub_7F8139C6+2Bj
					; sub_7F8139C6+59j
		lea	eax, [ebx+120h]
		mov	ecx, dword_7F838078
		cmp	[ecx+208h], ax
		jb	short loc_7F813AA2
		cmp	ax, bx
		jbe	short loc_7F813AA2
		dec	word ptr [ecx+206h]
		mov	eax, dword_7F838078
		movzx	edi, word ptr [eax+206h]
		shl	edi, 2
		mov	ecx, [eax+20Ch]
		add	edi, [ecx]
		sub	word ptr [eax+208h], 100h
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_7F813A73
		push	eax
		call	sub_7F82F149

loc_7F813A73:				; CODE XREF: sub_7F8139C6+A5j
		xor	ebx, ebx
		mov	[edi], ebx
		mov	eax, dword_7F838078
		mov	edx, dword_7F838078
		mov	ax, [eax+208h]
		lea	ecx, [eax+200h]
		cmp	[edx+0Ch], cx
		jb	short loc_7F813AA2
		cmp	ax, cx
		jnb	short loc_7F813AA2
		push	ebx
		call	sub_7F812D74
		mov	esi, eax

loc_7F813AA2:				; CODE XREF: sub_7F8139C6+73j
					; sub_7F8139C6+78j ...
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F8139C6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F813AA8	proc near		; CODE XREF: sub_7F813856+132p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= word ptr  8

		push	ebp
		mov	eax, dword_7F838078
		mov	ebp, esp
		sub	esp, 8
		mov	edx, [eax+200h]
		push	ebx
		mov	cx, [edx+8]
		push	esi
		push	edi
		lea	esi, [ecx-1]
		cmp	si, 1
		jb	short loc_7F813B01
		cmp	si, cx
		jnb	short loc_7F813B01
		mov	ax, si
		shr	ax, 6
		movzx	edx, ax
		and	edx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	ebx, [eax+20Ch]
		mov	edi, [ebx]
		mov	eax, [edx+edi]
		xor	edx, edx
		mov	dx, si
		and	edx, 0FFh
		shl	edx, 5
		lea	edi, [eax+edx]
		jmp	short loc_7F813B03
; ---------------------------------------------------------------------------

loc_7F813B01:				; CODE XREF: sub_7F813AA8+1Fj
					; sub_7F813AA8+24j
		xor	edi, edi

loc_7F813B03:				; CODE XREF: sub_7F813AA8+57j
		cmp	[ebp+arg_0], 1
		jb	short loc_7F813B47
		cmp	[ebp+arg_0], cx
		jnb	short loc_7F813B47
		mov	ax, [ebp+arg_0]
		shr	ax, 6
		movzx	ecx, ax
		and	ecx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	edx, [eax+20Ch]
		mov	ebx, [edx]
		mov	eax, [ecx+ebx]
		xor	ecx, ecx
		mov	cx, [ebp+arg_0]
		and	ecx, 0FFh
		shl	ecx, 5
		add	eax, ecx
		mov	[ebp+var_8], eax
		jmp	short loc_7F813B4E
; ---------------------------------------------------------------------------

loc_7F813B47:				; CODE XREF: sub_7F813AA8+60j
					; sub_7F813AA8+66j
		mov	[ebp+var_8], 0

loc_7F813B4E:				; CODE XREF: sub_7F813AA8+9Dj
		cmp	si, [ebp+arg_0]
		jnz	short loc_7F813B58
		push	0
		jmp	short loc_7F813BC9
; ---------------------------------------------------------------------------

loc_7F813B58:				; CODE XREF: sub_7F813AA8+AAj
		push	20h
		push	edi
		push	[ebp+var_8]
		call	sub_7F82FCE0
		add	esp, 0Ch
		mov	eax, dword_7F838078
		test	byte ptr [edi+11h], 80h
		mov	ebx, [eax+200h]
		jz	short loc_7F813B86
		add	ebx, 0Ch
		lea	eax, [ebp+var_4]
		push	eax
		push	edi
		call	sub_7F813302
		jmp	short loc_7F813B95
; ---------------------------------------------------------------------------

loc_7F813B86:				; CODE XREF: sub_7F813AA8+CDj
		add	ebx, 0Ah
		lea	eax, [ebp+var_4]
		push	eax
		push	dword ptr [edi+4]
		call	sub_7F8144A4

loc_7F813B95:				; CODE XREF: sub_7F813AA8+DCj
		cmp	[ebp+var_4], 0
		jnz	short loc_7F813BA9
		cmp	[ebx], si
		jnz	short loc_7F813BBE
		mov	cx, [ebp+arg_0]
		mov	[ebx], cx
		jmp	short loc_7F813BBE
; ---------------------------------------------------------------------------

loc_7F813BA9:				; CODE XREF: sub_7F813AA8+F1j
		mov	eax, [ebp+var_4]
		add	eax, 2
		cmp	[eax], si
		jz	short loc_7F813BB7
		mov	eax, [ebp+var_4]

loc_7F813BB7:				; CODE XREF: sub_7F813AA8+10Aj
		mov	cx, [ebp+arg_0]
		mov	[eax], cx

loc_7F813BBE:				; CODE XREF: sub_7F813AA8+F6j
					; sub_7F813AA8+FFj
		push	[ebp+var_4]
		call	sub_7F8148F7
		push	[ebp+var_8]

loc_7F813BC9:				; CODE XREF: sub_7F813AA8+AEj
		call	sub_7F8148F7
		mov	dword ptr [edi+4], 8Ch
		mov	word ptr [edi+10h], 0
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F813AA8	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F813BE4	proc near		; CODE XREF: sub_7F813636+1EFp
					; sub_7F813F0D+1BBp ...

arg_0		= word ptr  4

		mov	cx, [esp+arg_0]
		push	esi
		cmp	cx, 1
		jb	short loc_7F813C34
		mov	eax, dword_7F838078
		mov	edx, [eax+200h]
		cmp	[edx+8], cx
		jbe	short loc_7F813C34
		mov	ax, cx
		shr	ax, 6
		movzx	edx, ax
		and	edx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	esi, [eax+20Ch]
		mov	eax, [esi]
		mov	eax, [edx+eax]
		xor	edx, edx
		mov	dx, cx
		and	edx, 0FFh
		shl	edx, 5
		lea	esi, [eax+edx]
		jmp	short loc_7F813C36
; ---------------------------------------------------------------------------

loc_7F813C34:				; CODE XREF: sub_7F813BE4+Aj
					; sub_7F813BE4+1Bj
		xor	esi, esi

loc_7F813C36:				; CODE XREF: sub_7F813BE4+4Ej
		xor	edx, edx
		mov	[esi], dx
		mov	eax, dword_7F838078
		mov	ax, [eax+20Ah]
		mov	[esi+2], ax
		mov	dword ptr [esi+4], 8Ch
		push	esi
		mov	[esi+1Ch], edx
		mov	[esi+14h], edx
		mov	[esi+18h], edx
		and	word ptr [esi+10h], 3
		mov	edx, dword_7F838078
		mov	[edx+20Ah], cx
		call	sub_7F8148F7
		pop	esi
		retn	4
sub_7F813BE4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F813C77	proc near		; CODE XREF: sub_7F81F3EF+55p
					; sub_7F820C0E+DBp ...

var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	edi, dword_7F838078
		add	edi, 24Ch
		cmp	[edi], esi
		jz	short loc_7F813C9C
		mov	eax, 203h
		jmp	loc_7F813F04
; ---------------------------------------------------------------------------

loc_7F813C9C:				; CODE XREF: sub_7F813C77+19j
		call	GetCurrentProcessId_0
		mov	[edi], eax
		mov	eax, dword_7F838078
		test	byte ptr [eax+265h], 40h
		jz	short loc_7F813CDF
		mov	[ebp+var_8], 4F435380h
		push	dword ptr [eax+244h]
		lea	edx, [ebp+var_8]
		push	edx
		call	sub_7F816E51
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F813EE3
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0BFFFh

loc_7F813CDF:				; CODE XREF: sub_7F813C77+38j
		mov	bx, 0
		call	sub_7F813856
		mov	edi, [ebp+arg_0]
		test	edi, edi
		jnz	short loc_7F813CFB
		mov	eax, dword_7F838078
		mov	bx, [eax+23Ch]

loc_7F813CFB:				; CODE XREF: sub_7F813C77+76j
		mov	[ebp+var_2], 0
		mov	eax, dword_7F838078
		cmp	[eax+204h], bx
		jbe	short loc_7F813D3E

loc_7F813D0F:				; CODE XREF: sub_7F813C77+C5j
		test	edi, edi
		jnz	short loc_7F813D1A
		cmp	[ebp+var_2], 0
		jnz	short loc_7F813D3E

loc_7F813D1A:				; CODE XREF: sub_7F813C77+9Aj
		lea	eax, [ebp+var_2]
		push	eax
		push	ebx
		call	sub_7F8140E0
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F813DAF
		inc	bx
		mov	eax, dword_7F838078
		cmp	[eax+204h], bx
		ja	short loc_7F813D0F

loc_7F813D3E:				; CODE XREF: sub_7F813C77+96j
					; sub_7F813C77+A1j
		test	edi, edi
		jnz	short loc_7F813D60
		mov	eax, dword_7F838078
		mov	[eax+23Ch], bx
		mov	eax, dword_7F838078
		cmp	[eax+204h], bx
		ja	loc_7F813EDF

loc_7F813D60:				; CODE XREF: sub_7F813C77+C9j
		mov	eax, dword_7F838078
		mov	di, [eax+0Eh]
		mov	ebx, [eax+200h]
		xor	di, 1
		call	sub_7F820691
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F813DBB
		push	0
		call	sub_7F82A514
		mov	eax, dword_7F838078
		or	byte ptr [eax+265h], 1
		mov	eax, dword_7F838078
		add	eax, 254h
		cmp	word ptr [eax],	0
		jnz	loc_7F813EDF
		mov	word ptr [eax],	1
		jmp	loc_7F813EDF
; ---------------------------------------------------------------------------

loc_7F813DAF:				; CODE XREF: sub_7F813C77+B1j
		push	0
		call	sub_7F814225
		jmp	loc_7F813EDF
; ---------------------------------------------------------------------------

loc_7F813DBB:				; CODE XREF: sub_7F813C77+105j
		mov	eax, dword_7F838078
		mov	[eax+0Eh], di
		movsx	eax, di
		shl	eax, 6
		mov	ecx, dword_7F838078
		add	eax, dword_7F838078
		mov	esi, ebx
		add	eax, 10h
		mov	[ecx+200h], eax
		mov	eax, dword_7F838078
		mov	ecx, 10h
		mov	edi, [eax+200h]
		mov	edx, [edi]
		rep movsd
		mov	eax, dword_7F838078
		mov	edi, [eax+200h]
		mov	[edi], edx
		mov	ecx, dword_7F83807C
		mov	eax, [ecx]
		mov	ax, [eax+10h]
		mov	cx, word_7F838084
		push	eax		; __int16
		push	ecx		; __int16
		push	dword_7F838078	; lpBuffer
		push	offset dword_7F838080 ;	int
		call	sub_7F8129CD
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F813E46
		mov	eax, dword_7F838078
		mov	[eax+200h], ebx
		mov	eax, dword_7F838078
		xor	byte ptr [eax+0Eh], 1
		jmp	loc_7F813EDF
; ---------------------------------------------------------------------------

loc_7F813E46:				; CODE XREF: sub_7F813C77+1B4j
		mov	ecx, dword_7F838080
		mov	eax, dword_7F83807C
		xor	edi, edi
		mov	edx, [eax]
		mov	[edx+4], ecx
		mov	ecx, dword_7F838078
		mov	[ecx+214h], di
		call	sub_7F8141F1
		call	ds:GetTickCount
		mov	ecx, dword_7F838078
		cmp	[ebp+arg_4], edi
		mov	[ecx+268h], eax
		jnz	short loc_7F813EA1
		mov	eax, dword_7F838078
		cmp	word ptr [eax+212h], 28h
		jbe	short loc_7F813EA1
		call	sub_7F813F0D
		mov	eax, dword_7F838078
		mov	[eax+212h], di

loc_7F813EA1:				; CODE XREF: sub_7F813C77+208j
					; sub_7F813C77+217j
		mov	ecx, dword_7F838078
		add	ecx, 21Ch
		cmp	word ptr [ecx],	6
		jnz	short loc_7F813ED1
		mov	eax, dword_7F838078
		mov	ax, [eax+23Ah]
		mov	[ecx], ax
		mov	ecx, dword_7F838078
		mov	word ptr [ecx+23Ah], 0

loc_7F813ED1:				; CODE XREF: sub_7F813C77+23Aj
		mov	eax, dword_7F838078
		mov	word ptr [eax+23Ch], 0

loc_7F813EDF:				; CODE XREF: sub_7F813C77+E3j
					; sub_7F813C77+128j ...
		test	esi, esi
		jz	short loc_7F813EF2

loc_7F813EE3:				; CODE XREF: sub_7F813C77+54j
		mov	ecx, dword_7F838078
		mov	word ptr [ecx+23Ch], 0

loc_7F813EF2:				; CODE XREF: sub_7F813C77+26Aj
		mov	ecx, dword_7F838078
		mov	eax, esi
		mov	dword ptr [ecx+24Ch], 0

loc_7F813F04:				; CODE XREF: sub_7F813C77+20j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F813C77	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F813F0D	proc near		; CODE XREF: sub_7F813C77+219p

var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	eax, dword_7F838078
		mov	ebp, esp
		sub	esp, 24h
		mov	ecx, [eax+200h]
		xor	edx, edx
		push	ebx
		push	esi
		mov	si, [ecx+0Ch]
		push	edi
		test	si, si
		lea	ecx, [ebp+var_24]
		mov	[ebp+var_C], edx
		mov	[ebp+var_8], edx
		jz	loc_7F814027

loc_7F813F39:				; CODE XREF: sub_7F813F0D+114j
		cmp	si, 1
		jb	short loc_7F813F82
		mov	eax, dword_7F838078
		mov	ebx, [eax+200h]
		cmp	[ebx+8], si
		jbe	short loc_7F813F82
		mov	ax, si
		shr	ax, 6
		movzx	edi, ax
		and	edi, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	ebx, [eax+20Ch]
		mov	eax, [ebx]
		mov	ebx, [edi+eax]
		xor	edi, edi
		mov	di, si
		and	edi, 0FFh
		shl	edi, 5
		add	edi, ebx
		jmp	short loc_7F813F84
; ---------------------------------------------------------------------------

loc_7F813F82:				; CODE XREF: sub_7F813F0D+30j
					; sub_7F813F0D+41j
		xor	edi, edi

loc_7F813F84:				; CODE XREF: sub_7F813F0D+73j
		test	si, si
		jz	loc_7F81401A

loc_7F813F8D:				; CODE XREF: sub_7F813F0D+107j
		cmp	si, 1
		jb	short loc_7F813FD7
		mov	eax, dword_7F838078
		mov	ebx, [eax+200h]
		cmp	[ebx+8], si
		jbe	short loc_7F813FD7
		mov	ax, si
		mov	ebx, dword_7F838078
		shr	ax, 6
		mov	ebx, [ebx+20Ch]
		movzx	eax, ax
		and	eax, 3FFFFFCh
		mov	ebx, [ebx]
		mov	eax, [eax+ebx]
		xor	ebx, ebx
		mov	bx, si
		and	ebx, 0FFh
		shl	ebx, 5
		lea	esi, [eax+ebx]
		jmp	short loc_7F813FD9
; ---------------------------------------------------------------------------

loc_7F813FD7:				; CODE XREF: sub_7F813F0D+84j
					; sub_7F813F0D+95j
		xor	esi, esi

loc_7F813FD9:				; CODE XREF: sub_7F813F0D+C8j
		mov	ax, [esi+10h]
		and	ah, 0C0h
		cmp	ah, 80h
		jnz	short loc_7F81400E
		mov	eax, [esi+18h]
		cmp	[ecx+18h], eax
		jbe	short loc_7F813FF0
		lea	ecx, [ebp+var_24]

loc_7F813FF0:				; CODE XREF: sub_7F813F0D+DEj
		test	ecx, ecx
		jz	short loc_7F814003

loc_7F813FF4:				; CODE XREF: sub_7F813F0D+F4j
		cmp	[ecx+18h], eax
		jnb	short loc_7F814003
		mov	[ebp+var_4], ecx
		mov	ecx, [ecx+1Ch]
		test	ecx, ecx
		jnz	short loc_7F813FF4

loc_7F814003:				; CODE XREF: sub_7F813F0D+E5j
					; sub_7F813F0D+EAj
		mov	eax, [ebp+var_4]
		mov	[eax+1Ch], esi
		mov	[esi+1Ch], ecx
		mov	ecx, esi

loc_7F81400E:				; CODE XREF: sub_7F813F0D+D6j
		mov	si, [esi]
		test	si, si
		jnz	loc_7F813F8D

loc_7F81401A:				; CODE XREF: sub_7F813F0D+7Aj
		mov	si, [edi+2]
		test	si, si
		jnz	loc_7F813F39

loc_7F814027:				; CODE XREF: sub_7F813F0D+26j
		mov	esi, [ebp+var_8]
		test	esi, esi
		jz	loc_7F8140D9

loc_7F814032:				; CODE XREF: sub_7F813F0D+1C6j
		test	byte ptr [esi+11h], 80h
		mov	edi, [esi+1Ch]
		jnz	short loc_7F814052
		cmp	byte ptr [esi+4], 8Ch
		jz	short loc_7F814052
		mov	eax, [esi+14h]
		and	eax, 7FFFFFFFh
		add	eax, 87h
		and	al, 80h
		jmp	short loc_7F814055
; ---------------------------------------------------------------------------

loc_7F814052:				; CODE XREF: sub_7F813F0D+12Cj
					; sub_7F813F0D+132j
		mov	eax, [esi+14h]

loc_7F814055:				; CODE XREF: sub_7F813F0D+143j
		test	edi, edi
		jz	short loc_7F81407E
		test	byte ptr [edi+11h], 80h
		jnz	short loc_7F814079
		cmp	byte ptr [edi+4], 8Ch
		jz	short loc_7F814079
		mov	ebx, [edi+14h]
		and	ebx, 7FFFFFFFh
		add	ebx, 87h
		and	bl, 80h
		jmp	short loc_7F814080
; ---------------------------------------------------------------------------

loc_7F814079:				; CODE XREF: sub_7F813F0D+150j
					; sub_7F813F0D+156j
		mov	ebx, [edi+14h]
		jmp	short loc_7F814080
; ---------------------------------------------------------------------------

loc_7F81407E:				; CODE XREF: sub_7F813F0D+14Aj
		xor	ebx, ebx

loc_7F814080:				; CODE XREF: sub_7F813F0D+16Aj
					; sub_7F813F0D+16Fj
		test	edi, edi
		jz	short loc_7F8140D9
		mov	ecx, [esi+18h]
		add	ecx, eax
		cmp	ecx, [edi+18h]
		jnz	short loc_7F8140CF
		mov	eax, [edi+1Ch]
		push	esi
		mov	[ebp+var_4], eax
		call	sub_7F8131F6
		test	eax, eax
		jz	short loc_7F8140D1
		push	edi
		call	sub_7F8131F6
		test	eax, eax
		jnz	short loc_7F8140AD
		xor	ebx, ebx
		mov	[ebp+var_4], edi

loc_7F8140AD:				; CODE XREF: sub_7F813F0D+199j
		add	[esi+14h], ebx
		mov	ax, [esi+10h]
		push	eax
		push	esi
		call	sub_7F813059
		mov	ecx, [ebp+var_4]
		push	edi
		mov	[esi+1Ch], ecx
		call	sub_7F812F73
		push	eax
		call	sub_7F813BE4
		jmp	short loc_7F8140D1
; ---------------------------------------------------------------------------

loc_7F8140CF:				; CODE XREF: sub_7F813F0D+17Fj
		mov	esi, edi

loc_7F8140D1:				; CODE XREF: sub_7F813F0D+18Fj
					; sub_7F813F0D+1C0j
		test	esi, esi
		jnz	loc_7F814032

loc_7F8140D9:				; CODE XREF: sub_7F813F0D+11Fj
					; sub_7F813F0D+175j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_7F813F0D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8140E0	proc near		; CODE XREF: sub_7F813C77+A8p

var_C		= dword	ptr -0Ch
var_6		= word ptr -6
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= word ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		mov	ecx, dword_7F838078
		mov	cx, [ecx+0Eh]
		sub	esp, 0Ch
		mov	dx, 1
		xor	cl, 1
		push	ebx
		mov	[ebp+var_C], eax
		push	esi
		push	edi
		mov	si, 100h
		mov	ebx, [ebp+arg_4]
		shl	dx, cl
		mov	[ebp+var_2], dx
		movsx	edi, cx
		mov	[ebx], ax
		shl	edi, 6
		mov	ecx, dword_7F838078
		movzx	edx, [ebp+arg_0]
		mov	ecx, [edi+ecx+10h]
		mov	edi, edx
		shl	edi, 0Dh
		lea	ebx, [ecx+edi]
		mov	ecx, dword_7F838078
		mov	edi, [ecx+20Ch]
		mov	ecx, [edi]
		mov	edi, [ecx+edx*4]
		mov	ecx, dword_7F838078
		movzx	ecx, word ptr [ecx+204h]
		sub	ecx, edx
		cmp	ecx, 1
		jnz	short loc_7F81416C
		mov	ecx, dword_7F838078
		mov	edx, [ecx+200h]
		mov	si, [edx+8]
		and	si, 0FFh
		jnz	short loc_7F81416C
		mov	si, 100h

loc_7F81416C:				; CODE XREF: sub_7F8140E0+6Fj
					; sub_7F8140E0+86j
		test	si, si
		mov	edx, edi
		jz	short loc_7F8141BD

loc_7F814173:				; CODE XREF: sub_7F8140E0+DBj
		mov	cx, [edx+10h]
		test	[ebp+var_2], cx
		jz	short loc_7F8141AF
		cmp	[ebp+var_C], 0
		jnz	short loc_7F814195
		mov	[ebp+var_C], 1
		mov	ecx, edx
		sub	ecx, edi
		shr	ecx, 9
		mov	[ebp+var_6], cx

loc_7F814195:				; CODE XREF: sub_7F8140E0+A1j
		mov	ecx, edx
		sub	ecx, edi
		shr	ecx, 9
		mov	[ebp+var_4], cx
		mov	cx, [ebp+var_2]
		not	cx
		and	cx, [edx+10h]
		mov	[edx+10h], cx

loc_7F8141AF:				; CODE XREF: sub_7F8140E0+9Bj
		or	byte ptr [edx+11h], 10h
		dec	si
		add	edx, 20h
		test	si, si
		jnz	short loc_7F814173

loc_7F8141BD:				; CODE XREF: sub_7F8140E0+91j
		cmp	[ebp+var_C], 0
		jz	short loc_7F8141E8
		movsx	ecx, [ebp+var_6]
		movsx	eax, [ebp+var_4]
		sub	eax, ecx
		mov	edx, [ebp+arg_4]
		mov	word ptr [edx],	1
		inc	eax
		shl	eax, 9
		shl	ecx, 9
		push	eax		; nNumberOfBytesToRead
		add	ebx, ecx
		add	ecx, edi
		push	ebx		; lDistanceToMove
		push	ecx		; int
		call	sub_7F812653

loc_7F8141E8:				; CODE XREF: sub_7F8140E0+E1j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F8140E0	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8141F1	proc near		; CODE XREF: sub_7F813C77+1EEp
		mov	eax, dword_7F838078
		mov	ecx, [eax+20Ch]
		mov	edx, [ecx]
		mov	ecx, [edx]
		add	edx, 4
		test	ecx, ecx
		jz	short locret_7F814224

loc_7F814207:				; CODE XREF: sub_7F8141F1+31j
		mov	ax, 100h

loc_7F81420B:				; CODE XREF: sub_7F8141F1+28j
		dec	ax
		add	ecx, 20h
		and	word ptr [ecx-10h], 0BFFFh
		test	ax, ax
		jnz	short loc_7F81420B
		mov	ecx, [edx]
		add	edx, 4
		test	ecx, ecx
		jnz	short loc_7F814207

locret_7F814224:			; CODE XREF: sub_7F8141F1+14j
		retn
sub_7F8141F1	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F814225	proc near		; CODE XREF: sub_7F813C77+13Ap

arg_0		= dword	ptr  4

		mov	dx, 1
		push	esi
		mov	eax, dword_7F838078
		mov	cx, [eax+0Eh]
		xor	cl, dl
		shl	dx, cl
		or	dh, 40h
		mov	ecx, [eax+20Ch]
		mov	esi, [ecx]
		mov	ecx, [esi]
		add	esi, 4
		test	ecx, ecx
		jz	short loc_7F814267

loc_7F81424C:				; CODE XREF: sub_7F814225+40j
		mov	ax, 100h

loc_7F814250:				; CODE XREF: sub_7F814225+37j
		dec	ax
		or	[ecx+10h], dx
		add	ecx, 20h
		test	ax, ax
		jnz	short loc_7F814250
		mov	ecx, [esi]
		add	esi, 4
		test	ecx, ecx
		jnz	short loc_7F81424C

loc_7F814267:				; CODE XREF: sub_7F814225+25j
		mov	eax, dword_7F838078
		mov	ecx, [eax+200h]
		mov	dx, [ecx+8]
		xor	ecx, ecx
		mov	[eax+214h], dx
		mov	eax, dword_7F838078
		mov	[eax+23Ch], cx
		mov	eax, dword_7F838078
		add	eax, 254h
		cmp	[eax], cx
		jnz	short loc_7F8142A7
		cmp	[esp+4+arg_0], 1
		sbb	ecx, ecx
		add	ecx, 3
		mov	[eax], cx

loc_7F8142A7:				; CODE XREF: sub_7F814225+73j
		pop	esi
		retn	4
sub_7F814225	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8142AB	proc near		; CODE XREF: sub_7F812FC1+1Bp
					; sub_7F81453F+88p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	edi
		mov	esi, [esp+8+arg_0]
		and	esi, 0FFh

loc_7F8142B7:				; CODE XREF: sub_7F8142AB+23j
		call	sub_7F82AC0C
		push	[esp+8+arg_8]
		and	al, 0
		or	eax, esi
		push	eax
		mov	edi, eax
		call	sub_7F8144A4
		test	eax, eax
		jnz	short loc_7F8142B7
		mov	eax, [esp+8+arg_4]
		mov	[eax], edi
		pop	edi
		pop	esi
		retn	0Ch
sub_7F8142AB	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8142DB	proc near		; CODE XREF: sub_7F8147DD+38p
					; sub_7F814C1A+30p ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		push	ebp
		push	esi
		call	sub_7F812F73
		mov	bx, ax
		mov	di, [esi+2]
		mov	cx, [esi]
		test	cx, cx
		jz	loc_7F8143B9
		test	di, di
		jnz	short loc_7F814309
		mov	di, cx
		jmp	loc_7F8143B9
; ---------------------------------------------------------------------------

loc_7F814309:				; CODE XREF: sub_7F8142DB+24j
		cmp	di, 1
		jb	short loc_7F814353
		mov	eax, dword_7F838078
		mov	edx, [eax+200h]
		cmp	[edx+8], di
		jbe	short loc_7F814353
		mov	ax, di
		shr	ax, 6
		movzx	edx, ax
		and	edx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	ebp, [eax+20Ch]
		mov	eax, [ebp+0]
		mov	eax, [edx+eax]
		xor	edx, edx
		mov	dx, di
		and	edx, 0FFh
		shl	edx, 5
		add	eax, edx
		jmp	short loc_7F814355
; ---------------------------------------------------------------------------

loc_7F814353:				; CODE XREF: sub_7F8142DB+32j
					; sub_7F8142DB+43j
		xor	eax, eax

loc_7F814355:				; CODE XREF: sub_7F8142DB+76j
		cmp	word ptr [eax],	0
		jz	short loc_7F8143B0

loc_7F81435B:				; CODE XREF: sub_7F8142DB+D3j
		mov	dx, [eax]
		cmp	dx, 1
		jb	short loc_7F8143A8
		mov	eax, dword_7F838078
		mov	ebp, [eax+200h]
		cmp	[ebp+8], dx
		jbe	short loc_7F8143A8
		mov	ax, dx
		mov	ebp, dword_7F838078
		shr	ax, 6
		mov	ebp, [ebp+20Ch]
		movzx	eax, ax
		and	eax, 3FFFFFCh
		mov	ebp, [ebp+0]
		mov	eax, [eax+ebp]
		xor	ebp, ebp
		mov	bp, dx
		and	ebp, 0FFh
		shl	ebp, 5
		add	eax, ebp
		jmp	short loc_7F8143AA
; ---------------------------------------------------------------------------

loc_7F8143A8:				; CODE XREF: sub_7F8142DB+87j
					; sub_7F8142DB+98j
		xor	eax, eax

loc_7F8143AA:				; CODE XREF: sub_7F8142DB+CBj
		cmp	word ptr [eax],	0
		jnz	short loc_7F81435B

loc_7F8143B0:				; CODE XREF: sub_7F8142DB+7Ej
		mov	[eax], cx
		push	eax
		call	sub_7F8148F7

loc_7F8143B9:				; CODE XREF: sub_7F8142DB+1Bj
					; sub_7F8142DB+29j
		mov	eax, dword_7F838078
		xor	ecx, ecx
		mov	edx, [eax+200h]
		mov	bp, [edx+0Ah]
		cmp	bx, bp
		jz	short loc_7F814425

loc_7F8143CF:				; CODE XREF: sub_7F8142DB+148j
		cmp	bp, 1
		jb	short loc_7F81440D
		cmp	[edx+8], bp
		jbe	short loc_7F81440D
		mov	ax, bp
		shr	ax, 6
		movzx	ecx, ax
		and	ecx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	eax, [eax+20Ch]
		mov	eax, [eax]
		mov	eax, [ecx+eax]
		xor	ecx, ecx
		mov	cx, bp
		and	ecx, 0FFh
		shl	ecx, 5
		add	ecx, eax
		jmp	short loc_7F81440F
; ---------------------------------------------------------------------------

loc_7F81440D:				; CODE XREF: sub_7F8142DB+F8j
					; sub_7F8142DB+FEj
		xor	ecx, ecx

loc_7F81440F:				; CODE XREF: sub_7F8142DB+130j
		mov	eax, [esi+4]
		cmp	[ecx+4], eax
		ja	short loc_7F81441D
		mov	bp, [ecx+2]
		jmp	short loc_7F814420
; ---------------------------------------------------------------------------

loc_7F81441D:				; CODE XREF: sub_7F8142DB+13Aj
		mov	bp, [ecx]

loc_7F814420:				; CODE XREF: sub_7F8142DB+140j
		cmp	bx, bp
		jnz	short loc_7F8143CF

loc_7F814425:				; CODE XREF: sub_7F8142DB+F2j
		test	ecx, ecx
		jnz	short loc_7F81442F
		mov	[edx+0Ah], di
		jmp	short loc_7F814440
; ---------------------------------------------------------------------------

loc_7F81442F:				; CODE XREF: sub_7F8142DB+14Cj
		mov	eax, [ecx+4]
		cmp	[esi+4], eax
		jb	short loc_7F81443D
		mov	[ecx+2], di
		jmp	short loc_7F814440
; ---------------------------------------------------------------------------

loc_7F81443D:				; CODE XREF: sub_7F8142DB+15Aj
		mov	[ecx], di

loc_7F814440:				; CODE XREF: sub_7F8142DB+152j
					; sub_7F8142DB+160j
		push	ecx
		call	sub_7F8148F7
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_7F8142DB	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81444D	proc near		; CODE XREF: sub_7F812FC1+66p
					; sub_7F81453F+103p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	edi
		mov	esi, [esp+8+arg_4]
		push	esi
		call	sub_7F812F73
		xor	edx, edx
		mov	ecx, [esp+8+arg_0]
		mov	[esi+2], dx
		mov	edi, [esp+8+arg_8]
		mov	[esi], dx
		mov	[esi+4], ecx
		cmp	edi, edx
		jnz	short loc_7F814483
		mov	ecx, dword_7F838078
		mov	edx, [ecx+200h]
		mov	[edx+0Ah], ax
		jmp	short loc_7F814491
; ---------------------------------------------------------------------------

loc_7F814483:				; CODE XREF: sub_7F81444D+22j
		cmp	[edi+4], ecx
		jnb	short loc_7F81448E
		mov	[edi+2], ax
		jmp	short loc_7F814491
; ---------------------------------------------------------------------------

loc_7F81448E:				; CODE XREF: sub_7F81444D+39j
		mov	[edi], ax

loc_7F814491:				; CODE XREF: sub_7F81444D+34j
					; sub_7F81444D+3Fj
		push	edi
		call	sub_7F8148F7
		push	esi
		call	sub_7F8148F7
		xor	eax, eax
		pop	edi
		pop	esi
		retn	0Ch
sub_7F81444D	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8144A4	proc near		; CODE XREF: sub_7F812D74+8Cp
					; sub_7F812FC1+76p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	eax, dword_7F838078
		push	edi
		xor	edx, edx
		mov	esi, [eax+200h]
		xor	edi, edi
		mov	cx, [esi+0Ah]
		test	cx, cx
		jz	short loc_7F814522

loc_7F8144BE:				; CODE XREF: sub_7F8144A4+77j
		cmp	cx, 1
		jb	short loc_7F8144FC
		cmp	[esi+8], cx
		jbe	short loc_7F8144FC
		mov	ax, cx
		shr	ax, 6
		movzx	edi, ax
		and	edi, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	eax, [eax+20Ch]
		mov	eax, [eax]
		mov	eax, [edi+eax]
		xor	edi, edi
		mov	di, cx
		and	edi, 0FFh
		shl	edi, 5
		add	edi, eax
		jmp	short loc_7F8144FE
; ---------------------------------------------------------------------------

loc_7F8144FC:				; CODE XREF: sub_7F8144A4+1Ej
					; sub_7F8144A4+24j
		xor	edi, edi

loc_7F8144FE:				; CODE XREF: sub_7F8144A4+56j
		test	edi, edi
		jz	short loc_7F81451F
		mov	eax, [edi+4]
		cmp	[esp+8+arg_0], eax
		jbe	short loc_7F814511
		mov	cx, [edi+2]
		jmp	short loc_7F814516
; ---------------------------------------------------------------------------

loc_7F814511:				; CODE XREF: sub_7F8144A4+65j
		jnb	short loc_7F814522
		mov	cx, [edi]

loc_7F814516:				; CODE XREF: sub_7F8144A4+6Bj
		test	cx, cx
		mov	edx, edi
		jnz	short loc_7F8144BE
		jmp	short loc_7F814522
; ---------------------------------------------------------------------------

loc_7F81451F:				; CODE XREF: sub_7F8144A4+5Cj
		xor	cx, cx

loc_7F814522:				; CODE XREF: sub_7F8144A4+18j
					; sub_7F8144A4:loc_7F814511j ...
		mov	eax, [esp+8+arg_4]
		test	eax, eax
		jz	short loc_7F81452C
		mov	[eax], edx

loc_7F81452C:				; CODE XREF: sub_7F8144A4+84j
		cmp	cx, 1
		mov	eax, 0
		adc	eax, 0FFFFFFFFh
		and	eax, edi
		pop	edi
		pop	esi
		retn	8
sub_7F8144A4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81453F	proc near		; CODE XREF: sub_7F814687+22p
					; sub_7F82BD62+85p ...

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
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		cmp	[ebp+arg_4], edi
		jz	short loc_7F814554
		mov	ecx, [ebp+arg_4]
		mov	[ecx], edi

loc_7F814554:				; CODE XREF: sub_7F81453F+Ej
		mov	ebx, [ebp+arg_8]
		mov	eax, [ebx]
		test	eax, 0FFFFFF00h
		jz	short loc_7F814576
		push	0
		push	eax
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F814576
		mov	eax, 100Ah
		jmp	loc_7F81467E
; ---------------------------------------------------------------------------

loc_7F814576:				; CODE XREF: sub_7F81453F+1Fj
					; sub_7F81453F+2Bj
		mov	esi, [ebp+arg_0]
		mov	ax, [esi+10h]
		test	al, 10h
		jz	short loc_7F81458B
		push	esi
		call	sub_7F81470D
		mov	esi, eax
		jmp	short loc_7F81459D
; ---------------------------------------------------------------------------

loc_7F81458B:				; CODE XREF: sub_7F81453F+40j
		test	al, 20h
		jnz	short loc_7F81459B
		cmp	word ptr [esi+1Eh], 0
		mov	edi, 1
		ja	short loc_7F81459D

loc_7F81459B:				; CODE XREF: sub_7F81453F+4Ej
		xor	edi, edi

loc_7F81459D:				; CODE XREF: sub_7F81453F+4Aj
					; sub_7F81453F+5Aj
		test	edi, edi
		jz	short loc_7F8145B9
		push	esi
		call	sub_7F814687
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81467C
		push	esi
		call	sub_7F81470D
		mov	esi, eax

loc_7F8145B9:				; CODE XREF: sub_7F81453F+60j
		test	dword ptr [ebx], 0FFFFFF00h
		jnz	short loc_7F8145CC
		push	0
		push	ebx
		push	dword ptr [esi+4]
		call	sub_7F8142AB

loc_7F8145CC:				; CODE XREF: sub_7F81453F+80j
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		call	sub_7F81339D
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81467C
		mov	ax, [esi+12h]
		mov	ecx, [ebp+var_4]
		mov	[ecx+12h], ax
		mov	ecx, [ebp+var_4]
		mov	edx, [esi+8]
		push	esi
		mov	[ecx+8], edx
		mov	ecx, [ebp+var_4]
		mov	eax, [esi+0Ch]
		mov	[ecx+0Ch], eax
		call	sub_7F812F73
		mov	ecx, [ebp+var_4]
		mov	[ecx+1Ch], ax
		mov	ecx, [ebp+var_4]
		mov	word ptr [ecx+1Eh], 1
		mov	ecx, [ebp+var_4]
		mov	word ptr [ecx+10h], 10h
		mov	eax, [esi+14h]
		mov	ecx, [ebp+var_4]
		mov	[ecx+14h], eax
		mov	ecx, [ebp+var_4]
		mov	edx, [esi+4]
		lea	eax, [ebp+var_8]
		push	eax
		mov	[ecx+18h], edx
		push	dword ptr [ebx]
		call	sub_7F8144A4
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	dword ptr [ebx]
		call	sub_7F81444D
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F81467C
		mov	eax, [ebp+var_4]
		push	esi
		and	word ptr [eax+10h], 0DFFFh
		or	byte ptr [esi+10h], 20h
		inc	word ptr [esi+1Eh]
		call	sub_7F8148F7
		and	word ptr [esi+10h], 0DFFFh
		test	edi, edi
		jnz	short loc_7F81467C
		cmp	[ebp+arg_4], 0
		jz	short loc_7F81467C
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax

loc_7F81467C:				; CODE XREF: sub_7F81453F+6Cj
					; sub_7F81453F+9Cj ...
		mov	eax, edi

loc_7F81467E:				; CODE XREF: sub_7F81453F+32j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F81453F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F814687	proc near		; CODE XREF: sub_7F81453F+63p

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, 0Ch
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	esi, [ebp+arg_0]
		lea	eax, [ebp+var_C]
		mov	di, [esi+1Eh]
		push	eax
		mov	[esi+1Eh], bx
		lea	ecx, [ebp+var_4]
		push	ecx
		mov	[ebp+var_C], ebx
		push	esi
		call	sub_7F81453F
		mov	[ebp+var_8], eax
		cmp	eax, ebx
		jnz	short loc_7F814704
		push	[ebp+var_4]
		push	esi
		mov	[esi+1Eh], di
		call	sub_7F814AC2
		mov	ecx, [ebp+var_4]
		mov	eax, [ecx+14h]
		and	eax, 7FFFFFFFh
		push	eax
		push	dword ptr [ecx+4]
		push	ecx
		call	sub_7F814ECA
		mov	ecx, [ebp+var_4]
		and	word ptr [esi+10h], 0FFDFh
		or	byte ptr [ecx+10h], 20h
		mov	dx, [esi+1Ch]
		mov	ecx, [ebp+var_4]
		mov	eax, [ecx+4]
		mov	[esi+18h], eax
		mov	[ecx+1Ch], dx
		push	[ebp+var_4]
		call	sub_7F812F73
		mov	[esi+1Ch], ax
		mov	eax, [ebp+var_8]

loc_7F814704:				; CODE XREF: sub_7F814687+2Cj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F814687	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81470D	proc near		; CODE XREF: sub_7F81453F+43p
					; sub_7F81453F+73p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, [esp+8+arg_0]
		test	byte ptr [esi+10h], 10h
		jnz	short loc_7F81471D
		mov	eax, esi
		jmp	short loc_7F814799
; ---------------------------------------------------------------------------

loc_7F81471D:				; CODE XREF: sub_7F81470D+Aj
		mov	cx, [esi+1Ch]
		cmp	cx, 1
		jb	short loc_7F814781
		mov	eax, dword_7F838078
		mov	edx, [eax+200h]
		mov	ax, [edx+8]
		cmp	ax, cx
		jbe	short loc_7F814781
		cmp	cx, 1
		jb	short loc_7F814777
		cmp	ax, cx
		jbe	short loc_7F814777
		mov	ax, cx
		shr	ax, 6
		movzx	edx, ax
		and	edx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	edi, [eax+20Ch]
		mov	eax, [edi]
		mov	edx, [edx+eax]
		xor	eax, eax
		mov	ax, cx
		and	eax, 0FFh
		shl	eax, 5
		add	eax, edx
		jmp	short loc_7F814779
; ---------------------------------------------------------------------------

loc_7F814777:				; CODE XREF: sub_7F81470D+32j
					; sub_7F81470D+37j
		xor	eax, eax

loc_7F814779:				; CODE XREF: sub_7F81470D+68j
		mov	ecx, [esi+18h]
		cmp	[eax+4], ecx
		jz	short loc_7F814799

loc_7F814781:				; CODE XREF: sub_7F81470D+18j
					; sub_7F81470D+2Cj
		push	0
		push	dword ptr [esi+18h]
		call	sub_7F8144A4
		push	eax
		mov	edi, eax
		call	sub_7F812F73
		mov	[esi+1Ch], ax
		mov	eax, edi

loc_7F814799:				; CODE XREF: sub_7F81470D+Ej
					; sub_7F81470D+72j
		pop	edi
		pop	esi
		retn	4
sub_7F81470D	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81479E	proc near		; CODE XREF: sub_7F810875+6Bp
					; sub_7F81C33C+D5p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		xor	esi, esi
		push	esi
		push	[esp+8+arg_0]
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F8147D2
		cmp	[eax+14h], esi
		jl	short loc_7F8147CA
		cmp	[esp+4+arg_4], esi
		jz	short loc_7F8147CA
		mov	word ptr [eax+1Eh], 1
		test	byte ptr [eax+10h], 10h
		jnz	short loc_7F8147CA
		mov	[eax+1Ch], si

loc_7F8147CA:				; CODE XREF: sub_7F81479E+14j
					; sub_7F81479E+1Aj ...
		push	eax
		call	sub_7F8147DD
		jmp	short loc_7F8147D7
; ---------------------------------------------------------------------------

loc_7F8147D2:				; CODE XREF: sub_7F81479E+Fj
		mov	esi, 1001h

loc_7F8147D7:				; CODE XREF: sub_7F81479E+32j
		mov	eax, esi
		pop	esi
		retn	8
sub_7F81479E	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8147DD	proc near		; CODE XREF: sub_7F812D74+C7p
					; sub_7F81479E+2Dp ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, [esp+8+arg_0]

loc_7F8147E3:				; CODE XREF: sub_7F8147DD+59j
		cmp	dword ptr [esi+14h], 0
		jl	short loc_7F8147F0
		cmp	word ptr [esi+1Eh], 1
		ja	short loc_7F814838

loc_7F8147F0:				; CODE XREF: sub_7F8147DD+Aj
		mov	ax, [esi+10h]
		and	ax, 10h
		jnz	short loc_7F814808
		cmp	word ptr [esi+1Ch], 0
		jbe	short loc_7F814808
		cmp	word ptr [esi+1Eh], 0
		ja	short loc_7F814838

loc_7F814808:				; CODE XREF: sub_7F8147DD+1Bj
					; sub_7F8147DD+22j
		test	ax, ax
		jnz	short loc_7F814814
		cmp	word ptr [esi+1Ch], 1
		jnb	short loc_7F814863

loc_7F814814:				; CODE XREF: sub_7F8147DD+2Ej
		push	esi
		call	sub_7F8142DB
		test	byte ptr [esi+10h], 10h
		jz	short loc_7F814844
		push	esi
		call	sub_7F81470D
		mov	edi, eax
		push	esi
		mov	esi, edi
		call	sub_7F812F73
		push	eax
		call	sub_7F813BE4
		jmp	short loc_7F8147E3
; ---------------------------------------------------------------------------

loc_7F814838:				; CODE XREF: sub_7F8147DD+11j
					; sub_7F8147DD+29j
		dec	word ptr [esi+1Eh]
		push	esi
		call	sub_7F8148F7
		jmp	short loc_7F814863
; ---------------------------------------------------------------------------

loc_7F814844:				; CODE XREF: sub_7F8147DD+41j
		mov	ax, [esi+10h]
		and	ax, 1000h
		cmp	ax, 1
		mov	eax, 0
		adc	eax, 0FFFFFFFFh
		and	ax, 4000h
		push	eax
		push	esi
		call	sub_7F813059

loc_7F814863:				; CODE XREF: sub_7F8147DD+35j
					; sub_7F8147DD+65j
		pop	edi
		pop	esi
		retn	4
sub_7F8147DD	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F814868	proc near		; CODE XREF: sub_7F824774+83p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	ebp
		mov	edi, 1001h
		push	ebx
		push	[esp+14h+arg_0]
		call	sub_7F8144A4
		mov	esi, eax
		push	ebx
		push	[esp+14h+arg_4]
		call	sub_7F8144A4
		mov	ebp, eax
		test	esi, esi
		jz	short loc_7F8148EE
		test	ebp, ebp
		jz	short loc_7F8148EE
		mov	eax, [ebp+14h]
		and	eax, 7FFFFFFFh
		push	eax
		push	[esp+14h+arg_0]
		push	ebp
		call	sub_7F814ECA
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F8148EE
		push	ebp
		push	esi
		call	sub_7F814AC2
		test	byte ptr [ebp+10h], 10h
		jz	short loc_7F8148C5
		mov	ax, [esi+1Ch]
		mov	[ebp+1Ch], ax
		mov	[esi+1Ch], bx

loc_7F8148C5:				; CODE XREF: sub_7F814868+4Fj
		xor	eax, eax
		cmp	[ebp+14h], eax
		jl	short loc_7F8148DC
		mov	word ptr [ebp+1Eh], 1
		test	byte ptr [ebp+10h], 10h
		jnz	short loc_7F8148DC
		mov	[ebp+1Ch], ax

loc_7F8148DC:				; CODE XREF: sub_7F814868+62j
					; sub_7F814868+6Ej
		push	ebp
		call	sub_7F8147DD
		cmp	dword ptr [esi+14h], 0
		jge	short loc_7F8148EE
		push	esi
		call	sub_7F814971

loc_7F8148EE:				; CODE XREF: sub_7F814868+25j
					; sub_7F814868+29j ...
		mov	eax, edi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F814868	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8148F7	proc near		; CODE XREF: sub_7F813059:loc_7F8131E1p
					; sub_7F813059+18Ep ...

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		push	ebx
		test	edx, edx
		jz	short loc_7F814954
		lea	ecx, [edx+10h]
		mov	ax, [ecx]
		mov	bx, ax
		and	bl, 3
		cmp	bl, 3
		jz	short loc_7F814923
		or	al, 3
		mov	[ecx], ax
		mov	ebx, dword_7F838078
		inc	word ptr [ebx+214h]

loc_7F814923:				; CODE XREF: sub_7F8148F7+18j
		and	word ptr [ecx],	0DFFFh
		mov	eax, dword_7F838078
		cmp	word ptr [eax+21Ch], 6
		jnz	short loc_7F81496D
		push	edx
		call	sub_7F812F73
		shr	ax, 8
		mov	ecx, dword_7F838078
		add	ecx, 23Ch
		cmp	[ecx], ax
		jle	short loc_7F81496D
		jmp	short loc_7F81496A
; ---------------------------------------------------------------------------

loc_7F814954:				; CODE XREF: sub_7F8148F7+7j
		mov	ecx, dword_7F838078
		add	ecx, 214h
		mov	ax, [ecx]
		test	ax, ax
		jnz	short loc_7F81496D
		inc	ax

loc_7F81496A:				; CODE XREF: sub_7F8148F7+5Bj
		mov	[ecx], ax

loc_7F81496D:				; CODE XREF: sub_7F8148F7+3Ej
					; sub_7F8148F7+59j ...
		pop	ebx
		retn	4
sub_7F8148F7	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F814971	proc near		; CODE XREF: sub_7F814868+81p
					; sub_7F816E51+C5p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	word ptr [eax+1Eh], 0
		and	byte ptr [eax+17h], 7Fh
		push	eax
		call	sub_7F8148F7
		retn	4
sub_7F814971	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F814988(int, int, DWORD nNumberOfBytesToRead, int,	int)
sub_7F814988	proc near		; CODE XREF: sub_7F816E51+6Ap

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
nNumberOfBytesToRead= dword ptr	 10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		lea	eax, [ebp+var_4]
		push	esi
		mov	ebx, [ebp+arg_0]
		push	edi
		push	eax
		push	[ebp+nNumberOfBytesToRead]
		push	ebx
		xor	edi, edi
		mov	[ebp+var_4], edi
		call	sub_7F812FC1
		cmp	eax, edi
		mov	esi, eax
		jnz	loc_7F814A57
		mov	edi, [ebp+nNumberOfBytesToRead]
		mov	eax, 1FF8h
		cmp	edi, eax
		jb	short loc_7F8149BE
		mov	edi, eax

loc_7F8149BE:				; CODE XREF: sub_7F814988+32j
		mov	ecx, [ebp+arg_C]
		test	ecx, ecx
		jz	short loc_7F8149CE
		mov	eax, lpBuffer
		mov	[eax], ecx
		jmp	short loc_7F8149D8
; ---------------------------------------------------------------------------

loc_7F8149CE:				; CODE XREF: sub_7F814988+3Bj
		mov	eax, [ebx]
		mov	ecx, lpBuffer
		mov	[ecx], eax

loc_7F8149D8:				; CODE XREF: sub_7F814988+44j
		mov	ecx, lpBuffer
		mov	eax, [ebp+nNumberOfBytesToRead]
		push	edi
		mov	[ecx+4], eax
		push	[ebp+arg_4]
		mov	eax, lpBuffer
		add	eax, 8
		push	eax
		call	sub_7F82FCE0
		add	esp, 0Ch
		lea	ecx, [edi+8]
		push	ecx		; nNumberOfBytesToRead
		push	lpBuffer	; int
		push	0FFFFFFF8h	; int
		push	[ebp+var_4]	; int
		call	sub_7F814D6E
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F814A5B
		xor	ebx, ebx

loc_7F814A15:				; CODE XREF: sub_7F814988+CDj
		sub	[ebp+nNumberOfBytesToRead], edi
		jz	short loc_7F814A57
		add	ebx, edi
		add	[ebp+arg_4], edi
		mov	edi, [ebp+nNumberOfBytesToRead]
		cmp	edi, 2000h
		jb	short loc_7F814A2F
		mov	edi, 2000h

loc_7F814A2F:				; CODE XREF: sub_7F814988+A0j
		push	edi
		push	[ebp+arg_4]
		push	lpBuffer
		call	sub_7F82FCE0
		add	esp, 0Ch
		push	edi		; nNumberOfBytesToRead
		push	lpBuffer	; int
		push	ebx		; int
		push	[ebp+var_4]	; int
		call	sub_7F814D6E
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F814A15

loc_7F814A57:				; CODE XREF: sub_7F814988+22j
					; sub_7F814988+90j
		test	esi, esi
		jz	short loc_7F814A74

loc_7F814A5B:				; CODE XREF: sub_7F814988+89j
		cmp	[ebp+var_4], 0
		jz	short loc_7F814A69
		push	[ebp+var_4]
		call	sub_7F8147DD

loc_7F814A69:				; CODE XREF: sub_7F814988+D7j
		mov	ecx, [ebp+arg_10]
		xor	eax, eax
		test	ecx, ecx
		jz	short loc_7F814A80
		jmp	short loc_7F814A7E
; ---------------------------------------------------------------------------

loc_7F814A74:				; CODE XREF: sub_7F814988+D1j
		mov	ecx, [ebp+arg_10]
		test	ecx, ecx
		jz	short loc_7F814A80
		mov	eax, [ebp+var_4]

loc_7F814A7E:				; CODE XREF: sub_7F814988+EAj
		mov	[ecx], eax

loc_7F814A80:				; CODE XREF: sub_7F814988+E8j
					; sub_7F814988+F1j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F814988	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F814A8B	proc near		; CODE XREF: sub_7F824774+67p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	0
		push	[esp+4+arg_0]
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F814AAB
		mov	ecx, [eax+14h]
		mov	edx, [esp+arg_4]
		and	ecx, 7FFFFFFFh
		mov	[edx], ecx
		jmp	short loc_7F814AB5
; ---------------------------------------------------------------------------

loc_7F814AAB:				; CODE XREF: sub_7F814A8B+Dj
		mov	edx, [esp+arg_4]
		mov	dword ptr [edx], 0

loc_7F814AB5:				; CODE XREF: sub_7F814A8B+1Ej
		cmp	eax, 1
		sbb	eax, eax
		and	eax, 1001h
		retn	8
sub_7F814A8B	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F814AC2	proc near		; CODE XREF: sub_7F812D74+BFp
					; sub_7F814687+36p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_4]
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		push	ebp
		mov	bx, [edi+10h]
		mov	edx, [esi+14h]
		mov	eax, [edi+14h]
		mov	ecx, [edi+18h]
		xor	edx, eax
		mov	ebp, 7FFFFFFFh
		and	edx, ebp
		xor	edx, eax
		mov	[edi+14h], edx
		mov	edx, [esi+18h]
		mov	[edi+18h], edx
		mov	dx, [esi+10h]
		xor	dx, bx
		and	dx, 1010h
		xor	dx, bx
		mov	[edi+10h], dx
		mov	edx, [esi+14h]
		xor	eax, edx
		mov	[esi+18h], ecx
		and	eax, ebp
		xor	eax, edx
		mov	[esi+14h], eax
		mov	ax, [esi+10h]
		push	edi
		xor	bx, ax
		and	bx, 1010h
		xor	bx, ax
		mov	[esi+10h], bx
		and	word ptr [edi+10h], 0DFFFh
		and	word ptr [esi+10h], 0DFFFh
		call	sub_7F8148F7
		push	esi
		call	sub_7F8148F7
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F814AC2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F814B43(int, int, int, DWORD nNumberOfBytesToRead)
sub_7F814B43	proc near		; CODE XREF: sub_7F8251BB+6Fp
					; sub_7F825321+5Fp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
nNumberOfBytesToRead= dword ptr	 14h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		mov	esi, [ebp+nNumberOfBytesToRead]
		cmp	edi, 0FFFFFFF8h
		jl	short loc_7F814B63
		test	esi, esi
		jl	short loc_7F814B63
		lea	eax, [edi+esi]
		test	eax, eax
		jl	short loc_7F814B63
		xor	eax, eax
		jmp	short loc_7F814B68
; ---------------------------------------------------------------------------

loc_7F814B63:				; CODE XREF: sub_7F814B43+Fj
					; sub_7F814B43+13j ...
		mov	eax, 1017h

loc_7F814B68:				; CODE XREF: sub_7F814B43+1Ej
		test	eax, eax
		jnz	short loc_7F814B9E
		push	0
		push	[ebp+arg_0]
		call	sub_7F8144A4
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F814B83
		mov	eax, 1001h
		jmp	short loc_7F814B9E
; ---------------------------------------------------------------------------

loc_7F814B83:				; CODE XREF: sub_7F814B43+37j
		test	byte ptr [ebx+10h], 10h
		jz	short loc_7F814B93
		push	ebx
		call	sub_7F814BA5
		test	eax, eax
		jnz	short loc_7F814B9E

loc_7F814B93:				; CODE XREF: sub_7F814B43+44j
		push	esi		; nNumberOfBytesToRead
		push	[ebp+arg_8]	; int
		push	edi		; int
		push	ebx		; int
		call	sub_7F814D6E

loc_7F814B9E:				; CODE XREF: sub_7F814B43+27j
					; sub_7F814B43+3Ej ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_7F814B43	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F814BA5	proc near		; CODE XREF: sub_7F814B43+47p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		push	edi
		mov	esi, [edi+14h]
		and	esi, 7FFFFFFFh
		mov	eax, [edi+4]
		and	eax, 0FFh
		mov	[ebp+var_8], eax
		call	sub_7F81470D
		cmp	word ptr [eax+1Eh], 1
		mov	ebx, eax
		ja	short loc_7F814BDC
		push	edi
		call	sub_7F814C1A
		jmp	short loc_7F814C11
; ---------------------------------------------------------------------------

loc_7F814BDC:				; CODE XREF: sub_7F814BA5+2Dj
		lea	eax, [ebp+var_4]
		lea	edx, [ebp+var_8]
		push	eax
		push	dword ptr [edi+4]
		push	0
		push	edx
		push	esi
		push	ebx
		call	sub_7F814C62
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F814C11
		push	[ebp+var_4]
		push	edi
		call	sub_7F814AC2
		mov	cx, [ebx+1Ch]
		push	[ebp+var_4]
		mov	[edi+1Ch], cx
		call	sub_7F8147DD
		mov	eax, esi

loc_7F814C11:				; CODE XREF: sub_7F814BA5+35j
					; sub_7F814BA5+4Fj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F814BA5	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F814C1A	proc near		; CODE XREF: sub_7F814BA5+30p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		push	edi
		call	sub_7F81470D
		push	eax
		mov	esi, eax
		push	edi
		call	sub_7F814AC2
		mov	eax, [edi+14h]
		and	eax, 7FFFFFFFh
		push	eax
		push	dword ptr [edi+4]
		push	edi
		call	sub_7F814ECA
		mov	cx, [esi+1Ch]
		push	esi
		mov	[edi+1Ch], cx
		call	sub_7F8142DB
		push	esi
		call	sub_7F812F73
		push	eax
		call	sub_7F813BE4
		xor	eax, eax
		pop	edi
		pop	esi
		retn	4
sub_7F814C1A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F814C62	proc near		; CODE XREF: sub_7F814BA5+46p

nNumberOfBytesToRead= dword ptr	-4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 4
		test	byte ptr [eax+10h], 10h
		push	ebx
		push	esi
		push	edi
		jz	short loc_7F814C7E
		push	eax
		call	sub_7F81470D
		mov	[ebp+arg_0], eax

loc_7F814C7E:				; CODE XREF: sub_7F814C62+11j
		mov	ebx, [ebp+arg_C]
		mov	esi, [ebp+arg_4]
		push	[ebp+arg_14]
		add	ebx, esi
		push	ebx
		push	[ebp+arg_8]
		call	sub_7F812FC1
		test	eax, eax
		jnz	loc_7F814D5A
		mov	edx, [ebp+arg_14]
		lea	ecx, [esi+8]
		mov	eax, 2000h
		mov	edi, [edx]
		cmp	ecx, eax
		jb	short loc_7F814CAD
		mov	ecx, eax

loc_7F814CAD:				; CODE XREF: sub_7F814C62+47j
		mov	eax, lpBuffer
		mov	[ebp+nNumberOfBytesToRead], ecx
		lea	ecx, [ebp+nNumberOfBytesToRead]
		push	ecx		; int
		push	eax		; lpBuffer
		push	0FFFFFFF8h	; int
		push	[ebp+arg_0]	; int
		call	sub_7F814E39
		test	eax, eax
		jnz	loc_7F814D5A
		mov	eax, [ebp+arg_10]
		test	eax, eax
		jz	short loc_7F814CDD
		mov	ecx, lpBuffer
		mov	[ecx], eax
		jmp	short loc_7F814CEA
; ---------------------------------------------------------------------------

loc_7F814CDD:				; CODE XREF: sub_7F814C62+6Fj
		mov	eax, [ebp+arg_8]
		mov	ecx, lpBuffer
		mov	edx, [eax]
		mov	[ecx], edx

loc_7F814CEA:				; CODE XREF: sub_7F814C62+79j
		mov	eax, lpBuffer
		mov	[eax+4], ebx
		mov	eax, lpBuffer
		push	[ebp+nNumberOfBytesToRead] ; nNumberOfBytesToRead
		push	eax		; int
		push	0FFFFFFF8h	; int
		push	edi		; int
		call	sub_7F814D6E
		test	eax, eax
		jnz	short loc_7F814D5A
		sub	[ebp+nNumberOfBytesToRead], 8
		jns	short loc_7F814D14
		mov	eax, 200h
		jmp	short loc_7F814D5A
; ---------------------------------------------------------------------------

loc_7F814D14:				; CODE XREF: sub_7F814C62+A9j
		xor	ebx, ebx

loc_7F814D16:				; CODE XREF: sub_7F814C62+F6j
		sub	esi, [ebp+nNumberOfBytesToRead]
		jz	short loc_7F814D5A
		add	ebx, [ebp+nNumberOfBytesToRead]
		mov	eax, esi
		cmp	eax, 2000h
		jb	short loc_7F814D2C
		mov	eax, 2000h

loc_7F814D2C:				; CODE XREF: sub_7F814C62+C3j
		mov	[ebp+nNumberOfBytesToRead], eax
		lea	eax, [ebp+nNumberOfBytesToRead]
		push	eax		; int
		push	lpBuffer	; lpBuffer
		push	ebx		; int
		push	[ebp+arg_0]	; int
		call	sub_7F814E39
		test	eax, eax
		jnz	short loc_7F814D5A
		push	[ebp+nNumberOfBytesToRead] ; nNumberOfBytesToRead
		push	lpBuffer	; int
		push	ebx		; int
		push	edi		; int
		call	sub_7F814D6E
		test	eax, eax
		jz	short loc_7F814D16

loc_7F814D5A:				; CODE XREF: sub_7F814C62+32j
					; sub_7F814C62+64j ...
		xor	ecx, ecx
		test	eax, eax
		jz	short loc_7F814D65
		mov	edx, [ebp+arg_14]
		mov	[edx], ecx

loc_7F814D65:				; CODE XREF: sub_7F814C62+FCj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F814C62	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F814D6E(int, int, int, DWORD nNumberOfBytesToRead)
sub_7F814D6E	proc near		; CODE XREF: sub_7F814988+80p
					; sub_7F814988+C4p ...

lDistanceToMove	= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
nNumberOfBytesToRead= dword ptr	 14h

		push	ebp
		mov	edx, [esp+nNumberOfBytesToRead]
		mov	ebp, esp
		sub	esp, 4
		test	edx, edx
		push	esi
		push	edi
		jnz	short loc_7F814D82
		xor	eax, eax
		jmp	short loc_7F814DD7
; ---------------------------------------------------------------------------

loc_7F814D82:				; CODE XREF: sub_7F814D6E+Ej
		cmp	[ebp+arg_4], 0FFFFFFF8h
		jl	short loc_7F814DB9
		mov	edi, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx+14h]
		lea	esi, [edx+edi]
		and	eax, 7FFFFFFFh
		add	eax, 87h
		and	al, 80h
		cmp	eax, esi
		jnb	short loc_7F814DAB
		mov	eax, 1002h
		jmp	short loc_7F814DC1
; ---------------------------------------------------------------------------

loc_7F814DAB:				; CODE XREF: sub_7F814D6E+34j
		mov	eax, [ecx+18h]
		lea	esi, [eax+edi+8]
		xor	eax, eax
		mov	[ebp+lDistanceToMove], esi
		jmp	short loc_7F814DC1
; ---------------------------------------------------------------------------

loc_7F814DB9:				; CODE XREF: sub_7F814D6E+18j
		mov	eax, 210h
		mov	ecx, [ebp+arg_0]

loc_7F814DC1:				; CODE XREF: sub_7F814D6E+3Bj
					; sub_7F814D6E+49j
		test	eax, eax
		jnz	short loc_7F814DD7
		and	word ptr [ecx+10h], 0DFFFh
		push	edx		; nNumberOfBytesToRead
		push	[ebp+lDistanceToMove] ;	lDistanceToMove
		push	[ebp+arg_8]	; int
		call	sub_7F812653

loc_7F814DD7:				; CODE XREF: sub_7F814D6E+12j
					; sub_7F814D6E+55j
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F814D6E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F814DDF(int, int, LPVOID lpBuffer,	int)
sub_7F814DDF	proc near		; CODE XREF: sub_7F824E37+78p
					; sub_7F825007+CBp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
lpBuffer	= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_4]
		cmp	esi, 0FFFFFFF8h
		jl	short loc_7F814DFD
		mov	eax, [ebp+arg_C]
		mov	eax, [eax]
		test	eax, eax
		jl	short loc_7F814DFD
		add	eax, esi
		mov	eax, 0
		jns	short loc_7F814E02

loc_7F814DFD:				; CODE XREF: sub_7F814DDF+Aj
					; sub_7F814DDF+13j
		mov	eax, 1017h

loc_7F814E02:				; CODE XREF: sub_7F814DDF+1Cj
		test	eax, eax
		jnz	short loc_7F814E34
		push	0
		push	[ebp+arg_0]
		call	sub_7F8144A4
		test	eax, eax
		jnz	short loc_7F814E1B
		mov	eax, 1001h
		jmp	short loc_7F814E34
; ---------------------------------------------------------------------------

loc_7F814E1B:				; CODE XREF: sub_7F814DDF+33j
		test	byte ptr [eax+10h], 10h
		jz	short loc_7F814E27
		push	eax
		call	sub_7F81470D

loc_7F814E27:				; CODE XREF: sub_7F814DDF+40j
		push	[ebp+arg_C]	; int
		push	[ebp+lpBuffer]	; lpBuffer
		push	esi		; int
		push	eax		; int
		call	sub_7F814E39

loc_7F814E34:				; CODE XREF: sub_7F814DDF+25j
					; sub_7F814DDF+3Aj
		pop	esi
		pop	ebp
		retn	10h
sub_7F814DDF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F814E39(int, int, LPVOID lpBuffer,	int)
sub_7F814E39	proc near		; CODE XREF: sub_7F814C62+5Dp
					; sub_7F814C62+DBp ...

lDistanceToMove	= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
lpBuffer	= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		mov	ecx, [ebp+arg_0]
		push	esi
		push	edi
		xor	esi, esi
		mov	edx, [ecx+14h]
		and	edx, 7FFFFFFFh
		mov	edi, [ebp+arg_4]
		mov	[ebp+lDistanceToMove], edx
		mov	edx, [ebp+arg_C]
		mov	ebx, [edx]
		add	ebx, edi
		cmp	ebx, [ebp+lDistanceToMove]
		jbe	short loc_7F814E70
		mov	esi, [ebp+lDistanceToMove]
		sub	esi, edi
		mov	[edx], esi
		mov	esi, 1002h

loc_7F814E70:				; CODE XREF: sub_7F814E39+29j
		mov	ebx, [edx]
		test	ebx, ebx
		jz	short loc_7F814EBB
		cmp	[ebp+arg_4], 0FFFFFFF8h
		jl	short loc_7F814EA6
		mov	eax, [ecx+14h]
		add	ebx, edi
		and	eax, 7FFFFFFFh
		add	eax, 87h
		and	al, 80h
		cmp	eax, ebx
		jnb	short loc_7F814E98
		mov	eax, 1002h
		jmp	short loc_7F814EAB
; ---------------------------------------------------------------------------

loc_7F814E98:				; CODE XREF: sub_7F814E39+56j
		mov	eax, [ecx+18h]
		lea	ecx, [eax+edi+8]
		xor	eax, eax
		mov	[ebp+lDistanceToMove], ecx
		jmp	short loc_7F814EAB
; ---------------------------------------------------------------------------

loc_7F814EA6:				; CODE XREF: sub_7F814E39+41j
		mov	eax, 210h

loc_7F814EAB:				; CODE XREF: sub_7F814E39+5Dj
					; sub_7F814E39+6Bj
		test	eax, eax
		jnz	short loc_7F814EC1
		push	edx		; int
		push	[ebp+lDistanceToMove] ;	lDistanceToMove
		push	[ebp+lpBuffer]	; lpBuffer
		call	sub_7F8127E7

loc_7F814EBB:				; CODE XREF: sub_7F814E39+3Bj
		test	eax, eax
		jnz	short loc_7F814EC1
		mov	eax, esi

loc_7F814EC1:				; CODE XREF: sub_7F814E39+74j
					; sub_7F814E39+84j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F814E39	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F814ECA	proc near		; CODE XREF: sub_7F814687+4Bp
					; sub_7F814868+39p ...

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	eax, [esp+arg_4]
		mov	ebp, esp
		sub	esp, 8
		mov	ecx, [ebp+arg_8]
		push	8		; nNumberOfBytesToRead
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], ecx
		lea	eax, [ebp+var_8]
		push	eax		; int
		push	0FFFFFFF8h	; int
		push	[ebp+arg_0]	; int
		call	sub_7F814D6E
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F814ECA	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F814EF3	proc near		; CODE XREF: sub_7F8173E6+66p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, [esp+8+arg_0]
		push	dword ptr [esi+4]
		push	dword ptr [esi]
		call	sub_7F82B9AC
		test	eax, eax
		jnz	loc_7F814F8F
		mov	dword_7F8373D4,	0
		call	sub_7F824327
		test	eax, eax
		jz	short loc_7F814F22
		inc	dword ptr [eax]
		jmp	short loc_7F814F8D
; ---------------------------------------------------------------------------

loc_7F814F22:				; CODE XREF: sub_7F814EF3+29j
		push	64h		; dwBytes
		call	sub_7F8241ED
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F814F36
		mov	eax, 400h
		jmp	short loc_7F814F8F
; ---------------------------------------------------------------------------

loc_7F814F36:				; CODE XREF: sub_7F814EF3+3Aj
		push	edi
		call	sub_7F82EEF2
		test	eax, eax
		jnz	short loc_7F814F4C
		call	sub_7F814F94
		mov	eax, 400h
		jmp	short loc_7F814F8F
; ---------------------------------------------------------------------------

loc_7F814F4C:				; CODE XREF: sub_7F814EF3+4Bj
		call	sub_7F82435E
		cmp	eax, 1
		jnz	short loc_7F814F5D
		push	1
		call	sub_7F8168AE

loc_7F814F5D:				; CODE XREF: sub_7F814EF3+61j
		mov	dword ptr [edi+60h], 0
		mov	word ptr [edi+40h], 10h
		mov	ecx, [esi+8]
		push	8000h		; uMode
		mov	[edi+4], ecx
		mov	edx, [esi+0Ch]
		mov	[edi+8], edx
		inc	dword ptr [edi]
		call	ds:SetErrorMode
		call	sub_7F81EF87
		call	sub_7F815163

loc_7F814F8D:				; CODE XREF: sub_7F814EF3+2Dj
		xor	eax, eax

loc_7F814F8F:				; CODE XREF: sub_7F814EF3+12j
					; sub_7F814EF3+41j ...
		pop	edi
		pop	esi
		retn	4
sub_7F814EF3	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F814F94	proc near		; CODE XREF: sub_7F814EF3+4Dp
					; sub_7F8173E6+1EEp ...
		push	ebx
		push	esi
		push	edi
		call	GetCurrentProcessId
		cmp	eax, dword_7F837098
		jnz	short loc_7F814FAC
		mov	esi, dword_7F83709C
		jmp	short loc_7F814FB3
; ---------------------------------------------------------------------------

loc_7F814FAC:				; CODE XREF: sub_7F814F94+Ej
		call	sub_7F824327
		mov	esi, eax

loc_7F814FB3:				; CODE XREF: sub_7F814F94+16j
		mov	eax, [esi]
		mov	edi, 0
		dec	eax
		mov	[esi], eax
		jnz	short loc_7F815033
		mov	eax, [esi+24h]
		test	eax, eax
		jz	short loc_7F814FD1
		push	eax		; uIDEvent
		push	edi		; hWnd
		call	ds:KillTimer
		mov	[esi+24h], edi

loc_7F814FD1:				; CODE XREF: sub_7F814F94+30j
		call	sub_7F82435E
		cmp	eax, 1
		jnz	short loc_7F815028
		cmp	dword_7F835F5C,	0
		jz	short loc_7F815028
		mov	edi, 0
		jle	short loc_7F815006
		xor	ebx, ebx

loc_7F814FED:				; CODE XREF: sub_7F814F94+70j
		mov	eax, dword_7F835F58
		inc	edi
		push	dword ptr [eax+ebx]
		call	sub_7F82F149
		add	ebx, 4
		cmp	dword_7F835F5C,	edi
		jg	short loc_7F814FED

loc_7F815006:				; CODE XREF: sub_7F814F94+55j
		mov	eax, dword_7F835F58
		push	eax
		call	sub_7F82F149
		xor	eax, eax
		push	eax
		mov	dword_7F835F58,	eax
		mov	dword_7F835F5C,	eax
		mov	dword_7F835F54,	eax
		call	sub_7F8168AE

loc_7F815028:				; CODE XREF: sub_7F814F94+45j
					; sub_7F814F94+4Ej
		push	esi
		call	sub_7F82EEFA
		call	sub_7F8242A1

loc_7F815033:				; CODE XREF: sub_7F814F94+29j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F814F94	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F815037(LPCSTR lpCaption, int, int, char)
sub_7F815037	proc near		; CODE XREF: sub_7F823870+133p
					; sub_7F823870+272p ...

lpCaption	= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_D		= byte ptr  15h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		call	GetCurrentProcessId
		cmp	eax, dword_7F837098
		jnz	short loc_7F815052
		mov	edi, dword_7F83709C
		jmp	short loc_7F815059
; ---------------------------------------------------------------------------

loc_7F815052:				; CODE XREF: sub_7F815037+11j
		call	sub_7F824327
		mov	edi, eax

loc_7F815059:				; CODE XREF: sub_7F815037+19j
		test	[ebp+arg_D], 20h
		jnz	short loc_7F81508E
		test	edi, edi
		jz	short loc_7F81506E
		mov	eax, [edi+4]
		test	eax, eax
		jz	short loc_7F81506E
		mov	esi, [eax]
		jmp	short loc_7F815070
; ---------------------------------------------------------------------------

loc_7F81506E:				; CODE XREF: sub_7F815037+2Aj
					; sub_7F815037+31j
		xor	esi, esi

loc_7F815070:				; CODE XREF: sub_7F815037+35j
		xor	ebx, ebx
		test	esi, esi
		jz	short loc_7F815090
		push	esi		; hWnd
		call	ds:IsWindow
		test	eax, eax
		jnz	short loc_7F815090
		test	edi, edi
		jz	short loc_7F81508E
		mov	eax, [edi+4]
		test	eax, eax
		jz	short loc_7F81508E
		mov	[eax], ebx

loc_7F81508E:				; CODE XREF: sub_7F815037+26j
					; sub_7F815037+4Cj ...
		xor	esi, esi

loc_7F815090:				; CODE XREF: sub_7F815037+3Dj
					; sub_7F815037+48j
		push	dword ptr [ebp+14h] ; char
		push	[ebp+arg_8]	; int
		push	[ebp+arg_4]	; int
		push	[ebp+lpCaption]	; lpCaption
		push	esi		; hWnd
		call	sub_7F8150A9
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_7F815037	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8150A9(HWND hWnd,	LPCSTR lpCaption, int, int, char)
sub_7F8150A9	proc near		; CODE XREF: sub_7F815037+66p

var_140		= byte ptr -140h
hWnd		= dword	ptr  8
lpCaption	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_11		= byte ptr  19h

		push	ebp
		mov	ebp, esp
		sub	esp, 140h
		push	esi
		push	edi
		mov	esi, [ebp+arg_8]
		test	esi, esi
		jnz	short loc_7F8150C2
		mov	esi, offset byte_7F835F50
		jmp	short loc_7F8150E7
; ---------------------------------------------------------------------------

loc_7F8150C2:				; CODE XREF: sub_7F8150A9+10j
		mov	eax, [ebp+arg_C]
		test	eax, eax
		jz	short loc_7F8150E7
		push	eax
		lea	ecx, [ebp+var_140]
		push	esi
		push	offset aSS_3	; "%s  %s"
		push	140h
		lea	esi, [ebp+var_140]
		push	ecx
		call	sub_7F81AF07

loc_7F8150E7:				; CODE XREF: sub_7F8150A9+17j
					; sub_7F8150A9+1Ej
		mov	edi, [ebp+hWnd]
		test	edi, edi
		jz	short loc_7F8150FB
		push	edi		; hWnd
		call	ds:GetLastActivePopup
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F815105

loc_7F8150FB:				; CODE XREF: sub_7F8150A9+43j
		test	[ebp+arg_11], 30h
		jnz	short loc_7F815105
		or	[ebp+arg_11], 20h

loc_7F815105:				; CODE XREF: sub_7F8150A9+50j
					; sub_7F8150A9+56j
		movzx	eax, word ptr [ebp+18h]
		push	eax		; uType
		push	[ebp+lpCaption]	; lpCaption
		push	esi		; lpText
		push	edi		; hWnd
		call	ds:MessageBoxA
		test	ax, ax
		jnz	short loc_7F81515B
		call	GetCurrentProcessId
		cmp	eax, dword_7F837098
		jnz	short loc_7F81512E
		mov	eax, dword_7F83709C
		jmp	short loc_7F815133
; ---------------------------------------------------------------------------

loc_7F81512E:				; CODE XREF: sub_7F8150A9+7Cj
		call	sub_7F824327

loc_7F815133:				; CODE XREF: sub_7F8150A9+83j
		test	eax, eax
		jz	short loc_7F815140
		mov	eax, [eax+0Ch]
		test	eax, eax
		jz	short loc_7F815140
		mov	esi, eax

loc_7F815140:				; CODE XREF: sub_7F8150A9+8Cj
					; sub_7F8150A9+93j
		mov	ax, [ebp+18h]
		and	ax, 0F0Fh
		or	ax, 1010h
		movzx	ecx, ax
		push	ecx		; uType
		push	[ebp+lpCaption]	; lpCaption
		push	esi		; lpText
		push	edi		; hWnd
		call	ds:MessageBoxA

loc_7F81515B:				; CODE XREF: sub_7F8150A9+6Fj
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F8150A9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F815163	proc near		; CODE XREF: sub_7F814EF3+95p

var_72C		= byte ptr -72Ch
ReturnedString	= byte ptr -42Ch
sz		= byte ptr -22Ch
String1		= byte ptr -12Ch
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
lpKeyName	= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 72Ch
		push	ebx
		push	esi
		push	edi
		push	offset aMsmail32_ini ; "msmail32.ini"
		push	0		; nDefault
		push	offset aMigrateini ; "MigrateIni"
		push	offset aMicrosoftMail ;	"Microsoft Mail"
		call	ds:GetPrivateProfileIntA
		mov	[ebp+var_1C], eax
		test	eax, eax
		jz	loc_7F81548B
		push	offset aMsmail_ini ; "msmail.ini"
		lea	eax, [ebp+ReturnedString]
		push	200h		; nSize
		lea	esi, [ebp+ReturnedString]
		push	eax		; lpReturnedString
		push	offset byte_7F83D140 ; lpDefault
		push	0		; lpKeyName
		push	0		; lpAppName
		call	ds:GetPrivateProfileStringA
		cmp	[ebp+ReturnedString], 0
		jz	loc_7F815474

loc_7F8151C4:				; CODE XREF: sub_7F815163+30Bj
		push	offset aCustomCommands ; "Custom Commands"
		push	esi		; lpString1
		call	sub_7F8176C6
		test	eax, eax
		jz	short loc_7F8151FA
		push	offset aCustomMessages ; "Custom Messages"
		push	esi		; lpString1
		call	sub_7F8176C6
		test	eax, eax
		jz	short loc_7F8151FA
		push	offset aProviders ; "Providers"
		push	esi		; lpString1
		call	sub_7F8176C6
		test	eax, eax
		jz	short loc_7F8151FA
		mov	[ebp+var_18], 0
		jmp	short loc_7F815201
; ---------------------------------------------------------------------------

loc_7F8151FA:				; CODE XREF: sub_7F815163+6Ej
					; sub_7F815163+7Dj ...
		mov	[ebp+var_18], 1

loc_7F815201:				; CODE XREF: sub_7F815163+95j
		push	offset aMicrosoftMail ;	"Microsoft Mail"
		push	esi		; lpString1
		call	sub_7F8176C6
		push	offset aMsmail_ini ; "msmail.ini"
		lea	ecx, [ebp+var_72C]
		push	300h		; nSize
		cmp	eax, 1
		sbb	eax, eax
		push	ecx		; lpReturnedString
		neg	eax
		push	offset byte_7F83D140 ; lpDefault
		mov	[ebp+var_20], eax
		push	0		; lpKeyName
		push	esi		; lpAppName
		call	ds:GetPrivateProfileStringA
		cmp	[ebp+var_72C], 0
		lea	ecx, [ebp+var_72C]
		mov	[ebp+lpKeyName], ecx
		jz	loc_7F815460

loc_7F81524B:				; CODE XREF: sub_7F815163+2F7j
		xor	edi, edi
		cmp	[ebp+var_20], edi
		jz	short loc_7F8152A5
		push	offset aMapihelp ; "MAPIHELP"
		push	[ebp+lpKeyName]	; lpString1
		call	sub_7F8176C6
		test	eax, eax
		jnz	short loc_7F81527A
		push	offset aMsmail32_hlp ; "MSMAIL32.HLP"
		lea	eax, [ebp+String1]
		push	eax		; lpString1
		call	ds:lstrcpyA
		jmp	loc_7F81542E
; ---------------------------------------------------------------------------

loc_7F81527A:				; CODE XREF: sub_7F815163+FEj
		push	offset aSpelling ; "Spelling"
		push	[ebp+lpKeyName]	; lpString1
		call	sub_7F8176C6
		test	eax, eax
		jz	loc_7F815444
		push	offset aMsgfilter ; "MsgFilter"
		push	[ebp+lpKeyName]	; lpString1
		call	sub_7F8176C6
		test	eax, eax
		jnz	short loc_7F8152A5
		mov	edi, 1

loc_7F8152A5:				; CODE XREF: sub_7F815163+EDj
					; sub_7F815163+13Bj
		push	offset aMsmail_ini ; "msmail.ini"
		lea	eax, [ebp+String1]
		push	100h		; nSize
		push	eax		; lpReturnedString
		push	offset byte_7F83D140 ; lpDefault
		push	[ebp+lpKeyName]	; lpKeyName
		push	esi		; lpAppName
		call	ds:GetPrivateProfileStringA
		cmp	[ebp+var_1C], 65h
		mov	[ebp+var_14], eax
		jz	loc_7F81542E
		test	edi, edi
		jz	short loc_7F815302
		push	offset aFilter	; "filter"
		lea	eax, [ebp+String1]
		push	eax		; lpString1
		call	sub_7F8176C6
		test	eax, eax
		jnz	short loc_7F815302
		push	offset aFilter32 ; "filter32"
		lea	eax, [ebp+String1]
		push	eax		; lpString1
		call	ds:lstrcpyA
		jmp	loc_7F81542E
; ---------------------------------------------------------------------------

loc_7F815302:				; CODE XREF: sub_7F815163+171j
					; sub_7F815163+186j
		mov	eax, [ebp+var_14]
		lea	ecx, [ebp+sz]
		inc	eax
		lea	edx, [ebp+String1]
		push	eax		; cchLength
		mov	edi, offset off_7F835F68
		push	ecx		; lpsz
		push	edx		; int
		call	sub_7F8176EB
		mov	[ebp+var_C], 0
		cmp	off_7F835F68, 0
		jz	loc_7F81542E

loc_7F815333:				; CODE XREF: sub_7F815163+2C5j
		push	dword ptr [edi]
		lea	ecx, [ebp+sz]
		push	ecx
		call	sub_7F82FF90
		add	esp, 8
		mov	ebx, eax
		test	ebx, ebx
		jz	loc_7F815422
		push	dword ptr [edi]	; lpString
		call	ds:lstrlenA
		push	dword ptr [edi+4] ; lpString
		mov	[ebp+var_10], eax
		call	ds:lstrlenA
		mov	[ebp+var_8], eax
		lea	eax, [ebp+sz]
		sub	ebx, eax
		add	ebx, [ebp+var_C]
		cmp	[ebp+var_C], 0
		lea	ebx, [ebp+ebx+String1]
		jz	short loc_7F8153C6
		push	dword ptr [edi]	; lpString2
		push	ebx		; lpString1
		call	sub_7F8176C6
		test	eax, eax
		jz	short loc_7F8153C6
		mov	eax, [ebp+var_14]
		lea	ecx, [ebp+sz]
		add	eax, [ebp+var_C]
		lea	edx, [ebp+String1]
		inc	eax
		push	eax		; cchLength
		push	ecx		; lpsz
		push	edx		; int
		call	sub_7F8176EB
		push	dword ptr [edi]
		lea	edx, [ebp+sz]
		push	edx
		call	sub_7F82FF90
		add	esp, 8
		lea	ecx, [ebp+String1]
		lea	edx, [ebp+sz]
		sub	ecx, edx
		lea	ebx, [ecx+eax]

loc_7F8153C6:				; CODE XREF: sub_7F815163+218j
					; sub_7F815163+224j
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_10]
		jz	short loc_7F815407
		lea	ecx, [ebp+String1]
		mov	edx, [ebp+var_10]
		sub	ecx, ebx
		add	ecx, [ebp+var_C]
		add	ecx, [ebp+var_14]
		sub	[ebp+var_C], edx
		add	[ebp+var_C], eax
		test	eax, eax
		jz	short loc_7F8153F3
		inc	ecx
		sub	eax, edx
		push	ecx
		add	eax, ebx
		push	ebx
		push	eax
		jmp	short loc_7F8153FF
; ---------------------------------------------------------------------------

loc_7F8153F3:				; CODE XREF: sub_7F815163+284j
		sub	ecx, [ebp+var_10]
		mov	eax, [ebp+var_10]
		inc	ecx
		add	eax, ebx
		push	ecx
		push	eax
		push	ebx

loc_7F8153FF:				; CODE XREF: sub_7F815163+28Ej
		call	sub_7F82FCE0
		add	esp, 0Ch

loc_7F815407:				; CODE XREF: sub_7F815163+269j
		cmp	[ebp+var_8], 0
		jz	short loc_7F81541C
		push	[ebp+var_8]
		push	dword ptr [edi+4]
		push	ebx
		call	sub_7F82FCE0
		add	esp, 0Ch

loc_7F81541C:				; CODE XREF: sub_7F815163+2A8j
		cmp	[ebp+var_18], 0
		jz	short loc_7F81542E

loc_7F815422:				; CODE XREF: sub_7F815163+1E5j
		add	edi, 8
		cmp	dword ptr [edi], 0
		jnz	loc_7F815333

loc_7F81542E:				; CODE XREF: sub_7F815163+112j
					; sub_7F815163+169j ...
		push	offset aMsmail32_ini ; "msmail32.ini"
		lea	eax, [ebp+String1]
		push	eax		; lpString
		push	[ebp+lpKeyName]	; lpKeyName
		push	esi		; lpAppName
		call	ds:WritePrivateProfileStringA

loc_7F815444:				; CODE XREF: sub_7F815163+126j
		push	[ebp+lpKeyName]	; lpString
		call	ds:lstrlenA
		mov	ecx, [ebp+lpKeyName]
		lea	eax, [eax+ecx+1]
		mov	[ebp+lpKeyName], eax
		cmp	byte ptr [eax],	0
		jnz	loc_7F81524B

loc_7F815460:				; CODE XREF: sub_7F815163+E2j
		push	esi		; lpString
		call	ds:lstrlenA
		lea	esi, [eax+esi+1]
		cmp	byte ptr [esi],	0
		jnz	loc_7F8151C4

loc_7F815474:				; CODE XREF: sub_7F815163+5Bj
		push	offset aMsmail32_ini ; "msmail32.ini"
		push	0		; lpString
		push	offset aMigrateini ; "MigrateIni"
		push	offset aMicrosoftMail ;	"Microsoft Mail"
		call	ds:WritePrivateProfileStringA

loc_7F81548B:				; CODE XREF: sub_7F815163+28j
		mov	eax, 1
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_7F815163	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F815497(int, LPCSTR lpString, int,	int, int)
sub_7F815497	proc near		; CODE XREF: sub_7F823D4A+54p

arg_0		= dword	ptr  8
lpString	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		push	5Ch
		mov	ebx, [ebp+arg_0]
		push	ebx
		call	sub_7F82FCB0
		add	esp, 8
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F8154B8
		mov	eax, 205h
		jmp	short loc_7F815504
; ---------------------------------------------------------------------------

loc_7F8154B8:				; CODE XREF: sub_7F815497+18j
		mov	edi, [ebp+lpString]
		test	edi, edi
		jz	short loc_7F8154F0
		mov	eax, esi
		mov	ecx, [ebp+arg_8]
		sub	eax, ebx
		inc	eax
		cmp	eax, ecx
		jl	short loc_7F8154CD
		mov	eax, ecx

loc_7F8154CD:				; CODE XREF: sub_7F815497+32j
		push	eax
		push	edi
		push	ebx
		call	sub_7F81ABAD
		sub	ebx, esi
		cmp	ebx, 0FFFFFFFEh
		jnz	short loc_7F8154F0
		cmp	byte ptr [esi-1], 3Ah
		jnz	short loc_7F8154F0
		push	[ebp+arg_8]	; int
		push	edi		; lpString
		push	offset unk_7F8360D0 ; int
		call	sub_7F81ABD9

loc_7F8154F0:				; CODE XREF: sub_7F815497+26j
					; sub_7F815497+43j ...
		mov	eax, [ebp+arg_C]
		test	eax, eax
		jz	short loc_7F815502
		push	[ebp+arg_10]
		push	eax
		inc	esi
		push	esi
		call	sub_7F81ABAD

loc_7F815502:				; CODE XREF: sub_7F815497+5Ej
		xor	eax, eax

loc_7F815504:				; CODE XREF: sub_7F815497+1Fj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	14h
sub_7F815497	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F81550B(LPCSTR pSrc)
sub_7F81550B	proc near		; CODE XREF: sub_7F8207A6+42Dp
					; sub_7F823870+2A0p

pDst		= byte ptr -100h
pSrc		= dword	ptr  4

		sub	esp, 100h
		lea	eax, [esp+100h+pDst]
		push	eax		; pDst
		push	[esp+104h+pSrc]	; pSrc
		call	ds:OemToCharA
		lea	ecx, [esp+100h+pDst]
		push	ecx		; lpFileName
		call	sub_7F830070
		add	esp, 4
		test	eax, eax
		mov	eax, 0
		jz	short loc_7F815545
		call	sub_7F830050
		push	dword ptr [eax]
		call	sub_7F8156C0

loc_7F815545:				; CODE XREF: sub_7F81550B+2Cj
		add	esp, 100h
		retn	4
sub_7F81550B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F81554E(LPCSTR pSrc, LPCSTR)
sub_7F81554E	proc near		; CODE XREF: sub_7F823870+23Bp
					; sub_7F823870+24Ep

NewFileName	= byte ptr -200h
pDst		= byte ptr -100h
pSrc		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		lea	eax, [ebp+pDst]
		push	eax		; pDst
		push	[ebp+pSrc]	; pSrc
		call	ds:OemToCharA
		lea	ecx, [ebp+NewFileName]
		push	ecx		; pDst
		push	[ebp+arg_4]	; pSrc
		call	ds:OemToCharA
		lea	ecx, [ebp+NewFileName]
		lea	edx, [ebp+pDst]
		push	ecx		; lpNewFileName
		push	edx		; lpExistingFileName
		call	sub_7F8300A0
		add	esp, 8
		test	eax, eax
		mov	eax, 0
		jz	short loc_7F8155A2
		call	sub_7F830050
		push	dword ptr [eax]
		call	sub_7F8156C0

loc_7F8155A2:				; CODE XREF: sub_7F81554E+46j
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F81554E	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F8155A8(LPCSTR pSrc)
sub_7F8155A8	proc near		; CODE XREF: sub_7F823870+1F4p
					; sub_7F823D4A+FFp

pDst		= byte ptr -100h
pSrc		= dword	ptr  4

		sub	esp, 100h
		lea	eax, [esp+100h+pDst]
		push	eax		; pDst
		push	[esp+104h+pSrc]	; pSrc
		call	ds:OemToCharA
		lea	ecx, [esp+100h+pDst]
		push	ecx		; lpFileName
		call	ds:GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		mov	eax, 0
		jnz	short loc_7F8155E1
		call	ds:GetLastError
		push	eax
		call	sub_7F8156C0

loc_7F8155E1:				; CODE XREF: sub_7F8155A8+2Bj
		add	esp, 100h
		retn	4
sub_7F8155A8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8155EA(LPCSTR pSrc, int)
sub_7F8155EA	proc near		; CODE XREF: sub_7F823870+F5p

pDst		= byte ptr -240h
FindFileData	= _WIN32_FIND_DATAA ptr	-140h
pSrc		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 240h
		push	esi
		lea	eax, [ebp+pDst]
		push	eax		; pDst
		push	[ebp+pSrc]	; pSrc
		call	ds:OemToCharA
		lea	ecx, [ebp+FindFileData]
		lea	edx, [ebp+pDst]
		push	ecx		; lpFindFileData
		push	edx		; lpFileName
		call	ds:FindFirstFileA
		test	eax, eax
		mov	eax, 0
		jnz	short loc_7F815627
		call	ds:GetLastError

loc_7F815627:				; CODE XREF: sub_7F8155EA+35j
		test	eax, eax
		jz	short loc_7F815633
		push	eax
		call	sub_7F8156C0
		jmp	short loc_7F81566A
; ---------------------------------------------------------------------------

loc_7F815633:				; CODE XREF: sub_7F8155EA+3Fj
		mov	esi, [ebp+arg_4]
		mov	ecx, [ebp+FindFileData.nFileSizeLow]
		movzx	eax, word ptr [ebp+FindFileData.dwFileAttributes]
		lea	edx, [esi+8]
		mov	[esi], eax
		lea	eax, [esi+0Ah]
		mov	[esi+0Ch], ecx
		push	eax		; lpFatTime
		lea	ecx, [ebp+FindFileData.ftLastWriteTime]
		push	edx		; lpFatDate
		push	ecx		; lpFileTime
		call	ds:FileTimeToDosDateTime
		xor	eax, eax
		mov	[esi+4], ax
		mov	[esi+10h], eax
		mov	[esi+6], ax

loc_7F81566A:				; CODE XREF: sub_7F8155EA+47j
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F8155EA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F815671	proc near		; CODE XREF: sub_7F823870+E8p

TotalNumberOfClusters= dword ptr -14h
NumberOfFreeClusters= dword ptr	-10h
BytesPerSector	= dword	ptr -0Ch
SectorsPerCluster= dword ptr -8
RootPathName	= byte ptr -4
var_3		= byte ptr -3
var_2		= byte ptr -2
var_1		= byte ptr -1
arg_0		= dword	ptr  8

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		add	al, 40h
		sub	esp, 14h
		lea	ecx, [ebp+TotalNumberOfClusters]
		mov	[ebp+var_3], 3Ah
		push	ecx		; lpTotalNumberOfClusters
		lea	edx, [ebp+NumberOfFreeClusters]
		push	edx		; lpNumberOfFreeClusters
		lea	ecx, [ebp+SectorsPerCluster]
		lea	edx, [ebp+RootPathName]
		mov	[ebp+RootPathName], al
		mov	[ebp+var_2], 5Ch
		mov	[ebp+var_1], 0
		lea	eax, [ebp+BytesPerSector]
		push	eax		; lpBytesPerSector
		push	ecx		; lpSectorsPerCluster
		push	edx		; lpRootPathName
		call	ds:GetDiskFreeSpaceA
		test	eax, eax
		mov	eax, 0
		jz	short loc_7F8156BA
		mov	eax, [ebp+NumberOfFreeClusters]
		imul	eax, [ebp+BytesPerSector]
		imul	eax, [ebp+SectorsPerCluster]

loc_7F8156BA:				; CODE XREF: sub_7F815671+3Cj
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F815671	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8156C0	proc near		; CODE XREF: sub_7F81550B+35p
					; sub_7F81554E+4Fp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jz	short loc_7F8156D6
		cmp	eax, 59h
		jnb	short loc_7F8156D6
		mov	eax, dword_7F8360D8[eax*4]
		jmp	short locret_7F8156DB
; ---------------------------------------------------------------------------

loc_7F8156D6:				; CODE XREF: sub_7F8156C0+6j
					; sub_7F8156C0+Bj
		mov	eax, 200h

locret_7F8156DB:			; CODE XREF: sub_7F8156C0+14j
		retn	4
sub_7F8156C0	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8156DE	proc near		; CODE XREF: sub_7F815751+16Fp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, 20h
		ja	short loc_7F8156FC
		jz	short loc_7F81572D
		test	eax, eax
		jz	short loc_7F81571B
		cmp	eax, 2
		jz	short loc_7F81571F
		cmp	eax, 3
		jz	short loc_7F815726
		cmp	eax, 5
		jmp	short loc_7F815717
; ---------------------------------------------------------------------------

loc_7F8156FC:				; CODE XREF: sub_7F8156DE+7j
		cmp	eax, 35h
		jz	short loc_7F815734
		cmp	eax, 41h
		jz	short loc_7F81573B
		cmp	eax, 70h
		jz	short loc_7F815742
		cmp	eax, 0F0h
		jz	short loc_7F815749
		cmp	eax, 52Eh

loc_7F815717:				; CODE XREF: sub_7F8156DE+1Cj
		jz	short loc_7F81572D
		jmp	short loc_7F815749
; ---------------------------------------------------------------------------

loc_7F81571B:				; CODE XREF: sub_7F8156DE+Dj
		xor	eax, eax
		jmp	short locret_7F81574E
; ---------------------------------------------------------------------------

loc_7F81571F:				; CODE XREF: sub_7F8156DE+12j
		mov	eax, 202h
		jmp	short locret_7F81574E
; ---------------------------------------------------------------------------

loc_7F815726:				; CODE XREF: sub_7F8156DE+17j
		mov	eax, 205h
		jmp	short locret_7F81574E
; ---------------------------------------------------------------------------

loc_7F81572D:				; CODE XREF: sub_7F8156DE+9j
					; sub_7F8156DE:loc_7F815717j
		mov	eax, 203h
		jmp	short locret_7F81574E
; ---------------------------------------------------------------------------

loc_7F815734:				; CODE XREF: sub_7F8156DE+21j
		mov	eax, 207h
		jmp	short locret_7F81574E
; ---------------------------------------------------------------------------

loc_7F81573B:				; CODE XREF: sub_7F8156DE+26j
		mov	eax, 20Dh
		jmp	short locret_7F81574E
; ---------------------------------------------------------------------------

loc_7F815742:				; CODE XREF: sub_7F8156DE+2Bj
		mov	eax, 204h
		jmp	short locret_7F81574E
; ---------------------------------------------------------------------------

loc_7F815749:				; CODE XREF: sub_7F8156DE+32j
					; sub_7F8156DE+3Bj
		mov	eax, 200h

locret_7F81574E:			; CODE XREF: sub_7F8156DE+3Fj
					; sub_7F8156DE+46j ...
		retn	4
sub_7F8156DE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F815751(LPCSTR pSrc, __int16, int)
sub_7F815751	proc near		; CODE XREF: sub_7F820E0E+44p
					; sub_7F8225B6+2Bp

pDst		= byte ptr -10Ch
var_10B		= byte ptr -10Bh
RootPathName	= byte ptr -0Ch
var_B		= byte ptr -0Bh
var_A		= byte ptr -0Ah
var_9		= byte ptr -9
dwCreationDisposition= dword ptr -4
pSrc		= dword	ptr  8
arg_4		= word ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10Ch
		push	ebx
		push	esi
		push	edi
		mov	esi, 80000000h
		mov	edi, 3
		mov	ebx, 80h
		lea	eax, [ebp+pDst]
		mov	[ebp+dwCreationDisposition], edi
		push	eax		; pDst
		push	[ebp+pSrc]	; pSrc
		call	ds:OemToCharA
		cmp	[ebp+var_10B], 3Ah
		jnz	short loc_7F8157AC
		mov	al, [ebp+pDst]
		mov	[ebp+var_B], 3Ah
		mov	[ebp+var_A], 5Ch
		mov	[ebp+var_9], 0
		mov	[ebp+RootPathName], al
		lea	eax, [ebp+RootPathName]
		push	eax		; lpRootPathName
		call	ds:GetDriveTypeA
		cmp	eax, 4
		jmp	short loc_7F8157BC
; ---------------------------------------------------------------------------

loc_7F8157AC:				; CODE XREF: sub_7F815751+35j
		cmp	[ebp+pDst], 5Ch
		jnz	short loc_7F8157C3
		cmp	[ebp+var_10B], 5Ch

loc_7F8157BC:				; CODE XREF: sub_7F815751+59j
		jnz	short loc_7F8157C3
		mov	ebx, 80000080h

loc_7F8157C3:				; CODE XREF: sub_7F815751+62j
					; sub_7F815751:loc_7F8157BCj
		movsx	eax, [ebp+arg_4]
		dec	eax
		cmp	eax, 11h	; switch 18 cases
		ja	loc_7F815884	; jumptable 7F8157D1 default case
		jmp	ds:off_7F815949[eax*4] ; switch	jump
; ---------------------------------------------------------------------------

loc_7F8157D8:				; CODE XREF: sub_7F815751+80j
					; DATA XREF: .text:off_7F815949o
		or	ebx, 8000000h	; jumptable 7F8157D1 case 0
		jmp	loc_7F815884	; jumptable 7F8157D1 default case
; ---------------------------------------------------------------------------

loc_7F8157E3:				; CODE XREF: sub_7F815751+80j
					; DATA XREF: .text:off_7F815949o
		or	ebx, 8000000h	; jumptable 7F8157D1 case 1
		jmp	loc_7F815884	; jumptable 7F8157D1 default case
; ---------------------------------------------------------------------------

loc_7F8157EE:				; CODE XREF: sub_7F815751+80j
					; DATA XREF: .text:off_7F815949o
		mov	edi, 2		; jumptable 7F8157D1 case 2
		jmp	loc_7F815884	; jumptable 7F8157D1 default case
; ---------------------------------------------------------------------------

loc_7F8157F8:				; CODE XREF: sub_7F815751+80j
					; DATA XREF: .text:off_7F815949o
		mov	edi, 1		; jumptable 7F8157D1 case 3
		or	ebx, 8000000h
		jmp	short loc_7F815884 ; jumptable 7F8157D1	default	case
; ---------------------------------------------------------------------------

loc_7F815805:				; CODE XREF: sub_7F815751+80j
					; DATA XREF: .text:off_7F815949o
		xor	edi, edi	; jumptable 7F8157D1 case 4
		jmp	short loc_7F815884 ; jumptable 7F8157D1	default	case
; ---------------------------------------------------------------------------

loc_7F815809:				; CODE XREF: sub_7F815751+80j
					; DATA XREF: .text:off_7F815949o
		mov	esi, 40000000h	; jumptable 7F8157D1 case 5
		jmp	short loc_7F81587F
; ---------------------------------------------------------------------------

loc_7F815810:				; CODE XREF: sub_7F815751+80j
					; DATA XREF: .text:off_7F815949o
		mov	esi, 40000000h	; jumptable 7F8157D1 case 6
		jmp	short loc_7F81587F
; ---------------------------------------------------------------------------

loc_7F815817:				; CODE XREF: sub_7F815751+80j
					; DATA XREF: .text:off_7F815949o
		mov	esi, 40000000h	; jumptable 7F8157D1 case 7
		mov	edi, 2
		jmp	short loc_7F815884 ; jumptable 7F8157D1	default	case
; ---------------------------------------------------------------------------

loc_7F815823:				; CODE XREF: sub_7F815751+80j
					; DATA XREF: .text:off_7F815949o
		mov	esi, 40000000h	; jumptable 7F8157D1 case 8
		mov	edi, 1
		jmp	short loc_7F815884 ; jumptable 7F8157D1	default	case
; ---------------------------------------------------------------------------

loc_7F81582F:				; CODE XREF: sub_7F815751+80j
					; DATA XREF: .text:off_7F815949o
		mov	esi, 40000000h	; jumptable 7F8157D1 case 9
		xor	edi, edi
		jmp	short loc_7F815884 ; jumptable 7F8157D1	default	case
; ---------------------------------------------------------------------------

loc_7F815838:				; CODE XREF: sub_7F815751+80j
					; DATA XREF: .text:off_7F815949o
		mov	esi, 0C0000000h	; jumptable 7F8157D1 case 12
		mov	edi, 2
		jmp	short loc_7F815884 ; jumptable 7F8157D1	default	case
; ---------------------------------------------------------------------------

loc_7F815844:				; CODE XREF: sub_7F815751+80j
					; DATA XREF: .text:off_7F815949o
		mov	esi, 0C0000000h	; jumptable 7F8157D1 case 13
		mov	edi, 1
		jmp	short loc_7F815884 ; jumptable 7F8157D1	default	case
; ---------------------------------------------------------------------------

loc_7F815850:				; CODE XREF: sub_7F815751+80j
					; DATA XREF: .text:off_7F815949o
		mov	esi, 0C0000000h	; jumptable 7F8157D1 case 14
		xor	edi, edi
		jmp	short loc_7F815884 ; jumptable 7F8157D1	default	case
; ---------------------------------------------------------------------------

loc_7F815859:				; CODE XREF: sub_7F815751+80j
					; DATA XREF: .text:off_7F815949o
		mov	esi, 0C0000000h	; jumptable 7F8157D1 case 15
		xor	edi, edi
		mov	[ebp+dwCreationDisposition], 2
		jmp	short loc_7F815884 ; jumptable 7F8157D1	default	case
; ---------------------------------------------------------------------------

loc_7F815869:				; CODE XREF: sub_7F815751+80j
					; DATA XREF: .text:off_7F815949o
		mov	esi, 0C0000000h	; jumptable 7F8157D1 case 16
		xor	edi, edi
		mov	ebx, 2
		mov	[ebp+dwCreationDisposition], ebx
		jmp	short loc_7F815884 ; jumptable 7F8157D1	default	case
; ---------------------------------------------------------------------------

loc_7F81587A:				; CODE XREF: sub_7F815751+80j
					; DATA XREF: .text:off_7F815949o
		mov	esi, 0C0000000h	; jumptable 7F8157D1 cases 10,11,17

loc_7F81587F:				; CODE XREF: sub_7F815751+BDj
					; sub_7F815751+C4j
		mov	edi, 3

loc_7F815884:				; CODE XREF: sub_7F815751+7Aj
					; sub_7F815751+8Dj ...
		push	1		; jumptable 7F8157D1 default case
		call	sub_7F82F323
		push	0		; hTemplateFile
		lea	eax, [ebp+pDst]
		push	ebx		; dwFlagsAndAttributes
		push	[ebp+dwCreationDisposition] ; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	edi		; dwShareMode
		push	esi		; dwDesiredAccess
		push	eax		; lpFileName
		call	ds:CreateFileA
		mov	ebx, eax
		push	0
		call	sub_7F82F323
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_7F8158C7
		mov	eax, [ebp+arg_8]
		mov	dword ptr [eax], 0
		call	ds:GetLastError
		push	eax
		call	sub_7F8156DE
		jmp	short loc_7F815940
; ---------------------------------------------------------------------------

loc_7F8158C7:				; CODE XREF: sub_7F815751+15Dj
		push	1
		push	14h
		call	sub_7F82F03B
		mov	[eax], ebx
		mov	esi, eax
		cmp	[ebp+arg_4], 1
		jz	short loc_7F8158F7
		cmp	[ebp+arg_4], 2
		jz	short loc_7F8158F7
		cmp	[ebp+arg_4], 3
		jz	short loc_7F8158F7
		cmp	[ebp+arg_4], 4
		jz	short loc_7F8158F7
		cmp	[ebp+arg_4], 5
		jnz	short loc_7F815939

loc_7F8158F7:				; CODE XREF: sub_7F815751+188j
					; sub_7F815751+18Fj ...
		xor	edi, edi
		push	edi		; lpName
		push	edi		; dwMaximumSizeLow
		push	edi		; dwMaximumSizeHigh
		push	2		; flProtect
		push	edi		; lpFileMappingAttributes
		push	ebx		; hFile
		call	ds:CreateFileMappingA
		mov	[esi+4], eax
		test	eax, eax
		jz	short loc_7F81592C
		push	edi		; dwNumberOfBytesToMap
		push	edi		; dwFileOffsetLow
		push	edi		; dwFileOffsetHigh
		push	4		; dwDesiredAccess
		push	eax		; hFileMappingObject
		call	ds:MapViewOfFile
		mov	[esi+8], eax
		cmp	eax, edi
		jnz	short loc_7F81592C
		push	dword ptr [esi+4] ; hObject
		call	ds:CloseHandle
		mov	[esi+4], edi

loc_7F81592C:				; CODE XREF: sub_7F815751+1BAj
					; sub_7F815751+1CDj
		push	0		; lpFileSizeHigh
		push	dword ptr [esi]	; hFile
		call	ds:GetFileSize
		mov	[esi+0Ch], eax

loc_7F815939:				; CODE XREF: sub_7F815751+1A4j
		mov	eax, [ebp+arg_8]
		mov	[eax], esi
		xor	eax, eax

loc_7F815940:				; CODE XREF: sub_7F815751+174j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F815751	endp

; ---------------------------------------------------------------------------
off_7F815949	dd offset loc_7F8157D8	; DATA XREF: sub_7F815751+80r
		dd offset loc_7F8157E3	; jump table for switch	statement
		dd offset loc_7F8157EE
		dd offset loc_7F8157F8
		dd offset loc_7F815805
		dd offset loc_7F815809
		dd offset loc_7F815810
		dd offset loc_7F815817
		dd offset loc_7F815823
		dd offset loc_7F81582F
		dd offset loc_7F81587A
		dd offset loc_7F81587A
		dd offset loc_7F815838
		dd offset loc_7F815844
		dd offset loc_7F815850
		dd offset loc_7F815859
		dd offset loc_7F815869
		dd offset loc_7F81587A

; =============== S U B	R O U T	I N E =======================================


sub_7F815991	proc near		; CODE XREF: sub_7F812460+C6p
					; sub_7F8129CD+BDp ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	ebx, [esp+8+arg_0]
		push	edi
		push	ebp
		mov	edi, 0
		push	dword ptr [ebx]	; hObject
		call	ds:CloseHandle
		test	eax, eax
		jnz	short loc_7F8159B2
		call	ds:GetLastError
		mov	edi, eax

loc_7F8159B2:				; CODE XREF: sub_7F815991+17j
		lea	esi, [ebx+4]
		xor	ebp, ebp
		cmp	[esi], ebp
		jz	short loc_7F8159CE
		push	dword ptr [ebx+8] ; lpBaseAddress
		call	ds:UnmapViewOfFile
		push	dword ptr [esi]	; hObject
		call	ds:CloseHandle
		mov	[esi], ebp

loc_7F8159CE:				; CODE XREF: sub_7F815991+28j
		push	ebx
		call	sub_7F82F149
		mov	eax, 0
		test	edi, edi
		jz	short loc_7F8159E3
		push	edi
		call	sub_7F8156C0

loc_7F8159E3:				; CODE XREF: sub_7F815991+4Aj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_7F815991	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8159EA	proc near		; CODE XREF: sub_7F8129CD+92p
					; sub_7F8129CD+19Ep

TargetHandle	= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		push	dword ptr [edi]	; hFile
		call	ds:FlushFileBuffers
		test	eax, eax
		jnz	short loc_7F815A18
		mov	ecx, [ebp+arg_4]
		mov	dword ptr [ecx], 0
		call	ds:GetLastError
		push	eax
		call	sub_7F8156C0
		jmp	short loc_7F815A5E
; ---------------------------------------------------------------------------

loc_7F815A18:				; CODE XREF: sub_7F8159EA+15j
		xor	esi, esi
		call	ds:GetCurrentProcess
		push	2		; dwOptions
		lea	ecx, [ebp+TargetHandle]
		push	esi		; bInheritHandle
		push	esi		; dwDesiredAccess
		push	ecx		; lpTargetHandle
		push	eax		; hTargetProcessHandle
		push	dword ptr [edi]	; hSourceHandle
		push	eax		; hSourceProcessHandle
		call	ds:DuplicateHandle
		test	eax, eax
		jnz	short loc_7F815A49
		mov	ecx, [ebp+arg_4]
		mov	[ecx], esi
		call	ds:GetLastError
		push	eax
		call	sub_7F8156C0
		jmp	short loc_7F815A5E
; ---------------------------------------------------------------------------

loc_7F815A49:				; CODE XREF: sub_7F8159EA+4Aj
		push	1
		push	14h
		call	sub_7F82F03B
		mov	ecx, [ebp+TargetHandle]
		mov	edx, [ebp+arg_4]
		mov	[eax], ecx
		mov	[edx], eax
		xor	eax, eax

loc_7F815A5E:				; CODE XREF: sub_7F8159EA+2Cj
					; sub_7F8159EA+5Dj
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F8159EA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F815A66(int, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead)
sub_7F815A66	proc near		; CODE XREF: sub_7F8127E7+57p
					; sub_7F812BEA+3Cp ...

ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
lpBuffer	= dword	ptr  0Ch
nNumberOfBytesToRead= dword ptr	 10h
lpNumberOfBytesRead= dword ptr	14h

		mov	eax, large fs:0
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset stru_7F8019D0
		push	offset sub_7F82FBD0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+ms_exc.old_esp], esp
		xor	eax, eax
		mov	[ebp+ms_exc.registration.TryLevel], eax
		mov	ebx, [ebp+arg_0]
		cmp	[ebx+4], eax
		jz	short loc_7F815AD7
		mov	esi, [ebx+10h]
		mov	ecx, [ebx+0Ch]
		mov	eax, [ebp+nNumberOfBytesToRead]
		lea	edx, [esi+eax]
		cmp	edx, ecx
		jbe	short loc_7F815AB0
		sub	ecx, esi
		mov	eax, ecx
		mov	[ebp+nNumberOfBytesToRead], eax

loc_7F815AB0:				; CODE XREF: sub_7F815A66+41j
		mov	edi, [ebp+lpBuffer]
		add	esi, [ebx+8]
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		add	[ebx+10h], eax
		mov	esi, [ebp+lpNumberOfBytesRead]
		mov	[esi], eax
		xor	eax, eax
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		jmp	short loc_7F815B39
; ---------------------------------------------------------------------------

loc_7F815AD7:				; CODE XREF: sub_7F815A66+31j
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		push	1
		call	sub_7F82F323
		push	0		; lpOverlapped
		mov	esi, [ebp+lpNumberOfBytesRead]
		push	esi		; lpNumberOfBytesRead
		mov	edi, 0
		push	[ebp+nNumberOfBytesToRead] ; nNumberOfBytesToRead
		push	[ebp+lpBuffer]	; lpBuffer
		push	dword ptr [ebx]	; hFile
		call	ds:ReadFile
		test	eax, eax
		jnz	short loc_7F815B0A
		call	ds:GetLastError
		mov	edi, eax

loc_7F815B0A:				; CODE XREF: sub_7F815A66+9Aj
		xor	ebx, ebx
		push	ebx
		call	sub_7F82F323
		test	edi, edi
		jz	short loc_7F815B20
		push	edi
		mov	[esi], ebx
		call	sub_7F8156C0
		jmp	short loc_7F815B39
; ---------------------------------------------------------------------------

loc_7F815B20:				; CODE XREF: sub_7F815A66+AEj
		xor	eax, eax
		jmp	short loc_7F815B39
; ---------------------------------------------------------------------------

loc_7F815B24:				; DATA XREF: .text:stru_7F8019D0o
		mov	eax, 1		; Exception filter 0 for function 7F815A66
		retn
; ---------------------------------------------------------------------------

loc_7F815B2A:				; DATA XREF: .text:stru_7F8019D0o
		mov	esp, [ebp+ms_exc.old_esp] ; Exception handler 0	for function 7F815A66
		mov	[ebp+ms_exc.registration.TryLevel], 0FFFFFFFFh
		mov	eax, 200h

loc_7F815B39:				; CODE XREF: sub_7F815A66+6Fj
					; sub_7F815A66+B8j ...
		mov	ecx, [ebp+ms_exc.registration.Next]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F815A66	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F815B4C(int, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten)
sub_7F815B4C	proc near		; CODE XREF: sub_7F812653+105p
					; sub_7F8129CD+129p ...

arg_0		= dword	ptr  4
lpBuffer	= dword	ptr  8
nNumberOfBytesToWrite= dword ptr  0Ch
lpNumberOfBytesWritten=	dword ptr  10h

		push	ebx
		push	esi
		mov	ebx, [esp+8+arg_0]
		push	edi
		push	ebp
		cmp	dword ptr [ebx+4], 0
		jz	short loc_7F815B61
		mov	eax, 203h
		jmp	short loc_7F815BC3
; ---------------------------------------------------------------------------

loc_7F815B61:				; CODE XREF: sub_7F815B4C+Cj
		mov	esi, [esp+10h+nNumberOfBytesToWrite]
		test	esi, esi
		jnz	short loc_7F815B6D
		xor	eax, eax
		jmp	short loc_7F815BC3
; ---------------------------------------------------------------------------

loc_7F815B6D:				; CODE XREF: sub_7F815B4C+1Bj
		push	1
		call	sub_7F82F323
		mov	edi, [esp+10h+lpNumberOfBytesWritten]
		push	0		; lpOverlapped
		push	edi		; lpNumberOfBytesWritten
		push	esi		; nNumberOfBytesToWrite
		push	[esp+1Ch+lpBuffer] ; lpBuffer
		push	dword ptr [ebx]	; hFile
		call	ds:WriteFile
		mov	ebx, 0
		test	eax, eax
		jnz	short loc_7F815B99
		call	ds:GetLastError
		mov	ebx, eax

loc_7F815B99:				; CODE XREF: sub_7F815B4C+43j
		xor	ebp, ebp
		push	ebp
		call	sub_7F82F323
		test	ebx, ebx
		jz	short loc_7F815BAF
		push	ebx
		mov	[edi], ebp
		call	sub_7F8156C0
		jmp	short loc_7F815BC3
; ---------------------------------------------------------------------------

loc_7F815BAF:				; CODE XREF: sub_7F815B4C+57j
		mov	eax, [edi]
		sub	eax, esi
		cmp	eax, 1
		mov	eax, 0
		adc	eax, 0FFFFFFFFh
		and	eax, 215h

loc_7F815BC3:				; CODE XREF: sub_7F815B4C+13j
					; sub_7F815B4C+1Fj ...
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	10h
sub_7F815B4C	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F815BCA	proc near		; CODE XREF: sub_7F812C72+A0p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	dword ptr [eax+4], 0
		jz	short loc_7F815BDB
		mov	eax, 203h
		jmp	short locret_7F815C00
; ---------------------------------------------------------------------------

loc_7F815BDB:				; CODE XREF: sub_7F815BCA+8j
		push	dword ptr [eax]	; hFile
		call	ds:SetEndOfFile
		test	eax, eax
		mov	eax, 0
		jnz	short loc_7F815BF2
		call	ds:GetLastError

loc_7F815BF2:				; CODE XREF: sub_7F815BCA+20j
		test	eax, eax
		jz	short loc_7F815BFE
		push	eax
		call	sub_7F8156C0
		jmp	short locret_7F815C00
; ---------------------------------------------------------------------------

loc_7F815BFE:				; CODE XREF: sub_7F815BCA+2Aj
		xor	eax, eax

locret_7F815C00:			; CODE XREF: sub_7F815BCA+Fj
					; sub_7F815BCA+32j
		retn	4
sub_7F815BCA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F815C03(int, LONG lDistanceToMove,	__int16)
sub_7F815C03	proc near		; CODE XREF: sub_7F812653+184p
					; sub_7F8127E7+32p ...

dwMoveMethod	= dword	ptr -4
arg_0		= dword	ptr  8
lDistanceToMove	= dword	ptr  0Ch
arg_8		= word ptr  10h

		push	ebp
		mov	ecx, [esp+arg_0]
		movsx	eax, [esp+arg_8]
		mov	ebp, esp
		sub	esp, 4
		cmp	dword ptr [ecx+4], 0
		jz	short loc_7F815C50
		cmp	eax, 1
		jz	short loc_7F815C36
		cmp	eax, 2
		jz	short loc_7F815C3B
		cmp	eax, 3
		jz	short loc_7F815C43
		mov	eax, [ebp+dwMoveMethod]

loc_7F815C2A:				; CODE XREF: sub_7F815C03+36j
					; sub_7F815C03+3Ej ...
		cmp	[ecx+0Ch], eax
		jnb	short loc_7F815C4B
		mov	eax, 201h
		jmp	short loc_7F815C97
; ---------------------------------------------------------------------------

loc_7F815C36:				; CODE XREF: sub_7F815C03+18j
		mov	eax, [ebp+lDistanceToMove]
		jmp	short loc_7F815C2A
; ---------------------------------------------------------------------------

loc_7F815C3B:				; CODE XREF: sub_7F815C03+1Dj
		mov	eax, [ecx+10h]
		add	eax, [ebp+lDistanceToMove]
		jmp	short loc_7F815C2A
; ---------------------------------------------------------------------------

loc_7F815C43:				; CODE XREF: sub_7F815C03+22j
		mov	eax, [ecx+0Ch]
		add	eax, [ebp+lDistanceToMove]
		jmp	short loc_7F815C2A
; ---------------------------------------------------------------------------

loc_7F815C4B:				; CODE XREF: sub_7F815C03+2Aj
		mov	[ecx+10h], eax
		jmp	short loc_7F815C95
; ---------------------------------------------------------------------------

loc_7F815C50:				; CODE XREF: sub_7F815C03+13j
		cmp	eax, 1
		jz	short loc_7F815C83
		cmp	eax, 2
		jz	short loc_7F815C87
		cmp	eax, 3
		jz	short loc_7F815C8E
		mov	eax, [ebp+dwMoveMethod]

loc_7F815C62:				; CODE XREF: sub_7F815C03+82j
					; sub_7F815C03+89j ...
		push	eax		; dwMoveMethod
		push	0		; lpDistanceToMoveHigh
		push	[ebp+lDistanceToMove] ;	lDistanceToMove
		push	dword ptr [ecx]	; hFile
		call	ds:SetFilePointer
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_7F815C95
		call	ds:GetLastError
		push	eax
		call	sub_7F8156C0
		jmp	short loc_7F815C97
; ---------------------------------------------------------------------------

loc_7F815C83:				; CODE XREF: sub_7F815C03+50j
		xor	eax, eax
		jmp	short loc_7F815C62
; ---------------------------------------------------------------------------

loc_7F815C87:				; CODE XREF: sub_7F815C03+55j
		mov	eax, 1
		jmp	short loc_7F815C62
; ---------------------------------------------------------------------------

loc_7F815C8E:				; CODE XREF: sub_7F815C03+5Aj
		mov	eax, 2
		jmp	short loc_7F815C62
; ---------------------------------------------------------------------------

loc_7F815C95:				; CODE XREF: sub_7F815C03+4Bj
					; sub_7F815C03+70j
		xor	eax, eax

loc_7F815C97:				; CODE XREF: sub_7F815C03+31j
					; sub_7F815C03+7Ej
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F815C03	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F815C9D(int, __int16, LONG	lDistanceToMove, DWORD nNumberOfBytesToRead, LPVOID lpBuffer)
sub_7F815C9D	proc near		; CODE XREF: sub_7F812653+8Ap
					; sub_7F823EA8+1Cp ...

var_8		= dword	ptr -8
NumberOfBytesRead= dword ptr -4
arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch
lDistanceToMove	= dword	ptr  10h
nNumberOfBytesToRead= dword ptr	 14h
lpBuffer	= dword	ptr  18h

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 8
		push	esi
		mov	[ebp+NumberOfBytesRead], eax
		mov	esi, [ebp+arg_0]
		cmp	[esi+4], eax
		jz	short loc_7F815CEA
		cmp	[ebp+arg_4], 2
		jnz	short loc_7F815CC2
		mov	eax, 203h
		jmp	loc_7F815D9B
; ---------------------------------------------------------------------------

loc_7F815CC2:				; CODE XREF: sub_7F815C9D+19j
		push	1		; __int16
		push	[ebp+lDistanceToMove] ;	lDistanceToMove
		push	esi		; int
		call	sub_7F815C03
		test	eax, eax
		jnz	loc_7F815D9B
		lea	eax, [ebp+var_8]
		push	eax		; lpNumberOfBytesRead
		push	[ebp+nNumberOfBytesToRead] ; nNumberOfBytesToRead
		push	[ebp+lpBuffer]	; lpBuffer
		push	esi		; int
		call	sub_7F815A66
		jmp	loc_7F815D9B
; ---------------------------------------------------------------------------

loc_7F815CEA:				; CODE XREF: sub_7F815C9D+12j
		push	0		; dwMoveMethod
		push	0		; lpDistanceToMoveHigh
		push	[ebp+lDistanceToMove] ;	lDistanceToMove
		push	dword ptr [esi]	; hFile
		call	ds:SetFilePointer
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_7F815D0F
		call	ds:GetLastError
		push	eax
		call	sub_7F8156C0
		jmp	loc_7F815D9B
; ---------------------------------------------------------------------------

loc_7F815D0F:				; CODE XREF: sub_7F815C9D+5Fj
		cmp	[ebp+arg_4], 1
		push	1
		jnz	short loc_7F815D55
		call	sub_7F82F323
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesRead]
		push	eax		; lpNumberOfBytesRead
		push	[ebp+nNumberOfBytesToRead] ; nNumberOfBytesToRead
		push	[ebp+lpBuffer]	; lpBuffer
		push	dword ptr [esi]	; hFile
		call	ds:ReadFile
		mov	esi, 0
		test	eax, eax
		jnz	short loc_7F815D42
		call	ds:GetLastError
		mov	esi, eax

loc_7F815D42:				; CODE XREF: sub_7F815C9D+9Bj
		push	0
		call	sub_7F82F323

loc_7F815D49:				; CODE XREF: sub_7F815C9D+F3j
		test	esi, esi
		jz	short loc_7F815D99

loc_7F815D4D:				; CODE XREF: sub_7F815C9D+EBj
		push	esi
		call	sub_7F8156C0
		jmp	short loc_7F815D9B
; ---------------------------------------------------------------------------

loc_7F815D55:				; CODE XREF: sub_7F815C9D+79j
		call	sub_7F82F323
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesRead]
		push	eax		; lpNumberOfBytesWritten
		push	[ebp+nNumberOfBytesToRead] ; nNumberOfBytesToWrite
		push	[ebp+lpBuffer]	; lpBuffer
		push	dword ptr [esi]	; hFile
		call	ds:WriteFile
		mov	esi, 0
		test	eax, eax
		jnz	short loc_7F815D7F
		call	ds:GetLastError
		mov	esi, eax

loc_7F815D7F:				; CODE XREF: sub_7F815C9D+D8j
		push	0
		call	sub_7F82F323
		test	esi, esi
		jnz	short loc_7F815D4D
		mov	eax, [ebp+nNumberOfBytesToRead]
		cmp	eax, [ebp+NumberOfBytesRead]
		jz	short loc_7F815D49
		mov	eax, 215h
		jmp	short loc_7F815D9B
; ---------------------------------------------------------------------------

loc_7F815D99:				; CODE XREF: sub_7F815C9D+AEj
		xor	eax, eax

loc_7F815D9B:				; CODE XREF: sub_7F815C9D+20j
					; sub_7F815C9D+32j ...
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F815C9D	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F815DA2	proc near		; CODE XREF: sub_7F8225B6+A7p
					; sub_7F822F66+2C7p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		cmp	dword ptr [eax+4], 0
		jz	short loc_7F815DBA
		mov	eax, [eax+0Ch]
		mov	ecx, [esp+4+arg_4]
		mov	[ecx], eax
		xor	eax, eax
		jmp	short loc_7F815DE3
; ---------------------------------------------------------------------------

loc_7F815DBA:				; CODE XREF: sub_7F815DA2+9j
		xor	esi, esi
		push	esi		; lpFileSizeHigh
		push	dword ptr [eax]	; hFile
		call	ds:GetFileSize
		mov	ecx, [esp+4+arg_4]
		cmp	eax, 0FFFFFFFFh
		mov	[ecx], eax
		mov	eax, 0
		jnz	short loc_7F815DE3
		mov	[ecx], esi
		call	ds:GetLastError
		push	eax
		call	sub_7F8156C0

loc_7F815DE3:				; CODE XREF: sub_7F815DA2+16j
					; sub_7F815DA2+31j
		pop	esi
		retn	8
sub_7F815DA2	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F815DE7	proc near		; CODE XREF: sub_7F82A7F5+4p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_7F815E14
		push	dword ptr [eax]	; hFile
		call	ds:FlushFileBuffers
		test	eax, eax
		mov	eax, 0
		jnz	short loc_7F815E08
		call	ds:GetLastError

loc_7F815E08:				; CODE XREF: sub_7F815DE7+19j
		test	eax, eax
		jz	short loc_7F815E14
		push	eax
		call	sub_7F8156C0
		jmp	short locret_7F815E16
; ---------------------------------------------------------------------------

loc_7F815E14:				; CODE XREF: sub_7F815DE7+8j
					; sub_7F815DE7+23j
		xor	eax, eax

locret_7F815E16:			; CODE XREF: sub_7F815DE7+2Bj
		retn	4
sub_7F815DE7	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F815E19(int, DWORD	dwFileOffsetLow, DWORD nNumberOfBytesToLockLow)
sub_7F815E19	proc near		; CODE XREF: sub_7F8129CD+DDp
					; sub_7F8129CD+1E2p ...

arg_0		= dword	ptr  4
dwFileOffsetLow	= dword	ptr  8
nNumberOfBytesToLockLow= dword ptr  0Ch

		mov	edx, [esp+arg_0]
		push	0		; nNumberOfBytesToLockHigh
		push	[esp+4+nNumberOfBytesToLockLow]	; nNumberOfBytesToLockLow
		push	0		; dwFileOffsetHigh
		push	[esp+0Ch+dwFileOffsetLow] ; dwFileOffsetLow
		push	dword ptr [edx]	; hFile
		call	ds:LockFile
		test	eax, eax
		mov	eax, 0
		jnz	short loc_7F815E40
		call	ds:GetLastError

loc_7F815E40:				; CODE XREF: sub_7F815E19+1Fj
		test	eax, eax
		jz	short loc_7F815E4C
		push	eax
		call	sub_7F8156C0
		jmp	short locret_7F815E4E
; ---------------------------------------------------------------------------

loc_7F815E4C:				; CODE XREF: sub_7F815E19+29j
		xor	eax, eax

locret_7F815E4E:			; CODE XREF: sub_7F815E19+31j
		retn	0Ch
sub_7F815E19	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F815E51(int, DWORD	dwFileOffsetLow, DWORD nNumberOfBytesToUnlockLow)
sub_7F815E51	proc near		; CODE XREF: sub_7F820F2F+116p
					; sub_7F821055+4Fp ...

arg_0		= dword	ptr  4
dwFileOffsetLow	= dword	ptr  8
nNumberOfBytesToUnlockLow= dword ptr  0Ch

		mov	edx, [esp+arg_0]
		push	0		; nNumberOfBytesToUnlockHigh
		push	[esp+4+nNumberOfBytesToUnlockLow] ; nNumberOfBytesToUnlockLow
		push	0		; dwFileOffsetHigh
		push	[esp+0Ch+dwFileOffsetLow] ; dwFileOffsetLow
		push	dword ptr [edx]	; hFile
		call	ds:UnlockFile
		test	eax, eax
		mov	eax, 0
		jnz	short loc_7F815E78
		call	ds:GetLastError

loc_7F815E78:				; CODE XREF: sub_7F815E51+1Fj
		test	eax, eax
		jz	short loc_7F815E84
		push	eax
		call	sub_7F8156C0
		jmp	short locret_7F815E86
; ---------------------------------------------------------------------------

loc_7F815E84:				; CODE XREF: sub_7F815E51+29j
		xor	eax, eax

locret_7F815E86:			; CODE XREF: sub_7F815E51+31j
		retn	0Ch
sub_7F815E51	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F815E89	proc near		; CODE XREF: sub_7F8207A6+395p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		xor	esi, esi
		cmp	[ebp+arg_4], esi
		jz	short loc_7F815EDF
		mov	al, byte ptr [ebp+arg_4]
		test	al, al
		jge	short loc_7F815EBE
		cmp	al, 91h
		jb	short loc_7F815EA7
		xor	eax, eax
		jmp	short loc_7F815EB2
; ---------------------------------------------------------------------------

loc_7F815EA7:				; CODE XREF: sub_7F815E89+18j
		movzx	eax, al
		movzx	eax, word_7F8358D0[eax*2]

loc_7F815EB2:				; CODE XREF: sub_7F815E89+1Cj
		test	ah, 80h
		jnz	short loc_7F815EDB
		mov	edi, 1015h
		jmp	short loc_7F815EDB
; ---------------------------------------------------------------------------

loc_7F815EBE:				; CODE XREF: sub_7F815E89+14j
		test	[ebp+arg_4], 0FFFFFF00h
		jz	short loc_7F815EDB
		mov	eax, 8000h
		push	eax
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82CFC5
		mov	edi, eax

loc_7F815EDB:				; CODE XREF: sub_7F815E89+2Cj
					; sub_7F815E89+33j ...
		test	edi, edi
		jnz	short loc_7F815F4A

loc_7F815EDF:				; CODE XREF: sub_7F815E89+Dj
		push	10h
		push	18h
		call	sub_7F82F18D
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F815F41
		mov	ebx, [esi]
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_4]
		mov	edx, [ebp+arg_10]
		push	esi
		mov	[ebx], eax
		mov	eax, [ebp+arg_14]
		push	offset sub_7F815FC3
		push	40000h
		mov	[ebx+4], ecx
		push	80h
		mov	[ebx+10h], edx
		push	[ebp+arg_0]
		mov	[ebx+14h], eax
		call	sub_7F829F2E
		mov	[ebx+8], eax
		test	eax, eax
		jz	short loc_7F815F41
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F829F2E
		mov	[ebx+0Ch], eax
		test	eax, eax
		jnz	short loc_7F815F46

loc_7F815F41:				; CODE XREF: sub_7F815E89+63j
					; sub_7F815E89+9Bj
		mov	edi, 400h

loc_7F815F46:				; CODE XREF: sub_7F815E89+B6j
		test	edi, edi
		jz	short loc_7F815F6B

loc_7F815F4A:				; CODE XREF: sub_7F815E89+54j
		test	esi, esi
		jz	short loc_7F815F6B
		mov	eax, [esi]
		mov	eax, [eax+8]
		test	eax, eax
		jz	short loc_7F815F65
		push	eax
		push	80h
		push	[ebp+arg_0]
		call	sub_7F829FD2

loc_7F815F65:				; CODE XREF: sub_7F815E89+CCj
		push	esi
		call	sub_7F82F1E1

loc_7F815F6B:				; CODE XREF: sub_7F815E89+BFj
					; sub_7F815E89+C3j
		xor	ecx, ecx
		mov	eax, [ebp+arg_C]
		test	edi, edi
		jz	short loc_7F815F78
		mov	[eax], ecx
		jmp	short loc_7F815F7A
; ---------------------------------------------------------------------------

loc_7F815F78:				; CODE XREF: sub_7F815E89+E9j
		mov	[eax], esi

loc_7F815F7A:				; CODE XREF: sub_7F815E89+EDj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	18h
sub_7F815E89	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F815F83	proc near		; CODE XREF: sub_7F815FC3+2Fp
					; sub_7F8207A6+3AEp

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		mov	edi, [esi]
		mov	ebx, [edi]
		mov	eax, [ebx+0Ch]
		test	eax, eax
		jz	short loc_7F815FA0
		push	eax
		push	dword ptr [ebx+4]
		push	dword ptr [ebx]
		call	sub_7F829FD2

loc_7F815FA0:				; CODE XREF: sub_7F815F83+10j
		push	dword ptr [ebx+8]
		push	80h
		push	dword ptr [ebx]
		call	sub_7F829FD2
		push	edi
		call	sub_7F82F1E1
		xor	eax, eax
		pop	edi
		mov	dword ptr [esi], 0
		pop	esi
		pop	ebx
		retn	4
sub_7F815F83	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F815FC3	proc near		; DATA XREF: sub_7F815E89+76o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 4
		mov	ecx, [eax]
		push	esi
		mov	esi, [ebp+arg_8]
		mov	edx, [ecx]
		cmp	[esi+4], edx
		jnz	short loc_7F815FF7
		mov	[ebp+var_4], eax
		mov	eax, [ecx+14h]
		mov	edx, [ecx+10h]
		test	edx, edx
		jz	short loc_7F815FEE
		push	esi
		push	[ebp+arg_4]
		push	eax
		call	edx

loc_7F815FEE:				; CODE XREF: sub_7F815FC3+22j
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_7F815F83

loc_7F815FF7:				; CODE XREF: sub_7F815FC3+15j
		xor	eax, eax
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F815FC3	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F816000	proc near		; CODE XREF: sub_7F81F20F+Cp
					; sub_7F826027+Fp ...
		call	GetCurrentProcessId
		cmp	eax, dword_7F837098
		jnz	short loc_7F816014
		mov	eax, dword_7F83709C
		jmp	short loc_7F816019
; ---------------------------------------------------------------------------

loc_7F816014:				; CODE XREF: sub_7F816000+Bj
		call	sub_7F824327

loc_7F816019:				; CODE XREF: sub_7F816000+12j
		mov	eax, [eax+14h]
		retn
sub_7F816000	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81601D	proc near		; DATA XREF: sub_7F816044+11Bo
					; sub_7F81635D+A7o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	edx, [eax]
		mov	eax, [esp+arg_4]
		mov	ecx, [edx+14h]
		mov	edx, [eax]
		mov	eax, [edx+14h]
		cmp	eax, ecx
		jge	short loc_7F81603A
		mov	eax, 0FFFFFFFFh
		jmp	short locret_7F816043
; ---------------------------------------------------------------------------

loc_7F81603A:				; CODE XREF: sub_7F81601D+14j
		mov	eax, 1
		jg	short locret_7F816043
		xor	eax, eax

locret_7F816043:			; CODE XREF: sub_7F81601D+1Bj
					; sub_7F81601D+22j
		retn
sub_7F81601D	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F816044	proc near		; CODE XREF: sub_7F81217E+9Bp
					; sub_7F81217E+C5p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h
arg_14		= dword	ptr  18h

		push	ebx
		push	esi
		push	edi
		push	ebp
		call	GetCurrentProcessId
		cmp	eax, dword_7F837098
		jnz	short loc_7F81605D
		mov	esi, dword_7F83709C
		jmp	short loc_7F816064
; ---------------------------------------------------------------------------

loc_7F81605D:				; CODE XREF: sub_7F816044+Fj
		call	sub_7F824327
		mov	esi, eax

loc_7F816064:				; CODE XREF: sub_7F816044+17j
		call	sub_7F82EF02
		test	eax, eax
		jnz	short loc_7F816074
		xor	eax, eax
		jmp	loc_7F8161CC
; ---------------------------------------------------------------------------

loc_7F816074:				; CODE XREF: sub_7F816044+27j
		mov	eax, [esi+18h]
		push	0
		test	eax, eax
		jz	short loc_7F8160CD
		mov	ecx, [esi+20h]
		lea	edx, ds:4[ecx*4]
		push	edx
		push	eax
		call	sub_7F82F0CD
		test	eax, eax
		jz	short loc_7F8160C1
		mov	[esi+18h], eax

loc_7F816095:				; CODE XREF: sub_7F816044+95j
		xor	ebx, ebx
		push	ebx
		push	20h
		call	sub_7F82F03B
		cmp	eax, ebx
		mov	edi, eax
		jnz	short loc_7F8160E7
		cmp	[esi+20h], ebx
		jnz	short loc_7F8160B5
		push	dword ptr [esi+18h]
		call	sub_7F82F149
		mov	[esi+18h], ebx

loc_7F8160B5:				; CODE XREF: sub_7F816044+64j
		call	sub_7F82EF31
		xor	eax, eax
		jmp	loc_7F8161CC
; ---------------------------------------------------------------------------

loc_7F8160C1:				; CODE XREF: sub_7F816044+4Cj
		call	sub_7F82EF31
		xor	eax, eax
		jmp	loc_7F8161CC
; ---------------------------------------------------------------------------

loc_7F8160CD:				; CODE XREF: sub_7F816044+37j
		push	4
		call	sub_7F82F03B
		mov	[esi+18h], eax
		test	eax, eax
		jnz	short loc_7F816095
		call	sub_7F82EF31
		xor	eax, eax
		jmp	loc_7F8161CC
; ---------------------------------------------------------------------------

loc_7F8160E7:				; CODE XREF: sub_7F816044+5Fj
		mov	ax, [edi]
		mov	ecx, [esp+10h+arg_14]
		and	ax, 0FFFDh
		mov	ebx, ecx
		mov	[edi], ax
		and	ebx, 20h
		and	ax, 0FFFBh
		cmp	ebx, 1
		sbb	edx, edx
		neg	edx
		xor	dx, ax
		mov	ebp, [esp+10h+arg_4]
		and	dx, 1
		xor	dx, ax
		mov	[edi], ax
		mov	eax, [esp+10h+arg_0]
		mov	[edi], dx
		mov	edx, [esp+10h+arg_8]
		mov	[edi+4], eax
		mov	eax, [esp+10h+arg_C]
		mov	[edi+8], ebp
		mov	[edi+0Ch], edx
		mov	[edi+10h], ecx
		mov	ecx, [esp+10h+arg_10]
		mov	[edi+14h], eax
		mov	[edi+18h], ecx
		call	ds:GetTickCount
		mov	[edi+1Ch], eax
		mov	edx, [esi+20h]
		mov	ecx, [esi+18h]
		mov	[ecx+edx*4], edi
		mov	edx, [esi+20h]
		inc	edx
		mov	[esi+20h], edx
		cmp	edx, 1
		jle	short loc_7F816192
		mov	ecx, [esi+18h]
		mov	eax, [esi+1Ch]
		push	offset sub_7F81601D
		push	4
		mov	ebp, [ecx+eax*4]
		push	edx
		push	ecx
		call	sub_7F8300E0
		add	esp, 10h
		xor	ecx, ecx
		mov	edx, [esi+20h]
		cmp	edx, ecx
		jle	short loc_7F816199
		mov	eax, [esi+18h]

loc_7F81617F:				; CODE XREF: sub_7F816044+145j
		cmp	[eax], ebp
		jz	short loc_7F81618D
		add	eax, 4
		inc	ecx
		cmp	ecx, edx
		jl	short loc_7F81617F
		jmp	short loc_7F816199
; ---------------------------------------------------------------------------

loc_7F81618D:				; CODE XREF: sub_7F816044+13Dj
		mov	[esi+1Ch], ecx
		jmp	short loc_7F816199
; ---------------------------------------------------------------------------

loc_7F816192:				; CODE XREF: sub_7F816044+113j
		mov	dword ptr [esi+1Ch], 0

loc_7F816199:				; CODE XREF: sub_7F816044+136j
					; sub_7F816044+147j ...
		xor	ebp, ebp
		test	ebx, ebx
		jnz	short loc_7F8161C5
		add	esi, 24h
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_7F8161B2
		push	eax		; uIDEvent
		push	ebp		; hWnd
		call	ds:KillTimer
		mov	[esi], ebp

loc_7F8161B2:				; CODE XREF: sub_7F816044+162j
		push	offset TimerFunc ; lpTimerFunc
		push	1		; uElapse
		push	0		; nIDEvent
		push	0		; hWnd
		call	ds:SetTimer
		mov	[esi], eax

loc_7F8161C5:				; CODE XREF: sub_7F816044+159j
		call	sub_7F82EF31
		mov	eax, edi

loc_7F8161CC:				; CODE XREF: sub_7F816044+2Bj
					; sub_7F816044+78j ...
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	18h
sub_7F816044	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8161D3	proc near		; CODE XREF: sub_7F812460+18Dp
					; sub_7F812632+10p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		call	GetCurrentProcessId
		cmp	eax, dword_7F837098
		jnz	short loc_7F8161EB
		mov	edi, dword_7F83709C
		jmp	short loc_7F8161F2
; ---------------------------------------------------------------------------

loc_7F8161EB:				; CODE XREF: sub_7F8161D3+Ej
		call	sub_7F824327
		mov	edi, eax

loc_7F8161F2:				; CODE XREF: sub_7F8161D3+16j
		call	sub_7F82EF02
		test	eax, eax
		jz	short loc_7F81624F
		mov	esi, [esp+0Ch+arg_0]
		mov	ebx, [esp+0Ch+arg_4]
		mov	ax, [esi]
		mov	ecx, ebx
		xor	cx, ax
		and	cx, 1
		xor	cx, ax
		mov	[esi], cx
		call	ds:GetTickCount
		mov	[esi+1Ch], eax
		xor	esi, esi
		test	ebx, ebx
		jz	short loc_7F81624A
		add	edi, 24h
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_7F816237
		push	eax		; uIDEvent
		push	esi		; hWnd
		call	ds:KillTimer
		mov	[edi], esi

loc_7F816237:				; CODE XREF: sub_7F8161D3+58j
		push	offset TimerFunc ; lpTimerFunc
		push	1		; uElapse
		push	0		; nIDEvent
		push	0		; hWnd
		call	ds:SetTimer
		mov	[edi], eax

loc_7F81624A:				; CODE XREF: sub_7F8161D3+4Fj
		call	sub_7F82EF31

loc_7F81624F:				; CODE XREF: sub_7F8161D3+26j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F8161D3	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F816255	proc near		; CODE XREF: sub_7F81217E+15Dp
					; sub_7F81217E+17Cp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		sub	esp, 4
		push	ebx
		push	esi
		push	edi
		push	ebp
		call	GetCurrentProcessId
		cmp	eax, dword_7F837098
		jnz	short loc_7F816271
		mov	edi, dword_7F83709C
		jmp	short loc_7F816278
; ---------------------------------------------------------------------------

loc_7F816271:				; CODE XREF: sub_7F816255+12j
		call	sub_7F824327
		mov	edi, eax

loc_7F816278:				; CODE XREF: sub_7F816255+1Aj
		call	sub_7F82EF02
		test	eax, eax
		jz	loc_7F816353
		xor	esi, esi
		lea	ebx, [edi+20h]
		mov	ecx, [ebx]
		cmp	ecx, esi
		jle	short loc_7F8162A5
		mov	eax, [edi+18h]
		mov	edx, [esp+14h+arg_0]

loc_7F816297:				; CODE XREF: sub_7F816255+4Cj
		cmp	[eax], edx
		jz	short loc_7F8162AD
		add	eax, 4
		inc	esi
		cmp	ecx, esi
		jg	short loc_7F816297
		jmp	short loc_7F8162A9
; ---------------------------------------------------------------------------

loc_7F8162A5:				; CODE XREF: sub_7F816255+39j
		mov	edx, [esp+14h+arg_0]

loc_7F8162A9:				; CODE XREF: sub_7F816255+4Ej
		mov	esi, [esp+14h+var_4]

loc_7F8162AD:				; CODE XREF: sub_7F816255+44j
		mov	ax, [edx]
		test	al, 2
		jz	short loc_7F8162C5
		or	al, 4
		mov	[edx], ax
		and	ax, 0FFFEh
		mov	[edx], ax
		jmp	loc_7F81634E
; ---------------------------------------------------------------------------

loc_7F8162C5:				; CODE XREF: sub_7F816255+5Dj
		push	edx
		call	sub_7F82F149
		mov	eax, [ebx]
		cmp	eax, 1
		jnz	short loc_7F8162F3
		push	dword ptr [edi+18h]
		call	sub_7F82F149
		xor	ebp, ebp
		mov	[edi+18h], ebp
		mov	eax, [edi+24h]
		test	eax, eax
		jz	short loc_7F81632D
		push	eax		; uIDEvent
		push	ebp		; hWnd
		call	ds:KillTimer
		mov	[edi+24h], ebp
		jmp	short loc_7F81632D
; ---------------------------------------------------------------------------

loc_7F8162F3:				; CODE XREF: sub_7F816255+7Bj
		mov	ecx, esi
		dec	eax
		cmp	eax, esi
		jle	short loc_7F816316
		lea	edx, ds:0[esi*4]

loc_7F816301:				; CODE XREF: sub_7F816255+BFj
		mov	eax, [edi+18h]
		inc	ecx
		add	eax, edx
		add	edx, 4
		mov	ebp, [eax+4]
		mov	[eax], ebp
		mov	eax, [ebx]
		dec	eax
		cmp	eax, ecx
		jg	short loc_7F816301

loc_7F816316:				; CODE XREF: sub_7F816255+A3j
		push	0
		mov	eax, [ebx]
		lea	ecx, ds:0FFFFFFFCh[eax*4]
		push	ecx
		push	dword ptr [edi+18h]
		call	sub_7F82F0CD
		mov	[edi+18h], eax

loc_7F81632D:				; CODE XREF: sub_7F816255+8Fj
					; sub_7F816255+9Cj
		mov	ecx, [ebx]
		add	edi, 1Ch
		dec	ecx
		mov	[ebx], ecx
		mov	eax, [edi]
		cmp	eax, esi
		jnz	short loc_7F816347
		dec	eax
		mov	[edi], eax
		jns	short loc_7F81634E
		mov	eax, [ebx]
		dec	eax
		mov	[edi], eax
		jmp	short loc_7F81634E
; ---------------------------------------------------------------------------

loc_7F816347:				; CODE XREF: sub_7F816255+E4j
		cmp	eax, ecx
		jl	short loc_7F81634E
		dec	ecx
		mov	[edi], ecx

loc_7F81634E:				; CODE XREF: sub_7F816255+6Bj
					; sub_7F816255+E9j ...
		call	sub_7F82EF31

loc_7F816353:				; CODE XREF: sub_7F816255+2Aj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn	4
sub_7F816255	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81635D	proc near		; CODE XREF: sub_7F81F20F+84p
					; sub_7F81F20F+CBp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		call	GetCurrentProcessId
		cmp	eax, dword_7F837098
		jnz	short loc_7F816378
		mov	esi, dword_7F83709C
		jmp	short loc_7F81637F
; ---------------------------------------------------------------------------

loc_7F816378:				; CODE XREF: sub_7F81635D+11j
		call	sub_7F824327
		mov	esi, eax

loc_7F81637F:				; CODE XREF: sub_7F81635D+19j
		call	sub_7F82EF02
		test	eax, eax
		jz	loc_7F816461
		xor	ecx, ecx
		lea	ebx, [esi+20h]
		mov	edx, [ebx]
		cmp	edx, ecx
		jle	short loc_7F8163AB
		mov	eax, [esi+18h]
		mov	edi, [ebp+arg_0]

loc_7F81639D:				; CODE XREF: sub_7F81635D+4Aj
		cmp	[eax], edi
		jz	short loc_7F8163AE
		add	eax, 4
		inc	ecx
		cmp	ecx, edx
		jl	short loc_7F81639D
		jmp	short loc_7F8163AE
; ---------------------------------------------------------------------------

loc_7F8163AB:				; CODE XREF: sub_7F81635D+38j
		mov	edi, [ebp+arg_0]

loc_7F8163AE:				; CODE XREF: sub_7F81635D+42j
					; sub_7F81635D+4Cj
		call	ds:GetTickCount
		mov	ecx, [ebp+arg_18]
		mov	[edi+1Ch], eax
		test	cl, 1
		jz	short loc_7F8163C5
		mov	eax, [ebp+arg_4]
		mov	[edi+4], eax

loc_7F8163C5:				; CODE XREF: sub_7F81635D+60j
		test	cl, 2
		jz	short loc_7F8163D0
		mov	eax, [ebp+arg_8]
		mov	[edi+8], eax

loc_7F8163D0:				; CODE XREF: sub_7F81635D+6Bj
		mov	edx, ecx
		and	edx, 4
		jz	short loc_7F8163DD
		mov	eax, [ebp+arg_C]
		mov	[edi+14h], eax

loc_7F8163DD:				; CODE XREF: sub_7F81635D+78j
		test	cl, 8
		jz	short loc_7F8163E8
		mov	eax, [ebp+arg_10]
		mov	[edi+18h], eax

loc_7F8163E8:				; CODE XREF: sub_7F81635D+83j
		test	cl, 10h
		jz	short loc_7F8163F3
		mov	eax, [ebp+arg_14]
		mov	[edi+10h], eax

loc_7F8163F3:				; CODE XREF: sub_7F81635D+8Ej
		test	edx, edx
		jz	short loc_7F816434
		mov	edx, [ebx]
		cmp	edx, 1
		jle	short loc_7F816434
		mov	ecx, [esi+18h]
		mov	eax, [esi+1Ch]
		push	offset sub_7F81601D
		push	4
		mov	edi, [ecx+eax*4]
		push	edx
		push	ecx
		call	sub_7F8300E0
		add	esp, 10h
		xor	edx, edx
		mov	ecx, [ebx]
		cmp	ecx, edx
		jle	short loc_7F816434
		mov	eax, [esi+18h]

loc_7F816423:				; CODE XREF: sub_7F81635D+D0j
		cmp	[eax], edi
		jz	short loc_7F816431
		add	eax, 4
		inc	edx
		cmp	edx, ecx
		jl	short loc_7F816423
		jmp	short loc_7F816434
; ---------------------------------------------------------------------------

loc_7F816431:				; CODE XREF: sub_7F81635D+C8j
		mov	[esi+1Ch], edx

loc_7F816434:				; CODE XREF: sub_7F81635D+98j
					; sub_7F81635D+9Fj ...
		add	esi, 24h
		xor	edi, edi
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_7F816449
		push	eax		; uIDEvent
		push	edi		; hWnd
		call	ds:KillTimer
		mov	[esi], edi

loc_7F816449:				; CODE XREF: sub_7F81635D+E0j
		push	offset TimerFunc ; lpTimerFunc
		push	1		; uElapse
		push	0		; nIDEvent
		push	0		; hWnd
		call	ds:SetTimer
		mov	[esi], eax
		call	sub_7F82EF31

loc_7F816461:				; CODE XREF: sub_7F81635D+29j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	1Ch
sub_7F81635D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F816468	proc near		; CODE XREF: TimerFunc+19p

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
		push	ebx
		push	esi
		push	edi
		call	GetCurrentProcessId
		cmp	eax, dword_7F837098
		jnz	short loc_7F816489
		mov	ecx, dword_7F83709C
		mov	[ebp+var_8], ecx
		jmp	short loc_7F816491
; ---------------------------------------------------------------------------

loc_7F816489:				; CODE XREF: sub_7F816468+14j
		call	sub_7F824327
		mov	[ebp+var_8], eax

loc_7F816491:				; CODE XREF: sub_7F816468+1Fj
		call	ds:__imp_GetCurrentProcessId
		push	eax
		call	sub_7F82F311
		mov	dword_7F836274,	1
		call	sub_7F82EF02
		test	eax, eax
		jnz	short loc_7F8164C1
		mov	dword_7F836274,	0
		xor	eax, eax
		jmp	loc_7F8167E1
; ---------------------------------------------------------------------------

loc_7F8164C1:				; CODE XREF: sub_7F816468+46j
		mov	esi, [ebp+arg_0]
		mov	edi, 0
		and	esi, 8
		jnz	short loc_7F8164E6
		mov	ecx, [ebp+var_8]
		mov	eax, [ecx+24h]
		test	eax, eax
		jz	short loc_7F8164E6
		push	eax		; uIDEvent
		push	edi		; hWnd
		call	ds:KillTimer
		mov	ecx, [ebp+var_8]
		mov	[ecx+24h], edi

loc_7F8164E6:				; CODE XREF: sub_7F816468+64j
					; sub_7F816468+6Ej
		mov	ecx, [ebp+var_8]
		xor	edi, edi
		add	ecx, 20h
		mov	[ebp+var_14], ecx
		cmp	[ecx], edi
		jnz	short loc_7F816507
		call	sub_7F82EF31
		xor	eax, eax
		mov	dword_7F836274,	edi
		jmp	loc_7F8167E1
; ---------------------------------------------------------------------------

loc_7F816507:				; CODE XREF: sub_7F816468+8Bj
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_8]
		test	esi, esi
		mov	[ecx+10h], eax
		jz	short loc_7F816528
		add	ecx, 18h
		mov	[ebp+var_4], ecx
		mov	eax, [ecx]
		mov	edx, [eax]
		cmp	dword ptr [edx+14h], 0
		jl	loc_7F816629

loc_7F816528:				; CODE XREF: sub_7F816468+AAj
		xor	edi, edi
		call	ds:GetTickCount
		mov	ecx, [ebp+var_8]
		mov	edx, [ebp+var_8]
		add	ecx, 1Ch
		add	edx, 18h
		mov	[ebp+var_1C], eax
		mov	[ebp+var_C], ecx
		mov	ecx, [ecx]
		mov	eax, [edx]
		mov	[ebp+var_4], edx
		mov	ecx, [eax+ecx*4]
		mov	eax, [ebp+var_14]
		mov	edx, [ecx+14h]
		mov	[ebp+var_18], edx
		mov	eax, [eax]
		mov	[ebp+var_10], eax
		cmp	eax, edi
		jle	short loc_7F8165AB

loc_7F81655E:				; CODE XREF: sub_7F816468+141j
		test	esi, esi
		jz	short loc_7F816578
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		mov	edx, [ecx+edi*4]
		cmp	dword ptr [edx+14h], 0
		jl	loc_7F816629
		test	esi, esi
		jnz	short loc_7F816586

loc_7F816578:				; CODE XREF: sub_7F816468+F8j
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		mov	edx, [ecx+edi*4]
		cmp	dword ptr [edx+14h], 0
		jg	short loc_7F8165A3

loc_7F816586:				; CODE XREF: sub_7F816468+10Ej
		mov	eax, [ebp+var_4]
		mov	edx, [eax]
		mov	eax, [ebp+var_18]
		mov	ecx, [edx+edi*4]
		cmp	[ecx+14h], eax
		jz	short loc_7F8165C6
		push	edi
		push	[ebp+arg_0]
		call	sub_7F8167EA
		test	eax, eax
		jnz	short loc_7F8165CB

loc_7F8165A3:				; CODE XREF: sub_7F816468+11Cj
		inc	edi
		mov	eax, [ebp+var_14]
		cmp	[eax], edi
		jg	short loc_7F81655E

loc_7F8165AB:				; CODE XREF: sub_7F816468+F4j
					; sub_7F816468+161j
		mov	eax, [ebp+var_14]
		mov	ebx, [eax]
		cmp	ebx, [ebp+var_10]
		jz	short loc_7F816629
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		lea	edi, [ecx+1]
		cmp	ebx, edi
		jg	short loc_7F8165D5
		mov	edi, [ebp+var_10]
		jmp	short loc_7F8165EA
; ---------------------------------------------------------------------------

loc_7F8165C6:				; CODE XREF: sub_7F816468+12Cj
		mov	[ebp+var_10], edi
		jmp	short loc_7F8165AB
; ---------------------------------------------------------------------------

loc_7F8165CB:				; CODE XREF: sub_7F816468+139j
		mov	eax, [ebp+var_C]
		mov	[eax], edi
		jmp	loc_7F8166E9
; ---------------------------------------------------------------------------

loc_7F8165D5:				; CODE XREF: sub_7F816468+157j
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		mov	edx, [eax+edi*4]
		mov	eax, [ebp+var_18]
		cmp	[edx+14h], eax
		jz	short loc_7F8165EA
		mov	edi, [ebp+var_10]
		mov	ebx, edi

loc_7F8165EA:				; CODE XREF: sub_7F816468+15Cj
					; sub_7F816468+17Bj
		cmp	ecx, edi
		jnz	loc_7F8166B9
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F8167EA
		test	eax, eax
		jnz	loc_7F8166E9
		mov	eax, [ebp+var_C]
		mov	ebx, [eax]
		inc	ebx

loc_7F816609:				; CODE XREF: sub_7F816468+26Fj
		mov	eax, [ebp+var_14]
		cmp	[eax], ebx
		jle	short loc_7F816629

loc_7F816610:				; CODE XREF: sub_7F816468+1BFj
		push	ebx
		push	[ebp+arg_0]
		call	sub_7F8167EA
		test	eax, eax
		jnz	loc_7F8166E4
		inc	ebx
		mov	eax, [ebp+var_14]
		cmp	[eax], ebx
		jg	short loc_7F816610

loc_7F816629:				; CODE XREF: sub_7F816468+BAj
					; sub_7F816468+106j ...
		mov	[ebp+var_C], 0

loc_7F816630:				; CODE XREF: sub_7F816468+2FEj
		test	esi, esi
		jnz	loc_7F8167CF
		mov	esi, 0FFFFFFFFh
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		xor	edi, edi
		mov	eax, [ebp+var_14]
		mov	[ebp+var_4], ecx
		mov	[ebp+var_10], 0
		cmp	[eax], edi
		jle	loc_7F8167AD

loc_7F816659:				; CODE XREF: sub_7F816468+33Bj
		mov	eax, [ebp+var_4]
		mov	ebx, [eax]
		test	byte ptr [ebx],	1
		jz	loc_7F816799
		mov	[ebp+var_10], 1
		cmp	dword ptr [ebx+14h], 0
		jg	loc_7F8167AB
		mov	eax, [ebx+10h]
		test	al, 2
		jz	loc_7F81676B
		push	edi
		push	[ebp+arg_0]
		call	sub_7F8167EA
		test	eax, eax
		jnz	loc_7F8167AB
		mov	eax, [ebx+18h]
		cmp	eax, esi
		jb	short loc_7F81669D
		mov	eax, esi

loc_7F81669D:				; CODE XREF: sub_7F816468+231j
		mov	esi, eax
		jmp	loc_7F816799
; ---------------------------------------------------------------------------

loc_7F8166A4:				; CODE XREF: sub_7F816468+256j
		mov	eax, [ebp+var_4]
		mov	edx, [eax]
		mov	eax, [ebp+var_18]
		mov	ecx, [edx+edi*4]
		cmp	[ecx+14h], eax
		jz	short loc_7F8166C5
		mov	edi, [ebp+var_10]
		mov	ebx, edi

loc_7F8166B9:				; CODE XREF: sub_7F816468+184j
					; sub_7F816468+25Bj ...
		mov	eax, [ebp+var_14]
		cmp	[eax], edi
		jg	short loc_7F8166A4
		mov	edi, [ebp+var_10]
		jmp	short loc_7F8166B9
; ---------------------------------------------------------------------------

loc_7F8166C5:				; CODE XREF: sub_7F816468+24Aj
		push	edi
		push	[ebp+arg_0]
		call	sub_7F8167EA
		test	eax, eax
		mov	eax, [ebp+var_C]
		jnz	short loc_7F8166E0
		cmp	[eax], edi
		jz	loc_7F816609
		inc	edi
		jmp	short loc_7F8166B9
; ---------------------------------------------------------------------------

loc_7F8166E0:				; CODE XREF: sub_7F816468+26Bj
		mov	[eax], edi
		jmp	short loc_7F8166E9
; ---------------------------------------------------------------------------

loc_7F8166E4:				; CODE XREF: sub_7F816468+1B3j
		mov	eax, [ebp+var_C]
		mov	[eax], ebx

loc_7F8166E9:				; CODE XREF: sub_7F816468+168j
					; sub_7F816468+195j ...
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_4]
		mov	ecx, [eax]
		mov	eax, [edx]
		mov	ebx, [eax+ecx*4]
		mov	ecx, [ebp+var_1C]
		mov	[ebx+1Ch], ecx
		or	byte ptr [ebx],	2
		call	sub_7F82EF31
		push	dword ptr [ebx+0Ch]
		push	dword ptr [ebx+8]
		call	dword ptr [ebx+4]
		call	sub_7F82EF02
		test	eax, eax
		jnz	short loc_7F816727
		mov	dword_7F836274,	0
		xor	eax, eax
		jmp	loc_7F8167E1
; ---------------------------------------------------------------------------

loc_7F816727:				; CODE XREF: sub_7F816468+2ACj
		xor	edi, edi
		test	esi, esi
		jnz	short loc_7F816745
		mov	ecx, [ebp+var_8]
		mov	eax, [ecx+24h]
		test	eax, eax
		jz	short loc_7F816745
		push	eax		; uIDEvent
		push	edi		; hWnd
		call	ds:KillTimer
		mov	ecx, [ebp+var_8]
		mov	[ecx+24h], edi

loc_7F816745:				; CODE XREF: sub_7F816468+2C3j
					; sub_7F816468+2CDj
		mov	ax, [ebx]
		and	ax, 0FFFDh
		mov	[ebx], ax
		test	byte ptr [ebx+10h], 40h
		jnz	short loc_7F816759
		test	al, 4
		jz	short loc_7F81675F

loc_7F816759:				; CODE XREF: sub_7F816468+2EBj
		push	ebx
		call	sub_7F816255

loc_7F81675F:				; CODE XREF: sub_7F816468+2EFj
		mov	[ebp+var_C], 1
		jmp	loc_7F816630
; ---------------------------------------------------------------------------

loc_7F81676B:				; CODE XREF: sub_7F816468+215j
		test	al, 1
		jz	short loc_7F81678F
		push	[ebp+var_1C]
		push	dword_7F83626C
		call	sub_7F816895
		cmp	eax, [ebx+18h]
		jnb	short loc_7F8167AB
		mov	eax, [ebx+18h]
		cmp	eax, esi
		jb	short loc_7F81678B
		mov	eax, esi

loc_7F81678B:				; CODE XREF: sub_7F816468+31Fj
		mov	esi, eax
		jmp	short loc_7F816799
; ---------------------------------------------------------------------------

loc_7F81678F:				; CODE XREF: sub_7F816468+305j
		cmp	esi, 5
		jb	short loc_7F816799
		mov	esi, 5

loc_7F816799:				; CODE XREF: sub_7F816468+1F9j
					; sub_7F816468+237j ...
		inc	edi
		mov	eax, [ebp+var_14]
		add	[ebp+var_4], 4
		cmp	[eax], edi
		jg	loc_7F816659
		jmp	short loc_7F8167AD
; ---------------------------------------------------------------------------

loc_7F8167AB:				; CODE XREF: sub_7F816468+20Aj
					; sub_7F816468+226j ...
		xor	esi, esi

loc_7F8167AD:				; CODE XREF: sub_7F816468+1EBj
					; sub_7F816468+341j
		xor	ecx, ecx
		cmp	[ebp+var_10], ecx
		jz	short loc_7F8167CF
		imul	si, 0Ah
		movzx	eax, si
		push	offset TimerFunc ; lpTimerFunc
		push	eax		; uElapse
		push	ecx		; nIDEvent
		push	ecx		; hWnd
		call	ds:SetTimer
		mov	ecx, [ebp+var_8]
		mov	[ecx+24h], eax

loc_7F8167CF:				; CODE XREF: sub_7F816468+1CAj
					; sub_7F816468+34Aj
		call	sub_7F82EF31
		mov	dword_7F836274,	0
		mov	eax, [ebp+var_C]

loc_7F8167E1:				; CODE XREF: sub_7F816468+54j
					; sub_7F816468+9Aj ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F816468	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8167EA	proc near		; CODE XREF: sub_7F816468+132p
					; sub_7F816468+18Ep ...

arg_4		= dword	ptr  8

		push	esi
		push	edi
		call	GetCurrentProcessId
		cmp	eax, dword_7F837098
		jnz	short loc_7F816801
		mov	edi, dword_7F83709C
		jmp	short loc_7F816808
; ---------------------------------------------------------------------------

loc_7F816801:				; CODE XREF: sub_7F8167EA+Dj
		call	sub_7F824327
		mov	edi, eax

loc_7F816808:				; CODE XREF: sub_7F8167EA+15j
		call	ds:GetTickCount
		mov	edx, [edi+18h]
		mov	ecx, [esp+8+arg_4]
		cmp	dword ptr [edi+14h], 0
		mov	esi, [edx+ecx*4]
		jz	short loc_7F816822
		xor	eax, eax
		jmp	short loc_7F816890
; ---------------------------------------------------------------------------

loc_7F816822:				; CODE XREF: sub_7F8167EA+32j
		mov	cx, [esi]
		test	cl, 2
		jz	short loc_7F81682E
		xor	eax, eax
		jmp	short loc_7F816890
; ---------------------------------------------------------------------------

loc_7F81682E:				; CODE XREF: sub_7F8167EA+3Ej
		test	cl, 1
		jnz	short loc_7F816837
		xor	eax, eax
		jmp	short loc_7F816890
; ---------------------------------------------------------------------------

loc_7F816837:				; CODE XREF: sub_7F8167EA+47j
		mov	ecx, [esi+10h]
		test	cl, 4
		jz	short loc_7F81685C
		mov	edx, dword_7F83626C
		cmp	[esi+1Ch], edx
		jb	short loc_7F81684E
		xor	eax, eax
		jmp	short loc_7F816890
; ---------------------------------------------------------------------------

loc_7F81684E:				; CODE XREF: sub_7F8167EA+5Ej
		test	cl, 1
		jz	short loc_7F81688B
		push	eax
		push	dword_7F83626C
		jmp	short loc_7F81687E
; ---------------------------------------------------------------------------

loc_7F81685C:				; CODE XREF: sub_7F8167EA+53j
		test	cl, 1
		jz	short loc_7F816875
		push	eax
		push	dword_7F83626C
		call	sub_7F816895
		cmp	eax, [esi+18h]
		sbb	eax, eax
		inc	eax
		jmp	short loc_7F816890
; ---------------------------------------------------------------------------

loc_7F816875:				; CODE XREF: sub_7F8167EA+75j
		test	cl, 2
		jz	short loc_7F81688B
		push	eax
		push	dword ptr [esi+1Ch]

loc_7F81687E:				; CODE XREF: sub_7F8167EA+70j
		call	sub_7F816895
		cmp	eax, [esi+18h]
		sbb	eax, eax
		inc	eax
		jmp	short loc_7F816890
; ---------------------------------------------------------------------------

loc_7F81688B:				; CODE XREF: sub_7F8167EA+67j
					; sub_7F8167EA+8Ej
		mov	eax, 1

loc_7F816890:				; CODE XREF: sub_7F8167EA+36j
					; sub_7F8167EA+42j ...
		pop	edi
		pop	esi
		retn	8
sub_7F8167EA	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F816895	proc near		; CODE XREF: sub_7F816468+310p
					; sub_7F8167EA+7Ep ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ecx, 0Ah
		sub	eax, [esp+arg_0]
		cdq
		xor	eax, edx
		sub	eax, edx
		sub	edx, edx
		div	ecx
		retn	8
sub_7F816895	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8168AE	proc near		; CODE XREF: sub_7F814EF3+65p
					; sub_7F814F94+8Fp
		call	ds:GetTickCount
		mov	dword_7F83626C,	eax
		retn	4
sub_7F8168AE	endp


; =============== S U B	R O U T	I N E =======================================


; void __stdcall TimerFunc(HWND, UINT, UINT, DWORD)
TimerFunc	proc near		; DATA XREF: sub_7F816044:loc_7F8161B2o
					; sub_7F8161D3:loc_7F816237o ...
		push	esi
		call	sub_7F82F30B
		mov	esi, eax
		call	ds:__imp_GetCurrentProcessId
		cmp	eax, esi
		jz	short loc_7F8168D3
		call	sub_7F82F26E

loc_7F8168D3:				; CODE XREF: TimerFunc+10j
		push	0
		call	sub_7F816468
		call	ds:__imp_GetCurrentProcessId
		cmp	eax, esi
		jz	short loc_7F8168E9
		call	sub_7F82F2D1

loc_7F8168E9:				; CODE XREF: TimerFunc+26j
		pop	esi
		retn	10h
TimerFunc	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8168ED	proc near		; CODE XREF: sub_7F812408+13p
					; sub_7F81F20F:loc_7F81F24Bp ...
		call	ds:GetTickCount
		sub	eax, dword_7F83626C
		mov	ecx, 0Ah
		sub	edx, edx
		div	ecx
		retn
sub_7F8168ED	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F816903	proc near		; CODE XREF: sub_7F8110F6+1Cp
					; sub_7F8110F6+36p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		test	edi, edi
		jnz	short loc_7F816914
		mov	edi, 200h
		jmp	short loc_7F816917
; ---------------------------------------------------------------------------

loc_7F816914:				; CODE XREF: sub_7F816903+8j
		add	edi, 14h

loc_7F816917:				; CODE XREF: sub_7F816903+Fj
		add	edi, 87h
		mov	esi, 0
		and	edi, 0FFFFFF80h
		sub	edi, 8
		cmp	[esp+8+arg_4], 1
		adc	esi, 0FFFFFFFFh
		and	esi, 20h
		push	esi
		push	edi
		call	sub_7F82F18D
		test	eax, eax
		jnz	short loc_7F816953
		mov	edi, 0Eh
		push	esi
		push	78h
		call	sub_7F82F18D
		test	eax, eax
		jnz	short loc_7F816953
		xor	eax, eax
		jmp	short loc_7F816987
; ---------------------------------------------------------------------------

loc_7F816953:				; CODE XREF: sub_7F816903+39j
					; sub_7F816903+4Aj
		mov	esi, [eax]
		lea	ecx, [edi-8]
		sub	di, 0Eh
		xor	edx, edx
		mov	[esi], cx
		mov	[esi+2], dx
		mov	[esi+4], di
		movzx	ecx, word ptr [esi]
		mov	[ecx+esi+6], dx
		movzx	edx, word ptr [esi]
		mov	dword ptr [edx+esi], 0FFFFFFFFh
		mov	di, [esi+2]
		movzx	ecx, word ptr [esi]
		mov	[ecx+esi+4], di

loc_7F816987:				; CODE XREF: sub_7F816903+4Ej
		pop	edi
		pop	esi
		retn	8
sub_7F816903	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81698C	proc near		; CODE XREF: sub_7F8107B6+93p
					; sub_7F811343+A4p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		push	ebx
		push	esi
		mov	ecx, [eax]
		push	edi
		xor	esi, esi
		cmp	[ebp+arg_4], 0FFFFFFFFh
		mov	edi, [ecx]
		jnz	short loc_7F8169B6

loc_7F8169A2:				; CODE XREF: sub_7F81698C+28j
		call	sub_7F82AC0C
		push	eax
		mov	[ebp+arg_4], eax
		push	edi
		call	sub_7F816B29
		test	ax, ax
		jge	short loc_7F8169A2

loc_7F8169B6:				; CODE XREF: sub_7F81698C+14j
		movzx	ecx, word ptr [edi+4]
		mov	ebx, [ebp+arg_C]
		add	ebx, 6
		cmp	ebx, ecx
		jbe	short loc_7F8169DE
		mov	eax, ebx
		sub	eax, ecx
		push	eax
		push	[ebp+arg_0]
		call	sub_7F816B5F
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F8169DE
		mov	esi, 400h
		jmp	short loc_7F816A39
; ---------------------------------------------------------------------------

loc_7F8169DE:				; CODE XREF: sub_7F81698C+36j
					; sub_7F81698C+49j
		movzx	eax, word ptr [edi]
		lea	eax, [eax+edi+6]
		mov	cx, [eax]
		lea	edx, [ecx+1]
		mov	[eax], dx
		movzx	edx, word ptr [edi]
		movsx	eax, cx
		imul	eax, 6
		sub	edx, eax
		sub	[edi+4], bx
		mov	ax, [edi+2]
		lea	ecx, [edx+edi]
		add	ax, word ptr [ebp+arg_C]
		mov	edx, [ebp+arg_4]
		mov	[edi+2], ax
		mov	[ecx-2], ax
		mov	eax, [ebp+arg_8]
		mov	dword ptr [ecx-6], 0FFFFFFFFh
		mov	[ecx], edx
		test	eax, eax
		jz	short loc_7F816A39
		push	[ebp+arg_C]
		push	eax
		movzx	eax, word ptr [ecx+4]
		add	eax, edi
		add	eax, 6
		push	eax
		call	sub_7F82FCE0
		add	esp, 0Ch

loc_7F816A39:				; CODE XREF: sub_7F81698C+50j
					; sub_7F81698C+95j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_7F81698C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F816A42	proc near		; CODE XREF: sub_7F8261A0+ADp
					; sub_7F8261A0+EAp ...

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		movzx	eax, word ptr [esi]
		mov	ax, [eax+esi+6]
		cmp	[ebp+arg_4], 0
		mov	[ebp+var_2], ax
		jl	loc_7F816B1B
		cmp	ax, [ebp+arg_4]
		jle	loc_7F816B1B
		movzx	eax, word ptr [esi+2]
		mov	[ebp+var_10], eax
		movsx	ecx, [ebp+arg_4]
		movzx	eax, word ptr [esi+4]
		add	eax, [ebp+var_10]
		lea	edi, [eax+esi+6]
		movsx	eax, [ebp+var_2]
		sub	eax, ecx
		mov	[ebp+var_8], eax
		imul	eax, 6
		add	eax, edi
		movzx	ecx, word ptr [eax-2]
		mov	ebx, ecx
		mov	[ebp+var_C], eax
		movzx	eax, word ptr [eax+4]
		sub	ebx, eax
		cmp	[ebp+var_8], 1
		jnz	short loc_7F816AB9
		mov	ax, [esi+2]
		sub	ax, bx
		mov	[esi+2], ax
		mov	[edi+4], ax
		jmp	short loc_7F816AF3
; ---------------------------------------------------------------------------

loc_7F816AB9:				; CODE XREF: sub_7F816A42+64j
		mov	edx, [ebp+var_10]
		add	eax, esi
		sub	edx, ecx
		add	eax, 6
		push	edx
		add	ecx, esi
		add	ecx, 6
		push	ecx
		push	eax
		call	sub_7F82FCE0
		mov	cx, [ebp+arg_4]
		add	esp, 0Ch
		sub	[esi+2], bx
		sub	cx, [ebp+var_2]
		jns	short loc_7F816AF3

loc_7F816AE1:				; CODE XREF: sub_7F816A42+AFj
		movsx	edx, cx
		mov	eax, [ebp+var_C]
		imul	edx, 6
		sub	[edx+eax+4], bx
		inc	cx
		jnz	short loc_7F816AE1

loc_7F816AF3:				; CODE XREF: sub_7F816A42+75j
					; sub_7F816A42+9Dj
		mov	eax, [ebp+var_8]
		imul	eax, 6
		add	bx, 6
		push	eax
		push	edi
		add	edi, 6
		push	edi
		call	sub_7F82FCE0
		movzx	eax, word ptr [esi]
		add	[esi+4], bx
		add	esp, 0Ch
		dec	word ptr [eax+esi+6]
		xor	eax, eax
		jmp	short loc_7F816B20
; ---------------------------------------------------------------------------

loc_7F816B1B:				; CODE XREF: sub_7F816A42+1Dj
					; sub_7F816A42+27j
		mov	eax, 1004h

loc_7F816B20:				; CODE XREF: sub_7F816A42+D7j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F816A42	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F816B29	proc near		; CODE XREF: sub_7F81698C+20p
					; sub_7F8267D3+24p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		movzx	ecx, word ptr [eax]
		lea	esi, [ecx+eax]
		mov	ax, [esi+6]
		mov	dx, ax
		test	dx, dx
		jle	short loc_7F816B52
		mov	ecx, [esp+4+arg_4]

loc_7F816B44:				; CODE XREF: sub_7F816B29+27j
		cmp	[esi], ecx
		jz	short loc_7F816B5A
		dec	dx
		sub	esi, 6
		test	dx, dx
		jg	short loc_7F816B44

loc_7F816B52:				; CODE XREF: sub_7F816B29+15j
		mov	ax, 0FFFFh

loc_7F816B56:				; CODE XREF: sub_7F816B29+34j
		pop	esi
		retn	8
; ---------------------------------------------------------------------------

loc_7F816B5A:				; CODE XREF: sub_7F816B29+1Dj
		sub	ax, dx
		jmp	short loc_7F816B56
sub_7F816B29	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F816B5F	proc near		; CODE XREF: sub_7F81698C+40p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	edx, [eax]
		mov	eax, [edx]
		movzx	ecx, word ptr [eax]
		movzx	esi, word ptr [eax+2]
		movzx	eax, word ptr [eax+4]
		mov	edi, ecx
		mov	ebp, [esp+10h+arg_4]
		sub	edi, esi
		sub	edi, eax
		lea	eax, [ecx+ebp+8]
		add	edi, 2
		cmp	eax, ebp
		jnb	short loc_7F816B8F
		xor	eax, eax
		jmp	short loc_7F816BF7
; ---------------------------------------------------------------------------

loc_7F816B8F:				; CODE XREF: sub_7F816B5F+2Aj
		mov	esi, 200h
		cmp	ebp, esi
		jnb	short loc_7F816BA6
		add	ecx, 208h
		cmp	ecx, esi
		jbe	short loc_7F816BA6
		mov	ebp, esi
		mov	eax, ecx

loc_7F816BA6:				; CODE XREF: sub_7F816B5F+37j
					; sub_7F816B5F+41j
		push	0
		add	eax, 87h
		and	al, 80h
		sub	eax, 8
		push	eax
		push	edx
		call	sub_7F82F24A
		mov	ebx, eax
		mov	eax, 0
		test	ebx, ebx
		jz	short loc_7F816BF7
		mov	esi, [ebx]
		push	edi
		movzx	eax, word ptr [esi+2]
		movzx	ecx, word ptr [esi+4]
		add	eax, ecx
		lea	ecx, [eax+esi]
		lea	eax, [eax+esi+6]
		push	eax
		lea	eax, [ecx+ebp]
		add	eax, 6
		push	eax
		call	sub_7F82FCE0
		add	[esi+4], bp
		mov	ecx, [esp+1Ch+arg_0]
		add	[esi], bp
		add	esp, 0Ch
		mov	eax, esi
		mov	[ecx], ebx

loc_7F816BF7:				; CODE XREF: sub_7F816B5F+2Ej
					; sub_7F816B5F+63j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F816B5F	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F816BFE	proc near		; CODE XREF: sub_7F8261A0+410p
					; sub_7F827B9E+162p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	edi, [esp+10h+arg_0]
		mov	ebp, [edi]
		movzx	ebx, word ptr [ebp+0]
		movzx	ecx, word ptr [ebp+2]
		movzx	eax, word ptr [ebp+4]
		add	ebx, 8
		mov	esi, [esp+10h+arg_4]
		mov	edx, ebx
		sub	edx, ecx
		sub	edx, eax
		sub	edx, 6
		cmp	esi, eax
		jnb	short loc_7F816C70
		push	edx
		lea	edx, [ecx+ebp]
		add	edx, eax
		lea	eax, [esi+ebp]
		add	edx, 6
		add	eax, ecx
		push	edx
		add	eax, 6
		push	eax
		call	sub_7F82FCE0
		mov	cx, [ebp+4]
		add	esp, 0Ch
		movzx	edx, cx
		mov	ax, si
		sub	ebx, edx
		sub	ax, cx
		add	ebx, esi
		add	[ebp+0], ax
		push	0
		mov	[ebp+4], si
		lea	eax, [ebx+87h]
		and	al, 80h
		sub	eax, 8
		push	eax
		push	edi
		call	sub_7F82F1FF

loc_7F816C70:				; CODE XREF: sub_7F816BFE+28j
		mov	eax, ebx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F816BFE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F816C79	proc near		; CODE XREF: sub_7F825DC6+138p
					; sub_7F825DC6+182p ...

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	eax, 253h
		mov	ebp, esp
		sub	esp, 4
		push	esi
		push	edi
		xor	esi, esi
		cmp	dword_7F838078,	esi
		jnz	short loc_7F816CC2
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	edi, [edx]
		mov	dword_7F838078,	edi
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx
		xor	eax, eax

loc_7F816CC2:				; CODE XREF: sub_7F816C79+15j
		test	eax, eax
		jnz	loc_7F816DBF
		push	0
		push	[ebp+arg_4]
		call	sub_7F8144A4
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F816CE1
		mov	edi, 1001h
		jmp	short loc_7F816D43
; ---------------------------------------------------------------------------

loc_7F816CE1:				; CODE XREF: sub_7F816C79+5Fj
		test	byte ptr [edi+13h], 8
		jnz	short loc_7F816CEE
		mov	edi, 1015h
		jmp	short loc_7F816D43
; ---------------------------------------------------------------------------

loc_7F816CEE:				; CODE XREF: sub_7F816C79+6Cj
		mov	eax, [edi+14h]
		and	eax, 7FFFFFFFh
		mov	[ebp+var_4], eax
		cmp	eax, 0FFFFh
		jb	short loc_7F816D07
		mov	edi, 400h
		jmp	short loc_7F816D43
; ---------------------------------------------------------------------------

loc_7F816D07:				; CODE XREF: sub_7F816C79+85j
		mov	eax, [ebp+arg_C]
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_7F816D60
		push	0
		mov	ecx, [ebp+var_4]
		add	ecx, 87h
		and	cl, 80h
		sub	ecx, 8
		push	ecx
		push	eax
		call	sub_7F82F24A
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F816D59
		mov	eax, [ebp+arg_C]
		mov	[eax], esi

loc_7F816D33:				; CODE XREF: sub_7F816C79+10Ej
		lea	eax, [ebp+var_4]
		push	eax		; int
		push	dword ptr [esi]	; lpBuffer
		push	0		; int
		push	edi		; int
		call	sub_7F814E39
		mov	edi, eax

loc_7F816D43:				; CODE XREF: sub_7F816C79+66j
					; sub_7F816C79+73j ...
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F816D90
		call	sub_7F82A34F
		jmp	short loc_7F816D9E
; ---------------------------------------------------------------------------

loc_7F816D59:				; CODE XREF: sub_7F816C79+B3j
		mov	edi, 400h
		jmp	short loc_7F816D43
; ---------------------------------------------------------------------------

loc_7F816D60:				; CODE XREF: sub_7F816C79+95j
		cmp	[ebp+arg_8], 1
		mov	eax, 0
		adc	eax, 0FFFFFFFFh
		and	eax, 20h
		push	eax
		mov	eax, [ebp+var_4]
		add	eax, 87h
		and	al, 80h
		sub	eax, 8
		push	eax
		call	sub_7F82F18D
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F816D33
		mov	edi, 400h
		jmp	short loc_7F816D43
; ---------------------------------------------------------------------------

loc_7F816D90:				; CODE XREF: sub_7F816C79+D7j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F816D9E:				; CODE XREF: sub_7F816C79+DEj
		mov	dword_7F838078,	0
		test	edi, edi
		jnz	short loc_7F816DB3
		mov	eax, [ebp+arg_C]
		mov	[eax], esi
		jmp	short loc_7F816DBD
; ---------------------------------------------------------------------------

loc_7F816DB3:				; CODE XREF: sub_7F816C79+131j
		test	esi, esi
		jz	short loc_7F816DBD
		push	esi
		call	sub_7F82F1E1

loc_7F816DBD:				; CODE XREF: sub_7F816C79+138j
					; sub_7F816C79+13Cj
		mov	eax, edi

loc_7F816DBF:				; CODE XREF: sub_7F816C79+4Bj
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F816C79	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F816DC7	proc near		; CODE XREF: sub_7F825FA8+36p
					; sub_7F8261A0+3F1p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	eax, 253h
		cmp	dword_7F838078,	0
		jnz	short loc_7F816E09
		mov	ecx, [esp+4+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	esi, [edx]
		mov	dword_7F838078,	esi
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx
		xor	eax, eax

loc_7F816E09:				; CODE XREF: sub_7F816DC7+Dj
		test	eax, eax
		jnz	short loc_7F816E4D
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		call	sub_7F816E51
		mov	esi, eax
		mov	ecx, dword_7F838078
		cmp	word ptr [ecx+254h], 0
		jz	short loc_7F816E33
		call	sub_7F82A34F
		jmp	short loc_7F816E41
; ---------------------------------------------------------------------------

loc_7F816E33:				; CODE XREF: sub_7F816DC7+63j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F816E41:				; CODE XREF: sub_7F816DC7+6Aj
		mov	dword_7F838078,	0
		mov	eax, esi

loc_7F816E4D:				; CODE XREF: sub_7F816DC7+44j
		pop	esi
		retn	0Ch
sub_7F816DC7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F816E51	proc near		; CODE XREF: sub_7F813C77+4Bp
					; sub_7F816DC7+4Ep

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	eax, [esp+arg_4]
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+var_4], 0
		push	ebx
		push	esi
		push	edi
		mov	esi, [eax]
		push	0
		mov	ebx, [ebp+arg_0]
		push	dword ptr [ebx]
		call	sub_7F8144A4
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F816E93
		test	byte ptr [edi+13h], 8
		jnz	short loc_7F816E86
		mov	esi, 1015h
		jmp	short loc_7F816EDC
; ---------------------------------------------------------------------------

loc_7F816E86:				; CODE XREF: sub_7F816E51+2Cj
		test	edi, edi
		jz	short loc_7F816E93
		mov	[ebp+var_8], 80h
		jmp	short loc_7F816E98
; ---------------------------------------------------------------------------

loc_7F816E93:				; CODE XREF: sub_7F816E51+26j
					; sub_7F816E51+37j
		mov	eax, [ebx]
		mov	[ebp+var_8], eax

loc_7F816E98:				; CODE XREF: sub_7F816E51+40j
		mov	eax, 0
		test	edi, edi
		jz	short loc_7F816EA3
		mov	eax, [ebx]

loc_7F816EA3:				; CODE XREF: sub_7F816E51+4Ej
		lea	ecx, [ebp+var_4]
		push	ecx		; int
		push	eax		; int
		movzx	eax, word ptr [esi]
		add	eax, 8Fh
		lea	ecx, [ebp+var_8]
		and	al, 80h
		sub	eax, 8
		push	eax		; nNumberOfBytesToRead
		push	esi		; int
		push	ecx		; int
		call	sub_7F814988
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F816F1B
		test	edi, edi
		jz	short loc_7F816ED5
		mov	ax, [edi+12h]
		mov	ecx, [ebp+var_4]
		mov	[ecx+12h], ax

loc_7F816ED5:				; CODE XREF: sub_7F816E51+77j
		mov	eax, [ebp+var_4]
		or	byte ptr [eax+13h], 8

loc_7F816EDC:				; CODE XREF: sub_7F816E51+33j
		test	esi, esi
		jnz	short loc_7F816F1B
		test	edi, edi
		jz	short loc_7F816F0E
		push	[ebp+var_4]
		push	edi
		call	sub_7F814AC2
		mov	ecx, [ebp+var_4]
		test	byte ptr [ecx+10h], 10h
		jz	short loc_7F816F04
		mov	ax, [edi+1Ch]
		mov	[ecx+1Ch], ax
		mov	word ptr [edi+1Ch], 0

loc_7F816F04:				; CODE XREF: sub_7F816E51+A3j
		push	[ebp+var_4]
		call	sub_7F8147DD
		jmp	short loc_7F816F1B
; ---------------------------------------------------------------------------

loc_7F816F0E:				; CODE XREF: sub_7F816E51+91j
		push	[ebp+var_4]
		mov	eax, [ebp+var_8]
		mov	[ebx], eax
		call	sub_7F814971

loc_7F816F1B:				; CODE XREF: sub_7F816E51+73j
					; sub_7F816E51+8Dj ...
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F816E51	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F816F26	proc near		; CODE XREF: sub_7F822DB9+A7p
					; sub_7F823594+BCp

var_14		= dword	ptr -14h
var_10		= word ptr -10h
var_C		= dword	ptr -0Ch
Buffer		= word ptr -8
var_6		= word ptr -6
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		mov	ecx, [ebp+arg_C]
		push	esi
		mov	ebx, [ebp+arg_4]
		push	edi
		add	ebx, 8
		mov	edi, [ebp+arg_0]
		mov	[ecx], eax
		cmp	edi, eax
		jz	short loc_7F816F87
		cmp	dword_7F838078,	eax
		mov	eax, 253h
		jnz	short loc_7F816F7F
		mov	eax, [edi]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edi
		xor	eax, eax

loc_7F816F7F:				; CODE XREF: sub_7F816F26+28j
		test	eax, eax
		jnz	loc_7F817103

loc_7F816F87:				; CODE XREF: sub_7F816F26+1Bj
		cmp	[ebp+arg_8], 0Ch
		jb	loc_7F8170CA
		lea	eax, [ebp+var_C]
		lea	ecx, [ebp+Buffer]
		mov	[ebp+var_C], 6
		push	eax		; int
		push	ebx		; lDistanceToMove
		push	ecx		; lpBuffer
		call	sub_7F8127E7
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F8170CF
		movzx	ecx, [ebp+Buffer]
		mov	eax, [ebp+arg_8]
		sub	eax, 4
		cmp	eax, ecx
		jb	loc_7F8170CA
		movzx	esi, [ebp+var_6]
		mov	edx, [ebp+arg_8]
		sub	edx, 0Eh
		cmp	edx, esi
		jb	loc_7F8170CA
		movzx	eax, [ebp+var_4]
		cmp	edx, eax
		jb	loc_7F8170CA
		add	eax, esi
		cmp	eax, edx
		ja	loc_7F8170CA
		mov	[ebp+var_C], 2
		lea	eax, [ebp+var_C]
		push	eax		; int
		lea	eax, [ecx+ebx]
		add	eax, 6
		lea	ecx, [ebp+var_2]
		push	eax		; lDistanceToMove
		push	ecx		; lpBuffer
		call	sub_7F8127E7
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F8170CF
		cmp	[ebp+var_2], 0
		jl	loc_7F8170CA
		cmp	[ebp+var_2], 2AA8h
		jg	loc_7F8170CA
		mov	ax, [ebp+Buffer]
		cmp	[ebp+var_6], ax
		ja	loc_7F8170CA
		movzx	ecx, [ebp+Buffer]
		movsx	eax, [ebp+var_2]
		imul	eax, 6
		mov	edx, ecx
		sub	edx, eax
		movzx	esi, [ebp+var_6]
		movzx	eax, [ebp+var_4]
		sub	edx, esi
		sub	edx, eax
		cmp	edx, 6
		jnz	short loc_7F8170CA
		lea	eax, [ebp+var_C]
		add	ecx, ebx
		push	eax		; int
		lea	edx, [ebp+var_14]
		mov	[ebp+var_C], 6
		push	ecx		; lDistanceToMove
		push	edx		; lpBuffer
		call	sub_7F8127E7
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F8170CF
		cmp	[ebp+var_10], 0
		jnz	short loc_7F8170CA
		mov	[ebp+var_C], 6
		lea	eax, [ebp+var_C]
		push	eax		; int
		movzx	ecx, [ebp+var_4]
		movzx	eax, [ebp+var_6]
		add	eax, ecx
		lea	ecx, [ebp+var_14]
		add	eax, ebx
		add	eax, 6
		push	eax		; lDistanceToMove
		push	ecx		; lpBuffer
		call	sub_7F8127E7
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F8170CF
		mov	ax, [ebp+var_6]
		cmp	[ebp+var_10], ax
		jnz	short loc_7F8170CA
		cmp	[ebp+var_14], 0FFFFFFFFh
		jnz	short loc_7F8170CA
		movzx	eax, [ebp+Buffer]
		add	eax, 8
		mov	ecx, [ebp+arg_C]
		cmp	[ebp+arg_8], eax
		mov	[ecx], eax
		jbe	short loc_7F8170CF
		mov	esi, 1017h
		jmp	short loc_7F8170CF
; ---------------------------------------------------------------------------

loc_7F8170CA:				; CODE XREF: sub_7F816F26+65j
					; sub_7F816F26+96j ...
		mov	esi, 1015h

loc_7F8170CF:				; CODE XREF: sub_7F816F26+84j
					; sub_7F816F26+E3j ...
		test	edi, edi
		jz	short loc_7F817101
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F8170E9
		call	sub_7F82A34F
		jmp	short loc_7F8170F7
; ---------------------------------------------------------------------------

loc_7F8170E9:				; CODE XREF: sub_7F816F26+1BAj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F8170F7:				; CODE XREF: sub_7F816F26+1C1j
		mov	dword_7F838078,	0

loc_7F817101:				; CODE XREF: sub_7F816F26+1ABj
		mov	eax, esi

loc_7F817103:				; CODE XREF: sub_7F816F26+5Bj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F816F26	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81710C	proc near		; CODE XREF: sub_7F8173E6+13Ap
		push	ebx
		push	esi
		push	edi
		push	ebp
		xor	edi, edi
		call	sub_7F81731C
		xor	ebp, ebp
		test	eax, eax
		jz	short loc_7F817122
		inc	word ptr [eax]
		jmp	short loc_7F817183
; ---------------------------------------------------------------------------

loc_7F817122:				; CODE XREF: sub_7F81710C+Fj
		call	sub_7F81722B
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F817134
		mov	edi, 709h
		jmp	short loc_7F817183
; ---------------------------------------------------------------------------

loc_7F817134:				; CODE XREF: sub_7F81710C+1Fj
		mov	eax, dword_7F833F18
		xor	ebx, ebx
		push	eax		; hInstance
		call	sub_7F8171B7
		push	ebx		; lpParam
		mov	eax, dword_7F833F18
		push	eax		; hInstance
		push	ebx		; hMenu
		push	ebx		; hWndParent
		push	ebx		; nHeight
		push	ebx		; nWidth
		push	ebx		; Y
		push	ebx		; X
		push	ebx		; dwStyle
		push	offset WindowName ; "MS	Mail32 Notification"
		push	offset ClassName ; "MS Mail32 Notify"
		push	ebx		; dwExStyle
		call	ds:CreateWindowExA
		mov	ebp, eax
		test	ebp, ebp
		jnz	short loc_7F81716D
		mov	edi, 400h
		jmp	short loc_7F817183
; ---------------------------------------------------------------------------

loc_7F81716D:				; CODE XREF: sub_7F81710C+58j
		call	ds:__imp_GetCurrentProcessId
		push	eax		; dwNewLong
		push	0		; nIndex
		push	ebp		; hWnd
		call	ds:SetWindowLongA
		mov	[esi+4], ebp
		inc	word ptr [esi]

loc_7F817183:				; CODE XREF: sub_7F81710C+14j
					; sub_7F81710C+26j ...
		test	edi, edi
		jz	short loc_7F817192
		test	ebp, ebp
		jz	short loc_7F817192
		push	ebp		; hWnd
		call	ds:DestroyWindow

loc_7F817192:				; CODE XREF: sub_7F81710C+79j
					; sub_7F81710C+7Dj
		mov	eax, edi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F81710C	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F817199	proc near		; CODE XREF: sub_7F8173E6+1DAp
					; sub_7F81762E+80p

; FUNCTION CHUNK AT 7F817395 SIZE 00000051 BYTES

		call	sub_7F81731C
		mov	cx, [eax]
		dec	cx
		mov	[eax], cx
		jnz	short locret_7F8171B6
		push	dword ptr [eax+4] ; hWnd
		call	ds:DestroyWindow
		jmp	loc_7F817395
; ---------------------------------------------------------------------------

locret_7F8171B6:			; CODE XREF: sub_7F817199+Dj
		retn
sub_7F817199	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8171B7(HINSTANCE hInstance)
sub_7F8171B7	proc near		; CODE XREF: sub_7F81710C+30p

WndClass	= tagWNDCLASSA ptr -28h
hInstance	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	esi
		push	7F00h		; lpCursorName
		xor	esi, esi
		push	esi		; hInstance
		call	ds:LoadCursorA
		mov	ecx, offset ClassName ;	"MS Mail32 Notify"
		mov	[ebp+WndClass.hCursor],	eax
		mov	eax, [ebp+hInstance]
		mov	[ebp+WndClass.hIcon], esi
		mov	[ebp+WndClass.lpszMenuName], esi
		mov	[ebp+WndClass.lpszClassName], ecx
		mov	[ebp+WndClass.hInstance], eax
		mov	[ebp+WndClass.cbClsExtra], esi
		mov	[ebp+WndClass.hbrBackground], 6
		mov	[ebp+WndClass.style], 4000h
		mov	[ebp+WndClass.lpfnWndProc], offset sub_7F82ACA6
		mov	[ebp+WndClass.cbWndExtra], 4
		lea	edx, [ebp+WndClass]
		push	edx		; lpWndClass
		push	ecx		; lpClassName
		push	eax		; hInstance
		call	ds:GetClassInfoA
		test	eax, eax
		mov	eax, 1
		jnz	short loc_7F817224
		lea	eax, [ebp+WndClass]
		push	eax		; lpWndClass
		call	ds:RegisterClassA
		movzx	eax, ax

loc_7F817224:				; CODE XREF: sub_7F8171B7+5Ej
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F8171B7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81722B	proc near		; CODE XREF: sub_7F81710C:loc_7F817122p

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		call	ds:__imp_GetCurrentProcessId
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], 0
		jmp	loc_7F81724C
; ---------------------------------------------------------------------------

loc_7F817249:				; CODE XREF: sub_7F81722B:loc_7F817274j
		inc	[ebp+var_4]

loc_7F81724C:				; CODE XREF: sub_7F81722B+19j
		movsx	eax, word_7F836278
		cmp	eax, [ebp+var_4]
		jle	loc_7F817279
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_8]
		cmp	dword_7F836280[eax*4], ecx
		jnz	loc_7F817274
		jmp	loc_7F8172F7
; ---------------------------------------------------------------------------

loc_7F817274:				; CODE XREF: sub_7F81722B+3Ej
		jmp	loc_7F817249
; ---------------------------------------------------------------------------

loc_7F817279:				; CODE XREF: sub_7F81722B+2Bj
		mov	[ebp+var_4], 0
		jmp	loc_7F817288
; ---------------------------------------------------------------------------

loc_7F817285:				; CODE XREF: sub_7F81722B:loc_7F8172AEj
		inc	[ebp+var_4]

loc_7F817288:				; CODE XREF: sub_7F81722B+55j
		movsx	eax, word_7F836278
		cmp	eax, [ebp+var_4]
		jle	loc_7F8172B3
		mov	eax, [ebp+var_4]
		cmp	dword_7F836280[eax*4], 0
		jnz	loc_7F8172AE
		jmp	loc_7F8172DC
; ---------------------------------------------------------------------------

loc_7F8172AE:				; CODE XREF: sub_7F81722B+78j
		jmp	loc_7F817285
; ---------------------------------------------------------------------------

loc_7F8172B3:				; CODE XREF: sub_7F81722B+67j
		cmp	[ebp+var_8], 0
		jnz	loc_7F8172C4
		xor	eax, eax
		jmp	loc_7F817317
; ---------------------------------------------------------------------------

loc_7F8172C4:				; CODE XREF: sub_7F81722B+8Cj
		cmp	[ebp+var_4], 64h
		jnz	loc_7F8172D5
		xor	eax, eax
		jmp	loc_7F817317
; ---------------------------------------------------------------------------

loc_7F8172D5:				; CODE XREF: sub_7F81722B+9Dj
		inc	word_7F836278

loc_7F8172DC:				; CODE XREF: sub_7F81722B+7Ej
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		mov	dword_7F836280[ecx*4], eax
		mov	eax, [ebp+var_4]
		lea	edi, unk_7F836410[eax*8]
		xor	eax, eax
		stosd
		stosd

loc_7F8172F7:				; CODE XREF: sub_7F81722B+44j
		cmp	[ebp+var_8], 0
		jnz	loc_7F817308
		xor	eax, eax
		jmp	loc_7F817317
; ---------------------------------------------------------------------------

loc_7F817308:				; CODE XREF: sub_7F81722B+D0j
		mov	eax, [ebp+var_4]
		lea	eax, unk_7F836410[eax*8]
		jmp	$+5
; ---------------------------------------------------------------------------

loc_7F817317:				; CODE XREF: sub_7F81722B+94j
					; sub_7F81722B+A5j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_7F81722B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81731C	proc near		; CODE XREF: sub_7F81710C+6p
					; sub_7F817199p ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		call	ds:__imp_GetCurrentProcessId
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], 0
		jmp	loc_7F81733D
; ---------------------------------------------------------------------------

loc_7F81733A:				; CODE XREF: sub_7F81731C:loc_7F817365j
		inc	[ebp+var_4]

loc_7F81733D:				; CODE XREF: sub_7F81731C+19j
		movsx	eax, word_7F836278
		cmp	eax, [ebp+var_4]
		jle	loc_7F81736A
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_8]
		cmp	dword_7F836280[eax*4], ecx
		jnz	loc_7F817365
		jmp	loc_7F81736A
; ---------------------------------------------------------------------------

loc_7F817365:				; CODE XREF: sub_7F81731C+3Ej
		jmp	loc_7F81733A
; ---------------------------------------------------------------------------

loc_7F81736A:				; CODE XREF: sub_7F81731C+2Bj
					; sub_7F81731C+44j
		movsx	eax, word_7F836278
		cmp	eax, [ebp+var_4]
		jg	loc_7F817381
		xor	eax, eax
		jmp	loc_7F817390
; ---------------------------------------------------------------------------

loc_7F817381:				; CODE XREF: sub_7F81731C+58j
		mov	eax, [ebp+var_4]
		lea	eax, unk_7F836410[eax*8]
		jmp	$+5
; ---------------------------------------------------------------------------

loc_7F817390:				; CODE XREF: sub_7F81731C+60j
					; sub_7F81731C+6Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_7F81731C	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_7F817199

loc_7F817395:				; CODE XREF: sub_7F817199+18j
		push	esi
		push	edi
		call	ds:__imp_GetCurrentProcessId
		test	eax, eax
		jz	short loc_7F8173E3
		mov	si, word_7F836278
		xor	edi, edi
		cmp	si, di
		jle	short loc_7F8173E3
		mov	ecx, offset dword_7F836280

loc_7F8173B4:				; CODE XREF: sub_7F817199+228j
		cmp	[ecx], eax
		jz	short loc_7F8173C5
		add	ecx, 4
		inc	edi
		movsx	edx, si
		cmp	edx, edi
		jg	short loc_7F8173B4
		jmp	short loc_7F8173E3
; ---------------------------------------------------------------------------

loc_7F8173C5:				; CODE XREF: sub_7F817199+21Dj
		mov	dword_7F836280[edi*4], 0
		movsx	eax, si
		sub	eax, edi
		cmp	eax, 1
		jnz	short loc_7F8173E3
		dec	si
		mov	word_7F836278, si

loc_7F8173E3:				; CODE XREF: sub_7F817199+206j
					; sub_7F817199+214j ...
		pop	edi
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_7F817199

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8173E6	proc near		; CODE XREF: sub_7F802896+2Fp
					; sub_7F80B4E1+A1p

var_48		= byte ptr -48h
var_30		= byte ptr -30h
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, 48h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		xor	edi, edi
		mov	[ebp+var_8], esi
		mov	[ebp+var_4], esi
		inc	dword_7F836768
		call	sub_7F82449E
		test	eax, eax
		jz	short loc_7F817410
		inc	word ptr [eax]
		jmp	loc_7F81758E
; ---------------------------------------------------------------------------

loc_7F817410:				; CODE XREF: sub_7F8173E6+20j
		mov	ecx, [ebp+arg_0]
		xor	ebx, ebx
		push	dword ptr [ecx+4]
		push	dword ptr [ecx]
		call	sub_7F82ED7C
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81758E
		lea	eax, [ebp+var_30]
		lea	ecx, [ebp+var_48]
		push	eax
		push	ecx
		call	sub_7F82EDCA
		lea	ecx, [ebp+var_48]
		lea	edx, [ebp+var_30]
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_18], ecx
		mov	[ebp+var_14], edx
		lea	ecx, [ebp+var_18]
		push	ecx
		call	sub_7F814EF3
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81758E
		mov	esi, 1
		cmp	dword_7F836768,	esi
		jnz	loc_7F817503
		call	sub_7F820E5D
		push	ebx
		push	ebx
		call	sub_7F810254
		push	ebx
		push	2000h
		call	sub_7F82F03B
		mov	lpBuffer, eax
		cmp	eax, ebx
		jnz	short loc_7F817496
		mov	edi, 400h
		jmp	loc_7F81758E
; ---------------------------------------------------------------------------

loc_7F817496:				; CODE XREF: sub_7F8173E6+A4j
		push	0
		push	0FE00h
		call	sub_7F82F03B
		mov	lpsz, eax
		test	eax, eax
		jnz	short loc_7F8174B5
		mov	edi, 400h
		jmp	loc_7F81758E
; ---------------------------------------------------------------------------

loc_7F8174B5:				; CODE XREF: sub_7F8173E6+C3j
		mov	edi, offset aMsmail32_ini_0 ; "msmail32.ini"
		call	sub_7F8176BB
		push	edi		; lpFileName
		mov	ebx, offset aMmf ; "MMF"
		push	3Ch		; nDefault
		push	offset aAutodisconnect ; "AutoDisconnectInterval"
		push	ebx		; lpAppName
		call	ds:GetPrivateProfileIntA
		movsx	eax, ax
		mov	ecx, 6
		sub	edx, edx
		imul	eax, 1770h
		push	edi		; lpFileName
		mov	dword_7F83676C,	eax
		div	ecx
		push	1		; nDefault
		mov	dword_7F836770,	eax
		push	offset aAutorebuildfol ; "AutoRebuildFolders"
		push	ebx		; lpAppName
		call	ds:GetPrivateProfileIntA
		mov	dword_7F836778,	eax

loc_7F817503:				; CODE XREF: sub_7F8173E6+80j
		push	22Ch		; dwBytes
		call	sub_7F824364
		test	eax, eax
		jnz	short loc_7F817518
		mov	edi, 400h
		jmp	short loc_7F81758E
; ---------------------------------------------------------------------------

loc_7F817518:				; CODE XREF: sub_7F8173E6+129j
		mov	ebx, 1
		mov	[ebp+var_4], ebx
		call	sub_7F81710C
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F81758E
		mov	[ebp+var_8], ebx
		cmp	dword_7F836768,	ebx
		jnz	short loc_7F81754B
		call	sub_7F823FB2
		mov	dword_7F836764,	eax
		test	eax, eax
		jnz	short loc_7F81754B
		mov	edi, 400h
		jmp	short loc_7F81758E
; ---------------------------------------------------------------------------

loc_7F81754B:				; CODE XREF: sub_7F8173E6+14Ej
					; sub_7F8173E6+15Cj
		call	sub_7F82449E
		inc	word ptr [eax]
		lea	ecx, [eax+18h]
		mov	edx, [ecx]
		or	dl, 8
		mov	[ecx], edx
		and	dl, 0FDh
		mov	[ecx], edx
		or	dl, 1
		mov	[ecx], edx
		xor	edx, edx
		mov	ecx, [ebp+arg_0]
		mov	[eax+8], edx
		mov	ecx, [ecx]
		cmp	word ptr [ecx],	3
		jg	short loc_7F817585
		cmp	[ecx+2], dx
		jnz	short loc_7F817585
		cmp	word ptr [ecx+4], 3E9h
		jle	short loc_7F81758B

loc_7F817585:				; CODE XREF: sub_7F8173E6+18Fj
					; sub_7F8173E6+195j
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx+8]

loc_7F81758B:				; CODE XREF: sub_7F8173E6+19Dj
		mov	[eax+0Ch], edx

loc_7F81758E:				; CODE XREF: sub_7F8173E6+25j
					; sub_7F8173E6+3Dj ...
		xor	ebx, ebx
		test	edi, edi
		jz	loc_7F817623
		cmp	dword_7F836768,	1
		jnz	short loc_7F8175BA
		cmp	dword_7F836764,	ebx
		jz	short loc_7F8175BA
		mov	eax, dword_7F836764
		push	eax
		call	sub_7F823FB7
		mov	dword_7F836764,	ebx

loc_7F8175BA:				; CODE XREF: sub_7F8173E6+1B9j
					; sub_7F8173E6+1C1j
		cmp	[ebp+var_8], 0
		jz	short loc_7F8175C5
		call	sub_7F817199

loc_7F8175C5:				; CODE XREF: sub_7F8173E6+1D8j
		cmp	[ebp+var_4], 0
		jz	short loc_7F8175D0
		call	sub_7F824418

loc_7F8175D0:				; CODE XREF: sub_7F8173E6+1E3j
		test	esi, esi
		jz	short loc_7F8175D9
		call	sub_7F814F94

loc_7F8175D9:				; CODE XREF: sub_7F8173E6+1ECj
		xor	esi, esi
		dec	dword_7F836768
		cmp	dword_7F836768,	esi
		jg	short loc_7F817623
		mov	dword_7F836768,	esi
		cmp	lpBuffer, esi
		jz	short loc_7F817608
		mov	eax, lpBuffer
		push	eax
		call	sub_7F82F149
		mov	lpBuffer, esi

loc_7F817608:				; CODE XREF: sub_7F8173E6+20Fj
		xor	esi, esi
		cmp	lpsz, esi
		jz	short loc_7F817623
		mov	eax, lpsz
		push	eax
		call	sub_7F82F149
		mov	lpsz, esi

loc_7F817623:				; CODE XREF: sub_7F8173E6+1ACj
					; sub_7F8173E6+201j ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F8173E6	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81762E	proc near		; CODE XREF: ScMMFVerify@16:loc_7F80208Bp
					; ScMMFMigrateToMDB@48:loc_7F802368p ...
		push	esi
		push	edi
		xor	edi, edi
		call	sub_7F82449E
		mov	esi, eax
		dec	dword_7F836768
		cmp	dword_7F836768,	edi
		jg	short loc_7F81769C
		cmp	dword_7F836764,	edi
		jz	short loc_7F817660
		mov	eax, dword_7F836764
		push	eax
		call	sub_7F823FB7
		mov	dword_7F836764,	edi

loc_7F817660:				; CODE XREF: sub_7F81762E+1Fj
		xor	edi, edi
		mov	dword_7F836768,	edi
		cmp	lpBuffer, edi
		jz	short loc_7F817681
		mov	eax, lpBuffer
		push	eax
		call	sub_7F82F149
		mov	lpBuffer, edi

loc_7F817681:				; CODE XREF: sub_7F81762E+40j
		xor	edi, edi
		cmp	lpsz, edi
		jz	short loc_7F81769C
		mov	eax, lpsz
		push	eax
		call	sub_7F82F149
		mov	lpsz, edi

loc_7F81769C:				; CODE XREF: sub_7F81762E+17j
					; sub_7F81762E+5Bj
		mov	ax, [esi]
		dec	ax
		mov	[esi], ax
		test	ax, ax
		jg	short loc_7F8176B8
		call	sub_7F824418
		call	sub_7F817199
		call	sub_7F814F94

loc_7F8176B8:				; CODE XREF: sub_7F81762E+79j
		pop	edi
		pop	esi
		retn
sub_7F81762E	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8176BB	proc near		; CODE XREF: sub_7F8173E6+D4p
		mov	dword_7F836760,	0
		retn
sub_7F8176BB	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F8176C6(LPCSTR lpString1, LPCSTR lpString2)
sub_7F8176C6	proc near		; CODE XREF: sub_7F815163+67p
					; sub_7F815163+76p ...

lpString1	= dword	ptr  4
lpString2	= dword	ptr  8

		push	[esp+lpString2]	; lpString2
		push	[esp+4+lpString1] ; lpString1
		call	ds:lstrcmpiA
		test	eax, eax
		jnz	short loc_7F8176DC
		xor	eax, eax
		jmp	short locret_7F8176E8
; ---------------------------------------------------------------------------

loc_7F8176DC:				; CODE XREF: sub_7F8176C6+10j
		mov	eax, 0FFFFFFFFh
		jl	short locret_7F8176E8
		mov	eax, 1

locret_7F8176E8:			; CODE XREF: sub_7F8176C6+14j
					; sub_7F8176C6+1Bj
		retn	8
sub_7F8176C6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8176EB(int, LPSTR	lpsz, DWORD cchLength)
sub_7F8176EB	proc near		; CODE XREF: sub_7F815163+1B7p
					; sub_7F815163+23Cp ...

arg_0		= dword	ptr  8
lpsz		= dword	ptr  0Ch
cchLength	= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+cchLength]
		test	edi, edi
		jz	short loc_7F817711
		mov	esi, [ebp+lpsz]
		cmp	esi, [ebp+arg_0]
		jz	short loc_7F817709
		push	edi
		push	esi
		push	[ebp+arg_0]
		call	sub_7F81ABAD

loc_7F817709:				; CODE XREF: sub_7F8176EB+12j
		push	edi		; cchLength
		push	esi		; lpsz
		call	ds:CharUpperBuffA

loc_7F817711:				; CODE XREF: sub_7F8176EB+Aj
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
sub_7F8176EB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F817717	proc near		; CODE XREF: sub_7F810C9B+11Bp

SystemTime	= _SYSTEMTIME ptr -10h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		lea	eax, [ebp+SystemTime]
		push	eax		; lpSystemTime
		call	ds:GetLocalTime
		mov	ax, [ebp+SystemTime.wHour]
		mov	ecx, [ebp+arg_0]
		mov	dx, [ebp+SystemTime.wMinute]
		mov	[ecx+6], ax
		mov	ax, [ebp+SystemTime.wSecond]
		mov	[ecx+8], dx
		mov	dx, [ebp+SystemTime.wDay]
		mov	[ecx+0Ah], ax
		mov	ax, [ebp+SystemTime.wMonth]
		mov	[ecx+4], dx
		mov	dx, [ebp+SystemTime.wYear]
		mov	[ecx+2], ax
		mov	ax, [ebp+SystemTime.wDayOfWeek]
		mov	[ecx], dx
		mov	[ecx+0Ch], ax
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F817717	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F817767	proc near		; CODE XREF: sub_7F828018+E9p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= word ptr  10h

		push	ebp
		mov	dx, [esp+arg_8]
		mov	ebp, esp
		sub	esp, 8
		test	dl, 40h
		push	esi
		push	edi
		jz	short loc_7F8177A0
		mov	esi, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		mov	di, [esi]
		mov	ax, [ecx]
		cmp	di, ax
		jle	short loc_7F817794
		mov	eax, 0FFFFFFFFh
		jmp	loc_7F817828
; ---------------------------------------------------------------------------

loc_7F817794:				; CODE XREF: sub_7F817767+21j
		jge	short loc_7F8177A6
		mov	eax, 1
		jmp	loc_7F817828
; ---------------------------------------------------------------------------

loc_7F8177A0:				; CODE XREF: sub_7F817767+10j
		mov	ecx, [ebp+arg_0]
		mov	esi, [ebp+arg_4]

loc_7F8177A6:				; CODE XREF: sub_7F817767:loc_7F817794j
		test	dl, 20h
		jz	short loc_7F8177C8
		mov	di, [esi+2]
		mov	ax, [ecx+2]
		cmp	di, ax
		jle	short loc_7F8177BF
		mov	eax, 0FFFFFFFFh
		jmp	short loc_7F817828
; ---------------------------------------------------------------------------

loc_7F8177BF:				; CODE XREF: sub_7F817767+4Fj
		jge	short loc_7F8177C8
		mov	eax, 1
		jmp	short loc_7F817828
; ---------------------------------------------------------------------------

loc_7F8177C8:				; CODE XREF: sub_7F817767+42j
					; sub_7F817767:loc_7F8177BFj
		test	dl, 10h
		jz	short loc_7F8177EA
		mov	di, [esi+4]
		mov	ax, [ecx+4]
		cmp	di, ax
		jle	short loc_7F8177E1
		mov	eax, 0FFFFFFFFh
		jmp	short loc_7F817828
; ---------------------------------------------------------------------------

loc_7F8177E1:				; CODE XREF: sub_7F817767+71j
		jge	short loc_7F8177EA
		mov	eax, 1
		jmp	short loc_7F817828
; ---------------------------------------------------------------------------

loc_7F8177EA:				; CODE XREF: sub_7F817767+64j
					; sub_7F817767:loc_7F8177E1j
		and	dx, 0FFFEh
		test	dl, 0Eh
		jz	short loc_7F817826
		mov	al, [ecx+6]
		mov	byte ptr [ebp+var_4+1],	al
		mov	al, [ecx+8]
		mov	cl, [ecx+0Ah]
		mov	byte ptr [ebp+var_4], al
		mov	al, [esi+6]
		mov	byte ptr [ebp+var_4+3],	cl
		mov	cl, [esi+8]
		push	edx
		mov	byte ptr [ebp+var_8+1],	al
		mov	byte ptr [ebp+var_8], cl
		mov	al, [esi+0Ah]
		mov	byte ptr [ebp+var_8+3],	al
		push	[ebp+var_8]
		push	[ebp+var_4]
		call	sub_7F817830
		jmp	short loc_7F817828
; ---------------------------------------------------------------------------

loc_7F817826:				; CODE XREF: sub_7F817767+8Bj
		xor	eax, eax

loc_7F817828:				; CODE XREF: sub_7F817767+28j
					; sub_7F817767+34j ...
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F817767	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F817830	proc near		; CODE XREF: sub_7F817767+B8p

arg_0		= byte ptr  8
arg_1		= byte ptr  9
arg_2		= byte ptr  0Ah
arg_3		= byte ptr  0Bh
arg_4		= byte ptr  0Ch
arg_5		= byte ptr  0Dh
arg_6		= byte ptr  0Eh
arg_7		= byte ptr  0Fh
arg_8		= word ptr  10h

		push	ebp
		mov	ax, [esp+arg_8]
		mov	ebp, esp
		test	al, 8
		jz	short loc_7F81785A
		mov	cl, [ebp+arg_1]
		cmp	[ebp+arg_5], cl
		jbe	short loc_7F81784B
		mov	eax, 0FFFFFFFFh
		jmp	short loc_7F8178C0
; ---------------------------------------------------------------------------

loc_7F81784B:				; CODE XREF: sub_7F817830+12j
		mov	cl, [ebp+arg_1]
		cmp	[ebp+arg_5], cl
		jnb	short loc_7F81785A
		mov	eax, 1
		jmp	short loc_7F8178C0
; ---------------------------------------------------------------------------

loc_7F81785A:				; CODE XREF: sub_7F817830+Aj
					; sub_7F817830+21j
		test	al, 4
		jz	short loc_7F81787C
		mov	cl, [ebp+arg_0]
		cmp	[ebp+arg_4], cl
		jbe	short loc_7F81786D
		mov	eax, 0FFFFFFFFh
		jmp	short loc_7F8178C0
; ---------------------------------------------------------------------------

loc_7F81786D:				; CODE XREF: sub_7F817830+34j
		mov	cl, [ebp+arg_0]
		cmp	[ebp+arg_4], cl
		jnb	short loc_7F81787C
		mov	eax, 1
		jmp	short loc_7F8178C0
; ---------------------------------------------------------------------------

loc_7F81787C:				; CODE XREF: sub_7F817830+2Cj
					; sub_7F817830+43j
		test	al, 2
		jz	short loc_7F81789E
		mov	cl, [ebp+arg_3]
		cmp	[ebp+arg_7], cl
		jbe	short loc_7F81788F
		mov	eax, 0FFFFFFFFh
		jmp	short loc_7F8178C0
; ---------------------------------------------------------------------------

loc_7F81788F:				; CODE XREF: sub_7F817830+56j
		mov	cl, [ebp+arg_3]
		cmp	[ebp+arg_7], cl
		jnb	short loc_7F81789E
		mov	eax, 1
		jmp	short loc_7F8178C0
; ---------------------------------------------------------------------------

loc_7F81789E:				; CODE XREF: sub_7F817830+4Ej
					; sub_7F817830+65j
		test	al, 1
		jz	short loc_7F8178BE
		mov	al, [ebp+arg_2]
		cmp	[ebp+arg_6], al
		jbe	short loc_7F8178B1
		mov	eax, 0FFFFFFFFh
		jmp	short loc_7F8178C0
; ---------------------------------------------------------------------------

loc_7F8178B1:				; CODE XREF: sub_7F817830+78j
		mov	al, [ebp+arg_2]
		cmp	[ebp+arg_6], al
		mov	eax, 1
		jb	short loc_7F8178C0

loc_7F8178BE:				; CODE XREF: sub_7F817830+70j
		xor	eax, eax

loc_7F8178C0:				; CODE XREF: sub_7F817830+19j
					; sub_7F817830+28j ...
		pop	ebp
		retn	0Ch
sub_7F817830	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8178C4	proc near		; CODE XREF: sub_7F810C9B+172p
					; sub_7F810C9B+18Bp ...

arg_0		= dword	ptr  4

		xor	eax, eax
		mov	ecx, [esp+arg_0]
		push	eax
		push	eax
		push	eax
		push	eax
		push	dword ptr [ecx]
		call	sub_7F8178D8
		retn	4
sub_7F8178C4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8178D8	proc near		; CODE XREF: sub_7F8178C4+Cp
					; sub_7F8181F1+4Ap ...

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_1A		= word ptr -1Ah
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ecx, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 34h
		mov	eax, [ecx+14h]
		push	ebx
		push	esi
		mov	[ebp+var_34], eax
		push	edi
		xor	eax, eax
		mov	[ebp+var_C], eax
		cmp	[ebp+arg_8], eax
		jz	short loc_7F8178FF
		mov	eax, [ebp+arg_8]
		mov	ecx, [eax]
		mov	[ebp+var_14], ecx
		jmp	short loc_7F817951
; ---------------------------------------------------------------------------

loc_7F8178FF:				; CODE XREF: sub_7F8178D8+1Bj
		mov	ecx, [ebp+arg_0]
		push	30h
		mov	eax, [ecx+18h]
		mov	edx, [eax]
		movsx	eax, word ptr [edx]
		imul	eax, 0Ch
		add	eax, 0Eh
		push	eax
		call	sub_7F82F18D
		mov	[ebp+arg_8], eax
		test	eax, eax
		jnz	short loc_7F81792B
		mov	[ebp+var_4], 400h
		jmp	loc_7F817C7B
; ---------------------------------------------------------------------------

loc_7F81792B:				; CODE XREF: sub_7F8178D8+45j
		mov	eax, [ebp+arg_8]
		mov	edx, [ebp+arg_0]
		mov	ecx, [eax]
		mov	eax, [edx+18h]
		mov	[ebp+var_14], ecx
		mov	eax, [eax]
		movsx	ecx, word ptr [eax]
		imul	ecx, 0Ch
		add	ecx, 0Eh
		push	ecx
		push	eax
		push	[ebp+var_14]
		call	sub_7F82FCE0
		add	esp, 0Ch

loc_7F817951:				; CODE XREF: sub_7F8178D8+25j
		mov	ecx, [ebp+var_14]
		mov	ax, [ecx]
		add	ecx, 0Eh
		movsx	esi, ax
		imul	esi, 0Ch
		add	esi, 12h
		test	ax, ax
		jle	short loc_7F817975

loc_7F817968:				; CODE XREF: sub_7F8178D8+9Bj
		dec	ax
		add	esi, [ecx+8]
		add	ecx, 0Ch
		test	ax, ax
		jnz	short loc_7F817968

loc_7F817975:				; CODE XREF: sub_7F8178D8+8Ej
		cmp	[ebp+arg_4], 0
		mov	edi, [ebp+arg_0]
		jz	short loc_7F817986
		add	edi, 0Ch
		mov	eax, [ebp+arg_4]
		jmp	short loc_7F817994
; ---------------------------------------------------------------------------

loc_7F817986:				; CODE XREF: sub_7F8178D8+A4j
		add	edi, 0Ch
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx+8]
		and	eax, 0FFh

loc_7F817994:				; CODE XREF: sub_7F8178D8+ACj
		push	esi
		mov	ecx, [ebp+arg_0]
		push	0A000h
		mov	[edi], eax
		push	edi
		lea	eax, [ebp+var_C]
		push	eax
		push	dword ptr [ecx]
		call	sub_7F824835
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	loc_7F817C7B
		mov	[ebp+var_10], 0FFFFFFF8h
		cmp	[ebp+arg_4], 0
		mov	ebx, lpsz
		jz	short loc_7F8179CD
		mov	eax, [edi]
		jmp	short loc_7F8179D3
; ---------------------------------------------------------------------------

loc_7F8179CD:				; CODE XREF: sub_7F8178D8+EFj
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx+8]

loc_7F8179D3:				; CODE XREF: sub_7F8178D8+F3j
		mov	ecx, [ebp+var_14]
		mov	[ebx], eax
		mov	[ebx+4], esi
		add	ebx, 8
		movsx	eax, word ptr [ecx]
		imul	eax, 0Ch
		sub	esi, eax
		mov	eax, 4
		sub	esi, 0Eh
		xor	edi, edi
		mov	[ebx], esi
		mov	[ebp+var_28], eax
		add	ebx, eax
		mov	esi, 0FDF4h
		mov	[ebp+var_24], eax
		mov	ax, [ecx]
		movsx	edx, ax
		mov	[ebp+var_1A], ax
		imul	edx, 0Ch
		cmp	ax, di
		lea	edx, [edx+ecx+2]
		mov	[ebp+var_2C], edx
		jle	loc_7F817B67

loc_7F817A1C:				; CODE XREF: sub_7F8178D8+289j
		mov	edx, [ebp+var_2C]
		mov	ecx, [edx+4]
		mov	eax, ecx
		mov	[ebp+var_20], ecx
		and	eax, 80000000h
		shr	eax, 1Fh
		mov	[ebp+var_30], eax
		test	eax, eax
		jz	short loc_7F817A3A
		and	byte ptr [ebp+var_20+3], 7Fh

loc_7F817A3A:				; CODE XREF: sub_7F8178D8+15Cj
		mov	ecx, [ebp+var_28]
		mov	edx, [ebp+var_2C]
		mov	[edx+4], ecx
		mov	eax, [edx+8]
		mov	[ebp+var_18], eax
		add	[ebp+var_28], eax
		cmp	[ebp+var_30], 0
		jnz	short loc_7F817A64
		mov	ecx, [ebp+var_20]
		cmp	ecx, [ebp+var_24]
		jnz	short loc_7F817A64
		add	edi, eax
		add	[ebp+var_24], eax
		jmp	loc_7F817B54
; ---------------------------------------------------------------------------

loc_7F817A64:				; CODE XREF: sub_7F8178D8+178j
					; sub_7F8178D8+180j
		test	edi, edi
		jz	short loc_7F817AD1

loc_7F817A68:				; CODE XREF: sub_7F8178D8+1F7j
		cmp	edi, esi
		mov	eax, edi
		jb	short loc_7F817A70
		mov	eax, esi

loc_7F817A70:				; CODE XREF: sub_7F8178D8+194j
		lea	ecx, [ebp+var_8]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_24]
		sub	eax, edi
		push	eax
		push	ecx
		push	ebx
		push	[ebp+var_34]
		call	sub_7F824CAB
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	loc_7F817C7B
		add	ebx, [ebp+var_8]
		sub	esi, [ebp+var_8]
		jnz	short loc_7F817ACC
		push	[ebp+var_10]
		push	0FE00h
		push	lpsz
		push	[ebp+var_C]
		call	sub_7F825278
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	loc_7F817C7B
		mov	ebx, lpsz
		mov	esi, 0FE00h
		add	[ebp+var_10], 0FE00h

loc_7F817ACC:				; CODE XREF: sub_7F8178D8+1BFj
		sub	edi, [ebp+var_8]
		jnz	short loc_7F817A68

loc_7F817AD1:				; CODE XREF: sub_7F8178D8+18Ej
		cmp	[ebp+var_30], 0
		jnz	short loc_7F817AE5
		mov	eax, [ebp+var_18]
		mov	edi, [ebp+var_18]
		add	eax, [ebp+var_20]
		mov	[ebp+var_24], eax
		jmp	short loc_7F817B54
; ---------------------------------------------------------------------------

loc_7F817AE5:				; CODE XREF: sub_7F8178D8+1FDj
		cmp	[ebp+var_18], 0
		jz	short loc_7F817B52
		mov	edi, 0FE00h

loc_7F817AF0:				; CODE XREF: sub_7F8178D8+278j
		mov	eax, [ebp+var_18]
		cmp	eax, esi
		jb	short loc_7F817AF9
		mov	eax, esi

loc_7F817AF9:				; CODE XREF: sub_7F8178D8+21Dj
		lea	ecx, [ebp+var_8]
		mov	[ebp+var_8], eax
		push	[ebp+var_20]
		push	ecx
		push	ebx
		push	[ebp+arg_C]
		call	sub_7F824CAB
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	loc_7F817C7B
		add	ebx, [ebp+var_8]
		sub	esi, [ebp+var_8]
		jnz	short loc_7F817B47
		push	[ebp+var_10]
		push	edi
		push	lpsz
		push	[ebp+var_C]
		call	sub_7F825278
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	loc_7F817C7B
		mov	ebx, lpsz
		mov	esi, edi
		add	[ebp+var_10], edi

loc_7F817B47:				; CODE XREF: sub_7F8178D8+245j
		mov	ecx, [ebp+var_8]
		add	[ebp+var_20], ecx
		sub	[ebp+var_18], ecx
		jnz	short loc_7F817AF0

loc_7F817B52:				; CODE XREF: sub_7F8178D8+211j
		xor	edi, edi

loc_7F817B54:				; CODE XREF: sub_7F8178D8+187j
					; sub_7F8178D8+20Bj
		sub	[ebp+var_2C], 0Ch
		dec	[ebp+var_1A]
		cmp	[ebp+var_1A], 0
		jg	loc_7F817A1C

loc_7F817B67:				; CODE XREF: sub_7F8178D8+13Ej
		test	edi, edi
		jz	short loc_7F817BD4

loc_7F817B6B:				; CODE XREF: sub_7F8178D8+2FAj
		cmp	edi, esi
		mov	eax, edi
		jb	short loc_7F817B73
		mov	eax, esi

loc_7F817B73:				; CODE XREF: sub_7F8178D8+297j
		lea	ecx, [ebp+var_8]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_24]
		sub	eax, edi
		push	eax
		push	ecx
		push	ebx
		push	[ebp+var_34]
		call	sub_7F824CAB
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	loc_7F817C7B
		add	ebx, [ebp+var_8]
		sub	esi, [ebp+var_8]
		jnz	short loc_7F817BCF
		push	[ebp+var_10]
		push	0FE00h
		push	lpsz
		push	[ebp+var_C]
		call	sub_7F825278
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	loc_7F817C7B
		mov	ebx, lpsz
		mov	esi, 0FE00h
		add	[ebp+var_10], 0FE00h

loc_7F817BCF:				; CODE XREF: sub_7F8178D8+2C2j
		sub	edi, [ebp+var_8]
		jnz	short loc_7F817B6B

loc_7F817BD4:				; CODE XREF: sub_7F8178D8+291j
		mov	ecx, [ebp+var_14]
		movsx	edi, word ptr [ecx]
		imul	edi, 0Ch
		add	edi, 0Eh
		mov	[ebp-1Ch], ecx
		add	[ebp+var_28], edi
		test	edi, edi
		jz	short loc_7F817C43

loc_7F817BEA:				; CODE XREF: sub_7F8178D8+369j
		cmp	edi, esi
		mov	eax, edi
		jb	short loc_7F817BF2
		mov	eax, esi

loc_7F817BF2:				; CODE XREF: sub_7F8178D8+316j
		push	eax
		mov	[ebp+var_8], eax
		push	dword ptr [ebp-1Ch]
		push	ebx
		call	sub_7F82FCE0
		add	esp, 0Ch
		add	ebx, [ebp+var_8]
		sub	esi, [ebp+var_8]
		jnz	short loc_7F817C39
		push	[ebp+var_10]
		push	0FE00h
		push	lpsz
		push	[ebp+var_C]
		call	sub_7F825278
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	short loc_7F817C7B
		mov	ebx, lpsz
		mov	esi, 0FE00h
		add	[ebp+var_10], 0FE00h

loc_7F817C39:				; CODE XREF: sub_7F8178D8+330j
		mov	eax, [ebp+var_8]
		add	[ebp-1Ch], eax
		sub	edi, eax
		jnz	short loc_7F817BEA

loc_7F817C43:				; CODE XREF: sub_7F8178D8+310j
		cmp	esi, 0FE00h
		jz	short loc_7F817C6D
		push	[ebp+var_10]
		mov	eax, 0FE7Fh
		sub	eax, esi
		and	al, 80h
		push	eax
		push	lpsz
		push	[ebp+var_C]
		call	sub_7F825278
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	short loc_7F817C7B

loc_7F817C6D:				; CODE XREF: sub_7F8178D8+371j
		push	1
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_7F824AF5
		mov	[ebp+var_4], eax

loc_7F817C7B:				; CODE XREF: sub_7F8178D8+4Ej
					; sub_7F8178D8+D8j ...
		xor	ecx, ecx
		mov	eax, [ebp+arg_10]
		cmp	[ebp+var_4], ecx
		jz	short loc_7F817CB6
		cmp	eax, ecx
		jz	short loc_7F817C8B
		mov	[eax], ecx

loc_7F817C8B:				; CODE XREF: sub_7F8178D8+3AFj
		cmp	[ebp+var_C], 0
		jz	short loc_7F817C9C
		push	2
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_7F824AF5

loc_7F817C9C:				; CODE XREF: sub_7F8178D8+3B7j
		cmp	[ebp+arg_8], 0
		jz	short loc_7F817CAA
		push	[ebp+arg_8]
		call	sub_7F82F1E1

loc_7F817CAA:				; CODE XREF: sub_7F8178D8+3C8j
		mov	ecx, [ebp+arg_0]
		mov	dword ptr [ecx+0Ch], 0
		jmp	short loc_7F817CC8
; ---------------------------------------------------------------------------

loc_7F817CB6:				; CODE XREF: sub_7F8178D8+3ABj
		test	eax, eax
		jz	short loc_7F817CBF
		mov	ecx, [ebp+var_28]
		mov	[eax], ecx

loc_7F817CBF:				; CODE XREF: sub_7F8178D8+3E0j
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+arg_0]
		mov	[ecx+1Ch], eax

loc_7F817CC8:				; CODE XREF: sub_7F8178D8+3DCj
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F8178D8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F817CD4	proc near		; CODE XREF: sub_7F817E9D+CCp

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= word ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_8], 0
		push	ebx
		push	esi
		mov	ax, [ebp+arg_8]
		push	edi
		and	ax, 3
		mov	esi, [ebp+arg_4]
		cmp	ax, 1
		mov	edi, [ebp+arg_C]
		sbb	ebx, ebx
		mov	dword ptr [esi], 0
		mov	word ptr [edi],	1
		and	ebx, 20h
		push	[ebp+arg_0]
		add	bx, 10h
		call	sub_7F82559E
		mov	cx, [ebp+arg_8]
		and	cx, 2
		jnz	loc_7F817E43
		test	eax, eax
		jz	loc_7F817E43
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		lea	ecx, [ebp+var_10]
		mov	[ebp+var_C], 4
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F824CAB
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	loc_7F817E7C
		lea	ecx, [ebp+var_C]
		lea	edx, [ebp+var_2]
		push	[ebp+var_10]
		push	ecx
		mov	[ebp+var_C], 2
		push	edx
		push	[ebp+arg_0]
		call	sub_7F824CAB
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	loc_7F817E7C
		cmp	[ebp+var_2], 1519h
		jb	short loc_7F817D85
		mov	[ebp+var_8], 1017h
		jmp	loc_7F817E7C
; ---------------------------------------------------------------------------

loc_7F817D85:				; CODE XREF: sub_7F817CD4+A3j
		movsx	eax, [ebp+var_2]
		imul	eax, 0Ch
		add	eax, 0Eh
		cmp	eax, 0FFFFh
		jbe	short loc_7F817DA2
		mov	[ebp+var_8], 1002h
		jmp	loc_7F817E7C
; ---------------------------------------------------------------------------

loc_7F817DA2:				; CODE XREF: sub_7F817CD4+C0j
		mov	ecx, eax
		mov	[ebp+var_C], eax
		test	byte ptr [ebp+arg_8], 1
		jz	short loc_7F817DC1
		lea	ecx, [eax+3Ch]
		cmp	ecx, 0FFFFh
		jb	short loc_7F817DBC
		mov	ecx, eax
		jmp	short loc_7F817DC1
; ---------------------------------------------------------------------------

loc_7F817DBC:				; CODE XREF: sub_7F817CD4+E2j
		mov	word ptr [edi],	0

loc_7F817DC1:				; CODE XREF: sub_7F817CD4+D7j
					; sub_7F817CD4+E6j
		movzx	ebx, bx
		push	ebx
		push	ecx
		call	sub_7F82F18D
		mov	[esi], eax
		test	eax, eax
		jnz	short loc_7F817E00
		cmp	word ptr [edi],	0
		jz	short loc_7F817DE3
		mov	[ebp+var_8], 400h
		jmp	loc_7F817E7C
; ---------------------------------------------------------------------------

loc_7F817DE3:				; CODE XREF: sub_7F817CD4+101j
		mov	word ptr [edi],	1
		push	ebx
		push	[ebp+var_C]
		call	sub_7F82F18D
		mov	[esi], eax
		test	eax, eax
		jnz	short loc_7F817E00
		mov	[ebp+var_8], 400h
		jmp	short loc_7F817E7C
; ---------------------------------------------------------------------------

loc_7F817E00:				; CODE XREF: sub_7F817CD4+FBj
					; sub_7F817CD4+121j
		mov	eax, [esi]
		push	[ebp+var_10]
		mov	ebx, [eax]
		lea	eax, [ebp+var_C]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_7F824CAB
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	short loc_7F817E7C
		cmp	word ptr [edi],	0
		jnz	short loc_7F817E3B
		movsx	ecx, word ptr [ebx]
		imul	ecx, 0Ch
		mov	eax, [ebp+var_10]
		mov	[ecx+ebx+12h], eax
		movsx	eax, word ptr [ebx]
		imul	eax, 0Ch
		lea	ecx, [eax+0Eh]
		mov	[eax+ebx+16h], ecx

loc_7F817E3B:				; CODE XREF: sub_7F817CD4+14Bj
		mov	word ptr [ebx+0Ch], 0
		jmp	short loc_7F817E7C
; ---------------------------------------------------------------------------

loc_7F817E43:				; CODE XREF: sub_7F817CD4+46j
					; sub_7F817CD4+4Ej
		test	cx, cx
		mov	eax, 0Eh
		jz	short loc_7F817E57
		mov	word ptr [edi],	0
		mov	eax, 4Ah

loc_7F817E57:				; CODE XREF: sub_7F817CD4+177j
		push	30h
		push	eax
		call	sub_7F82F18D
		mov	[esi], eax
		test	eax, eax
		jnz	short loc_7F817E6E
		mov	[ebp+var_8], 400h
		jmp	short loc_7F817E7C
; ---------------------------------------------------------------------------

loc_7F817E6E:				; CODE XREF: sub_7F817CD4+18Fj
		mov	eax, [eax]
		and	word ptr [eax+2], 0FFFCh
		mov	word ptr [eax+4], 0FFFFh

loc_7F817E7C:				; CODE XREF: sub_7F817CD4+72j
					; sub_7F817CD4+97j ...
		xor	edi, edi
		cmp	[ebp+var_8], edi
		jz	short loc_7F817E91
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_7F817E91
		push	eax
		call	sub_7F82F1E1
		mov	[esi], edi

loc_7F817E91:				; CODE XREF: sub_7F817CD4+1ADj
					; sub_7F817CD4+1B3j
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F817CD4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F817E9D	proc near		; CODE XREF: sub_7F80FD8E+22p
					; sub_7F80FD8E+5Ap ...

var_10		= dword	ptr -10h
var_C		= word ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
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, 10h
		mov	[ebp+var_2], 1
		push	ebx
		push	esi
		push	edi
		push	10h
		push	24h
		call	sub_7F82F18D
		mov	ecx, [ebp+arg_C]
		test	eax, eax
		mov	[ecx], eax
		jnz	short loc_7F817ECE
		mov	esi, 400h
		mov	edi, [ebp+arg_4]
		mov	ebx, [ebp-4]
		jmp	loc_7F817FFF
; ---------------------------------------------------------------------------

loc_7F817ECE:				; CODE XREF: sub_7F817E9D+1Fj
		mov	ebx, [eax]
		push	0
		push	[ebp+arg_8]
		mov	edi, [ebp+arg_4]
		lea	eax, [ebx+14h]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	sub_7F824835
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F818007
		mov	ax, word ptr [ebp+arg_8]
		and	ax, 2
		mov	[ebp+var_C], ax
		jnz	short loc_7F817F55
		push	2
		push	dword ptr [edi]
		push	[ebp+arg_0]
		call	sub_7F81155C
		mov	[ebx+18h], eax
		test	eax, eax
		jz	short loc_7F817F55
		test	byte ptr [ebp+arg_8], 1
		jz	short loc_7F817F55
		push	eax
		call	sub_7F82F1CA
		push	0
		mov	[ebp+var_10], eax
		push	eax
		call	sub_7F82F18D
		mov	[ebp+var_8], eax
		test	eax, eax
		jz	loc_7F817FFA
		mov	ecx, [ebx+18h]
		mov	eax, [ebp+var_8]
		push	[ebp+var_10]
		push	dword ptr [ecx]
		push	dword ptr [eax]
		call	sub_7F82FCE0
		add	esp, 0Ch
		mov	ecx, [ebp+var_8]
		mov	[ebx+18h], ecx
		mov	eax, [ecx]
		mov	word ptr [eax+0Ch], 0

loc_7F817F55:				; CODE XREF: sub_7F817E9D+5Ej
					; sub_7F817E9D+71j ...
		cmp	dword ptr [ebx+18h], 0
		jnz	short loc_7F817F78
		lea	eax, [ebp+var_2]
		push	eax
		lea	eax, [ebx+18h]
		push	[ebp+arg_8]
		push	eax
		push	dword ptr [ebx+14h]
		call	sub_7F817CD4
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F818007

loc_7F817F78:				; CODE XREF: sub_7F817E9D+BCj
		cmp	[ebp+var_C], 0
		mov	eax, [edi]
		mov	[ebx+8], eax
		jz	short loc_7F817F97
		or	byte ptr [ebp+arg_8], 1
		cmp	[ebp+var_2], 0
		jnz	short loc_7F817FAA
		mov	word ptr [ebx+12h], 5
		jmp	short loc_7F817FAA
; ---------------------------------------------------------------------------

loc_7F817F97:				; CODE XREF: sub_7F817E9D+E5j
		cmp	[ebp+var_2], 0
		jnz	short loc_7F817FAA
		mov	word ptr [ebx+12h], 4
		mov	word ptr [ebx+10h], 1

loc_7F817FAA:				; CODE XREF: sub_7F817E9D+F0j
					; sub_7F817E9D+F8j ...
		mov	ax, word ptr [ebp+arg_8]
		mov	ecx, [ebp+arg_0]
		mov	[ebx+4], ax
		test	al, 1
		mov	[ebx], ecx
		jnz	short loc_7F817FFF
		mov	eax, [ebx+18h]
		mov	ecx, [eax]
		cmp	word ptr [ecx+0Ch], 0
		jnz	short loc_7F817FDA
		push	eax
		push	2
		push	dword ptr [edi]
		push	[ebp+arg_0]
		call	sub_7F811597
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F818007

loc_7F817FDA:				; CODE XREF: sub_7F817E9D+128j
		mov	ecx, [ebp+arg_C]
		push	dword ptr [ecx]
		push	offset loc_7F81811E
		push	200000h
		push	dword ptr [edi]
		push	[ebp+arg_0]
		call	sub_7F829F2E
		mov	[ebx+20h], eax
		test	eax, eax
		jnz	short loc_7F817FFF

loc_7F817FFA:				; CODE XREF: sub_7F817E9D+8Fj
		mov	esi, 400h

loc_7F817FFF:				; CODE XREF: sub_7F817E9D+2Cj
					; sub_7F817E9D+11Cj ...
		test	esi, esi
		jz	loc_7F81810A

loc_7F818007:				; CODE XREF: sub_7F817E9D+4Cj
					; sub_7F817E9D+D5j ...
		mov	ecx, [ebp+arg_C]
		mov	eax, [ecx]
		test	eax, eax
		jz	short loc_7F818075
		test	ebx, ebx
		jnz	short loc_7F818016
		mov	ebx, [eax]

loc_7F818016:				; CODE XREF: sub_7F817E9D+175j
		lea	eax, [ebx+14h]
		cmp	dword ptr [eax], 0
		jz	short loc_7F818026
		push	2
		push	eax
		call	sub_7F824AF5

loc_7F818026:				; CODE XREF: sub_7F817E9D+17Fj
		mov	eax, [ebx+18h]
		test	eax, eax
		jz	short loc_7F818050
		mov	ecx, [eax]
		cmp	word ptr [ecx+0Ch], 0
		jnz	short loc_7F818050
		push	eax
		call	sub_7F82F1E1
		test	byte ptr [ebp+arg_8], 1
		jnz	short loc_7F818050
		push	0
		push	2
		push	dword ptr [edi]
		push	[ebp+arg_0]
		call	sub_7F811597

loc_7F818050:				; CODE XREF: sub_7F817E9D+18Ej
					; sub_7F817E9D+197j ...
		mov	eax, [ebx+20h]
		test	eax, eax
		jz	short loc_7F818062
		push	eax
		push	dword ptr [edi]
		push	[ebp+arg_0]
		call	sub_7F829FD2

loc_7F818062:				; CODE XREF: sub_7F817E9D+1B8j
		mov	ecx, [ebp+arg_C]
		push	dword ptr [ecx]
		call	sub_7F82F1E1
		mov	ecx, [ebp+arg_C]
		mov	dword ptr [ecx], 0

loc_7F818075:				; CODE XREF: sub_7F817E9D+171j
		cmp	esi, 1002h
		jz	short loc_7F8180A1
		cmp	esi, 1005h
		jl	loc_7F818113
		cmp	esi, 1006h
		jle	short loc_7F8180A1
		cmp	esi, 1014h
		jz	short loc_7F8180A1
		cmp	esi, 1017h
		jnz	short loc_7F818113

loc_7F8180A1:				; CODE XREF: sub_7F817E9D+1DEj
					; sub_7F817E9D+1F2j ...
		xor	ebx, ebx
		cmp	dword_7F836C60,	ebx
		jnz	short loc_7F818113
		cmp	dword_7F8367B4,	ebx
		jnz	short loc_7F818113
		cmp	dword_7F836778,	ebx
		jz	short loc_7F818113
		push	9015h
		push	9005h
		push	dword ptr [edi]
		push	[ebp+arg_0]
		call	sub_7F82CFC5
		test	eax, eax
		jnz	short loc_7F818113
		mov	dword_7F8367B4,	1
		push	dword ptr [edi]
		push	[ebp+arg_0]
		call	sub_7F81D598
		cmp	eax, ebx
		mov	esi, eax
		jnz	short loc_7F8180FE
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	edi
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax

loc_7F8180FE:				; CODE XREF: sub_7F817E9D+24Ej
		mov	dword_7F8367B4,	0
		jmp	short loc_7F818113
; ---------------------------------------------------------------------------

loc_7F81810A:				; CODE XREF: sub_7F817E9D+164j
		mov	eax, [ebx+18h]
		mov	eax, [eax]
		inc	word ptr [eax+0Ch]

loc_7F818113:				; CODE XREF: sub_7F817E9D+1E6j
					; sub_7F817E9D+202j ...
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------

loc_7F81811E:				; DATA XREF: sub_7F817E9D+142o
		push	esi
		push	2
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi]
		push	dword ptr [eax+8]
		push	dword ptr [eax]
		call	sub_7F81155C
		mov	ecx, [esi]
		pop	esi
		mov	[ecx+18h], eax
		xor	eax, eax
		retn	0Ch
sub_7F817E9D	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81813C	proc near		; CODE XREF: sub_7F80FD8E+E5p
					; sub_7F81039F+180p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		push	ebp
		xor	edi, edi
		mov	eax, [esi]
		mov	ebx, [eax]
		mov	ax, [ebx+4]
		and	ax, 1
		jz	short loc_7F818164
		cmp	[esp+10h+arg_4], edi
		jz	short loc_7F818164
		push	ebx
		call	sub_7F8181F1
		mov	edi, eax
		jmp	short loc_7F8181D9
; ---------------------------------------------------------------------------

loc_7F818164:				; CODE XREF: sub_7F81813C+16j
					; sub_7F81813C+1Cj
		test	ax, ax
		jz	short loc_7F818193
		push	dword ptr [ebx+18h]
		call	sub_7F82F1E1
		mov	eax, [ebx+1Ch]
		test	eax, eax
		jz	short loc_7F81817E
		push	eax
		call	sub_7F82F1E1

loc_7F81817E:				; CODE XREF: sub_7F81813C+3Aj
		mov	eax, [ebx+0Ch]
		test	eax, eax
		jz	short loc_7F8181CE
		push	0
		push	1
		push	eax
		push	dword ptr [ebx]
		call	sub_7F82B9DE
		jmp	short loc_7F8181CE
; ---------------------------------------------------------------------------

loc_7F818193:				; CODE XREF: sub_7F81813C+2Bj
		push	dword ptr [ebx+20h]
		push	dword ptr [ebx+8]
		lea	ebp, [ebx+18h]
		push	dword ptr [ebx]
		call	sub_7F829FD2
		mov	ecx, [ebp+0]
		mov	eax, [ecx]
		dec	word ptr [eax+0Ch]
		mov	ecx, [ebp+0]
		mov	edx, [ecx]
		cmp	word ptr [edx+0Ch], 0
		jg	short loc_7F8181CE
		push	0
		push	2
		push	dword ptr [ebx+8]
		push	dword ptr [ebx]
		call	sub_7F811597
		push	dword ptr [ebp+0]
		call	sub_7F82F1E1

loc_7F8181CE:				; CODE XREF: sub_7F81813C+47j
					; sub_7F81813C+55j ...
		push	2
		add	ebx, 14h
		push	ebx
		call	sub_7F824AF5

loc_7F8181D9:				; CODE XREF: sub_7F81813C+26j
		xor	ebx, ebx
		test	edi, edi
		jnz	short loc_7F8181E8
		push	dword ptr [esi]
		call	sub_7F82F1E1
		mov	[esi], ebx

loc_7F8181E8:				; CODE XREF: sub_7F81813C+A1j
		mov	eax, edi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F81813C	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8181F1	proc near		; CODE XREF: sub_7F81813C+1Fp

var_14		= dword	ptr -14h
var_10		= byte ptr -10h
arg_0		= dword	ptr  4

		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	esi, [esp+20h+arg_0]
		push	ebp
		cmp	[esi+0Ch], ebx
		jz	short loc_7F818230
		mov	eax, [esi+1Ch]
		mov	eax, [eax]
		cmp	[eax], bx
		jle	short loc_7F818219
		mov	ecx, [eax+16h]
		add	ecx, [eax+12h]
		mov	[esp+24h+var_14], ecx
		jmp	short loc_7F818221
; ---------------------------------------------------------------------------

loc_7F818219:				; CODE XREF: sub_7F8181F1+1Aj
		mov	[esp+24h+var_14], 4

loc_7F818221:				; CODE XREF: sub_7F8181F1+26j
		movsx	eax, word ptr [eax]
		imul	eax, 0Ch
		add	eax, 0Eh
		add	[esp+24h+var_14], eax
		jmp	short loc_7F81824A
; ---------------------------------------------------------------------------

loc_7F818230:				; CODE XREF: sub_7F8181F1+10j
		lea	eax, [esp+24h+var_14]
		xor	ebp, ebp
		push	eax
		push	ebp
		push	ebp
		push	ebp
		push	esi
		call	sub_7F8178D8
		cmp	eax, ebp
		mov	edi, eax
		jnz	loc_7F8183BA

loc_7F81824A:				; CODE XREF: sub_7F8181F1+3Dj
		cmp	dword_7F838078,	0
		jz	short loc_7F81825A
		mov	edi, 253h
		jmp	short loc_7F818288
; ---------------------------------------------------------------------------

loc_7F81825A:				; CODE XREF: sub_7F8181F1+60j
		mov	eax, [esi]
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		xor	edi, edi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	edx, [esi]
		mov	dword_7F83807C,	edx

loc_7F818288:				; CODE XREF: sub_7F8181F1+67j
		test	edi, edi
		jnz	loc_7F8183D0
		push	0
		push	dword ptr [esi+8]
		call	sub_7F8144A4
		mov	ebx, eax
		push	0
		push	dword ptr [esi+0Ch]
		call	sub_7F8144A4
		push	eax
		mov	ebp, eax
		push	ebx
		call	sub_7F814AC2
		cmp	dword ptr [ebx+14h], 0
		jge	short loc_7F8182BB
		push	ebx
		call	sub_7F814971

loc_7F8182BB:				; CODE XREF: sub_7F8181F1+C2j
		cmp	dword ptr [ebp+14h], 0
		jl	short loc_7F8182C7
		mov	word ptr [ebp+1Eh], 1

loc_7F8182C7:				; CODE XREF: sub_7F8181F1+CEj
		test	byte ptr [ebp+10h], 10h
		jz	short loc_7F8182DB
		mov	ax, [ebx+1Ch]
		mov	[ebp+1Ch], ax
		mov	word ptr [ebx+1Ch], 0

loc_7F8182DB:				; CODE XREF: sub_7F8181F1+DAj
		push	ebp
		call	sub_7F8147DD
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F8182F7
		call	sub_7F82A34F
		jmp	short loc_7F818305
; ---------------------------------------------------------------------------

loc_7F8182F7:				; CODE XREF: sub_7F8181F1+FDj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F818305:				; CODE XREF: sub_7F8181F1+104j
		xor	ebp, ebp
		mov	dword_7F838078,	ebp
		push	dword ptr [esi+14h]
		call	sub_7F82472B
		mov	eax, [esi+14h]
		push	2
		mov	ecx, [eax]
		mov	edx, [ecx+6]
		mov	ecx, [esp+28h+var_14]
		mov	eax, [edx]
		mov	[eax+0Ch], ecx
		mov	[eax+10h], ecx
		push	dword ptr [esi+8]
		push	dword ptr [esi]
		call	sub_7F81155C
		cmp	eax, ebp
		mov	ebx, eax
		jz	short loc_7F8183A7
		lea	ebp, [esi+1Ch]
		mov	edx, [ebx]
		push	20h
		mov	eax, [ebp+0]
		mov	ecx, [eax]
		mov	ax, [edx+0Ch]
		mov	[ecx+0Ch], ax
		movsx	eax, word ptr [ecx]
		imul	eax, 0Ch
		add	eax, 0Eh
		push	eax
		push	ebx
		call	sub_7F82F1FF
		test	eax, eax
		jz	short loc_7F818382
		mov	eax, [ebp+0]
		mov	eax, [eax]
		movsx	ecx, word ptr [eax]
		imul	ecx, 0Ch
		add	ecx, 0Eh
		push	ecx
		push	eax
		push	dword ptr [ebx]
		call	sub_7F82FCE0
		add	esp, 0Ch
		mov	ebx, [ebp+0]
		jmp	short loc_7F8183AF
; ---------------------------------------------------------------------------

loc_7F818382:				; CODE XREF: sub_7F8181F1+170j
		push	dword ptr [ebp+0]
		push	2
		push	dword ptr [esi+8]
		push	dword ptr [esi]
		call	sub_7F811597
		lea	ecx, [esp+24h+var_10]
		push	ecx
		push	200000h
		push	dword ptr [esi+8]
		push	dword ptr [esi]
		call	sub_7F82A016
		jmp	short loc_7F8183AF
; ---------------------------------------------------------------------------

loc_7F8183A7:				; CODE XREF: sub_7F8181F1+148j
		push	dword ptr [esi+1Ch]
		call	sub_7F82F1E1

loc_7F8183AF:				; CODE XREF: sub_7F8181F1+18Fj
					; sub_7F8181F1+1B4j
		push	0
		lea	eax, [esi+14h]
		push	eax
		call	sub_7F824AF5

loc_7F8183BA:				; CODE XREF: sub_7F8181F1+53j
		test	edi, edi
		jnz	short loc_7F8183D0
		test	ebx, ebx
		jz	short loc_7F8183C8
		push	ebx
		call	sub_7F82F1E1

loc_7F8183C8:				; CODE XREF: sub_7F8181F1+1CFj
		push	dword ptr [esi+18h]
		call	sub_7F82F1E1

loc_7F8183D0:				; CODE XREF: sub_7F8181F1+99j
					; sub_7F8181F1+1CBj
		mov	eax, edi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 14h
		retn	4
sub_7F8181F1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8183DC	proc near		; CODE XREF: sub_7F81D598+2F5p

var_20		= byte ptr -20h
var_16		= dword	ptr -16h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 20h
		mov	edx, [eax]
		push	ebx
		push	esi
		push	edi
		mov	ecx, [edx]
		xor	esi, esi
		mov	eax, [ecx+8]
		mov	edx, [ecx]
		mov	[ebp+var_10], eax
		mov	[ebp+var_8], edx
		test	byte ptr [ecx+4], 1
		jnz	short loc_7F81840C
		mov	[ebp+var_4], 210h
		jmp	loc_7F818502
; ---------------------------------------------------------------------------

loc_7F81840C:				; CODE XREF: sub_7F8183DC+22j
		push	[ebp+arg_4]
		push	[ebp+var_8]
		call	sub_7F82BCCA
		test	eax, eax
		jz	short loc_7F818427
		mov	[ebp+var_4], 203h
		jmp	loc_7F818502
; ---------------------------------------------------------------------------

loc_7F818427:				; CODE XREF: sub_7F8183DC+3Dj
		xor	edi, edi
		push	edi
		push	edi
		push	edi
		push	edi
		push	[ebp+arg_4]
		push	[ebp+var_8]
		call	sub_7F82D114
		mov	[ebp+var_4], eax
		cmp	eax, edi
		jnz	loc_7F818502
		push	2
		push	[ebp+arg_4]
		push	[ebp+var_8]
		call	sub_7F81155C
		mov	ecx, [ebp+arg_0]
		mov	[ebp+var_C], eax
		mov	edx, [ecx]
		mov	ebx, [edx]
		cmp	[ebx+0Ch], edi
		jnz	short loc_7F818474
		push	edi
		push	edi
		push	edi
		push	edi
		push	ebx
		call	sub_7F8178D8
		mov	[ebp+var_4], eax
		cmp	eax, edi
		jnz	loc_7F818502

loc_7F818474:				; CODE XREF: sub_7F8183DC+81j
		cmp	[ebp+var_C], 0
		mov	edi, [ebx+1Ch]
		jz	short loc_7F8184BA
		push	edi
		call	sub_7F82F1CA
		push	20h
		mov	[ebp+var_16], eax
		push	eax
		call	sub_7F82F18D
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81849D
		mov	[ebp+var_4], 400h
		jmp	short loc_7F818502
; ---------------------------------------------------------------------------

loc_7F81849D:				; CODE XREF: sub_7F8183DC+B6j
		push	[ebp+var_16]
		push	dword ptr [edi]
		mov	ebx, [esi]
		push	ebx
		call	sub_7F82FCE0
		add	esp, 0Ch
		mov	ecx, [ebp+var_C]
		mov	eax, [ecx]
		mov	ax, [eax+0Ch]
		mov	[ebx+0Ch], ax

loc_7F8184BA:				; CODE XREF: sub_7F8183DC+9Fj
		push	1
		push	[ebp+arg_0]
		call	sub_7F81813C
		push	[ebp+var_10]
		push	[ebp+arg_4]
		push	[ebp+var_8]
		call	sub_7F824774
		cmp	[ebp+var_C], 0
		jz	short loc_7F818502
		push	esi
		push	2
		push	[ebp+arg_4]
		push	[ebp+var_8]
		call	sub_7F811597
		lea	ecx, [ebp+var_20]
		push	ecx
		push	200000h
		push	[ebp+arg_4]
		push	[ebp+var_8]
		call	sub_7F82A016
		push	[ebp+var_C]
		call	sub_7F82F1E1

loc_7F818502:				; CODE XREF: sub_7F8183DC+2Bj
					; sub_7F8183DC+46j ...
		cmp	[ebp+var_4], 0
		jz	short loc_7F818512
		test	esi, esi
		jz	short loc_7F818512
		push	esi
		call	sub_7F82F1E1

loc_7F818512:				; CODE XREF: sub_7F8183DC+12Aj
					; sub_7F8183DC+12Ej
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F8183DC	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81851E	proc near		; CODE XREF: sub_7F8273AF+230p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi]
		test	byte ptr [eax+5], 40h
		jz	short loc_7F818532
		mov	eax, 253h
		jmp	short loc_7F81854C
; ---------------------------------------------------------------------------

loc_7F818532:				; CODE XREF: sub_7F81851E+Bj
		cmp	dword ptr [eax+0Ch], 0
		jz	short loc_7F81853E
		push	eax
		call	sub_7F818550

loc_7F81853E:				; CODE XREF: sub_7F81851E+18j
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	esi
		call	sub_7F818578

loc_7F81854C:				; CODE XREF: sub_7F81851E+12j
		pop	esi
		retn	0Ch
sub_7F81851E	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F818550	proc near		; CODE XREF: sub_7F81851E+1Bp
					; sub_7F818AE7+1Ep ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, [esp+8+arg_0]
		xor	edi, edi
		push	edi
		push	1
		push	dword ptr [esi+0Ch]
		push	dword ptr [esi]
		call	sub_7F82B9DE
		push	dword ptr [esi+1Ch]
		mov	[esi+0Ch], edi
		call	sub_7F82F1E1
		mov	[esi+1Ch], edi
		pop	edi
		pop	esi
		retn	4
sub_7F818550	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F818578	proc near		; CODE XREF: sub_7F81851E+29p
					; sub_7F818E95+4Ap ...

var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		mov	esi, [eax]
		mov	[ebp+var_8], 0
		mov	edx, [esi+18h]
		mov	ecx, [edx]
		mov	dx, [ebp+arg_4]
		test	dx, dx
		jl	loc_7F818623
		mov	ax, [ecx]
		cmp	dx, ax
		jge	short loc_7F818623
		movsx	edi, dx
		imul	edi, 0Ch
		mov	ebx, [ecx+edi+16h]
		cmp	[ebp+arg_8], ebx
		jbe	short loc_7F8185C6
		push	[ebp+arg_8]
		push	edx
		push	esi
		call	sub_7F818786
		mov	[ebp+var_8], eax
		jmp	short loc_7F81862A
; ---------------------------------------------------------------------------

loc_7F8185C6:				; CODE XREF: sub_7F818578+3Dj
		jnb	short loc_7F81862A
		mov	dx, [esi+10h]
		add	dx, ax
		cmp	word ptr [esi+12h], 0
		mov	[ebp+var_2], dx
		jnz	short loc_7F8185EE
		push	5
		push	esi
		call	sub_7F818734
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	short loc_7F81862A
		mov	eax, [esi+18h]
		mov	ecx, [eax]

loc_7F8185EE:				; CODE XREF: sub_7F818578+60j
		movsx	eax, [ebp+var_2]
		imul	eax, 0Ch
		sub	ebx, [ebp+arg_8]
		lea	edx, [eax+ecx]
		mov	[eax+ecx+16h], ebx
		mov	eax, [ecx+edi+12h]
		add	eax, [ebp+arg_8]
		mov	[edx+12h], eax
		mov	edx, [ebp+arg_8]
		mov	[ecx+edi+16h], edx
		push	dword ptr [ebp+var_2]
		push	esi
		inc	word ptr [esi+10h]
		dec	word ptr [esi+12h]
		call	sub_7F818636
		jmp	short loc_7F81862A
; ---------------------------------------------------------------------------

loc_7F818623:				; CODE XREF: sub_7F818578+22j
					; sub_7F818578+2Ej
		mov	[ebp+var_8], 1005h

loc_7F81862A:				; CODE XREF: sub_7F818578+4Cj
					; sub_7F818578:loc_7F8185C6j ...
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F818578	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F818636	proc near		; CODE XREF: sub_7F818578+A4p
					; sub_7F818786+80p ...

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= word ptr  8

		mov	eax, [esp+arg_0]
		sub	esp, 10h
		add	eax, 10h
		push	ebx
		mov	cx, [eax]
		push	esi
		mov	edx, [esp+18h+arg_0]
		push	edi
		mov	[esp+1Ch+var_8], eax
		push	ebp
		mov	eax, [edx+18h]
		mov	edx, [eax]
		movsx	eax, [esp+20h+arg_4]
		imul	eax, 0Ch
		cmp	cx, 1
		lea	esi, [eax+edx+0Eh]
		jle	loc_7F81872A
		movsx	eax, word ptr [edx]
		mov	bx, cx
		imul	eax, 0Ch
		dec	cx
		lea	edi, [eax+edx+0Eh]
		test	bx, bx
		jle	loc_7F81872A

loc_7F818682:				; CODE XREF: sub_7F818636+EEj
		cmp	edi, esi
		jnz	short loc_7F81868E
		add	edi, 0Ch
		jmp	loc_7F81871C
; ---------------------------------------------------------------------------

loc_7F81868E:				; CODE XREF: sub_7F818636+4Ej
		lea	eax, [edi+4]
		lea	ebp, [edi+8]
		mov	[esp+20h+var_4], eax
		mov	[esp+20h+var_C], ebp
		mov	ebx, [eax]
		mov	eax, [ebp+0]
		add	eax, ebx
		sub	eax, [esi+4]
		cmp	eax, 1
		sbb	eax, eax
		neg	eax
		mov	[esp+20h+var_10], eax
		test	eax, eax
		jnz	short loc_7F8186C4
		mov	eax, [esi+8]
		add	eax, [esi+4]
		cmp	eax, ebx
		jz	short loc_7F8186C4
		add	edi, 0Ch
		jmp	short loc_7F81871C
; ---------------------------------------------------------------------------

loc_7F8186C4:				; CODE XREF: sub_7F818636+7Dj
					; sub_7F818636+87j
		mov	eax, [esp+20h+var_8]
		mov	bp, [eax]
		add	bp, [edx]
		dec	bp
		cmp	[esp+20h+var_10], 0
		jz	short loc_7F8186DA
		mov	[esi+4], ebx

loc_7F8186DA:				; CODE XREF: sub_7F818636+9Fj
		mov	eax, [esp+20h+var_C]
		mov	ebx, [eax]
		mov	eax, [esp+20h+var_4]
		add	[esi+8], ebx
		movsx	ebx, bp
		imul	ebx, 0Ch
		mov	ebp, [edx+ebx+12h]
		mov	[eax], ebp
		mov	ebp, [edx+ebx+16h]
		mov	eax, [esp+20h+var_C]
		sub	ebx, esi
		add	ebx, edx
		mov	[eax], ebp
		cmp	ebx, 0FFFFFFF2h
		jnz	short loc_7F81870D
		dec	cx
		mov	esi, edi
		add	edi, 0Ch

loc_7F81870D:				; CODE XREF: sub_7F818636+CEj
		mov	eax, [esp+20h+var_8]
		mov	ebx, [esp+20h+arg_0]
		dec	word ptr [eax]
		inc	word ptr [ebx+12h]

loc_7F81871C:				; CODE XREF: sub_7F818636+53j
					; sub_7F818636+8Cj
		mov	ax, cx
		dec	cx
		test	ax, ax
		jg	loc_7F818682

loc_7F81872A:				; CODE XREF: sub_7F818636+2Ej
					; sub_7F818636+46j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 10h
		retn	8
sub_7F818636	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F818734	proc near		; CODE XREF: sub_7F818578+65p
					; sub_7F818816+B5p ...

arg_0		= dword	ptr  4
arg_4		= word ptr  8

		push	esi
		push	edi
		mov	esi, [esp+8+arg_0]
		mov	edx, [esi+18h]
		movsx	ecx, word ptr [esi+10h]
		mov	eax, [edx]
		movsx	edi, word ptr [eax]
		add	ecx, edi
		mov	di, [esp+8+arg_4]
		movsx	eax, di
		add	ecx, eax
		imul	ecx, 0Ch
		add	ecx, 0Eh
		cmp	ecx, 0FFFFh
		jb	short loc_7F818767
		mov	eax, 400h
		jmp	short loc_7F818781
; ---------------------------------------------------------------------------

loc_7F818767:				; CODE XREF: sub_7F818734+2Aj
		push	30h
		push	ecx
		push	edx
		call	sub_7F82F1FF
		test	eax, eax
		jnz	short loc_7F81877B
		mov	eax, 400h
		jmp	short loc_7F818781
; ---------------------------------------------------------------------------

loc_7F81877B:				; CODE XREF: sub_7F818734+3Ej
		mov	[esi+12h], di
		xor	eax, eax

loc_7F818781:				; CODE XREF: sub_7F818734+31j
					; sub_7F818734+45j
		pop	edi
		pop	esi
		retn	8
sub_7F818734	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F818786	proc near		; CODE XREF: sub_7F818578+44p
					; sub_7F819D64+E5p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
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
		push	edi
		mov	esi, [ebp+arg_0]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		xor	edi, edi
		call	sub_7F8189C2
		test	eax, eax
		jnz	short loc_7F81880B
		mov	eax, [esi+14h]
		lea	ecx, [ebp+var_2]
		push	ecx
		mov	[ebp+var_8], eax
		push	[ebp+arg_8]
		push	esi
		call	sub_7F818816
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F81880B
		mov	eax, [esi+18h]
		mov	ebx, [eax]
		movsx	eax, word ptr [ebp+arg_4]
		imul	eax, 0Ch
		mov	edx, [eax+ebx+16h]
		lea	ecx, [eax+ebx]
		movsx	eax, [ebp+var_2]
		imul	eax, 0Ch
		mov	[ebp+var_C], edx
		lea	edx, [ebp+var_C]
		push	edx
		push	dword ptr [eax+ebx+12h]
		push	[ebp+var_8]
		push	dword ptr [ecx+12h]
		push	[ebp+var_8]
		call	sub_7F8255B9
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F81880B
		push	dword ptr [ebp+var_2]
		push	[ebp+arg_4]
		push	ebx
		call	sub_7F81897A
		push	dword ptr [ebp+var_2]
		push	esi
		call	sub_7F818636

loc_7F81880B:				; CODE XREF: sub_7F818786+1Cj
					; sub_7F818786+35j ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F818786	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F818816	proc near		; CODE XREF: sub_7F818786+2Cp
					; sub_7F818B75+35p ...

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_C], 0
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	cx, [esi+10h]
		mov	eax, [esi+18h]
		mov	[ebp+var_2], cx
		mov	ebx, [eax]
		movsx	eax, word ptr [ebx]
		imul	eax, 0Ch
		mov	dx, [ebp+var_2]
		mov	ecx, [ebp+arg_8]
		lea	edi, [eax+ebx+0Eh]
		mov	eax, 0FFFFFFFFh
		mov	word ptr [ebp+var_8+2],	ax
		mov	[ebp+var_10], eax
		mov	[ecx], ax
		add	[ebp+var_2], ax
		test	dx, dx
		jle	short loc_7F8188B4

loc_7F81885F:				; CODE XREF: sub_7F818816+82j
		mov	eax, [edi+8]
		cmp	[ebp+arg_4], eax
		jz	short loc_7F81889C
		jnb	short loc_7F81888A
		sub	eax, [ebp+arg_4]
		cmp	[ebp+var_10], eax
		jbe	short loc_7F81888A
		sub	edx, edx
		mov	ecx, 0Ch
		mov	[ebp+var_10], eax
		mov	eax, 0FFFFFFF2h
		sub	eax, ebx
		add	eax, edi
		div	ecx
		mov	word ptr [ebp+var_8+2],	ax

loc_7F81888A:				; CODE XREF: sub_7F818816+51j
					; sub_7F818816+59j
		mov	ax, [ebp+var_2]
		add	edi, 0Ch
		dec	[ebp+var_2]
		test	ax, ax
		jg	short loc_7F81885F
		jmp	short loc_7F8188B4
; ---------------------------------------------------------------------------

loc_7F81889C:				; CODE XREF: sub_7F818816+4Fj
		mov	eax, 0FFFFFFF2h
		mov	ecx, 0Ch
		sub	eax, ebx
		sub	edx, edx
		add	eax, edi
		div	ecx
		mov	edx, [ebp+arg_8]
		mov	[edx], ax

loc_7F8188B4:				; CODE XREF: sub_7F818816+47j
					; sub_7F818816+84j
		xor	edi, edi
		mov	ecx, [ebp+arg_8]
		cmp	[ecx], di
		jge	loc_7F81896E
		cmp	[esi+12h], di
		jnz	short loc_7F8188E0
		push	5
		push	esi
		call	sub_7F818734
		mov	[ebp+var_C], eax
		cmp	eax, edi
		jnz	loc_7F81896E
		mov	eax, [esi+18h]
		mov	ebx, [eax]

loc_7F8188E0:				; CODE XREF: sub_7F818816+B0j
		mov	di, [esi+10h]
		add	di, [ebx]
		cmp	word ptr [ebp+var_8+2],	0
		jl	short loc_7F818922
		movsx	eax, di
		imul	eax, 0Ch
		lea	ecx, [eax+ebx]
		movsx	eax, word ptr [ebp+var_8+2]
		imul	eax, 0Ch
		lea	edx, [eax+ebx]
		mov	ebx, [ebp+var_10]
		mov	eax, [edx+12h]
		add	eax, [ebp+arg_4]
		mov	[ecx+12h], eax
		mov	ax, word ptr [ebp+var_8+2]
		mov	[ecx+16h], ebx
		mov	ecx, [ebp+arg_4]
		mov	[edx+16h], ecx
		mov	edx, [ebp+arg_8]
		mov	[edx], ax
		jmp	short loc_7F818966
; ---------------------------------------------------------------------------

loc_7F818922:				; CODE XREF: sub_7F818816+D6j
		mov	dword ptr [ebp-8], 0
		lea	eax, [ebp+var_8]
		push	eax
		push	3
		push	dword ptr [esi+14h]
		call	sub_7F8254CC
		push	1
		push	[ebp+arg_4]
		push	dword ptr [esi+14h]
		call	sub_7F825546
		mov	[ebp+var_C], eax
		test	eax, eax
		jnz	short loc_7F81896E
		movsx	eax, di
		imul	eax, 0Ch
		mov	edx, [ebp+var_8]
		lea	ecx, [eax+ebx]
		mov	eax, [ebp+arg_4]
		mov	[ecx+12h], edx
		mov	[ecx+16h], eax
		mov	ecx, [ebp+arg_8]
		mov	[ecx], di

loc_7F818966:				; CODE XREF: sub_7F818816+10Aj
		inc	word ptr [esi+10h]
		dec	word ptr [esi+12h]

loc_7F81896E:				; CODE XREF: sub_7F818816+A6j
					; sub_7F818816+BFj ...
		mov	eax, [ebp+var_C]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F818816	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81897A	proc near		; CODE XREF: sub_7F818786+77p
					; sub_7F818E95+84p ...

arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch
arg_8		= word ptr  10h

		push	ebp
		mov	ecx, [esp+arg_0]
		movsx	eax, [esp+arg_4]
		imul	eax, 0Ch
		mov	ebp, esp
		push	esi
		push	edi
		lea	edx, [eax+ecx+0Eh]
		movsx	eax, [ebp+arg_8]
		imul	eax, 0Ch
		lea	esi, [eax+ecx+0Eh]
		mov	cx, [ebp+arg_4]
		cmp	[ebp+arg_8], cx
		jz	short loc_7F8189BC
		mov	ecx, [edx+4]
		mov	edi, [edx+8]
		mov	eax, [esi+4]
		mov	[edx+4], eax
		mov	eax, [esi+8]
		mov	[edx+8], eax
		mov	[esi+4], ecx
		mov	[esi+8], edi

loc_7F8189BC:				; CODE XREF: sub_7F81897A+28j
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
sub_7F81897A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8189C2	proc near		; CODE XREF: sub_7F818786+15p
					; sub_7F818E95+5Ep ...

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_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 18h
		mov	ecx, [eax+18h]
		push	ebx
		push	esi
		push	edi
		mov	esi, [ecx]
		movsx	eax, word ptr [esi]
		imul	eax, 0Ch
		lea	edi, [eax+esi+0Eh]
		mov	eax, [ebp+arg_0]
		add	eax, 10h
		mov	[ebp+var_C], eax
		mov	ax, [eax]
		mov	ebx, [ebp+arg_8]
		mov	[ebp+var_2], ax
		movsx	eax, [ebp+arg_4]
		imul	eax, 0Ch
		add	eax, esi
		mov	[ebp+var_8], eax
		mov	eax, [eax+16h]
		sub	ebx, eax
		mov	ecx, [ebp+var_8]
		mov	[ebp+var_14], 0
		mov	ecx, [ecx+12h]
		add	ecx, eax
		test	ebx, ebx
		mov	[ebp+var_18], ecx
		jge	short loc_7F818A1A
		neg	ebx

loc_7F818A1A:				; CODE XREF: sub_7F8189C2+54j
		mov	eax, [ebp+arg_0]
		add	eax, 14h
		mov	[ebp+var_10], eax
		push	dword ptr [eax]
		call	sub_7F82559E
		cmp	[ebp+var_18], eax
		jnz	short loc_7F818A49
		push	1
		mov	eax, [ebp+var_10]
		push	ebx
		push	dword ptr [eax]
		call	sub_7F825546
		test	eax, eax
		jnz	loc_7F818ADB
		jmp	loc_7F818ACB
; ---------------------------------------------------------------------------

loc_7F818A49:				; CODE XREF: sub_7F8189C2+6Bj
					; sub_7F8189C2+9Fj
		mov	cx, [ebp+var_2]
		dec	[ebp+var_2]
		test	cx, cx
		jz	short loc_7F818A63
		mov	edx, edi
		mov	ecx, [ebp+var_18]
		add	edi, 0Ch
		cmp	[edx+4], ecx
		jnz	short loc_7F818A49

loc_7F818A63:				; CODE XREF: sub_7F8189C2+92j
		sub	edi, 0Ch
		cmp	[ebp+var_2], 0
		jl	short loc_7F818ADB
		mov	ecx, [edi+8]
		cmp	ebx, ecx
		jbe	short loc_7F818A95
		mov	edx, [edi+4]
		add	edx, ecx
		cmp	edx, eax
		jnz	short loc_7F818ADB
		push	1
		mov	eax, ebx
		sub	eax, ecx
		mov	ecx, [ebp+var_10]
		push	eax
		push	dword ptr [ecx]
		call	sub_7F825546
		test	eax, eax
		jnz	short loc_7F818ADB
		mov	[edi+8], ebx

loc_7F818A95:				; CODE XREF: sub_7F8189C2+B0j
		mov	eax, [edi+8]
		cmp	ebx, eax
		jnz	short loc_7F818AC3
		mov	eax, [ebp+var_C]
		mov	ax, [eax]
		add	ax, [esi]
		dec	ax
		movsx	eax, ax
		imul	eax, 0Ch
		lea	esi, [eax+esi+0Eh]
		movsd
		movsd
		movsd
		mov	ecx, [ebp+var_C]
		mov	edx, [ebp+arg_0]
		dec	word ptr [ecx]
		inc	word ptr [edx+12h]
		jmp	short loc_7F818ACB
; ---------------------------------------------------------------------------

loc_7F818AC3:				; CODE XREF: sub_7F8189C2+D8j
		sub	eax, ebx
		mov	[edi+8], eax
		add	[edi+4], ebx

loc_7F818ACB:				; CODE XREF: sub_7F8189C2+82j
					; sub_7F8189C2+FFj
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+var_8]
		mov	[ebp+var_14], 1
		mov	[ecx+16h], eax

loc_7F818ADB:				; CODE XREF: sub_7F8189C2+7Cj
					; sub_7F8189C2+A9j ...
		mov	eax, [ebp+var_14]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F8189C2	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F818AE7	proc near		; CODE XREF: sub_7F81BF33+214p
					; sub_7F81C461+64p ...

arg_0		= dword	ptr  4
arg_4		= word ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		xor	esi, esi
		mov	edi, [eax]
		test	byte ptr [edi+5], 40h
		jz	short loc_7F818AFE
		mov	esi, 253h
		jmp	short loc_7F818B2C
; ---------------------------------------------------------------------------

loc_7F818AFE:				; CODE XREF: sub_7F818AE7+Ej
		cmp	dword ptr [edi+0Ch], 0
		jz	short loc_7F818B0A
		push	edi
		call	sub_7F818550

loc_7F818B0A:				; CODE XREF: sub_7F818AE7+1Bj
		mov	cx, [esp+8+arg_4]
		test	cx, cx
		jl	short loc_7F818B27
		mov	eax, [edi+18h]
		mov	edx, [eax]
		cmp	[edx], cx
		jle	short loc_7F818B27
		push	ecx
		push	edi
		call	sub_7F818B33
		jmp	short loc_7F818B2C
; ---------------------------------------------------------------------------

loc_7F818B27:				; CODE XREF: sub_7F818AE7+2Bj
					; sub_7F818AE7+35j
		mov	esi, 1005h

loc_7F818B2C:				; CODE XREF: sub_7F818AE7+15j
					; sub_7F818AE7+3Ej
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
sub_7F818AE7	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F818B33	proc near		; CODE XREF: sub_7F818AE7+39p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		mov	eax, [esi+18h]
		movsx	edx, word ptr [esp+0Ch+arg_4]
		mov	eax, [eax]
		mov	cx, [eax]
		movsx	ebx, cx
		lea	edi, [ecx-1]
		sub	edx, ebx
		mov	[eax], di
		cmp	edx, 0FFFFFFFFh
		jz	short loc_7F818B64
		push	ecx
		push	1
		push	[esp+14h+arg_4]
		push	eax
		call	sub_7F81A140

loc_7F818B64:				; CODE XREF: sub_7F818B33+22j
		inc	word ptr [esi+10h]
		push	edi
		push	esi
		call	sub_7F818636
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F818B33	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F818B75	proc near		; CODE XREF: sub_7F80FFF8+C7p
					; sub_7F810C9B+7Ap ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	esi, [eax]
		test	byte ptr [esi+5], 40h
		jz	short loc_7F818B96
		mov	[ebp+var_8], 253h
		jmp	loc_7F818CAA
; ---------------------------------------------------------------------------

loc_7F818B96:				; CODE XREF: sub_7F818B75+13j
		cmp	dword ptr [esi+0Ch], 0
		jz	short loc_7F818BA2
		push	esi
		call	sub_7F818550

loc_7F818BA2:				; CODE XREF: sub_7F818B75+25j
		lea	eax, [ebp+var_2]
		push	eax
		push	[ebp+arg_C]
		push	esi
		call	sub_7F818816
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	loc_7F818CAA
		mov	eax, [esi+18h]
		mov	edi, [eax]
		movzx	eax, word ptr [edi]
		inc	eax
		cmp	eax, 1519h
		jl	short loc_7F818BD6
		mov	[ebp+var_8], 1017h
		jmp	loc_7F818CAA
; ---------------------------------------------------------------------------

loc_7F818BD6:				; CODE XREF: sub_7F818B75+53j
		mov	eax, [ebp+arg_8]
		inc	eax
		cmp	eax, 1
		sbb	eax, eax
		neg	eax
		mov	[ebp+var_C], eax
		test	eax, eax
		jz	short loc_7F818BFE

loc_7F818BE8:				; CODE XREF: sub_7F818B75+87j
		call	sub_7F82AC0C
		push	0
		mov	[ebp+arg_8], eax
		push	eax
		push	edi
		call	sub_7F819486
		test	ax, ax
		jge	short loc_7F818BE8

loc_7F818BFE:				; CODE XREF: sub_7F818B75+71j
		xor	eax, eax
		mov	ax, [edi+2]
		and	eax, 3
		jz	short loc_7F818C1A
		cmp	eax, 2
		jz	short loc_7F818C50
		mov	[ebp+var_8], 2004h
		jmp	loc_7F818CAA
; ---------------------------------------------------------------------------

loc_7F818C1A:				; CODE XREF: sub_7F818B75+92j
		mov	ebx, [ebp+arg_4]
		mov	ax, [ebx]
		test	ax, ax
		jl	short loc_7F818C2A
		cmp	[edi], ax
		jg	short loc_7F818C31

loc_7F818C2A:				; CODE XREF: sub_7F818B75+AEj
		mov	ax, [edi+4]
		mov	[ebx], ax

loc_7F818C31:				; CODE XREF: sub_7F818B75+B3j
					; sub_7F818B75+F3j
		cmp	[ebp+var_C], 0
		jnz	short loc_7F818C73
		push	0
		push	[ebp+arg_8]
		push	edi
		call	sub_7F819486
		test	ax, ax
		jl	short loc_7F818C73
		mov	[ebp+var_8], 1003h
		jmp	short loc_7F818CAA
; ---------------------------------------------------------------------------

loc_7F818C50:				; CODE XREF: sub_7F818B75+97j
		mov	ax, [edi]
		push	eax
		push	0
		push	[ebp+arg_8]
		push	edi
		call	sub_7F818CB6
		test	ax, ax
		mov	ebx, [ebp+arg_4]
		mov	[ebx], ax
		jge	short loc_7F818C31
		mov	[ebp+var_8], 1003h
		jmp	short loc_7F818CAA
; ---------------------------------------------------------------------------

loc_7F818C73:				; CODE XREF: sub_7F818B75+C0j
					; sub_7F818B75+D0j
		mov	ax, [ebx]
		test	ax, ax
		jl	short loc_7F818C80
		cmp	[edi], ax
		jg	short loc_7F818C86

loc_7F818C80:				; CODE XREF: sub_7F818B75+104j
		mov	ax, [edi]
		mov	[ebx], ax

loc_7F818C86:				; CODE XREF: sub_7F818B75+109j
		inc	word ptr [edi]
		mov	eax, [ebp+arg_8]
		dec	word ptr [esi+10h]
		movsx	ecx, [ebp+var_2]
		imul	ecx, 0Ch
		mov	[ecx+edi+0Eh], eax
		mov	dx, [ebx]
		push	edx
		push	1
		push	dword ptr [ebp+var_2]
		push	edi
		call	sub_7F81A140

loc_7F818CAA:				; CODE XREF: sub_7F818B75+1Cj
					; sub_7F818B75+3Fj ...
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F818B75	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F818CB6	proc near		; CODE XREF: sub_7F818B75+E5p
					; sub_7F819A4E+4Ep ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= word ptr  10h
arg_C		= word ptr  14h

		push	ebp
		mov	ecx, [esp+arg_0]
		mov	ax, [ecx+2]
		mov	ebp, esp
		and	ax, 4
		push	esi
		shr	ax, 2
		push	edi
		movzx	esi, ax
		mov	ax, [ebp+arg_C]
		mov	di, [ebp+arg_8]
		cmp	ax, di
		jz	short loc_7F818D3B
		test	esi, esi
		jz	short loc_7F818CE5
		movsx	edx, ax
		dec	edx
		jmp	short loc_7F818CE8
; ---------------------------------------------------------------------------

loc_7F818CE5:				; CODE XREF: sub_7F818CB6+27j
		movsx	edx, di

loc_7F818CE8:				; CODE XREF: sub_7F818CB6+2Dj
		imul	edx, 0Ch
		test	esi, esi
		lea	edx, [edx+ecx+0Eh]
		jz	short loc_7F818CF9
		movsx	eax, di
		dec	eax
		jmp	short loc_7F818CFC
; ---------------------------------------------------------------------------

loc_7F818CF9:				; CODE XREF: sub_7F818CB6+3Bj
		movsx	eax, ax

loc_7F818CFC:				; CODE XREF: sub_7F818CB6+41j
		imul	eax, 0Ch
		lea	edi, [eax+ecx+0Eh]
		cmp	edi, edx
		jz	short loc_7F818D20

loc_7F818D07:				; CODE XREF: sub_7F818CB6+68j
		mov	eax, [edx]
		cmp	[ebp+arg_4], eax
		jb	short loc_7F818D20
		jz	short loc_7F818D41
		test	esi, esi
		jz	short loc_7F818D19
		sub	edx, 0Ch
		jmp	short loc_7F818D1C
; ---------------------------------------------------------------------------

loc_7F818D19:				; CODE XREF: sub_7F818CB6+5Cj
		add	edx, 0Ch

loc_7F818D1C:				; CODE XREF: sub_7F818CB6+61j
		cmp	edi, edx
		jnz	short loc_7F818D07

loc_7F818D20:				; CODE XREF: sub_7F818CB6+4Fj
					; sub_7F818CB6+56j
		mov	eax, 0FFFFFFF2h
		sub	eax, ecx
		mov	ecx, 0Ch
		add	eax, edx
		sub	edx, edx
		div	ecx
		cmp	esi, 1
		sbb	edx, edx
		lea	eax, [edx+eax+1]

loc_7F818D3B:				; CODE XREF: sub_7F818CB6+23j
					; sub_7F818CB6+8Fj
		pop	edi
		pop	esi
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------

loc_7F818D41:				; CODE XREF: sub_7F818CB6+58j
		mov	ax, 0FFFFh
		jmp	short loc_7F818D3B
sub_7F818CB6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F818D47	proc near		; CODE XREF: sub_7F80FE90+98p
					; sub_7F810181+45p ...

arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		push	ebx
		push	esi
		mov	ecx, [eax]
		mov	ax, [ebp+arg_4]
		push	edi
		xor	esi, esi
		mov	ebx, [ecx+18h]
		cmp	ax, si
		mov	edx, [ebx]
		jl	short loc_7F818DB2
		cmp	[edx], ax
		jle	short loc_7F818DB2
		movsx	eax, ax
		imul	eax, 0Ch
		add	eax, edx
		mov	edx, [ebp+arg_10]
		mov	edi, [eax+16h]
		cmp	[ebp+arg_8], edi
		jbe	short loc_7F818D84
		mov	eax, 1014h
		mov	[edx], esi
		jmp	short loc_7F818DC0
; ---------------------------------------------------------------------------

loc_7F818D84:				; CODE XREF: sub_7F818D47+32j
		mov	ebx, [edx]
		add	ebx, [ebp+arg_8]
		cmp	ebx, edi
		jbe	short loc_7F818D97
		mov	esi, 1014h
		sub	edi, [ebp+arg_8]
		mov	[edx], edi

loc_7F818D97:				; CODE XREF: sub_7F818D47+44j
		mov	eax, [eax+12h]
		add	eax, [ebp+arg_8]
		push	eax
		push	edx
		push	[ebp+arg_C]
		push	dword ptr [ecx+14h]
		call	sub_7F824CAB
		test	eax, eax
		jnz	short loc_7F818DC0
		mov	eax, esi
		jmp	short loc_7F818DC0
; ---------------------------------------------------------------------------

loc_7F818DB2:				; CODE XREF: sub_7F818D47+1Aj
					; sub_7F818D47+1Fj
		mov	edx, [ebp+arg_10]
		mov	eax, 1005h
		mov	dword ptr [edx], 0

loc_7F818DC0:				; CODE XREF: sub_7F818D47+3Bj
					; sub_7F818D47+65j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	14h
sub_7F818D47	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F818DC7	proc near		; CODE XREF: sub_7F80FFF8+E1p
					; sub_7F810567+160p ...

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	ecx, [esp+arg_0]
		mov	ebp, esp
		push	esi
		mov	eax, [ecx]
		test	byte ptr [eax+5], 40h
		jz	short loc_7F818DDE
		mov	eax, 253h
		jmp	short loc_7F818E0A
; ---------------------------------------------------------------------------

loc_7F818DDE:				; CODE XREF: sub_7F818DC7+Ej
		mov	edx, [ebp+arg_4]
		mov	si, [edx]
		test	si, si
		jl	short loc_7F818E05
		mov	eax, [eax+18h]
		mov	eax, [eax]
		cmp	[eax], si
		jle	short loc_7F818E05
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	edx
		push	ecx
		call	sub_7F818E0F
		jmp	short loc_7F818E0A
; ---------------------------------------------------------------------------

loc_7F818E05:				; CODE XREF: sub_7F818DC7+20j
					; sub_7F818DC7+2Aj
		mov	eax, 1005h

loc_7F818E0A:				; CODE XREF: sub_7F818DC7+15j
					; sub_7F818DC7+3Cj
		pop	esi
		pop	ebp
		retn	14h
sub_7F818DC7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F818E0F	proc near		; CODE XREF: sub_7F818DC7+37p
					; sub_7F818E95+9Cp

var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		mov	esi, [eax]
		mov	ecx, [esi+18h]
		mov	edi, [ecx]
		mov	ebx, [ebp+arg_4]
		movsx	ecx, word ptr [ebx]
		mov	ax, [edi+2]
		imul	ecx, 0Ch
		and	al, 3
		mov	[ebp+var_1], al
		mov	eax, [ebp+arg_8]
		add	eax, [ebp+arg_10]
		mov	[ebp+var_8], eax
		cmp	[ecx+edi+16h], eax
		jnb	short loc_7F818E4B
		mov	eax, 1014h
		jmp	short loc_7F818E8C
; ---------------------------------------------------------------------------

loc_7F818E4B:				; CODE XREF: sub_7F818E0F+33j
		cmp	dword ptr [esi+0Ch], 0
		jz	short loc_7F818E57
		push	esi
		call	sub_7F818550

loc_7F818E57:				; CODE XREF: sub_7F818E0F+40j
		movsx	eax, word ptr [ebx]
		imul	eax, 0Ch
		mov	eax, [eax+edi+12h]
		add	eax, [ebp+arg_8]
		push	eax
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	dword ptr [esi+14h]
		call	sub_7F825278
		test	eax, eax
		jnz	short loc_7F818E8C
		test	[ebp+var_1], 1
		jz	short loc_7F818E8C
		mov	eax, [ebp+var_8]
		dec	eax
		push	eax
		push	[ebp+arg_8]
		push	ebx
		push	esi
		call	sub_7F818F46

loc_7F818E8C:				; CODE XREF: sub_7F818E0F+3Aj
					; sub_7F818E0F+66j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F818E0F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F818E95	proc near		; CODE XREF: sub_7F810109+5Dp
					; sub_7F81C56F+36Cp ...

var_2		= byte ptr -2
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, 4
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	edi, [ebp+arg_4]
		mov	ecx, [esi]
		mov	eax, [ecx+18h]
		mov	ebx, [eax]
		mov	ax, [edi]
		test	ax, ax
		jl	loc_7F818F38
		cmp	[ebx], ax
		jle	short loc_7F818F38
		cmp	dword ptr [ecx+0Ch], 0
		jz	short loc_7F818EC8
		push	ecx
		call	sub_7F818550

loc_7F818EC8:				; CODE XREF: sub_7F818E95+2Bj
		mov	cx, [edi]
		movsx	eax, cx
		imul	eax, 0Ch
		mov	eax, [eax+ebx+16h]
		cmp	eax, [ebp+arg_C]
		jbe	short loc_7F818EEA
		push	[ebp+arg_C]
		push	ecx
		push	esi
		call	sub_7F818578
		test	eax, eax
		jz	short loc_7F818F27
		jmp	short loc_7F818F3D
; ---------------------------------------------------------------------------

loc_7F818EEA:				; CODE XREF: sub_7F818E95+43j
		jnb	short loc_7F818F27
		push	[ebp+arg_C]
		push	ecx
		mov	ebx, [esi]
		push	ebx
		call	sub_7F8189C2
		test	eax, eax
		jnz	short loc_7F818F27
		lea	eax, [ebp+var_2]
		push	eax
		push	[ebp+arg_C]
		push	ebx
		call	sub_7F818816
		test	eax, eax
		jnz	short loc_7F818F3D
		push	dword ptr [ebp+var_2]
		mov	ax, [edi]
		mov	ecx, [ebx+18h]
		push	eax
		push	dword ptr [ecx]
		call	sub_7F81897A
		push	dword ptr [ebp+var_2]
		push	ebx
		call	sub_7F818636

loc_7F818F27:				; CODE XREF: sub_7F818E95+51j
					; sub_7F818E95:loc_7F818EEAj ...
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	0
		push	edi
		push	esi
		call	sub_7F818E0F
		jmp	short loc_7F818F3D
; ---------------------------------------------------------------------------

loc_7F818F38:				; CODE XREF: sub_7F818E95+1Cj
					; sub_7F818E95+25j
		mov	eax, 1005h

loc_7F818F3D:				; CODE XREF: sub_7F818E95+53j
					; sub_7F818E95+76j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F818E95	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F818F46	proc near		; CODE XREF: sub_7F818E0F+78p
					; sub_7F81A0C1+50p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	eax, 0FFFFFFFFh
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_2], ax
		push	ebx
		push	esi
		mov	ecx, [ebp+arg_0]
		push	edi
		xor	esi, esi
		mov	edx, [ecx+18h]
		mov	[ebp+var_C], eax
		mov	[ebp+var_10], eax
		mov	ebx, [edx]
		mov	ax, [ebx+2]
		and	al, 3
		cmp	al, 1
		jnz	short loc_7F818F80
		mov	eax, [ebx+4]
		mov	[ebp+var_C], eax
		mov	ecx, [ebx+8]
		mov	[ebp+var_10], ecx
		jmp	short loc_7F818FC3
; ---------------------------------------------------------------------------

loc_7F818F80:				; CODE XREF: sub_7F818F46+2Aj
		mov	eax, [ebp+arg_C]
		cmp	[ebx+4], eax
		ja	short loc_7F818FC3
		mov	edi, [ebp+arg_4]
		lea	esi, [ebp+var_10]
		mov	cx, [edi]
		push	esi
		movsx	eax, cx
		imul	eax, 0Ch
		mov	edx, [eax+ebx+12h]
		lea	eax, [ebp+var_C]
		push	eax
		mov	[ebp+var_8], edx
		push	ecx
		push	0
		push	[ebp+arg_0]
		call	sub_7F8190B0
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F8190A5
		mov	eax, [ebp+var_8]
		sub	[ebp+var_C], eax
		sub	[ebp+var_10], eax
		jmp	short loc_7F818FC6
; ---------------------------------------------------------------------------

loc_7F818FC3:				; CODE XREF: sub_7F818F46+38j
					; sub_7F818F46+40j
		mov	edi, [ebp+arg_4]

loc_7F818FC6:				; CODE XREF: sub_7F818F46+7Bj
		test	esi, esi
		jnz	loc_7F8190A5
		mov	eax, [ebp+arg_8]
		cmp	[ebp+var_10], eax
		jb	loc_7F8190A5
		mov	eax, [ebp+arg_C]
		cmp	[ebp+var_C], eax
		ja	loc_7F8190A5
		mov	cx, [edi]
		test	cx, cx
		jle	short loc_7F81901E
		lea	eax, [ebp+var_8]
		push	eax
		push	ecx
		push	[ebp+arg_0]
		dec	cx
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F81917E
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81901E
		cmp	[ebp+var_8], 1
		jnz	short loc_7F81901E
		mov	cx, [edi]
		lea	eax, [ebp+var_2]
		push	eax
		mov	ax, cx
		dec	ax
		push	eax
		push	0
		jmp	short loc_7F819063
; ---------------------------------------------------------------------------

loc_7F81901E:				; CODE XREF: sub_7F818F46+A6j
					; sub_7F818F46+BFj ...
		movsx	eax, word ptr [ebx]
		mov	cx, [edi]
		dec	eax
		movsx	edx, cx
		cmp	eax, edx
		jle	short loc_7F819071
		test	esi, esi
		jnz	short loc_7F8190A5
		lea	eax, [ebp+var_8]
		push	eax
		mov	ax, cx
		inc	ax
		push	eax
		push	[ebp+arg_0]
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F81917E
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F8190A5
		cmp	[ebp+var_8], 1
		jnz	short loc_7F819071
		mov	cx, [edi]
		lea	eax, [ebp+var_2]
		mov	dx, [ebx]
		push	eax
		mov	ax, cx
		push	edx
		inc	ax
		push	eax

loc_7F819063:				; CODE XREF: sub_7F818F46+D6j
		push	[ebp+arg_0]
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F81942B
		mov	esi, eax

loc_7F819071:				; CODE XREF: sub_7F818F46+E4j
					; sub_7F818F46+10Aj
		test	esi, esi
		jnz	short loc_7F8190A5
		cmp	[ebp+var_2], 0
		jl	short loc_7F8190A5
		mov	ax, [edi]
		cmp	[ebp+var_2], ax
		jz	short loc_7F8190A5
		push	dword ptr [ebp+var_2]
		push	1
		push	eax
		push	ebx
		call	sub_7F81A140
		mov	ax, [ebp+var_2]
		cmp	[edi], ax
		jge	short loc_7F81909E
		dec	[ebp+var_2]

loc_7F81909E:				; CODE XREF: sub_7F818F46+152j
		mov	ax, [ebp+var_2]
		mov	[edi], ax

loc_7F8190A5:				; CODE XREF: sub_7F818F46+6Cj
					; sub_7F818F46+82j ...
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F818F46	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8190B0	proc near		; CODE XREF: sub_7F818F46+63p
					; sub_7F81917E+4Ap ...

var_8		= dword	ptr -8
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

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		mov	ecx, [ebp+arg_0]
		push	esi
		push	edi
		mov	edx, [ecx+14h]
		mov	ebx, [ecx+18h]
		mov	edi, [ebp+arg_4]
		mov	[ebp+var_8], edx
		mov	ecx, [ebx]
		cmp	edi, eax
		jnz	short loc_7F8190D3
		lea	edi, [ecx+2]

loc_7F8190D3:				; CODE XREF: sub_7F8190B0+1Ej
		movsx	edx, [ebp+arg_8]
		mov	si, [edi+6]
		imul	edx, 0Ch
		add	ecx, edx
		mov	edx, [edi+2]
		mov	edi, [ebp+arg_C]
		add	edx, [ecx+12h]
		mov	[ebp+var_4], edx
		mov	ebx, [ecx+16h]
		mov	cx, si
		mov	[edi], edx
		dec	si
		test	cx, cx
		jle	short loc_7F819133

loc_7F8190FB:				; CODE XREF: sub_7F8190B0+81j
		test	ebx, ebx
		jz	short loc_7F819133
		mov	eax, [edi]
		push	0
		push	ebx
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+var_8]
		call	sub_7F82573F
		test	eax, eax
		jnz	short loc_7F819175
		cmp	[ebp+var_4], 0
		jl	short loc_7F819133
		inc	[ebp+var_4]
		mov	ecx, [ebp+var_4]
		sub	ebx, ecx
		add	ebx, [edi]
		mov	[edi], ecx
		mov	cx, si
		dec	si
		test	cx, cx
		jg	short loc_7F8190FB

loc_7F819133:				; CODE XREF: sub_7F8190B0+49j
					; sub_7F8190B0+4Dj ...
		mov	esi, [ebp+arg_10]
		test	esi, esi
		jz	short loc_7F81916A
		cmp	[ebp+var_4], 0
		jl	short loc_7F819170
		test	ebx, ebx
		jz	short loc_7F819163
		mov	eax, [edi]
		push	0
		push	ebx
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+var_8]
		call	sub_7F82573F
		test	eax, eax
		jnz	short loc_7F819175
		mov	ecx, [ebp+var_4]
		mov	[esi], ecx
		jmp	short loc_7F81916A
; ---------------------------------------------------------------------------

loc_7F819163:				; CODE XREF: sub_7F8190B0+92j
		mov	[ebp+var_4], 0FFFFFFFFh

loc_7F81916A:				; CODE XREF: sub_7F8190B0+88j
					; sub_7F8190B0+B1j
		cmp	[ebp+var_4], 0
		jge	short loc_7F819175

loc_7F819170:				; CODE XREF: sub_7F8190B0+8Ej
		mov	eax, 2005h

loc_7F819175:				; CODE XREF: sub_7F8190B0+65j
					; sub_7F8190B0+AAj ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F8190B0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81917E	proc near		; CODE XREF: sub_7F818F46+B6p
					; sub_7F818F46+FBp ...

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		mov	ecx, [ebp+arg_8]
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+18h]
		mov	ebx, [eax]
		mov	eax, [ecx+18h]
		mov	edi, [eax]
		mov	al, [esi+8]
		cmp	al, 82h
		jz	short loc_7F8191AB
		cmp	al, 83h
		jz	short loc_7F8191AB
		mov	[ebp+var_14], 0
		jmp	short loc_7F8191B2
; ---------------------------------------------------------------------------

loc_7F8191AB:				; CODE XREF: sub_7F81917E+1Ej
					; sub_7F81917E+22j
		mov	[ebp+var_14], 1

loc_7F8191B2:				; CODE XREF: sub_7F81917E+2Bj
		mov	ax, [ebx+2]
		and	al, 3
		cmp	al, 3
		jnz	short loc_7F81923B
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+arg_4]
		push	0
		push	esi
		call	sub_7F8190B0
		test	eax, eax
		jnz	loc_7F819358
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebx+2]
		push	[ebp+arg_C]
		push	eax
		push	[ebp+arg_8]
		call	sub_7F8190B0
		test	eax, eax
		jnz	loc_7F819358
		cmp	[ebp+var_14], 0
		jz	short loc_7F819215
		cmp	word ptr [ebx+8], 1
		jnz	short loc_7F819215
		lea	eax, [ebp+var_C]
		mov	ecx, [ebp+arg_8]
		push	eax
		lea	eax, [ebp+var_8]
		push	dword ptr [ecx+14h]
		push	eax
		push	dword ptr [esi+14h]
		call	sub_7F819369

loc_7F819215:				; CODE XREF: sub_7F81917E+78j
					; sub_7F81917E+7Fj
		mov	eax, [ebp+arg_8]
		lea	ecx, [ebp+var_4]
		add	eax, 14h
		push	ecx
		push	[ebp+var_C]
		push	dword ptr [eax]
		push	[ebp+var_8]
		push	dword ptr [esi+14h]
		mov	[ebp+var_10], eax
		call	sub_7F8258A3
		test	eax, eax
		jz	short loc_7F81928F
		jmp	loc_7F819358
; ---------------------------------------------------------------------------

loc_7F81923B:				; CODE XREF: sub_7F81917E+3Cj
		mov	eax, [ebx+4]
		mov	ecx, [ebx+8]
		movsx	edx, word ptr [ebp+arg_4]
		imul	edx, 0Ch
		sub	ecx, eax
		mov	edx, [edx+ebx+12h]
		inc	ecx
		add	edx, eax
		movsx	eax, word ptr [ebp+arg_C]
		imul	eax, 0Ch
		mov	[ebp+var_8], edx
		mov	eax, [eax+edi+12h]
		add	eax, [ebx+4]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_8]
		add	eax, 14h
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ecx
		mov	eax, [ebp+var_10]
		push	[ebp+var_C]
		push	dword ptr [eax]
		push	ecx
		push	[ebp+var_8]
		push	dword ptr [esi+14h]
		call	sub_7F825A83
		test	eax, eax
		jnz	loc_7F819358

loc_7F81928F:				; CODE XREF: sub_7F81917E+B6j
		test	byte ptr [ebx+2], 4
		jz	short loc_7F81929D
		mov	ecx, [ebp+var_4]
		neg	ecx
		mov	[ebp+var_4], ecx

loc_7F81929D:				; CODE XREF: sub_7F81917E+115j
		cmp	[ebp+var_4], 0
		jnz	loc_7F819358
		cmp	[ebp+var_14], 0
		jz	short loc_7F8192F6
		mov	[ebp+var_C], 0
		mov	[ebp+var_8], 0
		movsx	eax, word ptr [ebp+arg_4]
		imul	eax, 0Ch
		lea	edx, [ebp+var_4]
		mov	ecx, [eax+ebx+12h]
		push	edx
		mov	[ebp+var_8], ecx
		movsx	eax, word ptr [ebp+arg_C]
		imul	eax, 0Ch
		push	0Ah
		mov	ecx, [eax+edi+12h]
		push	ecx
		mov	eax, [ebp+var_10]
		mov	[ebp+var_C], ecx
		push	dword ptr [eax]
		push	0Ah
		push	[ebp+var_8]
		push	dword ptr [esi+14h]
		call	sub_7F825A83
		test	eax, eax
		jz	short loc_7F819335
		jmp	short loc_7F819358
; ---------------------------------------------------------------------------

loc_7F8192F6:				; CODE XREF: sub_7F81917E+12Dj
		movsx	eax, word ptr [ebp+arg_4]
		imul	eax, 0Ch
		add	ebx, eax
		movsx	eax, word ptr [ebp+arg_C]
		imul	eax, 0Ch
		mov	ecx, [ebx+16h]
		add	edi, eax
		mov	eax, [ebx+12h]
		mov	edx, [edi+16h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		mov	ebx, [edi+12h]
		lea	edi, [ebp+var_4]
		push	edi
		mov	[ebp+var_C], ebx
		push	edx
		push	ebx
		push	dword ptr [eax]
		push	ecx
		push	[ebp+var_8]
		push	dword ptr [esi+14h]
		call	sub_7F825A83
		test	eax, eax
		jnz	short loc_7F819358

loc_7F819335:				; CODE XREF: sub_7F81917E+174j
		cmp	[ebp+var_4], 0
		jnz	short loc_7F819358
		cmp	[ebp+arg_8], esi
		jnz	short loc_7F819351
		mov	[ebp+var_4], 1
		mov	cx, word ptr [ebp+arg_4]
		cmp	word ptr [ebp+arg_C], cx
		jl	short loc_7F819358

loc_7F819351:				; CODE XREF: sub_7F81917E+1C0j
		mov	[ebp+var_4], 0FFFFFFFFh

loc_7F819358:				; CODE XREF: sub_7F81917E+51j
					; sub_7F81917E+6Ej ...
		mov	edx, [ebp+var_4]
		mov	ecx, [ebp+arg_10]
		pop	edi
		pop	esi
		pop	ebx
		mov	[ecx], edx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F81917E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F819369	proc near		; CODE XREF: sub_7F81917E+92p

var_8		= dword	ptr -8
var_4		= byte ptr -4
var_3		= byte ptr -3
var_2		= byte ptr -2
var_1		= byte ptr -1
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
		push	esi
		lea	ecx, [ebp+var_8]
		mov	esi, [ebp+arg_4]
		lea	edx, [ebp+var_4]
		mov	[ebp+var_8], 4
		push	dword ptr [esi]
		push	ecx
		push	edx
		push	[ebp+arg_0]
		call	sub_7F824CAB
		test	eax, eax
		jnz	short loc_7F8193CA

loc_7F819390:				; CODE XREF: sub_7F819369+5Fj
		cmp	[ebp+var_8], 4
		jnz	short loc_7F8193CA
		cmp	[ebp+var_4], 0
		jz	short loc_7F8193CA
		cmp	[ebp+var_3], 0
		jz	short loc_7F8193CA
		cmp	[ebp+var_2], 3Ah
		jnz	short loc_7F8193CA
		cmp	[ebp+var_1], 20h
		jnz	short loc_7F8193CA
		mov	eax, [esi]
		lea	ecx, [ebp+var_8]
		add	eax, 4
		lea	edx, [ebp+var_4]
		push	eax
		mov	[esi], eax
		push	ecx
		push	edx
		push	[ebp+arg_0]
		call	sub_7F824CAB
		test	eax, eax
		jz	short loc_7F819390

loc_7F8193CA:				; CODE XREF: sub_7F819369+25j
					; sub_7F819369+2Bj ...
		mov	esi, [ebp+arg_C]
		lea	ecx, [ebp+var_8]
		mov	[ebp+var_8], 4
		push	dword ptr [esi]
		push	ecx
		lea	edx, [ebp+var_4]
		push	edx
		push	[ebp+arg_8]
		call	sub_7F824CAB
		test	eax, eax
		jnz	short loc_7F819424

loc_7F8193EA:				; CODE XREF: sub_7F819369+B9j
		cmp	[ebp+var_8], 4
		jnz	short loc_7F819424
		cmp	[ebp+var_4], 0
		jz	short loc_7F819424
		cmp	[ebp+var_3], 0
		jz	short loc_7F819424
		cmp	[ebp+var_2], 3Ah
		jnz	short loc_7F819424
		cmp	[ebp+var_1], 20h
		jnz	short loc_7F819424
		mov	eax, [esi]
		lea	ecx, [ebp+var_8]
		add	eax, 4
		lea	edx, [ebp+var_4]
		push	eax
		mov	[esi], eax
		push	ecx
		push	edx
		push	[ebp+arg_8]
		call	sub_7F824CAB
		test	eax, eax
		jz	short loc_7F8193EA

loc_7F819424:				; CODE XREF: sub_7F819369+7Fj
					; sub_7F819369+85j ...
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F819369	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81942B	proc near		; CODE XREF: sub_7F818F46+124p
					; sub_7F819A4E+81p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= word ptr  14h
arg_10		= word ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		push	esi
		mov	si, [ebp+arg_10]
		push	edi
		mov	di, [ebp+arg_C]
		cmp	si, di
		jle	short loc_7F819477

loc_7F819443:				; CODE XREF: sub_7F81942B+4Aj
		movsx	ebx, si
		movsx	eax, di
		add	ebx, eax
		lea	eax, [ebp+var_4]
		sar	ebx, 1
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	ebx
		push	[ebp+arg_8]
		call	sub_7F81917E
		test	eax, eax
		jnz	short loc_7F819477
		cmp	[ebp+var_4], 1
		jnz	short loc_7F81946F
		mov	si, bx
		jmp	short loc_7F819472
; ---------------------------------------------------------------------------

loc_7F81946F:				; CODE XREF: sub_7F81942B+3Dj
		lea	edi, [ebx+1]

loc_7F819472:				; CODE XREF: sub_7F81942B+42j
		cmp	si, di
		jg	short loc_7F819443

loc_7F819477:				; CODE XREF: sub_7F81942B+16j
					; sub_7F81942B+37j
		mov	ecx, [ebp+arg_14]
		mov	[ecx], di
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F81942B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F819486	proc near		; CODE XREF: sub_7F818B75+7Fp
					; sub_7F818B75+C8p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= word ptr  10h

		push	ebp
		mov	edx, [esp+arg_0]
		mov	ebp, esp
		push	esi
		mov	cx, [edx]
		push	edi
		mov	di, [ebp+arg_8]
		movsx	eax, di
		sub	cx, di
		imul	eax, 0Ch
		test	cx, cx
		lea	esi, [eax+edx+0Eh]
		mov	eax, [ebp+arg_4]
		jle	short loc_7F8194B9

loc_7F8194AB:				; CODE XREF: sub_7F819486+31j
		cmp	[esi], eax
		jz	short loc_7F8194D9
		dec	cx
		add	esi, 0Ch
		test	cx, cx
		jg	short loc_7F8194AB

loc_7F8194B9:				; CODE XREF: sub_7F819486+23j
		test	di, di
		lea	esi, [edx+0Eh]
		jle	short loc_7F8194CF

loc_7F8194C1:				; CODE XREF: sub_7F819486+47j
		cmp	[esi], eax
		jz	short loc_7F8194D9
		dec	di
		add	esi, 0Ch
		test	di, di
		jg	short loc_7F8194C1

loc_7F8194CF:				; CODE XREF: sub_7F819486+39j
		mov	ax, 0FFFFh

loc_7F8194D3:				; CODE XREF: sub_7F819486+65j
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------

loc_7F8194D9:				; CODE XREF: sub_7F819486+27j
					; sub_7F819486+3Dj
		mov	eax, 0FFFFFFF2h
		mov	ecx, 0Ch
		sub	eax, edx
		sub	edx, edx
		add	eax, esi
		div	ecx
		jmp	short loc_7F8194D3
sub_7F819486	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8194ED	proc near		; CODE XREF: sub_7F810109+11p
					; sub_7F81039F+B5p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	ecx, [esp+4+arg_0]
		push	[esp+4+arg_4]
		mov	edx, [ecx]
		mov	eax, [edx+18h]
		push	dword ptr [eax]
		call	sub_7F819486
		retn	0Ch
sub_7F8194ED	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F819508	proc near		; CODE XREF: sub_7F80FE90+78p
					; sub_7F811A4F+7Fp ...

arg_0		= dword	ptr  4
arg_4		= word ptr  8

		mov	eax, [esp+arg_0]
		mov	ecx, [eax]
		mov	ax, [esp+arg_4]
		mov	edx, [ecx+18h]
		test	ax, ax
		mov	ecx, [edx]
		jl	short loc_7F81952E
		cmp	[ecx], ax
		jle	short loc_7F81952E
		movsx	eax, ax
		imul	eax, 0Ch
		mov	eax, [eax+ecx+0Eh]
		jmp	short locret_7F819533
; ---------------------------------------------------------------------------

loc_7F81952E:				; CODE XREF: sub_7F819508+13j
					; sub_7F819508+18j
		mov	eax, 0FFFFFFFFh

locret_7F819533:			; CODE XREF: sub_7F819508+24j
		retn	8
sub_7F819508	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F819536	proc near		; CODE XREF: sub_7F80FE90+51p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		cmp	[ebp+arg_C], 0FFFFFFFFh
		jnz	short loc_7F819562
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F819627
		mov	esi, eax
		jmp	loc_7F81961C
; ---------------------------------------------------------------------------

loc_7F819562:				; CODE XREF: sub_7F819536+Fj
		mov	eax, [ebp+arg_0]
		push	0
		mov	ecx, [eax]
		push	[ebp+arg_8]
		mov	edx, [ecx+18h]
		mov	eax, [ecx+14h]
		mov	[ebp+var_8], eax
		mov	edi, [edx]
		call	sub_7F82F03B
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F819589
		mov	esi, 400h
		jmp	short loc_7F8195FD
; ---------------------------------------------------------------------------

loc_7F819589:				; CODE XREF: sub_7F819536+4Aj
		mov	cx, word ptr [ebp+arg_10]
		cmp	[edi], cx
		jle	short loc_7F8195EF
		mov	ecx, [ebp+arg_8]
		add	ecx, [ebp+arg_C]
		mov	[ebp+var_C], ecx

loc_7F81959B:				; CODE XREF: sub_7F819536+B7j
		movsx	eax, word ptr [ebp+arg_10]
		imul	eax, 0Ch
		add	eax, edi
		mov	ecx, [ebp+var_C]
		cmp	[eax+16h], ecx
		jb	short loc_7F8195E2
		mov	ecx, [ebp+arg_8]
		mov	[ebp+var_4], ecx
		lea	ecx, [ebp+var_4]
		mov	eax, [eax+12h]
		add	eax, [ebp+arg_C]
		push	eax
		push	ecx
		push	ebx
		push	[ebp+var_8]
		call	sub_7F824CAB
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F8195FD
		mov	ecx, [ebp+arg_8]
		cmp	ecx, [ebp+var_4]
		jnz	short loc_7F8195E2
		push	ecx
		push	ebx
		push	[ebp+arg_4]
		call	sub_7F81AF66
		test	eax, eax
		jnz	short loc_7F8195EF

loc_7F8195E2:				; CODE XREF: sub_7F819536+74j
					; sub_7F819536+9Cj
		inc	word ptr [ebp+arg_10]
		mov	cx, word ptr [ebp+arg_10]
		cmp	[edi], cx
		jg	short loc_7F81959B

loc_7F8195EF:				; CODE XREF: sub_7F819536+5Aj
					; sub_7F819536+AAj
		mov	cx, word ptr [ebp+arg_10]
		cmp	[edi], cx
		jg	short loc_7F8195FD
		mov	esi, 1004h

loc_7F8195FD:				; CODE XREF: sub_7F819536+51j
					; sub_7F819536+94j ...
		test	ebx, ebx
		jz	short loc_7F819607
		push	ebx
		call	sub_7F82F149

loc_7F819607:				; CODE XREF: sub_7F819536+C9j
		mov	eax, [ebp+arg_14]
		test	esi, esi
		jz	short loc_7F819615
		mov	word ptr [eax],	0FFFFh
		jmp	short loc_7F81961C
; ---------------------------------------------------------------------------

loc_7F819615:				; CODE XREF: sub_7F819536+D6j
		mov	cx, word ptr [ebp+arg_10]
		mov	[eax], cx

loc_7F81961C:				; CODE XREF: sub_7F819536+27j
					; sub_7F819536+DDj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F819536	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F819627	proc near		; CODE XREF: sub_7F819536+20p

var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
lpString1	= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_6		= word ptr -6
var_4		= word ptr -4
var_2		= word ptr -2
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, 34h
		mov	ax, word ptr [ebp+arg_C]
		push	ebx
		mov	[ebp+var_6], ax
		push	esi
		push	edi
		xor	esi, esi
		mov	ecx, [ebp+arg_0]
		mov	[ebp+var_24], esi
		mov	edx, [ecx]
		mov	[ebp+var_28], esi
		mov	[ebp+var_18], edx
		mov	eax, [edx+18h]
		mov	[ebp+var_4], 0FFFFh
		mov	edi, [eax]
		mov	eax, [ebp+arg_8]
		mov	cx, [edi]
		inc	eax
		mov	[ebp+var_2], cx
		cmp	eax, 5
		ja	short loc_7F819668
		mov	eax, 5

loc_7F819668:				; CODE XREF: sub_7F819627+3Aj
		push	0
		mov	[ebp+lpString1], eax
		push	eax
		call	sub_7F82F03B
		mov	ebx, eax
		push	0
		push	[ebp+lpString1]
		call	sub_7F82F03B
		mov	[ebp+lpString1], eax
		test	ebx, ebx
		jz	loc_7F8198B4
		test	eax, eax
		jz	loc_7F8198B4
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	sub_7F82FCE0
		mov	ecx, [ebp+arg_8]
		add	esp, 0Ch
		mov	edx, [ebp+lpString1]
		mov	byte ptr [ecx+edx], 0
		mov	cx, [edi+2]
		mov	ax, cx
		and	ax, 4
		shr	ax, 2
		movzx	edx, ax
		xor	eax, eax
		mov	[ebp+var_34], edx
		mov	ax, cx
		and	eax, 3
		cmp	eax, 1
		jz	short loc_7F8196DC
		cmp	eax, 3
		jz	short loc_7F8196EA
		mov	esi, 2004h
		jmp	loc_7F8198B9
; ---------------------------------------------------------------------------

loc_7F8196DC:				; CODE XREF: sub_7F819627+A4j
		mov	eax, [edi+4]
		mov	[ebp+var_14], eax
		mov	ecx, [edi+8]
		mov	[ebp+var_20], ecx
		jmp	short loc_7F819716
; ---------------------------------------------------------------------------

loc_7F8196EA:				; CODE XREF: sub_7F819627+A9j
		mov	[ebp+var_24], 1
		cmp	word ptr [edi+8], 1
		jnz	short loc_7F81970F
		mov	eax, [ebp+var_18]
		mov	al, [eax+8]
		cmp	al, 82h
		jz	short loc_7F819706
		cmp	al, 83h
		jnz	short loc_7F81970F

loc_7F819706:				; CODE XREF: sub_7F819627+D9j
		mov	[ebp+var_28], 1
		jmp	short loc_7F819716
; ---------------------------------------------------------------------------

loc_7F81970F:				; CODE XREF: sub_7F819627+CFj
					; sub_7F819627+DDj
		mov	[ebp+var_28], 0

loc_7F819716:				; CODE XREF: sub_7F819627+C1j
					; sub_7F819627+E6j
		mov	ax, word ptr [ebp+arg_C]
		cmp	ax, [ebp+var_2]
		jge	loc_7F81989E

loc_7F819724:				; CODE XREF: sub_7F819627+271j
		movsx	eax, [ebp+var_6]
		movsx	ecx, [ebp+var_2]
		add	eax, ecx
		sar	eax, 1
		mov	word ptr [ebp+arg_C], ax
		movsx	eax, ax
		imul	eax, 0Ch
		cmp	[ebp+var_24], 0
		mov	ecx, [eax+edi+12h]
		mov	[ebp+var_1C], ecx
		jz	short loc_7F81976F
		lea	eax, [ebp+var_20]
		lea	ecx, [ebp+var_14]
		push	eax
		push	ecx
		push	[ebp+arg_C]
		push	0
		push	[ebp+var_18]
		call	sub_7F8190B0
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F8198B9
		mov	eax, [ebp+var_1C]
		sub	[ebp+var_14], eax
		sub	[ebp+var_20], eax

loc_7F81976F:				; CODE XREF: sub_7F819627+11Ej
		mov	eax, [ebp+arg_8]
		cmp	eax, 5
		ja	short loc_7F81977C
		mov	eax, 5

loc_7F81977C:				; CODE XREF: sub_7F819627+14Ej
		mov	ecx, [ebp+var_20]
		mov	[ebp+var_2C], eax
		sub	ecx, [ebp+var_14]
		inc	ecx
		cmp	ecx, eax
		jb	short loc_7F81978C
		mov	ecx, eax

loc_7F81978C:				; CODE XREF: sub_7F819627+161j
		mov	eax, [ebp+var_14]
		mov	[ebp+var_C], ecx
		add	eax, [ebp+var_1C]
		lea	ecx, [ebp+var_C]
		push	eax
		push	ecx
		push	ebx
		mov	eax, [ebp+var_18]
		push	dword ptr [eax+14h]
		call	sub_7F824CAB
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F8198B9
		cmp	[ebp+var_28], 0
		jz	short loc_7F819829
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+var_C]
		sub	eax, [ebp+var_14]
		inc	eax
		mov	byte ptr [ecx+ebx], 0
		cmp	[ebp+var_C], 4
		mov	[ebp+var_30], eax
		jbe	short loc_7F819829

loc_7F8197CD:				; CODE XREF: sub_7F819627+200j
		cmp	byte ptr [ebx],	0
		jz	short loc_7F819829
		cmp	byte ptr [ebx+1], 0
		jz	short loc_7F819829
		cmp	byte ptr [ebx+2], 3Ah
		jnz	short loc_7F819829
		cmp	byte ptr [ebx+3], 20h
		jnz	short loc_7F819829
		add	[ebp+var_14], 4
		sub	[ebp+var_30], 4
		mov	eax, [ebp+var_30]
		mov	ecx, [ebp+var_2C]
		cmp	eax, ecx
		jb	short loc_7F8197F8
		mov	eax, ecx

loc_7F8197F8:				; CODE XREF: sub_7F819627+1CDj
		lea	ecx, [ebp+var_C]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_14]
		add	eax, [ebp+var_1C]
		push	eax
		push	ecx
		push	ebx
		mov	eax, [ebp+var_18]
		push	dword ptr [eax+14h]
		call	sub_7F824CAB
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F8198B9
		mov	eax, [ebp+var_C]
		mov	byte ptr [eax+ebx], 0
		cmp	[ebp+var_C], 4
		ja	short loc_7F8197CD

loc_7F819829:				; CODE XREF: sub_7F819627+18Dj
					; sub_7F819627+1A4j ...
		mov	ecx, [ebp+arg_8]
		cmp	[ebp+var_C], ecx
		jbe	short loc_7F819834
		mov	[ebp+var_C], ecx

loc_7F819834:				; CODE XREF: sub_7F819627+208j
		mov	eax, [ebp+var_C]
		cmp	[ebp+var_24], 0
		mov	byte ptr [eax+ebx], 0
		jz	short loc_7F81984C
		push	ebx		; lpString2
		push	[ebp+lpString1]	; lpString1
		call	sub_7F8176C6
		jmp	short loc_7F819858
; ---------------------------------------------------------------------------

loc_7F81984C:				; CODE XREF: sub_7F819627+218j
		push	[ebp+var_C]
		push	ebx
		push	[ebp+lpString1]
		call	sub_7F82A397

loc_7F819858:				; CODE XREF: sub_7F819627+223j
		cmp	[ebp+var_34], 0
		jz	short loc_7F819860
		neg	eax

loc_7F819860:				; CODE XREF: sub_7F819627+235j
		cmp	eax, 0FFFFFFFFh
		jz	short loc_7F819888
		cmp	eax, 1
		jnz	short loc_7F819876
		mov	ax, word ptr [ebp+arg_C]
		inc	ax
		mov	[ebp+var_6], ax
		jmp	short loc_7F819890
; ---------------------------------------------------------------------------

loc_7F819876:				; CODE XREF: sub_7F819627+241j
		mov	ecx, [ebp+arg_8]
		cmp	[ebp+var_C], ecx
		jnz	short loc_7F819888
		mov	ax, word ptr [ebp+arg_C]
		mov	[ebp+var_4], ax
		jmp	short loc_7F81988C
; ---------------------------------------------------------------------------

loc_7F819888:				; CODE XREF: sub_7F819627+23Cj
					; sub_7F819627+255j
		mov	ax, word ptr [ebp+arg_C]

loc_7F81988C:				; CODE XREF: sub_7F819627+25Fj
		mov	[ebp+var_2], ax

loc_7F819890:				; CODE XREF: sub_7F819627+24Dj
		mov	ax, [ebp+var_2]
		cmp	[ebp+var_6], ax
		jl	loc_7F819724

loc_7F81989E:				; CODE XREF: sub_7F819627+F7j
		cmp	[ebp+var_4], 0
		jge	short loc_7F8198B9
		mov	ax, word ptr [ebp+arg_C]
		mov	esi, 1004h
		mov	[ebp+var_4], ax
		jmp	short loc_7F8198B9
; ---------------------------------------------------------------------------

loc_7F8198B4:				; CODE XREF: sub_7F819627+5Dj
					; sub_7F819627+65j
		mov	esi, 400h

loc_7F8198B9:				; CODE XREF: sub_7F819627+B0j
					; sub_7F819627+139j ...
		test	ebx, ebx
		jz	short loc_7F8198C3
		push	ebx
		call	sub_7F82F149

loc_7F8198C3:				; CODE XREF: sub_7F819627+294j
		cmp	[ebp+lpString1], 0
		jz	short loc_7F8198D1
		push	[ebp+lpString1]
		call	sub_7F82F149

loc_7F8198D1:				; CODE XREF: sub_7F819627+2A0j
		test	esi, esi
		jz	short loc_7F8198E7
		cmp	esi, 1004h
		jz	short loc_7F8198E7
		mov	eax, [ebp+arg_10]
		mov	word ptr [eax],	0FFFFh
		jmp	short loc_7F8198F1
; ---------------------------------------------------------------------------

loc_7F8198E7:				; CODE XREF: sub_7F819627+2ACj
					; sub_7F819627+2B4j
		mov	cx, [ebp+var_4]
		mov	eax, [ebp+arg_10]
		mov	[eax], cx

loc_7F8198F1:				; CODE XREF: sub_7F819627+2BEj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F819627	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8198FC	proc near		; CODE XREF: sub_7F80FFF8+B5p
					; sub_7F810181+18p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, [eax]
		mov	edx, [ecx+18h]
		mov	eax, [edx]
		mov	ax, [eax]
		retn	4
sub_7F8198FC	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81990D	proc near		; CODE XREF: sub_7F810E3F+24p
					; sub_7F811C96+23p ...

arg_0		= dword	ptr  4
arg_4		= word ptr  8

		mov	eax, [esp+arg_0]
		mov	ecx, [eax]
		mov	ax, [esp+arg_4]
		mov	edx, [ecx+18h]
		test	ax, ax
		mov	ecx, [edx]
		jl	short loc_7F819933
		cmp	[ecx], ax
		jle	short loc_7F819933
		movsx	eax, ax
		imul	eax, 0Ch
		mov	eax, [eax+ecx+16h]
		jmp	short locret_7F819935
; ---------------------------------------------------------------------------

loc_7F819933:				; CODE XREF: sub_7F81990D+13j
					; sub_7F81990D+18j
		xor	eax, eax

locret_7F819935:			; CODE XREF: sub_7F81990D+24j
		retn	8
sub_7F81990D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F819938	proc near		; CODE XREF: sub_7F810EE0+15p
					; sub_7F811EA7+1Ep ...

arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		mov	ebx, [edx+18h]
		mov	dx, [ebp+arg_4]
		mov	esi, [ebx]
		cmp	dx, ax
		jl	short loc_7F8199AF
		mov	cx, [esi]
		cmp	cx, dx
		jle	short loc_7F8199AF
		movsx	edi, dx
		mov	edx, [ebp+arg_8]
		movsx	ecx, cx
		movsx	ebx, word ptr [edx]
		add	ebx, edi
		cmp	ebx, ecx
		jle	short loc_7F81997D
		mov	eax, 1005h
		sub	ecx, edi
		test	ecx, ecx
		jg	short loc_7F81997A
		xor	ecx, ecx

loc_7F81997A:				; CODE XREF: sub_7F819938+3Ej
		mov	[edx], cx

loc_7F81997D:				; CODE XREF: sub_7F819938+33j
		mov	dx, [edx]
		test	dx, dx
		jle	short loc_7F8199BC
		imul	edi, 0Ch
		mov	cx, dx
		lea	esi, [edi+esi+0Eh]
		dec	dx
		test	cx, cx
		jz	short loc_7F8199BC
		mov	edi, [ebp+arg_C]

loc_7F819999:				; CODE XREF: sub_7F819938+73j
		mov	ecx, [esi]
		add	esi, 0Ch
		mov	[edi], ecx
		add	edi, 4
		mov	cx, dx
		dec	dx
		test	cx, cx
		jnz	short loc_7F819999
		jmp	short loc_7F8199BC
; ---------------------------------------------------------------------------

loc_7F8199AF:				; CODE XREF: sub_7F819938+19j
					; sub_7F819938+21j
		mov	edx, [ebp+arg_8]
		mov	eax, 1005h
		mov	word ptr [edx],	0

loc_7F8199BC:				; CODE XREF: sub_7F819938+4Bj
					; sub_7F819938+5Cj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_7F819938	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8199C3	proc near		; CODE XREF: sub_7F82C0B0+5Dp
					; sub_7F82C1D4+65p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		mov	ecx, [eax]
		mov	edi, [esp+8+arg_4]
		mov	edx, [ecx+18h]
		mov	esi, [edx]
		add	esi, 2
		movsd
		movsd
		movsw
		pop	edi
		pop	esi
		retn	8
sub_7F8199C3	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8199E0	proc near		; CODE XREF: sub_7F81B01B+108p
					; sub_7F81C56F+2BFp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	ebp
		xor	edi, edi
		mov	ebx, [eax]
		test	byte ptr [ebx+4], 1
		jz	short loc_7F819A40
		mov	eax, [ebx+18h]
		cmp	[ebx+0Ch], edi
		mov	ebp, [eax]
		jz	short loc_7F819A02
		push	ebx
		call	sub_7F818550

loc_7F819A02:				; CODE XREF: sub_7F8199E0+1Aj
		add	ebp, 2
		push	0Ah
		mov	esi, [esp+14h+arg_4]
		push	esi
		push	ebp
		call	sub_7F81AF66
		test	eax, eax
		jz	short loc_7F819A25
		mov	eax, [ebx]
		mov	ecx, [eax]
		mov	edx, [ecx]
		test	byte ptr [edx+265h], 8
		jz	short loc_7F819A45

loc_7F819A25:				; CODE XREF: sub_7F8199E0+34j
		push	0Ah
		push	esi
		push	ebp
		call	sub_7F82FCE0
		add	esp, 0Ch
		test	byte ptr [esi],	3
		jz	short loc_7F819A45
		push	ebx
		call	sub_7F819A4E
		mov	edi, eax
		jmp	short loc_7F819A45
; ---------------------------------------------------------------------------

loc_7F819A40:				; CODE XREF: sub_7F8199E0+10j
		mov	edi, 203h

loc_7F819A45:				; CODE XREF: sub_7F8199E0+43j
					; sub_7F8199E0+54j ...
		mov	eax, edi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F8199E0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F819A4E	proc near		; CODE XREF: sub_7F8199E0+57p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_8], 0
		mov	eax, [esi+18h]
		mov	edi, [eax]
		mov	cx, [edi]
		mov	ax, [edi+2]
		and	ax, 3
		mov	word ptr [ebp+var_4+2],	cx
		jnz	short loc_7F819A80
		mov	[ebp+var_8], 2004h
		jmp	short loc_7F819AEF
; ---------------------------------------------------------------------------

loc_7F819A80:				; CODE XREF: sub_7F819A4E+27j
		cmp	ax, 2
		jnz	short loc_7F819ABB
		mov	si, 1
		lea	ebx, [edi+0Eh]
		cmp	word ptr [ebp+var_4+2],	si
		jle	short loc_7F819AEF

loc_7F819A93:				; CODE XREF: sub_7F819A4E+69j
		push	esi
		push	0
		push	dword ptr [ebx]
		push	edi
		add	ebx, 0Ch
		call	sub_7F818CB6
		mov	word ptr [ebp+var_4], ax
		push	[ebp+var_4]
		push	1
		push	esi
		push	edi
		inc	si
		call	sub_7F81A140
		cmp	si, word ptr [ebp+var_4+2]
		jl	short loc_7F819A93
		jmp	short loc_7F819AEF
; ---------------------------------------------------------------------------

loc_7F819ABB:				; CODE XREF: sub_7F819A4E+36j
		mov	bx, 1
		cmp	word ptr [ebp+var_4+2],	bx
		jle	short loc_7F819AEF

loc_7F819AC5:				; CODE XREF: sub_7F819A4E+9Fj
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	0
		push	esi
		push	ebx
		push	esi
		call	sub_7F81942B
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	short loc_7F819AEF
		push	[ebp+var_4]
		push	1
		push	ebx
		push	edi
		inc	bx
		call	sub_7F81A140
		cmp	bx, word ptr [ebp+var_4+2]
		jl	short loc_7F819AC5

loc_7F819AEF:				; CODE XREF: sub_7F819A4E+30j
					; sub_7F819A4E+43j ...
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F819A4E	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F819AFB	proc near		; CODE XREF: sub_7F810567+66p

var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= word ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		mov	eax, [esp+arg_0]
		sub	esp, 4
		xor	ecx, ecx
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	edi, [eax]
		mov	eax, [esp+14h+arg_8]
		mov	[eax], ecx
		mov	edx, [edi+1Ch]
		mov	ebx, [edi+0Ch]
		mov	[esp+14h+var_4], edx
		cmp	ebx, ecx
		jz	short loc_7F819B24
		mov	[edi+0Ch], ecx
		mov	[edi+1Ch], ecx

loc_7F819B24:				; CODE XREF: sub_7F819AFB+21j
		mov	ebp, [esp+14h+arg_C]
		push	0
		push	0
		push	0
		push	dword ptr [ebp+0]
		push	edi
		call	sub_7F8178D8
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F819B96
		push	dword ptr [edi+1Ch]
		push	2
		push	dword ptr [edi+0Ch]
		push	dword ptr [edi]
		call	sub_7F811597
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F819B96
		mov	eax, [edi+0Ch]
		mov	[ebp+0], eax
		push	[esp+14h+arg_8]
		mov	ax, [esp+18h+arg_4]
		and	ax, 0FFFDh
		push	eax
		push	ebp
		push	dword ptr [edi]
		call	sub_7F817E9D
		mov	esi, eax
		push	0
		push	2
		push	dword ptr [edi+0Ch]
		push	dword ptr [edi]
		call	sub_7F811597
		test	esi, esi
		jnz	short loc_7F819B96
		mov	eax, [esp+14h+arg_8]
		mov	ecx, [eax]
		mov	eax, [ecx]
		or	byte ptr [eax+4], 2
		mov	edx, [eax+14h]
		mov	ecx, [edx]
		or	byte ptr [ecx],	2

loc_7F819B96:				; CODE XREF: sub_7F819AFB+40j
					; sub_7F819AFB+55j ...
		xor	eax, eax
		test	esi, esi
		jnz	short loc_7F819B9F
		mov	eax, [edi+0Ch]

loc_7F819B9F:				; CODE XREF: sub_7F819AFB+9Fj
		mov	[ebp+0], eax
		mov	eax, [edi+1Ch]
		test	eax, eax
		jz	short loc_7F819BAF
		push	eax
		call	sub_7F82F1E1

loc_7F819BAF:				; CODE XREF: sub_7F819AFB+ACj
		mov	eax, [esp+14h+var_4]
		mov	[edi+0Ch], ebx
		pop	ebp
		mov	[edi+1Ch], eax
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn	10h
sub_7F819AFB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F819BC5	proc near		; CODE XREF: sub_7F810F16+61p
					; sub_7F81B8F0+60p ...

var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		mov	esi, [eax]
		mov	ax, [esi+4]
		mov	ecx, [esi+18h]
		test	ah, 40h
		mov	edi, [ecx]
		mov	bx, [edi]
		jz	short loc_7F819BF1
		mov	[ebp+var_8], 253h
		jmp	loc_7F819D2F
; ---------------------------------------------------------------------------

loc_7F819BF1:				; CODE XREF: sub_7F819BC5+1Ej
		test	al, 1
		jnz	short loc_7F819C01
		mov	[ebp+var_8], 203h
		jmp	loc_7F819D2F
; ---------------------------------------------------------------------------

loc_7F819C01:				; CODE XREF: sub_7F819BC5+2Ej
		movzx	eax, bx
		inc	eax
		cmp	eax, 1519h
		jl	short loc_7F819C18
		mov	[ebp+var_8], 1017h
		jmp	loc_7F819D2F
; ---------------------------------------------------------------------------

loc_7F819C18:				; CODE XREF: sub_7F819BC5+45j
		cmp	[ebp+arg_4], 0FFFFFFFFh
		jz	short loc_7F819C3A
		push	0
		push	[ebp+arg_4]
		push	edi
		call	sub_7F819486
		test	ax, ax
		jl	short loc_7F819C50
		mov	[ebp+var_8], 1003h
		jmp	loc_7F819D2F
; ---------------------------------------------------------------------------

loc_7F819C3A:				; CODE XREF: sub_7F819BC5+57j
					; sub_7F819BC5+89j
		call	sub_7F82AC0C
		push	0
		mov	[ebp+arg_4], eax
		push	eax
		push	edi
		call	sub_7F819486
		test	ax, ax
		jge	short loc_7F819C3A

loc_7F819C50:				; CODE XREF: sub_7F819BC5+67j
		cmp	dword ptr [esi+0Ch], 0
		jz	short loc_7F819C5C
		push	esi
		call	sub_7F818550

loc_7F819C5C:				; CODE XREF: sub_7F819BC5+8Fj
		push	10h
		push	14h
		call	sub_7F82F18D
		mov	ecx, [ebp+arg_C]
		test	eax, eax
		mov	[ecx], eax
		jnz	short loc_7F819C7A
		mov	[ebp+var_8], 400h
		jmp	loc_7F819D2F
; ---------------------------------------------------------------------------

loc_7F819C7A:				; CODE XREF: sub_7F819BC5+A7j
		cmp	[ebp+arg_8], 0
		jge	short loc_7F819C87
		mov	[ebp+arg_8], 1000h

loc_7F819C87:				; CODE XREF: sub_7F819BC5+B9j
		xor	edi, edi
		lea	eax, [ebp+var_2]
		push	eax
		push	[ebp+arg_8]
		push	esi
		call	sub_7F818816
		mov	[ebp+var_8], eax
		cmp	eax, edi
		jnz	loc_7F819D2F
		mov	eax, [esi+18h]
		push	ebx
		push	dword ptr [ebp+var_2]
		mov	edi, [eax]
		push	edi
		call	sub_7F81897A
		xor	eax, eax
		mov	ax, [edi+2]
		and	eax, 3
		jz	short loc_7F819CC6
		cmp	eax, 2
		jz	short loc_7F819CDD
		mov	[ebp+var_2], bx
		jmp	short loc_7F819CF0
; ---------------------------------------------------------------------------

loc_7F819CC6:				; CODE XREF: sub_7F819BC5+F4j
		mov	ax, [edi+4]
		mov	[ebp+var_2], ax
		test	ax, ax
		jl	short loc_7F819CD8
		cmp	[edi], ax
		jg	short loc_7F819CF0

loc_7F819CD8:				; CODE XREF: sub_7F819BC5+10Cj
		mov	ax, [edi]
		jmp	short loc_7F819CEC
; ---------------------------------------------------------------------------

loc_7F819CDD:				; CODE XREF: sub_7F819BC5+F9j
		mov	ax, [edi]
		push	eax
		push	0
		push	[ebp+arg_4]
		push	edi
		call	sub_7F818CB6

loc_7F819CEC:				; CODE XREF: sub_7F819BC5+116j
		mov	[ebp+var_2], ax

loc_7F819CF0:				; CODE XREF: sub_7F819BC5+FFj
					; sub_7F819BC5+111j
		movsx	ecx, bx
		imul	ecx, 0Ch
		mov	eax, [ebp+arg_4]
		mov	[ecx+edi+0Eh], eax
		cmp	bx, [ebp+var_2]
		jz	short loc_7F819D0F
		push	dword ptr [ebp+var_2]
		push	1
		push	ebx
		push	edi
		call	sub_7F81A140

loc_7F819D0F:				; CODE XREF: sub_7F819BC5+13Cj
		mov	dx, [ebp+var_2]
		mov	ecx, [ebp+arg_C]
		mov	ebx, [ebp+arg_8]
		mov	eax, [ecx]
		mov	ecx, [eax]
		mov	eax, [ebp+arg_0]
		mov	[ecx+4], dx
		mov	[ecx], eax
		mov	[ecx+0Eh], ebx
		mov	word ptr [ecx+12h], 3

loc_7F819D2F:				; CODE XREF: sub_7F819BC5+27j
					; sub_7F819BC5+37j ...
		cmp	[ebp+var_8], 0
		jnz	short loc_7F819D42
		inc	word ptr [edi]
		dec	word ptr [esi+10h]
		or	byte ptr [esi+5], 40h
		jmp	short loc_7F819D58
; ---------------------------------------------------------------------------

loc_7F819D42:				; CODE XREF: sub_7F819BC5+16Ej
		mov	ecx, [ebp+arg_C]
		xor	esi, esi
		mov	eax, [ecx]
		test	eax, eax
		jz	short loc_7F819D58
		push	eax
		call	sub_7F82F1E1
		mov	ecx, [ebp+arg_C]
		mov	[ecx], esi

loc_7F819D58:				; CODE XREF: sub_7F819BC5+17Bj
					; sub_7F819BC5+186j
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F819BC5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F819D64	proc near		; CODE XREF: sub_7F810F16+7Ap

var_8		= dword	ptr -8
var_4		= word ptr -4
var_2		= byte ptr -2
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

		push	ebp
		mov	edx, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		mov	ebx, [edx]
		xor	edi, edi
		mov	esi, [ebp+arg_10]
		cmp	word ptr [ebp+arg_4], di
		mov	eax, [ebx+18h]
		mov	eax, [eax]
		mov	[esi], edi
		jl	loc_7F819E93
		mov	dx, word ptr [ebp+arg_4]
		cmp	[eax], dx
		jle	loc_7F819E93
		mov	ax, [ebx+4]
		test	ah, 40h
		jz	short loc_7F819DAF
		test	byte ptr [ebp+arg_8], 3
		jz	short loc_7F819DAF
		mov	edi, 253h
		jmp	loc_7F819E98
; ---------------------------------------------------------------------------

loc_7F819DAF:				; CODE XREF: sub_7F819D64+39j
					; sub_7F819D64+3Fj
		mov	cx, [ebp+arg_8]
		and	cx, 1
		mov	[ebp+var_4], cx
		jz	short loc_7F819DD7
		test	al, 1
		jnz	short loc_7F819DCB
		mov	edi, 203h
		jmp	loc_7F819E98
; ---------------------------------------------------------------------------

loc_7F819DCB:				; CODE XREF: sub_7F819D64+5Bj
		cmp	dword ptr [ebx+0Ch], 0
		jz	short loc_7F819DD7
		push	ebx
		call	sub_7F818550

loc_7F819DD7:				; CODE XREF: sub_7F819D64+57j
					; sub_7F819D64+6Bj
		push	10h
		push	14h
		call	sub_7F82F18D
		mov	ecx, eax
		mov	[esi], eax
		test	ecx, ecx
		jnz	short loc_7F819DF2
		mov	edi, 400h
		jmp	loc_7F819E98
; ---------------------------------------------------------------------------

loc_7F819DF2:				; CODE XREF: sub_7F819D64+82j
		movsx	eax, word ptr [ebp+arg_4]
		imul	eax, 0Ch
		mov	edx, [ebx+18h]
		mov	[ebp+var_8], eax
		mov	eax, [edx]
		mov	edx, [ebp+var_8]
		mov	edx, [eax+edx+16h]
		mov	eax, [ecx]
		mov	ecx, [ebp+arg_C]
		mov	[eax+0Ah], edx
		cmp	ecx, edx
		jbe	short loc_7F819E54
		cmp	[ebp+var_4], 0
		jz	short loc_7F819E54
		test	byte ptr [ebp+arg_8+1],	20h
		jz	short loc_7F819E44
		lea	eax, [ebp+var_2]
		push	eax
		push	ecx
		push	ebx
		call	sub_7F818816
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F819E9C
		push	dword ptr [ebp+var_2]
		mov	eax, [ebx+18h]
		push	[ebp+arg_4]
		push	dword ptr [eax]
		call	sub_7F81897A
		jmp	short loc_7F819E54
; ---------------------------------------------------------------------------

loc_7F819E44:				; CODE XREF: sub_7F819D64+BBj
		push	ecx
		push	[ebp+arg_4]
		push	ebx
		call	sub_7F818786
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F819E9C

loc_7F819E54:				; CODE XREF: sub_7F819D64+AEj
					; sub_7F819D64+B5j ...
		mov	eax, [esi]
		mov	edx, [ebx+18h]
		mov	ecx, [eax]
		mov	eax, [edx]
		test	byte ptr [ebp+arg_8], 4
		mov	dx, word ptr [ebp+arg_4]
		mov	[ecx+4], dx
		mov	edx, [ebp+arg_0]
		mov	[ecx], edx
		jz	short loc_7F819E78
		mov	edx, [ecx+0Ah]
		mov	[ecx+6], edx
		jmp	short loc_7F819E7F
; ---------------------------------------------------------------------------

loc_7F819E78:				; CODE XREF: sub_7F819D64+10Aj
		mov	dword ptr [ecx+6], 0

loc_7F819E7F:				; CODE XREF: sub_7F819D64+112j
		mov	edx, [ebp+var_8]
		mov	eax, [edx+eax+16h]
		mov	dx, [ebp+arg_8]
		mov	[ecx+0Eh], eax
		mov	[ecx+12h], dx
		jmp	short loc_7F819E98
; ---------------------------------------------------------------------------

loc_7F819E93:				; CODE XREF: sub_7F819D64+1Fj
					; sub_7F819D64+2Cj
		mov	edi, 1005h

loc_7F819E98:				; CODE XREF: sub_7F819D64+46j
					; sub_7F819D64+62j ...
		test	edi, edi
		jz	short loc_7F819EB0

loc_7F819E9C:				; CODE XREF: sub_7F819D64+CCj
					; sub_7F819D64+EEj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_7F819EBA
		push	eax
		call	sub_7F82F1E1
		mov	dword ptr [esi], 0
		jmp	short loc_7F819EBA
; ---------------------------------------------------------------------------

loc_7F819EB0:				; CODE XREF: sub_7F819D64+136j
		test	byte ptr [ebp+arg_8], 1
		jz	short loc_7F819EBA
		or	byte ptr [ebx+5], 40h

loc_7F819EBA:				; CODE XREF: sub_7F819D64+13Cj
					; sub_7F819D64+14Aj ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F819D64	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F819EC5	proc near		; CODE XREF: sub_7F8110DD+11p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		push	ebp
		mov	eax, [esi]
		mov	cx, [eax+4]
		mov	edi, [esp+10h+arg_8]
		mov	edx, [eax]
		mov	ebx, [eax+6]
		mov	eax, [eax+0Ah]
		mov	ebp, [edi]
		sub	eax, ebx
		cmp	eax, ebp
		jb	short loc_7F819EE9
		mov	eax, ebp

loc_7F819EE9:				; CODE XREF: sub_7F819EC5+20j
		push	edi
		mov	[edi], eax
		push	[esp+14h+arg_4]
		push	ebx
		push	ecx
		push	edx
		call	sub_7F818D47
		mov	ecx, [esi]
		mov	ebp, [edi]
		add	[ecx+6], ebp
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_7F819EC5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F819F06	proc near		; CODE XREF: sub_7F81A03B+3Ep

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_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		xor	edi, edi
		mov	[ebp+var_8], edi
		call	sub_7F8189C2
		test	eax, eax
		jnz	loc_7F81A02F
		mov	eax, [esi+18h]
		mov	ecx, [esi+14h]
		mov	[ebp+var_10], edi
		mov	[ebp+var_14], ecx
		mov	ebx, [eax]
		mov	ax, [ebx]
		add	ax, [esi+10h]
		mov	[ebp+var_2], ax
		cmp	[esi+12h], di
		jnz	short loc_7F819F62
		push	5
		push	esi
		call	sub_7F818734
		mov	[ebp+var_8], eax
		cmp	eax, edi
		jnz	loc_7F81A02F
		mov	eax, [esi+18h]
		mov	ebx, [eax]

loc_7F819F62:				; CODE XREF: sub_7F819F06+42j
		lea	eax, [ebp+var_10]
		push	eax
		push	3
		push	[ebp+var_14]
		call	sub_7F8254CC
		push	1
		push	[ebp+arg_8]
		push	[ebp+var_14]
		call	sub_7F825546
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	loc_7F81A02F
		movsx	eax, [ebp+var_2]
		imul	eax, 0Ch
		lea	edx, [eax+ebx]
		movsx	eax, word ptr [ebp+arg_4]
		imul	eax, 0Ch
		mov	edi, [eax+ebx+0Eh]
		lea	ecx, [eax+ebx]
		mov	[edx+0Eh], edi
		mov	edi, [ebp+arg_8]
		mov	eax, [ebp+var_10]
		mov	[edx+12h], eax
		mov	[edx+16h], edi
		mov	edi, [ecx+16h]
		mov	eax, [ecx+12h]
		test	edi, edi
		mov	[ebp+var_18], eax
		jz	short loc_7F81A012

loc_7F819FBC:				; CODE XREF: sub_7F819F06+10Aj
		cmp	edi, 0FE00h
		mov	eax, edi
		jb	short loc_7F819FCB
		mov	eax, 0FE00h

loc_7F819FCB:				; CODE XREF: sub_7F819F06+BEj
		lea	ecx, [ebp+var_C]
		mov	[ebp+var_C], eax
		push	[ebp+var_18]
		push	ecx
		push	lpsz
		push	[ebp+var_14]
		call	sub_7F824CAB
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	short loc_7F81A02F
		push	[ebp+var_10]
		push	[ebp+var_C]
		push	lpsz
		push	[ebp+var_14]
		call	sub_7F825278
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	short loc_7F81A02F
		mov	eax, [ebp+var_C]
		add	[ebp+var_18], eax
		add	[ebp+var_10], eax
		sub	edi, eax
		jnz	short loc_7F819FBC

loc_7F81A012:				; CODE XREF: sub_7F819F06+B4j
		push	[ebp+arg_4]
		inc	word ptr [esi+10h]
		dec	word ptr [esi+12h]
		push	dword ptr [ebp+var_2]
		push	ebx
		call	sub_7F81897A
		push	dword ptr [ebp+var_2]
		push	esi
		call	sub_7F818636

loc_7F81A02F:				; CODE XREF: sub_7F819F06+1Fj
					; sub_7F819F06+51j ...
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F819F06	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81A03B	proc near		; CODE XREF: sub_7F81B8F0+78p
					; sub_7F81D598+2A6p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	esi, [eax]
		mov	ecx, [esi]
		test	byte ptr [esi+12h], 1
		mov	ebx, [ecx]
		jnz	short loc_7F81A056
		mov	eax, 203h
		jmp	short loc_7F81A0BA
; ---------------------------------------------------------------------------

loc_7F81A056:				; CODE XREF: sub_7F81A03B+12j
		mov	eax, [esi+6]
		mov	edi, [esp+10h+arg_8]
		add	eax, edi
		mov	ebp, [esi+0Eh]
		cmp	eax, ebp
		jbe	short loc_7F81A085
		add	ebp, 1000h
		cmp	ebp, eax
		ja	short loc_7F81A072
		mov	ebp, eax

loc_7F81A072:				; CODE XREF: sub_7F81A03B+33j
		mov	ax, [esi+4]
		push	ebp
		push	eax
		push	ebx
		call	sub_7F819F06
		test	eax, eax
		jnz	short loc_7F81A0BA
		mov	[esi+0Eh], ebp

loc_7F81A085:				; CODE XREF: sub_7F81A03B+29j
		movsx	edx, word ptr [esi+4]
		mov	eax, [ebx+18h]
		imul	edx, 0Ch
		mov	ecx, [eax]
		mov	eax, [esi+6]
		add	eax, [edx+ecx+12h]
		push	eax
		push	edi
		push	[esp+18h+arg_4]
		push	dword ptr [ebx+14h]
		call	sub_7F825278
		test	eax, eax
		jnz	short loc_7F81A0BA
		mov	ecx, [esi+6]
		add	ecx, edi
		mov	[esi+6], ecx
		cmp	[esi+0Ah], ecx
		jnb	short loc_7F81A0BA
		mov	[esi+0Ah], ecx

loc_7F81A0BA:				; CODE XREF: sub_7F81A03B+19j
					; sub_7F81A03B+45j ...
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_7F81A03B	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81A0C1	proc near		; CODE XREF: sub_7F811095+17p
					; sub_7F81B8F0+8Bp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		push	ebp
		xor	edi, edi
		mov	eax, [esi]
		mov	ebx, [eax]
		mov	ecx, [ebx]
		mov	ebp, [ecx]
		mov	eax, [ebp+18h]
		mov	edx, [eax]
		mov	eax, [ebx+0Ah]
		cmp	[ebx+0Eh], eax
		jz	short loc_7F81A0F7
		mov	dx, [ebx+4]
		push	eax
		push	edx
		push	ecx
		call	sub_7F818578
		mov	edi, eax
		mov	ecx, [ebp+18h]
		test	edi, edi
		mov	edx, [ecx]
		jnz	short loc_7F81A128

loc_7F81A0F7:				; CODE XREF: sub_7F81A0C1+1Dj
		mov	ax, [ebx+4]
		mov	ecx, [esp+10h+arg_4]
		mov	[ecx], ax
		test	byte ptr [edx+2], 1
		jz	short loc_7F81A118
		mov	eax, [ebx+0Ah]
		dec	eax
		push	eax
		push	0
		push	ecx
		push	ebp
		call	sub_7F818F46
		mov	edi, eax

loc_7F81A118:				; CODE XREF: sub_7F81A0C1+45j
		test	edi, edi
		jnz	short loc_7F81A128
		test	byte ptr [ebx+12h], 3
		jz	short loc_7F81A128
		and	word ptr [ebp+4], 0BFFFh

loc_7F81A128:				; CODE XREF: sub_7F81A0C1+34j
					; sub_7F81A0C1+59j ...
		xor	ebx, ebx
		test	edi, edi
		jnz	short loc_7F81A137
		push	dword ptr [esi]
		call	sub_7F82F1E1
		mov	[esi], ebx

loc_7F81A137:				; CODE XREF: sub_7F81A0C1+6Bj
		mov	eax, edi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F81A0C1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81A140	proc near		; CODE XREF: sub_7F818B33+2Cp
					; sub_7F818B75+130p ...

var_20		= byte ptr -20h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch
arg_8		= word ptr  10h
arg_C		= word ptr  14h

		push	ebp
		mov	ax, [esp+arg_C]
		mov	ebp, esp
		sub	esp, 20h
		cmp	ax, [ebp+arg_4]
		push	ebx
		mov	[ebp+var_8], 0
		push	esi
		push	edi
		jz	loc_7F81A30D
		cmp	[ebp+arg_8], 1
		jle	short loc_7F81A178
		movsx	eax, [ebp+arg_8]
		imul	eax, 0Ch
		push	0
		push	eax
		call	sub_7F82F03B
		mov	[ebp+var_8], eax

loc_7F81A178:				; CODE XREF: sub_7F81A140+24j
		cmp	[ebp+var_8], 0
		mov	ax, [ebp+arg_4]
		jz	loc_7F81A23F
		sub	ax, [ebp+arg_C]
		mov	[ebp+var_2], ax
		jns	short loc_7F81A1C8
		mov	ax, [ebp+arg_8]
		movsx	ecx, [ebp+arg_4]
		sub	[ebp+arg_C], ax
		mov	esi, [ebp+arg_0]
		mov	ax, [ebp+var_2]
		movsx	edi, [ebp+arg_8]
		add	ax, [ebp+arg_8]
		neg	ax
		mov	[ebp+var_2], ax
		lea	eax, [edi+ecx]
		imul	eax, 0Ch
		imul	ecx, 0Ch
		lea	ebx, [eax+esi+0Eh]
		lea	eax, [ecx+esi+0Eh]
		mov	[ebp+var_C], eax
		jmp	short loc_7F81A1E9
; ---------------------------------------------------------------------------

loc_7F81A1C8:				; CODE XREF: sub_7F81A140+4Ej
		movsx	ecx, [ebp+arg_C]
		mov	eax, ecx
		mov	esi, [ebp+arg_0]
		imul	eax, 0Ch
		movsx	edi, [ebp+arg_8]
		lea	ebx, [eax+esi+0Eh]
		lea	eax, [ecx+edi]
		imul	eax, 0Ch
		lea	ecx, [eax+esi+0Eh]
		mov	[ebp+var_C], ecx

loc_7F81A1E9:				; CODE XREF: sub_7F81A140+86j
		imul	edi, 0Ch
		movsx	eax, [ebp+arg_4]
		imul	eax, 0Ch
		push	edi
		add	eax, esi
		add	eax, 0Eh
		push	eax
		push	[ebp+var_8]
		call	sub_7F82FCE0
		movsx	eax, [ebp+var_2]
		add	esp, 0Ch
		imul	eax, 0Ch
		push	eax
		push	ebx
		push	[ebp+var_C]
		call	sub_7F82FCE0
		movsx	eax, [ebp+arg_C]
		imul	eax, 0Ch
		add	esp, 0Ch
		add	eax, esi
		add	eax, 0Eh
		push	edi
		push	[ebp+var_8]
		push	eax
		call	sub_7F82FCE0
		add	esp, 0Ch
		push	[ebp+var_8]
		call	sub_7F82F149
		jmp	loc_7F81A30D
; ---------------------------------------------------------------------------

loc_7F81A23F:				; CODE XREF: sub_7F81A140+40j
		sub	ax, [ebp+arg_C]
		mov	[ebp+var_2], ax
		jns	short loc_7F81A289
		movsx	edx, [ebp+arg_8]
		movsx	ebx, [ebp+arg_4]
		mov	cx, 0FFFFh
		add	edx, ebx
		add	ax, [ebp+arg_8]
		mov	esi, [ebp+arg_0]
		neg	ax
		imul	edx, 0Ch
		mov	[ebp+var_2], ax
		lea	eax, [edx+esi+2]
		movsx	edx, [ebp+var_2]
		imul	edx, 0Ch
		mov	[ebp+var_10], eax
		add	eax, edx
		mov	edx, [ebp+var_10]
		mov	[ebp+var_8], eax
		mov	[ebp+var_C], edx
		add	edx, 0Ch
		mov	[ebp+var_14], edx
		jmp	short loc_7F81A2B9
; ---------------------------------------------------------------------------

loc_7F81A289:				; CODE XREF: sub_7F81A140+107j
		movsx	eax, [ebp+arg_C]
		imul	eax, 0Ch
		mov	cx, 1
		mov	esi, [ebp+arg_0]
		lea	edx, [eax+esi+0Eh]
		mov	[ebp+var_8], edx
		movsx	edx, [ebp+var_2]
		imul	edx, 0Ch
		mov	eax, [ebp+var_8]
		add	eax, edx
		mov	edx, [ebp+var_8]
		mov	[ebp+var_10], eax
		mov	[ebp+var_14], edx
		add	edx, 0Ch
		mov	[ebp+var_C], edx

loc_7F81A2B9:				; CODE XREF: sub_7F81A140+147j
		mov	ax, [ebp+arg_8]
		dec	[ebp+arg_8]
		test	ax, ax
		jle	short loc_7F81A30D
		movsx	ebx, cx
		imul	ebx, 0Ch

loc_7F81A2CC:				; CODE XREF: sub_7F81A140+1CBj
		lea	edi, [ebp+var_20]
		mov	esi, [ebp+var_10]
		movsd
		movsd
		movsd
		movsx	eax, [ebp+var_2]
		imul	eax, 0Ch
		push	eax
		lea	esi, [ebp+var_20]
		push	[ebp+var_14]
		push	[ebp+var_C]
		call	sub_7F82FCE0
		add	esp, 0Ch
		mov	edi, [ebp+var_8]
		movsd
		movsd
		movsd
		mov	ax, [ebp+arg_8]
		add	[ebp+var_10], ebx
		dec	[ebp+arg_8]
		add	[ebp+var_8], ebx
		add	[ebp+var_14], ebx
		add	[ebp+var_C], ebx
		test	ax, ax
		jg	short loc_7F81A2CC

loc_7F81A30D:				; CODE XREF: sub_7F81A140+19j
					; sub_7F81A140+FAj ...
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F81A140	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81A318	proc near		; CODE XREF: sub_7F81CCA0+119p

arg_0		= dword	ptr  4
arg_4		= word ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_0]
		push	esi
		mov	eax, [eax]
		mov	ecx, [eax+18h]
		cmp	dword ptr [eax+0Ch], 0
		mov	esi, [ecx]
		jz	short loc_7F81A330
		push	eax
		call	sub_7F818550

loc_7F81A330:				; CODE XREF: sub_7F81A318+10j
		movsx	ecx, [esp+4+arg_4]
		imul	ecx, 0Ch
		mov	eax, [esp+4+arg_8]
		mov	[ecx+esi+0Eh], eax
		pop	esi
		retn	0Ch
sub_7F81A318	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81A344	proc near		; CODE XREF: sub_7F81BF33+126p
					; sub_7F81C56F+21Cp

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 0Ch
		mov	ecx, [eax]
		push	ebx
		push	esi
		push	edi
		mov	edx, [ecx+18h]
		mov	ebx, [ebp+arg_C]
		mov	[ebp+var_2], 0
		mov	eax, [edx]
		mov	ecx, [ebp+arg_8]
		mov	di, [ecx]
		mov	[ebp+var_C], eax
		test	di, di
		jle	short loc_7F81A3D2
		mov	esi, [ebp+arg_4]

loc_7F81A372:				; CODE XREF: sub_7F81A344+8Cj
		push	dword ptr [ebp+var_2]
		push	dword ptr [esi]
		push	[ebp+var_C]
		call	sub_7F819486
		mov	[ebx], ax
		test	ax, ax
		jge	short loc_7F81A3C1
		mov	eax, [ebp+arg_8]
		dec	word ptr [eax]
		cmp	di, 1
		jle	short loc_7F81A3C5
		mov	ecx, [esi]
		sub	ebx, 2
		movsx	eax, di
		mov	[ebp+var_8], ecx
		lea	edx, ds:0FFFFFFFCh[eax*4]
		push	edx
		lea	ecx, [esi+4]
		push	ecx
		push	esi
		sub	esi, 4
		call	sub_7F82FCE0
		movsx	edx, di
		add	esp, 0Ch
		mov	ecx, [ebp+var_8]
		mov	[esi+edx*4], ecx
		jmp	short loc_7F81A3C5
; ---------------------------------------------------------------------------

loc_7F81A3C1:				; CODE XREF: sub_7F81A344+41j
		mov	[ebp+var_2], ax

loc_7F81A3C5:				; CODE XREF: sub_7F81A344+4Dj
					; sub_7F81A344+7Bj
		dec	di
		add	esi, 4
		add	ebx, 2
		test	di, di
		jnz	short loc_7F81A372

loc_7F81A3D2:				; CODE XREF: sub_7F81A344+29j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F81A344	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81A3DB	proc near		; CODE XREF: sub_7F81BF33+14Cp
					; sub_7F81C56F+3E3p

arg_0		= dword	ptr  4
arg_4		= word ptr  8

		push	ebx
		push	esi
		mov	si, [esp+8+arg_4]
		push	edi
		dec	si
		push	ebp
		test	si, si
		mov	ebp, [esp+10h+arg_0]
		jle	short loc_7F81A426

loc_7F81A3EF:				; CODE XREF: sub_7F81A3DB+49j
		mov	ebx, ebp
		add	ebp, 2
		mov	di, [ebp+0]

loc_7F81A3F8:				; CODE XREF: sub_7F81A3DB+29j
		cmp	[ebx], di
		jle	short loc_7F81A406
		sub	ebx, 2
		cmp	ebx, [esp+10h+arg_0]
		jnb	short loc_7F81A3F8

loc_7F81A406:				; CODE XREF: sub_7F81A3DB+20j
		add	ebx, 2
		cmp	ebp, ebx
		jz	short loc_7F81A422
		mov	eax, ebp
		lea	ecx, [ebx+2]
		sub	eax, ebx
		push	eax
		push	ebx
		push	ecx
		call	sub_7F82FCE0
		mov	[ebx], di
		add	esp, 0Ch

loc_7F81A422:				; CODE XREF: sub_7F81A3DB+30j
		dec	si
		jnz	short loc_7F81A3EF

loc_7F81A426:				; CODE XREF: sub_7F81A3DB+12j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F81A3DB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81A42D	proc near		; CODE XREF: sub_7F81BF33+15Dp
					; sub_7F81C56F+3F4p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= word ptr  14h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 10h
		mov	ecx, [eax]
		push	ebx
		push	esi
		mov	[ebp+var_8], ecx
		push	edi
		mov	eax, [ecx+18h]
		cmp	dword ptr [ecx+0Ch], 0
		mov	esi, [eax]
		jz	short loc_7F81A450
		push	ecx
		call	sub_7F818550

loc_7F81A450:				; CODE XREF: sub_7F81A42D+1Bj
		movsx	eax, word ptr [esi]
		movsx	ecx, [ebp+arg_C]
		push	20h
		sub	eax, ecx
		imul	eax, 0Ch
		add	eax, 0Eh
		push	eax
		call	sub_7F82F18D
		mov	[ebp+var_C], eax
		test	eax, eax
		jnz	short loc_7F81A478
		mov	eax, 400h
		jmp	loc_7F81A576
; ---------------------------------------------------------------------------

loc_7F81A478:				; CODE XREF: sub_7F81A42D+3Fj
		mov	eax, [ebp+var_C]
		push	0Eh
		push	esi
		xor	ebx, ebx
		mov	edi, [eax]
		push	edi
		call	sub_7F82FCE0
		mov	cx, [ebp+arg_C]
		add	esp, 0Ch
		mov	[ebp+var_2], bx
		lea	eax, [edi+0Eh]
		mov	[ebp+var_4], cx
		mov	[ebp+var_10], eax
		cmp	cx, bx
		jle	loc_7F81A537

loc_7F81A4A6:				; CODE XREF: sub_7F81A42D+104j
		mov	eax, [ebp+arg_4]
		mov	ax, [eax]
		cmp	bx, ax
		jge	short loc_7F81A4EB
		movsx	eax, ax
		movsx	ecx, bx
		sub	eax, ecx
		imul	eax, 0Ch
		push	eax
		movsx	eax, bx
		imul	eax, 0Ch
		add	eax, esi
		add	eax, 0Eh
		push	eax
		push	[ebp+var_10]
		call	sub_7F82FCE0
		add	esp, 0Ch
		mov	ecx, [ebp+arg_4]
		mov	ax, [ecx]
		movsx	edx, ax
		movsx	ecx, bx
		mov	bx, ax
		sub	edx, ecx
		imul	edx, 0Ch
		add	[ebp+var_10], edx

loc_7F81A4EB:				; CODE XREF: sub_7F81A42D+82j
					; sub_7F81A42D+FDj
		movsx	eax, bx
		dec	[ebp+var_4]
		mov	ecx, [ebp+arg_8]
		imul	eax, 0Ch
		mov	edx, [eax+esi+0Eh]
		add	[ebp+arg_8], 8
		mov	ax, bx
		mov	[ecx+4], edx
		add	[ebp+arg_4], 2
		inc	bx
		sub	ax, [ebp+var_2]
		mov	word ptr [ecx],	3
		mov	[ecx+2], ax
		inc	[ebp+var_2]
		cmp	[ebp+var_4], 0
		jle	short loc_7F81A537
		mov	eax, [ebp+arg_4]
		cmp	[eax], bx
		jz	short loc_7F81A4EB
		cmp	[ebp+var_4], 0
		jg	loc_7F81A4A6

loc_7F81A537:				; CODE XREF: sub_7F81A42D+73j
					; sub_7F81A42D+F5j
		mov	cx, [esi]
		cmp	bx, cx
		jge	short loc_7F81A55F
		movsx	eax, bx
		movsx	ecx, cx
		sub	ecx, eax
		imul	ecx, 0Ch
		imul	eax, 0Ch
		push	ecx
		add	eax, esi
		add	eax, 0Eh
		push	eax
		push	[ebp+var_10]
		call	sub_7F82FCE0
		add	esp, 0Ch

loc_7F81A55F:				; CODE XREF: sub_7F81A42D+110j
		mov	ax, [ebp+var_2]
		sub	[edi], ax
		xor	eax, eax
		push	eax
		push	eax
		push	[ebp+var_C]
		push	eax
		push	[ebp+var_8]
		call	sub_7F8178D8

loc_7F81A576:				; CODE XREF: sub_7F81A42D+46j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F81A42D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81A57F	proc near		; CODE XREF: sub_7F81C56F+3AAp

var_2C		= byte ptr -2Ch
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_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		xor	ecx, ecx
		mov	ebp, esp
		sub	esp, 2Ch
		mov	[ebp+var_2], cx
		push	ebx
		push	esi
		mov	eax, [ebp+arg_0]
		push	edi
		mov	ebx, [ebp+arg_4]
		mov	edx, [eax]
		mov	eax, [ebx]
		mov	[ebp+var_1C], edx
		mov	[ebp+var_18], eax
		mov	ebx, [edx+18h]
		mov	edx, [ebp+var_18]
		mov	[ebp+var_10], ecx
		mov	eax, [ebx]
		mov	ebx, [edx+18h]
		mov	[ebp+var_20], eax
		cmp	[edx+0Ch], ecx
		mov	eax, [ebx]
		mov	[ebp+var_C], eax
		jz	short loc_7F81A5BF
		push	edx
		call	sub_7F818550

loc_7F81A5BF:				; CODE XREF: sub_7F81A57F+38j
		mov	di, word ptr [ebp+arg_14]
		test	di, di
		jle	loc_7F81A652
		mov	esi, [ebp+arg_8]
		mov	ebx, [ebp+arg_10]

loc_7F81A5D2:				; CODE XREF: sub_7F81A57F+CFj
		mov	ax, [esi]
		lea	ecx, [ebx+4]
		cmp	[ebp+arg_C], 0
		mov	[ebx], ax
		jz	short loc_7F81A5EE
		mov	eax, [ebp+arg_C]
		add	[ebp+arg_C], 4
		mov	edx, [eax]
		mov	[ecx], edx
		jmp	short loc_7F81A5FD
; ---------------------------------------------------------------------------

loc_7F81A5EE:				; CODE XREF: sub_7F81A57F+60j
		movsx	edx, word ptr [esi]
		mov	eax, [ebp+var_20]
		imul	edx, 0Ch
		mov	edx, [edx+eax+0Eh]
		mov	[ecx], edx

loc_7F81A5FD:				; CODE XREF: sub_7F81A57F+6Dj
		push	0
		push	dword ptr [ecx]
		push	[ebp+var_C]
		call	sub_7F819486
		test	ax, ax
		jl	short loc_7F81A61C
		mov	[ebx+2], ax
		or	byte ptr [ebx+1], 80h
		inc	[ebp+var_2]
		jmp	short loc_7F81A643
; ---------------------------------------------------------------------------

loc_7F81A61C:				; CODE XREF: sub_7F81A57F+8Dj
		lea	eax, [ebx+2]
		mov	ecx, [ebp+var_C]
		mov	dx, [ecx]
		push	eax
		mov	cx, [esi]
		push	edx
		push	0
		push	[ebp+var_18]
		push	ecx
		push	[ebp+var_1C]
		call	sub_7F81A850
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	loc_7F81A836

loc_7F81A643:				; CODE XREF: sub_7F81A57F+9Bj
		dec	di
		add	esi, 2
		add	ebx, 8
		test	di, di
		jg	short loc_7F81A5D2
		jmp	short loc_7F81A655
; ---------------------------------------------------------------------------

loc_7F81A652:				; CODE XREF: sub_7F81A57F+47j
		mov	ebx, [ebp+arg_10]

loc_7F81A655:				; CODE XREF: sub_7F81A57F+D1j
		movsx	edx, word ptr [ebp+arg_14]
		lea	eax, ds:0[edx*8]
		mov	ecx, [ebp+var_C]
		sub	ebx, eax
		movsx	esi, [ebp+var_2]
		movsx	eax, word ptr [ecx]
		sub	eax, esi
		add	eax, edx
		cmp	eax, 1519h
		jl	short loc_7F81A683
		mov	[ebp+var_8], 1017h
		jmp	loc_7F81A836
; ---------------------------------------------------------------------------

loc_7F81A683:				; CODE XREF: sub_7F81A57F+F6j
		mov	eax, [ebp+var_20]
		lea	edi, [ebp+var_2C]
		add	eax, 2
		mov	esi, eax
		mov	[ebp+var_14], eax
		movsd
		movsd
		movsw
		mov	esi, [ebp+var_C]
		mov	edi, [ebp+var_14]
		add	esi, 2
		movsd
		movsd
		movsw
		push	[ebp+arg_14]
		push	ebx
		push	[ebp+var_1C]
		call	sub_7F81A8EA
		lea	esi, [ebp+var_2C]
		mov	edi, [ebp+var_14]
		mov	[ebp+var_8], eax
		movsd
		movsd
		movsw
		cmp	[ebp+var_8], 0
		jnz	loc_7F81A836
		mov	eax, [ebp+var_C]
		push	20h
		mov	di, [eax]
		sub	di, [ebp+var_2]
		add	di, word ptr [ebp+arg_14]
		movsx	eax, di
		imul	eax, 0Ch
		add	eax, 0Eh
		push	eax
		call	sub_7F82F18D
		mov	[ebp+var_10], eax
		test	eax, eax
		jnz	short loc_7F81A6F7
		mov	[ebp+var_8], 400h
		jmp	loc_7F81A836
; ---------------------------------------------------------------------------

loc_7F81A6F7:				; CODE XREF: sub_7F81A57F+16Aj
		mov	eax, [ebp+var_10]
		push	0Eh
		push	[ebp+var_C]
		mov	esi, [eax]
		push	esi
		call	sub_7F82FCE0
		mov	ax, word ptr [ebp+arg_14]
		add	esp, 0Ch
		mov	word ptr [ebp+var_14+2], 0
		mov	[esi], di
		add	esi, 0Eh
		xor	di, di
		mov	[ebp+var_2], ax
		cmp	ax, di
		jle	loc_7F81A7F1

loc_7F81A72A:				; CODE XREF: sub_7F81A57F+26Cj
		mov	ax, [ebx+2]
		cmp	di, ax
		jge	short loc_7F81A769
		movsx	eax, ax
		movsx	ecx, di
		sub	eax, ecx
		imul	eax, 0Ch
		push	eax
		movsx	eax, di
		imul	eax, 0Ch
		add	eax, [ebp+var_C]
		add	eax, 0Eh
		push	eax
		push	esi
		call	sub_7F82FCE0
		mov	ax, [ebx+2]
		add	esp, 0Ch
		movsx	edx, ax
		movsx	ecx, di
		mov	di, ax
		sub	edx, ecx
		imul	edx, 0Ch
		add	esi, edx

loc_7F81A769:				; CODE XREF: sub_7F81A57F+1B2j
		mov	word ptr [ebp+var_8+2],	0
		cmp	[ebp+var_2], 0
		jle	short loc_7F81A7E2

loc_7F81A776:				; CODE XREF: sub_7F81A57F+261j
		mov	ax, [ebx+2]
		cmp	di, ax
		jnz	short loc_7F81A7E2
		add	ax, word ptr [ebp+var_14+2]
		xor	ecx, ecx
		mov	[ebx+2], ax
		push	0Ch
		mov	cx, [ebx]
		mov	eax, [ebp+var_20]
		and	ecx, 7FFFh
		imul	ecx, 0Ch
		lea	eax, [ecx+eax+0Eh]
		push	eax
		push	esi
		call	sub_7F82FCE0
		or	byte ptr [esi+7], 80h
		add	esp, 0Ch
		cmp	[ebp+arg_C], 0
		jz	short loc_7F81A7B7
		mov	eax, [ebx+4]
		mov	[esi], eax

loc_7F81A7B7:				; CODE XREF: sub_7F81A57F+231j
		cmp	word ptr [ebx],	0
		jge	short loc_7F81A7C8
		inc	word ptr [ebp+var_8+2]
		mov	word ptr [ebx],	2
		jmp	short loc_7F81A7D1
; ---------------------------------------------------------------------------

loc_7F81A7C8:				; CODE XREF: sub_7F81A57F+23Cj
		mov	word ptr [ebx],	1
		inc	word ptr [ebp+var_14+2]

loc_7F81A7D1:				; CODE XREF: sub_7F81A57F+247j
		add	ebx, 8
		dec	[ebp+var_2]
		add	esi, 0Ch
		cmp	[ebp+var_2], 0
		jg	short loc_7F81A776

loc_7F81A7E2:				; CODE XREF: sub_7F81A57F+1F5j
					; sub_7F81A57F+1FEj
		add	di, word ptr [ebp+var_8+2]
		cmp	[ebp+var_2], 0
		jg	loc_7F81A72A

loc_7F81A7F1:				; CODE XREF: sub_7F81A57F+1A5j
		mov	eax, [ebp+var_C]
		mov	cx, [eax]
		cmp	di, cx
		jge	short loc_7F81A81B
		movsx	eax, di
		movsx	ecx, cx
		sub	ecx, eax
		imul	ecx, 0Ch
		imul	eax, 0Ch
		push	ecx
		add	eax, [ebp+var_C]
		add	eax, 0Eh
		push	eax
		push	esi
		call	sub_7F82FCE0
		add	esp, 0Ch

loc_7F81A81B:				; CODE XREF: sub_7F81A57F+27Bj
		xor	esi, esi
		mov	eax, [ebp+var_1C]
		push	esi
		push	dword ptr [eax+14h]
		push	[ebp+var_10]
		push	esi
		push	[ebp+var_18]
		call	sub_7F8178D8
		mov	[ebp+var_8], eax
		mov	[ebp+var_10], esi

loc_7F81A836:				; CODE XREF: sub_7F81A57F+BEj
					; sub_7F81A57F+FFj ...
		cmp	[ebp+var_10], 0
		jz	short loc_7F81A844
		push	[ebp+var_10]
		call	sub_7F82F1E1

loc_7F81A844:				; CODE XREF: sub_7F81A57F+2BBj
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F81A57F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81A850	proc near		; CODE XREF: sub_7F81A57F+B4p

var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	edx, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 4
		mov	eax, [edx+18h]
		push	ebx
		push	esi
		mov	ecx, [ebp+arg_8]
		push	edi
		xor	esi, esi
		mov	ebx, [eax]
		mov	eax, [ecx+18h]
		mov	edi, [eax]
		xor	eax, eax
		mov	ax, [edi+2]
		and	eax, 3
		jz	short loc_7F81A894
		cmp	eax, 2
		jz	short loc_7F81A89A
		lea	eax, [ebp+var_2]
		push	eax
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	ecx
		push	[ebp+arg_4]
		push	edx
		call	sub_7F81942B
		mov	esi, eax
		jmp	short loc_7F81A8B5
; ---------------------------------------------------------------------------

loc_7F81A894:				; CODE XREF: sub_7F81A850+25j
		mov	ax, [edi+4]
		jmp	short loc_7F81A8B1
; ---------------------------------------------------------------------------

loc_7F81A89A:				; CODE XREF: sub_7F81A850+2Aj
		push	[ebp+arg_10]
		movsx	eax, word ptr [ebp+arg_4]
		imul	eax, 0Ch
		push	[ebp+arg_C]
		push	dword ptr [eax+ebx+0Eh]
		push	edi
		call	sub_7F818CB6

loc_7F81A8B1:				; CODE XREF: sub_7F81A850+48j
		mov	[ebp+var_2], ax

loc_7F81A8B5:				; CODE XREF: sub_7F81A850+42j
		test	esi, esi
		jnz	short loc_7F81A8D5
		mov	ax, word ptr [ebp+arg_C]
		cmp	ax, [ebp+var_2]
		jg	short loc_7F81A8CD
		mov	ax, word ptr [ebp+arg_10]
		cmp	[ebp+var_2], ax
		jle	short loc_7F81A8D5

loc_7F81A8CD:				; CODE XREF: sub_7F81A850+71j
		mov	ax, word ptr [ebp+arg_10]
		mov	[ebp+var_2], ax

loc_7F81A8D5:				; CODE XREF: sub_7F81A850+67j
					; sub_7F81A850+7Bj
		mov	cx, [ebp+var_2]
		mov	eax, [ebp+arg_14]
		mov	[eax], cx
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F81A850	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81A8EA	proc near		; CODE XREF: sub_7F81A57F+12Ap

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		= word ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		xor	esi, esi
		mov	edi, [ebp+arg_4]
		mov	ecx, [eax+18h]
		mov	[ebp+var_4], esi
		mov	edx, [ecx]
		test	byte ptr [edx+2], 1
		jz	short loc_7F81A910
		mov	[ebp+var_4], 1

loc_7F81A910:				; CODE XREF: sub_7F81A8EA+1Dj
		dec	[ebp+arg_8]
		cmp	[ebp+arg_8], 0
		jle	loc_7F81A9AA

loc_7F81A91F:				; CODE XREF: sub_7F81A8EA+BAj
		mov	ebx, edi
		add	edi, 8

loc_7F81A924:				; CODE XREF: sub_7F81A8EA+80j
		mov	cx, [edi+2]
		mov	ax, [ebx+2]
		cmp	cx, ax
		jl	short loc_7F81A964
		jg	short loc_7F81A96C
		cmp	[ebp+var_4], 0
		jz	short loc_7F81A96C
		lea	eax, [ebp+var_10]
		push	eax
		mov	ax, [ebx]
		and	ax, 7FFFh
		push	eax
		mov	ax, [edi]
		push	[ebp+arg_0]
		and	ax, 7FFFh
		push	eax
		push	[ebp+arg_0]
		call	sub_7F81917E
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81A9AA
		cmp	[ebp+var_10], 0FFFFFFFFh
		jnz	short loc_7F81A96C

loc_7F81A964:				; CODE XREF: sub_7F81A8EA+45j
		sub	ebx, 8
		cmp	ebx, [ebp+arg_4]
		jnb	short loc_7F81A924

loc_7F81A96C:				; CODE XREF: sub_7F81A8EA+47j
					; sub_7F81A8EA+4Dj ...
		add	ebx, 8
		cmp	edi, ebx
		jz	short loc_7F81A99B
		mov	eax, [edi]
		mov	ecx, [edi+4]
		mov	[ebp+var_C], eax
		mov	eax, edi
		sub	eax, ebx
		mov	[ebp+var_8], ecx
		push	eax
		lea	ecx, [ebx+8]
		push	ebx
		push	ecx
		call	sub_7F82FCE0
		add	esp, 0Ch
		mov	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ebx], eax
		mov	[ebx+4], ecx

loc_7F81A99B:				; CODE XREF: sub_7F81A8EA+87j
		dec	[ebp+arg_8]
		cmp	[ebp+arg_8], 0
		jg	loc_7F81A91F

loc_7F81A9AA:				; CODE XREF: sub_7F81A8EA+2Fj
					; sub_7F81A8EA+72j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F81A8EA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81A9B5	proc near		; CODE XREF: sub_7F822DB9:loc_7F822E67p
					; sub_7F823594+EDp

var_C		= dword	ptr -0Ch
Buffer		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ecx, [esp+arg_C]
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	edi, [ebp+arg_4]
		mov	[ecx], ebx
		add	edi, 8
		cmp	[ebp+arg_0], ebx
		jz	short loc_7F81AA16
		mov	eax, 253h
		cmp	dword_7F838078,	ebx
		jnz	short loc_7F81AA0E
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	edx, [ebp+arg_0]
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edx
		xor	eax, eax

loc_7F81AA0E:				; CODE XREF: sub_7F81A9B5+27j
		test	eax, eax
		jnz	loc_7F81ABA4

loc_7F81AA16:				; CODE XREF: sub_7F81A9B5+1Aj
		cmp	[ebp+arg_8], 12h
		jnb	short loc_7F81AA26
		mov	esi, 1015h
		jmp	loc_7F81AB64
; ---------------------------------------------------------------------------

loc_7F81AA26:				; CODE XREF: sub_7F81A9B5+65j
		lea	eax, [ebp+var_C]
		lea	ecx, [ebp+Buffer]
		mov	[ebp+var_C], 4
		push	eax		; int
		push	edi		; lDistanceToMove
		push	ecx		; lpBuffer
		call	sub_7F8127E7
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81AB64
		mov	eax, [ebp+arg_8]
		sub	eax, 0Eh
		cmp	eax, [ebp+Buffer]
		jnb	short loc_7F81AA5A
		mov	esi, 1002h
		jmp	loc_7F81AB64
; ---------------------------------------------------------------------------

loc_7F81AA5A:				; CODE XREF: sub_7F81A9B5+99j
		cmp	[ebp+Buffer], 4
		jnb	short loc_7F81AA6A
		mov	esi, 1015h
		jmp	loc_7F81AB64
; ---------------------------------------------------------------------------

loc_7F81AA6A:				; CODE XREF: sub_7F81A9B5+A9j
		lea	eax, [ebp+var_C]
		lea	ecx, [ebp+var_2]
		mov	[ebp+var_C], 2
		push	eax		; int
		mov	eax, [ebp+Buffer]
		add	eax, edi
		push	eax		; lDistanceToMove
		push	ecx		; lpBuffer
		call	sub_7F8127E7
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81AB64
		cmp	[ebp+var_2], 1519h
		jb	short loc_7F81AAA0
		mov	esi, 1015h
		jmp	loc_7F81AB64
; ---------------------------------------------------------------------------

loc_7F81AAA0:				; CODE XREF: sub_7F81A9B5+DFj
		movsx	eax, [ebp+var_2]
		imul	eax, 0Ch
		add	eax, 0Eh
		mov	ecx, [ebp+arg_C]
		mov	[ebp+var_C], eax
		add	eax, [ebp+Buffer]
		mov	[ecx], eax
		cmp	[ebp+arg_8], eax
		jnb	short loc_7F81AAC4
		mov	esi, 1002h
		jmp	loc_7F81AB64
; ---------------------------------------------------------------------------

loc_7F81AAC4:				; CODE XREF: sub_7F81A9B5+103j
		push	0
		push	[ebp+var_C]
		call	sub_7F82F03B
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F81AADE
		mov	esi, 400h
		jmp	loc_7F81AB64
; ---------------------------------------------------------------------------

loc_7F81AADE:				; CODE XREF: sub_7F81A9B5+11Dj
		lea	eax, [ebp+var_C]
		push	eax		; int
		mov	eax, [ebp+Buffer]
		add	eax, edi
		push	eax		; lDistanceToMove
		push	ebx		; lpBuffer
		call	sub_7F8127E7
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81AB64
		movsx	eax, [ebp+var_2]
		imul	eax, 0Ch
		xor	ecx, ecx
		mov	edx, 4
		lea	edi, [eax+ebx+2]
		mov	ax, [ebp+var_2]
		dec	[ebp+var_2]
		test	ax, ax
		jle	short loc_7F81AB39

loc_7F81AB13:				; CODE XREF: sub_7F81A9B5+182j
		mov	eax, [edi+4]
		add	ecx, edx
		cmp	ecx, eax
		jnz	short loc_7F81AB47
		mov	edx, [edi+8]
		lea	ecx, [edx+eax]
		cmp	ecx, [ebp+Buffer]
		ja	short loc_7F81AB4E
		mov	ecx, eax
		sub	edi, 0Ch
		mov	ax, [ebp+var_2]
		dec	[ebp+var_2]
		test	ax, ax
		jg	short loc_7F81AB13

loc_7F81AB39:				; CODE XREF: sub_7F81A9B5+15Cj
		add	edx, ecx
		cmp	edx, [ebp+Buffer]
		jz	short loc_7F81AB55
		mov	esi, 1015h
		jmp	short loc_7F81AB64
; ---------------------------------------------------------------------------

loc_7F81AB47:				; CODE XREF: sub_7F81A9B5+165j
		mov	esi, 1015h
		jmp	short loc_7F81AB64
; ---------------------------------------------------------------------------

loc_7F81AB4E:				; CODE XREF: sub_7F81A9B5+170j
		mov	esi, 1015h
		jmp	short loc_7F81AB64
; ---------------------------------------------------------------------------

loc_7F81AB55:				; CODE XREF: sub_7F81A9B5+189j
		mov	ecx, [ebp+arg_C]
		mov	eax, [ebp+arg_8]
		cmp	[ecx], eax
		jnb	short loc_7F81AB64
		mov	esi, 1017h

loc_7F81AB64:				; CODE XREF: sub_7F81A9B5+6Cj
					; sub_7F81A9B5+8Aj ...
		test	ebx, ebx
		jz	short loc_7F81AB6E
		push	ebx
		call	sub_7F82F149

loc_7F81AB6E:				; CODE XREF: sub_7F81A9B5+1B1j
		cmp	[ebp+arg_0], 0
		jz	short loc_7F81ABA2
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F81AB8A
		call	sub_7F82A34F
		jmp	short loc_7F81AB98
; ---------------------------------------------------------------------------

loc_7F81AB8A:				; CODE XREF: sub_7F81A9B5+1CCj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F81AB98:				; CODE XREF: sub_7F81A9B5+1D3j
		mov	dword_7F838078,	0

loc_7F81ABA2:				; CODE XREF: sub_7F81A9B5+1BDj
		mov	eax, esi

loc_7F81ABA4:				; CODE XREF: sub_7F81A9B5+5Bj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F81A9B5	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81ABAD	proc near		; CODE XREF: sub_7F815497+39p
					; sub_7F815497+66p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	edx, [esp+arg_0]
		push	ebx
		mov	eax, [esp+4+arg_4]

loc_7F81ABB6:				; CODE XREF: sub_7F81ABAD+20j
		mov	ecx, [esp+4+arg_8]
		dec	[esp+4+arg_8]
		cmp	ecx, 1
		jbe	short loc_7F81ABD2
		mov	ecx, eax
		mov	bl, [edx]
		inc	eax
		inc	edx
		mov	[ecx], bl
		test	bl, bl
		jnz	short loc_7F81ABB6
		dec	eax
		jmp	short loc_7F81ABD5
; ---------------------------------------------------------------------------

loc_7F81ABD2:				; CODE XREF: sub_7F81ABAD+14j
		mov	byte ptr [eax],	0

loc_7F81ABD5:				; CODE XREF: sub_7F81ABAD+23j
		pop	ebx
		retn	0Ch
sub_7F81ABAD	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F81ABD9(int, LPCSTR lpString, int)
sub_7F81ABD9	proc near		; CODE XREF: sub_7F815497+54p

arg_0		= dword	ptr  4
lpString	= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+lpString]
		push	esi		; lpString
		call	ds:lstrlenA
		mov	ecx, [esp+4+arg_8]
		cmp	eax, ecx
		jb	short loc_7F81ABF8
		lea	esi, [ecx+esi-1]
		mov	eax, esi
		mov	byte ptr [esi],	0
		jmp	short loc_7F81AC07
; ---------------------------------------------------------------------------

loc_7F81ABF8:				; CODE XREF: sub_7F81ABD9+12j
		sub	ecx, eax
		add	eax, esi
		push	ecx
		push	eax
		push	[esp+0Ch+arg_0]
		call	sub_7F81ABAD

loc_7F81AC07:				; CODE XREF: sub_7F81ABD9+1Dj
		pop	esi
		retn	0Ch
sub_7F81ABD9	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F81AC0B(LPCSTR lpString, int, int)
sub_7F81AC0B	proc near		; CODE XREF: sub_7F81B34C+34p

lpString	= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		mov	esi, [esp+8+lpString]
		push	edi
		mov	ebx, esi
		mov	edi, esi
		cmp	[esp+0Ch+arg_4], 0
		mov	edx, esi
		jz	short loc_7F81AC42
		mov	ecx, dword_7F833F1C
		movzx	eax, byte ptr [esi]
		test	byte ptr [eax+ecx], 8
		jz	short loc_7F81AC3E

loc_7F81AC2E:				; CODE XREF: sub_7F81AC0B+31j
		inc	edx
		mov	ecx, dword_7F833F1C
		movzx	eax, byte ptr [edx]
		test	byte ptr [eax+ecx], 8
		jnz	short loc_7F81AC2E

loc_7F81AC3E:				; CODE XREF: sub_7F81AC0B+21j
		mov	ebx, edx
		mov	edi, edx

loc_7F81AC42:				; CODE XREF: sub_7F81AC0B+12j
		cmp	[esp+0Ch+arg_8], 0
		jnz	short loc_7F81AC54
		push	edi		; lpString
		call	ds:lstrlenA
		mov	ebx, eax
		jmp	short loc_7F81AC75
; ---------------------------------------------------------------------------

loc_7F81AC54:				; CODE XREF: sub_7F81AC0B+3Cj
		cmp	byte ptr [edx],	0
		jz	short loc_7F81AC73

loc_7F81AC59:				; CODE XREF: sub_7F81AC0B+66j
		mov	ecx, dword_7F833F1C
		movzx	eax, byte ptr [edx]
		test	byte ptr [eax+ecx], 8
		jz	short loc_7F81AC6B
		inc	edx
		jmp	short loc_7F81AC6E
; ---------------------------------------------------------------------------

loc_7F81AC6B:				; CODE XREF: sub_7F81AC0B+5Bj
		inc	edx
		mov	ebx, edx

loc_7F81AC6E:				; CODE XREF: sub_7F81AC0B+5Ej
		cmp	byte ptr [edx],	0
		jnz	short loc_7F81AC59

loc_7F81AC73:				; CODE XREF: sub_7F81AC0B+4Cj
		sub	ebx, edi

loc_7F81AC75:				; CODE XREF: sub_7F81AC0B+47j
		cmp	edi, esi
		jz	short loc_7F81AC84
		push	ebx
		push	edi
		push	esi
		call	sub_7F82FCE0
		add	esp, 0Ch

loc_7F81AC84:				; CODE XREF: sub_7F81AC0B+6Cj
		mov	eax, ebx
		pop	edi
		mov	byte ptr [ebx+esi], 0
		pop	esi
		pop	ebx
		retn	0Ch
sub_7F81AC0B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81AC90	proc near		; CODE XREF: sub_7F81ADC3+C2p
					; sub_7F81ADC3+D4p

var_10		= byte ptr -10h
var_F		= byte ptr -0Fh
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, 10h
		push	ebx
		push	esi
		push	edi
		lea	esi, [ebp+var_10]
		xor	edi, edi
		xor	ebx, ebx
		cmp	[ebp+arg_8], ebx
		jnz	short loc_7F81ACAD
		mov	eax, [ebp+arg_4]
		jmp	loc_7F81AD56
; ---------------------------------------------------------------------------

loc_7F81ACAD:				; CODE XREF: sub_7F81AC90+13j
		mov	ecx, [ebp+arg_0]
		test	ecx, ecx
		jge	short loc_7F81ACEC
		mov	ebx, 1
		mov	esi, 0Ah
		mov	eax, ecx
		cdq
		idiv	esi
		mov	eax, edx
		lea	esi, [ebp+var_F]
		cdq
		xor	eax, edx
		mov	edi, ebx
		sub	eax, edx
		movzx	eax, ax
		mov	[ebp+var_4], 0Ah
		mov	al, byte_7F8367B8[eax]
		mov	[ebp+var_10], al
		mov	eax, ecx
		cdq
		idiv	[ebp+var_4]
		mov	ecx, eax
		neg	ecx

loc_7F81ACEC:				; CODE XREF: sub_7F81AC90+22j
		test	ebx, ebx
		jz	short loc_7F81AD04
		mov	eax, [ebp+arg_8]
		dec	[ebp+arg_8]
		cmp	eax, 1
		jbe	short loc_7F81AD04
		mov	eax, [ebp+arg_4]
		inc	[ebp+arg_4]
		mov	byte ptr [eax],	2Dh

loc_7F81AD04:				; CODE XREF: sub_7F81AC90+5Ej
					; sub_7F81AC90+69j ...
		test	ecx, ecx
		jg	short loc_7F81AD0C
		test	edi, edi
		jnz	short loc_7F81AD2C

loc_7F81AD0C:				; CODE XREF: sub_7F81AC90+76j
		mov	eax, ecx
		mov	ebx, 0Ah
		cdq
		idiv	ebx
		movzx	eax, dx
		inc	edi
		mov	al, byte_7F8367B8[eax]
		mov	[esi], al
		inc	esi
		mov	eax, ecx
		cdq
		idiv	ebx
		mov	ecx, eax
		jmp	short loc_7F81AD04
; ---------------------------------------------------------------------------

loc_7F81AD2C:				; CODE XREF: sub_7F81AC90+7Aj
		lea	eax, [ebp+var_10]
		cmp	esi, eax
		jbe	short loc_7F81AD50

loc_7F81AD33:				; CODE XREF: sub_7F81AC90+BEj
		mov	eax, [ebp+arg_8]
		dec	[ebp+arg_8]
		cmp	eax, 1
		jbe	short loc_7F81AD50
		dec	esi
		mov	eax, [ebp+arg_4]
		lea	edx, [ebp+var_10]
		inc	[ebp+arg_4]
		mov	cl, [esi]
		cmp	esi, edx
		mov	[eax], cl
		ja	short loc_7F81AD33

loc_7F81AD50:				; CODE XREF: sub_7F81AC90+A1j
					; sub_7F81AC90+ACj
		mov	eax, [ebp+arg_4]
		mov	byte ptr [eax],	0

loc_7F81AD56:				; CODE XREF: sub_7F81AC90+18j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F81AC90	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81AD5F	proc near		; CODE XREF: sub_7F81ADC3:loc_7F81AEBEp

var_8		= byte ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	edx, [esp+arg_C]
		mov	ebp, esp
		sub	esp, 8
		test	edx, edx
		push	ebx
		push	esi
		push	edi
		jnz	short loc_7F81AD75
		mov	eax, [ebp+arg_8]
		jmp	short loc_7F81ADBA
; ---------------------------------------------------------------------------

loc_7F81AD75:				; CODE XREF: sub_7F81AD5F+Fj
		lea	esi, [ebp+var_8]
		mov	ecx, [ebp+arg_0]
		test	ecx, ecx
		jle	short loc_7F81AD9B
		mov	edi, ecx

loc_7F81AD81:				; CODE XREF: sub_7F81AD5F+3Aj
		mov	eax, [ebp+arg_4]
		and	ax, 0Fh
		shr	[ebp+arg_4], 4
		movzx	ebx, ax
		mov	al, byte_7F8367B8[ebx]
		mov	[esi], al
		inc	esi
		dec	edi
		jnz	short loc_7F81AD81

loc_7F81AD9B:				; CODE XREF: sub_7F81AD5F+1Ej
		xor	edi, edi
		mov	eax, [ebp+arg_8]
		test	ecx, ecx
		jle	short loc_7F81ADB7

loc_7F81ADA4:				; CODE XREF: sub_7F81AD5F+56j
		mov	ebx, edx
		dec	edx
		cmp	ebx, 1
		jbe	short loc_7F81ADB7
		dec	esi
		inc	edi
		mov	bl, [esi]
		mov	[eax], bl
		inc	eax
		cmp	ecx, edi
		jg	short loc_7F81ADA4

loc_7F81ADB7:				; CODE XREF: sub_7F81AD5F+43j
					; sub_7F81AD5F+4Bj
		mov	byte ptr [eax],	0

loc_7F81ADBA:				; CODE XREF: sub_7F81AD5F+14j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F81AD5F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81ADC3	proc near		; CODE XREF: sub_7F81AEE2+1Ap
					; sub_7F81AF07+20p

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, 4
		mov	[ebp+var_4], 0
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_0]
		mov	edi, [ebp+arg_8]
		mov	al, [edi]
		inc	edi
		test	al, al
		jz	loc_7F81AED6
		mov	esi, [ebp+arg_C]

loc_7F81ADE7:				; CODE XREF: sub_7F81ADC3+10Dj
		cmp	[ebp+arg_4], 1
		jbe	loc_7F81AED6
		cmp	al, 25h
		jz	short loc_7F81AE00
		mov	[ebx], al
		dec	[ebp+arg_4]
		inc	ebx
		jmp	loc_7F81AECB
; ---------------------------------------------------------------------------

loc_7F81AE00:				; CODE XREF: sub_7F81ADC3+30j
		mov	al, [edi]
		inc	edi
		cmp	al, 31h
		jb	short loc_7F81AE16
		cmp	al, 34h
		ja	short loc_7F81AE16
		movzx	ecx, al
		sub	ecx, 31h
		mov	al, [edi]
		inc	edi
		jmp	short loc_7F81AE19
; ---------------------------------------------------------------------------

loc_7F81AE16:				; CODE XREF: sub_7F81ADC3+42j
					; sub_7F81ADC3+46j
		mov	ecx, [ebp+var_4]

loc_7F81AE19:				; CODE XREF: sub_7F81ADC3+51j
		movzx	eax, al
		inc	[ebp+var_4]
		cmp	eax, 25h
		jz	short loc_7F81AE52
		cmp	eax, 62h
		jz	short loc_7F81AE60
		cmp	eax, 64h
		jz	short loc_7F81AE6F
		cmp	eax, 6Ch
		jz	short loc_7F81AE7C
		cmp	eax, 6Eh
		jz	short loc_7F81AE8C
		cmp	eax, 73h
		jz	short loc_7F81AE9E
		push	[ebp+arg_4]
		push	ebx
		cmp	eax, 77h
		jz	short loc_7F81AEB5
		push	offset a?fmt	; "?fmt"
		call	sub_7F81ABAD
		jmp	short loc_7F81AEC3
; ---------------------------------------------------------------------------

loc_7F81AE52:				; CODE XREF: sub_7F81ADC3+5Fj
		lea	eax, [ebx+1]
		mov	byte ptr [ebx],	25h
		dec	[ebp+var_4]
		mov	byte ptr [eax],	0
		jmp	short loc_7F81AEC3
; ---------------------------------------------------------------------------

loc_7F81AE60:				; CODE XREF: sub_7F81ADC3+64j
		mov	ecx, [esi+ecx*4]
		push	[ebp+arg_4]
		push	ebx
		movzx	eax, word ptr [ecx]
		push	eax
		push	2
		jmp	short loc_7F81AEBE
; ---------------------------------------------------------------------------

loc_7F81AE6F:				; CODE XREF: sub_7F81ADC3+69j
		mov	ecx, [esi+ecx*4]
		push	[ebp+arg_4]
		push	ebx
		push	dword ptr [ecx]
		push	8
		jmp	short loc_7F81AEBE
; ---------------------------------------------------------------------------

loc_7F81AE7C:				; CODE XREF: sub_7F81ADC3+6Ej
		mov	ecx, [esi+ecx*4]
		push	[ebp+arg_4]
		push	ebx
		push	dword ptr [ecx]
		call	sub_7F81AC90
		jmp	short loc_7F81AEC3
; ---------------------------------------------------------------------------

loc_7F81AE8C:				; CODE XREF: sub_7F81ADC3+73j
		mov	ecx, [esi+ecx*4]
		push	[ebp+arg_4]
		push	ebx
		movsx	eax, word ptr [ecx]
		push	eax
		call	sub_7F81AC90
		jmp	short loc_7F81AEC3
; ---------------------------------------------------------------------------

loc_7F81AE9E:				; CODE XREF: sub_7F81ADC3+78j
		mov	eax, [esi+ecx*4]
		test	eax, eax
		jz	short loc_7F81AEB1
		push	[ebp+arg_4]
		push	ebx
		push	eax
		call	sub_7F81ABAD
		jmp	short loc_7F81AEC3
; ---------------------------------------------------------------------------

loc_7F81AEB1:				; CODE XREF: sub_7F81ADC3+E0j
		mov	eax, ebx
		jmp	short loc_7F81AEC3
; ---------------------------------------------------------------------------

loc_7F81AEB5:				; CODE XREF: sub_7F81ADC3+81j
		mov	ecx, [esi+ecx*4]
		movzx	eax, word ptr [ecx]
		push	eax
		push	4

loc_7F81AEBE:				; CODE XREF: sub_7F81ADC3+AAj
					; sub_7F81ADC3+B7j
		call	sub_7F81AD5F

loc_7F81AEC3:				; CODE XREF: sub_7F81ADC3+8Dj
					; sub_7F81ADC3+9Bj ...
		sub	[ebp+arg_4], eax
		add	[ebp+arg_4], ebx
		mov	ebx, eax

loc_7F81AECB:				; CODE XREF: sub_7F81ADC3+38j
		mov	al, [edi]
		inc	edi
		test	al, al
		jnz	loc_7F81ADE7

loc_7F81AED6:				; CODE XREF: sub_7F81ADC3+1Bj
					; sub_7F81ADC3+28j
		pop	edi
		mov	byte ptr [ebx],	0
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F81ADC3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81AEE2	proc near		; CODE XREF: sub_7F81DCCA+12Ep
					; sub_7F81E844+119p

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	eax, [esp+arg_C]
		mov	ebp, esp
		sub	esp, 4
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F81ADC3
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F81AEE2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81AF07	proc near		; CODE XREF: sub_7F8150A9+39p

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	eax, [esp+arg_C]
		mov	ebp, esp
		sub	esp, 8
		mov	ecx, [ebp+arg_10]
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_8]
		mov	[ebp+var_4], ecx
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F81ADC3
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F81AF07	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81AF32	proc near		; CODE XREF: sub_7F8237B9+18p

arg_0		= dword	ptr  4

		push	esi
		xor	eax, eax
		mov	esi, [esp+4+arg_0]
		mov	dword ptr [esi], 0FF00h

loc_7F81AF3F:				; CODE XREF: sub_7F81AF32+2Ej
		mov	ecx, [esi]
		cmp	ecx, 1000h
		jbe	short loc_7F81AF62
		push	0
		push	ecx
		call	sub_7F82F03B
		mov	ecx, [esi]
		mov	edx, ecx
		shr	edx, 2
		shr	ecx, 1
		add	edx, ecx
		test	eax, eax
		mov	[esi], edx
		jz	short loc_7F81AF3F

loc_7F81AF62:				; CODE XREF: sub_7F81AF32+15j
		pop	esi
		retn	4
sub_7F81AF32	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81AF66	proc near		; CODE XREF: sub_7F80FE90+D2p
					; sub_7F80FE90+F6p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp

loc_7F81AF69:				; CODE XREF: sub_7F81AF66+1Dj
		mov	eax, [ebp+arg_8]
		dec	[ebp+arg_8]
		test	eax, eax
		jz	short loc_7F81AF89
		mov	ecx, [ebp+arg_0]
		mov	eax, [ebp+arg_4]
		inc	[ebp+arg_0]
		inc	[ebp+arg_4]
		mov	al, [eax]
		cmp	[ecx], al
		jz	short loc_7F81AF69
		xor	eax, eax
		jmp	short loc_7F81AF8E
; ---------------------------------------------------------------------------

loc_7F81AF89:				; CODE XREF: sub_7F81AF66+Bj
		mov	eax, 1

loc_7F81AF8E:				; CODE XREF: sub_7F81AF66+21j
		pop	ebp
		retn	0Ch
sub_7F81AF66	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81AF92	proc near		; CODE XREF: sub_7F82B8D3+27p

arg_0		= word ptr  4

		push	esi
		call	ds:GetTickCount
		movzx	ecx, [esp+4+arg_0]
		imul	ecx, 0Ah
		lea	esi, [ecx+eax]

loc_7F81AFA4:				; CODE XREF: sub_7F81AF92+1Aj
		call	ds:GetTickCount
		cmp	eax, esi
		jb	short loc_7F81AFA4
		pop	esi
		retn	4
sub_7F81AF92	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81AFB2	proc near		; CODE XREF: sub_7F81028C+71p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		lea	ecx, [esp+arg_4]
		mov	ebp, esp
		sub	esp, 4
		push	esi
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81AFF6
		push	0
		push	[ebp+arg_8]
		push	[ebp+var_4]
		call	sub_7F8194ED
		test	ax, ax
		jge	short loc_7F81AFE9
		mov	esi, 1004h

loc_7F81AFE9:				; CODE XREF: sub_7F81AFB2+30j
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_7F81813C
		mov	eax, esi

loc_7F81AFF6:				; CODE XREF: sub_7F81AFB2+1Ej
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F81AFB2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81AFFD	proc near		; CODE XREF: sub_7F81E844+EBp

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	[esp+arg_C]
		push	9005h
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F81B01B
		pop	ebp
		retn	10h
sub_7F81AFFD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81B01B	proc near		; CODE XREF: sub_7F81AFFD+15p

var_28		= byte ptr -28h
var_24		= word ptr -24h
var_22		= dword	ptr -22h
var_1C		= byte ptr -1Ch
var_18		= word ptr -18h
var_16		= dword	ptr -16h
var_12		= dword	ptr -12h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
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
		inc	word_7F838070
		mov	ebp, esp
		sub	esp, 28h
		mov	[ebp+var_C], 0
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		test	edi, edi
		jz	short loc_7F81B093
		cmp	edi, 82h
		jz	short loc_7F81B093
		cmp	edi, 84h
		jnz	short loc_7F81B052
		mov	[ebp+var_8], 64694881h
		jmp	short loc_7F81B09A
; ---------------------------------------------------------------------------

loc_7F81B052:				; CODE XREF: sub_7F81B01B+2Cj
		push	0
		lea	eax, [ebp+var_1C]
		push	eax
		lea	ecx, [ebp+var_8]
		push	0
		push	ecx
		push	edi
		push	[ebp+arg_0]
		call	sub_7F82D114
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81B083
		cmp	esi, 1001h
		jnz	loc_7F81B17C
		mov	esi, 1009h
		jmp	loc_7F81B17C
; ---------------------------------------------------------------------------

loc_7F81B083:				; CODE XREF: sub_7F81B01B+50j
		test	[ebp+var_1C], 4
		jnz	short loc_7F81B09A
		mov	esi, 1015h
		jmp	loc_7F81B17C
; ---------------------------------------------------------------------------

loc_7F81B093:				; CODE XREF: sub_7F81B01B+1Cj
					; sub_7F81B01B+24j
		mov	[ebp+var_8], 4D504981h

loc_7F81B09A:				; CODE XREF: sub_7F81B01B+35j
					; sub_7F81B01B+6Cj
		mov	ebx, [ebp+arg_8]
		mov	al, [ebx]
		test	al, al
		jge	short loc_7F81B0CA
		cmp	al, 91h
		jb	short loc_7F81B0AB
		xor	eax, eax
		jmp	short loc_7F81B0B6
; ---------------------------------------------------------------------------

loc_7F81B0AB:				; CODE XREF: sub_7F81B01B+8Aj
		movzx	eax, al
		movzx	eax, word_7F8358D0[eax*2]

loc_7F81B0B6:				; CODE XREF: sub_7F81B01B+8Ej
		and	ax, 9005h
		cmp	ax, 9005h
		jz	short loc_7F81B0CA
		mov	esi, 1015h
		jmp	loc_7F81B17F
; ---------------------------------------------------------------------------

loc_7F81B0CA:				; CODE XREF: sub_7F81B01B+86j
					; sub_7F81B01B+A3j
		lea	eax, [ebp+var_C]
		push	eax
		push	2
		push	ebx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81B17F
		push	[ebp+arg_C]
		push	dword ptr [ebx]
		push	[ebp+arg_0]
		call	sub_7F82CF24
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81B17F
		mov	[ebp+var_16], 0
		mov	[ebp+var_12], 9
		mov	ax, [ebp+var_18]
		and	ax, 0FFFDh
		or	al, 1
		mov	[ebp+var_18], ax
		lea	eax, [ebp+var_18]
		and	[ebp+var_18], 0FFFBh
		push	eax
		push	[ebp+var_C]
		call	sub_7F8199E0
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81B17F
		push	[ebp+var_C]
		call	sub_7F8178C4
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81B17F
		push	dword ptr [ebx]
		push	edi
		push	[ebp+arg_0]
		call	sub_7F828462
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81B17F
		cmp	word ptr [ebp+arg_C], 801Dh
		jz	short loc_7F81B17F
		lea	eax, [ebp+var_2]
		push	eax
		push	[ebp+arg_10]
		push	dword ptr [ebx]
		push	edi
		push	[ebp+var_8]
		push	[ebp+arg_0]
		call	sub_7F81B21F
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81B17F
		push	dword ptr [ebx]
		push	[ebp+arg_0]
		call	sub_7F828680
		jmp	short loc_7F81B17F
; ---------------------------------------------------------------------------

loc_7F81B17C:				; CODE XREF: sub_7F81B01B+58j
					; sub_7F81B01B+63j ...
		mov	ebx, [ebp+arg_8]

loc_7F81B17F:				; CODE XREF: sub_7F81B01B+AAj
					; sub_7F81B01B+C2j ...
		cmp	[ebp+var_C], 0
		jz	short loc_7F81B196
		lea	ecx, [ebp+var_C]
		cmp	esi, 1
		sbb	eax, eax
		neg	eax
		push	eax
		push	ecx
		call	sub_7F81813C

loc_7F81B196:				; CODE XREF: sub_7F81B01B+168j
		test	esi, esi
		jnz	short loc_7F81B20D
		push	[ebp+arg_0]
		call	sub_7F82A1E7
		test	esi, esi
		jnz	short loc_7F81B20D
		cmp	word ptr [ebp+arg_C], 801Dh
		jz	short loc_7F81B20D
		cmp	word_7F838070, 1
		jnz	short loc_7F81B20D
		mov	[ebp+var_22], offset word_7F833C10
		mov	ax, [ebp+var_2]
		lea	edx, [ebp+var_28]
		mov	word_7F833C12, ax
		push	edx
		mov	word_7F833C10, 1
		mov	ecx, [ebx]
		push	4000h
		push	[ebp+var_8]
		mov	[ebp+var_24], 1
		push	[ebp+arg_0]
		mov	dword_7F833C14,	ecx
		call	sub_7F82A016
		mov	ecx, [ebp+var_8]
		lea	edx, [ebp+var_28]
		push	edx
		mov	[ebp+var_22+2],	ecx
		push	100h
		push	dword ptr [ebx]
		push	[ebp+arg_0]
		call	sub_7F82A016

loc_7F81B20D:				; CODE XREF: sub_7F81B01B+17Dj
					; sub_7F81B01B+189j ...
		dec	word_7F838070
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F81B01B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81B21F	proc near		; CODE XREF: sub_7F81B01B+14Ap
					; sub_7F81DCCA+178p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		mov	ecx, [ebp+arg_14]
		push	esi
		lea	eax, [ebp+var_C]
		push	edi
		mov	esi, [ebp+arg_10]
		xor	edi, edi
		push	eax		; int
		mov	[ecx], di
		mov	[ebp+var_8], edi
		lea	ecx, [esi+2]
		push	ecx		; lpString
		call	sub_7F81B34C
		cmp	eax, edi
		mov	ebx, eax
		jnz	loc_7F81B31C
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+arg_4]
		add	[ebp+var_C], 2
		push	eax
		push	1
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		cmp	eax, edi
		mov	ebx, eax
		jnz	loc_7F81B31C
		test	[ebp+arg_8], 0FFFFFF00h
		jz	short loc_7F81B2A6
		push	esi
		lea	eax, [ebp+var_2]
		push	edi
		push	eax
		push	[ebp+arg_8]
		push	[ebp+var_8]
		call	sub_7F81B5AF
		cmp	eax, edi
		mov	ebx, eax
		jnz	loc_7F81B31C
		mov	ax, [esi]
		inc	ax
		mov	[esi], ax
		cmp	ax, 100h
		jb	short loc_7F81B2B1
		mov	ebx, 1017h
		jmp	short loc_7F81B31C
; ---------------------------------------------------------------------------

loc_7F81B2A6:				; CODE XREF: sub_7F81B21F+55j
		mov	[ebp+var_2], 0FFFFh
		mov	word ptr [esi],	1

loc_7F81B2B1:				; CODE XREF: sub_7F81B21F+7Ej
		lea	eax, [ebp+var_2]
		push	eax
		push	esi
		push	0FFFFFFFFh
		push	dword ptr [ebp+var_2]
		push	[ebp+var_8]
		call	sub_7F81B4E9
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F81B31C
		push	[ebp+var_C]
		push	[ebp+arg_C]
		lea	edx, [ebp+var_2]
		push	edx
		push	[ebp+var_8]
		call	sub_7F818B75
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F81B31C
		push	[ebp+var_C]
		push	esi
		push	0
		lea	ecx, [ebp+var_2]
		push	ecx
		push	[ebp+var_8]
		call	sub_7F818DC7
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F81B31C
		push	[ebp+var_8]
		call	sub_7F8178C4
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F81B31C
		push	1
		lea	ecx, [ebp+arg_C]
		push	[ebp+arg_4]
		push	1
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F82D1DF
		mov	ebx, eax

loc_7F81B31C:				; CODE XREF: sub_7F81B21F+28j
					; sub_7F81B21F+48j ...
		cmp	[ebp+var_8], 0
		jz	short loc_7F81B333
		lea	ecx, [ebp+var_8]
		cmp	ebx, 1
		sbb	eax, eax
		neg	eax
		push	eax
		push	ecx
		call	sub_7F81813C

loc_7F81B333:				; CODE XREF: sub_7F81B21F+101j
		test	ebx, ebx
		jnz	short loc_7F81B341
		mov	ax, [ebp+var_2]
		mov	ecx, [ebp+arg_14]
		mov	[ecx], ax

loc_7F81B341:				; CODE XREF: sub_7F81B21F+116j
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F81B21F	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F81B34C(LPCSTR lpString, int)
sub_7F81B34C	proc near		; CODE XREF: sub_7F81B21F+1Fp

lpString	= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	dword ptr [eax], 0
		push	[esp+10h+lpString] ; lpString
		call	ds:lstrlenA
		lea	esi, [eax+1]
		mov	ebx, [esp+10h+lpString]
		add	ebx, esi
		push	ebx		; lpString
		call	ds:lstrlenA
		lea	edi, [ebx+eax+1]
		push	1		; int
		push	1		; int
		push	[esp+18h+lpString] ; lpString
		call	sub_7F81AC0B
		lea	ebp, [eax+1]
		cmp	ebp, 1
		ja	short loc_7F81B394
		mov	eax, 100Eh
		jmp	short loc_7F81B3DD
; ---------------------------------------------------------------------------

loc_7F81B394:				; CODE XREF: sub_7F81B34C+3Fj
		cmp	byte ptr [edi],	0
		jnz	short loc_7F81B3D8
		lea	eax, [ebp-1]
		mov	ecx, 80h
		cmp	eax, ecx
		jnb	short loc_7F81B3D8
		mov	eax, edi
		sub	eax, ebx
		dec	eax
		cmp	eax, ecx
		jnb	short loc_7F81B3D8
		inc	edi
		cmp	esi, ebp
		jz	short loc_7F81B3CA
		mov	eax, edi
		sub	eax, ebx
		push	eax
		push	ebx
		sub	ebx, esi
		sub	edi, esi
		add	ebx, ebp
		add	edi, ebp
		push	ebx
		call	sub_7F82FCE0
		add	esp, 0Ch

loc_7F81B3CA:				; CODE XREF: sub_7F81B34C+65j
		sub	edi, [esp+10h+lpString]
		mov	eax, [esp+10h+arg_4]
		mov	[eax], edi
		xor	eax, eax
		jmp	short loc_7F81B3DD
; ---------------------------------------------------------------------------

loc_7F81B3D8:				; CODE XREF: sub_7F81B34C+4Bj
					; sub_7F81B34C+57j ...
		mov	eax, 210h

loc_7F81B3DD:				; CODE XREF: sub_7F81B34C+46j
					; sub_7F81B34C+8Aj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F81B34C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81B3E4	proc near		; CODE XREF: sub_7F80BD6C+6Bp

var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_6		= byte ptr -6
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, 10h
		push	esi
		lea	eax, [ebp+var_6]
		push	edi
		lea	ecx, [ebp+var_10]
		xor	edi, edi
		push	edi
		mov	[ebp+var_C], edi
		push	eax
		push	edi
		push	ecx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82D114
		cmp	eax, edi
		mov	esi, eax
		jz	short loc_7F81B422
		cmp	esi, 1001h
		jnz	loc_7F81B4C3
		mov	esi, 1009h
		jmp	loc_7F81B4C3
; ---------------------------------------------------------------------------

loc_7F81B422:				; CODE XREF: sub_7F81B3E4+26j
		test	[ebp+var_6], 4
		jnz	short loc_7F81B432
		mov	esi, 1015h
		jmp	loc_7F81B4C3
; ---------------------------------------------------------------------------

loc_7F81B432:				; CODE XREF: sub_7F81B3E4+42j
		lea	eax, [ebp+var_C]
		lea	ecx, [ebp+var_10]
		push	eax
		push	0
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81B4C3
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_4+2]
		push	eax
		lea	edx, [ebp+var_4]
		push	ecx
		push	edx
		push	[ebp+arg_4]
		push	[ebp+var_C]
		call	sub_7F81B5AF
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81B476
		cmp	esi, 1004h
		jnz	short loc_7F81B4C3
		mov	esi, 1009h
		jmp	short loc_7F81B4C3
; ---------------------------------------------------------------------------

loc_7F81B476:				; CODE XREF: sub_7F81B3E4+81j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	0
		push	[ebp+var_4]
		push	[ebp+var_C]
		call	sub_7F818D47
		cmp	eax, 1014h
		mov	esi, eax
		jnz	short loc_7F81B49C
		mov	ecx, [ebp+arg_C]
		cmp	dword ptr [ecx], 0
		jbe	short loc_7F81B49C
		xor	esi, esi

loc_7F81B49C:				; CODE XREF: sub_7F81B3E4+ACj
					; sub_7F81B3E4+B4j
		test	esi, esi
		jnz	short loc_7F81B4C3
		mov	edi, [ebp+arg_10]
		test	edi, edi
		jz	short loc_7F81B4C3
		cmp	word ptr [ebp+var_4+2],	0
		jl	short loc_7F81B4BD
		push	[ebp+var_4+2]
		push	[ebp+var_C]
		call	sub_7F819508
		mov	[edi], eax
		jmp	short loc_7F81B4C3
; ---------------------------------------------------------------------------

loc_7F81B4BD:				; CODE XREF: sub_7F81B3E4+C8j
		mov	dword ptr [edi], 0

loc_7F81B4C3:				; CODE XREF: sub_7F81B3E4+2Ej
					; sub_7F81B3E4+39j ...
		cmp	[ebp+var_C], 0
		jz	short loc_7F81B4D4
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_7F81813C

loc_7F81B4D4:				; CODE XREF: sub_7F81B3E4+E3j
		xor	eax, eax
		test	esi, esi
		jz	short loc_7F81B4DF
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax

loc_7F81B4DF:				; CODE XREF: sub_7F81B3E4+F4j
		mov	eax, esi
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F81B3E4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81B4E9	proc near		; CODE XREF: sub_7F81B21F+9Fp
					; sub_7F81B714+11Fp

var_8		= dword	ptr -8
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch
arg_8		= word ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	[ebp+arg_0]
		call	sub_7F8198FC
		mov	di, [ebp+arg_4]
		mov	ebx, [ebp+arg_C]
		mov	[ebp+var_4], ax

loc_7F81B507:				; CODE XREF: sub_7F81B4E9+53j
					; sub_7F81B4E9+59j ...
		inc	di
		cmp	di, [ebp+var_4]
		jge	loc_7F81B59E
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_2]
		mov	[ebp+var_8], 2
		push	eax
		push	ecx
		push	0
		push	edi
		push	[ebp+arg_0]
		call	sub_7F818D47
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81B5A4
		mov	ax, [ebx]
		cmp	[ebp+var_2], ax
		jb	short loc_7F81B59E
		jnz	short loc_7F81B507
		cmp	di, [ebp+arg_8]
		jz	short loc_7F81B507
		mov	[ebp+var_8], 7Fh
		lea	eax, [ebp+var_8]
		push	eax
		push	offset byte_7F8369F8
		push	2
		push	edi
		push	[ebp+arg_0]
		call	sub_7F818D47
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81B575
		cmp	esi, 1014h
		jnz	short loc_7F81B5A4
		cmp	[ebp+var_8], 0
		jbe	short loc_7F81B5A4
		xor	esi, esi

loc_7F81B575:				; CODE XREF: sub_7F81B4E9+7Aj
		mov	eax, [ebp+var_8]
		push	offset byte_7F8369F8 ; lpString2
		lea	ecx, [ebx+2]
		mov	byte_7F8369F8[eax], 0
		push	ecx		; lpString1
		call	sub_7F8176C6
		test	eax, eax
		jz	short loc_7F81B599
		jge	loc_7F81B507
		jmp	short loc_7F81B59E
; ---------------------------------------------------------------------------

loc_7F81B599:				; CODE XREF: sub_7F81B4E9+A6j
		mov	esi, 100Fh

loc_7F81B59E:				; CODE XREF: sub_7F81B4E9+24j
					; sub_7F81B4E9+51j ...
		mov	eax, [ebp+arg_10]
		mov	[eax], di

loc_7F81B5A4:				; CODE XREF: sub_7F81B4E9+48j
					; sub_7F81B4E9+82j ...
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F81B4E9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81B5AF	proc near		; CODE XREF: sub_7F81B21F+63p
					; sub_7F81B3E4+78p ...

var_8		= dword	ptr -8
var_2		= word ptr -2
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], 2
		push	ebx
		push	esi
		push	edi
		push	0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F8194ED
		mov	cx, ax
		mov	esi, [ebp+arg_8]
		mov	[esi], ax
		test	cx, cx
		jl	short loc_7F81B63E
		lea	eax, [ebp+var_8]
		mov	edi, [ebp+arg_10]
		push	eax
		push	edi
		push	0
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F818D47
		test	eax, eax
		jnz	short loc_7F81B643
		mov	ebx, [ebp+arg_C]
		test	ebx, ebx
		jz	short loc_7F81B643
		mov	word ptr [ebx],	0FFFFh
		cmp	word ptr [edi],	1
		jz	short loc_7F81B643
		mov	si, [esi]

loc_7F81B606:				; CODE XREF: sub_7F81B5AF+85j
		dec	si
		js	short loc_7F81B639
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_2]
		mov	[ebp+var_8], 2
		push	eax
		push	ecx
		push	0
		push	esi
		push	[ebp+arg_0]
		call	sub_7F818D47
		test	eax, eax
		jnz	short loc_7F81B643
		movzx	ecx, word ptr [edi]
		movzx	edx, [ebp+var_2]
		sub	ecx, edx
		cmp	ecx, 1
		jnz	short loc_7F81B606
		mov	[ebx], si

loc_7F81B639:				; CODE XREF: sub_7F81B5AF+59j
		test	si, si
		jge	short loc_7F81B643

loc_7F81B63E:				; CODE XREF: sub_7F81B5AF+29j
		mov	eax, 1004h

loc_7F81B643:				; CODE XREF: sub_7F81B5AF+40j
					; sub_7F81B5AF+47j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F81B5AF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81B64C	proc near		; CODE XREF: sub_7F8273AF+D2p

var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch
arg_8		= word ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		mov	si, [ebp+arg_4]
		push	edi
		mov	di, [ebp+arg_8]
		mov	ebx, [ebp+arg_C]
		mov	[ebx], si

loc_7F81B663:				; CODE XREF: sub_7F81B64C+3Bj
		inc	si
		lea	eax, [ebp+var_8]
		push	eax
		lea	ecx, [ebp+var_2]
		mov	[ebp+var_8], 2
		push	ecx
		push	0
		push	esi
		push	[ebp+arg_0]
		call	sub_7F818D47
		test	eax, eax
		jnz	short loc_7F81B68F
		cmp	[ebp+var_2], di
		ja	short loc_7F81B663
		lea	ecx, [esi-1]
		mov	[ebx], cx

loc_7F81B68F:				; CODE XREF: sub_7F81B64C+35j
		cmp	eax, 1005h
		jnz	short loc_7F81B69D
		dec	si
		xor	eax, eax
		mov	[ebx], si

loc_7F81B69D:				; CODE XREF: sub_7F81B64C+48j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F81B64C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81B6A6	proc near		; CODE XREF: sub_7F81C56F+2A3p
					; sub_7F81CE7B+77p ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	esi
		lea	eax, [ebp+var_4]
		push	eax
		lea	ecx, [ebp+arg_8]
		mov	[ebp+var_8], 80h
		push	0
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		test	eax, eax
		jnz	short loc_7F81B70D
		push	0
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	sub_7F8194ED
		test	ax, ax
		jge	short loc_7F81B6E3
		mov	esi, 1004h
		jmp	short loc_7F81B700
; ---------------------------------------------------------------------------

loc_7F81B6E3:				; CODE XREF: sub_7F81B6A6+34j
		lea	ecx, [ebp+var_8]
		push	ecx
		push	[ebp+arg_C]
		push	2
		push	eax
		push	[ebp+var_4]
		call	sub_7F818D47
		cmp	eax, 1014h
		mov	esi, eax
		jnz	short loc_7F81B700
		xor	esi, esi

loc_7F81B700:				; CODE XREF: sub_7F81B6A6+3Bj
					; sub_7F81B6A6+56j
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_7F81813C
		mov	eax, esi

loc_7F81B70D:				; CODE XREF: sub_7F81B6A6+22j
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F81B6A6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81B714	proc near		; CODE XREF: sub_7F8207A6+278p

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		= word ptr -8
var_6		= dword	ptr -6
var_2		= word ptr -2
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		mov	[ebp+var_8], 1
		mov	[ebp+var_18], 4D504981h
		mov	[ebp+var_1C], 81h
		mov	word ptr [ebp+var_6], 0FFFFh
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	ebx
		mov	edi, 400h
		push	edi
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], ebx
		call	sub_7F82F03B
		mov	esi, eax
		test	esi, esi
		jz	loc_7F81B8BF
		lea	eax, [ebp+var_10]
		lea	ecx, [ebp+var_18]
		push	eax
		push	0
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81B8B5
		lea	eax, [ebp+var_C]
		lea	ecx, [ebp+var_1C]
		push	eax
		push	2
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81B8B5
		push	[ebp+var_10]
		call	sub_7F8198FC
		mov	[ebp+var_2], ax
		mov	dword ptr [esi+4], 0
		dec	[ebp+var_2]
		test	ax, ax
		jle	loc_7F81B889

loc_7F81B7AD:				; CODE XREF: sub_7F81B714+16Fj
		push	ebx
		push	[ebp+var_10]
		call	sub_7F819508
		push	ebx
		mov	[ebp+var_20], eax
		push	[ebp+var_10]
		call	sub_7F81990D
		lea	ecx, [ebp+var_14]
		mov	[ebp+var_14], eax
		mov	ax, bx
		push	ecx
		inc	bx
		push	offset ReturnedString
		push	0
		push	eax
		push	[ebp+var_10]
		call	sub_7F818D47
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81B8B5
		mov	di, ReturnedString
		cmp	[ebp+var_8], di
		jbe	short loc_7F81B80B
		movzx	eax, di
		push	0
		push	dword ptr [esi+eax*4]
		push	[ebp+var_C]
		call	sub_7F8194ED
		mov	word ptr [ebp+var_6], ax
		jmp	short loc_7F81B81E
; ---------------------------------------------------------------------------

loc_7F81B80B:				; CODE XREF: sub_7F81B714+DFj
		jnb	short loc_7F81B81E
		mov	ax, word ptr [ebp+var_6+2]
		mov	edx, [ebp+var_24]
		movzx	ecx, di
		mov	word ptr [ebp+var_6], ax
		mov	[esi+ecx*4], edx

loc_7F81B81E:				; CODE XREF: sub_7F81B714+F5j
					; sub_7F81B714:loc_7F81B80Bj
		mov	[ebp+var_8], di
		lea	eax, [ebp+var_6+2]
		push	eax
		push	offset ReturnedString
		push	0FFFFFFFFh
		push	[ebp+var_6]
		push	[ebp+var_C]
		call	sub_7F81B4E9
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F81B8B5
		push	[ebp+var_14]
		push	[ebp+var_20]
		lea	edx, [ebp+var_6+2]
		push	edx
		push	[ebp+var_C]
		call	sub_7F818B75
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F81B8B5
		push	[ebp+var_14]
		push	offset ReturnedString
		push	0
		lea	ecx, [ebp+var_6+2]
		push	ecx
		push	[ebp+var_C]
		call	sub_7F818DC7
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F81B8B5
		mov	cx, [ebp+var_2]
		mov	eax, [ebp+var_20]
		dec	[ebp+var_2]
		mov	[ebp+var_24], eax
		test	cx, cx
		jg	loc_7F81B7AD

loc_7F81B889:				; CODE XREF: sub_7F81B714+93j
		push	1
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_7F81813C
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F81B8B5
		push	0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_7F81813C
		push	[ebp+var_1C]
		push	[ebp+var_18]
		push	[ebp+arg_0]
		call	sub_7F824774
		mov	edi, eax

loc_7F81B8B5:				; CODE XREF: sub_7F81B714+57j
					; sub_7F81B714+73j ...
		test	esi, esi
		jz	short loc_7F81B8BF
		push	esi
		call	sub_7F82F149

loc_7F81B8BF:				; CODE XREF: sub_7F81B714+3Bj
					; sub_7F81B714+1A3j
		test	edi, edi
		jz	short loc_7F81B8E5
		cmp	[ebp+var_10], 0
		jz	short loc_7F81B8D4
		push	0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_7F81813C

loc_7F81B8D4:				; CODE XREF: sub_7F81B714+1B3j
		cmp	[ebp+var_C], 0
		jz	short loc_7F81B8E5
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_7F81813C

loc_7F81B8E5:				; CODE XREF: sub_7F81B714+1ADj
					; sub_7F81B714+1C4j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F81B714	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81B8F0	proc near		; CODE XREF: sub_7F810955+8Ep
					; sub_7F81E844+152p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= byte ptr -2
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, 14h
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_14]
		xor	edi, edi
		push	eax
		lea	ecx, [ebp+var_10]
		mov	[ebp+var_10], edi
		push	ecx
		mov	[ebp+var_C], edi
		push	[ebp+arg_4]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		mov	[ebp+var_8], edi
		call	sub_7F81BA1F
		cmp	eax, edi
		mov	esi, eax
		jnz	loc_7F81B9EA
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+arg_4]
		push	eax
		push	1
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		cmp	eax, edi
		mov	esi, eax
		jnz	loc_7F81B9EA
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+var_14]
		push	[ebp+arg_8]
		push	[ebp+var_8]
		call	sub_7F819BC5
		cmp	eax, edi
		mov	esi, eax
		jnz	loc_7F81B9EA
		push	[ebp+var_14]
		push	[ebp+var_10]
		push	[ebp+var_C]
		call	sub_7F81A03B
		cmp	eax, edi
		mov	esi, eax
		jnz	short loc_7F81B9EA
		mov	ebx, [ebp+arg_10]
		lea	eax, [ebp+var_C]
		push	ebx
		push	eax
		call	sub_7F81A0C1
		cmp	eax, edi
		mov	esi, eax
		jnz	short loc_7F81B9EA
		push	[ebp+var_8]
		call	sub_7F8178C4
		cmp	eax, edi
		mov	esi, eax
		jnz	short loc_7F81B9EA
		mov	ax, [ebx]
		lea	ecx, [ebp+arg_8]
		push	eax
		push	1
		push	ecx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F8290A9
		cmp	eax, edi
		mov	esi, eax
		jnz	short loc_7F81B9EA
		mov	eax, [ebp+var_10]
		xor	ebx, ebx
		mov	bl, [eax+0Eh]
		and	ebx, 22h
		push	ebx
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_7F82C46A
		test	ebx, ebx
		jnz	short loc_7F81B9D7
		push	1
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82C50A

loc_7F81B9D7:				; CODE XREF: sub_7F81B8F0+D8j
		push	1
		lea	ecx, [ebp+arg_8]
		push	[ebp+arg_4]
		push	1
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F82D1DF

loc_7F81B9EA:				; CODE XREF: sub_7F81B8F0+31j
					; sub_7F81B8F0+4Dj ...
		cmp	[ebp+var_8], 0
		jz	short loc_7F81BA14
		cmp	[ebp+var_C], 0
		jz	short loc_7F81BA03
		lea	eax, [ebp+var_2]
		lea	ecx, [ebp+var_C]
		push	eax
		push	ecx
		call	sub_7F81A0C1

loc_7F81BA03:				; CODE XREF: sub_7F81B8F0+104j
		lea	ecx, [ebp+var_8]
		cmp	esi, 1
		sbb	eax, eax
		neg	eax
		push	eax
		push	ecx
		call	sub_7F81813C

loc_7F81BA14:				; CODE XREF: sub_7F81B8F0+FEj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F81B8F0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81BA1F	proc near		; CODE XREF: sub_7F81B8F0+28p
					; sub_7F81D22C+62p ...

var_28		= dword	ptr -28h
var_24		= word ptr -24h
var_22		= word ptr -22h
var_20		= word ptr -20h
var_1E		= word ptr -1Eh
var_1C		= word ptr -1Ch
var_1A		= dword	ptr -1Ah
var_14		= dword	ptr -14h
var_E		= dword	ptr -0Eh
var_A		= dword	ptr -0Ah
var_6		= dword	ptr -6
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= byte 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
		sub	esp, 28h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		xor	ebx, ebx
		mov	ecx, [ebp+arg_10]
		cmp	[ebp+arg_8], 1
		sbb	eax, eax
		mov	edx, [ebp+arg_14]
		neg	eax
		mov	[ebp+var_28], eax
		mov	[ecx], esi
		mov	[edx], esi
		cmp	eax, esi
		jz	short loc_7F81BA72
		lea	eax, [ebp+arg_8]
		lea	ecx, [ebp+arg_4]
		push	eax
		push	esi
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		cmp	eax, esi
		mov	ebx, eax
		jz	short loc_7F81BA72
		cmp	ebx, 1001h
		jnz	loc_7F81BDB6
		mov	ebx, 1008h
		jmp	loc_7F81BDB6
; ---------------------------------------------------------------------------

loc_7F81BA72:				; CODE XREF: sub_7F81BA1F+24j
					; sub_7F81BA1F+3Bj
		xor	esi, esi
		push	esi
		push	38006h
		push	[ebp+arg_8]
		call	sub_7F8194ED
		mov	[ebp+var_2], ax
		cmp	ax, si
		jge	short loc_7F81BA9D
		push	esi
		push	38005h
		push	[ebp+arg_8]
		call	sub_7F8194ED
		mov	[ebp+var_2], ax

loc_7F81BA9D:				; CODE XREF: sub_7F81BA1F+6Aj
		push	0
		push	8000h
		push	[ebp+arg_8]
		call	sub_7F8194ED
		mov	word ptr [ebp+var_6], ax
		push	0
		push	18004h
		push	[ebp+arg_8]
		call	sub_7F8194ED
		mov	word ptr [ebp+var_6+2],	ax
		push	0
		push	68007h
		push	[ebp+arg_8]
		call	sub_7F8194ED
		mov	word ptr [ebp+var_E], ax
		push	0
		push	78008h
		push	[ebp+arg_8]
		call	sub_7F8194ED
		mov	word ptr [ebp+var_E+2],	ax
		push	0
		push	80000h
		push	[ebp+arg_8]
		call	sub_7F8194ED
		mov	word ptr [ebp+var_A], ax
		push	0
		push	4800Dh
		push	[ebp+arg_8]
		call	sub_7F8194ED
		mov	word_7F8367E7, 0
		mov	byte_7F8367E6, 3
		mov	dword_7F8367EB,	0
		mov	word_7F8367E9, 2
		mov	[ebp+var_24], 7B0h
		mov	word ptr [ebp+var_A+2],	ax
		mov	ecx, 1
		mov	[ebp+var_22], 0Ch
		lea	esi, [ebp+var_24]
		mov	edi, offset ReturnedString
		mov	[ebp+var_20], 10h
		mov	[ebp+var_1E], 0Eh
		mov	[ebp+var_1C], 14h
		mov	word ptr [ebp+var_1A], 0
		mov	word ptr [ebp+var_1A+2], cx
		movsd
		movsd
		movsd
		movsw
		cmp	word ptr [ebp+var_E], 0
		mov	eax, [ebp+arg_C]
		mov	dword_7F8367EF,	eax
		jl	short loc_7F81BBA5
		lea	eax, [ebp+var_1A+3]
		mov	[ebp+var_14], ecx
		lea	ecx, [ebp+var_14]
		push	ecx
		push	eax
		push	0
		push	[ebp+var_E]
		push	[ebp+arg_8]
		call	sub_7F818D47
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F81BDB6
		mov	al, byte ptr [ebp+var_1A+3]
		mov	byte_7F8367E6, al

loc_7F81BBA5:				; CODE XREF: sub_7F81BA1F+15Aj
		cmp	word ptr [ebp+var_E+2],	0
		jl	short loc_7F81BBDC
		lea	eax, [ebp+var_14]
		lea	ecx, [ebp+var_1A+2]
		mov	[ebp+var_14], 2
		push	eax
		push	ecx
		push	0
		push	[ebp+var_E+2]
		push	[ebp+arg_8]
		call	sub_7F818D47
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F81BDB6
		mov	ax, word ptr [ebp+var_1A+2]
		mov	word_7F8367E7, ax

loc_7F81BBDC:				; CODE XREF: sub_7F81BA1F+18Bj
		cmp	word ptr [ebp+var_A], 0
		jl	short loc_7F81BC11
		lea	eax, [ebp+var_14]
		lea	ecx, [ebp+var_1A]
		mov	[ebp+var_14], 4
		push	eax
		push	ecx
		push	0
		push	[ebp+var_A]
		push	[ebp+arg_8]
		call	sub_7F818D47
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F81BDB6
		mov	eax, [ebp+var_1A]
		mov	dword_7F8367EB,	eax

loc_7F81BC11:				; CODE XREF: sub_7F81BA1F+1C2j
		cmp	word ptr [ebp+var_A+2],	0
		jl	short loc_7F81BC48
		lea	eax, [ebp+var_14]
		lea	ecx, [ebp+var_1A+2]
		mov	[ebp+var_14], 2
		push	eax
		push	ecx
		push	0
		push	[ebp+var_A+2]
		push	[ebp+arg_8]
		call	sub_7F818D47
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F81BDB6
		mov	ax, word ptr [ebp+var_1A+2]
		mov	word_7F8367E9, ax

loc_7F81BC48:				; CODE XREF: sub_7F81BA1F+1F7j
		xor	esi, esi
		cmp	[ebp+var_2], si
		jl	short loc_7F81BCC6
		lea	eax, [ebp+var_14]
		lea	ecx, [ebp+var_24]
		mov	[ebp+var_14], 0Eh
		push	eax
		push	ecx
		push	esi
		push	dword ptr [ebp+var_2]
		push	[ebp+arg_8]
		call	sub_7F818D47
		cmp	eax, esi
		mov	ebx, eax
		jnz	loc_7F81BDB6
		cmp	[ebp+var_24], 76Ch
		jl	short loc_7F81BCC6
		cmp	[ebp+var_24], 81Fh
		jge	short loc_7F81BCC6
		cmp	[ebp+var_22], si
		jle	short loc_7F81BCC6
		cmp	[ebp+var_22], 0Ch
		jg	short loc_7F81BCC6
		cmp	[ebp+var_20], si
		jle	short loc_7F81BCC6
		cmp	[ebp+var_20], 1Fh
		jg	short loc_7F81BCC6
		cmp	[ebp+var_1E], si
		jl	short loc_7F81BCC6
		cmp	[ebp+var_1E], 18h
		jge	short loc_7F81BCC6
		cmp	[ebp+var_1C], si
		jl	short loc_7F81BCC6
		cmp	[ebp+var_1C], 3Ch
		jge	short loc_7F81BCC6
		lea	esi, [ebp+var_24]
		mov	edi, offset ReturnedString
		movsd
		movsd
		movsd
		movsw

loc_7F81BCC6:				; CODE XREF: sub_7F81BA1F+22Fj
					; sub_7F81BA1F+25Cj ...
		test	byte_7F8367E6, 40h
		jz	short loc_7F81BD09
		xor	esi, esi
		push	esi
		push	8001h
		push	[ebp+arg_8]
		call	sub_7F8194ED
		test	ax, ax
		jge	short loc_7F81BD05
		push	esi
		push	8002h
		push	[ebp+arg_8]
		call	sub_7F8194ED
		test	ax, ax
		jge	short loc_7F81BD05
		push	esi
		push	8003h
		push	[ebp+arg_8]
		call	sub_7F8194ED

loc_7F81BD05:				; CODE XREF: sub_7F81BA1F+2C3j
					; sub_7F81BA1F+2D6j
		mov	word ptr [ebp+var_6], ax

loc_7F81BD09:				; CODE XREF: sub_7F81BA1F+2AEj
		cmp	word ptr [ebp+var_6], 0
		jl	short loc_7F81BD3F
		push	80h		; int
		mov	esi, offset sz
		push	esi		; lpString
		push	[ebp+var_6]	; int
		push	[ebp+arg_8]	; int
		call	sub_7F81BDE4
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F81BDB6
		push	esi		; lpString
		call	ds:lstrlenA
		lea	esi, unk_7F8367F4[eax]
		jmp	short loc_7F81BD4B
; ---------------------------------------------------------------------------

loc_7F81BD3F:				; CODE XREF: sub_7F81BA1F+2EFj
		mov	sz, 0
		mov	esi, offset unk_7F8367F4

loc_7F81BD4B:				; CODE XREF: sub_7F81BA1F+31Ej
		cmp	word ptr [ebp+var_6+2],	0
		jl	short loc_7F81BD92
		push	[ebp+var_6+2]
		push	[ebp+arg_8]
		call	sub_7F81990D
		dec	eax
		cmp	eax, 7Fh
		jb	short loc_7F81BD68
		mov	eax, 7Fh

loc_7F81BD68:				; CODE XREF: sub_7F81BA1F+342j
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_14]
		push	eax
		push	esi
		push	0
		push	[ebp+var_6+2]
		push	[ebp+arg_8]
		call	sub_7F818D47
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F81BDB6
		mov	eax, [ebp+var_14]
		mov	byte ptr [eax+esi], 0
		mov	eax, [ebp+var_14]
		inc	eax
		add	esi, eax
		jmp	short loc_7F81BD96
; ---------------------------------------------------------------------------

loc_7F81BD92:				; CODE XREF: sub_7F81BA1F+331j
		mov	byte ptr [esi],	0
		inc	esi

loc_7F81BD96:				; CODE XREF: sub_7F81BA1F+371j
		mov	eax, offset ReturnedString
		mov	ecx, [ebp+arg_14]
		push	0Eh
		mov	byte ptr [esi],	0
		inc	esi
		push	eax
		push	eax
		mov	byte ptr [esi],	0
		inc	esi
		sub	esi, eax
		mov	[ecx], esi
		call	sub_7F82FF60
		add	esp, 0Ch

loc_7F81BDB6:				; CODE XREF: sub_7F81BA1F+43j
					; sub_7F81BA1F+4Ej ...
		xor	eax, eax
		cmp	[ebp+var_28], eax
		jz	short loc_7F81BDCC
		cmp	[ebp+arg_8], eax
		jz	short loc_7F81BDCC
		push	eax
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_7F81813C

loc_7F81BDCC:				; CODE XREF: sub_7F81BA1F+39Cj
					; sub_7F81BA1F+3A1j
		test	ebx, ebx
		jnz	short loc_7F81BDD9
		mov	eax, [ebp+arg_10]
		mov	dword ptr [eax], offset	ReturnedString

loc_7F81BDD9:				; CODE XREF: sub_7F81BA1F+3AFj
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F81BA1F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F81BDE4(int, int, LPCSTR lpString,	int)
sub_7F81BDE4	proc near		; CODE XREF: sub_7F81BA1F+302p

var_10		= word ptr -10h
var_C		= word ptr -0Ch
var_A		= word ptr -0Ah
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
lpString	= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	esi, [ebp+arg_C]
		mov	edi, [ebp+lpString]

loc_7F81BDF5:				; CODE XREF: sub_7F81BDE4+11Bj
		lea	eax, [ebp+var_4]
		lea	ecx, [ebp+var_10]
		mov	[ebp+var_4], 8
		push	eax
		push	ecx
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F818D47
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	loc_7F81BF27
		cmp	[ebp+var_10], 0
		jz	loc_7F81BF07
		cmp	[ebp+var_10], 0Ah
		jnb	loc_7F81BF0D
		cmp	[ebp+var_C], 0
		jbe	short loc_7F81BE6A
		movzx	eax, [ebp+var_C]
		dec	eax
		mov	[ebp+var_4], eax
		cmp	eax, esi
		jb	short loc_7F81BE4A
		lea	eax, [esi-1]
		mov	[ebp+var_4], eax

loc_7F81BE4A:				; CODE XREF: sub_7F81BDE4+5Ej
		lea	eax, [ebp+var_4]
		lea	ecx, [ebx+8]
		push	eax
		push	edi
		push	ecx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F818D47
		mov	[ebp+var_8], eax
		test	eax, eax
		jz	short loc_7F81BECB
		jmp	loc_7F81BF27
; ---------------------------------------------------------------------------

loc_7F81BE6A:				; CODE XREF: sub_7F81BDE4+52j
		cmp	[ebp+var_A], 0
		jbe	short loc_7F81BEC4
		cmp	esi, 2
		jbe	short loc_7F81BEC4
		sub	esi, 2
		mov	byte ptr [edi],	5Bh
		movzx	eax, [ebp+var_A]
		inc	edi
		dec	eax
		mov	[ebp+var_4], eax
		cmp	eax, esi
		jb	short loc_7F81BE8F
		lea	eax, [esi-1]
		mov	[ebp+var_4], eax

loc_7F81BE8F:				; CODE XREF: sub_7F81BDE4+A3j
		lea	eax, [ebp+var_4]
		lea	ecx, [ebx+8]
		push	eax
		push	edi
		push	ecx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F818D47
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	short loc_7F81BF27
		mov	eax, [ebp+var_4]
		push	edi		; lpString
		mov	byte ptr [eax+edi], 0
		call	ds:lstrlenA
		mov	[ebp+var_4], eax
		mov	byte ptr [eax+edi], 5Dh
		inc	[ebp+var_4]
		jmp	short loc_7F81BECB
; ---------------------------------------------------------------------------

loc_7F81BEC4:				; CODE XREF: sub_7F81BDE4+8Bj
					; sub_7F81BDE4+90j
		mov	[ebp+var_4], 0

loc_7F81BECB:				; CODE XREF: sub_7F81BDE4+7Fj
					; sub_7F81BDE4+DEj
		movzx	eax, [ebp+var_C]
		movzx	ecx, [ebp+var_A]
		add	eax, ecx
		push	edi		; lpString
		add	eax, 8
		mov	ecx, [ebp+var_4]
		add	ebx, eax
		mov	byte ptr [ecx+edi], 0
		call	ds:lstrlenA
		add	edi, eax
		sub	esi, eax
		mov	[ebp+var_4], eax
		cmp	esi, 2
		jb	short loc_7F81BF20
		mov	byte ptr [edi],	3Bh
		inc	edi
		mov	byte ptr [edi],	20h
		inc	edi
		sub	esi, 2
		jnz	loc_7F81BDF5
		jmp	short loc_7F81BF23
; ---------------------------------------------------------------------------

loc_7F81BF07:				; CODE XREF: sub_7F81BDE4+3Cj
		test	ebx, ebx
		jnz	short loc_7F81BF23
		jmp	short loc_7F81BF20
; ---------------------------------------------------------------------------

loc_7F81BF0D:				; CODE XREF: sub_7F81BDE4+47j
		mov	eax, 0
		cmp	ebx, 1
		adc	eax, 0FFFFFFFFh
		and	al, 0FEh
		mov	byte ptr [eax+edi], 0
		jmp	short loc_7F81BF23
; ---------------------------------------------------------------------------

loc_7F81BF20:				; CODE XREF: sub_7F81BDE4+10Ej
					; sub_7F81BDE4+127j
		add	edi, 2

loc_7F81BF23:				; CODE XREF: sub_7F81BDE4+121j
					; sub_7F81BDE4+125j ...
		mov	byte ptr [edi-2], 0

loc_7F81BF27:				; CODE XREF: sub_7F81BDE4+31j
					; sub_7F81BDE4+81j ...
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F81BDE4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81BF33	proc near		; CODE XREF: sub_7F81C56F+EAp
					; sub_7F82729D+4Ap

var_34		= dword	ptr -34h
var_30		= byte ptr -30h
var_2C		= word ptr -2Ch
var_2A		= dword	ptr -2Ah
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		= word ptr -8
var_6		= byte ptr -6
var_4		= word ptr -4
var_2		= word ptr -2
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, 34h
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		mov	word ptr [ebp+var_24], di
		mov	[ebp+var_18], edi
		mov	[ebp+var_2], di
		mov	ecx, [ebp+arg_C]
		mov	bx, [ecx]
		mov	[ebp+var_1C], edi
		mov	[ecx], di
		mov	[ebp+var_20], edi
		test	bx, bx
		mov	[ebp+var_10], edi
		jg	short loc_7F81BF76
		cmp	bx, 1
		mov	eax, 0
		adc	eax, 0FFFFFFFFh
		and	eax, 210h
		jmp	loc_7F81C333
; ---------------------------------------------------------------------------

loc_7F81BF76:				; CODE XREF: sub_7F81BF33+2Bj
		inc	word_7F838070
		push	0
		lea	eax, [ebp+var_6]
		push	eax
		push	0
		push	0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82D114
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81BFAE
		cmp	esi, 1001h
		jnz	loc_7F81C277
		mov	esi, 1009h
		jmp	loc_7F81C277
; ---------------------------------------------------------------------------

loc_7F81BFAE:				; CODE XREF: sub_7F81BF33+63j
		test	[ebp+var_6], 4
		jnz	short loc_7F81BFBE
		mov	esi, 1015h
		jmp	loc_7F81C277
; ---------------------------------------------------------------------------

loc_7F81BFBE:				; CODE XREF: sub_7F81BF33+7Fj
		lea	eax, [ebp+var_20]
		lea	ecx, [ebp+arg_4]
		push	eax
		push	1
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81C277
		test	[ebp+var_6], 10h
		mov	[ebp+var_2], bx
		jnz	short loc_7F81C002
		lea	eax, [ebp+var_2]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_7F82BBAB
		cmp	[ebp+var_2], bx
		jz	short loc_7F81BFFE
		mov	edi, 253h

loc_7F81BFFE:				; CODE XREF: sub_7F81BF33+C4j
		mov	bx, [ebp+var_2]

loc_7F81C002:				; CODE XREF: sub_7F81BF33+AFj
		cmp	[ebp+var_2], 0
		jz	loc_7F81C277
		movsx	eax, [ebp+var_2]
		shl	eax, 3
		push	20h
		push	eax
		call	sub_7F82F03B
		mov	[ebp+var_18], eax
		test	eax, eax
		jnz	short loc_7F81C02D
		mov	esi, 400h
		jmp	loc_7F81C277
; ---------------------------------------------------------------------------

loc_7F81C02D:				; CODE XREF: sub_7F81BF33+EEj
		movsx	eax, [ebp+var_2]
		push	0
		add	eax, eax
		push	eax
		call	sub_7F82F03B
		mov	[ebp+var_1C], eax
		test	eax, eax
		jnz	short loc_7F81C04C
		mov	esi, 400h
		jmp	loc_7F81C277
; ---------------------------------------------------------------------------

loc_7F81C04C:				; CODE XREF: sub_7F81BF33+10Dj
		push	[ebp+var_1C]
		lea	ecx, [ebp+var_2]
		push	ecx
		push	[ebp+arg_8]
		push	[ebp+var_20]
		call	sub_7F81A344
		cmp	[ebp+var_2], bx
		jz	short loc_7F81C06D
		test	edi, edi
		jnz	short loc_7F81C06D
		mov	edi, 1004h

loc_7F81C06D:				; CODE XREF: sub_7F81BF33+12Fj
					; sub_7F81BF33+133j
		xor	ebx, ebx
		cmp	[ebp+var_2], bx
		jz	loc_7F81C277
		push	dword ptr [ebp+var_2]
		push	[ebp+var_1C]
		call	sub_7F81A3DB
		push	dword ptr [ebp+var_2]
		push	[ebp+var_18]
		push	[ebp+var_1C]
		push	[ebp+var_20]
		call	sub_7F81A42D
		cmp	eax, ebx
		mov	esi, eax
		jnz	loc_7F81C277
		mov	[ebp+var_4], bx
		cmp	[ebp+var_2], bx
		jle	loc_7F81C277

loc_7F81C0AD:				; CODE XREF: sub_7F81BF33+33Ej
		mov	eax, [ebp+arg_8]
		movsx	ecx, [ebp+var_4]
		mov	edx, [eax+ecx*4]
		lea	ecx, [ebp+var_8]
		push	ecx
		lea	eax, [ebp+var_C]
		push	eax
		mov	[ebp+var_14], edx
		lea	edx, [ebp+var_34]
		push	edx
		push	[ebp+var_14]
		push	[ebp+arg_0]
		call	sub_7F82C63C
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81C0F1
		test	edi, edi
		jnz	short loc_7F81C0EA
		mov	edi, 1008h
		cmp	esi, 1001h
		jz	short loc_7F81C0EA
		mov	edi, esi

loc_7F81C0EA:				; CODE XREF: sub_7F81BF33+1A6j
					; sub_7F81BF33+1B3j
		xor	esi, esi
		jmp	loc_7F81C265
; ---------------------------------------------------------------------------

loc_7F81C0F1:				; CODE XREF: sub_7F81BF33+1A2j
		cmp	[ebp+var_8], bx
		jnz	short loc_7F81C0FB
		dec	word ptr [ebp+var_24]

loc_7F81C0FB:				; CODE XREF: sub_7F81BF33+1C2j
		test	[ebp+var_6], 10h
		jz	loc_7F81C186
		mov	eax, [ebp+var_C]
		lea	ecx, [ebp+var_10]
		and	al, 88h
		push	ecx
		or	al, 88h
		push	1
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+arg_0]
		call	sub_7F817E9D
		test	eax, eax
		jnz	short loc_7F81C17F
		push	[ebp+var_10]
		call	sub_7F8198FC
		mov	word ptr [ebp+var_14+2], ax
		cmp	ax, 1
		jle	short loc_7F81C14E
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+var_10]
		call	sub_7F8194ED
		push	eax
		push	[ebp+var_10]
		call	sub_7F818AE7
		mov	esi, eax

loc_7F81C14E:				; CODE XREF: sub_7F81BF33+202j
		cmp	word ptr [ebp+var_14+2], 1
		jle	short loc_7F81C15E
		mov	eax, 1
		test	esi, esi
		jz	short loc_7F81C160

loc_7F81C15E:				; CODE XREF: sub_7F81BF33+220j
		xor	eax, eax

loc_7F81C160:				; CODE XREF: sub_7F81BF33+229j
		push	eax
		lea	ecx, [ebp+var_10]
		push	ecx
		call	sub_7F81813C
		cmp	word ptr [ebp+var_14+2], 1
		jg	short loc_7F81C17F
		push	ebx
		push	1
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	sub_7F82B9DE

loc_7F81C17F:				; CODE XREF: sub_7F81BF33+1F0j
					; sub_7F81BF33+23Cj
		xor	esi, esi
		jmp	loc_7F81C265
; ---------------------------------------------------------------------------

loc_7F81C186:				; CODE XREF: sub_7F81BF33+1CCj
		mov	eax, [ebp+var_34]
		cmp	[ebp+arg_4], eax
		jnz	loc_7F81C265
		dec	word_7F838070
		push	ebx
		push	ebx
		push	[ebp+var_14]
		push	[ebp+arg_0]
		call	sub_7F82B9DE
		inc	word_7F838070
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81C1C3
		test	edi, edi
		jnz	short loc_7F81C1C1
		cmp	esi, 253h
		jnz	short loc_7F81C1C1
		mov	edi, esi

loc_7F81C1C1:				; CODE XREF: sub_7F81BF33+282j
					; sub_7F81BF33+28Aj
		xor	esi, esi

loc_7F81C1C3:				; CODE XREF: sub_7F81BF33+27Ej
		cmp	[ebp+var_C], ebx
		jz	loc_7F81C265
		mov	eax, [ebp+var_C]
		lea	ecx, [ebp+var_10]
		and	al, 89h
		push	ecx
		or	al, 89h
		push	ebx
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+arg_0]
		call	sub_7F817E9D
		test	eax, eax
		jnz	short loc_7F81C20D
		push	[ebp+var_10]
		push	[ebp+arg_0]
		call	sub_7F81C33C
		push	ebx
		lea	ecx, [ebp+var_10]
		push	ecx
		call	sub_7F81813C
		push	ebx
		push	ebx
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	sub_7F82B9DE

loc_7F81C20D:				; CODE XREF: sub_7F81BF33+2B6j
		mov	eax, [ebp+var_C]
		lea	ecx, [ebp+var_10]
		and	al, 88h
		push	ecx
		or	al, 88h
		push	ebx
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+arg_0]
		call	sub_7F817E9D
		test	eax, eax
		jnz	short loc_7F81C265
		movsx	eax, [ebp+var_8]
		dec	word_7F838070
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_14]
		push	[ebp+arg_0]
		call	sub_7F81C461
		inc	word_7F838070
		push	ebx
		lea	ecx, [ebp+var_10]
		push	ecx
		call	sub_7F81813C
		push	ebx
		push	1
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	sub_7F82B9DE

loc_7F81C265:				; CODE XREF: sub_7F81BF33+1B9j
					; sub_7F81BF33+24Ej ...
		inc	[ebp+var_4]
		mov	ax, [ebp+var_4]
		cmp	[ebp+var_2], ax
		jg	loc_7F81C0AD

loc_7F81C277:				; CODE XREF: sub_7F81BF33+6Bj
					; sub_7F81BF33+76j ...
		cmp	[ebp+var_20], 0
		jz	short loc_7F81C299
		test	esi, esi
		jnz	short loc_7F81C28D
		cmp	[ebp+var_2], 0
		mov	eax, 1
		jg	short loc_7F81C28F

loc_7F81C28D:				; CODE XREF: sub_7F81BF33+34Cj
		xor	eax, eax

loc_7F81C28F:				; CODE XREF: sub_7F81BF33+358j
		push	eax
		lea	ecx, [ebp+var_20]
		push	ecx
		call	sub_7F81813C

loc_7F81C299:				; CODE XREF: sub_7F81BF33+348j
		cmp	[ebp+var_1C], 0
		jz	short loc_7F81C2A7
		push	[ebp+var_1C]
		call	sub_7F82F149

loc_7F81C2A7:				; CODE XREF: sub_7F81BF33+36Aj
		test	esi, esi
		jnz	short loc_7F81C316
		cmp	word ptr [ebp+var_24], 0
		jz	short loc_7F81C2C0
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82C50A

loc_7F81C2C0:				; CODE XREF: sub_7F81BF33+37Dj
		mov	ax, [ebp+var_2]
		mov	ecx, [ebp+arg_C]
		push	[ebp+arg_0]
		mov	[ecx], ax
		call	sub_7F82A1E7
		cmp	[ebp+var_2], 0
		jle	short loc_7F81C316
		cmp	word_7F838070, 1
		jnz	short loc_7F81C305
		mov	cx, [ebp+var_2]
		mov	eax, [ebp+var_18]
		lea	edx, [ebp+var_30]
		mov	[ebp+var_2A], eax
		mov	[ebp+var_2C], cx
		push	edx
		push	4000h
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82A016

loc_7F81C305:				; CODE XREF: sub_7F81BF33+3AEj
		push	dword ptr [ebp+var_2]
		push	[ebp+var_18]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F828E7A

loc_7F81C316:				; CODE XREF: sub_7F81BF33+376j
					; sub_7F81BF33+3A4j
		cmp	[ebp+var_18], 0
		jz	short loc_7F81C324
		push	[ebp+var_18]
		call	sub_7F82F149

loc_7F81C324:				; CODE XREF: sub_7F81BF33+3E7j
		dec	word_7F838070
		mov	eax, esi
		test	esi, esi
		jnz	short loc_7F81C333
		mov	eax, edi

loc_7F81C333:				; CODE XREF: sub_7F81BF33+3Ej
					; sub_7F81BF33+3FCj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F81BF33	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81C33C	proc near		; CODE XREF: sub_7F81BF33+2BEp

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		xor	bx, bx
		push	edi
		push	[ebp+arg_4]
		call	sub_7F8198FC
		mov	di, ax
		test	di, di
		jz	loc_7F81C458
		movsx	eax, di
		shl	eax, 2
		push	0
		push	eax
		call	sub_7F82F03B
		mov	[ebp+var_4], eax
		mov	esi, eax
		test	esi, esi
		jz	loc_7F81C458
		mov	[ebp+var_8], 4
		mov	ax, di
		dec	di
		test	ax, ax
		jz	short loc_7F81C3B7

loc_7F81C388:				; CODE XREF: sub_7F81C33C+79j
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+var_4]
		push	0
		push	edi
		push	[ebp+arg_4]
		call	sub_7F818D47
		test	eax, eax
		jnz	short loc_7F81C3A6
		add	[ebp+var_4], 4
		inc	bx
		jmp	short loc_7F81C3AD
; ---------------------------------------------------------------------------

loc_7F81C3A6:				; CODE XREF: sub_7F81C33C+60j
		mov	[ebp+var_8], 4

loc_7F81C3AD:				; CODE XREF: sub_7F81C33C+68j
		mov	ax, di
		dec	di
		test	ax, ax
		jnz	short loc_7F81C388

loc_7F81C3B7:				; CODE XREF: sub_7F81C33C+4Aj
		cmp	dword_7F838078,	0
		mov	eax, 253h
		jnz	short loc_7F81C3F7
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	edi, [edx]
		mov	dword_7F838078,	edi
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx
		xor	eax, eax

loc_7F81C3F7:				; CODE XREF: sub_7F81C33C+87j
		test	eax, eax
		jnz	short loc_7F81C44E
		test	bx, bx
		lea	edi, [ebx-1]
		mov	[ebp+var_4], esi
		jle	short loc_7F81C420

loc_7F81C406:				; CODE XREF: sub_7F81C33C+E2j
		mov	eax, [ebp+var_4]
		push	0
		add	[ebp+var_4], 4
		push	dword ptr [eax]
		call	sub_7F81479E
		mov	ax, di
		dec	di
		test	ax, ax
		jg	short loc_7F81C406

loc_7F81C420:				; CODE XREF: sub_7F81C33C+C8j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F81C436
		call	sub_7F82A34F
		jmp	short loc_7F81C444
; ---------------------------------------------------------------------------

loc_7F81C436:				; CODE XREF: sub_7F81C33C+F1j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F81C444:				; CODE XREF: sub_7F81C33C+F8j
		mov	dword_7F838078,	0

loc_7F81C44E:				; CODE XREF: sub_7F81C33C+BDj
		test	esi, esi
		jz	short loc_7F81C458
		push	esi
		call	sub_7F82F149

loc_7F81C458:				; CODE XREF: sub_7F81C33C+1Aj
					; sub_7F81C33C+35j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F81C33C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81C461	proc near		; CODE XREF: sub_7F81BF33+30Ep

var_18		= byte ptr -18h
var_14		= word ptr -14h
var_12		= dword	ptr -12h
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

		inc	word_7F838070
		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_8]
		call	sub_7F8198FC
		lea	esi, [eax-1]
		test	si, si
		jl	loc_7F81C55F
		xor	edi, edi

loc_7F81C487:				; CODE XREF: sub_7F81C461+F8j
		push	esi
		push	[ebp+arg_8]
		call	sub_7F819508
		lea	ecx, [ebp+var_8]
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_4]
		push	eax
		push	1
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		test	eax, eax
		jnz	loc_7F81C557
		push	edi
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	sub_7F8194ED
		mov	bx, ax
		test	bx, bx
		jl	short loc_7F81C4D5
		push	ebx
		push	[ebp+var_4]
		call	sub_7F818AE7
		test	eax, eax
		jz	short loc_7F81C4D2
		mov	bx, 0FFFFh

loc_7F81C4D2:				; CODE XREF: sub_7F81C461+6Bj
		test	bx, bx

loc_7F81C4D5:				; CODE XREF: sub_7F81C461+5Ej
		mov	eax, 1
		jge	short loc_7F81C4DE
		xor	eax, eax

loc_7F81C4DE:				; CODE XREF: sub_7F81C461+79j
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_7F81813C
		test	eax, eax
		jnz	short loc_7F81C548
		test	bx, bx
		jl	short loc_7F81C548
		cmp	[ebp+arg_C], edi
		jnz	short loc_7F81C503
		push	0FFFFFFFFh
		push	[ebp+var_8]
		push	[ebp+arg_0]
		call	sub_7F82C50A

loc_7F81C503:				; CODE XREF: sub_7F81C461+93j
		cmp	word_7F838070, 1
		jnz	short loc_7F81C557
		mov	word_7F833C12, bx
		mov	eax, [ebp+arg_4]
		lea	ecx, [ebp+var_18]
		mov	dword_7F833C14,	eax
		mov	[ebp+var_12], offset word_7F833C10
		mov	word_7F833C10, 3
		mov	[ebp+var_14], 1
		push	ecx
		push	4000h
		push	[ebp+var_8]
		push	[ebp+arg_0]
		call	sub_7F82A016
		jmp	short loc_7F81C557
; ---------------------------------------------------------------------------

loc_7F81C548:				; CODE XREF: sub_7F81C461+89j
					; sub_7F81C461+8Ej
		cmp	[ebp+var_4], edi
		jz	short loc_7F81C557
		push	edi
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_7F81813C

loc_7F81C557:				; CODE XREF: sub_7F81C461+46j
					; sub_7F81C461+AAj ...
		dec	si
		jns	loc_7F81C487

loc_7F81C55F:				; CODE XREF: sub_7F81C461+1Ej
		dec	word_7F838070
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F81C461	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81C56F	proc near		; CODE XREF: sub_7F82729D+C8p

var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= word ptr -48h
var_42		= dword	ptr -42h
var_3C		= dword	ptr -3Ch
var_38		= byte ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= word 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		= word ptr -8
var_6		= word ptr -6
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 50h
		push	ebx
		push	esi
		xor	bx, bx
		push	edi
		xor	edi, edi
		mov	[ebp+var_6], di
		mov	[ebp+var_C], edi
		mov	[ebp+var_8], di
		mov	[ebp+var_28], edi
		mov	word ptr [ebp+var_4], di
		mov	ecx, [ebp+arg_10]
		mov	ax, [ecx]
		mov	[ebp+var_10], edi
		mov	word ptr [ebp+var_4+2],	ax
		mov	[ebp+var_18], edi
		mov	[ecx], di
		mov	[ebp+var_3C], edi
		cmp	ax, di
		jg	short loc_7F81C5C0
		cmp	ax, 1
		mov	eax, 0
		adc	eax, 0FFFFFFFFh
		and	eax, 210h
		jmp	loc_7F81CC97
; ---------------------------------------------------------------------------

loc_7F81C5C0:				; CODE XREF: sub_7F81C56F+39j
		cmp	[ebp+arg_14], 0
		jz	short loc_7F81C5D5
		mov	eax, [ebp+arg_4]
		cmp	[ebp+arg_8], eax
		jnz	short loc_7F81C5D5
		xor	eax, eax
		jmp	loc_7F81CC97
; ---------------------------------------------------------------------------

loc_7F81C5D5:				; CODE XREF: sub_7F81C56F+55j
					; sub_7F81C56F+5Dj
		inc	word_7F838070
		push	0
		lea	eax, [ebp+var_2C]
		lea	ecx, [ebp+var_50]
		push	eax
		push	0
		push	ecx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82D114
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81C60F
		cmp	esi, 1001h
		jnz	loc_7F81CAEF
		mov	esi, 1009h
		jmp	loc_7F81CAEF
; ---------------------------------------------------------------------------

loc_7F81C60F:				; CODE XREF: sub_7F81C56F+88j
		test	byte ptr [ebp+var_2C], 4
		jnz	short loc_7F81C61F
		mov	esi, 1015h
		jmp	loc_7F81CAEF
; ---------------------------------------------------------------------------

loc_7F81C61F:				; CODE XREF: sub_7F81C56F+A4j
		xor	eax, eax
		mov	ax, [ebp+var_2C]
		and	eax, 10h
		cmp	[ebp+arg_14], 0
		mov	[ebp+var_24], eax
		jz	short loc_7F81C66D
		test	eax, eax
		jz	short loc_7F81C66D
		cmp	[ebp+arg_8], 74735782h
		jnz	short loc_7F81C663
		mov	ax, word ptr [ebp+var_4+2]
		mov	ecx, [ebp+arg_10]
		dec	word_7F838070
		push	ecx
		mov	[ecx], ax
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F81BF33
		jmp	loc_7F81CC97
; ---------------------------------------------------------------------------

loc_7F81C663:				; CODE XREF: sub_7F81C56F+CDj
		mov	esi, 1015h
		jmp	loc_7F81CAEF
; ---------------------------------------------------------------------------

loc_7F81C66D:				; CODE XREF: sub_7F81C56F+C0j
					; sub_7F81C56F+C4j
		push	0
		lea	eax, [ebp+var_2C]
		push	eax
		push	0
		push	0
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_7F82D114
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81C69E
		cmp	esi, 1001h
		jnz	loc_7F81CAEF
		mov	esi, 1009h
		jmp	loc_7F81CAEF
; ---------------------------------------------------------------------------

loc_7F81C69E:				; CODE XREF: sub_7F81C56F+117j
		test	byte ptr [ebp+var_2C], 4
		jnz	short loc_7F81C6AE
		mov	esi, 1015h
		jmp	loc_7F81CAEF
; ---------------------------------------------------------------------------

loc_7F81C6AE:				; CODE XREF: sub_7F81C56F+133j
		xor	eax, eax
		mov	ax, [ebp+var_2C]
		and	eax, 10h
		cmp	[ebp+arg_14], 0
		mov	[ebp+var_14], eax
		jz	short loc_7F81C6D4
		test	eax, eax
		jz	short loc_7F81C6CE
		mov	esi, 1015h
		jmp	loc_7F81CAEF
; ---------------------------------------------------------------------------

loc_7F81C6CE:				; CODE XREF: sub_7F81C56F+153j
		cmp	[ebp+arg_14], 0
		jnz	short loc_7F81C6DF

loc_7F81C6D4:				; CODE XREF: sub_7F81C56F+14Fj
		cmp	[ebp+var_14], 0
		mov	eax, 0
		jz	short loc_7F81C6E4

loc_7F81C6DF:				; CODE XREF: sub_7F81C56F+163j
		mov	eax, 1

loc_7F81C6E4:				; CODE XREF: sub_7F81C56F+16Ej
		lea	ecx, [ebp+var_18]
		lea	edx, [ebp+arg_4]
		push	ecx
		push	eax
		push	edx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81CAF3
		lea	eax, [ebp+var_3C]
		lea	ecx, [ebp+arg_8]
		push	eax
		push	1
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81CAF3
		movsx	eax, word ptr [ebp+var_4+2]
		shl	eax, 3
		push	20h
		push	eax
		call	sub_7F82F03B
		mov	[ebp+var_28], eax
		test	eax, eax
		jnz	short loc_7F81C73B
		mov	esi, 400h
		jmp	loc_7F81CAEF
; ---------------------------------------------------------------------------

loc_7F81C73B:				; CODE XREF: sub_7F81C56F+1C0j
		movsx	eax, word ptr [ebp+var_4+2]
		shl	eax, 3
		push	20h
		push	eax
		call	sub_7F82F03B
		mov	[ebp+var_C], eax
		test	eax, eax
		jnz	short loc_7F81C75B
		mov	esi, 400h
		jmp	loc_7F81CAEF
; ---------------------------------------------------------------------------

loc_7F81C75B:				; CODE XREF: sub_7F81C56F+1E0j
		movsx	eax, word ptr [ebp+var_4+2]
		push	0
		add	eax, eax
		push	eax
		call	sub_7F82F03B
		mov	[ebp+var_10], eax
		test	eax, eax
		jnz	short loc_7F81C77A
		mov	esi, 400h
		jmp	loc_7F81CAEF
; ---------------------------------------------------------------------------

loc_7F81C77A:				; CODE XREF: sub_7F81C56F+1FFj
		push	[ebp+var_10]
		mov	bx, word ptr [ebp+var_4+2]
		lea	ecx, [ebp+var_4+2]
		push	ecx
		push	[ebp+arg_C]
		push	[ebp+var_18]
		call	sub_7F81A344
		cmp	word ptr [ebp+var_4+2],	bx
		jz	short loc_7F81C7A8
		mov	bx, word ptr [ebp+var_4+2]
		mov	edi, 1004h
		test	bx, bx
		jz	loc_7F81CAEF

loc_7F81C7A8:				; CODE XREF: sub_7F81C56F+225j
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+var_4+2]
		push	[ebp+arg_C]
		push	[ebp+arg_0]
		call	sub_7F82C702
		cmp	[ebp+arg_14], 0
		jnz	short loc_7F81C7F0
		cmp	[ebp+var_14], 0
		jnz	short loc_7F81C7FA
		mov	ax, word ptr [ebp+var_4+2]
		lea	ecx, [ebp+var_4]
		mov	[ebp+var_6], ax
		push	ecx
		lea	eax, [ebp+var_6]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_C]
		push	0
		push	[ebp+arg_0]
		call	sub_7F81CCA0
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81CAF3

loc_7F81C7F0:				; CODE XREF: sub_7F81C56F+24Fj
		cmp	[ebp+var_14], 0
		jz	loc_7F81C8F4

loc_7F81C7FA:				; CODE XREF: sub_7F81C56F+255j
		cmp	[ebp+var_24], 0
		jnz	loc_7F81C8F4
		push	offset byte_7F8369F8
		push	[ebp+var_50]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F81B6A6
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81CAF3
		and	[ebp+var_48], 0FFFCh
		lea	eax, [ebp+var_48]
		push	eax
		push	[ebp+var_18]
		call	sub_7F8199E0
		mov	ax, word ptr [ebp+var_4+2]
		dec	ax
		mov	[ebp+var_2C], ax
		js	loc_7F81C8F4

loc_7F81C843:				; CODE XREF: sub_7F81C56F+37Fj
		mov	[ebp+var_24], 19Dh
		mov	eax, [ebp+var_10]
		movsx	ecx, [ebp+var_2C]
		lea	edx, [eax+ecx*2]
		lea	ecx, [ebp+var_24]
		mov	ax, [edx]
		push	ecx
		push	offset ReturnedString
		mov	[ebp+var_1C], edx
		push	0
		push	eax
		push	[ebp+var_18]
		call	sub_7F818D47
		cmp	eax, 1014h
		mov	esi, eax
		jz	short loc_7F81C87F
		test	esi, esi
		jnz	loc_7F81CAF3

loc_7F81C87F:				; CODE XREF: sub_7F81C56F+306j
		mov	eax, [ebp+arg_4]
		push	offset sz	; lpString
		mov	dword_7F8367EF,	eax
		call	ds:lstrlenA
		lea	esi, unk_7F8367F4[eax]
		push	esi		; lpString
		call	ds:lstrlenA
		lea	esi, [eax+esi+1]
		push	offset byte_7F8369F8 ; lpString
		call	ds:lstrlenA
		push	offset byte_7F8369F8 ; lpString2
		mov	[ebp+var_20], eax
		push	esi		; lpString1
		call	ds:lstrcpyA
		mov	ecx, [ebp+var_20]
		lea	eax, [ecx+eax+1]
		mov	byte ptr [eax],	0
		sub	eax, offset unk_7F8367D7
		push	eax
		mov	[ebp+var_24], eax
		push	offset ReturnedString
		push	[ebp+var_1C]
		push	[ebp+var_18]
		call	sub_7F818E95
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81CAF3
		dec	[ebp+var_2C]
		jns	loc_7F81C843

loc_7F81C8F4:				; CODE XREF: sub_7F81C56F+285j
					; sub_7F81C56F+28Fj ...
		cmp	[ebp+arg_14], 0
		mov	bx, word ptr [ebp+var_4+2]
		jnz	short loc_7F81C909
		cmp	[ebp+var_14], 0
		jnz	short loc_7F81C909
		mov	eax, [ebp+arg_C]
		jmp	short loc_7F81C90B
; ---------------------------------------------------------------------------

loc_7F81C909:				; CODE XREF: sub_7F81C56F+38Dj
					; sub_7F81C56F+393j
		xor	eax, eax

loc_7F81C90B:				; CODE XREF: sub_7F81C56F+398j
		push	ebx
		push	[ebp+var_C]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_3C]
		push	[ebp+var_18]
		call	sub_7F81A57F
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81CAF3
		cmp	[ebp+arg_14], 0
		jnz	short loc_7F81C934
		cmp	[ebp+var_14], 0
		jz	short loc_7F81C946

loc_7F81C934:				; CODE XREF: sub_7F81C56F+3BDj
		lea	eax, [ebp+var_4]
		push	eax
		push	1
		push	ebx
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	sub_7F82C7BB

loc_7F81C946:				; CODE XREF: sub_7F81C56F+3C3j
		cmp	[ebp+arg_14], 0
		jz	short loc_7F81C97C
		push	[ebp+var_4+2]
		push	[ebp+var_10]
		call	sub_7F81A3DB
		push	[ebp+var_4+2]
		push	[ebp+var_28]
		push	[ebp+var_10]
		push	[ebp+var_18]
		call	sub_7F81A42D
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81CAF3
		cmp	[ebp+arg_14], 0
		jnz	loc_7F81CA97

loc_7F81C97C:				; CODE XREF: sub_7F81C56F+3DBj
		cmp	[ebp+var_14], 0
		jz	loc_7F81CA91
		mov	[ebp+var_1C], 0
		lea	eax, [ebx-1]
		mov	[ebp+var_2C], ax
		test	ax, ax
		jl	loc_7F81CA7C

loc_7F81C99D:				; CODE XREF: sub_7F81C56F+507j
		mov	ecx, [ebp+arg_C]
		push	0
		movsx	eax, [ebp+var_2C]
		push	0
		lea	edx, [ecx+eax*4]
		lea	eax, [ebp+var_20]
		mov	[ebp+var_42], edx
		push	eax
		push	0
		push	dword ptr [edx]
		push	[ebp+arg_0]
		call	sub_7F82D114
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81C9D7
		cmp	esi, 1001h
		jnz	loc_7F81CAEF
		xor	esi, esi
		jmp	loc_7F81CA72
; ---------------------------------------------------------------------------

loc_7F81C9D7:				; CODE XREF: sub_7F81C56F+453j
		cmp	[ebp+var_20], 1
		sbb	eax, eax
		lea	ecx, [ebp+var_1C]
		neg	eax
		push	ecx
		mov	[ebp+var_4C], eax
		mov	eax, [ebp+var_20]
		push	1
		and	al, 88h
		or	al, 88h
		mov	[ebp+var_20], eax
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_0]
		call	sub_7F817E9D
		cmp	eax, 1001h
		mov	esi, eax
		jnz	short loc_7F81CA1B
		lea	eax, [ebp+var_1C]
		lea	ecx, [ebp+var_20]
		push	eax
		push	2
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax

loc_7F81CA1B:				; CODE XREF: sub_7F81C56F+496j
		test	esi, esi
		jnz	loc_7F81CAF3
		push	0
		lea	ecx, [ebp+var_24+2]
		push	[ebp+arg_8]
		push	ecx
		push	[ebp+var_1C]
		call	sub_7F818B75
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81CA42
		cmp	esi, 1003h
		jnz	short loc_7F81CA7C

loc_7F81CA42:				; CODE XREF: sub_7F81C56F+4C9j
		push	1
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_7F81813C
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81CA7C
		cmp	[ebp+var_4C], 0
		jz	short loc_7F81CA72
		push	0
		lea	eax, [ebp+var_20]
		push	1
		push	eax
		push	[ebp+var_42]
		push	[ebp+arg_0]
		call	sub_7F82D2BE
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81CA7C

loc_7F81CA72:				; CODE XREF: sub_7F81C56F+463j
					; sub_7F81C56F+4E8j
		dec	[ebp+var_2C]
		jns	loc_7F81C99D

loc_7F81CA7C:				; CODE XREF: sub_7F81C56F+428j
					; sub_7F81C56F+4D1j ...
		cmp	[ebp+var_1C], 0
		jz	short loc_7F81CA8D
		push	0
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_7F81813C

loc_7F81CA8D:				; CODE XREF: sub_7F81C56F+511j
		test	esi, esi
		jnz	short loc_7F81CAF3

loc_7F81CA91:				; CODE XREF: sub_7F81C56F+411j
		cmp	[ebp+arg_14], 0
		jz	short loc_7F81CAB9

loc_7F81CA97:				; CODE XREF: sub_7F81C56F+407j
		push	ebx
		mov	ecx, [ebp+var_C]
		push	[ebp+var_28]
		mov	dx, [ecx+2]
		push	edx
		push	[ebp+var_4+2]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F829147
		jmp	short loc_7F81CAD0
; ---------------------------------------------------------------------------

loc_7F81CAB9:				; CODE XREF: sub_7F81C56F+526j
		mov	eax, [ebp+var_C]
		mov	ax, [eax+2]
		push	eax
		push	ebx
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_7F8290A9

loc_7F81CAD0:				; CODE XREF: sub_7F81C56F+548j
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81CAF3
		cmp	[ebp+var_14], 0
		jnz	short loc_7F81CAEF
		push	0
		push	[ebp+arg_8]
		push	[ebp+var_4+2]
		push	[ebp+arg_C]
		push	[ebp+arg_0]
		call	sub_7F82D1DF

loc_7F81CAEF:				; CODE XREF: sub_7F81C56F+90j
					; sub_7F81C56F+9Bj ...
		test	esi, esi
		jz	short loc_7F81CB24

loc_7F81CAF3:				; CODE XREF: sub_7F81C56F+18Aj
					; sub_7F81C56F+1A6j ...
		cmp	[ebp+var_6], 0
		jle	short loc_7F81CB24
		mov	[ebp+var_2C], 0

loc_7F81CB00:				; CODE XREF: sub_7F81C56F+5B3j
		push	0
		mov	ecx, [ebp+arg_C]
		movsx	eax, [ebp+var_2C]
		push	1
		push	dword ptr [ecx+eax*4]
		push	[ebp+arg_0]
		call	sub_7F82B9DE
		inc	[ebp+var_2C]
		mov	cx, [ebp+var_2C]
		cmp	cx, [ebp+var_6]
		jl	short loc_7F81CB00

loc_7F81CB24:				; CODE XREF: sub_7F81C56F+582j
					; sub_7F81C56F+589j
		cmp	[ebp+var_18], 0
		jz	short loc_7F81CB45
		cmp	[ebp+arg_14], 0
		jz	short loc_7F81CB39
		mov	eax, 1
		test	esi, esi
		jz	short loc_7F81CB3B

loc_7F81CB39:				; CODE XREF: sub_7F81C56F+5BFj
		xor	eax, eax

loc_7F81CB3B:				; CODE XREF: sub_7F81C56F+5C8j
		push	eax
		lea	ecx, [ebp+var_18]
		push	ecx
		call	sub_7F81813C

loc_7F81CB45:				; CODE XREF: sub_7F81C56F+5B9j
		cmp	[ebp+var_3C], 0
		jz	short loc_7F81CB5C
		lea	ecx, [ebp+var_3C]
		cmp	esi, 1
		sbb	eax, eax
		neg	eax
		push	eax
		push	ecx
		call	sub_7F81813C

loc_7F81CB5C:				; CODE XREF: sub_7F81C56F+5DAj
		test	esi, esi
		jnz	loc_7F81CC2C
		cmp	[ebp+arg_14], 0
		jz	short loc_7F81CB84
		cmp	[ebp+var_8], 0
		jz	short loc_7F81CB84
		mov	ax, [ebp+var_8]
		neg	ax
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82C50A

loc_7F81CB84:				; CODE XREF: sub_7F81C56F+5F9j
					; sub_7F81C56F+600j
		cmp	word ptr [ebp+var_4], 0
		jz	short loc_7F81CB99
		push	[ebp+var_4]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_7F82C50A

loc_7F81CB99:				; CODE XREF: sub_7F81C56F+61Aj
		push	[ebp+arg_0]
		call	sub_7F82A1E7
		test	esi, esi
		jnz	loc_7F81CC3C
		cmp	word_7F838070, 1
		jnz	short loc_7F81CC2C
		test	bx, bx
		jle	short loc_7F81CC2C
		mov	eax, [ebp+var_C]
		lea	ecx, [ebp+var_38]
		push	ecx
		mov	[ebp+var_34+2],	eax
		mov	word ptr [ebp+var_34], bx
		push	4000h
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_7F82A016
		cmp	[ebp+arg_14], 0
		jz	short loc_7F81CC2C
		mov	eax, [ebp+var_28]
		lea	ecx, [ebp+var_38]
		push	ecx
		mov	[ebp+var_34+2],	eax
		mov	word ptr [ebp+var_34], bx
		push	4000h
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82A016
		mov	bx, word ptr [ebp+var_4+2]
		mov	ecx, [ebp+arg_4]
		dec	bx
		mov	edx, [ebp+arg_8]
		mov	[ebp+var_34], ecx
		mov	[ebp+var_30], edx
		js	short loc_7F81CC2C

loc_7F81CC0E:				; CODE XREF: sub_7F81C56F+6BBj
		lea	eax, [ebp+var_38]
		mov	ecx, [ebp+arg_C]
		movsx	edx, bx
		push	eax
		push	400h
		push	dword ptr [ecx+edx*4]
		push	[ebp+arg_0]
		call	sub_7F82A016
		dec	bx
		jns	short loc_7F81CC0E

loc_7F81CC2C:				; CODE XREF: sub_7F81C56F+5EFj
					; sub_7F81C56F+642j ...
		test	esi, esi
		jnz	short loc_7F81CC3C
		mov	ax, word ptr [ebp+var_4+2]
		mov	ecx, [ebp+arg_10]
		mov	[ecx], ax
		mov	esi, edi

loc_7F81CC3C:				; CODE XREF: sub_7F81C56F+634j
					; sub_7F81C56F+6BFj
		mov	ecx, [ebp+arg_10]
		dec	word_7F838070
		xor	eax, eax
		cmp	[ecx], ax
		jz	short loc_7F81CC6B
		cmp	[ebp+var_14], eax
		jnz	short loc_7F81CC6B
		cmp	[ebp+arg_14], eax
		jz	short loc_7F81CC6B
		push	[ebp+var_C]
		push	[ebp+arg_8]
		push	[ebp+var_4+2]
		push	[ebp+arg_C]
		push	[ebp+arg_0]
		call	sub_7F81CE7B

loc_7F81CC6B:				; CODE XREF: sub_7F81C56F+6DCj
					; sub_7F81C56F+6E1j ...
		cmp	[ebp+var_C], 0
		jz	short loc_7F81CC79
		push	[ebp+var_C]
		call	sub_7F82F149

loc_7F81CC79:				; CODE XREF: sub_7F81C56F+700j
		cmp	[ebp+var_28], 0
		jz	short loc_7F81CC87
		push	[ebp+var_28]
		call	sub_7F82F149

loc_7F81CC87:				; CODE XREF: sub_7F81C56F+70Ej
		cmp	[ebp+var_10], 0
		jz	short loc_7F81CC95
		push	[ebp+var_10]
		call	sub_7F82F149

loc_7F81CC95:				; CODE XREF: sub_7F81C56F+71Cj
		mov	eax, esi

loc_7F81CC97:				; CODE XREF: sub_7F81C56F+4Cj
					; sub_7F81C56F+61j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F81C56F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81CCA0	proc near		; CODE XREF: sub_7F81C56F+272p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		xor	si, si
		push	edi
		xor	ebx, ebx
		cmp	[ebp+arg_14], ebx
		jz	short loc_7F81CCB9
		mov	eax, [ebp+arg_14]
		mov	[eax], bx

loc_7F81CCB9:				; CODE XREF: sub_7F81CCA0+11j
		mov	eax, [ebp+arg_10]
		cmp	word ptr [eax],	0
		jle	loc_7F81CDD8
		xor	edi, edi

loc_7F81CCC8:				; CODE XREF: sub_7F81CCA0+132j
		cmp	[ebp+arg_4], edi
		jz	short loc_7F81CCDB
		push	esi
		push	[ebp+arg_4]
		call	sub_7F819508
		mov	[ebp+var_10], eax
		jmp	short loc_7F81CCE3
; ---------------------------------------------------------------------------

loc_7F81CCDB:				; CODE XREF: sub_7F81CCA0+2Bj
		mov	eax, [ebp+arg_8]
		mov	ecx, [eax]
		mov	[ebp+var_10], ecx

loc_7F81CCE3:				; CODE XREF: sub_7F81CCA0+39j
		lea	eax, [ebp+var_2]
		lea	edx, [ebp+var_C]
		push	eax
		mov	[ebp+var_8], edi
		push	[ebp+arg_C]
		push	edx
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+var_10]
		push	[ebp+arg_0]
		call	sub_7F82BD62
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F81CD3B
		cmp	ebx, 1008h
		jnz	loc_7F81CDD8
		xor	ebx, ebx
		mov	eax, [ebp+arg_10]
		dec	word ptr [eax]
		cmp	[ebp+arg_4], edi
		jz	loc_7F81CDCC
		push	esi
		push	[ebp+arg_4]
		call	sub_7F818AE7
		mov	ebx, eax
		test	ebx, ebx
		jz	loc_7F81CDCC
		jmp	loc_7F81CDD8
; ---------------------------------------------------------------------------

loc_7F81CD3B:				; CODE XREF: sub_7F81CCA0+64j
		cmp	[ebp+var_2], di
		jnz	short loc_7F81CD4C
		cmp	[ebp+arg_14], edi
		jz	short loc_7F81CD4C
		mov	eax, [ebp+arg_14]
		inc	word ptr [eax]

loc_7F81CD4C:				; CODE XREF: sub_7F81CCA0+9Fj
					; sub_7F81CCA0+A4j
		inc	si
		cmp	[ebp+var_C], edi
		jz	short loc_7F81CDA7
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+var_8]
		push	[ebp+var_10]
		push	[ebp+arg_0]
		call	sub_7F811467
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F81CD91
		cmp	ebx, 1001h
		jnz	short loc_7F81CD8B
		push	edi
		lea	eax, [ebp+var_C]
		push	1
		lea	ecx, [ebp+var_8]
		push	eax
		mov	[ebp+var_C], edi
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F82D2BE
		mov	ebx, eax

loc_7F81CD8B:				; CODE XREF: sub_7F81CCA0+D1j
		test	ebx, ebx
		jz	short loc_7F81CDA7
		jmp	short loc_7F81CDD8
; ---------------------------------------------------------------------------

loc_7F81CD91:				; CODE XREF: sub_7F81CCA0+C9j
		cmp	[ebp+var_14], edi
		jz	short loc_7F81CDA7
		push	[ebp+var_14]
		push	[ebp+arg_0]
		call	sub_7F81CDEE
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F81CDD8

loc_7F81CDA7:				; CODE XREF: sub_7F81CCA0+B1j
					; sub_7F81CCA0+EDj ...
		cmp	[ebp+arg_4], edi
		jz	short loc_7F81CDC0
		mov	eax, [ebp+var_8]
		push	eax
		mov	ax, si
		dec	ax
		push	eax
		push	[ebp+arg_4]
		call	sub_7F81A318
		jmp	short loc_7F81CDCC
; ---------------------------------------------------------------------------

loc_7F81CDC0:				; CODE XREF: sub_7F81CCA0+10Aj
		mov	ecx, [ebp+var_8]
		mov	eax, [ebp+arg_8]
		add	[ebp+arg_8], 4
		mov	[eax], ecx

loc_7F81CDCC:				; CODE XREF: sub_7F81CCA0+7Dj
					; sub_7F81CCA0+90j ...
		mov	eax, [ebp+arg_10]
		cmp	[eax], si
		jg	loc_7F81CCC8

loc_7F81CDD8:				; CODE XREF: sub_7F81CCA0+20j
					; sub_7F81CCA0+6Cj ...
		mov	eax, [ebp+arg_10]
		cmp	[eax], si
		jle	short loc_7F81CDE3
		mov	[eax], si

loc_7F81CDE3:				; CODE XREF: sub_7F81CCA0+13Ej
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F81CCA0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81CDEE	proc near		; CODE XREF: sub_7F81CCA0+FCp

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		lea	eax, [ebp+var_4]
		push	esi
		lea	ecx, [ebp+arg_4]
		push	edi
		xor	esi, esi
		push	eax
		mov	[ebp+var_4], esi
		push	esi
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		cmp	eax, esi
		mov	edi, eax
		jnz	short loc_7F81CE5F
		push	[ebp+var_4]
		call	sub_7F8198FC
		cmp	ax, si
		mov	bx, ax
		jz	short loc_7F81CE5F
		mov	[ebp+var_C], 4
		dec	bx
		test	ax, ax
		jle	short loc_7F81CE5F

loc_7F81CE31:				; CODE XREF: sub_7F81CDEE+6Fj
		lea	eax, [ebp+var_C]
		lea	ecx, [ebp+var_8]
		push	eax
		push	ecx
		push	esi
		push	ebx
		push	[ebp+var_4]
		call	sub_7F818D47
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F81CE5F
		push	esi
		push	[ebp+var_8]
		push	[ebp+arg_0]
		call	sub_7F82BFE4
		mov	ax, bx
		dec	bx
		test	ax, ax
		jg	short loc_7F81CE31

loc_7F81CE5F:				; CODE XREF: sub_7F81CDEE+23j
					; sub_7F81CDEE+33j ...
		cmp	[ebp+var_4], 0
		jz	short loc_7F81CE70
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_7F81813C

loc_7F81CE70:				; CODE XREF: sub_7F81CDEE+75j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F81CDEE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81CE7B	proc near		; CODE XREF: sub_7F81C56F+6F7p

var_38		= byte ptr -38h
var_34		= word ptr -34h
var_32		= dword	ptr -32h
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_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
var_8		= word ptr -8
var_6		= word ptr -6
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

		push	ebp
		mov	ebp, esp
		sub	esp, 38h
		mov	ax, [ebp+arg_8]
		push	ebx
		mov	[ebp+var_8], ax
		push	esi
		push	edi
		xor	esi, esi
		push	esi
		mov	[ebp+var_14], esi
		push	20h
		mov	[ebp+var_C], esi
		call	sub_7F82F18D
		mov	[ebp+var_18], eax
		cmp	eax, esi
		jnz	short loc_7F81CEAD
		mov	eax, 400h
		jmp	loc_7F81D223
; ---------------------------------------------------------------------------

loc_7F81CEAD:				; CODE XREF: sub_7F81CE7B+26j
		mov	eax, [ebp+var_18]
		push	0
		push	0
		lea	ecx, [ebp+var_20]
		mov	edi, [eax]
		push	0
		inc	word_7F838070
		push	ecx
		mov	[ebp+var_E], 8
		push	[ebp+arg_C]
		mov	word ptr [ebp+var_4+2],	0
		push	[ebp+arg_0]
		call	sub_7F82D114
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81D1FA
		push	offset byte_7F8369F8
		push	[ebp+var_20]
		push	[ebp+arg_C]
		push	[ebp+arg_0]
		call	sub_7F81B6A6
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81D1FA
		cmp	[ebp+arg_8], 0
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_1C], eax
		jle	loc_7F81D012

loc_7F81CF12:				; CODE XREF: sub_7F81CE7B+191j
		push	0
		lea	eax, [ebp+var_20]
		push	0
		mov	ecx, [ebp+var_1C]
		push	eax
		push	0
		push	dword ptr [ecx]
		push	[ebp+arg_0]
		call	sub_7F82D114
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81CF37
		mov	[ebp+var_14], esi
		jmp	loc_7F81CFFF
; ---------------------------------------------------------------------------

loc_7F81CF37:				; CODE XREF: sub_7F81CE7B+B2j
		mov	eax, [ebp+var_20]
		lea	ecx, [ebp+var_C]
		and	al, 88h
		push	ecx
		or	al, 88h
		push	0
		mov	[ebp+var_20], eax
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81CF70
		cmp	esi, 1001h
		jnz	short loc_7F81CF68
		xor	esi, esi
		jmp	loc_7F81CFFF
; ---------------------------------------------------------------------------

loc_7F81CF68:				; CODE XREF: sub_7F81CE7B+E4j
		mov	[ebp+var_14], esi
		jmp	loc_7F81CFFF
; ---------------------------------------------------------------------------

loc_7F81CF70:				; CODE XREF: sub_7F81CE7B+DCj
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		mov	edx, [ecx+18h]
		mov	ebx, [edx]
		mov	ax, [ebx]
		add	ebx, 0Eh
		mov	[ebp+var_6], ax
		test	ax, ax
		jle	short loc_7F81CFEC

loc_7F81CF89:				; CODE XREF: sub_7F81CE7B+168j
		push	dword ptr [ebx]
		movsx	eax, word ptr [ebp+var_4+2]
		shl	eax, 2
		push	eax
		push	edi
		call	sub_7F82A419
		test	eax, eax
		jnz	short loc_7F81CFD7
		inc	word ptr [ebp+var_4+2]
		mov	ax, word ptr [ebp+var_4+2]
		cmp	[ebp+var_E], ax
		jg	short loc_7F81CFCD
		add	[ebp+var_E], 8
		movsx	eax, [ebp+var_E]
		shl	eax, 2
		push	0
		push	eax
		push	[ebp+var_18]
		call	sub_7F82F24A
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F81CFE7
		mov	[ebp+var_18], edi
		mov	edi, [edi]

loc_7F81CFCD:				; CODE XREF: sub_7F81CE7B+12Ej
		movsx	ecx, word ptr [ebp+var_4+2]
		mov	eax, [ebx]
		mov	[edi+ecx*4-4], eax

loc_7F81CFD7:				; CODE XREF: sub_7F81CE7B+120j
		dec	[ebp+var_6]
		add	ebx, 0Ch
		cmp	[ebp+var_6], 0
		jg	short loc_7F81CF89
		jmp	short loc_7F81CFEC
; ---------------------------------------------------------------------------

loc_7F81CFE7:				; CODE XREF: sub_7F81CE7B+14Bj
		mov	esi, 400h

loc_7F81CFEC:				; CODE XREF: sub_7F81CE7B+10Cj
					; sub_7F81CE7B+16Aj
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_7F81813C
		test	esi, esi
		jnz	loc_7F81D1FA

loc_7F81CFFF:				; CODE XREF: sub_7F81CE7B+B7j
					; sub_7F81CE7B+E8j ...
		add	[ebp+var_1C], 4
		dec	[ebp+arg_8]
		cmp	[ebp+arg_8], 0
		jg	loc_7F81CF12

loc_7F81D012:				; CODE XREF: sub_7F81CE7B+91j
		mov	eax, [ebp+var_18]
		cmp	word ptr [ebp+var_4+2],	0
		mov	ecx, [eax]
		mov	[ebp-10h], ecx
		jle	loc_7F81D1FA

loc_7F81D025:				; CODE XREF: sub_7F81CE7B+379j
		lea	eax, [ebp+var_C]
		push	eax
		push	1
		push	dword ptr [ebp-10h]
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81D053
		cmp	esi, 1001h
		jnz	short loc_7F81D04B
		xor	esi, esi
		jmp	loc_7F81D1E7
; ---------------------------------------------------------------------------

loc_7F81D04B:				; CODE XREF: sub_7F81CE7B+1C7j
		mov	[ebp+var_14], esi
		jmp	loc_7F81D1E7
; ---------------------------------------------------------------------------

loc_7F81D053:				; CODE XREF: sub_7F81CE7B+1BFj
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		mov	edx, [ecx+18h]
		mov	ebx, [edx]
		mov	edi, [ebp+arg_10]
		mov	ax, [ebx+2]
		mov	cx, ax
		and	cx, 3
		and	ax, 0FFFCh
		mov	[ebp+var_6], cx
		mov	cx, [ebp+var_8]
		mov	[ebx+2], ax
		mov	eax, [ebp+arg_4]
		mov	[ebp+arg_8], cx
		mov	[ebp+var_1C], eax
		test	cx, cx
		jle	loc_7F81D172

loc_7F81D08E:				; CODE XREF: sub_7F81CE7B+2F1j
		push	0
		mov	eax, [ebp+var_1C]
		mov	edx, [ebp+var_C]
		push	dword ptr [eax]
		mov	eax, [edx]
		mov	ecx, [eax+18h]
		push	dword ptr [ecx]
		call	sub_7F819486
		mov	word ptr [ebp+var_4], ax
		test	ax, ax
		jl	loc_7F81D15F
		mov	[ebp+var_24], 19Dh
		lea	eax, [ebp+var_24]
		push	eax
		push	offset ReturnedString
		push	0
		push	[ebp+var_4]
		push	[ebp+var_C]
		call	sub_7F818D47
		cmp	eax, 1014h
		mov	esi, eax
		jz	short loc_7F81D0DF
		test	esi, esi
		jnz	loc_7F81D172

loc_7F81D0DF:				; CODE XREF: sub_7F81CE7B+25Aj
		mov	eax, [ebp+arg_C]
		push	offset sz	; lpString
		mov	dword_7F8367EF,	eax
		call	ds:lstrlenA
		lea	esi, unk_7F8367F4[eax]
		push	esi		; lpString
		call	ds:lstrlenA
		lea	esi, [eax+esi+1]
		push	offset byte_7F8369F8 ; lpString
		call	ds:lstrlenA
		push	offset byte_7F8369F8 ; lpString2
		mov	[ebp+var_28], eax
		push	esi		; lpString1
		call	ds:lstrcpyA
		mov	ecx, [ebp+var_28]
		lea	eax, [ecx+eax+1]
		lea	ecx, [ebp+var_4]
		mov	byte ptr [eax],	0
		sub	eax, offset unk_7F8367D7
		push	eax
		mov	[ebp+var_24], eax
		push	offset ReturnedString
		push	ecx
		push	[ebp+var_C]
		call	sub_7F818E95
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81D172
		mov	word ptr [edi],	2
		mov	ecx, [ebp+var_1C]
		mov	ax, word ptr [ebp+var_4]
		add	edi, 8
		mov	[edi-6], ax
		mov	edx, [ecx]
		mov	[edi-4], edx

loc_7F81D15F:				; CODE XREF: sub_7F81CE7B+230j
		add	[ebp+var_1C], 4
		dec	[ebp+arg_8]
		cmp	[ebp+arg_8], 0
		jg	loc_7F81D08E

loc_7F81D172:				; CODE XREF: sub_7F81CE7B+20Dj
					; sub_7F81CE7B+25Ej ...
		mov	ax, [ebx+2]
		mov	cx, ax
		xor	cx, [ebp+var_6]
		and	cx, 3
		xor	cx, ax
		test	esi, esi
		mov	[ebx+2], cx
		jz	short loc_7F81D19C
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		mov	[ebp+var_14], esi
		call	sub_7F81813C
		jmp	short loc_7F81D1E7
; ---------------------------------------------------------------------------

loc_7F81D19C:				; CODE XREF: sub_7F81CE7B+30Fj
		push	1
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_7F81813C
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81D1B2
		mov	[ebp+var_14], esi
		jmp	short loc_7F81D1E7
; ---------------------------------------------------------------------------

loc_7F81D1B2:				; CODE XREF: sub_7F81CE7B+330j
		cmp	word_7F838070, 1
		jnz	short loc_7F81D1E7
		cmp	[ebp+arg_10], edi
		jz	short loc_7F81D1E7
		sub	edi, [ebp+arg_10]
		mov	eax, [ebp+arg_10]
		sar	edi, 3
		lea	ecx, [ebp+var_38]
		mov	[ebp+var_34], di
		push	ecx
		push	4000h
		mov	edx, [ebp-10h]
		mov	[ebp+var_32], eax
		push	dword ptr [edx]
		push	[ebp+arg_0]
		call	sub_7F82A016

loc_7F81D1E7:				; CODE XREF: sub_7F81CE7B+1CBj
					; sub_7F81CE7B+1D3j ...
		add	dword ptr [ebp-10h], 4
		dec	word ptr [ebp+var_4+2]
		cmp	word ptr [ebp+var_4+2],	0
		jnz	loc_7F81D025

loc_7F81D1FA:				; CODE XREF: sub_7F81CE7B+63j
					; sub_7F81CE7B+80j ...
		push	[ebp+var_18]
		dec	word_7F838070
		call	sub_7F82F1E1
		cmp	[ebp+var_C], 0
		jz	short loc_7F81D21A
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_7F81813C

loc_7F81D21A:				; CODE XREF: sub_7F81CE7B+392j
		mov	eax, esi
		test	esi, esi
		jnz	short loc_7F81D223
		mov	eax, [ebp+var_14]

loc_7F81D223:				; CODE XREF: sub_7F81CE7B+2Dj
					; sub_7F81CE7B+3A3j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F81CE7B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81D22C	proc near		; CODE XREF: sub_7F810955+B3p

var_40		= byte ptr -40h
var_3C		= word ptr -3Ch
var_3A		= dword	ptr -3Ah
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
lpString	= dword	ptr -28h
var_24		= dword	ptr -24h
lpString1	= 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		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 40h
		push	ebx
		push	esi
		inc	word_7F838070
		push	edi
		xor	esi, esi
		lea	eax, [ebp+var_4]
		push	eax
		lea	ecx, [ebp+var_C]
		push	ecx
		lea	edx, [ebp+var_2C]
		push	edx
		mov	[ebp+var_8], esi
		mov	[ebp+var_14], esi
		mov	[ebp+var_10], esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82C63C
		mov	[ebp+var_24], eax
		cmp	eax, esi
		jz	short loc_7F81D271
		mov	[ebp+var_4], si
		mov	[ebp+var_2C], esi
		mov	[ebp+var_C], esi
		jmp	short loc_7F81D27B
; ---------------------------------------------------------------------------

loc_7F81D271:				; CODE XREF: sub_7F81D22C+37j
		mov	eax, [ebp+var_C]
		and	al, 88h
		or	al, 88h
		mov	[ebp+var_C], eax

loc_7F81D27B:				; CODE XREF: sub_7F81D22C+43j
		lea	eax, [ebp+var_30]
		lea	ecx, [ebp+var_8]
		push	eax
		push	ecx
		push	0
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F81BA1F
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81D560
		mov	eax, [ebp+var_8]
		movsx	ecx, [ebp+var_4]
		mov	al, [eax+0Eh]
		and	al, 22h
		cmp	al, 1
		sbb	eax, eax
		inc	eax
		cmp	eax, ecx
		jz	short loc_7F81D2BE
		cmp	[ebp+var_4], 1
		sbb	esi, esi
		and	esi, 0FFFFFFFEh
		inc	si

loc_7F81D2BE:				; CODE XREF: sub_7F81D22C+84j
		push	0
		push	19Dh
		call	sub_7F82F03B
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	short loc_7F81D2DB
		mov	edi, 400h
		jmp	loc_7F81D560
; ---------------------------------------------------------------------------

loc_7F81D2DB:				; CODE XREF: sub_7F81D22C+A3j
		push	[ebp+var_30]
		push	offset ReturnedString
		push	[ebp+var_8]
		call	sub_7F82FCE0
		add	esp, 0Ch
		cmp	[ebp+var_C], 0
		jz	short loc_7F81D31A
		lea	eax, [ebp+var_14]
		lea	ecx, [ebp+var_C]
		push	eax
		push	0
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F81D31A
		cmp	edi, 1001h
		jnz	loc_7F81D560
		xor	edi, edi

loc_7F81D31A:				; CODE XREF: sub_7F81D22C+C6j
					; sub_7F81D22C+DEj
		push	0
		mov	eax, [ebp+var_8]
		push	[ebp+var_30]
		add	eax, 1Bh
		push	eax
		call	sub_7F82A3C9
		test	eax, eax
		jnz	short loc_7F81D339
		mov	edi, 1014h
		jmp	loc_7F81D560
; ---------------------------------------------------------------------------

loc_7F81D339:				; CODE XREF: sub_7F81D22C+101j
		inc	eax
		push	0
		mov	ecx, [ebp+var_8]
		sub	ecx, eax
		add	ecx, [ebp+var_30]
		add	ecx, 1Bh
		push	ecx
		push	eax
		call	sub_7F82A3C9
		mov	[ebp+lpString1], eax
		test	eax, eax
		jnz	short loc_7F81D35F
		mov	edi, 1014h
		jmp	loc_7F81D560
; ---------------------------------------------------------------------------

loc_7F81D35F:				; CODE XREF: sub_7F81D22C+127j
		inc	[ebp+lpString1]
		cmp	[ebp+var_14], 0
		jz	short loc_7F81D376
		push	[ebp+var_14]
		call	sub_7F8198FC
		mov	word ptr [ebp+var_C+2],	ax
		jmp	short loc_7F81D37C
; ---------------------------------------------------------------------------

loc_7F81D376:				; CODE XREF: sub_7F81D22C+13Aj
		mov	word ptr [ebp+var_C+2],	0

loc_7F81D37C:				; CODE XREF: sub_7F81D22C+148j
		cmp	word ptr [ebp+var_C+2],	0
		jl	loc_7F81D560

loc_7F81D387:				; CODE XREF: sub_7F81D22C+32Ej
		cmp	word ptr [ebp+var_C+2],	0
		jnz	short loc_7F81D39D
		mov	eax, [ebp+var_2C]
		mov	[ebp+var_18], eax
		test	eax, eax
		jnz	short loc_7F81D3AF
		jmp	loc_7F81D556
; ---------------------------------------------------------------------------

loc_7F81D39D:				; CODE XREF: sub_7F81D22C+160j
		mov	ax, word ptr [ebp+var_C+2]
		dec	ax
		push	eax
		push	[ebp+var_14]
		call	sub_7F819508
		mov	[ebp+var_18], eax

loc_7F81D3AF:				; CODE XREF: sub_7F81D22C+16Aj
		lea	eax, [ebp+var_10]
		lea	ecx, [ebp+var_18]
		push	eax
		push	1
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F81D3CF
		mov	[ebp+var_24], edi
		jmp	loc_7F81D556
; ---------------------------------------------------------------------------

loc_7F81D3CF:				; CODE XREF: sub_7F81D22C+199j
		push	0
		push	[ebp+arg_4]
		push	[ebp+var_10]
		call	sub_7F8194ED
		mov	[ebp+var_2], ax
		mov	bx, ax
		test	bx, bx
		jge	short loc_7F81D3F2
		mov	edi, 1004h
		jmp	loc_7F81D4BD
; ---------------------------------------------------------------------------

loc_7F81D3F2:				; CODE XREF: sub_7F81D22C+1BAj
		cmp	word ptr [ebp+var_C+2],	0
		jnz	short loc_7F81D410
		mov	eax, [ebp+var_18]
		mov	ecx, [ebp+var_8]
		mov	edx, [ebp+lpString1]
		mov	[ecx+17h], eax
		lea	eax, [edx+1]
		mov	byte ptr [edx],	0
		jmp	loc_7F81D4A1
; ---------------------------------------------------------------------------

loc_7F81D410:				; CODE XREF: sub_7F81D22C+1CBj
		push	ebx
		push	[ebp+var_10]
		call	sub_7F81990D
		mov	[ebp+var_1C], eax
		lea	eax, [ebp+var_1C]
		push	eax
		push	offset ReturnedString
		push	0
		push	dword ptr [ebp+var_2]
		push	[ebp+var_10]
		call	sub_7F818D47
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81D4CE
		mov	eax, dword_7F8367EF
		mov	ecx, [ebp+var_8]
		push	0
		mov	[ecx+17h], eax
		push	[ebp+var_1C]
		push	offset sz
		call	sub_7F82A3C9
		test	eax, eax
		jnz	short loc_7F81D461
		mov	edi, 1014h
		jmp	short loc_7F81D4BD
; ---------------------------------------------------------------------------

loc_7F81D461:				; CODE XREF: sub_7F81D22C+22Cj
		inc	eax
		push	0
		mov	ecx, offset ReturnedString
		sub	ecx, eax
		add	ecx, [ebp+var_1C]
		add	ecx, 1Bh
		push	ecx
		push	eax
		call	sub_7F82A3C9
		mov	[ebp+lpString],	eax
		test	eax, eax
		jnz	short loc_7F81D486
		mov	edi, 1014h
		jmp	short loc_7F81D4BD
; ---------------------------------------------------------------------------

loc_7F81D486:				; CODE XREF: sub_7F81D22C+251j
		push	[ebp+lpString]	; lpString
		call	ds:lstrlenA
		push	[ebp+lpString]	; lpString2
		push	[ebp+lpString1]	; lpString1
		mov	edi, eax
		call	ds:lstrcpyA
		lea	eax, [edi+eax+1]

loc_7F81D4A1:				; CODE XREF: sub_7F81D22C+1DFj
		lea	edx, [ebp+var_2]
		mov	byte ptr [eax],	0
		inc	eax
		sub	eax, [ebp+var_8]
		push	eax
		mov	[ebp+var_1C], eax
		push	[ebp+var_8]
		push	edx
		push	[ebp+var_10]
		call	sub_7F818E95
		mov	edi, eax

loc_7F81D4BD:				; CODE XREF: sub_7F81D22C+1C1j
					; sub_7F81D22C+233j ...
		test	edi, edi
		jnz	short loc_7F81D4D2
		push	1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_7F81813C
		mov	edi, eax

loc_7F81D4CE:				; CODE XREF: sub_7F81D22C+20Aj
		test	edi, edi
		jz	short loc_7F81D4E4

loc_7F81D4D2:				; CODE XREF: sub_7F81D22C+293j
		push	0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_7F81813C
		mov	[ebp+var_24], edi
		xor	edi, edi
		jmp	short loc_7F81D556
; ---------------------------------------------------------------------------

loc_7F81D4E4:				; CODE XREF: sub_7F81D22C+2A4j
		test	si, si
		jz	short loc_7F81D4F5
		push	esi
		push	[ebp+var_18]
		push	[ebp+arg_0]
		call	sub_7F82C50A

loc_7F81D4F5:				; CODE XREF: sub_7F81D22C+2BBj
		cmp	word_7F838070, 1
		jnz	short loc_7F81D556
		cmp	bx, [ebp+var_2]
		jnz	short loc_7F81D531
		mov	word_7F833C1A, bx
		mov	ecx, 4000h
		mov	[ebp+var_3A], offset word_7F833C18
		mov	word_7F833C18, 2
		mov	[ebp+var_3C], 1
		mov	eax, [ebp+arg_4]
		mov	dword_7F833C1C,	eax
		jmp	short loc_7F81D546
; ---------------------------------------------------------------------------

loc_7F81D531:				; CODE XREF: sub_7F81D22C+2D7j
		mov	ax, [ebp+var_2]
		mov	ecx, 8000h
		mov	[ebp+var_3C], bx
		mov	word ptr [ebp+var_3A], bx
		mov	word ptr [ebp+var_3A+2], ax

loc_7F81D546:				; CODE XREF: sub_7F81D22C+303j
		lea	eax, [ebp+var_40]
		push	eax
		push	ecx
		push	[ebp+var_18]
		push	[ebp+arg_0]
		call	sub_7F82A016

loc_7F81D556:				; CODE XREF: sub_7F81D22C+16Cj
					; sub_7F81D22C+19Ej ...
		dec	word ptr [ebp+var_C+2]
		jns	loc_7F81D387

loc_7F81D560:				; CODE XREF: sub_7F81D22C+6Bj
					; sub_7F81D22C+AAj ...
		cmp	[ebp+var_14], 0
		jz	short loc_7F81D571
		push	0
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_7F81813C

loc_7F81D571:				; CODE XREF: sub_7F81D22C+338j
		cmp	[ebp+var_8], 0
		jz	short loc_7F81D57F
		push	[ebp+var_8]
		call	sub_7F82F149

loc_7F81D57F:				; CODE XREF: sub_7F81D22C+349j
		dec	word_7F838070
		mov	eax, edi
		test	edi, edi
		jnz	short loc_7F81D58F
		mov	eax, [ebp+var_24]

loc_7F81D58F:				; CODE XREF: sub_7F81D22C+35Ej
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F81D22C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81D598	proc near		; CODE XREF: sub_7F811CD9+14Bp
					; sub_7F817E9D+245p

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		= byte ptr -8
var_6		= dword	ptr -6
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		mov	[ebp+var_2], 1
		push	ebx
		push	esi
		push	edi
		push	0Ah
		xor	edi, edi
		mov	ebx, [ebp+arg_0]
		push	[ebp+arg_4]
		push	ebx
		mov	word ptr [ebp+var_6+2],	di
		mov	[ebp+var_14], edi
		mov	[ebp+var_10], edi
		call	sub_7F82A93C
		test	eax, eax
		jnz	short loc_7F81D5CF
		mov	eax, 101Eh
		jmp	loc_7F81D907
; ---------------------------------------------------------------------------

loc_7F81D5CF:				; CODE XREF: sub_7F81D598+2Bj
		inc	word_7F838070
		push	0
		push	0
		lea	eax, [ebp+var_28]
		mov	dword_7F836C60,	1
		push	0
		push	eax
		push	[ebp+arg_4]
		push	ebx
		call	sub_7F82D114
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81D8A4
		push	0
		push	8000h
		call	sub_7F82F03B
		mov	[ebp+var_14], eax
		test	eax, eax
		jnz	short loc_7F81D61A
		mov	esi, 400h
		jmp	loc_7F81D8A4
; ---------------------------------------------------------------------------

loc_7F81D61A:				; CODE XREF: sub_7F81D598+76j
		cmp	dword_7F838078,	0
		jz	short loc_7F81D62A
		mov	esi, 253h
		jmp	short loc_7F81D659
; ---------------------------------------------------------------------------

loc_7F81D62A:				; CODE XREF: sub_7F81D598+89j
		mov	eax, [ebx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		xor	esi, esi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ebx

loc_7F81D659:				; CODE XREF: sub_7F81D598+90j
		test	esi, esi
		jnz	loc_7F81D8A4
		mov	cx, 1
		mov	eax, dword_7F838078
		mov	edx, [eax+200h]
		cmp	[edx+8], cx
		jbe	short loc_7F81D6EE
		mov	edx, [ebp+var_14]

loc_7F81D679:				; CODE XREF: sub_7F81D598+154j
		cmp	cx, 1
		jb	short loc_7F81D6C2
		mov	eax, dword_7F838078
		mov	esi, [eax+200h]
		cmp	[esi+8], cx
		jbe	short loc_7F81D6C2
		mov	ax, cx
		shr	ax, 6
		movzx	esi, ax
		and	esi, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	eax, [eax+20Ch]
		mov	eax, [eax]
		mov	eax, [esi+eax]
		xor	esi, esi
		mov	si, cx
		and	esi, 0FFh
		shl	esi, 5
		add	esi, eax
		jmp	short loc_7F81D6C4
; ---------------------------------------------------------------------------

loc_7F81D6C2:				; CODE XREF: sub_7F81D598+E5j
					; sub_7F81D598+F6j
		xor	esi, esi

loc_7F81D6C4:				; CODE XREF: sub_7F81D598+128j
		mov	eax, [ebp+arg_4]
		cmp	[esi+8], eax
		jnz	short loc_7F81D6DB
		test	byte ptr [esi+10h], 20h
		jnz	short loc_7F81D6DB
		mov	eax, [esi+4]
		inc	edi
		mov	[edx], eax
		add	edx, 4

loc_7F81D6DB:				; CODE XREF: sub_7F81D598+132j
					; sub_7F81D598+138j
		inc	cx
		mov	eax, dword_7F838078
		mov	esi, [eax+200h]
		cmp	[esi+8], cx
		ja	short loc_7F81D679

loc_7F81D6EE:				; CODE XREF: sub_7F81D598+DCj
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F81D704
		call	sub_7F82A34F
		jmp	short loc_7F81D712
; ---------------------------------------------------------------------------

loc_7F81D704:				; CODE XREF: sub_7F81D598+163j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F81D712:				; CODE XREF: sub_7F81D598+16Aj
		xor	esi, esi
		lea	eax, [ebp+var_6+2]
		push	eax
		lea	ecx, [ebp+var_2]
		push	ecx
		mov	dword_7F838078,	esi
		push	[ebp+arg_4]
		push	ebx
		call	sub_7F82C0B0
		test	eax, eax
		jz	short loc_7F81D739
		mov	[ebp+var_2], 1
		mov	word ptr [ebp+var_6+2],	si

loc_7F81D739:				; CODE XREF: sub_7F81D598+195j
		lea	eax, [ebp+var_10]
		lea	ecx, [ebp+var_C]
		mov	[ebp+var_C], 82h
		push	eax
		push	2
		push	ecx
		push	ebx
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81D8A4
		push	1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_7F81813C
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81D8A4
		mov	al, byte ptr [ebp+var_C]
		cmp	al, 91h
		jb	short loc_7F81D77A
		xor	eax, eax
		jmp	short loc_7F81D785
; ---------------------------------------------------------------------------

loc_7F81D77A:				; CODE XREF: sub_7F81D598+1DCj
		movzx	eax, al
		movzx	eax, word_7F8358D0[eax*2]

loc_7F81D785:				; CODE XREF: sub_7F81D598+1E0j
		push	eax
		push	[ebp+var_C]
		push	ebx
		call	sub_7F82CF24
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81D8A4
		push	0
		lea	ecx, [ebp+var_C]
		push	[ebp+var_28]
		push	1
		push	ecx
		push	ebx
		call	sub_7F82D1DF
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81D8A4
		movsx	eax, word ptr [ebp+var_6+2]
		push	eax
		push	dword ptr [ebp+var_2]
		push	[ebp+var_C]
		push	ebx
		call	sub_7F82C1D4
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81D8A4
		lea	eax, [ebp+var_10]
		lea	ecx, [ebp+var_C]
		push	eax
		push	1
		push	ecx
		push	ebx
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81D8A4
		mov	word ptr [ebp+var_6], 0
		mov	[ebp+var_24], edi

loc_7F81D7F2:				; CODE XREF: sub_7F81D598+280j
					; sub_7F81D598+2E1j
		mov	eax, edi
		dec	edi
		test	eax, eax
		jle	loc_7F81D886
		lea	eax, [ebp+var_20]
		lea	ecx, [ebp+var_18]
		push	eax
		push	ecx
		mov	eax, [ebp+var_14]
		push	[ebp+arg_4]
		push	0
		push	dword ptr [eax+edi*4]
		push	ebx
		call	sub_7F81BA1F
		test	eax, eax
		jnz	short loc_7F81D7F2
		lea	eax, [ebp+var_1C]
		mov	edx, [ebp+var_14]
		push	eax
		push	[ebp+var_20]
		push	dword ptr [edx+edi*4]
		push	[ebp+var_10]
		call	sub_7F819BC5
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81D8A4
		push	[ebp+var_20]
		push	[ebp+var_18]
		push	[ebp+var_1C]
		call	sub_7F81A03B
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81D8A4
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_1C]
		push	eax
		push	ecx
		call	sub_7F81A0C1
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81D8A4
		mov	eax, [ebp+var_18]
		test	byte ptr [eax+0Eh], 22h
		jnz	short loc_7F81D869
		inc	word ptr [ebp+var_6]

loc_7F81D869:				; CODE XREF: sub_7F81D598+2CBj
		mov	ax, word ptr [ebp+var_24]
		push	eax
		sub	ax, di
		push	eax
		call	sub_7F82A9CA
		test	eax, eax
		jnz	loc_7F81D7F2
		mov	esi, 101Eh
		jmp	short loc_7F81D8A4
; ---------------------------------------------------------------------------

loc_7F81D886:				; CODE XREF: sub_7F81D598+25Fj
		push	[ebp+arg_4]
		lea	ecx, [ebp+var_10]
		push	ecx
		call	sub_7F8183DC
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81D8A4
		push	[ebp+var_6]
		push	[ebp+arg_4]
		push	ebx
		call	sub_7F82C5AA

loc_7F81D8A4:				; CODE XREF: sub_7F81D598+5Fj
					; sub_7F81D598+7Dj ...
		cmp	[ebp+var_14], 0
		jz	short loc_7F81D8B2
		push	[ebp+var_14]
		call	sub_7F82F149

loc_7F81D8B2:				; CODE XREF: sub_7F81D598+310j
		test	esi, esi
		jnz	short loc_7F81D8C8
		push	0
		push	40000000h
		push	[ebp+arg_4]
		push	ebx
		call	sub_7F82A016
		jmp	short loc_7F81D8EF
; ---------------------------------------------------------------------------

loc_7F81D8C8:				; CODE XREF: sub_7F81D598+31Cj
		cmp	[ebp+var_10], 0
		jz	short loc_7F81D8D9
		push	0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_7F81813C

loc_7F81D8D9:				; CODE XREF: sub_7F81D598+334j
		test	[ebp+var_C], 0FFFFFF00h
		jz	short loc_7F81D8EF
		push	0
		push	1
		push	[ebp+var_C]
		push	ebx
		call	sub_7F82B9DE

loc_7F81D8EF:				; CODE XREF: sub_7F81D598+32Ej
					; sub_7F81D598+348j
		mov	dword_7F836C60,	0
		dec	word_7F838070
		call	sub_7F82AB0B
		mov	eax, esi

loc_7F81D907:				; CODE XREF: sub_7F81D598+32j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F81D598	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81D910	proc near		; CODE XREF: sub_7F823452+19p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	dword_7F836C60,	1
		cmp	[esp+arg_8], 0
		push	ebx
		push	esi
		push	edi
		push	ebp
		jz	short loc_7F81D948
		push	900Dh
		mov	esi, 9005h
		mov	edi, [esp+14h+arg_0]
		push	esi
		push	edi
		call	sub_7F82D4F9
		push	esi
		push	0B002h
		push	edi
		call	sub_7F82D4F9
		jmp	short loc_7F81D94C
; ---------------------------------------------------------------------------

loc_7F81D948:				; CODE XREF: sub_7F81D910+13j
		mov	edi, [esp+10h+arg_0]

loc_7F81D94C:				; CODE XREF: sub_7F81D910+36j
		push	0
		mov	esi, 0FEFFh
		push	esi
		push	900Dh
		push	9005h
		push	edi
		call	sub_7F82D545
		push	0
		mov	eax, 0B002h
		push	esi
		push	eax
		push	eax
		push	edi
		call	sub_7F82D545
		push	0
		push	esi
		push	89h
		push	edi
		call	sub_7F82D59C
		push	0
		push	esi
		push	87h
		push	edi
		mov	ebx, offset aBipmbhid ;	"�IPM�Hid"
		call	sub_7F82D59C
		push	0
		push	esi
		push	88h
		push	edi
		call	sub_7F82D59C
		cmp	dword ptr aBipmbhid, 0 ; "�IPM�Hid"
		mov	esi, [esp+10h+arg_4]
		jz	short loc_7F81D9CB

loc_7F81D9B0:				; CODE XREF: sub_7F81D910+B9j
		push	[esp+10h+arg_8]
		push	esi
		push	dword ptr [ebx]
		push	edi
		call	sub_7F81DA66
		mov	ebp, eax
		test	ebp, ebp
		jnz	short loc_7F81DA08
		add	ebx, 4
		cmp	dword ptr [ebx], 0
		jnz	short loc_7F81D9B0

loc_7F81D9CB:				; CODE XREF: sub_7F81D910+9Ej
		push	esi
		push	edi
		call	sub_7F81DCCA
		mov	ebp, eax
		test	ebp, ebp
		jnz	short loc_7F81DA08
		push	esi
		push	edi
		call	sub_7F81E844
		mov	ebp, eax
		test	ebp, ebp
		jnz	short loc_7F81DA08
		push	esi
		push	edi
		call	sub_7F81E9D4
		mov	ebp, eax
		test	ebp, ebp
		jnz	short loc_7F81DA08
		push	esi
		push	edi
		call	sub_7F81EA21
		mov	ebp, eax
		test	ebp, ebp
		jnz	short loc_7F81DA08
		push	esi
		push	edi
		call	sub_7F81EABA
		mov	ebp, eax

loc_7F81DA08:				; CODE XREF: sub_7F81D910+B1j
					; sub_7F81D910+C6j ...
		xor	esi, esi
		mov	ebx, 0FEFFh
		push	esi
		push	ebx
		push	900Dh
		push	9005h
		push	edi
		call	sub_7F82D545
		push	esi
		mov	eax, 0B002h
		push	ebx
		push	eax
		push	eax
		push	edi
		call	sub_7F82D545
		push	esi
		push	ebx
		push	89h
		push	edi
		call	sub_7F82D59C
		push	esi
		push	ebx
		push	87h
		push	edi
		call	sub_7F82D59C
		push	esi
		push	ebx
		push	88h
		push	edi
		call	sub_7F82D59C
		mov	eax, ebp
		mov	dword_7F836C60,	esi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_7F81D910	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81DA66	proc near		; CODE XREF: sub_7F81D910+A8p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= word ptr -4
var_2		= word ptr -2
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, 10h
		push	ebx
		lea	eax, [ebp+var_8]
		push	esi
		lea	ecx, [ebp+arg_4]
		push	edi
		push	eax
		xor	edi, edi
		push	1
		push	ecx
		mov	[ebp+var_8], edi
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81DAE5
		cmp	esi, 1001h
		jnz	short loc_7F81DADD
		cmp	[ebp+arg_8], edi
		jz	loc_7F81DB53
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+arg_4]
		push	eax
		push	2
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81DC2F
		mov	al, byte ptr [ebp+arg_4]
		cmp	al, 91h
		jb	short loc_7F81DAC4
		xor	eax, eax
		jmp	short loc_7F81DACF
; ---------------------------------------------------------------------------

loc_7F81DAC4:				; CODE XREF: sub_7F81DA66+58j
		movzx	eax, al
		movzx	eax, word_7F8358D0[eax*2]

loc_7F81DACF:				; CODE XREF: sub_7F81DA66+5Cj
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82CF24
		mov	esi, eax

loc_7F81DADD:				; CODE XREF: sub_7F81DA66+2Cj
		test	esi, esi
		jnz	loc_7F81DC2F

loc_7F81DAE5:				; CODE XREF: sub_7F81DA66+24j
		xor	bx, bx
		push	[ebp+var_8]
		call	sub_7F8198FC
		mov	[ebp+var_2], ax
		cmp	ax, bx
		jle	loc_7F81DC2F

loc_7F81DAFD:				; CODE XREF: sub_7F81DA66+1C3j
		push	ebx
		push	[ebp+var_8]
		call	sub_7F819508
		mov	[ebp+var_10], 104h
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_10]
		push	eax
		push	offset ReturnedString
		push	0
		push	ebx
		push	[ebp+var_8]
		call	sub_7F818D47
		cmp	eax, 1014h
		mov	esi, eax
		jnz	loc_7F81DC2F
		cmp	[ebp+var_10], 0
		jbe	loc_7F81DC2F
		push	[ebp+var_10]
		push	offset ReturnedString
		call	sub_7F81DC6C
		test	eax, eax
		jnz	short loc_7F81DB5A
		xor	esi, esi
		jmp	loc_7F81DC23
; ---------------------------------------------------------------------------

loc_7F81DB53:				; CODE XREF: sub_7F81DA66+31j
		xor	esi, esi
		jmp	loc_7F81DC2F
; ---------------------------------------------------------------------------

loc_7F81DB5A:				; CODE XREF: sub_7F81DA66+E4j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+var_C]
		push	offset ReturnedString
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F81DE67
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81DBB0
		cmp	esi, 1003h
		jz	short loc_7F81DB8D
		cmp	esi, 1015h
		jnz	loc_7F81DC2F

loc_7F81DB8D:				; CODE XREF: sub_7F81DA66+119j
		cmp	[ebp+arg_8], 0
		jz	short loc_7F81DBAE
		push	ebx
		push	[ebp+var_8]
		call	sub_7F818AE7
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81DC2F
		dec	bx
		dec	[ebp+var_2]
		jmp	short loc_7F81DBB0
; ---------------------------------------------------------------------------

loc_7F81DBAE:				; CODE XREF: sub_7F81DA66+12Bj
		xor	esi, esi

loc_7F81DBB0:				; CODE XREF: sub_7F81DA66+111j
					; sub_7F81DA66+146j
		cmp	[ebp+arg_4], 64694881h
		jnz	short loc_7F81DC23
		cmp	[ebp+var_C], 42415070h
		jnz	short loc_7F81DBC9
		mov	edi, 1
		jmp	short loc_7F81DC23
; ---------------------------------------------------------------------------

loc_7F81DBC9:				; CODE XREF: sub_7F81DA66+15Aj
		test	edi, edi
		jz	short loc_7F81DC23
		mov	ax, 1
		mov	edi, 1
		cmp	ax, ReturnedString
		adc	edi, 0FFFFFFFFh
		jz	short loc_7F81DC23
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		push	0
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	sub_7F82D114
		mov	esi, eax
		mov	ax, [ebp+var_4]
		and	ax, 9015h
		cmp	ax, 9015h
		jz	short loc_7F81DC23
		cmp	[ebp+arg_8], 0
		jz	short loc_7F81DC23
		push	9015h
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	sub_7F82CF24
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81DC2F

loc_7F81DC23:				; CODE XREF: sub_7F81DA66+E8j
					; sub_7F81DA66+151j ...
		inc	bx
		cmp	[ebp+var_2], bx
		jg	loc_7F81DAFD

loc_7F81DC2F:				; CODE XREF: sub_7F81DA66+4Dj
					; sub_7F81DA66+79j ...
		cmp	[ebp+var_8], 0
		jz	short loc_7F81DC61
		cmp	[ebp+arg_8], 0
		jz	short loc_7F81DC44
		mov	eax, 1
		test	esi, esi
		jz	short loc_7F81DC46

loc_7F81DC44:				; CODE XREF: sub_7F81DA66+1D3j
		xor	eax, eax

loc_7F81DC46:				; CODE XREF: sub_7F81DA66+1DCj
		push	eax
		lea	ecx, [ebp+var_8]
		push	ecx
		call	sub_7F81813C
		test	eax, eax
		jz	short loc_7F81DC61
		mov	esi, eax
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F81813C

loc_7F81DC61:				; CODE XREF: sub_7F81DA66+1CDj
					; sub_7F81DA66+1ECj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F81DA66	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81DC6C	proc near		; CODE XREF: sub_7F81DA66+DDp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	ebx, [esp+8+arg_0]
		push	edi
		cmp	word ptr [ebx],	100h
		jnb	short loc_7F81DCC2
		mov	edi, [esp+0Ch+arg_4]
		cmp	edi, 2
		jbe	short loc_7F81DCC2
		sub	edi, 2
		add	ebx, 2
		push	0
		push	edi
		push	ebx
		call	sub_7F82A3C9
		test	eax, eax
		jz	short loc_7F81DCC2
		inc	eax
		sub	edi, eax
		mov	esi, eax
		add	edi, ebx
		jz	short loc_7F81DCC2
		push	0
		push	edi
		push	eax
		call	sub_7F82A3C9
		test	eax, eax
		jz	short loc_7F81DCC2
		inc	eax
		sub	edi, eax
		add	edi, esi
		jz	short loc_7F81DCC2
		cmp	byte ptr [eax],	0
		jnz	short loc_7F81DCC2
		mov	eax, 1
		cmp	edi, 1
		jz	short loc_7F81DCC4

loc_7F81DCC2:				; CODE XREF: sub_7F81DC6C+Cj
					; sub_7F81DC6C+15j ...
		xor	eax, eax

loc_7F81DCC4:				; CODE XREF: sub_7F81DC6C+54j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F81DC6C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81DCCA	proc near		; CODE XREF: sub_7F81D910+BDp

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_6		= byte ptr -6
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	[ebp+var_2], si
		mov	[ebp+var_4], si

loc_7F81DCDD:				; CODE XREF: sub_7F81DCCA+3Cj
					; sub_7F81DCCA+18Cj
		mov	ax, [ebp+var_4]
		push	900Dh
		inc	[ebp+var_4]
		push	9005h
		push	eax
		push	[ebp+arg_0]
		call	sub_7F82D5EE
		mov	ebx, eax
		test	ebx, ebx
		jz	loc_7F81DE5C
		cmp	[ebp+arg_4], 0
		jz	short loc_7F81DCDD
		cmp	dword_7F836A88,	0
		mov	eax, offset dword_7F836A88
		jz	short loc_7F81DD26

loc_7F81DD16:				; CODE XREF: sub_7F81DCCA+5Aj
		cmp	[eax], ebx
		jz	loc_7F81DDCB
		add	eax, 8
		cmp	dword ptr [eax], 0
		jnz	short loc_7F81DD16

loc_7F81DD26:				; CODE XREF: sub_7F81DCCA+4Aj
		cmp	byte_7F836A78, 0
		mov	eax, offset byte_7F836A78
		jz	short loc_7F81DD44

loc_7F81DD34:				; CODE XREF: sub_7F81DCCA+78j
		cmp	[eax], bl
		jz	loc_7F81DDD6
		add	eax, 5
		cmp	byte ptr [eax],	0
		jnz	short loc_7F81DD34

loc_7F81DD44:				; CODE XREF: sub_7F81DCCA+68j
		mov	[ebp+var_C], 4D504981h

loc_7F81DD4B:				; CODE XREF: sub_7F81DCCA+107j
					; sub_7F81DCCA+112j
		cmp	dword_7F836AC8,	0
		mov	edi, offset dword_7F836AC8
		jz	short loc_7F81DD65

loc_7F81DD59:				; CODE XREF: sub_7F81DCCA+99j
		cmp	[edi], ebx
		jz	short loc_7F81DD69
		add	edi, 0Ch
		cmp	dword ptr [edi], 0
		jnz	short loc_7F81DD59

loc_7F81DD65:				; CODE XREF: sub_7F81DCCA+8Dj
					; sub_7F81DCCA+184j
		cmp	[edi], ebx
		jnz	short loc_7F81DDE1

loc_7F81DD69:				; CODE XREF: sub_7F81DCCA+91j
		push	dword ptr [edi+4]
		call	sub_7F82AC7E
		push	eax		; lpString
		call	ds:lstrlenA
		push	dword ptr [edi+4]
		mov	esi, eax
		call	sub_7F82AC7E
		push	eax		; lpString2
		push	offset word_7F8367DA ; lpString1
		call	ds:lstrcpyA
		push	dword ptr [edi+8]
		lea	esi, [esi+eax+1]
		call	sub_7F82AC7E
		push	eax		; lpString
		call	ds:lstrlenA
		push	dword ptr [edi+8]
		mov	[ebp+var_10], eax
		call	sub_7F82AC7E
		push	eax		; lpString2
		push	esi		; lpString1
		call	ds:lstrcpyA
		mov	ecx, [ebp+var_10]
		mov	byte ptr [ecx+eax+1], 0
		cmp	dword ptr [edi], 0
		jz	short loc_7F81DE30

loc_7F81DDC1:				; CODE XREF: sub_7F81DCCA+FDj
		add	edi, 0Ch
		cmp	dword ptr [edi], 0
		jnz	short loc_7F81DDC1
		jmp	short loc_7F81DE30
; ---------------------------------------------------------------------------

loc_7F81DDCB:				; CODE XREF: sub_7F81DCCA+4Ej
		mov	eax, [eax+4]
		mov	[ebp+var_C], eax
		jmp	loc_7F81DD4B
; ---------------------------------------------------------------------------

loc_7F81DDD6:				; CODE XREF: sub_7F81DCCA+6Cj
		mov	eax, [eax+1]
		mov	[ebp+var_C], eax
		jmp	loc_7F81DD4B
; ---------------------------------------------------------------------------

loc_7F81DDE1:				; CODE XREF: sub_7F81DCCA+9Dj
		inc	[ebp+var_2]
		lea	eax, [ebp+var_2]
		push	eax
		push	offset aOrphanFolderN ;	"Orphan	folder %n"
		push	80h
		push	offset word_7F8367DA
		call	sub_7F81AEE2
		push	offset word_7F8367DA ; lpString
		call	ds:lstrlenA
		lea	esi, (word_7F8367DA+1)[eax]
		push	offset aAnOrphanedFold ; "An orphaned folder"
		call	ds:lstrlenA
		push	offset aAnOrphanedFold ; "An orphaned folder"
		mov	[ebp+var_10], eax
		push	esi		; lpString1
		call	ds:lstrcpyA
		mov	ecx, [ebp+var_10]
		mov	byte ptr [ecx+eax+1], 0

loc_7F81DE30:				; CODE XREF: sub_7F81DCCA+F5j
					; sub_7F81DCCA+FFj
		lea	eax, [ebp+var_6]
		push	eax
		push	offset ReturnedString
		push	ebx
		push	0
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	sub_7F81B21F
		cmp	eax, 100Fh
		mov	esi, eax
		jz	loc_7F81DD65
		test	esi, esi
		jz	loc_7F81DCDD

loc_7F81DE5C:				; CODE XREF: sub_7F81DCCA+32j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F81DCCA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81DE67	proc near		; CODE XREF: sub_7F81DA66+108p

var_14		= word ptr -14h
var_12		= dword	ptr -12h
var_E		= dword	ptr -0Eh
var_8		= dword	ptr -8
var_4		= byte ptr -4
var_2		= byte ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 14h
		cmp	dword_7F838078,	eax
		push	ebx
		push	esi
		mov	[ebp+var_8], eax
		push	edi
		jz	short loc_7F81DE87
		mov	esi, 253h
		mov	edi, [ebp+arg_0]
		jmp	short loc_7F81DEB9
; ---------------------------------------------------------------------------

loc_7F81DE87:				; CODE XREF: sub_7F81DE67+14j
		mov	edi, [ebp+arg_0]
		mov	eax, [edi]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		xor	esi, esi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edi

loc_7F81DEB9:				; CODE XREF: sub_7F81DE67+1Ej
		test	esi, esi
		jnz	loc_7F81E0A5
		push	0
		push	[ebp+arg_C]
		call	sub_7F8144A4
		test	eax, eax
		jnz	loc_7F81DFF9
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F81DEE9
		call	sub_7F82A34F
		jmp	short loc_7F81DEF7
; ---------------------------------------------------------------------------

loc_7F81DEE9:				; CODE XREF: sub_7F81DE67+79j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F81DEF7:				; CODE XREF: sub_7F81DE67+80j
		push	[ebp+arg_C]
		xor	ebx, ebx
		mov	dword_7F838078,	ebx
		call	sub_7F82DB71
		cmp	ax, 0FFFFh
		jz	loc_7F81DFEF
		and	ax, 9005h
		cmp	ax, 9005h
		jnz	loc_7F81DFEF
		cmp	[ebp+arg_10], ebx
		jz	loc_7F81E0A5
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+arg_C]
		push	eax
		push	2
		push	ecx
		push	edi
		call	sub_7F817E9D
		cmp	eax, ebx
		mov	esi, eax
		jnz	loc_7F81E0A5
		mov	ax, [ebp+var_14]
		mov	[ebp+var_12], ebx
		mov	[ebp+var_E], 9
		and	ax, 0FFFDh
		or	al, 1
		mov	[ebp+var_14], ax
		lea	eax, [ebp+var_14]
		and	[ebp+var_14], 0FFFBh
		push	eax
		push	[ebp+var_8]
		call	sub_7F8199E0
		cmp	eax, ebx
		mov	esi, eax
		jnz	loc_7F81E0A5
		push	1
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F81813C
		cmp	eax, ebx
		mov	esi, eax
		jnz	loc_7F81E0A5
		cmp	dword_7F838078,	ebx
		jz	short loc_7F81DF9A
		mov	esi, 253h
		jmp	short loc_7F81DFC9
; ---------------------------------------------------------------------------

loc_7F81DF9A:				; CODE XREF: sub_7F81DE67+12Aj
		mov	eax, [edi]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		xor	esi, esi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edi

loc_7F81DFC9:				; CODE XREF: sub_7F81DE67+131j
		test	esi, esi
		jnz	loc_7F81E0A5
		push	0
		push	[ebp+arg_C]
		call	sub_7F8144A4
		and	word ptr [eax+10h], 0FEFFh
		mov	word ptr [eax+12h], 9005h
		mov	edx, [ebp+arg_4]
		mov	[eax+8], edx
		jmp	short loc_7F81DFFC
; ---------------------------------------------------------------------------

loc_7F81DFEF:				; CODE XREF: sub_7F81DE67+A4j
					; sub_7F81DE67+B2j
		mov	esi, 1015h
		jmp	loc_7F81E0A5
; ---------------------------------------------------------------------------

loc_7F81DFF9:				; CODE XREF: sub_7F81DE67+66j
		mov	edx, [ebp+arg_4]

loc_7F81DFFC:				; CODE XREF: sub_7F81DE67+186j
		mov	cx, [eax+12h]
		and	cx, 9005h
		cmp	cx, 9005h
		jz	short loc_7F81E016
		mov	esi, 1015h
		jmp	loc_7F81E0A5
; ---------------------------------------------------------------------------

loc_7F81E016:				; CODE XREF: sub_7F81DE67+1A3j
		mov	cx, [eax+10h]
		test	ch, 1
		jz	short loc_7F81E026
		mov	esi, 1003h
		jmp	short loc_7F81E0A5
; ---------------------------------------------------------------------------

loc_7F81E026:				; CODE XREF: sub_7F81DE67+1B6j
		or	ch, 1
		mov	[eax+10h], cx
		cmp	[eax+8], edx
		jz	short loc_7F81E041
		cmp	[ebp+arg_10], 0
		jz	short loc_7F81E041
		push	eax
		mov	[eax+8], edx
		call	sub_7F8148F7

loc_7F81E041:				; CODE XREF: sub_7F81DE67+1C9j
					; sub_7F81DE67+1CFj
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F81E057
		call	sub_7F82A34F
		jmp	short loc_7F81E065
; ---------------------------------------------------------------------------

loc_7F81E057:				; CODE XREF: sub_7F81DE67+1E7j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F81E065:				; CODE XREF: sub_7F81DE67+1EEj
		xor	ebx, ebx
		lea	eax, [ebp+var_2]
		push	eax
		lea	ecx, [ebp+var_4]
		push	ecx
		mov	dword_7F838078,	ebx
		push	[ebp+arg_C]
		push	edi
		call	sub_7F82C0B0
		test	eax, eax
		jz	short loc_7F81E094
		push	ebx
		push	1
		push	[ebp+arg_C]
		push	edi
		call	sub_7F82C1D4
		cmp	eax, ebx
		mov	esi, eax
		jnz	short loc_7F81E0A5

loc_7F81E094:				; CODE XREF: sub_7F81DE67+219j
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	edi
		call	sub_7F81E10F
		mov	esi, eax

loc_7F81E0A5:				; CODE XREF: sub_7F81DE67+54j
					; sub_7F81DE67+BBj ...
		cmp	dword_7F838078,	0
		jz	short loc_7F81E0DC
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F81E0C4
		call	sub_7F82A34F
		jmp	short loc_7F81E0D2
; ---------------------------------------------------------------------------

loc_7F81E0C4:				; CODE XREF: sub_7F81DE67+254j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F81E0D2:				; CODE XREF: sub_7F81DE67+25Bj
		mov	dword_7F838078,	0

loc_7F81E0DC:				; CODE XREF: sub_7F81DE67+245j
		cmp	[ebp+var_8], 0
		jz	short loc_7F81E104
		lea	ecx, [ebp+var_8]
		cmp	esi, 1
		sbb	eax, eax
		neg	eax
		push	eax
		push	ecx
		call	sub_7F81813C
		test	eax, eax
		jz	short loc_7F81E104
		mov	esi, eax
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F81813C

loc_7F81E104:				; CODE XREF: sub_7F81DE67+279j
					; sub_7F81DE67+28Ej
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F81DE67	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81E10F	proc near		; CODE XREF: sub_7F81DE67+237p

var_8		= dword	ptr -8
var_2		= word ptr -2
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
		push	ebx
		lea	eax, [ebp+var_8]
		push	esi
		lea	ecx, [ebp+arg_4]
		push	edi
		push	eax
		xor	edi, edi
		push	1
		push	ecx
		mov	[ebp+var_8], edi
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81E162
		cmp	esi, 1001h
		jnz	short loc_7F81E15A
		cmp	[ebp+arg_8], edi
		jz	loc_7F81E203
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+arg_4]
		push	eax
		push	2
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax

loc_7F81E15A:				; CODE XREF: sub_7F81E10F+2Cj
		test	esi, esi
		jnz	loc_7F81E1EC

loc_7F81E162:				; CODE XREF: sub_7F81E10F+24j
		xor	edi, edi
		lea	eax, [ebp+var_2]
		push	edi
		push	eax
		push	edi
		push	edi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82D114
		cmp	eax, edi
		mov	esi, eax
		jnz	short loc_7F81E1EC
		push	[ebp+var_8]
		call	sub_7F8198FC
		mov	bx, ax
		dec	bx
		test	ax, ax
		jle	short loc_7F81E1EC

loc_7F81E18E:				; CODE XREF: sub_7F81E10F+DBj
		push	ebx
		push	[ebp+var_8]
		call	sub_7F819508
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	eax
		xor	eax, eax
		mov	ax, [ebp+var_2]
		and	eax, 10h
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F81E22F
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81E1E2
		cmp	esi, 1001h
		jz	short loc_7F81E1D1
		cmp	esi, 1003h
		jz	short loc_7F81E1D1
		cmp	esi, 1015h
		jnz	short loc_7F81E1EC

loc_7F81E1D1:				; CODE XREF: sub_7F81E10F+B0j
					; sub_7F81E10F+B8j
		cmp	[ebp+arg_8], 0
		jz	short loc_7F81E1E2
		push	ebx
		push	[ebp+var_8]
		call	sub_7F818AE7
		mov	esi, eax

loc_7F81E1E2:				; CODE XREF: sub_7F81E10F+A8j
					; sub_7F81E10F+C6j
		mov	ax, bx
		dec	bx
		test	ax, ax
		jg	short loc_7F81E18E

loc_7F81E1EC:				; CODE XREF: sub_7F81E10F+4Dj
					; sub_7F81E10F+6Bj ...
		cmp	[ebp+var_8], 0
		jz	short loc_7F81E224
		cmp	[ebp+arg_8], 0
		jz	short loc_7F81E207
		test	esi, esi
		jnz	short loc_7F81E207
		mov	eax, 1
		jmp	short loc_7F81E209
; ---------------------------------------------------------------------------

loc_7F81E203:				; CODE XREF: sub_7F81E10F+31j
		xor	esi, esi
		jmp	short loc_7F81E1EC
; ---------------------------------------------------------------------------

loc_7F81E207:				; CODE XREF: sub_7F81E10F+E7j
					; sub_7F81E10F+EBj
		xor	eax, eax

loc_7F81E209:				; CODE XREF: sub_7F81E10F+F2j
		push	eax
		lea	ecx, [ebp+var_8]
		push	ecx
		call	sub_7F81813C
		test	eax, eax
		jz	short loc_7F81E224
		mov	esi, eax
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F81813C

loc_7F81E224:				; CODE XREF: sub_7F81E10F+E1j
					; sub_7F81E10F+106j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F81E10F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81E22F	proc near		; CODE XREF: sub_7F81E10F+9Fp

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	[ebp+var_10], esi
		mov	[ebp+var_C], esi
		push	[ebp+arg_C]
		mov	[ebp+var_8], esi
		call	sub_7F82DB71
		cmp	ax, 0FFFFh
		jz	loc_7F81E5B0
		and	ax, 0B002h
		cmp	ax, 0B002h
		jnz	loc_7F81E5B0
		cmp	dword_7F838078,	esi
		jz	short loc_7F81E275
		mov	esi, 253h
		mov	edi, [ebp+arg_0]
		jmp	short loc_7F81E2A7
; ---------------------------------------------------------------------------

loc_7F81E275:				; CODE XREF: sub_7F81E22F+3Aj
		mov	edi, [ebp+arg_0]
		mov	eax, [edi]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		xor	esi, esi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edi

loc_7F81E2A7:				; CODE XREF: sub_7F81E22F+44j
		test	esi, esi
		jnz	loc_7F81E5B5
		push	0
		push	[ebp+arg_C]
		call	sub_7F8144A4
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F81E383
		cmp	[ebp+arg_10], 0
		jz	loc_7F81E5B5
		cmp	byte ptr [ebp+arg_C], 71h
		jnz	short loc_7F81E2DD
		mov	esi, 1001h
		jmp	loc_7F81E5B5
; ---------------------------------------------------------------------------

loc_7F81E2DD:				; CODE XREF: sub_7F81E22F+A2j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F81E2F3
		call	sub_7F82A34F
		jmp	short loc_7F81E301
; ---------------------------------------------------------------------------

loc_7F81E2F3:				; CODE XREF: sub_7F81E22F+BBj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F81E301:				; CODE XREF: sub_7F81E22F+C2j
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	edi
		xor	ebx, ebx
		mov	dword_7F838078,	ebx
		call	sub_7F81EB89
		cmp	eax, ebx
		mov	esi, eax
		jnz	loc_7F81E5B5
		cmp	dword_7F838078,	ebx
		jz	short loc_7F81E32E
		mov	esi, 253h
		jmp	short loc_7F81E35D
; ---------------------------------------------------------------------------

loc_7F81E32E:				; CODE XREF: sub_7F81E22F+F6j
		mov	eax, [edi]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		xor	esi, esi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edi

loc_7F81E35D:				; CODE XREF: sub_7F81E22F+FDj
		test	esi, esi
		jnz	loc_7F81E5B5
		push	0
		push	[ebp+arg_C]
		call	sub_7F8144A4
		mov	ebx, eax
		mov	eax, [ebp+arg_4]
		mov	[ebx+8], eax
		mov	word ptr [ebx+12h], 0B002h
		and	word ptr [ebx+10h], 0FEFFh

loc_7F81E383:				; CODE XREF: sub_7F81E22F+8Ej
		mov	ax, [ebx+12h]
		and	ax, 0B002h
		cmp	ax, 0B002h
		jnz	loc_7F81E5B0
		cmp	[ebp+arg_8], 0
		jnz	short loc_7F81E3DF
		test	byte ptr [ebx+11h], 1
		jz	short loc_7F81E3AB
		mov	esi, 1003h
		jmp	loc_7F81E5B5
; ---------------------------------------------------------------------------

loc_7F81E3AB:				; CODE XREF: sub_7F81E22F+170j
		cmp	word ptr [ebx+1Eh], 1
		jz	short loc_7F81E3C4
		cmp	[ebp+arg_10], 0
		jz	short loc_7F81E3C4
		mov	word ptr [ebx+1Eh], 1
		push	ebx
		call	sub_7F8148F7

loc_7F81E3C4:				; CODE XREF: sub_7F81E22F+181j
					; sub_7F81E22F+187j
		or	byte ptr [ebx+11h], 1
		mov	eax, [ebp+arg_4]
		cmp	[ebx+8], eax
		jz	short loc_7F81E3DF
		cmp	[ebp+arg_10], 0
		jz	short loc_7F81E3DF
		push	ebx
		mov	[ebx+8], eax
		call	sub_7F8148F7

loc_7F81E3DF:				; CODE XREF: sub_7F81E22F+16Aj
					; sub_7F81E22F+19Fj ...
		mov	eax, [ebx+0Ch]
		mov	ecx, dword_7F838078
		mov	esi, eax
		and	al, 88h
		and	esi, 0FFFFFF89h
		or	al, 88h
		or	esi, 89h
		mov	[ebp+var_C], eax
		cmp	word ptr [ecx+254h], 0
		jz	short loc_7F81E40B
		call	sub_7F82A34F
		jmp	short loc_7F81E419
; ---------------------------------------------------------------------------

loc_7F81E40B:				; CODE XREF: sub_7F81E22F+1D3j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F81E419:				; CODE XREF: sub_7F81E22F+1DAj
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	esi
		push	[ebp+arg_C]
		push	edi
		xor	ebx, ebx
		mov	dword_7F838078,	ebx
		call	sub_7F81E629
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81E5B5
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_C]
		cmp	[ebp+arg_10], 1
		push	eax
		sbb	eax, eax
		inc	eax
		push	eax
		push	ecx
		push	edi
		call	sub_7F817E9D
		cmp	eax, 1001h
		mov	esi, eax
		jnz	short loc_7F81E48D
		cmp	[ebp+arg_8], ebx
		jz	short loc_7F81E486
		cmp	[ebp+arg_10], ebx
		jz	short loc_7F81E47F
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_C]
		push	eax
		push	2
		push	ecx
		push	edi
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81E48D
		jmp	loc_7F81E5B5
; ---------------------------------------------------------------------------

loc_7F81E47F:				; CODE XREF: sub_7F81E22F+233j
		xor	esi, esi
		jmp	loc_7F81E5B5
; ---------------------------------------------------------------------------

loc_7F81E486:				; CODE XREF: sub_7F81E22F+22Ej
		xor	esi, esi
		jmp	loc_7F81E5B5
; ---------------------------------------------------------------------------

loc_7F81E48D:				; CODE XREF: sub_7F81E22F+229j
					; sub_7F81E22F+249j
		xor	ebx, ebx
		test	esi, esi
		jnz	loc_7F81E5B5
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+var_8]
		call	sub_7F8194ED
		mov	[ebp+var_2], ax
		cmp	ax, bx
		jge	short loc_7F81E4CC
		cmp	[ebp+arg_8], ebx
		jz	short loc_7F81E4F4
		cmp	[ebp+arg_10], ebx
		jz	short loc_7F81E4F4
		push	ebx
		lea	ecx, [ebp+var_2]
		push	[ebp+arg_4]
		push	ecx
		push	[ebp+var_8]
		call	sub_7F818B75
		cmp	eax, ebx
		mov	esi, eax
		jmp	short loc_7F81E4E7
; ---------------------------------------------------------------------------

loc_7F81E4CC:				; CODE XREF: sub_7F81E22F+27Bj
		cmp	[ebp+arg_8], 0
		jnz	short loc_7F81E4F4
		cmp	[ebp+arg_10], 0
		jz	short loc_7F81E4F4
		push	dword ptr [ebp+var_2]
		push	[ebp+var_8]
		call	sub_7F818AE7
		mov	esi, eax
		test	esi, esi

loc_7F81E4E7:				; CODE XREF: sub_7F81E22F+29Bj
		jnz	loc_7F81E5B5
		mov	[ebp+var_10], 1

loc_7F81E4F4:				; CODE XREF: sub_7F81E22F+280j
					; sub_7F81E22F+285j ...
		push	[ebp+var_10]
		lea	ecx, [ebp+var_8]
		push	ecx
		call	sub_7F81813C
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81E5B5
		cmp	dword_7F838078,	0
		jz	short loc_7F81E51A
		mov	esi, 253h
		jmp	short loc_7F81E549
; ---------------------------------------------------------------------------

loc_7F81E51A:				; CODE XREF: sub_7F81E22F+2E2j
		mov	eax, [edi]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		xor	esi, esi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edi

loc_7F81E549:				; CODE XREF: sub_7F81E22F+2E9j
		test	esi, esi
		jnz	short loc_7F81E5B5
		push	0
		push	[ebp+var_C]
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F81E55F
		or	byte ptr [eax+11h], 1

loc_7F81E55F:				; CODE XREF: sub_7F81E22F+32Aj
		xor	edi, edi
		cmp	[ebp+arg_10], edi
		jz	short loc_7F81E580
		push	edi
		push	[ebp+arg_C]
		call	sub_7F8144A4
		cmp	[eax+0Ch], edi
		jnz	short loc_7F81E580
		mov	ecx, [ebp+var_C]
		push	eax
		mov	[eax+0Ch], ecx
		call	sub_7F8148F7

loc_7F81E580:				; CODE XREF: sub_7F81E22F+335j
					; sub_7F81E22F+343j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F81E596
		call	sub_7F82A34F
		jmp	short loc_7F81E5A4
; ---------------------------------------------------------------------------

loc_7F81E596:				; CODE XREF: sub_7F81E22F+35Ej
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F81E5A4:				; CODE XREF: sub_7F81E22F+365j
		mov	dword_7F838078,	0
		jmp	short loc_7F81E5B5
; ---------------------------------------------------------------------------

loc_7F81E5B0:				; CODE XREF: sub_7F81E22F+20j
					; sub_7F81E22F+2Ej ...
		mov	esi, 1015h

loc_7F81E5B5:				; CODE XREF: sub_7F81E22F+7Aj
					; sub_7F81E22F+98j ...
		cmp	dword_7F838078,	0
		jz	short loc_7F81E5EC
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F81E5D4
		call	sub_7F82A34F
		jmp	short loc_7F81E5E2
; ---------------------------------------------------------------------------

loc_7F81E5D4:				; CODE XREF: sub_7F81E22F+39Cj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F81E5E2:				; CODE XREF: sub_7F81E22F+3A3j
		mov	dword_7F838078,	0

loc_7F81E5EC:				; CODE XREF: sub_7F81E22F+38Dj
		cmp	[ebp+var_8], 0
		jz	short loc_7F81E61E
		cmp	[ebp+arg_10], 0
		jz	short loc_7F81E601
		mov	eax, 1
		test	esi, esi
		jz	short loc_7F81E603

loc_7F81E601:				; CODE XREF: sub_7F81E22F+3C7j
		xor	eax, eax

loc_7F81E603:				; CODE XREF: sub_7F81E22F+3D0j
		push	eax
		lea	ecx, [ebp+var_8]
		push	ecx
		call	sub_7F81813C
		test	eax, eax
		jz	short loc_7F81E61E
		mov	esi, eax
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F81813C

loc_7F81E61E:				; CODE XREF: sub_7F81E22F+3C1j
					; sub_7F81E22F+3E0j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F81E22F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81E629	proc near		; CODE XREF: sub_7F81E22F+1FDp

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 10h
		cmp	dword_7F838078,	eax
		push	ebx
		push	esi
		mov	[ebp+var_8], eax
		push	edi
		jz	short loc_7F81E649
		mov	esi, 253h
		mov	edi, [ebp+arg_0]
		jmp	short loc_7F81E67B
; ---------------------------------------------------------------------------

loc_7F81E649:				; CODE XREF: sub_7F81E629+14j
		mov	edi, [ebp+arg_0]
		mov	eax, [edi]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		xor	esi, esi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edi

loc_7F81E67B:				; CODE XREF: sub_7F81E629+1Ej
		test	esi, esi
		jnz	loc_7F81E7D0
		push	0
		push	[ebp+arg_8]
		call	sub_7F8144A4
		test	eax, eax
		jz	loc_7F81E7D0
		or	byte ptr [eax+11h], 1
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F81E6AF
		call	sub_7F82A34F
		jmp	short loc_7F81E6BD
; ---------------------------------------------------------------------------

loc_7F81E6AF:				; CODE XREF: sub_7F81E629+7Dj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F81E6BD:				; CODE XREF: sub_7F81E629+84j
		xor	ebx, ebx
		lea	eax, [ebp+var_8]
		push	eax
		lea	ecx, [ebp+arg_8]
		cmp	[ebp+arg_C], 1
		sbb	eax, eax
		mov	dword_7F838078,	ebx
		inc	eax
		push	eax
		push	ecx
		push	edi
		call	sub_7F817E9D
		cmp	eax, ebx
		mov	esi, eax
		jnz	loc_7F81E7D0
		push	[ebp+var_8]
		call	sub_7F8198FC
		mov	[ebp+var_2], ax
		dec	[ebp+var_2]
		test	ax, ax
		jle	loc_7F81E7D0

loc_7F81E6FE:				; CODE XREF: sub_7F81E629+1A1j
		lea	eax, [ebp+var_10]
		lea	ecx, [ebp+var_C]
		mov	[ebp+var_10], 4
		push	eax
		push	ecx
		push	ebx
		push	dword ptr [ebp+var_2]
		push	[ebp+var_8]
		call	sub_7F818D47
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F81E7D0
		cmp	dword_7F838078,	ebx
		jz	short loc_7F81E732
		mov	esi, 253h
		jmp	short loc_7F81E761
; ---------------------------------------------------------------------------

loc_7F81E732:				; CODE XREF: sub_7F81E629+100j
		mov	eax, [edi]
		xor	esi, esi
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edi

loc_7F81E761:				; CODE XREF: sub_7F81E629+107j
		test	esi, esi
		jnz	short loc_7F81E7D0
		push	ebx
		push	[ebp+var_C]
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F81E784
		test	byte ptr [eax+11h], 1
		jnz	short loc_7F81E77F
		mov	[eax+0Ch], ebx
		or	byte ptr [eax+11h], 1

loc_7F81E77F:				; CODE XREF: sub_7F81E629+14Dj
		inc	dword ptr [eax+0Ch]
		jmp	short loc_7F81E796
; ---------------------------------------------------------------------------

loc_7F81E784:				; CODE XREF: sub_7F81E629+147j
		cmp	[ebp+arg_C], ebx
		jz	short loc_7F81E796
		push	dword ptr [ebp+var_2]
		push	[ebp+var_8]
		call	sub_7F818AE7
		mov	esi, eax

loc_7F81E796:				; CODE XREF: sub_7F81E629+159j
					; sub_7F81E629+15Ej
		mov	eax, dword_7F838078
		cmp	[eax+254h], bx
		jz	short loc_7F81E7AB
		call	sub_7F82A34F
		jmp	short loc_7F81E7B9
; ---------------------------------------------------------------------------

loc_7F81E7AB:				; CODE XREF: sub_7F81E629+179j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F81E7B9:				; CODE XREF: sub_7F81E629+180j
		mov	ax, [ebp+var_2]
		mov	dword_7F838078,	ebx
		dec	[ebp+var_2]
		test	ax, ax
		jg	loc_7F81E6FE

loc_7F81E7D0:				; CODE XREF: sub_7F81E629+54j
					; sub_7F81E629+66j ...
		cmp	dword_7F838078,	0
		jz	short loc_7F81E807
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F81E7EF
		call	sub_7F82A34F
		jmp	short loc_7F81E7FD
; ---------------------------------------------------------------------------

loc_7F81E7EF:				; CODE XREF: sub_7F81E629+1BDj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F81E7FD:				; CODE XREF: sub_7F81E629+1C4j
		mov	dword_7F838078,	0

loc_7F81E807:				; CODE XREF: sub_7F81E629+1AEj
		cmp	[ebp+var_8], 0
		jz	short loc_7F81E839
		cmp	[ebp+arg_C], 0
		jz	short loc_7F81E81C
		mov	eax, 1
		test	esi, esi
		jz	short loc_7F81E81E

loc_7F81E81C:				; CODE XREF: sub_7F81E629+1E8j
		xor	eax, eax

loc_7F81E81E:				; CODE XREF: sub_7F81E629+1F1j
		push	eax
		lea	ecx, [ebp+var_8]
		push	ecx
		call	sub_7F81813C
		test	eax, eax
		jz	short loc_7F81E839
		mov	esi, eax
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F81813C

loc_7F81E839:				; CODE XREF: sub_7F81E629+1E2j
					; sub_7F81E629+201j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F81E629	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81E844	proc near		; CODE XREF: sub_7F81D910+CAp

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_6		= byte ptr -6
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		mov	esi, 82h
		xor	edi, edi
		xor	ebx, ebx
		mov	[ebp+var_2], di
		mov	[ebp+var_C], edi

loc_7F81E85D:				; CODE XREF: sub_7F81E844+42j
					; sub_7F81E844+161j ...
		mov	ax, [ebp+var_2]
		push	0B002h
		inc	[ebp+var_2]
		push	0B002h
		push	eax
		push	[ebp+arg_0]
		call	sub_7F82D5EE
		mov	[ebp+var_10], eax
		cmp	eax, ebx
		jz	loc_7F81E9C9
		cmp	[ebp+arg_4], ebx
		jz	short loc_7F81E85D
		mov	ecx, offset aJplcvbul ;	"�PLC�Bul"
		cmp	dword ptr aJplcvbul, ebx ; "�PLC�Bul"
		jz	short loc_7F81E8A8

loc_7F81E895:				; CODE XREF: sub_7F81E844+62j
		mov	eax, [ebp+var_10]
		cmp	[ecx], eax
		jz	loc_7F81E975
		add	ecx, 8
		cmp	dword ptr [ecx], 0
		jnz	short loc_7F81E895

loc_7F81E8A8:				; CODE XREF: sub_7F81E844+4Fj
		mov	eax, offset aQppab ; "qpPAB"
		cmp	byte ptr aQppab, bl ; "qpPAB"
		jz	short loc_7F81E8C8
		mov	cl, byte ptr [ebp+var_10]

loc_7F81E8B8:				; CODE XREF: sub_7F81E844+82j
		cmp	[eax], cl
		jz	loc_7F81E97D
		add	eax, 5
		cmp	byte ptr [eax],	0
		jnz	short loc_7F81E8B8

loc_7F81E8C8:				; CODE XREF: sub_7F81E844+6Fj
		push	ebx
		mov	[ebp+var_C], esi
		push	ebx
		push	ebx
		push	ebx
		push	esi
		push	[ebp+arg_0]
		call	sub_7F82D114
		test	eax, eax
		jz	loc_7F81E988
		mov	[ebp+var_4], bx
		push	offset aLostAndFound ; "Lost and Found"
		call	ds:lstrlenA
		mov	esi, eax
		push	offset aLostAndFound ; "Lost and Found"
		push	offset word_7F8367DA ; lpString1
		call	ds:lstrcpyA
		lea	esi, [esi+eax+1]

loc_7F81E905:				; CODE XREF: sub_7F81E844+12Fj
		push	offset aOrphanedMessag ; "Orphaned messages"
		call	ds:lstrlenA
		mov	edi, eax
		push	offset aOrphanedMessag ; "Orphaned messages"
		push	esi		; lpString1
		call	ds:lstrcpyA
		push	offset ReturnedString
		mov	[edi+eax+1], bl
		lea	eax, [ebp+var_C]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_7F81AFFD
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F81E985
		cmp	edi, 100Fh
		jnz	loc_7F81E9C9
		inc	[ebp+var_4]
		lea	eax, [ebp+var_4]
		push	eax
		push	offset aLostAndFoundN ;	"Lost and Found	%n"
		push	80h
		push	offset word_7F8367DA
		call	sub_7F81AEE2
		push	offset word_7F8367DA ; lpString
		call	ds:lstrlenA
		lea	esi, (word_7F8367DA+1)[eax]
		jmp	short loc_7F81E905
; ---------------------------------------------------------------------------

loc_7F81E975:				; CODE XREF: sub_7F81E844+56j
		mov	eax, [ecx+4]
		mov	[ebp+var_C], eax
		jmp	short loc_7F81E988
; ---------------------------------------------------------------------------

loc_7F81E97D:				; CODE XREF: sub_7F81E844+76j
		mov	eax, [eax+1]
		mov	[ebp+var_C], eax
		jmp	short loc_7F81E988
; ---------------------------------------------------------------------------

loc_7F81E985:				; CODE XREF: sub_7F81E844+F4j
		mov	esi, [ebp+var_C]

loc_7F81E988:				; CODE XREF: sub_7F81E844+96j
					; sub_7F81E844+137j ...
		lea	eax, [ebp+var_6]
		push	eax
		push	ebx
		push	[ebp+var_10]
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	sub_7F81B8F0
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F81E9B8
		test	byte ptr [ebp+var_2], 3Fh
		jnz	loc_7F81E85D
		push	[ebp+arg_0]
		call	sub_7F82A1E7
		jmp	loc_7F81E85D
; ---------------------------------------------------------------------------

loc_7F81E9B8:				; CODE XREF: sub_7F81E844+15Bj
		push	0
		xor	edi, edi
		push	1
		push	[ebp+var_10]
		push	[ebp+arg_0]
		call	sub_7F82B9DE

loc_7F81E9C9:				; CODE XREF: sub_7F81E844+39j
					; sub_7F81E844+FCj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F81E844	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81E9D4	proc near		; CODE XREF: sub_7F81D910+D7p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		xor	di, di
		mov	esi, [esp+0Ch+arg_4]

loc_7F81E9E0:				; CODE XREF: sub_7F81E9D4+43j
		mov	eax, 0
		test	esi, esi
		jnz	short loc_7F81E9EE

loc_7F81E9E9:				; CODE XREF: sub_7F81E9D4+2Fj
		movzx	eax, di
		inc	di

loc_7F81E9EE:				; CODE XREF: sub_7F81E9D4+13j
		push	88h
		push	eax
		push	[esp+14h+arg_0]
		call	sub_7F82D73C
		test	eax, eax
		jz	short loc_7F81EA19
		test	esi, esi
		jz	short loc_7F81E9E9
		push	0
		push	1
		push	eax
		push	[esp+18h+arg_0]
		call	sub_7F82B9DE
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F81E9E0

loc_7F81EA19:				; CODE XREF: sub_7F81E9D4+2Bj
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F81E9D4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81EA21	proc near		; CODE XREF: sub_7F81D910+E4p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		xor	ebx, ebx
		push	edi
		mov	esi, [ebp+arg_4]
		xor	di, di

loc_7F81EA2F:				; CODE XREF: sub_7F81EA21+3Bj
					; sub_7F81EA21+52j
		test	esi, esi
		jz	short loc_7F81EA38
		movzx	eax, di
		jmp	short loc_7F81EA3D
; ---------------------------------------------------------------------------

loc_7F81EA38:				; CODE XREF: sub_7F81EA21+10j
					; sub_7F81EA21+37j ...
		movzx	eax, di
		inc	di

loc_7F81EA3D:				; CODE XREF: sub_7F81EA21+15j
		push	89h
		push	eax
		push	[ebp+arg_0]
		call	sub_7F82D73C
		test	eax, eax
		jz	short loc_7F81EA77
		cmp	eax, 444C4189h
		jnz	short loc_7F81EA5E
		test	esi, esi
		jz	short loc_7F81EA38
		inc	di
		jmp	short loc_7F81EA2F
; ---------------------------------------------------------------------------

loc_7F81EA5E:				; CODE XREF: sub_7F81EA21+33j
		test	esi, esi
		jz	short loc_7F81EA38
		push	0
		push	1
		push	eax
		push	[ebp+arg_0]
		call	sub_7F82B9DE
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F81EA2F
		jmp	short loc_7F81EAB1
; ---------------------------------------------------------------------------

loc_7F81EA77:				; CODE XREF: sub_7F81EA21+2Cj
		xor	di, di

loc_7F81EA7A:				; CODE XREF: sub_7F81EA21+8Ej
		mov	eax, 0
		test	esi, esi
		jnz	short loc_7F81EA88

loc_7F81EA83:				; CODE XREF: sub_7F81EA21+7Bj
		movzx	eax, di
		inc	di

loc_7F81EA88:				; CODE XREF: sub_7F81EA21+60j
		push	87h
		push	eax
		push	[ebp+arg_0]
		call	sub_7F82D73C
		test	eax, eax
		jz	short loc_7F81EAB1
		test	esi, esi
		jz	short loc_7F81EA83
		push	0
		push	1
		push	eax
		push	[ebp+arg_0]
		call	sub_7F82B9DE
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F81EA7A

loc_7F81EAB1:				; CODE XREF: sub_7F81EA21+54j
					; sub_7F81EA21+77j
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
sub_7F81EA21	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81EABA	proc near		; CODE XREF: sub_7F81D910+F1p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		xor	bx, bx
		push	edi
		cmp	dword_7F838078,	0
		push	ebp
		jz	short loc_7F81EAD5
		mov	esi, 253h
		mov	edi, [esp+10h+arg_0]
		jmp	short loc_7F81EB08
; ---------------------------------------------------------------------------

loc_7F81EAD5:				; CODE XREF: sub_7F81EABA+Ej
		mov	edi, [esp+10h+arg_0]
		mov	eax, [edi]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		xor	esi, esi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edi

loc_7F81EB08:				; CODE XREF: sub_7F81EABA+19j
		test	esi, esi
		jnz	short loc_7F81EB49
		xor	ebp, ebp

loc_7F81EB0E:				; CODE XREF: sub_7F81EABA+8Dj
		mov	ax, bx
		push	87h
		inc	bx
		push	eax
		push	edi
		call	sub_7F82D87F
		test	eax, eax
		jz	short loc_7F81EB49
		push	ebp
		push	eax
		call	sub_7F8144A4
		mov	cx, [eax+0Ch]
		cmp	[eax+1Eh], cx
		jz	short loc_7F81EB3E
		cmp	[esp+10h+arg_4], ebp
		jz	short loc_7F81EB3E
		mov	[eax+1Eh], cx

loc_7F81EB3E:				; CODE XREF: sub_7F81EABA+78j
					; sub_7F81EABA+7Ej
		push	eax
		mov	[eax+0Ch], ebp
		call	sub_7F8148F7
		jmp	short loc_7F81EB0E
; ---------------------------------------------------------------------------

loc_7F81EB49:				; CODE XREF: sub_7F81EABA+50j
					; sub_7F81EABA+67j
		cmp	dword_7F838078,	0
		jz	short loc_7F81EB80
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F81EB68
		call	sub_7F82A34F
		jmp	short loc_7F81EB76
; ---------------------------------------------------------------------------

loc_7F81EB68:				; CODE XREF: sub_7F81EABA+A5j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F81EB76:				; CODE XREF: sub_7F81EABA+ACj
		mov	dword_7F838078,	0

loc_7F81EB80:				; CODE XREF: sub_7F81EABA+96j
		mov	eax, esi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F81EABA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81EB89	proc near		; CODE XREF: sub_7F81E22F+E1p

var_14		= word ptr -14h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		lea	eax, [ebp+var_8]
		push	esi
		lea	ecx, [ebp+arg_4]
		push	edi
		xor	esi, esi
		push	eax
		mov	[ebp+var_8], esi
		push	esi
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		cmp	eax, esi
		mov	edi, eax
		jnz	loc_7F81EF4E
		push	esi
		push	[ebp+arg_8]
		push	[ebp+var_8]
		call	sub_7F8194ED
		mov	[ebp+var_2], ax
		cmp	ax, si
		jge	short loc_7F81EBD1
		mov	edi, 1004h
		jmp	loc_7F81EF4E
; ---------------------------------------------------------------------------

loc_7F81EBD1:				; CODE XREF: sub_7F81EB89+3Cj
		mov	[ebp+var_C], 220h
		lea	eax, [ebp+var_C]
		push	eax
		push	offset ReturnedString
		push	0
		push	dword ptr [ebp+var_2]
		push	[ebp+var_8]
		call	sub_7F818D47
		cmp	eax, 1014h
		mov	edi, eax
		jnz	short loc_7F81EBFD
		cmp	[ebp+var_C], 1Bh
		jnb	short loc_7F81EC05

loc_7F81EBFD:				; CODE XREF: sub_7F81EB89+6Cj
		test	edi, edi
		jnz	loc_7F81EF4E

loc_7F81EC05:				; CODE XREF: sub_7F81EB89+72j
		xor	esi, esi
		lea	eax, [ebp+var_8]
		push	esi
		push	eax
		call	sub_7F81813C
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+arg_8]
		push	eax
		push	2
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		cmp	eax, esi
		mov	edi, eax
		jnz	loc_7F81EF4E
		push	0Eh
		mov	ebx, offset ReturnedString
		push	ebx
		push	ebx
		call	sub_7F82FF60
		add	esp, 0Ch
		cmp	ReturnedString,	76Ch
		jl	loc_7F81EF49
		cmp	ReturnedString,	81Fh
		jge	loc_7F81EF49
		cmp	word_7F8367DA, si
		jle	loc_7F81EF49
		cmp	word_7F8367DA, 0Ch
		jg	loc_7F81EF49
		cmp	word_7F8367DC, si
		jle	loc_7F81EF49
		cmp	word_7F8367DC, 1Fh
		jg	loc_7F81EF49
		cmp	word_7F8367DE, si
		jl	loc_7F81EF49
		cmp	word_7F8367DE, 18h
		jge	loc_7F81EF49
		cmp	word_7F8367E0, si
		jl	loc_7F81EF49
		cmp	word_7F8367E0, 3Ch
		jge	loc_7F81EF49
		push	0Eh
		lea	eax, [ebp+var_2]
		push	38005h
		push	eax
		push	[ebp+var_8]
		call	sub_7F818B75
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81EF4E
		push	0Eh
		lea	eax, [ebp+var_2]
		push	ebx
		push	esi
		push	eax
		push	[ebp+var_8]
		call	sub_7F818DC7
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81EF4E
		push	0Eh
		lea	eax, [ebp+var_2]
		push	38006h
		push	eax
		push	[ebp+var_8]
		call	sub_7F818B75
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81EF4E
		push	0Eh
		lea	eax, [ebp+var_2]
		push	ebx
		push	esi
		push	eax
		push	[ebp+var_8]
		call	sub_7F818DC7
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81EF4E
		push	1
		lea	eax, [ebp+var_2]
		push	68007h
		push	eax
		push	[ebp+var_8]
		call	sub_7F818B75
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81EF4E
		push	1
		lea	eax, [ebp+var_2]
		push	offset byte_7F8367E6
		push	esi
		push	eax
		push	[ebp+var_8]
		call	sub_7F818DC7
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81EF4E
		push	2
		lea	eax, [ebp+var_2]
		push	78008h
		push	eax
		push	[ebp+var_8]
		call	sub_7F818B75
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81EF4E
		push	2
		lea	eax, [ebp+var_2]
		push	offset word_7F8367E7
		push	esi
		push	eax
		push	[ebp+var_8]
		call	sub_7F818DC7
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81EF4E
		push	2
		lea	eax, [ebp+var_2]
		push	4800Dh
		push	eax
		push	[ebp+var_8]
		call	sub_7F818B75
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81EF4E
		push	2
		lea	eax, [ebp+var_2]
		push	offset word_7F8367E9
		push	esi
		push	eax
		push	[ebp+var_8]
		call	sub_7F818DC7
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81EF4E
		push	4
		lea	eax, [ebp+var_2]
		push	80000h
		push	eax
		push	[ebp+var_8]
		call	sub_7F818B75
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81EF4E
		push	4
		lea	eax, [ebp+var_2]
		push	offset dword_7F8367EB
		push	esi
		push	eax
		push	[ebp+var_8]
		call	sub_7F818DC7
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81EF4E
		mov	ebx, offset sz
		push	ebx		; lpString
		call	ds:lstrlenA
		mov	[ebp+var_14], 3
		inc	eax
		mov	[ebp+var_C], eax
		add	ax, 3
		and	ax, 0FFFCh
		movzx	ecx, ax
		mov	[ebp+var_10], ax
		lea	edx, ds:10h[ecx*2]
		mov	[ebp+var_E], ax
		push	edx
		push	8000h
		lea	eax, [ebp+var_2]
		push	eax
		push	[ebp+var_8]
		call	sub_7F818B75
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F81EF4E
		push	8
		lea	eax, [ebp+var_14]
		push	eax
		lea	ecx, [ebp+var_2]
		push	esi
		push	ecx
		push	[ebp+var_8]
		call	sub_7F818DC7
		cmp	eax, esi
		mov	edi, eax
		jnz	loc_7F81EF4E
		push	[ebp+var_C]
		push	ebx
		push	8
		lea	ecx, [ebp+var_2]
		push	ecx
		push	[ebp+var_8]
		call	sub_7F818DC7
		cmp	eax, esi
		mov	edi, eax
		jnz	loc_7F81EF4E
		push	[ebp+var_C]
		push	ebx
		movzx	eax, [ebp+var_10]
		add	eax, 8
		lea	ecx, [ebp+var_2]
		push	eax
		push	ecx
		push	[ebp+var_8]
		call	sub_7F818DC7
		cmp	eax, esi
		mov	edi, eax
		jnz	loc_7F81EF4E
		mov	ebx, [ebp+var_C]
		add	ebx, offset sz
		push	ebx		; lpString
		call	ds:lstrlenA
		inc	eax
		lea	ecx, [ebp+var_2]
		push	eax
		mov	[ebp+var_C], eax
		push	18004h
		push	ecx
		push	[ebp+var_8]
		call	sub_7F818B75
		cmp	eax, esi
		mov	edi, eax
		jnz	short loc_7F81EF4E
		push	[ebp+var_C]
		push	ebx
		push	esi
		lea	ecx, [ebp+var_2]
		push	ecx
		push	[ebp+var_8]
		call	sub_7F818DC7
		cmp	eax, esi
		mov	edi, eax
		jnz	short loc_7F81EF4E
		mov	ebx, offset aThisMessageCou ; "This message could not be fully recover"...
		push	ebx		; lpString
		call	ds:lstrlenA
		inc	eax
		lea	ecx, [ebp+var_2]
		push	eax
		mov	[ebp+var_C], eax
		push	2800Ch
		push	ecx
		push	[ebp+var_8]
		call	sub_7F818B75
		cmp	eax, esi
		mov	edi, eax
		jnz	short loc_7F81EF4E
		push	[ebp+var_C]
		push	ebx
		push	esi
		lea	ecx, [ebp+var_2]
		push	ecx
		push	[ebp+var_8]
		call	sub_7F818DC7
		mov	edi, eax
		jmp	short loc_7F81EF4E
; ---------------------------------------------------------------------------

loc_7F81EF49:				; CODE XREF: sub_7F81EB89+BEj
					; sub_7F81EB89+CDj ...
		mov	edi, 1001h

loc_7F81EF4E:				; CODE XREF: sub_7F81EB89+23j
					; sub_7F81EB89+43j ...
		cmp	[ebp+var_8], 0
		jz	short loc_7F81EF76
		lea	ecx, [ebp+var_8]
		cmp	edi, 1
		sbb	eax, eax
		neg	eax
		push	eax
		push	ecx
		call	sub_7F81813C
		test	eax, eax
		jz	short loc_7F81EF76
		mov	edi, eax
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F81813C

loc_7F81EF76:				; CODE XREF: sub_7F81EB89+3C9j
					; sub_7F81EB89+3DEj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F81EB89	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81EF81	proc near		; CODE XREF: sub_7F81EF87+3p
		mov	eax, offset byte_7F836B58
		retn
sub_7F81EF81	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81EF87	proc near		; CODE XREF: sub_7F814EF3+90p
		push	ebx
		push	esi
		push	edi
		call	sub_7F81EF81
		mov	edi, offset byte_7F836B58
		mov	ecx, 40h
		mov	dword_7F833F1C,	eax
		xor	eax, eax
		rep stosd
		or	byte_7F836B61, 8
		or	byte_7F836B62, 8
		or	byte_7F836B65, 8
		or	byte_7F836B78, 8
		or	byte_7F836BF8, 8
		xor	ebx, ebx

loc_7F81EFC7:				; CODE XREF: sub_7F81EF87+8Bj
		push	ebx		; ch
		call	ds:IsCharAlphaA
		test	eax, eax
		jz	short loc_7F81EFF9
		lea	esi, byte_7F836B58[ebx]
		push	ebx		; ch
		or	byte ptr [esi],	1
		call	ds:IsCharUpperA
		test	eax, eax
		jz	short loc_7F81EFE9
		or	byte ptr [esi],	20h

loc_7F81EFE9:				; CODE XREF: sub_7F81EF87+5Dj
		push	ebx		; ch
		call	ds:IsCharLowerA
		test	eax, eax
		jz	short loc_7F81F00B
		or	byte ptr [esi],	40h
		jmp	short loc_7F81F00B
; ---------------------------------------------------------------------------

loc_7F81EFF9:				; CODE XREF: sub_7F81EF87+49j
		push	ebx		; ch
		call	ds:IsCharAlphaNumericA
		test	eax, eax
		jz	short loc_7F81F00B
		or	byte_7F836B58[ebx], 2

loc_7F81F00B:				; CODE XREF: sub_7F81EF87+6Bj
					; sub_7F81EF87+70j ...
		inc	ebx
		cmp	ebx, 100h
		jl	short loc_7F81EFC7
		mov	eax, 41h

loc_7F81F019:				; CODE XREF: sub_7F81EF87+9Dj
		or	byte_7F836B58[eax], 4
		inc	eax
		cmp	eax, 46h
		jle	short loc_7F81F019
		mov	eax, 61h

loc_7F81F02B:				; CODE XREF: sub_7F81EF87+AFj
		or	byte_7F836B58[eax], 4
		inc	eax
		cmp	eax, 66h
		jle	short loc_7F81F02B
		mov	eax, 30h

loc_7F81F03D:				; CODE XREF: sub_7F81EF87+C1j
		or	byte_7F836B58[eax], 4
		inc	eax
		cmp	eax, 39h
		jle	short loc_7F81F03D
		xor	eax, eax

loc_7F81F04C:				; CODE XREF: sub_7F81EF87+D0j
		or	byte_7F836B58[eax], 90h
		inc	eax
		cmp	eax, 20h
		jl	short loc_7F81F04C
		or	byte_7F836BD7, 90h
		mov	eax, 21h

loc_7F81F065:				; CODE XREF: sub_7F81EF87+E9j
		or	byte_7F836B58[eax], 80h
		inc	eax
		cmp	eax, 30h
		jl	short loc_7F81F065
		mov	eax, 3Ah

loc_7F81F077:				; CODE XREF: sub_7F81EF87+FBj
		or	byte_7F836B58[eax], 80h
		inc	eax
		cmp	eax, 41h
		jl	short loc_7F81F077
		mov	eax, 5Bh

loc_7F81F089:				; CODE XREF: sub_7F81EF87+10Dj
		or	byte_7F836B58[eax], 80h
		inc	eax
		cmp	eax, 61h
		jl	short loc_7F81F089
		mov	eax, 7Bh

loc_7F81F09B:				; CODE XREF: sub_7F81EF87+11Fj
		or	byte_7F836B58[eax], 80h
		inc	eax
		cmp	eax, 7Fh
		jl	short loc_7F81F09B
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F81EF87	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81F0AC	proc near		; CODE XREF: sub_7F8207A6+39Bp

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		call	sub_7F82449E
		mov	esi, eax
		push	1Bh		; vKey
		call	ds:GetAsyncKeyState
		mov	edi, [esp+0Ch+arg_0]
		push	9
		push	0
		push	edi
		call	sub_7F82A93C
		test	eax, eax
		jnz	short loc_7F81F0DA
		mov	eax, 101Eh
		jmp	loc_7F81F209
; ---------------------------------------------------------------------------

loc_7F81F0DA:				; CODE XREF: sub_7F81F0AC+22j
		mov	dword_7F836C58,	0FFFFFFFFh
		cmp	dword_7F838078,	0
		mov	eax, 253h
		jnz	short loc_7F81F121
		mov	eax, [edi]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edi
		xor	eax, eax

loc_7F81F121:				; CODE XREF: sub_7F81F0AC+44j
		test	eax, eax
		jnz	loc_7F81F209
		mov	eax, dword_7F838078
		mov	ebx, [eax+270h]
		mov	dword_7F838098,	0
		mov	dword_7F83809C,	ebx

loc_7F81F144:				; CODE XREF: sub_7F81F0AC+11Aj
		push	1Bh		; vKey
		call	ds:GetAsyncKeyState
		test	ax, 8001h
		jz	short loc_7F81F166
		mov	edi, 101Eh
		lea	ecx, [esi+18h]
		mov	eax, [ecx]
		or	al, 2
		mov	[ecx], eax
		or	al, 4
		mov	[ecx], eax
		jmp	short loc_7F81F16D
; ---------------------------------------------------------------------------

loc_7F81F166:				; CODE XREF: sub_7F81F0AC+A4j
		call	sub_7F81F3EF
		mov	edi, eax

loc_7F81F16D:				; CODE XREF: sub_7F81F0AC+B8j
		test	edi, edi
		jnz	short loc_7F81F1CC
		mov	eax, dword_7F838078
		mov	eax, [eax+270h]
		cmp	ebx, eax
		jbe	short loc_7F81F1C4
		cmp	dword_7F83809C,	0
		jbe	short loc_7F81F1AB
		sub	ebx, eax
		push	64h
		sub	edx, edx
		add	dword_7F838098,	ebx
		mov	eax, dword_7F838098
		imul	eax, 64h
		div	dword_7F83809C
		push	eax
		call	sub_7F82A9CA
		jmp	short loc_7F81F1B0
; ---------------------------------------------------------------------------

loc_7F81F1AB:				; CODE XREF: sub_7F81F0AC+DBj
		mov	eax, 1

loc_7F81F1B0:				; CODE XREF: sub_7F81F0AC+FDj
		test	eax, eax
		jnz	short loc_7F81F1B9
		mov	edi, 101Eh

loc_7F81F1B9:				; CODE XREF: sub_7F81F0AC+106j
		mov	eax, dword_7F838078
		mov	ebx, [eax+270h]

loc_7F81F1C4:				; CODE XREF: sub_7F81F0AC+D2j
		test	edi, edi
		jz	loc_7F81F144

loc_7F81F1CC:				; CODE XREF: sub_7F81F0AC+C3j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F81F1E2
		call	sub_7F82A34F
		jmp	short loc_7F81F1F0
; ---------------------------------------------------------------------------

loc_7F81F1E2:				; CODE XREF: sub_7F81F0AC+12Dj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F81F1F0:				; CODE XREF: sub_7F81F0AC+134j
		xor	esi, esi
		mov	dword_7F838078,	esi
		call	sub_7F82AB0B
		cmp	edi, 1019h
		jnz	short loc_7F81F207
		xor	edi, edi

loc_7F81F207:				; CODE XREF: sub_7F81F0AC+157j
		mov	eax, edi

loc_7F81F209:				; CODE XREF: sub_7F81F0AC+29j
					; sub_7F81F0AC+77j
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_7F81F0AC	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81F20F	proc near		; DATA XREF: sub_7F81217E+126o

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	ebx, [esp+8+arg_0]
		push	edi
		push	ebp
		mov	esi, [ebx]
		mov	ebp, [esi]
		call	sub_7F816000
		test	eax, eax
		jnz	loc_7F81F3E3
		lea	edi, [ebp+264h]
		mov	ax, [edi]
		test	ah, 2
		jz	short loc_7F81F24B
		or	ah, 20h
		push	0
		mov	[edi], ax
		push	dword ptr [esi+1Ch]
		call	sub_7F8161D3
		jmp	loc_7F81F3E3
; ---------------------------------------------------------------------------

loc_7F81F24B:				; CODE XREF: sub_7F81F20F+25j
		call	sub_7F8168ED
		mov	dword_7F836C58,	eax
		test	byte ptr [edi+1], 4
		jz	short loc_7F81F29F
		cmp	[ebp+278h], eax
		ja	short loc_7F81F286
		cmp	dword_7F83588C,	0
		jz	short loc_7F81F286
		push	0		; lpdwProcessId
		call	ds:GetActiveWindow
		push	eax		; hWnd
		call	ds:GetWindowThreadProcessId
		push	eax
		call	dword_7F83588C
		test	eax, eax
		jz	short loc_7F81F2E3

loc_7F81F286:				; CODE XREF: sub_7F81F20F+52j
					; sub_7F81F20F+5Bj
		push	8
		xor	eax, eax
		push	eax
		push	64h
		push	eax
		push	eax
		push	eax
		push	dword ptr [esi+1Ch]
		call	sub_7F81635D
		and	word ptr [edi],	0FBFFh
		jmp	short loc_7F81F2E3
; ---------------------------------------------------------------------------

loc_7F81F29F:				; CODE XREF: sub_7F81F20F+4Aj
		mov	eax, dword_7F836C58
		cmp	[ebp+278h], eax
		ja	short loc_7F81F2E3
		xor	ebp, ebp
		cmp	dword_7F83588C,	ebp
		jz	short loc_7F81F2E3
		push	ebp		; lpdwProcessId
		call	ds:GetActiveWindow
		push	eax		; hWnd
		call	ds:GetWindowThreadProcessId
		push	eax
		call	dword_7F83588C
		test	eax, eax
		jnz	short loc_7F81F2E3
		push	8
		push	ebp
		push	0Ah
		push	ebp
		push	ebp
		push	ebp
		push	dword ptr [esi+1Ch]
		call	sub_7F81635D
		or	byte ptr [edi+1], 4

loc_7F81F2E3:				; CODE XREF: sub_7F81F20F+75j
					; sub_7F81F20F+8Ej ...
		cmp	dword_7F836C58,	0C8h
		jbe	loc_7F81F3E3
		cmp	dword_7F838078,	0
		mov	eax, 253h
		jnz	short loc_7F81F330
		mov	eax, [ebx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ebx
		xor	eax, eax

loc_7F81F330:				; CODE XREF: sub_7F81F20F+F0j
		test	eax, eax
		jnz	loc_7F81F3E3
		call	sub_7F81F3EF
		mov	ebx, eax
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F81F355
		call	sub_7F82A34F
		jmp	short loc_7F81F363
; ---------------------------------------------------------------------------

loc_7F81F355:				; CODE XREF: sub_7F81F20F+13Dj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F81F363:				; CODE XREF: sub_7F81F20F+144j
		xor	eax, eax
		test	ebx, ebx
		mov	dword_7F838078,	eax
		jz	short loc_7F81F3A6
		cmp	ebx, 1019h
		jnz	short loc_7F81F385
		or	byte ptr [edi+1], 20h
		push	eax
		push	dword ptr [esi+1Ch]
		call	sub_7F8161D3
		jmp	short loc_7F81F3E3
; ---------------------------------------------------------------------------

loc_7F81F385:				; CODE XREF: sub_7F81F20F+165j
		push	8
		xor	eax, eax
		push	eax
		push	1770h
		push	eax
		push	eax
		push	eax
		push	dword ptr [esi+1Ch]
		call	sub_7F81635D
		mov	dword_7F836C5C,	1
		jmp	short loc_7F81F3E3
; ---------------------------------------------------------------------------

loc_7F81F3A6:				; CODE XREF: sub_7F81F20F+15Dj
		xor	ebx, ebx
		cmp	dword_7F836C5C,	ebx
		jz	short loc_7F81F3C6
		push	8
		push	ebx
		push	64h
		push	ebx
		push	ebx
		push	ebx
		push	dword ptr [esi+1Ch]
		call	sub_7F81635D
		mov	dword_7F836C5C,	ebx

loc_7F81F3C6:				; CODE XREF: sub_7F81F20F+19Fj
		test	byte ptr [edi+1], 20h
		jz	short loc_7F81F3E3
		push	8
		xor	eax, eax
		push	eax
		push	64h
		push	eax
		push	eax
		push	eax
		push	dword ptr [esi+1Ch]
		call	sub_7F81635D
		and	word ptr [edi],	0DFFFh

loc_7F81F3E3:				; CODE XREF: sub_7F81F20F+13j
					; sub_7F81F20F+37j ...
		mov	eax, 1
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F81F20F	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81F3EF	proc near		; CODE XREF: sub_7F81F0AC:loc_7F81F166p
					; sub_7F81F20F+129p
		push	esi
		mov	eax, dword_7F838078
		movzx	eax, word ptr [eax+21Ch]
		xor	esi, esi
		test	eax, eax
		jz	short loc_7F81F41D
		cmp	eax, 1
		jz	short loc_7F81F424
		cmp	eax, 2
		jz	short loc_7F81F42B
		cmp	eax, 3
		jz	short loc_7F81F432
		cmp	eax, 4
		jz	short loc_7F81F439
		cmp	eax, 6
		jz	short loc_7F81F440
		jmp	short loc_7F81F44B
; ---------------------------------------------------------------------------

loc_7F81F41D:				; CODE XREF: sub_7F81F3EF+11j
		call	sub_7F81F44F
		jmp	short loc_7F81F449
; ---------------------------------------------------------------------------

loc_7F81F424:				; CODE XREF: sub_7F81F3EF+16j
		call	sub_7F81F5A7
		jmp	short loc_7F81F449
; ---------------------------------------------------------------------------

loc_7F81F42B:				; CODE XREF: sub_7F81F3EF+1Bj
		call	sub_7F81F71E
		jmp	short loc_7F81F44B
; ---------------------------------------------------------------------------

loc_7F81F432:				; CODE XREF: sub_7F81F3EF+20j
		call	sub_7F81FA56
		jmp	short loc_7F81F449
; ---------------------------------------------------------------------------

loc_7F81F439:				; CODE XREF: sub_7F81F3EF+25j
		call	sub_7F81F84F
		jmp	short loc_7F81F449
; ---------------------------------------------------------------------------

loc_7F81F440:				; CODE XREF: sub_7F81F3EF+2Aj
		push	0
		push	0
		call	sub_7F813C77

loc_7F81F449:				; CODE XREF: sub_7F81F3EF+33j
					; sub_7F81F3EF+3Aj ...
		mov	esi, eax

loc_7F81F44B:				; CODE XREF: sub_7F81F3EF+2Cj
					; sub_7F81F3EF+41j
		mov	eax, esi
		pop	esi
		retn
sub_7F81F3EF	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81F44F	proc near		; CODE XREF: sub_7F81F3EF:loc_7F81F41Dp
		push	ebx
		mov	eax, dword_7F838078
		push	esi
		push	edi
		xor	esi, esi
		mov	edi, [eax+270h]
		mov	ebx, [eax+200h]
		sub	edx, edx
		mov	eax, edi
		mov	ecx, dword_7F838078
		imul	eax, 64h
		div	dword ptr [ebx+4]
		cmp	ax, [ecx+276h]
		jge	short loc_7F81F48A
		cmp	[ecx+280h], edi
		ja	loc_7F81F583

loc_7F81F48A:				; CODE XREF: sub_7F81F44F+2Dj
		cmp	word ptr [ebx+0Ch], 0
		jz	loc_7F81F583
		xor	cx, cx

loc_7F81F498:				; CODE XREF: sub_7F81F44F+11Cj
		mov	eax, dword_7F838078
		inc	word ptr [eax+228h]
		mov	edi, dword_7F838078
		add	edi, 228h
		mov	dx, [edi]
		cmp	dx, 1
		jb	short loc_7F81F4CA
		mov	eax, dword_7F838078
		mov	ebx, [eax+200h]
		cmp	[ebx+8], dx
		ja	short loc_7F81F4CF

loc_7F81F4CA:				; CODE XREF: sub_7F81F44F+68j
		mov	word ptr [edi],	1

loc_7F81F4CF:				; CODE XREF: sub_7F81F44F+79j
		mov	eax, dword_7F838078
		mov	dx, [eax+228h]
		cmp	dx, 1
		jb	short loc_7F81F51F
		mov	ebx, [eax+200h]
		cmp	[ebx+8], dx
		jbe	short loc_7F81F51F
		mov	ax, dx
		shr	ax, 6
		movzx	edi, ax
		and	edi, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	ebx, [eax+20Ch]
		mov	eax, [ebx]
		mov	ebx, [edi+eax]
		xor	edi, edi
		mov	di, dx
		and	edi, 0FFh
		shl	edi, 5
		add	edi, ebx
		jmp	short loc_7F81F521
; ---------------------------------------------------------------------------

loc_7F81F51F:				; CODE XREF: sub_7F81F44F+90j
					; sub_7F81F44F+9Cj
		xor	edi, edi

loc_7F81F521:				; CODE XREF: sub_7F81F44F+CEj
		mov	ax, [edi+10h]
		test	al, 10h
		jnz	short loc_7F81F564
		mov	dl, [edi+4]
		cmp	dl, 8Ch
		jz	short loc_7F81F564
		test	ah, 80h
		jnz	short loc_7F81F54C
		cmp	dl, 8Ch
		jz	short loc_7F81F54C
		mov	eax, [edi+14h]
		and	eax, 7FFFFFFFh
		add	eax, 87h
		and	al, 80h
		jmp	short loc_7F81F54F
; ---------------------------------------------------------------------------

loc_7F81F54C:				; CODE XREF: sub_7F81F44F+E5j
					; sub_7F81F44F+EAj
		mov	eax, [edi+14h]

loc_7F81F54F:				; CODE XREF: sub_7F81F44F+FBj
		mov	edx, [edi+18h]
		add	edx, eax
		mov	eax, dword_7F838078
		mov	ebx, [eax+200h]
		cmp	edx, [ebx+4]
		jz	short loc_7F81F573

loc_7F81F564:				; CODE XREF: sub_7F81F44F+D8j
					; sub_7F81F44F+E0j
		inc	cx
		cmp	cx, 400h
		jb	loc_7F81F498
		jmp	short loc_7F81F5A1
; ---------------------------------------------------------------------------

loc_7F81F573:				; CODE XREF: sub_7F81F44F+113j
		mov	eax, dword_7F838078
		mov	word ptr [eax+21Ch], 1
		jmp	short loc_7F81F5A1
; ---------------------------------------------------------------------------

loc_7F81F583:				; CODE XREF: sub_7F81F44F+35j
					; sub_7F81F44F+40j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+214h], 0
		jbe	short loc_7F81F59C
		push	0
		push	eax
		call	sub_7F82A8C1
		jmp	short loc_7F81F5A1
; ---------------------------------------------------------------------------

loc_7F81F59C:				; CODE XREF: sub_7F81F44F+141j
		mov	esi, 1019h

loc_7F81F5A1:				; CODE XREF: sub_7F81F44F+122j
					; sub_7F81F44F+132j ...
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F81F44F	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81F5A7	proc near		; CODE XREF: sub_7F81F3EF:loc_7F81F424p
		push	ebx
		mov	eax, dword_7F838078
		mov	cx, [eax+228h]
		push	esi
		push	edi
		xor	esi, esi
		cmp	cx, 1
		push	ebp
		jb	loc_7F81F684
		mov	edx, [eax+200h]
		mov	ax, [edx+8]
		cmp	ax, cx
		jbe	loc_7F81F684
		cmp	cx, 1
		jb	short loc_7F81F614
		cmp	ax, cx
		jbe	short loc_7F81F614
		mov	ax, cx
		shr	ax, 6
		movzx	edi, ax
		and	edi, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	ebx, [eax+20Ch]
		mov	ebp, [ebx]
		mov	eax, [edi+ebp]
		xor	edi, edi
		mov	di, cx
		and	edi, 0FFh
		shl	edi, 5
		lea	ecx, [eax+edi]
		jmp	short loc_7F81F616
; ---------------------------------------------------------------------------

loc_7F81F614:				; CODE XREF: sub_7F81F5A7+33j
					; sub_7F81F5A7+38j
		xor	ecx, ecx

loc_7F81F616:				; CODE XREF: sub_7F81F5A7+6Bj
		test	ecx, ecx
		jz	short loc_7F81F684
		mov	di, [ecx+10h]
		test	di, 10h
		jnz	short loc_7F81F684
		mov	ax, di
		and	ax, 8000h
		jnz	short loc_7F81F648
		cmp	byte ptr [ecx+4], 8Ch
		jz	short loc_7F81F648
		mov	ebx, [ecx+14h]
		and	ebx, 7FFFFFFFh
		add	ebx, 87h
		and	bl, 80h
		jmp	short loc_7F81F64B
; ---------------------------------------------------------------------------

loc_7F81F648:				; CODE XREF: sub_7F81F5A7+85j
					; sub_7F81F5A7+8Bj
		mov	ebx, [ecx+14h]

loc_7F81F64B:				; CODE XREF: sub_7F81F5A7+9Fj
		mov	ebp, [ecx+18h]
		add	ebp, ebx
		cmp	ebp, [edx+4]
		jnz	short loc_7F81F684
		test	ax, ax
		jnz	short loc_7F81F666
		push	ecx
		push	0
		call	sub_7F82021B
		mov	esi, eax
		jmp	short loc_7F81F692
; ---------------------------------------------------------------------------

loc_7F81F666:				; CODE XREF: sub_7F81F5A7+B1j
		test	di, 4000h
		jz	short loc_7F81F67C
		push	0
		mov	eax, dword_7F838078
		push	eax
		call	sub_7F82A8C1
		jmp	short loc_7F81F692
; ---------------------------------------------------------------------------

loc_7F81F67C:				; CODE XREF: sub_7F81F5A7+C4j
		push	ecx
		call	sub_7F81F699
		jmp	short loc_7F81F692
; ---------------------------------------------------------------------------

loc_7F81F684:				; CODE XREF: sub_7F81F5A7+16j
					; sub_7F81F5A7+29j ...
		mov	eax, dword_7F838078
		mov	word ptr [eax+21Ch], 0

loc_7F81F692:				; CODE XREF: sub_7F81F5A7+BDj
					; sub_7F81F5A7+D3j ...
		mov	eax, esi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F81F5A7	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81F699	proc near		; CODE XREF: sub_7F81F5A7+D6p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	esi
		call	sub_7F8131F6
		test	eax, eax
		jz	short loc_7F81F700
		test	byte ptr [esi+11h], 80h
		jnz	short loc_7F81F6D6
		cmp	byte ptr [esi+4], 8Ch
		jz	short loc_7F81F6D6
		mov	eax, dword_7F838078
		mov	ecx, [esi+14h]
		and	ecx, 7FFFFFFFh
		mov	edx, [eax+200h]
		add	ecx, 87h
		and	cl, 80h
		sub	[edx+4], ecx
		jmp	short loc_7F81F6E7
; ---------------------------------------------------------------------------

loc_7F81F6D6:				; CODE XREF: sub_7F81F699+13j
					; sub_7F81F699+19j
		mov	eax, dword_7F838078
		mov	edx, [esi+14h]
		mov	ecx, [eax+200h]
		sub	[ecx+4], edx

loc_7F81F6E7:				; CODE XREF: sub_7F81F699+3Bj
		mov	eax, dword_7F838078
		mov	ax, [eax+228h]
		push	eax
		call	sub_7F813BE4
		push	0
		call	sub_7F812C72

loc_7F81F700:				; CODE XREF: sub_7F81F699+Dj
		mov	eax, dword_7F838078
		xor	ecx, ecx
		mov	[eax+228h], cx
		pop	esi
		mov	eax, dword_7F838078
		mov	[eax+21Ch], cx
		retn	4
sub_7F81F699	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81F71E	proc near		; CODE XREF: sub_7F81F3EF:loc_7F81F42Bp
		push	ebx
		mov	eax, dword_7F838078
		cmp	word ptr [eax+238h], 0
		push	esi
		push	edi
		jnz	loc_7F81F846
		mov	cx, [eax+228h]
		cmp	cx, 1
		jb	loc_7F81F846
		mov	edx, [eax+200h]
		mov	ax, [edx+8]
		cmp	ax, cx
		jbe	loc_7F81F846
		cmp	cx, 1
		jb	short loc_7F81F796
		cmp	ax, cx
		jbe	short loc_7F81F796
		mov	ax, cx
		shr	ax, 6
		movzx	edx, ax
		and	edx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	ebx, [eax+20Ch]
		mov	esi, [ebx]
		mov	eax, [edx+esi]
		xor	edx, edx
		mov	dx, cx
		and	edx, 0FFh
		shl	edx, 5
		lea	esi, [eax+edx]
		jmp	short loc_7F81F798
; ---------------------------------------------------------------------------

loc_7F81F796:				; CODE XREF: sub_7F81F71E+3Ej
					; sub_7F81F71E+43j
		xor	esi, esi

loc_7F81F798:				; CODE XREF: sub_7F81F71E+76j
		xor	edi, edi
		test	esi, esi
		jz	loc_7F81F846
		mov	ax, [esi+10h]
		test	ah, 20h
		jz	loc_7F81F846
		test	al, 10h
		jnz	loc_7F81F846
		mov	ecx, dword_7F838078
		mov	edx, [ecx+230h]
		add	[ecx+234h], edx
		mov	ecx, [esi+14h]
		and	ecx, 7FFFFFFFh
		mov	eax, dword_7F838078
		sub	ecx, [eax+234h]
		mov	[eax+230h], ecx
		mov	edx, dword_7F838078
		add	edx, 230h
		mov	ecx, [edx]
		test	ecx, ecx
		jnz	short loc_7F81F826
		push	edi
		mov	eax, dword_7F838078
		push	dword ptr [eax+224h]
		call	sub_7F8144A4
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F81F846
		push	ebx
		call	sub_7F8142DB
		mov	eax, dword_7F838078
		push	ebx
		push	esi
		mov	[eax+224h], edi
		call	sub_7F820544
		jmp	short loc_7F81F84B
; ---------------------------------------------------------------------------

loc_7F81F826:				; CODE XREF: sub_7F81F71E+D5j
		mov	eax, 800h
		cmp	ecx, eax
		jbe	short loc_7F81F831
		mov	[edx], eax

loc_7F81F831:				; CODE XREF: sub_7F81F71E+10Fj
		mov	eax, dword_7F838078
		mov	word ptr [eax+21Ch], 5
		call	sub_7F81F8AE
		jmp	short loc_7F81F84B
; ---------------------------------------------------------------------------

loc_7F81F846:				; CODE XREF: sub_7F81F71E+10j
					; sub_7F81F71E+21j ...
		call	sub_7F82063C

loc_7F81F84B:				; CODE XREF: sub_7F81F71E+106j
					; sub_7F81F71E+126j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F81F71E	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81F84F	proc near		; CODE XREF: sub_7F81F3EF:loc_7F81F439p
		push	esi
		mov	eax, dword_7F838078
		xor	esi, esi
		push	esi
		push	dword ptr [eax+224h]
		call	sub_7F8144A4
		test	eax, eax
		jnz	short loc_7F81F882
		mov	eax, dword_7F838078
		mov	[eax+224h], esi
		mov	eax, dword_7F838078
		mov	word ptr [eax+21Ch], 3
		jmp	short loc_7F81F8AA
; ---------------------------------------------------------------------------

loc_7F81F882:				; CODE XREF: sub_7F81F84F+16j
		test	byte ptr [eax+11h], 40h
		jnz	short loc_7F81F89D
		mov	eax, dword_7F838078
		mov	word ptr [eax+21Ch], 5
		call	sub_7F81F8AE
		jmp	short loc_7F81F8AA
; ---------------------------------------------------------------------------

loc_7F81F89D:				; CODE XREF: sub_7F81F84F+37j
		push	0
		mov	eax, dword_7F838078
		push	eax
		call	sub_7F82A8C1

loc_7F81F8AA:				; CODE XREF: sub_7F81F84F+31j
					; sub_7F81F84F+4Cj
		xor	eax, eax
		pop	esi
		retn
sub_7F81F84F	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81F8AE	proc near		; CODE XREF: sub_7F81F71E+121p
					; sub_7F81F84F+47p ...

nNumberOfBytesToRead= dword ptr	-4

		sub	esp, 4
		mov	eax, dword_7F838078
		mov	cx, [eax+228h]
		push	ebx
		cmp	cx, 1
		push	esi
		push	edi
		push	ebp
		jb	loc_7F81FA2D
		mov	edx, [eax+200h]
		mov	ax, [edx+8]
		cmp	ax, cx
		jbe	loc_7F81FA2D
		cmp	cx, 1
		jb	short loc_7F81F91C
		cmp	ax, cx
		jbe	short loc_7F81F91C
		mov	ax, cx
		shr	ax, 6
		movzx	edx, ax
		and	edx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	ebx, [eax+20Ch]
		mov	ebp, [ebx]
		mov	eax, [edx+ebp]
		xor	edx, edx
		mov	dx, cx
		and	edx, 0FFh
		shl	edx, 5
		lea	edi, [eax+edx]
		jmp	short loc_7F81F91E
; ---------------------------------------------------------------------------

loc_7F81F91C:				; CODE XREF: sub_7F81F8AE+34j
					; sub_7F81F8AE+39j
		xor	edi, edi

loc_7F81F91E:				; CODE XREF: sub_7F81F8AE+6Cj
		mov	eax, dword_7F838078
		cmp	word ptr [eax+21Ch], 5
		jz	short loc_7F81F94F
		mov	ecx, eax
		mov	eax, 2002h
		mov	[ecx+238h], ax
		mov	ecx, dword_7F838078
		mov	word ptr [ecx+21Ch], 2
		jmp	loc_7F81FA4E
; ---------------------------------------------------------------------------

loc_7F81F94F:				; CODE XREF: sub_7F81F8AE+7Dj
		test	byte ptr [edi+11h], 20h
		jz	loc_7F81FA2D
		push	0
		mov	eax, dword_7F838078
		push	dword ptr [eax+224h]
		call	sub_7F8144A4
		mov	ebp, eax
		test	ebp, ebp
		jnz	short loc_7F81F97B
		mov	esi, 1001h
		jmp	loc_7F81FA32
; ---------------------------------------------------------------------------

loc_7F81F97B:				; CODE XREF: sub_7F81F8AE+C1j
		mov	eax, dword_7F838078
		cmp	dword_7F836760,	0
		mov	ecx, [eax+230h]
		mov	[esp+14h+nNumberOfBytesToRead],	ecx
		mov	ebx, [eax+234h]
		jz	short loc_7F81F9A0
		mov	eax, dword_7F836760
		inc	byte ptr [eax]

loc_7F81F9A0:				; CODE XREF: sub_7F81F8AE+E9j
		lea	eax, [esp+14h+nNumberOfBytesToRead]
		push	eax		; int
		push	lpBuffer	; lpBuffer
		push	ebx		; int
		push	edi		; int
		call	sub_7F814E39
		cmp	eax, 1002h
		mov	esi, eax
		jnz	short loc_7F81F9C8
		mov	eax, [esp+14h+nNumberOfBytesToRead]
		add	eax, ebx
		cmp	eax, [edi+14h]
		jnz	short loc_7F81F9C8
		xor	esi, esi

loc_7F81F9C8:				; CODE XREF: sub_7F81F8AE+10Bj
					; sub_7F81F8AE+116j
		test	esi, esi
		jnz	short loc_7F81F9DF
		push	[esp+14h+nNumberOfBytesToRead] ; nNumberOfBytesToRead
		push	lpBuffer	; int
		push	ebx		; int
		push	ebp		; int
		call	sub_7F814D6E
		mov	esi, eax

loc_7F81F9DF:				; CODE XREF: sub_7F81F8AE+11Cj
		cmp	dword_7F836760,	0
		jz	short loc_7F81F9EF
		mov	eax, dword_7F836760
		dec	byte ptr [eax]

loc_7F81F9EF:				; CODE XREF: sub_7F81F8AE+138j
		test	esi, esi
		jnz	short loc_7F81FA32
		cmp	dword_7F838080,	0
		jnz	short loc_7F81FA07
		call	sub_7F82A588
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81FA32

loc_7F81FA07:				; CODE XREF: sub_7F81F8AE+14Cj
		test	byte ptr word_7F838084,	4
		jz	short loc_7F81FA15
		call	nullsub_1

loc_7F81FA15:				; CODE XREF: sub_7F81F8AE+160j
		test	byte ptr word_7F838084,	2
		jz	short loc_7F81FA32
		mov	eax, dword_7F838080
		push	eax
		call	sub_7F82A7F5
		mov	esi, eax
		jmp	short loc_7F81FA32
; ---------------------------------------------------------------------------

loc_7F81FA2D:				; CODE XREF: sub_7F81F8AE+17j
					; sub_7F81F8AE+2Aj ...
		mov	esi, 2003h

loc_7F81FA32:				; CODE XREF: sub_7F81F8AE+C8j
					; sub_7F81F8AE+143j ...
		mov	eax, dword_7F838078
		mov	[eax+238h], si
		mov	eax, dword_7F838078
		mov	word ptr [eax+21Ch], 2
		mov	eax, esi

loc_7F81FA4E:				; CODE XREF: sub_7F81F8AE+9Cj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn
sub_7F81F8AE	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81FA56	proc near		; CODE XREF: sub_7F81F3EF:loc_7F81F432p

var_4		= dword	ptr -4

		sub	esp, 4
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	ebp
		xor	edi, edi
		xor	ebx, ebx
		call	sub_7F81FC85
		test	eax, eax
		jnz	short loc_7F81FA73
		xor	eax, eax
		jmp	loc_7F81FC7D
; ---------------------------------------------------------------------------

loc_7F81FA73:				; CODE XREF: sub_7F81FA56+14j
		mov	eax, dword_7F838078
		mov	eax, [eax+220h]
		test	eax, eax
		jz	short loc_7F81FA96
		push	0
		push	eax
		call	sub_7F8144A4
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81FA96
		push	esi
		call	sub_7F8142DB

loc_7F81FA96:				; CODE XREF: sub_7F81FA56+2Aj
					; sub_7F81FA56+38j
		mov	eax, dword_7F838078
		xor	ebp, ebp
		test	esi, esi
		mov	[eax+220h], ebp
		jnz	short loc_7F81FAB9
		call	sub_7F81FEB2
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F81FAB9
		push	ebp
		push	ebp
		jmp	loc_7F81FC76
; ---------------------------------------------------------------------------

loc_7F81FAB9:				; CODE XREF: sub_7F81FA56+4Fj
					; sub_7F81FA56+5Aj
		mov	ecx, dword_7F838078
		mov	eax, dword_7F836C58
		cmp	[ecx+278h], eax
		jbe	short loc_7F81FAD3
		push	0
		jmp	loc_7F81FC75
; ---------------------------------------------------------------------------

loc_7F81FAD3:				; CODE XREF: sub_7F81FA56+74j
		mov	eax, dword_7F838078
		mov	cx, [eax+228h]
		test	cx, cx
		jnz	short loc_7F81FB1E
		test	byte ptr [esi+11h], 80h
		jnz	short loc_7F81FB01
		cmp	byte ptr [esi+4], 8Ch
		jz	short loc_7F81FB01
		mov	eax, [esi+14h]
		and	eax, 7FFFFFFFh
		add	eax, 87h
		and	al, 80h
		jmp	short loc_7F81FB04
; ---------------------------------------------------------------------------

loc_7F81FB01:				; CODE XREF: sub_7F81FA56+92j
					; sub_7F81FA56+98j
		mov	eax, [esi+14h]

loc_7F81FB04:				; CODE XREF: sub_7F81FA56+A9j
		mov	edx, dword_7F838078
		cmp	[edx+22Ch], eax
		ja	short loc_7F81FB19
		push	0
		jmp	loc_7F81FC75
; ---------------------------------------------------------------------------

loc_7F81FB19:				; CODE XREF: sub_7F81FA56+BAj
		test	cx, cx
		jz	short loc_7F81FB93

loc_7F81FB1E:				; CODE XREF: sub_7F81FA56+8Cj
		cmp	cx, 1
		jb	short loc_7F81FB8C
		mov	eax, dword_7F838078
		mov	edx, [eax+200h]
		mov	ax, [edx+8]
		cmp	ax, cx
		jbe	short loc_7F81FB8C
		cmp	cx, 1
		jb	short loc_7F81FB76
		cmp	ax, cx
		jbe	short loc_7F81FB76
		mov	ax, cx
		shr	ax, 6
		movzx	edx, ax
		and	edx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	ebx, [eax+20Ch]
		mov	ebp, [ebx]
		mov	eax, [edx+ebp]
		xor	edx, edx
		mov	dx, cx
		and	edx, 0FFh
		shl	edx, 5
		lea	ebx, [eax+edx]
		jmp	short loc_7F81FB78
; ---------------------------------------------------------------------------

loc_7F81FB76:				; CODE XREF: sub_7F81FA56+E6j
					; sub_7F81FA56+EBj
		xor	ebx, ebx

loc_7F81FB78:				; CODE XREF: sub_7F81FA56+11Ej
		mov	ax, [ebx+10h]
		test	ah, 20h
		jz	short loc_7F81FB85
		test	al, 10h
		jz	short loc_7F81FB93

loc_7F81FB85:				; CODE XREF: sub_7F81FA56+129j
		push	0
		jmp	loc_7F81FC75
; ---------------------------------------------------------------------------

loc_7F81FB8C:				; CODE XREF: sub_7F81FA56+CCj
					; sub_7F81FA56+E0j
		push	0
		jmp	loc_7F81FC75
; ---------------------------------------------------------------------------

loc_7F81FB93:				; CODE XREF: sub_7F81FA56+C6j
					; sub_7F81FA56+12Dj
		test	ebx, ebx
		jnz	short loc_7F81FC14
		push	esi
		call	sub_7F81FF95
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F81FBC3
		push	1
		push	esi
		call	sub_7F8204F5
		push	esi
		call	sub_7F812F73
		mov	ecx, dword_7F838078
		mov	[ecx+228h], ax
		jmp	loc_7F81FC7B
; ---------------------------------------------------------------------------

loc_7F81FBC3:				; CODE XREF: sub_7F81FA56+14Bj
		cmp	byte ptr [ebx+4], 8Fh
		jnz	short loc_7F81FC14
		mov	eax, dword_7F838078
		xor	ebp, ebp
		add	eax, 220h
		push	eax
		push	ebp
		push	ebp
		push	ebp
		push	esi
		call	sub_7F82046B
		push	ebx
		call	sub_7F8131F6
		sub	dword ptr [ebx+14h], 8
		and	word ptr [ebx+10h], 7FFFh
		mov	eax, dword_7F838078
		add	eax, 224h
		push	eax
		push	ebp
		push	ebp
		push	ebp
		push	ebx
		call	sub_7F82046B
		mov	ecx, dword_7F838078
		mov	word ptr [ecx+21Ch], 3
		jmp	short loc_7F81FC7B
; ---------------------------------------------------------------------------

loc_7F81FC14:				; CODE XREF: sub_7F81FA56+13Fj
					; sub_7F81FA56+171j
		lea	eax, [esp+14h+var_4]
		push	eax
		push	ebx
		push	esi
		call	sub_7F82011E
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F81FC43
		push	ebx
		mov	edi, 0
		push	[esp+18h+var_4]
		call	sub_7F82021B
		cmp	eax, 1
		adc	edi, 0FFFFFFFFh
		and	edi, 1019h
		jz	short loc_7F81FC7B

loc_7F81FC43:				; CODE XREF: sub_7F81FA56+1CEj
		mov	eax, dword_7F838078
		mov	eax, [eax+220h]
		test	eax, eax
		jz	short loc_7F81FC66
		push	0
		push	eax
		call	sub_7F8144A4
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F81FC66
		push	esi
		call	sub_7F8142DB

loc_7F81FC66:				; CODE XREF: sub_7F81FA56+1FAj
					; sub_7F81FA56+208j
		mov	ecx, dword_7F838078
		xor	eax, eax
		push	eax
		mov	[ecx+220h], eax

loc_7F81FC75:				; CODE XREF: sub_7F81FA56+78j
					; sub_7F81FA56+BEj ...
		push	esi

loc_7F81FC76:				; CODE XREF: sub_7F81FA56+5Ej
		call	sub_7F8204F5

loc_7F81FC7B:				; CODE XREF: sub_7F81FA56+168j
					; sub_7F81FA56+1BCj ...
		mov	eax, edi

loc_7F81FC7D:				; CODE XREF: sub_7F81FA56+18j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn
sub_7F81FA56	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81FC85	proc near		; CODE XREF: sub_7F81FA56+Dp
		push	ebx
		mov	eax, dword_7F838078
		push	esi
		push	edi
		xor	edi, edi
		xor	esi, esi
		mov	eax, [eax+220h]
		test	eax, eax
		jz	short loc_7F81FCB3
		push	esi
		push	eax
		call	sub_7F8144A4
		cmp	eax, esi
		mov	edi, eax
		jnz	short loc_7F81FCB3
		mov	eax, dword_7F838078
		mov	[eax+220h], esi

loc_7F81FCB3:				; CODE XREF: sub_7F81FC85+14j
					; sub_7F81FC85+21j
		mov	eax, dword_7F838078
		xor	ebx, ebx
		mov	eax, [eax+224h]
		test	eax, eax
		jz	short loc_7F81FCDC
		push	ebx
		push	eax
		call	sub_7F8144A4
		cmp	eax, ebx
		mov	esi, eax
		jnz	short loc_7F81FCDC
		mov	eax, dword_7F838078
		mov	[eax+224h], ebx

loc_7F81FCDC:				; CODE XREF: sub_7F81FC85+3Dj
					; sub_7F81FC85+4Aj
		test	edi, edi
		jz	loc_7F81FD78
		test	esi, esi
		jz	loc_7F81FE86
		mov	ax, [edi+10h]
		test	ah, 80h
		jnz	short loc_7F81FD11
		cmp	byte ptr [edi+4], 8Ch
		jz	short loc_7F81FD11
		lea	ecx, [edi+14h]
		mov	edx, [ecx]
		and	edx, 7FFFFFFFh
		add	edx, 87h
		and	dl, 80h
		jmp	short loc_7F81FD16
; ---------------------------------------------------------------------------

loc_7F81FD11:				; CODE XREF: sub_7F81FC85+6Ej
					; sub_7F81FC85+74j
		lea	ecx, [edi+14h]
		mov	edx, [ecx]

loc_7F81FD16:				; CODE XREF: sub_7F81FC85+8Aj
		mov	ebx, [edi+18h]
		add	ebx, edx
		cmp	ebx, [esi+18h]
		jnz	short loc_7F81FD78
		test	ah, 40h
		jnz	short loc_7F81FDA2
		mov	ax, [esi+10h]
		test	ah, 40h
		jnz	short loc_7F81FDA2
		test	ah, 80h
		jnz	short loc_7F81FD4A
		cmp	byte ptr [esi+4], 8Ch
		jz	short loc_7F81FD4A
		mov	eax, [esi+14h]
		and	eax, 7FFFFFFFh
		add	eax, 87h
		and	al, 80h
		jmp	short loc_7F81FD4D
; ---------------------------------------------------------------------------

loc_7F81FD4A:				; CODE XREF: sub_7F81FC85+ACj
					; sub_7F81FC85+B2j
		mov	eax, [esi+14h]

loc_7F81FD4D:				; CODE XREF: sub_7F81FC85+C3j
		push	edi
		add	[ecx], eax
		call	sub_7F8148F7
		mov	eax, dword_7F838078
		push	esi
		mov	dword ptr [eax+224h], 0
		call	sub_7F8142DB
		push	esi
		call	sub_7F812F73
		push	eax
		xor	esi, esi
		call	sub_7F813BE4

loc_7F81FD78:				; CODE XREF: sub_7F81FC85+59j
					; sub_7F81FC85+99j
		test	esi, esi
		jz	loc_7F81FE86
		mov	cx, [esi+10h]
		test	ch, 80h
		jnz	short loc_7F81FDC4
		cmp	byte ptr [esi+4], 8Ch
		jz	short loc_7F81FDC4
		lea	edi, [esi+14h]
		mov	eax, [edi]
		and	eax, 7FFFFFFFh
		add	eax, 87h
		and	al, 80h
		jmp	short loc_7F81FDC9
; ---------------------------------------------------------------------------

loc_7F81FDA2:				; CODE XREF: sub_7F81FC85+9Ej
					; sub_7F81FC85+A7j
		mov	eax, dword_7F838078
		push	0
		mov	word ptr [eax+21Ch], 3
		mov	eax, dword_7F838078
		push	eax
		call	sub_7F82A8C1
		xor	eax, eax
		jmp	loc_7F81FEAE
; ---------------------------------------------------------------------------

loc_7F81FDC4:				; CODE XREF: sub_7F81FC85+102j
					; sub_7F81FC85+108j
		lea	edi, [esi+14h]
		mov	eax, [edi]

loc_7F81FDC9:				; CODE XREF: sub_7F81FC85+11Bj
		mov	edx, [esi+18h]
		add	edx, eax
		mov	eax, dword_7F838078
		mov	ebx, [eax+200h]
		cmp	edx, [ebx+4]
		jnz	loc_7F81FE86
		test	ch, 40h
		jz	short loc_7F81FE04
		mov	word ptr [eax+21Ch], 3
		push	0
		mov	eax, dword_7F838078
		push	eax
		call	sub_7F82A8C1
		xor	eax, eax
		jmp	loc_7F81FEAE
; ---------------------------------------------------------------------------

loc_7F81FE04:				; CODE XREF: sub_7F81FC85+160j
		mov	ecx, dword_7F838078
		push	esi
		mov	dword ptr [ecx+224h], 0
		call	sub_7F8142DB
		test	byte ptr [esi+11h], 80h
		jnz	short loc_7F81FE44
		cmp	byte ptr [esi+4], 8Ch
		jz	short loc_7F81FE44
		mov	eax, dword_7F838078
		mov	ecx, [eax+200h]
		mov	eax, [edi]
		and	eax, 7FFFFFFFh
		add	eax, 87h
		and	al, 80h
		sub	[ecx+4], eax
		jmp	short loc_7F81FE54
; ---------------------------------------------------------------------------

loc_7F81FE44:				; CODE XREF: sub_7F81FC85+199j
					; sub_7F81FC85+19Fj
		mov	eax, dword_7F838078
		mov	edx, [edi]
		mov	ecx, [eax+200h]
		sub	[ecx+4], edx

loc_7F81FE54:				; CODE XREF: sub_7F81FC85+1BDj
		push	esi
		call	sub_7F812F73
		push	eax
		xor	esi, esi
		call	sub_7F813BE4
		push	esi
		call	sub_7F812C72
		mov	eax, dword_7F838078
		mov	[eax+228h], si
		mov	eax, dword_7F838078
		mov	word ptr [eax+21Ch], 3
		xor	eax, eax
		jmp	short loc_7F81FEAE
; ---------------------------------------------------------------------------

loc_7F81FE86:				; CODE XREF: sub_7F81FC85+61j
					; sub_7F81FC85+F5j ...
		xor	edi, edi
		test	esi, esi
		jz	short loc_7F81FEA9
		push	esi
		call	sub_7F8142DB
		mov	ax, [esi+10h]
		push	eax
		push	esi
		call	sub_7F813059
		mov	ecx, dword_7F838078
		mov	[ecx+224h], edi

loc_7F81FEA9:				; CODE XREF: sub_7F81FC85+205j
		mov	eax, 1

loc_7F81FEAE:				; CODE XREF: sub_7F81FC85+13Aj
					; sub_7F81FC85+17Aj ...
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F81FC85	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F81FEB2	proc near		; CODE XREF: sub_7F81FA56+51p
		push	ebx
		mov	eax, dword_7F838078
		push	esi
		push	edi
		mov	ecx, [eax+200h]
		xor	esi, esi
		mov	dx, [ecx+0Ch]
		test	dx, dx
		jz	loc_7F81FF77

loc_7F81FECF:				; CODE XREF: sub_7F81FEB2+BFj
		cmp	dx, 1
		jb	short loc_7F81FF0D
		cmp	[ecx+8], dx
		jbe	short loc_7F81FF0D
		mov	ax, dx
		shr	ax, 6
		movzx	edi, ax
		and	edi, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	ebx, [eax+20Ch]
		mov	eax, [ebx]
		mov	ebx, [edi+eax]
		xor	edi, edi
		mov	di, dx
		and	edi, 0FFh
		shl	edi, 5
		add	edi, ebx
		jmp	short loc_7F81FF0F
; ---------------------------------------------------------------------------

loc_7F81FF0D:				; CODE XREF: sub_7F81FEB2+21j
					; sub_7F81FEB2+27j
		xor	edi, edi

loc_7F81FF0F:				; CODE XREF: sub_7F81FEB2+59j
		test	dx, dx
		jz	short loc_7F81FF6A

loc_7F81FF14:				; CODE XREF: sub_7F81FEB2+B6j
		cmp	dx, 1
		jb	short loc_7F81FF52
		cmp	[ecx+8], dx
		jbe	short loc_7F81FF52
		mov	ax, dx
		shr	ax, 6
		movzx	ebx, ax
		and	ebx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	eax, [eax+20Ch]
		mov	eax, [eax]
		mov	eax, [ebx+eax]
		xor	ebx, ebx
		mov	bx, dx
		and	ebx, 0FFh
		shl	ebx, 5
		add	eax, ebx
		jmp	short loc_7F81FF54
; ---------------------------------------------------------------------------

loc_7F81FF52:				; CODE XREF: sub_7F81FEB2+66j
					; sub_7F81FEB2+6Cj
		xor	eax, eax

loc_7F81FF54:				; CODE XREF: sub_7F81FEB2+9Ej
		test	esi, esi
		jz	short loc_7F81FF60
		mov	edx, [esi+18h]
		cmp	[eax+18h], edx
		jnb	short loc_7F81FF62

loc_7F81FF60:				; CODE XREF: sub_7F81FEB2+A4j
		mov	esi, eax

loc_7F81FF62:				; CODE XREF: sub_7F81FEB2+ACj
		mov	dx, [eax]
		test	dx, dx
		jnz	short loc_7F81FF14

loc_7F81FF6A:				; CODE XREF: sub_7F81FEB2+60j
		mov	dx, [edi+2]
		test	dx, dx
		jnz	loc_7F81FECF

loc_7F81FF77:				; CODE XREF: sub_7F81FEB2+17j
		test	esi, esi
		jz	short loc_7F81FF8F
		push	esi
		call	sub_7F8131F6
		test	eax, eax
		jz	short loc_7F81FF8F
		sub	dword ptr [esi+14h], 8
		and	word ptr [esi+10h], 7FFFh

loc_7F81FF8F:				; CODE XREF: sub_7F81FEB2+C7j
					; sub_7F81FEB2+D1j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F81FEB2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F81FF95	proc near		; CODE XREF: sub_7F81FA56+142p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8

		push	ebp
		mov	eax, dword_7F838078
		mov	ebp, esp
		sub	esp, 10h
		mov	edx, [eax+20Ch]
		push	ebx
		push	esi
		xor	eax, eax
		push	edi
		mov	ecx, [edx]
		xor	edx, edx
		mov	[ebp+var_8], ecx
		mov	ecx, dword_7F838078
		mov	ebx, [ebp+var_8]
		mov	cx, [ecx+204h]
		mov	edi, [ebx]
		add	[ebp+var_8], 4
		mov	[ebp+var_4], cx
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_10], 1
		cmp	cx, ax
		jle	loc_7F8200C8

loc_7F81FFDF:				; CODE XREF: sub_7F81FF95+12Dj
		cmp	[ebp+var_4], 1
		jle	short loc_7F81FFEE
		mov	[ebp+var_2], 100h
		jmp	short loc_7F82000B
; ---------------------------------------------------------------------------

loc_7F81FFEE:				; CODE XREF: sub_7F81FF95+4Fj
		mov	ecx, dword_7F838078
		mov	ebx, [ecx+200h]
		mov	cx, [ebx+8]
		dec	cx
		and	cx, 0FFh
		inc	cx
		mov	[ebp+var_2], cx

loc_7F82000B:				; CODE XREF: sub_7F81FF95+57j
		cmp	[ebp+var_10], 0
		jz	short loc_7F82001F
		dec	[ebp+var_2]
		add	edi, 20h
		mov	[ebp+var_10], 0

loc_7F82001F:				; CODE XREF: sub_7F81FF95+7Aj
		cmp	[ebp+var_2], 0
		jz	loc_7F8200B0

loc_7F82002A:				; CODE XREF: sub_7F81FF95+115j
		test	byte ptr [edi+10h], 10h
		jnz	short loc_7F82009E
		mov	ecx, [edi+18h]
		cmp	[esi+18h], ecx
		jnb	short loc_7F82009E
		test	edx, edx
		jz	short loc_7F820041
		cmp	[edx+18h], ecx
		jbe	short loc_7F820043

loc_7F820041:				; CODE XREF: sub_7F81FF95+A5j
		mov	edx, edi

loc_7F820043:				; CODE XREF: sub_7F81FF95+AAj
		mov	ecx, [edi+14h]
		test	ecx, ecx
		jge	short loc_7F82009E
		test	byte ptr [edi+11h], 80h
		jnz	short loc_7F82009E
		cmp	byte ptr [edi+4], 8Ch
		jz	short loc_7F820065
		and	ecx, 7FFFFFFFh
		add	ecx, 87h
		and	cl, 80h

loc_7F820065:				; CODE XREF: sub_7F81FF95+BFj
		test	byte ptr [esi+11h], 80h
		jnz	short loc_7F820085
		cmp	byte ptr [esi+4], 8Ch
		jz	short loc_7F820085
		mov	ebx, [esi+14h]
		and	ebx, 7FFFFFFFh
		add	ebx, 87h
		and	bl, 80h
		jmp	short loc_7F820088
; ---------------------------------------------------------------------------

loc_7F820085:				; CODE XREF: sub_7F81FF95+D4j
					; sub_7F81FF95+DAj
		mov	ebx, [esi+14h]

loc_7F820088:				; CODE XREF: sub_7F81FF95+EEj
		mov	[ebp+var_C], ebx
		cmp	ecx, [ebp+var_C]
		jnz	short loc_7F82009E
		test	eax, eax
		jz	short loc_7F82009C
		mov	ecx, [edi+18h]
		cmp	[eax+18h], ecx
		jnb	short loc_7F82009E

loc_7F82009C:				; CODE XREF: sub_7F81FF95+FDj
		mov	eax, edi

loc_7F82009E:				; CODE XREF: sub_7F81FF95+99j
					; sub_7F81FF95+A1j ...
		dec	[ebp+var_2]
		add	edi, 20h
		cmp	[ebp+var_2], 0
		jnz	loc_7F82002A

loc_7F8200B0:				; CODE XREF: sub_7F81FF95+8Fj
		dec	[ebp+var_4]
		mov	ecx, [ebp+var_8]
		add	[ebp+var_8], 4
		cmp	[ebp+var_4], 0
		mov	edi, [ecx]
		jnz	loc_7F81FFDF

loc_7F8200C8:				; CODE XREF: sub_7F81FF95+44j
		test	edx, edx
		jz	short loc_7F82010F
		test	byte ptr [esi+11h], 80h
		jnz	short loc_7F8200EC
		cmp	byte ptr [esi+4], 8Ch
		jz	short loc_7F8200EC
		mov	edi, [esi+14h]
		and	edi, 7FFFFFFFh
		add	edi, 87h
		and	edi, 0FFFFFF80h
		jmp	short loc_7F8200EF
; ---------------------------------------------------------------------------

loc_7F8200EC:				; CODE XREF: sub_7F81FF95+13Bj
					; sub_7F81FF95+141j
		mov	edi, [esi+14h]

loc_7F8200EF:				; CODE XREF: sub_7F81FF95+155j
		mov	ecx, [esi+18h]
		add	ecx, edi
		cmp	ecx, [edx+18h]
		jz	short loc_7F8200FB
		xor	edx, edx

loc_7F8200FB:				; CODE XREF: sub_7F81FF95+162j
		test	edx, edx
		jz	short loc_7F82010F
		cmp	byte ptr [edx+4], 8Fh
		jnz	short loc_7F82010F
		test	byte ptr [edx+11h], 80h
		jz	short loc_7F82010F
		mov	eax, edx
		jmp	short loc_7F820115
; ---------------------------------------------------------------------------

loc_7F82010F:				; CODE XREF: sub_7F81FF95+135j
					; sub_7F81FF95+168j ...
		test	eax, eax
		jnz	short loc_7F820115
		mov	eax, edx

loc_7F820115:				; CODE XREF: sub_7F81FF95+178j
					; sub_7F81FF95+17Cj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F81FF95	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82011E	proc near		; CODE XREF: sub_7F81FA56+1C5p

var_8		= dword	ptr -8
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		push	ebp
		xor	edi, edi
		mov	ebp, [esp+18h+arg_4]
		test	byte ptr [ebp+11h], 80h
		jnz	short loc_7F82014E
		cmp	byte ptr [ebp+4], 8Ch
		jz	short loc_7F82014E
		add	ebp, 14h
		mov	ecx, [ebp+0]
		and	ecx, 7FFFFFFFh
		add	ecx, 87h
		and	cl, 80h
		jmp	short loc_7F820154
; ---------------------------------------------------------------------------

loc_7F82014E:				; CODE XREF: sub_7F82011E+11j
					; sub_7F82011E+17j
		add	ebp, 14h
		mov	ecx, [ebp+0]

loc_7F820154:				; CODE XREF: sub_7F82011E+2Ej
		mov	esi, [esp+18h+arg_0]
		mov	ax, [esi+10h]
		test	ah, 80h
		mov	word ptr [esp+18h+var_8], ax
		jnz	short loc_7F82017D
		cmp	byte ptr [esi+4], 8Ch
		jz	short loc_7F82017D
		mov	eax, [esi+14h]
		and	eax, 7FFFFFFFh
		add	eax, 87h
		and	al, 80h
		jmp	short loc_7F820180
; ---------------------------------------------------------------------------

loc_7F82017D:				; CODE XREF: sub_7F82011E+46j
					; sub_7F82011E+4Cj
		mov	eax, [esi+14h]

loc_7F820180:				; CODE XREF: sub_7F82011E+5Dj
		sub	eax, ecx
		mov	ebx, 0
		jnz	short loc_7F82019E
		mov	ebx, esi
		mov	eax, [ebp+0]
		and	eax, 7FFFFFFFh
		push	esi
		mov	[esi+14h], eax
		call	sub_7F8148F7
		jmp	short loc_7F820205
; ---------------------------------------------------------------------------

loc_7F82019E:				; CODE XREF: sub_7F82011E+69j
		test	eax, eax
		jle	short loc_7F8201DD
		mov	ebx, esi
		mov	edx, dword_7F838078
		add	edx, 220h
		sub	eax, 8
		push	edx
		mov	edx, [esi+18h]
		push	[esp+1Ch+var_8]
		add	edx, ecx
		push	edx
		push	eax
		push	0
		call	sub_7F82046B
		test	eax, eax
		jnz	short loc_7F820200
		mov	eax, [ebp+0]
		push	esi
		and	eax, 7FFFFFFFh
		mov	[esi+14h], eax
		call	sub_7F8148F7
		jmp	short loc_7F820205
; ---------------------------------------------------------------------------

loc_7F8201DD:				; CODE XREF: sub_7F82011E+82j
		mov	eax, dword_7F838078
		xor	ebp, ebp
		cmp	[eax+228h], bp
		jnz	short loc_7F820200
		add	eax, 220h
		xor	ebx, ebx
		push	eax
		push	ebp
		push	ebp
		push	ebp
		push	esi
		call	sub_7F82046B
		jmp	short loc_7F820205
; ---------------------------------------------------------------------------

loc_7F820200:				; CODE XREF: sub_7F82011E+AAj
					; sub_7F82011E+CDj
		mov	edi, 2003h

loc_7F820205:				; CODE XREF: sub_7F82011E+7Ej
					; sub_7F82011E+BDj ...
		test	edi, edi
		jnz	short loc_7F82020F
		mov	eax, [esp+18h+arg_8]
		mov	[eax], ebx

loc_7F82020F:				; CODE XREF: sub_7F82011E+E9j
		mov	eax, edi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 8
		retn	0Ch
sub_7F82011E	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82021B	proc near		; CODE XREF: sub_7F81F5A7+B6p
					; sub_7F81FA56+1DAp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	ebx, [esp+8+arg_4]
		push	edi
		push	ebp
		mov	eax, [ebx+4]
		sub	eax, 70616D80h
		cmp	eax, 1
		mov	eax, dword_7F838078
		sbb	edi, edi
		mov	esi, [ebx+14h]
		neg	edi
		cmp	dword ptr [eax+22Ch], 1
		sbb	ebp, ebp
		and	esi, 7FFFFFFFh
		inc	ebp
		cmp	[esp+10h+arg_0], 0
		jnz	loc_7F8202DD
		lea	eax, [esp+10h+arg_0]
		push	ebp
		push	esi
		push	eax
		call	sub_7F813636
		test	eax, eax
		jz	short loc_7F8202DD
		test	ebp, ebp
		jz	short loc_7F820281
		mov	eax, dword_7F838078
		mov	word ptr [eax+212h], 29h
		mov	eax, 204h
		jmp	loc_7F820464
; ---------------------------------------------------------------------------

loc_7F820281:				; CODE XREF: sub_7F82021B+4Cj
		mov	ecx, dword_7F838078
		mov	word ptr [ecx+228h], 0
		mov	ecx, dword_7F838078
		mov	eax, dword_7F836C58
		cmp	[ecx+278h], eax
		ja	short loc_7F8202C5
		add	esi, 87h
		and	esi, 0FFFFFF80h
		mov	[ecx+22Ch], esi
		mov	eax, dword_7F838078
		mov	word ptr [eax+21Ch], 3
		jmp	loc_7F820462
; ---------------------------------------------------------------------------

loc_7F8202C5:				; CODE XREF: sub_7F82021B+86j
		mov	eax, dword_7F838078
		mov	word ptr [eax+21Ch], 0
		mov	eax, 1000h
		jmp	loc_7F820464
; ---------------------------------------------------------------------------

loc_7F8202DD:				; CODE XREF: sub_7F82021B+34j
					; sub_7F82021B+48j
		test	edi, edi
		jz	loc_7F8203AC
		mov	eax, [esp+10h+arg_0]
		mov	word ptr [eax+10h], 0
		mov	eax, [esp+10h+arg_0]
		movzx	edx, word ptr [eax+10h]
		mov	edi, 0FFFFFE00h
		mov	[eax+1Ch], edx
		mov	ecx, dword_7F838078
		mov	eax, [esp+10h+arg_0]
		movzx	edx, word ptr [ecx+0Ch]
		shl	edx, 5
		mov	ecx, 1FFh
		add	edx, ecx
		mov	eax, [eax+18h]
		and	edx, edi
		add	eax, ecx
		and	eax, edi
		mov	ecx, dword_7F838078
		push	ebx
		mov	[ecx+10h], eax
		add	eax, edx
		mov	ecx, dword_7F838078
		mov	[ecx+50h], eax
		call	sub_7F812F73
		mov	ecx, dword_7F838078
		mov	[ecx+228h], ax
		push	[esp+10h+arg_0]
		push	ebx
		call	sub_7F820544
		mov	ecx, dword_7F838078
		mov	eax, [ecx+20Ch]
		mov	ecx, [eax]
		mov	edx, [ecx]
		add	ecx, 4
		test	edx, edx
		jz	short loc_7F820383

loc_7F820368:				; CODE XREF: sub_7F82021B+166j
		mov	ax, 100h

loc_7F82036C:				; CODE XREF: sub_7F82021B+15Dj
		or	byte ptr [edx+10h], 3
		dec	ax
		add	edx, 20h
		test	ax, ax
		jnz	short loc_7F82036C
		mov	edx, [ecx]
		add	ecx, 4
		test	edx, edx
		jnz	short loc_7F820368

loc_7F820383:				; CODE XREF: sub_7F82021B+14Bj
		mov	eax, dword_7F838078
		mov	ecx, [eax+200h]
		mov	dx, [ecx+8]
		mov	[eax+214h], dx
		mov	eax, dword_7F838078
		mov	word ptr [eax+23Ch], 0
		jmp	loc_7F820462
; ---------------------------------------------------------------------------

loc_7F8203AC:				; CODE XREF: sub_7F82021B+C4j
		mov	eax, dword_7F838078
		add	eax, 224h
		push	eax
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	[esp+20h+arg_0]
		call	sub_7F82046B
		or	byte ptr [ebx+11h], 20h
		push	ebx
		call	sub_7F812F73
		mov	ecx, dword_7F838078
		mov	[ecx+228h], ax
		mov	ecx, dword_7F838078
		mov	dword ptr [ecx+234h], 0FFFFFFF8h
		mov	eax, [ebx+14h]
		mov	ecx, dword_7F838078
		and	eax, 7FFFFFFFh
		mov	edx, 800h
		add	eax, 8
		mov	[ecx+230h], eax
		mov	ecx, dword_7F838078
		add	ecx, 230h
		cmp	[ecx], edx
		jbe	short loc_7F820424
		mov	eax, [ebx+18h]
		and	eax, 1FFh
		sub	edx, eax
		mov	[ecx], edx

loc_7F820424:				; CODE XREF: sub_7F82021B+1FBj
		test	ebp, ebp
		jz	short loc_7F82044F
		mov	eax, [esp+10h+arg_0]
		test	byte ptr [eax+11h], 40h
		jz	short loc_7F82044F
		mov	eax, dword_7F838078
		push	0
		mov	word ptr [eax+21Ch], 4
		mov	eax, dword_7F838078
		push	eax
		call	sub_7F82A8C1
		jmp	short loc_7F820462
; ---------------------------------------------------------------------------

loc_7F82044F:				; CODE XREF: sub_7F82021B+20Bj
					; sub_7F82021B+215j
		mov	eax, dword_7F838078
		mov	word ptr [eax+21Ch], 5
		call	sub_7F81F8AE

loc_7F820462:				; CODE XREF: sub_7F82021B+A5j
					; sub_7F82021B+18Cj ...
		xor	eax, eax

loc_7F820464:				; CODE XREF: sub_7F82021B+61j
					; sub_7F82021B+BDj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F82021B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82046B	proc near		; CODE XREF: sub_7F81FA56+184p
					; sub_7F81FA56+1A8p ...

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		= word ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 8
		test	eax, eax
		push	esi
		jz	short loc_7F82047F
		mov	[ebp+var_4], eax
		jmp	short loc_7F8204AB
; ---------------------------------------------------------------------------

loc_7F82047F:				; CODE XREF: sub_7F82046B+Dj
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		call	sub_7F81339D
		test	eax, eax
		jnz	short loc_7F8204EE
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_8]
		mov	edx, [ebp+arg_4]
		mov	[ecx+18h], eax
		mov	ax, [ebp+arg_C]
		mov	ecx, [ebp+var_4]
		mov	[ecx+14h], edx
		mov	ecx, [ebp+var_4]
		mov	[ecx+10h], ax

loc_7F8204AB:				; CODE XREF: sub_7F82046B+12j
		mov	eax, [ebp+var_4]
		xor	ecx, ecx
		and	word ptr [eax+10h], 7FFFh
		mov	eax, [ebp+var_4]
		mov	esi, [ebp+arg_10]
		mov	[eax+1Ch], ecx
		mov	eax, [ebp+var_4]
		or	byte ptr [eax+17h], 80h
		mov	[esi], ecx
		lea	ecx, [ebp+var_8]
		push	ecx
		push	esi
		push	8Eh
		call	sub_7F8142AB
		mov	edx, [esi]
		mov	ecx, [ebp+var_4]
		mov	[ecx+4], edx
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	dword ptr [esi]
		call	sub_7F81444D
		xor	eax, eax

loc_7F8204EE:				; CODE XREF: sub_7F82046B+21j
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F82046B	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8204F5	proc near		; CODE XREF: sub_7F81FA56+150p
					; sub_7F81FA56:loc_7F81FC76p

arg_0		= dword	ptr  4
arg_4		= word ptr  8

		push	esi
		mov	eax, dword_7F838078
		push	edi
		xor	esi, esi
		mov	[eax+22Ch], esi
		mov	ax, [esp+8+arg_4]
		mov	ecx, dword_7F838078
		mov	[ecx+21Ch], ax
		mov	eax, [esp+8+arg_0]
		cmp	eax, esi
		jz	short loc_7F82053F
		mov	di, [eax+10h]
		and	di, 4000h
		push	edi
		push	eax
		call	sub_7F813059
		test	di, di
		jz	short loc_7F82053F
		push	esi
		mov	eax, dword_7F838078
		push	eax
		call	sub_7F82A8C1

loc_7F82053F:				; CODE XREF: sub_7F8204F5+27j
					; sub_7F8204F5+3Cj
		pop	edi
		pop	esi
		retn	8
sub_7F8204F5	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F820544	proc near		; CODE XREF: sub_7F81F71E+101p
					; sub_7F82021B+131p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	esi, [esp+8+arg_4]
		mov	edi, [esp+8+arg_0]
		push	esi
		push	edi
		call	sub_7F814AC2
		mov	eax, dword_7F838078
		cmp	dword ptr [eax+22Ch], 0
		jnz	short loc_7F8205A9
		push	esi
		call	sub_7F812F73
		mov	ecx, dword_7F838078
		mov	[ecx+228h], ax
		mov	ax, [esi+10h]
		and	ax, 1000h
		cmp	ax, 1
		mov	eax, 0
		adc	eax, 0FFFFFFFFh
		and	ax, 4000h
		push	eax
		push	esi
		call	sub_7F813059
		mov	ecx, dword_7F838078
		mov	word ptr [ecx+21Ch], 1
		jmp	loc_7F820637
; ---------------------------------------------------------------------------

loc_7F8205A9:				; CODE XREF: sub_7F820544+1Dj
		mov	eax, [edi+18h]
		cmp	[esi+18h], eax
		jbe	short loc_7F8205C1
		mov	eax, dword_7F838078
		mov	word ptr [eax+228h], 0
		jmp	short loc_7F8205C5
; ---------------------------------------------------------------------------

loc_7F8205C1:				; CODE XREF: sub_7F820544+6Bj
		or	byte ptr [edi+11h], 20h

loc_7F8205C5:				; CODE XREF: sub_7F820544+7Bj
		test	byte ptr [edi+11h], 80h
		jnz	short loc_7F8205E5
		cmp	byte ptr [edi+4], 8Ch
		jz	short loc_7F8205E5
		mov	ecx, [edi+14h]
		and	ecx, 7FFFFFFFh
		add	ecx, 87h
		and	cl, 80h
		jmp	short loc_7F8205E8
; ---------------------------------------------------------------------------

loc_7F8205E5:				; CODE XREF: sub_7F820544+85j
					; sub_7F820544+8Bj
		mov	ecx, [edi+14h]

loc_7F8205E8:				; CODE XREF: sub_7F820544+9Fj
		mov	eax, [edi+18h]
		add	eax, ecx
		cmp	eax, [esi+18h]
		mov	eax, dword_7F838078
		jnz	short loc_7F82060E
		add	eax, 220h
		mov	edx, dword_7F838078
		mov	dword ptr [edx+224h], 0
		jmp	short loc_7F820613
; ---------------------------------------------------------------------------

loc_7F82060E:				; CODE XREF: sub_7F820544+B1j
		add	eax, 224h

loc_7F820613:				; CODE XREF: sub_7F820544+C8j
		push	eax
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	esi
		call	sub_7F82046B
		push	esi
		call	sub_7F8148F7
		or	byte ptr [esi+11h], 40h
		mov	eax, dword_7F838078
		mov	word ptr [eax+21Ch], 3

loc_7F820637:				; CODE XREF: sub_7F820544+60j
		pop	edi
		pop	esi
		retn	8
sub_7F820544	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82063C	proc near		; CODE XREF: sub_7F81F71E:loc_7F81F846p
		push	esi
		mov	eax, dword_7F838078
		xor	esi, esi
		mov	[eax+238h], si
		mov	eax, dword_7F838078
		cmp	[eax+22Ch], esi
		jnz	short loc_7F820673
		push	esi
		push	dword ptr [eax+224h]
		call	sub_7F81479E
		mov	ecx, dword_7F838078
		mov	[ecx+21Ch], si
		jmp	short loc_7F82068F
; ---------------------------------------------------------------------------

loc_7F820673:				; CODE XREF: sub_7F82063C+1Aj
		mov	eax, dword_7F838078
		mov	word ptr [eax+228h], 0
		mov	eax, dword_7F838078
		mov	word ptr [eax+21Ch], 3

loc_7F82068F:				; CODE XREF: sub_7F82063C+35j
		pop	esi
		retn
sub_7F82063C	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F820691	proc near		; CODE XREF: sub_7F813C77+FCp
					; sub_7F821A34+116p

var_4		= dword	ptr -4

		sub	esp, 4
		lea	eax, [esp+4+var_4]
		push	esi
		xor	esi, esi
		push	eax
		mov	[esp+0Ch+var_4], 200h
		call	sub_7F8206CD
		test	eax, eax
		jz	short loc_7F8206C1
		mov	eax, dword_7F838078
		mov	ecx, [esp+8+var_4]
		mov	edx, [eax+200h]
		cmp	[edx+4], ecx
		jz	short loc_7F8206C6

loc_7F8206C1:				; CODE XREF: sub_7F820691+1Aj
		mov	esi, 100Bh

loc_7F8206C6:				; CODE XREF: sub_7F820691+2Ej
		mov	eax, esi
		pop	esi
		add	esp, 4
		retn
sub_7F820691	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8206CD	proc near		; CODE XREF: sub_7F820691+13p

arg_0		= dword	ptr  4

		push	ebx
		mov	ecx, 1
		push	esi
		mov	eax, dword_7F838078
		push	edi
		push	ebp
		mov	edx, [eax+20Ch]
		mov	esi, [edx]
		mov	dx, [eax+204h]
		mov	edi, [esi]
		add	esi, 4
		test	dx, dx
		jle	loc_7F820796

loc_7F8206F8:				; CODE XREF: sub_7F8206CD+C3j
		mov	bx, 100h
		cmp	dx, 1
		jg	short loc_7F82071A
		mov	eax, dword_7F838078
		mov	ebp, [eax+200h]
		mov	bx, [ebp+8]
		dec	bx
		and	bx, 0FFh
		inc	bx

loc_7F82071A:				; CODE XREF: sub_7F8206CD+33j
		test	ecx, ecx
		jz	short loc_7F820725
		dec	bx
		xor	ecx, ecx
		add	edi, 20h

loc_7F820725:				; CODE XREF: sub_7F8206CD+4Fj
		test	bx, bx
		jz	short loc_7F820786

loc_7F82072A:				; CODE XREF: sub_7F8206CD+B7j
		mov	ax, [edi+10h]
		test	al, 10h
		jnz	short loc_7F82077C
		test	ah, 80h
		jnz	short loc_7F820751
		cmp	byte ptr [edi+4], 8Ch
		jz	short loc_7F820751
		mov	ebp, [edi+14h]
		and	ebp, 7FFFFFFFh
		add	ebp, 87h
		and	ebp, 0FFFFFF80h
		jmp	short loc_7F820754
; ---------------------------------------------------------------------------

loc_7F820751:				; CODE XREF: sub_7F8206CD+68j
					; sub_7F8206CD+6Ej
		mov	ebp, [edi+14h]

loc_7F820754:				; CODE XREF: sub_7F8206CD+82j
		mov	eax, [esp+10h+arg_0]
		add	[eax], ebp
		cmp	byte ptr [edi+4], 8Ch
		jz	short loc_7F82077C
		cmp	dword ptr [edi+18h], 200h
		jb	short loc_7F8207A2
		mov	eax, dword_7F838078
		mov	ebp, [eax+200h]
		mov	eax, [edi+18h]
		cmp	[ebp+4], eax
		jb	short loc_7F8207A2

loc_7F82077C:				; CODE XREF: sub_7F8206CD+63j
					; sub_7F8206CD+91j
		dec	bx
		add	edi, 20h
		test	bx, bx
		jnz	short loc_7F82072A

loc_7F820786:				; CODE XREF: sub_7F8206CD+5Bj
		dec	dx
		mov	edi, [esi]
		add	esi, 4
		test	dx, dx
		jg	loc_7F8206F8

loc_7F820796:				; CODE XREF: sub_7F8206CD+25j
		mov	eax, 1

loc_7F82079B:				; CODE XREF: sub_7F8206CD+D7j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	4
; ---------------------------------------------------------------------------

loc_7F8207A2:				; CODE XREF: sub_7F8206CD+9Aj
					; sub_7F8206CD+ADj
		xor	eax, eax
		jmp	short loc_7F82079B
sub_7F8206CD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8207A6(LPCSTR lpString, int, int,	__int16, int, int, int)
sub_7F8207A6	proc near		; CODE XREF: sub_7F80F91C+A2p
					; sub_7F80F91C+E6p ...

var_20		= word ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= word ptr -14h
var_10		= dword	ptr -10h
hCursor		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
lpString	= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= word ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	ebx
		push	esi
		push	edi
		push	[ebp+lpString]	; lpString
		call	ds:lstrlenA
		mov	esi, eax
		mov	ax, [ebp+arg_C]
		mov	edi, 1
		and	ax, 2
		movzx	ecx, ax
		mov	[ebp+var_14], ax
		mov	[ebp+hCursor], ecx
		mov	[ebp+var_2], di
		xor	eax, eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_1C], eax
		call	sub_7F82449E
		test	byte ptr [ebp+arg_C+1],	2
		mov	[ebp+var_18], eax
		jz	short loc_7F8207F1
		mov	dword_7F836C68,	edi

loc_7F8207F1:				; CODE XREF: sub_7F8207A6+43j
		push	10h
		add	esi, 39h
		push	esi
		call	sub_7F82F18D
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F82080C
		mov	edi, 400h
		jmp	loc_7F820B74
; ---------------------------------------------------------------------------

loc_7F82080C:				; CODE XREF: sub_7F8207A6+5Aj
		mov	ebx, [esi]
		push	[ebp+lpString]	; lpString2
		mov	word ptr [ebx+10h], 0FFFFh
		mov	word ptr [ebx+12h], 0FFFFh
		lea	eax, [ebx+38h]
		push	eax		; lpString1
		call	ds:lstrcpyA
		lea	ecx, [ebx+4]
		push	ecx		; int
		push	dword ptr [ebp+arg_C] ;	__int16
		push	[ebp+lpString]	; pSrc
		call	sub_7F820E0E
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F820B78
		mov	[ebp+var_10], 1
		lea	eax, [ebx+38h]
		push	eax		; lpRootPathName
		call	sub_7F82A7AB
		mov	word ptr [ebx+2Ch], 3
		test	eax, eax
		jnz	short loc_7F820860
		mov	word ptr [ebx+2Ch], 2

loc_7F820860:				; CODE XREF: sub_7F8207A6+B2j
		cmp	[ebp+hCursor], 0
		jz	short loc_7F820871
		push	esi		; int
		push	[ebp+lpString]	; pSrc
		call	sub_7F821C4E
		jmp	short loc_7F820885
; ---------------------------------------------------------------------------

loc_7F820871:				; CODE XREF: sub_7F8207A6+BEj
		lea	eax, [ebp+var_2]
		push	eax
		xor	eax, eax
		mov	ax, [ebp+arg_C]
		and	eax, 40h
		push	eax
		push	esi
		call	sub_7F821428

loc_7F820885:				; CODE XREF: sub_7F8207A6+C9j
		mov	edi, eax
		mov	ax, [ebp+arg_C]
		and	ax, 20h
		mov	[ebp+var_20], ax
		xor	eax, eax
		cmp	[ebp+var_20], ax
		jnz	loc_7F8209C3
		mov	cx, [ebp+arg_C]
		and	cx, 10h
		mov	word ptr [ebp+var_8], cx
		cmp	cx, ax
		jnz	short loc_7F8208DC
		cmp	edi, 100Bh
		jz	short loc_7F8208DC
		cmp	[ebp+var_2], ax
		jz	loc_7F8209C3
		cmp	[ebp+hCursor], eax
		jnz	loc_7F8209C3
		push	10h		; vKey
		call	ds:GetAsyncKeyState
		test	ah, 80h
		jz	loc_7F8209C3

loc_7F8208DC:				; CODE XREF: sub_7F8207A6+108j
					; sub_7F8207A6+110j
		mov	ebx, [esi]
		xor	eax, eax
		cmp	[ebx+4], eax
		jz	short loc_7F820904
		cmp	[ebx+10h], ax
		jl	short loc_7F8208F4
		push	eax
		push	dword ptr [ebx]
		push	ebx
		call	sub_7F821055

loc_7F8208F4:				; CODE XREF: sub_7F8207A6+143j
		push	dword ptr [ebx+4]
		call	sub_7F815991
		xor	eax, eax
		mov	[ebx+4], eax
		mov	[ebp+var_10], eax

loc_7F820904:				; CODE XREF: sub_7F8207A6+13Dj
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_7F820916
		push	eax
		call	sub_7F820E74
		mov	dword ptr [ebx], 0

loc_7F820916:				; CODE XREF: sub_7F8207A6+162j
		mov	cx, 3
		cmp	edi, 100Bh
		jz	short loc_7F820930
		cmp	word ptr [ebp+var_8], 1
		sbb	ecx, ecx
		and	ecx, 5
		add	cx, 4

loc_7F820930:				; CODE XREF: sub_7F8207A6+17Aj
		mov	eax, [ebp+var_18]
		sub	edi, 100Bh
		add	eax, 18h
		cmp	edi, 1
		sbb	edx, edx
		mov	[ebp+hCursor], eax
		mov	eax, [eax]
		lea	edx, ds:8[edx*8]
		xor	edx, eax
		push	ecx		; __int16
		and	edx, 8
		xor	edx, eax
		mov	eax, [ebp+hCursor]
		push	[ebp+lpString]	; lpString
		mov	[eax], edx
		call	sub_7F823870
		mov	[ebp+var_8], eax
		cmp	eax, 101Eh
		jz	short loc_7F820974
		test	eax, eax
		jz	short loc_7F820974
		mov	edi, eax
		jmp	short loc_7F8209BD
; ---------------------------------------------------------------------------

loc_7F820974:				; CODE XREF: sub_7F8207A6+1C4j
					; sub_7F8207A6+1C8j
		add	ebx, 4
		push	ebx		; int
		push	dword ptr [ebp+arg_C] ;	__int16
		push	[ebp+lpString]	; pSrc
		call	sub_7F820E0E
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F820B78
		mov	[ebp+var_10], 1
		lea	eax, [ebp+var_2]
		push	eax
		xor	eax, eax
		mov	ax, [ebp+arg_C]
		and	eax, 40h
		push	eax
		push	esi
		call	sub_7F821428
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F820B78
		cmp	[ebp+var_8], 1
		sbb	eax, eax
		neg	eax
		mov	[ebp+var_1C], eax

loc_7F8209BD:				; CODE XREF: sub_7F8207A6+1CCj
		mov	eax, [ebp+hCursor]
		or	byte ptr [eax],	8

loc_7F8209C3:				; CODE XREF: sub_7F8207A6+F3j
					; sub_7F8207A6+116j ...
		test	edi, edi
		jz	short loc_7F8209D8
		mov	eax, [esi]
		cmp	dword ptr [eax+4], 1
		sbb	eax, eax
		inc	eax
		mov	[ebp+var_10], eax
		jmp	loc_7F820B74
; ---------------------------------------------------------------------------

loc_7F8209D8:				; CODE XREF: sub_7F8207A6+21Fj
		mov	ebx, [esi]
		lea	eax, [ebx+0Ch]
		push	eax
		push	dword ptr [ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_7F80FD8E
		mov	edi, dword_7F83587C
		xor	edi, 59h
		jnz	loc_7F820B74
		cmp	[ebp+var_2], 0
		jz	short loc_7F820A25
		push	esi
		call	sub_7F82110E
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F820B74
		push	esi
		call	sub_7F821FF1
		test	eax, eax
		jz	short loc_7F820A25
		push	esi
		call	sub_7F81B714
		mov	edi, eax

loc_7F820A25:				; CODE XREF: sub_7F8207A6+25Bj
					; sub_7F8207A6+275j
		test	edi, edi
		jnz	loc_7F820B78
		mov	eax, [ebp+arg_14]
		test	eax, eax
		jz	short loc_7F820A56
		push	[ebp+arg_18]
		push	eax
		push	80008h
		push	0
		push	esi
		call	sub_7F829F2E
		mov	[ebx+14h], eax
		test	eax, eax
		jnz	short loc_7F820A5D
		mov	edi, 400h
		jmp	loc_7F820B74
; ---------------------------------------------------------------------------

loc_7F820A56:				; CODE XREF: sub_7F8207A6+28Cj
		mov	dword ptr [ebx+14h], 0

loc_7F820A5D:				; CODE XREF: sub_7F8207A6+2A4j
		lea	eax, [ebx+30h]
		lea	ecx, [ebp+var_8]
		mov	[ebp+var_8], 53464180h
		push	eax
		push	0
		push	ecx
		push	esi
		call	sub_7F817E9D
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F820B78
		add	ebx, 34h
		lea	eax, [ebp+var_8]
		mov	[ebp+var_8], 46534180h
		push	ebx
		push	0
		push	eax
		push	esi
		call	sub_7F817E9D
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F820B78
		push	dword ptr [ebp+arg_C]
		movsx	eax, [ebp+var_2]
		push	eax
		push	esi
		call	sub_7F81217E
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F820B78
		cmp	[ebp+var_2], 0
		jz	short loc_7F820AC4
		push	esi
		call	sub_7F82A1E7

loc_7F820AC4:				; CODE XREF: sub_7F8207A6+316j
		cmp	[ebp+var_20], 0
		jnz	loc_7F820B74
		cmp	[ebp+var_1C], 0
		jnz	short loc_7F820AE6
		push	74h		; vKey
		call	ds:GetAsyncKeyState
		test	ah, 80h
		jz	loc_7F820B74

loc_7F820AE6:				; CODE XREF: sub_7F8207A6+32Dj
		xor	ebx, ebx
		push	7F02h		; lpCursorName
		push	ebx		; hInstance
		mov	[ebp+var_8], ebx
		call	ds:LoadCursorA
		push	eax		; hCursor
		call	ds:SetCursor
		mov	[ebp+hCursor], eax
		mov	eax, [ebp+var_18]
		mov	eax, [eax+0Ch]
		test	eax, eax
		jz	short loc_7F820B0F
		mov	eax, [eax]
		jmp	short loc_7F820B11
; ---------------------------------------------------------------------------

loc_7F820B0F:				; CODE XREF: sub_7F8207A6+363j
		xor	eax, eax

loc_7F820B11:				; CODE XREF: sub_7F8207A6+367j
		push	1		; int
		push	1Bh		; __int16
		push	offset aPressEscToCanc ; "Press	ESC to cancel."
		push	offset aValidatingRepa ; "Validating/repairing message file"
		push	eax		; HWND
		call	sub_7F82B14A
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F820B40
		push	0
		lea	ecx, [ebp+var_8]
		push	offset sub_7F823C13
		push	ecx
		push	4
		push	0
		push	esi
		call	sub_7F815E89

loc_7F820B40:				; CODE XREF: sub_7F8207A6+383j
		push	esi
		call	sub_7F81F0AC
		test	ebx, ebx
		jz	short loc_7F820B6B
		cmp	[ebp+var_8], 0
		jz	short loc_7F820B59
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F815F83

loc_7F820B59:				; CODE XREF: sub_7F8207A6+3A8j
		call	sub_7F82B8C4
		cmp	eax, 1
		sbb	eax, eax
		neg	eax
		push	eax
		call	sub_7F82B8D3

loc_7F820B6B:				; CODE XREF: sub_7F8207A6+3A2j
		push	[ebp+hCursor]	; hCursor
		call	ds:SetCursor

loc_7F820B74:				; CODE XREF: sub_7F8207A6+61j
					; sub_7F8207A6+22Dj ...
		test	edi, edi
		jz	short loc_7F820BEA

loc_7F820B78:				; CODE XREF: sub_7F8207A6+94j
					; sub_7F8207A6+1E1j ...
		test	esi, esi
		jz	short loc_7F820BEA
		mov	ebx, [esi]
		lea	eax, [ebx+30h]
		cmp	dword ptr [eax], 0
		jz	short loc_7F820B8E
		push	0
		push	eax
		call	sub_7F81813C

loc_7F820B8E:				; CODE XREF: sub_7F8207A6+3DEj
		lea	eax, [ebx+34h]
		cmp	dword ptr [eax], 0
		jz	short loc_7F820B9E
		push	0
		push	eax
		call	sub_7F81813C

loc_7F820B9E:				; CODE XREF: sub_7F8207A6+3EEj
		mov	eax, [ebx+14h]
		test	eax, eax
		jz	short loc_7F820BAB
		push	eax
		call	sub_7F8240DB

loc_7F820BAB:				; CODE XREF: sub_7F8207A6+3FDj
		xor	eax, eax
		cmp	[ebp+var_10], eax
		jz	short loc_7F820BD8
		cmp	[ebx+10h], ax
		jl	short loc_7F820BC1
		push	eax
		push	dword ptr [ebx]
		push	ebx
		call	sub_7F821055

loc_7F820BC1:				; CODE XREF: sub_7F8207A6+410j
		push	dword ptr [ebx+4]
		call	sub_7F815991
		cmp	[ebp+var_14], 0
		jz	short loc_7F820BD8
		push	[ebp+lpString]	; pSrc
		call	sub_7F81550B

loc_7F820BD8:				; CODE XREF: sub_7F8207A6+40Aj
					; sub_7F8207A6+428j
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_7F820BE4
		push	eax
		call	sub_7F820E74

loc_7F820BE4:				; CODE XREF: sub_7F8207A6+436j
		push	esi
		call	sub_7F82F1E1

loc_7F820BEA:				; CODE XREF: sub_7F8207A6+3D0j
					; sub_7F8207A6+3D4j
		xor	ecx, ecx
		mov	eax, [ebp+arg_10]
		test	edi, edi
		jz	short loc_7F820BF7
		mov	[eax], ecx
		jmp	short loc_7F820BF9
; ---------------------------------------------------------------------------

loc_7F820BF7:				; CODE XREF: sub_7F8207A6+44Bj
		mov	[eax], esi

loc_7F820BF9:				; CODE XREF: sub_7F8207A6+44Fj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		mov	dword_7F836C68,	0
		pop	ebp
		retn	1Ch
sub_7F8207A6	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F820C0E	proc near		; CODE XREF: sub_7F80B5DE+12p
					; sub_7F80CB32+1Cp ...

var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  4

		sub	esp, 14h
		push	ebx
		push	esi
		mov	esi, [esp+1Ch+arg_0]
		push	edi
		lea	ecx, [esp+20h+var_10]
		push	ebp
		mov	eax, [esi]
		push	ecx
		mov	[esp+28h+var_C], eax
		push	40000h
		push	80h
		push	eax
		call	sub_7F82A016
		mov	ecx, [esi]
		mov	ebx, [ecx]
		mov	ebp, [ebx]
		mov	eax, [ebx+14h]
		test	eax, eax
		jz	short loc_7F820C4A
		push	eax
		push	0
		push	ecx
		call	sub_7F829FD2

loc_7F820C4A:				; CODE XREF: sub_7F820C0E+31j
		push	dword ptr [esi]
		call	sub_7F812369
		lea	eax, [ebx+30h]
		cmp	dword ptr [eax], 0
		jz	short loc_7F820C61
		push	0
		push	eax
		call	sub_7F81813C

loc_7F820C61:				; CODE XREF: sub_7F820C0E+49j
		lea	eax, [ebx+34h]
		cmp	dword ptr [eax], 0
		jz	short loc_7F820C71
		push	0
		push	eax
		call	sub_7F81813C

loc_7F820C71:				; CODE XREF: sub_7F820C0E+59j
		cmp	word ptr [ebp+210h], 1
		jg	loc_7F820D47
		cmp	dword_7F838078,	0
		jz	short loc_7F820C8F
		mov	edi, 253h
		jmp	short loc_7F820CBD
; ---------------------------------------------------------------------------

loc_7F820C8F:				; CODE XREF: sub_7F820C0E+78j
		mov	eax, [esi]
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		xor	edi, edi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	edx, [esi]
		mov	dword_7F83807C,	edx

loc_7F820CBD:				; CODE XREF: sub_7F820C0E+7Fj
		test	edi, edi
		jnz	short loc_7F820D24
		mov	eax, [ebp+8]
		push	0
		mov	[esp+28h+var_14], eax
		push	1
		mov	dword ptr [ebp+8], 0
		mov	ecx, [ebp+200h]
		mov	eax, dword_7F838078
		mov	dx, [ecx+8]
		mov	[eax+214h], dx
		call	sub_7F813C77
		mov	ecx, [esp+24h+var_14]
		mov	[ebp+8], ecx
		mov	edx, dword_7F838078
		cmp	word ptr [edx+254h], 0
		jz	short loc_7F820D0C
		call	sub_7F82A34F
		jmp	short loc_7F820D1A
; ---------------------------------------------------------------------------

loc_7F820D0C:				; CODE XREF: sub_7F820C0E+F5j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F820D1A:				; CODE XREF: sub_7F820C0E+FCj
		mov	dword_7F838078,	0

loc_7F820D24:				; CODE XREF: sub_7F820C0E+B1j
		mov	eax, [ebp+218h]
		test	eax, eax
		jz	loc_7F820DD0
		push	eax
		call	sub_7F823FB7
		mov	dword ptr [ebp+218h], 0
		jmp	loc_7F820DD0
; ---------------------------------------------------------------------------

loc_7F820D47:				; CODE XREF: sub_7F820C0E+6Bj
		cmp	dword_7F838078,	0
		jz	short loc_7F820D57
		mov	edi, 253h
		jmp	short loc_7F820D85
; ---------------------------------------------------------------------------

loc_7F820D57:				; CODE XREF: sub_7F820C0E+140j
		mov	eax, [esi]
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		xor	edi, edi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	edx, [esi]
		mov	dword_7F83807C,	edx

loc_7F820D85:				; CODE XREF: sub_7F820C0E+147j
		test	edi, edi
		jnz	short loc_7F820DD0
		mov	ecx, dword_7F838078
		cmp	word ptr [ecx+214h], 0
		jbe	short loc_7F820DA2
		push	0
		push	1
		call	sub_7F813C77

loc_7F820DA2:				; CODE XREF: sub_7F820C0E+189j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F820DB8
		call	sub_7F82A34F
		jmp	short loc_7F820DC6
; ---------------------------------------------------------------------------

loc_7F820DB8:				; CODE XREF: sub_7F820C0E+1A1j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F820DC6:				; CODE XREF: sub_7F820C0E+1A8j
		mov	dword_7F838078,	0

loc_7F820DD0:				; CODE XREF: sub_7F820C0E+11Ej
					; sub_7F820C0E+134j ...
		cmp	word ptr [ebx+10h], 0
		jl	short loc_7F820DE0
		push	0
		push	ebp
		push	ebx
		call	sub_7F821055

loc_7F820DE0:				; CODE XREF: sub_7F820C0E+1C7j
		push	ebp
		call	sub_7F820E74
		mov	eax, [ebx+4]
		test	eax, eax
		jz	short loc_7F820DF5
		push	eax
		call	sub_7F815991
		mov	edi, eax

loc_7F820DF5:				; CODE XREF: sub_7F820C0E+1DDj
		push	dword ptr [esi]
		call	sub_7F82F1E1
		mov	eax, edi
		pop	ebp
		pop	edi
		mov	dword ptr [esi], 0
		pop	esi
		pop	ebx
		add	esp, 14h
		retn	4
sub_7F820C0E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F820E0E(LPCSTR pSrc, __int16, int)
sub_7F820E0E	proc near		; CODE XREF: sub_7F8207A6+8Bp
					; sub_7F8207A6+1D8p ...

pDst		= byte ptr -100h
pSrc		= dword	ptr  8
arg_4		= word ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 100h
		lea	eax, [ebp+pDst]
		push	eax		; pDst
		push	[ebp+pSrc]	; pSrc
		call	ds:CharToOemA
		test	byte ptr [ebp+arg_4], 2
		jz	short loc_7F820E34
		mov	eax, 10h
		jmp	short loc_7F820E47
; ---------------------------------------------------------------------------

loc_7F820E34:				; CODE XREF: sub_7F820E0E+1Dj
		mov	ax, [ebp+arg_4]
		and	ax, 40h
		cmp	ax, 1
		sbb	eax, eax
		and	al, 0FDh
		add	eax, 0Fh

loc_7F820E47:				; CODE XREF: sub_7F820E0E+24j
		push	[ebp+arg_8]	; int
		push	eax		; __int16
		lea	edx, [ebp+pDst]
		push	edx		; pSrc
		call	sub_7F815751
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F820E0E	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F820E5D	proc near		; CODE XREF: sub_7F8173E6+86p
		push	edi
		xor	eax, eax
		mov	edi, offset dword_7F833C20
		mov	ecx, 3Ch
		rep stosd
		mov	word_7F836C74, ax
		pop	edi
		retn
sub_7F820E5D	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F820E74	proc near		; CODE XREF: sub_7F8207A6+165p
					; sub_7F8207A6+439p ...

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		lea	ecx, [edx+210h]
		mov	ax, [ecx]
		dec	ax
		mov	[ecx], ax
		test	ax, ax
		jg	short locret_7F820EDE
		xor	ax, ax
		cmp	word_7F836C74, ax
		jle	short locret_7F820EDE

loc_7F820E97:				; CODE XREF: sub_7F820E74+38j
		movsx	ecx, ax
		cmp	dword_7F833C24[ecx*8], edx
		jz	short loc_7F820EB0
		inc	ax
		cmp	ax, word_7F836C74
		jl	short loc_7F820E97
		jmp	short locret_7F820EDE
; ---------------------------------------------------------------------------

loc_7F820EB0:				; CODE XREF: sub_7F820E74+2Dj
		movsx	ecx, ax
		xor	eax, eax
		mov	dword_7F833C24[ecx*8], eax
		mov	dword_7F833C20[ecx*8], eax
		movsx	eax, word_7F836C74
		sub	eax, ecx
		cmp	eax, 1
		jnz	short loc_7F820ED8
		dec	word_7F836C74

loc_7F820ED8:				; CODE XREF: sub_7F820E74+5Bj
		push	edx
		call	sub_7F820EE1

locret_7F820EDE:			; CODE XREF: sub_7F820E74+15j
					; sub_7F820E74+21j ...
		retn	4
sub_7F820E74	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F820EE1	proc near		; CODE XREF: sub_7F820E74+65p
					; sub_7F82159B+C3p ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		mov	eax, [esi+258h]
		test	eax, eax
		jz	short loc_7F820EF8
		push	eax
		call	sub_7F811550

loc_7F820EF8:				; CODE XREF: sub_7F820EE1+Fj
		lea	edi, [esi+20Ch]
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_7F820F23
		mov	ebx, [eax]
		cmp	dword ptr [ebx], 0
		jz	short loc_7F820F1C

loc_7F820F0B:				; CODE XREF: sub_7F820EE1+39j
		push	dword ptr [ebx]
		mov	eax, ebx
		add	ebx, 4
		call	sub_7F82F149
		cmp	dword ptr [ebx], 0
		jnz	short loc_7F820F0B

loc_7F820F1C:				; CODE XREF: sub_7F820EE1+28j
		push	dword ptr [edi]
		call	sub_7F82F1E1

loc_7F820F23:				; CODE XREF: sub_7F820EE1+21j
		push	esi
		call	sub_7F82F149
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_7F820EE1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F820F2F	proc near		; CODE XREF: sub_7F82159B+DDp
					; sub_7F821C4E+F7p ...

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
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	ebx, 1
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_8], esi
		cmp	[ebp+arg_8], esi
		jz	short loc_7F820F52
		mov	ecx, [eax+260h]
		jmp	short loc_7F820F58
; ---------------------------------------------------------------------------

loc_7F820F52:				; CODE XREF: sub_7F820F2F+19j
		mov	ecx, [eax+25Ch]

loc_7F820F58:				; CODE XREF: sub_7F820F2F+21j
		cmp	[ebp+arg_8], 0
		mov	eax, [ebp+arg_0]
		jz	short loc_7F820F66
		mov	edx, [eax+8]
		jmp	short loc_7F820F69
; ---------------------------------------------------------------------------

loc_7F820F66:				; CODE XREF: sub_7F820F2F+30j
		mov	edx, [eax+4]

loc_7F820F69:				; CODE XREF: sub_7F820F2F+35j
		mov	[ebp+var_4], edx
		cmp	[ebp+var_4], 0
		jnz	short loc_7F820F7C
		mov	edi, 611h
		jmp	loc_7F821035
; ---------------------------------------------------------------------------

loc_7F820F7C:				; CODE XREF: sub_7F820F2F+41j
		cmp	ecx, 0FFFFFFFFh
		jnz	short loc_7F820F8B
		mov	edi, 1016h
		jmp	loc_7F821035
; ---------------------------------------------------------------------------

loc_7F820F8B:				; CODE XREF: sub_7F820F2F+50j
		test	ecx, ecx
		jnz	short loc_7F820FD1
		push	1		; nNumberOfBytesToLockLow
		push	1DFh		; dwFileOffsetLow
		push	[ebp+var_4]	; int
		call	sub_7F815E19
		test	eax, eax
		jz	short loc_7F820FBA
		sub	eax, 242h
		cmp	eax, 1
		sbb	edi, edi
		and	edi, 0DBFh
		add	edi, 253h
		jmp	short loc_7F821035
; ---------------------------------------------------------------------------

loc_7F820FBA:				; CODE XREF: sub_7F820F2F+71j
		push	[ebp+var_4]
		mov	[ebp+var_8], 1
		call	sub_7F8210D7
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F820FDE
		jmp	short loc_7F821035
; ---------------------------------------------------------------------------

loc_7F820FD1:				; CODE XREF: sub_7F820F2F+5Ej
		test	cl, 1
		jz	short loc_7F820FDE

loc_7F820FD6:				; CODE XREF: sub_7F820F2F+ADj
		inc	si
		add	ebx, ebx
		test	ebx, ecx
		jnz	short loc_7F820FD6

loc_7F820FDE:				; CODE XREF: sub_7F820F2F+9Ej
					; sub_7F820F2F+A5j
		movsx	eax, si
		push	1		; nNumberOfBytesToLockLow
		add	eax, 1E0h
		push	eax		; dwFileOffsetLow
		push	[ebp+var_4]	; int
		call	sub_7F815E19
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F821010
		sub	edi, 242h
		cmp	edi, 1
		sbb	edi, edi
		and	edi, 0DBFh
		add	edi, 253h
		jmp	short loc_7F821035
; ---------------------------------------------------------------------------

loc_7F821010:				; CODE XREF: sub_7F820F2F+C6j
		cmp	[ebp+arg_8], 0
		mov	eax, [ebp+arg_0]
		jz	short loc_7F821028
		mov	[eax+12h], si
		mov	ecx, [ebp+arg_4]
		or	[ecx+260h], ebx
		jmp	short loc_7F821035
; ---------------------------------------------------------------------------

loc_7F821028:				; CODE XREF: sub_7F820F2F+E8j
		mov	[eax+10h], si
		mov	ecx, [ebp+arg_4]
		or	[ecx+25Ch], ebx

loc_7F821035:				; CODE XREF: sub_7F820F2F+48j
					; sub_7F820F2F+57j ...
		cmp	[ebp+var_8], 0
		jz	short loc_7F82104A
		push	1		; nNumberOfBytesToUnlockLow
		push	1DFh		; dwFileOffsetLow
		push	[ebp+var_4]	; int
		call	sub_7F815E51

loc_7F82104A:				; CODE XREF: sub_7F820F2F+10Aj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F820F2F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F821055	proc near		; CODE XREF: sub_7F812460+BEp
					; sub_7F8207A6+149p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_8]
		mov	esi, [ebp+arg_0]
		test	ebx, ebx
		jz	short loc_7F82106B
		movsx	ecx, word ptr [esi+12h]
		jmp	short loc_7F82106F
; ---------------------------------------------------------------------------

loc_7F82106B:				; CODE XREF: sub_7F821055+Ej
		movsx	ecx, word ptr [esi+10h]

loc_7F82106F:				; CODE XREF: sub_7F821055+14j
		mov	edi, 1
		shl	edi, cl
		test	ebx, ebx
		jz	short loc_7F82107F
		mov	ecx, [esi+8]
		jmp	short loc_7F821082
; ---------------------------------------------------------------------------

loc_7F82107F:				; CODE XREF: sub_7F821055+23j
		mov	ecx, [esi+4]

loc_7F821082:				; CODE XREF: sub_7F821055+28j
		test	ecx, ecx
		jnz	short loc_7F82108D
		mov	eax, 611h
		jmp	short loc_7F8210D0
; ---------------------------------------------------------------------------

loc_7F82108D:				; CODE XREF: sub_7F821055+2Fj
		test	ebx, ebx
		jz	short loc_7F821097
		movsx	eax, word ptr [esi+12h]
		jmp	short loc_7F82109B
; ---------------------------------------------------------------------------

loc_7F821097:				; CODE XREF: sub_7F821055+3Aj
		movsx	eax, word ptr [esi+10h]

loc_7F82109B:				; CODE XREF: sub_7F821055+40j
		push	1		; nNumberOfBytesToUnlockLow
		add	eax, 1E0h
		push	eax		; dwFileOffsetLow
		push	ecx		; int
		call	sub_7F815E51
		test	eax, eax
		jnz	short loc_7F8210D0
		mov	ecx, [ebp+arg_4]
		test	ebx, ebx
		not	edi
		jz	short loc_7F8210C4
		and	[ecx+260h], edi
		mov	word ptr [esi+12h], 0FFFFh
		jmp	short loc_7F8210D0
; ---------------------------------------------------------------------------

loc_7F8210C4:				; CODE XREF: sub_7F821055+5Fj
		and	[ecx+25Ch], edi
		mov	word ptr [esi+10h], 0FFFFh

loc_7F8210D0:				; CODE XREF: sub_7F821055+36j
					; sub_7F821055+56j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_7F821055	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8210D7	proc near		; CODE XREF: sub_7F820F2F+95p
					; sub_7F82159B+5Bp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jnz	short loc_7F8210E7
		mov	eax, 611h
		jmp	short loc_7F82110A
; ---------------------------------------------------------------------------

loc_7F8210E7:				; CODE XREF: sub_7F8210D7+7j
		push	20h		; nNumberOfBytesToLockLow
		push	1E0h		; dwFileOffsetLow
		push	esi		; int
		call	sub_7F815E19
		test	eax, eax
		mov	eax, 253h
		jnz	short loc_7F82110A
		push	20h		; nNumberOfBytesToUnlockLow
		push	1E0h		; dwFileOffsetLow
		push	esi		; int
		call	sub_7F815E51

loc_7F82110A:				; CODE XREF: sub_7F8210D7+Ej
					; sub_7F8210D7+24j
		pop	esi
		retn	4
sub_7F8210D7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82110E	proc near		; CODE XREF: sub_7F8207A6+25Ep

var_14		= word ptr -14h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		and	[ebp+var_14], 0FFFBh
		mov	ax, [ebp+var_14]
		push	ebx
		and	ax, 0FFFEh
		push	esi
		push	edi
		or	al, 2
		mov	[ebp+var_14], ax
		xor	edi, edi
		push	edi
		mov	esi, [ebp+arg_0]
		push	edi
		mov	[ebp+var_8], edi
		push	edi
		push	edi
		push	20634D80h
		push	esi
		call	sub_7F82D114
		test	eax, eax
		jnz	short loc_7F821156
		push	esi
		call	sub_7F82CCD1
		cmp	eax, edi
		mov	ebx, eax
		jnz	loc_7F82140C

loc_7F821156:				; CODE XREF: sub_7F82110E+36j
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_4]
		mov	[ebp+var_4], 4D504981h
		push	eax
		push	2
		push	ecx
		push	esi
		call	sub_7F817E9D
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F821183
		cmp	ebx, 100Ah
		jnz	loc_7F82140C
		test	ebx, ebx
		jnz	short loc_7F8211C2

loc_7F821183:				; CODE XREF: sub_7F82110E+63j
		push	1
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F81813C
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F82140C
		mov	al, byte ptr [ebp+var_4]
		cmp	al, 91h
		jb	short loc_7F8211A3
		xor	eax, eax
		jmp	short loc_7F8211AE
; ---------------------------------------------------------------------------

loc_7F8211A3:				; CODE XREF: sub_7F82110E+8Fj
		movzx	eax, al
		movzx	eax, word_7F8358D0[eax*2]

loc_7F8211AE:				; CODE XREF: sub_7F82110E+93j
		push	eax
		push	[ebp+var_4]
		push	esi
		call	sub_7F82CF24
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F82140C

loc_7F8211C2:				; CODE XREF: sub_7F82110E+73j
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_4]
		mov	[ebp+var_4], 64694881h
		push	eax
		push	2
		push	ecx
		push	esi
		call	sub_7F817E9D
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F8211EF
		cmp	ebx, 100Ah
		jnz	loc_7F82140C
		test	ebx, ebx
		jnz	short loc_7F82122E

loc_7F8211EF:				; CODE XREF: sub_7F82110E+CFj
		push	1
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F81813C
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F82140C
		mov	al, byte ptr [ebp+var_4]
		cmp	al, 91h
		jb	short loc_7F82120F
		xor	eax, eax
		jmp	short loc_7F82121A
; ---------------------------------------------------------------------------

loc_7F82120F:				; CODE XREF: sub_7F82110E+FBj
		movzx	eax, al
		movzx	eax, word_7F8358D0[eax*2]

loc_7F82121A:				; CODE XREF: sub_7F82110E+FFj
		push	eax
		push	[ebp+var_4]
		push	esi
		call	sub_7F82CF24
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F82140C

loc_7F82122E:				; CODE XREF: sub_7F82110E+DFj
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_4]
		mov	[ebp+var_4], 74754F8Bh
		push	eax
		push	2
		push	ecx
		push	esi
		call	sub_7F817E9D
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F82125B
		cmp	ebx, 100Ah
		jnz	loc_7F82140C
		test	ebx, ebx
		jnz	short loc_7F821270

loc_7F82125B:				; CODE XREF: sub_7F82110E+13Bj
		push	1
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F81813C
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F82140C

loc_7F821270:				; CODE XREF: sub_7F82110E+14Bj
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_4]
		mov	[ebp+var_4], 46534180h
		push	eax
		push	2
		push	ecx
		push	esi
		call	sub_7F817E9D
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F82129D
		cmp	ebx, 100Ah
		jnz	loc_7F82140C
		test	ebx, ebx
		jnz	short loc_7F8212DC

loc_7F82129D:				; CODE XREF: sub_7F82110E+17Dj
		push	1
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F81813C
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F82140C
		mov	al, byte ptr [ebp+var_4]
		cmp	al, 91h
		jb	short loc_7F8212BD
		xor	eax, eax
		jmp	short loc_7F8212C8
; ---------------------------------------------------------------------------

loc_7F8212BD:				; CODE XREF: sub_7F82110E+1A9j
		movzx	eax, al
		movzx	eax, word_7F8358D0[eax*2]

loc_7F8212C8:				; CODE XREF: sub_7F82110E+1ADj
		push	eax
		push	[ebp+var_4]
		push	esi
		call	sub_7F82CF24
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F82140C

loc_7F8212DC:				; CODE XREF: sub_7F82110E+18Dj
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_4]
		mov	[ebp+var_4], 53464180h
		push	eax
		push	2
		push	ecx
		push	esi
		call	sub_7F817E9D
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F821309
		cmp	ebx, 100Ah
		jnz	loc_7F82140C
		test	ebx, ebx
		jnz	short loc_7F82135E

loc_7F821309:				; CODE XREF: sub_7F82110E+1E9j
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+var_8]
		call	sub_7F8199E0
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F82140C
		push	1
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F81813C
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F82140C
		mov	al, byte ptr [ebp+var_4]
		cmp	al, 91h
		jb	short loc_7F82133F
		xor	eax, eax
		jmp	short loc_7F82134A
; ---------------------------------------------------------------------------

loc_7F82133F:				; CODE XREF: sub_7F82110E+22Bj
		movzx	eax, al
		movzx	eax, word_7F8358D0[eax*2]

loc_7F82134A:				; CODE XREF: sub_7F82110E+22Fj
		push	eax
		push	[ebp+var_4]
		push	esi
		call	sub_7F82CF24
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F82140C

loc_7F82135E:				; CODE XREF: sub_7F82110E+1F9j
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_4]
		mov	[ebp+var_4], 444C4189h
		push	eax
		push	2
		push	ecx
		push	esi
		call	sub_7F817E9D
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F82138B
		cmp	ebx, 100Ah
		jnz	loc_7F82140C
		test	ebx, ebx
		jnz	short loc_7F8213C2

loc_7F82138B:				; CODE XREF: sub_7F82110E+26Bj
		push	1
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F81813C
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F82140C
		mov	al, byte ptr [ebp+var_4]
		cmp	al, 91h
		jb	short loc_7F8213A7
		xor	eax, eax
		jmp	short loc_7F8213B2
; ---------------------------------------------------------------------------

loc_7F8213A7:				; CODE XREF: sub_7F82110E+293j
		movzx	eax, al
		movzx	eax, word_7F8358D0[eax*2]

loc_7F8213B2:				; CODE XREF: sub_7F82110E+297j
		push	eax
		push	[ebp+var_4]
		push	esi
		call	sub_7F82CF24
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F82140C

loc_7F8213C2:				; CODE XREF: sub_7F82110E+27Bj
		push	esi
		call	sub_7F82C9EF
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F8213D6
		cmp	ebx, 100Ah
		jnz	short loc_7F82140C

loc_7F8213D6:				; CODE XREF: sub_7F82110E+2BEj
		push	esi
		call	sub_7F82CE3B
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F8213EC
		cmp	ebx, 100Ah
		jnz	short loc_7F82140C
		xor	ebx, ebx

loc_7F8213EC:				; CODE XREF: sub_7F82110E+2D2j
		cmp	dword_7F836C70,	0
		jz	short loc_7F82140C
		push	esi
		call	sub_7F82207F
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F82140C
		mov	eax, [esi]
		mov	ecx, [eax]
		mov	dword ptr [ecx+4], 0F00C00Fh

loc_7F82140C:				; CODE XREF: sub_7F82110E+42j
					; sub_7F82110E+6Bj ...
		cmp	[ebp+var_8], 0
		jz	short loc_7F82141D
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F81813C

loc_7F82141D:				; CODE XREF: sub_7F82110E+302j
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F82110E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F821428	proc near		; CODE XREF: sub_7F8207A6+DAp
					; sub_7F8207A6+1FDp

var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		push	esi
		push	edi
		mov	esi, [eax]
		push	0
		push	200h
		call	sub_7F82F03B
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F821453
		mov	ebx, 400h
		jmp	loc_7F82155F
; ---------------------------------------------------------------------------

loc_7F821453:				; CODE XREF: sub_7F821428+1Fj
		push	edi		; lpBuffer
		push	dword ptr [esi+4] ; int
		call	sub_7F812BEA
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F821563
		push	edi
		call	sub_7F8219A0
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F821563
		push	edi
		call	sub_7F821961
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F821563
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	edi
		push	esi
		call	sub_7F82159B
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F821563
		push	edi
		call	sub_7F82F149
		xor	edi, edi
		mov	eax, [ebp+arg_8]
		cmp	[eax], di
		jz	loc_7F82155F
		cmp	dword_7F838078,	edi
		jz	short loc_7F8214C0
		mov	ebx, 253h
		jmp	short loc_7F8214F0
; ---------------------------------------------------------------------------

loc_7F8214C0:				; CODE XREF: sub_7F821428+8Fj
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		xor	ebx, ebx
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	edx, [ebp+arg_0]
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edx

loc_7F8214F0:				; CODE XREF: sub_7F821428+96j
		test	ebx, ebx
		jnz	short loc_7F821563
		lea	eax, [ebp+var_2]
		push	eax
		call	sub_7F821A34
		cmp	eax, 100Bh
		mov	ebx, eax
		jnz	short loc_7F821521
		mov	eax, [esi]
		lea	ecx, [ebp+var_2]
		push	ecx
		xor	byte ptr [eax+0Eh], 1
		call	sub_7F821A34
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F821521
		mov	eax, [esi]
		xor	byte ptr [eax+0Eh], 1

loc_7F821521:				; CODE XREF: sub_7F821428+DCj
					; sub_7F821428+F1j
		cmp	[ebp+var_2], 0
		jz	short loc_7F821531
		mov	eax, [esi]
		or	byte ptr [eax+265h], 10h

loc_7F821531:				; CODE XREF: sub_7F821428+FEj
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F821547
		call	sub_7F82A34F
		jmp	short loc_7F821555
; ---------------------------------------------------------------------------

loc_7F821547:				; CODE XREF: sub_7F821428+116j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F821555:				; CODE XREF: sub_7F821428+11Dj
		mov	dword_7F838078,	0

loc_7F82155F:				; CODE XREF: sub_7F821428+26j
					; sub_7F821428+83j
		test	ebx, ebx
		jz	short loc_7F821590

loc_7F821563:				; CODE XREF: sub_7F821428+38j
					; sub_7F821428+48j ...
		test	edi, edi
		jz	short loc_7F82156D
		push	edi
		call	sub_7F82F149

loc_7F82156D:				; CODE XREF: sub_7F821428+13Dj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_7F821590
		cmp	word ptr [esi+10h], 0
		jl	short loc_7F821583
		push	0
		push	eax
		push	esi
		call	sub_7F821055

loc_7F821583:				; CODE XREF: sub_7F821428+150j
		push	dword ptr [esi]
		call	sub_7F820E74
		mov	dword ptr [esi], 0

loc_7F821590:				; CODE XREF: sub_7F821428+139j
					; sub_7F821428+149j
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F821428	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82159B	proc near		; CODE XREF: sub_7F821428+66p

var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		sub	esp, 4
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	ebp
		xor	ebx, ebx
		mov	edi, [esp+14h+arg_C]
		mov	eax, [esp+14h+arg_4]
		mov	word ptr [edi],	1
		mov	[esp+14h+var_4], esi
		mov	eax, [eax+8]
		test	eax, eax
		jz	short loc_7F821627
		cmp	[esp+14h+arg_8], esi
		jnz	short loc_7F821627
		push	eax
		call	sub_7F821928
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F821627
		mov	ax, [ebx+264h]
		and	ah, 3
		cmp	ah, 2
		jnz	short loc_7F8215EB
		push	ebx
		call	sub_7F82A7C2
		test	eax, eax
		jnz	short loc_7F8215EB
		xor	ebx, ebx

loc_7F8215EB:				; CODE XREF: sub_7F82159B+42j
					; sub_7F82159B+4Cj
		test	ebx, ebx
		jz	short loc_7F821627
		mov	esi, [esp+14h+arg_0]
		push	dword ptr [esi+4]
		call	sub_7F8210D7
		mov	ebp, eax
		test	ebp, ebp
		jnz	short loc_7F821610
		push	ebx
		push	esi
		call	sub_7F823EA8
		test	eax, eax
		jnz	short loc_7F821620
		xor	ebx, ebx
		jmp	short loc_7F82162B
; ---------------------------------------------------------------------------

loc_7F821610:				; CODE XREF: sub_7F82159B+64j
		cmp	ebp, 253h
		jz	short loc_7F821620
		cmp	ebp, 254h
		jnz	short loc_7F821643

loc_7F821620:				; CODE XREF: sub_7F82159B+6Fj
					; sub_7F82159B+7Bj
		mov	word ptr [edi],	0
		jmp	short loc_7F82162B
; ---------------------------------------------------------------------------

loc_7F821627:				; CODE XREF: sub_7F82159B+21j
					; sub_7F82159B+27j ...
		mov	esi, [esp+14h+arg_0]

loc_7F82162B:				; CODE XREF: sub_7F82159B+73j
					; sub_7F82159B+8Aj
		test	ebx, ebx
		jnz	short loc_7F82166D
		push	[esp+14h+arg_4]
		call	sub_7F8216EE
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F82166D
		mov	ebp, 400h

loc_7F821643:				; CODE XREF: sub_7F82159B+83j
					; sub_7F82159B+E6j ...
		cmp	[esp+14h+var_4], 0
		jz	short loc_7F821653
		push	0
		push	ebx
		push	esi
		call	sub_7F821055

loc_7F821653:				; CODE XREF: sub_7F82159B+ADj
		cmp	word ptr [edi],	0
		jz	short loc_7F821663
		test	ebx, ebx
		jz	short loc_7F821663
		push	ebx
		call	sub_7F820EE1

loc_7F821663:				; CODE XREF: sub_7F82159B+BCj
					; sub_7F82159B+C0j
		mov	eax, ebp
		mov	dword ptr [esi], 0
		jmp	short loc_7F8216E4
; ---------------------------------------------------------------------------

loc_7F82166D:				; CODE XREF: sub_7F82159B+92j
					; sub_7F82159B+A1j
		cmp	[esp+14h+arg_8], 0
		jnz	short loc_7F821683
		push	0
		push	ebx
		push	esi
		call	sub_7F820F2F
		mov	ebp, eax
		test	ebp, ebp
		jnz	short loc_7F821643

loc_7F821683:				; CODE XREF: sub_7F82159B+D7j
		cmp	[esp+14h+arg_8], 1
		sbb	eax, eax
		neg	eax
		cmp	word ptr [edi],	0
		mov	[esp+14h+var_4], eax
		jz	short loc_7F8216D9
		mov	dword_7F838078,	ebx
		mov	ax, [esi+10h]
		mov	cx, [esi+2Ch]
		push	eax		; __int16
		push	ecx		; __int16
		lea	eax, [esi+4]
		push	ebx		; lpBuffer
		push	eax		; int
		call	sub_7F8129CD
		mov	dword_7F838078,	0
		mov	ebp, eax
		test	ebp, ebp
		jnz	short loc_7F821643
		push	ebx
		call	sub_7F8218C5
		mov	ebp, eax
		test	ebp, ebp
		jnz	loc_7F821643
		mov	word ptr [ebx+210h], 0

loc_7F8216D9:				; CODE XREF: sub_7F82159B+F9j
		inc	word ptr [ebx+210h]
		xor	eax, eax
		mov	[esi], ebx

loc_7F8216E4:				; CODE XREF: sub_7F82159B+D0j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn	10h
sub_7F82159B	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8216EE	proc near		; CODE XREF: sub_7F82159B+98p
					; sub_7F821C4E+23p ...

var_18		= word ptr -18h
var_16		= word ptr -16h
var_14		= word ptr -14h
arg_0		= dword	ptr  4

		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		push	ebp
		push	30h
		push	284h
		call	sub_7F82F03B
		mov	esi, eax
		test	esi, esi
		jz	loc_7F8218B9
		push	200h
		push	[esp+2Ch+arg_0]
		push	esi
		call	sub_7F82FCE0
		lea	ecx, [esp+34h+var_18]
		add	esp, 0Ch
		push	ecx
		call	sub_7F82ED4B
		mov	ax, [esp+28h+var_18]
		mov	[esi+110h], ax
		mov	cx, [esp+28h+var_16]
		mov	[esi+112h], cx
		mov	dx, [esp+28h+var_14]
		mov	[esi+114h], dx
		call	sub_7F8114FF
		mov	[esi+258h], eax
		test	eax, eax
		jz	loc_7F8218AF
		lea	edi, [esi+274h]
		mov	ebp, offset aMsmail32_ini_1 ; "msmail32.ini"
		movsx	eax, word ptr [esi+0Eh]
		shl	eax, 6
		push	ebp		; lpFileName
		add	eax, esi
		push	0Ah		; nDefault
		add	eax, 10h
		push	offset aPercent_free_s ; "Percent_Free_Start_Compress"
		push	offset aMmf_0	; "MMF"
		mov	ebx, ds:GetPrivateProfileIntA
		mov	[esi+200h], eax
		call	ebx ; GetPrivateProfileIntA
		mov	[edi], ax
		push	ebp		; lpFileName
		push	5		; nDefault
		push	offset aPercent_free_0 ; "Percent_Free_Stop_Compress"
		push	offset aMmf_0	; "MMF"
		call	ebx ; GetPrivateProfileIntA
		mov	[esi+276h], ax
		cmp	[edi], ax
		jge	short loc_7F8217B3
		inc	ax
		mov	[edi], ax

loc_7F8217B3:				; CODE XREF: sub_7F8216EE+BEj
		mov	edi, offset aMsmail32_ini_1 ; "msmail32.ini"
		mov	ebp, offset aMmf_0 ; "MMF"
		push	edi		; lpFileName
		push	258h		; nDefault
		push	offset aSecs_till_fast ; "Secs_Till_Fast_Compress"
		push	ebp		; lpAppName
		call	ebx ; GetPrivateProfileIntA
		imul	eax, 64h
		push	edi		; lpFileName
		mov	[esi+278h], eax
		push	0		; nDefault
		push	offset aNo_compress ; "No_Compress"
		push	ebp		; lpAppName
		call	ebx ; GetPrivateProfileIntA
		test	eax, eax
		jz	short loc_7F8217EA
		or	byte ptr [esi+265h], 10h

loc_7F8217EA:				; CODE XREF: sub_7F8216EE+F3j
		mov	edi, offset aMsmail32_ini_1 ; "msmail32.ini"
		mov	ebp, offset aMmf_0 ; "MMF"
		push	edi		; lpFileName
		push	12Ch		; nDefault
		push	offset aKb_free_start_ ; "Kb_Free_Start_Compress"
		push	ebp		; lpAppName
		call	ebx ; GetPrivateProfileIntA
		imul	eax, 3E8h
		push	edi		; lpFileName
		mov	[esi+27Ch], eax
		push	64h		; nDefault
		lea	edi, [esi+206h]
		push	offset aKb_free_stop_c ; "Kb_Free_Stop_Compress"
		push	ebp		; lpAppName
		call	ebx ; GetPrivateProfileIntA
		imul	eax, 3E8h
		mov	[esi+280h], eax
		mov	ecx, [esi+200h]
		movzx	eax, word ptr [ecx+8]
		dec	eax
		shr	eax, 8
		push	30h
		inc	ax
		mov	[edi], ax
		mov	[esi+204h], ax
		mov	ax, [edi]
		shl	ax, 8
		mov	[esi+208h], ax
		movzx	ecx, word ptr [edi]
		lea	eax, ds:4[ecx*4]
		push	eax
		call	sub_7F82F18D
		mov	[esi+20Ch], eax
		test	eax, eax
		jz	short loc_7F8218AF
		mov	di, [edi]
		mov	ebx, [eax]
		test	di, di
		jle	short loc_7F821895

loc_7F821879:				; CODE XREF: sub_7F8216EE+1A5j
		push	30h
		push	2000h
		call	sub_7F82F03B
		mov	[ebx], eax
		test	eax, eax
		jz	short loc_7F8218AF
		dec	di
		add	ebx, 4
		test	di, di
		jg	short loc_7F821879

loc_7F821895:				; CODE XREF: sub_7F8216EE+189j
		xor	edi, edi
		mov	[ebx], edi

loc_7F821899:				; CODE XREF: sub_7F8216EE+1BBj
		call	sub_7F82AC0C
		push	eax
		mov	[esi+8], eax
		call	sub_7F821928
		test	eax, eax
		jnz	short loc_7F821899
		mov	eax, esi
		jmp	short loc_7F8218BB
; ---------------------------------------------------------------------------

loc_7F8218AF:				; CODE XREF: sub_7F8216EE+6Aj
					; sub_7F8216EE+17Fj ...
		test	esi, esi
		jz	short loc_7F8218B9
		push	esi
		call	sub_7F820EE1

loc_7F8218B9:				; CODE XREF: sub_7F8216EE+17j
					; sub_7F8216EE+1C3j
		xor	eax, eax

loc_7F8218BB:				; CODE XREF: sub_7F8216EE+1BFj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 18h
		retn	4
sub_7F8216EE	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8218C5	proc near		; CODE XREF: sub_7F82159B+126p
					; sub_7F821C4E+103p

arg_0		= dword	ptr  4

		xor	dx, dx
		cmp	word_7F836C74, dx
		jle	short loc_7F8218E9

loc_7F8218D1:				; CODE XREF: sub_7F8218C5+22j
		movsx	eax, dx
		cmp	dword_7F833C24[eax*8], 0
		jz	short loc_7F8218E9
		inc	dx
		cmp	dx, word_7F836C74
		jl	short loc_7F8218D1

loc_7F8218E9:				; CODE XREF: sub_7F8218C5+Aj
					; sub_7F8218C5+17j
		cmp	dx, 1Eh
		jl	short loc_7F8218F6
		mov	eax, 1011h
		jmp	short locret_7F821925
; ---------------------------------------------------------------------------

loc_7F8218F6:				; CODE XREF: sub_7F8218C5+28j
		movsx	eax, dx
		cmp	dx, word_7F836C74
		lea	ecx, ds:0[eax*8]
		mov	eax, [esp+arg_0]
		mov	dword_7F833C24[ecx], eax
		mov	eax, [eax+8]
		mov	dword_7F833C20[ecx], eax
		jnz	short loc_7F821923
		inc	word_7F836C74

loc_7F821923:				; CODE XREF: sub_7F8218C5+55j
		xor	eax, eax

locret_7F821925:			; CODE XREF: sub_7F8218C5+2Fj
		retn	4
sub_7F8218C5	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F821928	proc near		; CODE XREF: sub_7F82159B+2Ap
					; sub_7F8216EE+1B4p

arg_0		= dword	ptr  4

		xor	cx, cx
		push	esi
		mov	dx, word_7F836C74
		cmp	dx, cx
		jle	short loc_7F82194F
		mov	eax, [esp+4+arg_0]

loc_7F82193C:				; CODE XREF: sub_7F821928+25j
		movsx	esi, cx
		cmp	dword_7F833C20[esi*8], eax
		jz	short loc_7F821955
		inc	cx
		cmp	cx, dx
		jl	short loc_7F82193C

loc_7F82194F:				; CODE XREF: sub_7F821928+Ej
		xor	eax, eax

loc_7F821951:				; CODE XREF: sub_7F821928+37j
		pop	esi
		retn	4
; ---------------------------------------------------------------------------

loc_7F821955:				; CODE XREF: sub_7F821928+1Ej
		movsx	eax, cx
		mov	eax, dword_7F833C24[eax*8]
		jmp	short loc_7F821951
sub_7F821928	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F821961	proc near		; CODE XREF: sub_7F821428+4Fp

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		push	esi
		movsx	eax, word ptr [ecx+0Eh]
		shl	eax, 6
		mov	si, [ecx+0Ch]
		lea	edx, [eax+ecx+10h]
		mov	eax, [ecx+50h]
		sub	eax, [ecx+10h]
		shr	eax, 5
		cmp	ax, si
		jb	short loc_7F821997
		mov	ax, [edx+8]
		cmp	ax, si
		ja	short loc_7F821997
		cmp	[edx+0Ah], ax
		mov	eax, 0
		jbe	short loc_7F82199C

loc_7F821997:				; CODE XREF: sub_7F821961+20j
					; sub_7F821961+29j
		mov	eax, 100Bh

loc_7F82199C:				; CODE XREF: sub_7F821961+34j
		pop	esi
		retn	4
sub_7F821961	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8219A0	proc near		; CODE XREF: sub_7F821428+3Fp
					; sub_7F8225B6+63p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dword_7F836C70,	0
		cmp	dword ptr [eax], 1AFDEADh
		jz	short loc_7F8219BD
		mov	eax, 100Bh
		jmp	short locret_7F821A31
; ---------------------------------------------------------------------------

loc_7F8219BD:				; CODE XREF: sub_7F8219A0+14j
		mov	ecx, [eax+4]
		cmp	ecx, 0F00C00Fh
		jnz	short loc_7F8219D9
		xor	ecx, ecx
		mov	[eax+126h], cx
		mov	[eax+128h], ecx
		jmp	short loc_7F821A1F
; ---------------------------------------------------------------------------

loc_7F8219D9:				; CODE XREF: sub_7F8219A0+26j
		cmp	ecx, 0F00C010h
		jz	short loc_7F821A1F
		cmp	ecx, 0F00C00Dh
		jz	short loc_7F821A15
		cmp	ecx, 0F00C00Eh
		jz	short loc_7F821A15
		mov	eax, ecx
		and	eax, 0FFFF0000h
		cmp	eax, 0F000000h
		jz	short loc_7F821A06
		mov	eax, 100Bh
		jmp	short locret_7F821A31
; ---------------------------------------------------------------------------

loc_7F821A06:				; CODE XREF: sub_7F8219A0+5Dj
		cmp	ecx, 0F00C00Fh
		sbb	eax, eax
		add	eax, 100Dh
		jmp	short locret_7F821A31
; ---------------------------------------------------------------------------

loc_7F821A15:				; CODE XREF: sub_7F8219A0+47j
					; sub_7F8219A0+4Fj
		mov	dword_7F836C70,	1

loc_7F821A1F:				; CODE XREF: sub_7F8219A0+37j
					; sub_7F8219A0+3Fj
		cmp	dword_7F836C68,	0
		jz	short loc_7F821A2F
		mov	dword ptr [eax+4], 0F00C00Dh

loc_7F821A2F:				; CODE XREF: sub_7F8219A0+86j
		xor	eax, eax

locret_7F821A31:			; CODE XREF: sub_7F8219A0+1Bj
					; sub_7F8219A0+64j ...
		retn	4
sub_7F8219A0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F821A34	proc near		; CODE XREF: sub_7F821428+D0p
					; sub_7F821428+E8p ...

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8

		mov	dx, 1
		push	ebp
		mov	ebp, esp
		mov	eax, dword_7F838078
		mov	cx, [eax+0Eh]
		sub	esp, 10h
		mov	[ebp+var_C], 2000h
		push	ebx
		xor	cl, dl
		push	esi
		push	edi
		shl	dx, cl
		mov	bx, [eax+204h]
		mov	ecx, [eax+200h]
		dec	bx
		mov	esi, [ecx]
		mov	[ebp+var_4], dx
		mov	ecx, [eax+20Ch]
		mov	edi, [ecx]
		jz	short loc_7F821AA9

loc_7F821A75:				; CODE XREF: sub_7F821A34+73j
		lea	eax, [ebp+var_C]
		push	eax		; int
		push	esi		; lDistanceToMove
		push	dword ptr [edi]	; lpBuffer
		call	sub_7F8127E7
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	loc_7F821C30
		cmp	[ebp+var_C], 2000h
		jnz	loc_7F821B23
		dec	bx
		add	esi, 2000h
		add	edi, 4
		test	bx, bx
		jnz	short loc_7F821A75

loc_7F821AA9:				; CODE XREF: sub_7F821A34+3Fj
		mov	eax, dword_7F838078
		mov	ecx, [eax+200h]
		mov	ax, [ecx+8]
		and	ax, 0FFh
		mov	[ebp+var_2], ax
		jnz	short loc_7F821AC8
		mov	[ebp+var_2], 100h

loc_7F821AC8:				; CODE XREF: sub_7F821A34+8Cj
		mov	[ebp+var_C], 2000h
		mov	ebx, [ebp+arg_0]
		test	ebx, ebx
		jz	short loc_7F821ADF
		call	ds:GetTickCount
		mov	[ebp+var_10], eax

loc_7F821ADF:				; CODE XREF: sub_7F821A34+A0j
		lea	eax, [ebp+var_C]
		push	eax		; int
		push	esi		; lDistanceToMove
		push	dword ptr [edi]	; lpBuffer
		call	sub_7F8127E7
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	loc_7F821C30
		test	ebx, ebx
		jz	short loc_7F821B0E
		call	ds:GetTickCount
		sub	eax, [ebp+var_10]
		cmp	eax, 3E8h
		sbb	eax, eax
		inc	eax
		mov	[ebx], ax

loc_7F821B0E:				; CODE XREF: sub_7F821A34+C4j
		cmp	[ebp+var_C], 2000h
		jz	short loc_7F821B2F
		mov	[ebp+var_8], 200h
		jmp	loc_7F821C30
; ---------------------------------------------------------------------------

loc_7F821B23:				; CODE XREF: sub_7F821A34+5Fj
		mov	[ebp+var_8], 200h
		jmp	loc_7F821C30
; ---------------------------------------------------------------------------

loc_7F821B2F:				; CODE XREF: sub_7F821A34+E1j
		xor	esi, esi
		cmp	dword_7F836C64,	esi
		jnz	short loc_7F821B5A
		push	esi
		call	sub_7F812C72
		mov	[ebp+var_8], eax
		cmp	eax, esi
		jnz	loc_7F821C30
		call	sub_7F820691
		mov	[ebp+var_8], eax
		cmp	eax, esi
		jnz	loc_7F821C30

loc_7F821B5A:				; CODE XREF: sub_7F821A34+103j
		mov	eax, dword_7F838078
		mov	si, [eax+204h]
		test	si, si
		jz	loc_7F821C08

loc_7F821B6F:				; CODE XREF: sub_7F821A34+1CEj
		cmp	[ebp+var_2], 0
		mov	ebx, [edi]
		jz	short loc_7F821BF4

loc_7F821B78:				; CODE XREF: sub_7F821A34+1BEj
		lea	ecx, [ebx+10h]
		mov	ax, [ecx]
		or	ax, [ebp+var_4]
		or	ah, 10h
		mov	[ecx], ax
		and	ax, 9FF7h
		mov	[ecx], ax
		cmp	dword_7F836C64,	0
		jnz	short loc_7F821BE6
		mov	ecx, [ebx+14h]
		test	ecx, ecx
		jl	short loc_7F821BD0
		mov	al, [ebx+4]
		cmp	al, 8Eh
		jz	short loc_7F821BD0
		cmp	al, 8Fh
		jnz	short loc_7F821BB5
		mov	eax, dword_7F838078
		add	[eax+270h], ecx

loc_7F821BB5:				; CODE XREF: sub_7F821A34+174j
		cmp	word ptr [ebx+1Eh], 0
		jnz	short loc_7F821BE6
		movzx	eax, byte ptr [ebx+4]
		cmp	eax, 86h
		jz	short loc_7F821BE0
		cmp	eax, 87h
		jnz	short loc_7F821BE6
		jmp	short loc_7F821BDA
; ---------------------------------------------------------------------------

loc_7F821BD0:				; CODE XREF: sub_7F821A34+169j
					; sub_7F821A34+170j
		cmp	si, 1
		jnz	short loc_7F821BDA
		cmp	[edi], ebx
		jz	short loc_7F821BE6

loc_7F821BDA:				; CODE XREF: sub_7F821A34+19Aj
					; sub_7F821A34+1A0j
		mov	word ptr [ebx+1Ch], 0

loc_7F821BE0:				; CODE XREF: sub_7F821A34+191j
		push	ebx
		call	sub_7F8147DD

loc_7F821BE6:				; CODE XREF: sub_7F821A34+162j
					; sub_7F821A34+186j ...
		dec	[ebp+var_2]
		add	ebx, 20h
		cmp	[ebp+var_2], 0
		jnz	short loc_7F821B78

loc_7F821BF4:				; CODE XREF: sub_7F821A34+142j
		dec	si
		sub	edi, 4
		mov	[ebp+var_2], 100h
		test	si, si
		jnz	loc_7F821B6F

loc_7F821C08:				; CODE XREF: sub_7F821A34+135j
		cmp	dword_7F836C64,	0
		jnz	short loc_7F821C30
		mov	ecx, dword_7F838078
		mov	eax, ecx
		mov	ax, [eax+0Ch]
		cmp	[ecx+208h], ax
		jbe	short loc_7F821C30
		push	1
		call	sub_7F812D74
		mov	[ebp+var_8], eax

loc_7F821C30:				; CODE XREF: sub_7F821A34+52j
					; sub_7F821A34+BCj ...
		call	ds:GetTickCount
		mov	ecx, dword_7F838078
		pop	edi
		pop	esi
		pop	ebx
		mov	[ecx+268h], eax
		mov	eax, [ebp+var_8]
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F821A34	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F821C4E(LPCSTR pSrc, int)
sub_7F821C4E	proc near		; CODE XREF: sub_7F8207A6+C4p

pSrc		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebp, [esp+10h+arg_4]
		xor	edi, edi
		mov	esi, [ebp+0]
		call	sub_7F821D9A
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F821C70
		mov	ebp, 400h
		jmp	loc_7F821D65
; ---------------------------------------------------------------------------

loc_7F821C70:				; CODE XREF: sub_7F821C4E+16j
		push	ebx
		call	sub_7F8216EE
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F821C86
		mov	ebp, 400h
		jmp	loc_7F821D65
; ---------------------------------------------------------------------------

loc_7F821C86:				; CODE XREF: sub_7F821C4E+2Cj
		mov	[esi], edi
		cmp	dword_7F838078,	0
		jz	short loc_7F821C98
		mov	ebp, 253h
		jmp	short loc_7F821CC8
; ---------------------------------------------------------------------------

loc_7F821C98:				; CODE XREF: sub_7F821C4E+41j
		mov	eax, [ebp+0]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ebp
		xor	ebp, ebp

loc_7F821CC8:				; CODE XREF: sub_7F821C4E+48j
		test	ebp, ebp
		jnz	loc_7F821D65
		call	sub_7F821E82
		mov	ebp, eax
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F821CED
		call	sub_7F82A34F
		jmp	short loc_7F821CFB
; ---------------------------------------------------------------------------

loc_7F821CED:				; CODE XREF: sub_7F821C4E+96j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F821CFB:				; CODE XREF: sub_7F821C4E+9Dj
		mov	dword_7F838078,	0
		test	ebp, ebp
		jnz	short loc_7F821D69
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_7F821D16
		push	eax
		call	sub_7F815991

loc_7F821D16:				; CODE XREF: sub_7F821C4E+C0j
		lea	eax, [esi+4]
		push	eax		; int
		push	0		; __int16
		push	[esp+18h+pSrc]	; pSrc
		call	sub_7F820E0E
		mov	ebp, eax
		test	ebp, ebp
		jz	short loc_7F821D41
		cmp	ebp, 203h
		jnz	short loc_7F821D38
		mov	ebp, 253h

loc_7F821D38:				; CODE XREF: sub_7F821C4E+E3j
		mov	dword ptr [esi+4], 0
		jmp	short loc_7F821D65
; ---------------------------------------------------------------------------

loc_7F821D41:				; CODE XREF: sub_7F821C4E+DBj
		push	0
		push	edi
		push	esi
		call	sub_7F820F2F
		mov	ebp, eax
		test	ebp, ebp
		jnz	short loc_7F821D69
		push	edi
		call	sub_7F8218C5
		mov	ebp, eax
		test	ebp, ebp
		jnz	short loc_7F821D69
		mov	word ptr [edi+210h], 1

loc_7F821D65:				; CODE XREF: sub_7F821C4E+1Dj
					; sub_7F821C4E+33j ...
		test	ebp, ebp
		jz	short loc_7F821D85

loc_7F821D69:				; CODE XREF: sub_7F821C4E+B9j
					; sub_7F821C4E+100j ...
		test	edi, edi
		jz	short loc_7F821D85
		cmp	word ptr [esi+10h], 0
		jl	short loc_7F821D7D
		push	0
		push	edi
		push	esi
		call	sub_7F821055

loc_7F821D7D:				; CODE XREF: sub_7F821C4E+124j
		push	edi
		call	sub_7F820EE1
		xor	edi, edi

loc_7F821D85:				; CODE XREF: sub_7F821C4E+119j
					; sub_7F821C4E+11Dj
		test	ebx, ebx
		jz	short loc_7F821D8F
		push	ebx
		call	sub_7F82F149

loc_7F821D8F:				; CODE XREF: sub_7F821C4E+139j
		mov	eax, ebp
		mov	[esi], edi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F821C4E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F821D9A	proc near		; CODE XREF: sub_7F821C4E+Dp

var_18		= word ptr -18h
var_16		= word ptr -16h
var_14		= word ptr -14h

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		push	10h
		push	200h
		call	sub_7F82F03B
		mov	ebx, eax
		mov	eax, 0
		test	ebx, ebx
		jz	loc_7F821E7B
		mov	dword ptr [ebx], 1AFDEADh
		lea	ecx, [ebp+var_18]
		cmp	dword_7F836C68,	1
		sbb	eax, eax
		push	ecx
		and	eax, 2
		add	eax, 0F00C00Dh
		mov	[ebx+4], eax
		mov	word ptr [ebx+0Ch], 200h
		call	sub_7F82ED4B
		mov	ax, [ebp+var_18]
		mov	[ebx+110h], ax
		mov	[ebx+116h], ax
		lea	esi, [ebx+10h]
		mov	ax, [ebp+var_16]
		mov	[ebx+112h], ax
		mov	[ebx+118h], ax
		mov	ax, [ebp+var_14]
		mov	[ebx+114h], ax
		mov	[ebx+11Ah], ax
		lea	eax, [esi+40h]
		mov	edi, eax
		mov	ecx, 10h
		mov	word ptr [esi+8], 2
		mov	word ptr [esi+0Ah], 1
		push	offset aSystem_ini ; "system.ini"
		mov	dword ptr [esi], 200h
		mov	dword ptr [esi+4], 8200h
		rep movsd
		push	80h		; nSize
		lea	ecx, [ebx+90h]
		push	ecx		; lpReturnedString
		mov	dword ptr [eax], 4200h
		push	offset Default	; lpDefault
		push	offset aLanguage_dll ; "language.dll"
		push	offset aBoot_descripti ; "boot.description"
		call	ds:GetPrivateProfileStringA
		mov	byte ptr [eax+ebx+90h],	0
		mov	eax, ebx

loc_7F821E7B:				; CODE XREF: sub_7F821D9A+1Ej
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_7F821D9A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F821E82	proc near		; CODE XREF: sub_7F821C4E+82p

nNumberOfBytesToWrite= dword ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		push	esi
		push	edi
		push	0
		call	sub_7F812C72
		test	eax, eax
		jnz	loc_7F821FEA
		cmp	dword_7F838080,	0
		jnz	short loc_7F821EB0
		call	sub_7F82A588
		test	eax, eax
		jnz	loc_7F821FEA

loc_7F821EB0:				; CODE XREF: sub_7F821E82+1Fj
		push	1		; __int16
		mov	eax, dword_7F838080
		push	0		; lDistanceToMove
		push	eax		; int
		call	sub_7F815C03
		test	eax, eax
		jnz	loc_7F821FEA
		mov	eax, dword_7F838078
		cmp	dword_7F836760,	0
		mov	ecx, [eax+200h]
		mov	esi, [ecx+4]
		jz	short loc_7F821EE5
		mov	eax, dword_7F836760
		inc	byte ptr [eax]

loc_7F821EE5:				; CODE XREF: sub_7F821E82+5Aj
		mov	edi, lpBuffer
		xor	eax, eax
		mov	ecx, 800h
		rep stosd
		test	esi, esi
		jz	short loc_7F821F29
		mov	edi, 2000h

loc_7F821EFD:				; CODE XREF: sub_7F821E82+A5j
		cmp	esi, edi
		mov	eax, esi
		jb	short loc_7F821F05
		mov	eax, edi

loc_7F821F05:				; CODE XREF: sub_7F821E82+7Fj
		mov	[ebp+nNumberOfBytesToWrite], eax
		lea	eax, [ebp+nNumberOfBytesToWrite]
		push	eax		; lpNumberOfBytesWritten
		mov	eax, dword_7F838080
		push	[ebp+nNumberOfBytesToWrite] ; nNumberOfBytesToWrite
		push	lpBuffer	; lpBuffer
		push	eax		; int
		call	sub_7F815B4C
		test	eax, eax
		jnz	short loc_7F821F87
		sub	esi, [ebp+nNumberOfBytesToWrite]
		jnz	short loc_7F821EFD

loc_7F821F29:				; CODE XREF: sub_7F821E82+74j
		cmp	dword_7F836760,	0
		jz	short loc_7F821F39
		mov	eax, dword_7F836760
		dec	byte ptr [eax]

loc_7F821F39:				; CODE XREF: sub_7F821E82+AEj
		mov	eax, dword_7F838078
		mov	eax, [eax+200h]
		mov	cx, [eax+0Ah]
		cmp	cx, 1
		jb	short loc_7F821F9A
		cmp	[eax+8], cx
		jbe	short loc_7F821F9A
		mov	ax, cx
		shr	ax, 6
		movzx	edx, ax
		and	edx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	ebx, [eax+20Ch]
		mov	esi, [ebx]
		mov	eax, [edx+esi]
		xor	edx, edx
		mov	dx, cx
		and	edx, 0FFh
		shl	edx, 5
		lea	ebx, [eax+edx]
		jmp	short loc_7F821F9C
; ---------------------------------------------------------------------------

loc_7F821F87:				; CODE XREF: sub_7F821E82+A0j
		cmp	dword_7F836760,	0
		jz	short loc_7F821FEA
		mov	ecx, dword_7F836760
		dec	byte ptr [ecx]
		jmp	short loc_7F821FEA
; ---------------------------------------------------------------------------

loc_7F821F9A:				; CODE XREF: sub_7F821E82+CAj
					; sub_7F821E82+D0j
		xor	ebx, ebx

loc_7F821F9C:				; CODE XREF: sub_7F821E82+103j
		mov	edi, ebx
		xor	eax, eax
		mov	ecx, 8
		push	ebx
		rep stosd
		mov	dword ptr [ebx+4], 70616D80h
		mov	dword ptr [ebx+18h], 200h
		mov	dword ptr [ebx+14h], 7FF8h
		xor	esi, esi
		call	sub_7F8148F7
		push	esi
		call	sub_7F8148F7
		push	esi
		push	1
		call	sub_7F813C77
		test	eax, eax
		jnz	short loc_7F821FEA
		push	ebx
		call	sub_7F8148F7
		push	esi
		call	sub_7F8148F7
		push	esi
		push	1
		call	sub_7F813C77

loc_7F821FEA:				; CODE XREF: sub_7F821E82+12j
					; sub_7F821E82+28j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_7F821E82	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F821FF1	proc near		; CODE XREF: sub_7F8207A6+26Ep

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	offset aSystem_ini ; "system.ini"
		push	220h		; nSize
		push	offset ReturnedString ;	lpReturnedString
		push	offset Default	; lpDefault
		push	offset aLanguage_dll ; "language.dll"
		push	offset aBoot_descripti ; "boot.description"
		call	ds:GetPrivateProfileStringA
		cmp	eax, 7Fh
		jb	short loc_7F822021
		mov	eax, 7Fh

loc_7F822021:				; CODE XREF: sub_7F821FF1+29j
		mov	esi, offset ReturnedString
		mov	edi, [esp+8+arg_0]
		mov	byte ptr ReturnedString[eax], 0
		push	esi		; lpString2
		mov	eax, [edi]
		mov	eax, [eax]
		add	eax, 90h
		push	eax		; lpString1
		call	sub_7F8176C6
		test	eax, eax
		jz	short loc_7F822078
		mov	eax, [edi]
		push	esi		; lpString2
		mov	edi, [eax]
		lea	ecx, [edi+90h]
		push	ecx		; lpString1
		call	ds:lstrcpyA
		lea	ecx, [edi+214h]
		mov	ax, [ecx]
		test	ax, ax
		jnz	short loc_7F82206A
		inc	ax
		mov	[ecx], ax

loc_7F82206A:				; CODE XREF: sub_7F821FF1+72j
		or	byte ptr [edi+265h], 8
		mov	eax, 1
		jmp	short loc_7F82207A
; ---------------------------------------------------------------------------

loc_7F822078:				; CODE XREF: sub_7F821FF1+52j
		xor	eax, eax

loc_7F82207A:				; CODE XREF: sub_7F821FF1+85j
		pop	edi
		pop	esi
		retn	4
sub_7F821FF1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82207F	proc near		; CODE XREF: sub_7F82110E+2E8p

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
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		mov	[ebp+var_4], eax
		mov	[ebp+var_10], 4D504981h
		mov	[ebp+var_C], 64694881h
		mov	[ebp+var_8], 46534180h
		lea	esi, [ebp+var_10]

loc_7F8220A3:				; CODE XREF: sub_7F82207F+41j
		push	dword ptr [esi]
		push	[ebp+arg_0]
		call	sub_7F8220C9
		test	eax, eax
		jz	short loc_7F8220BA
		cmp	eax, 1001h
		jnz	short loc_7F8220C2
		xor	eax, eax

loc_7F8220BA:				; CODE XREF: sub_7F82207F+30j
		add	esi, 4
		cmp	dword ptr [esi], 0
		jnz	short loc_7F8220A3

loc_7F8220C2:				; CODE XREF: sub_7F82207F+37j
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F82207F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8220C9	proc near		; CODE XREF: sub_7F82207F+29p

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_6		= word ptr -6
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_14], esi
		sub	eax, 46534180h
		mov	[ebp+var_10], esi
		lea	ecx, [ebp+var_14]
		mov	[ebp+var_1C], esi
		push	ecx
		lea	edx, [ebp+arg_4]
		push	esi
		mov	ebx, [ebp+arg_0]
		push	edx
		cmp	eax, 1
		sbb	eax, eax
		push	ebx
		neg	eax
		mov	[ebp+var_28], eax
		call	sub_7F817E9D
		cmp	eax, esi
		mov	edi, eax
		jnz	loc_7F822375
		push	[ebp+var_14]
		call	sub_7F8198FC
		dec	ax
		mov	word ptr [ebp+var_4], ax
		cmp	ax, si
		jl	loc_7F822375

loc_7F822122:				; CODE XREF: sub_7F8220C9+2A6j
		push	[ebp+var_4]
		push	[ebp+var_14]
		call	sub_7F819508
		mov	[ebp+var_18], eax
		cmp	[ebp+var_28], esi
		jz	loc_7F8221C7
		cmp	dword_7F838078,	esi
		jz	short loc_7F822148
		mov	edi, 253h
		jmp	short loc_7F822177
; ---------------------------------------------------------------------------

loc_7F822148:				; CODE XREF: sub_7F8220C9+76j
		mov	eax, [ebx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		xor	edi, edi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ebx

loc_7F822177:				; CODE XREF: sub_7F8220C9+7Dj
		test	edi, edi
		jnz	loc_7F822375
		push	esi
		push	[ebp+var_18]
		call	sub_7F8144A4
		mov	[ebp+var_C], eax
		cmp	eax, esi
		jz	short loc_7F822195
		mov	ecx, [eax+8]
		mov	[ebp+var_18], ecx

loc_7F822195:				; CODE XREF: sub_7F8220C9+C4j
		mov	eax, dword_7F838078
		cmp	[eax+254h], si
		jz	short loc_7F8221AA
		call	sub_7F82A34F
		jmp	short loc_7F8221B8
; ---------------------------------------------------------------------------

loc_7F8221AA:				; CODE XREF: sub_7F8220C9+D8j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F8221B8:				; CODE XREF: sub_7F8220C9+DFj
		mov	dword_7F838078,	esi
		cmp	[ebp+var_C], esi
		jz	loc_7F82236B

loc_7F8221C7:				; CODE XREF: sub_7F8220C9+6Aj
		lea	eax, [ebp+var_10]
		lea	ecx, [ebp+var_18]
		push	eax
		push	esi
		push	ecx
		push	ebx
		call	sub_7F817E9D
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F8221EF
		cmp	edi, 1001h
		jnz	loc_7F822375
		xor	edi, edi
		jmp	loc_7F82236B
; ---------------------------------------------------------------------------

loc_7F8221EF:				; CODE XREF: sub_7F8220C9+111j
		push	[ebp+var_10]
		mov	[ebp+var_6], si
		call	sub_7F8198FC
		dec	ax
		mov	word ptr [ebp+var_C+2],	ax
		cmp	ax, si
		jl	loc_7F8222DC

loc_7F82220A:				; CODE XREF: sub_7F8220C9+20Dj
		push	[ebp+var_C+2]
		push	[ebp+var_10]
		call	sub_7F819508
		lea	ecx, [ebp+var_4+3]
		mov	[ebp+var_20], eax
		mov	[ebp+var_24], 1
		lea	eax, [ebp+var_24]
		push	eax
		push	ecx
		push	0Eh
		push	[ebp+var_C+2]
		push	[ebp+var_10]
		call	sub_7F818D47
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F822375
		test	byte ptr [ebp+var_4+3],	22h
		jnz	loc_7F8222D2
		cmp	dword_7F838078,	esi
		jz	short loc_7F822257
		mov	edi, 253h
		jmp	short loc_7F822286
; ---------------------------------------------------------------------------

loc_7F822257:				; CODE XREF: sub_7F8220C9+185j
		mov	eax, [ebx]
		xor	edi, edi
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ebx

loc_7F822286:				; CODE XREF: sub_7F8220C9+18Cj
		test	edi, edi
		jnz	loc_7F822375
		push	esi
		push	[ebp+var_20]
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F8222A9
		or	byte ptr [eax+11h], 8
		inc	[ebp+var_6]
		push	eax
		call	sub_7F8148F7

loc_7F8222A9:				; CODE XREF: sub_7F8220C9+1D0j
		mov	eax, dword_7F838078
		cmp	[eax+254h], si
		jz	short loc_7F8222BE
		call	sub_7F82A34F
		jmp	short loc_7F8222CC
; ---------------------------------------------------------------------------

loc_7F8222BE:				; CODE XREF: sub_7F8220C9+1ECj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F8222CC:				; CODE XREF: sub_7F8220C9+1F3j
		mov	dword_7F838078,	esi

loc_7F8222D2:				; CODE XREF: sub_7F8220C9+179j
		dec	word ptr [ebp+var_C+2]
		jns	loc_7F82220A

loc_7F8222DC:				; CODE XREF: sub_7F8220C9+13Bj
		push	esi
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_7F81813C
		cmp	dword_7F838078,	esi
		jz	short loc_7F8222F5
		mov	edi, 253h
		jmp	short loc_7F822324
; ---------------------------------------------------------------------------

loc_7F8222F5:				; CODE XREF: sub_7F8220C9+223j
		mov	eax, [ebx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		xor	edi, edi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ebx

loc_7F822324:				; CODE XREF: sub_7F8220C9+22Aj
		test	edi, edi
		jnz	short loc_7F822375
		push	esi
		push	[ebp+var_18]
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F822342
		movsx	ecx, [ebp+var_6]
		push	eax
		mov	[eax+0Ch], ecx
		call	sub_7F8148F7

loc_7F822342:				; CODE XREF: sub_7F8220C9+26Aj
		mov	eax, dword_7F838078
		cmp	[eax+254h], si
		jz	short loc_7F822357
		call	sub_7F82A34F
		jmp	short loc_7F822365
; ---------------------------------------------------------------------------

loc_7F822357:				; CODE XREF: sub_7F8220C9+285j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F822365:				; CODE XREF: sub_7F8220C9+28Cj
		mov	dword_7F838078,	esi

loc_7F82236B:				; CODE XREF: sub_7F8220C9+F8j
					; sub_7F8220C9+121j
		dec	word ptr [ebp+var_4]
		jns	loc_7F822122

loc_7F822375:				; CODE XREF: sub_7F8220C9+3Cj
					; sub_7F8220C9+53j ...
		cmp	[ebp+var_14], 0
		jz	short loc_7F822386
		push	0
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_7F81813C

loc_7F822386:				; CODE XREF: sub_7F8220C9+2B0j
		cmp	[ebp+var_10], 0
		jz	short loc_7F822397
		push	0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_7F81813C

loc_7F822397:				; CODE XREF: sub_7F8220C9+2C1j
		cmp	[ebp+var_1C], 0
		jz	short loc_7F8223A8
		push	0
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_7F81813C

loc_7F8223A8:				; CODE XREF: sub_7F8220C9+2D2j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F8220C9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8223B3(int, LPCSTR lpString)
sub_7F8223B3	proc near		; CODE XREF: sub_7F823870+1DEp

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
pSrc		= dword	ptr  8
lpString	= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	[ebp+var_C], esi
		mov	[ebp+var_8], esi
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_C]
		push	eax
		mov	[ebp+var_10], esi
		push	ecx
		mov	[ebp+var_4], esi
		mov	dword_7F836C60,	1
		push	1
		push	esi
		push	[ebp+pSrc]
		call	sub_7F822552
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F822461
		cmp	edi, 400h
		jnz	short loc_7F8223FA
		mov	edi, 100Bh

loc_7F8223FA:				; CODE XREF: sub_7F8223B3+40j
		cmp	edi, 100Bh
		jnz	loc_7F8224E3
		xor	edi, edi
		cmp	[ebp+var_C], edi
		jz	short loc_7F822418
		push	[ebp+var_C]
		call	sub_7F824500
		mov	[ebp+var_C], edi

loc_7F822418:				; CODE XREF: sub_7F8223B3+58j
		xor	edi, edi
		cmp	[ebp+var_8], edi
		jz	short loc_7F82242A
		push	[ebp+var_8]
		call	sub_7F824500
		mov	[ebp+var_8], edi

loc_7F82242A:				; CODE XREF: sub_7F8223B3+6Aj
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_C]
		push	eax
		push	ecx
		push	1
		push	1
		push	[ebp+pSrc]
		call	sub_7F822552
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F82245C
		cmp	edi, 400h
		jnz	short loc_7F822451
		mov	edi, 100Bh

loc_7F822451:				; CODE XREF: sub_7F8223B3+97j
		cmp	edi, 100Bh
		jmp	loc_7F8224E3
; ---------------------------------------------------------------------------

loc_7F82245C:				; CODE XREF: sub_7F8223B3+8Fj
		mov	esi, 1

loc_7F822461:				; CODE XREF: sub_7F8223B3+38j
		lea	eax, [ebp+var_10]
		xor	ebx, ebx
		push	eax		; int
		push	esi		; int
		push	ebx		; int
		push	[ebp+pSrc]	; pSrc
		call	sub_7F8225B6
		cmp	eax, ebx
		mov	edi, eax
		jnz	short loc_7F8224E3
		push	ebx		; int
		lea	eax, [ebp+var_4]
		push	ebx		; int
		push	eax		; int
		push	20Ah		; __int16
		push	ebx		; int
		push	ebx		; int
		push	[ebp+lpString]	; lpString
		call	sub_7F8207A6
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F8224E3
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		mov	edx, [ecx]
		and	word ptr [edx+264h], 0BFFFh
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	[ebp+var_C]
		push	[ebp+var_10]
		call	sub_7F822F66
		cmp	eax, ebx
		mov	edi, eax
		jnz	short loc_7F8224E3
		push	[ebp+var_4]
		call	sub_7F82DBC2
		cmp	eax, ebx
		mov	edi, eax
		jnz	short loc_7F8224E3
		push	1
		push	[ebp+var_4]
		call	sub_7F823452
		cmp	eax, ebx
		mov	edi, eax
		jnz	short loc_7F8224E3
		push	1
		push	[ebp+var_4]
		call	sub_7F82D9BE
		mov	edi, eax

loc_7F8224E3:				; CODE XREF: sub_7F8223B3+4Dj
					; sub_7F8223B3+A4j ...
		cmp	[ebp+var_C], 0
		jz	short loc_7F8224F1
		push	[ebp+var_C]
		call	sub_7F824500

loc_7F8224F1:				; CODE XREF: sub_7F8223B3+134j
		cmp	[ebp+var_8], 0
		jz	short loc_7F8224FF
		push	[ebp+var_8]
		call	sub_7F824500

loc_7F8224FF:				; CODE XREF: sub_7F8223B3+142j
		cmp	[ebp+var_10], 0
		jz	short loc_7F82250E
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_7F82285E

loc_7F82250E:				; CODE XREF: sub_7F8223B3+150j
		cmp	[ebp+var_4], 0
		jz	short loc_7F822527
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_7F820C0E
		test	eax, eax
		jz	short loc_7F822527
		test	edi, edi
		jnz	short loc_7F822527
		mov	edi, eax

loc_7F822527:				; CODE XREF: sub_7F8223B3+15Fj
					; sub_7F8223B3+16Cj ...
		cmp	edi, 100Bh
		jnz	short loc_7F82253D
		push	esi		; int
		push	[ebp+lpString]	; lpString
		push	[ebp+pSrc]	; pSrc
		call	sub_7F823484
		mov	edi, eax

loc_7F82253D:				; CODE XREF: sub_7F8223B3+17Aj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		mov	dword_7F836C60,	0
		pop	ebp
		retn	8
sub_7F8223B3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F822552	proc near		; CODE XREF: sub_7F8223B3+2Fp
					; sub_7F8223B3+86p

var_4		= dword	ptr -4
pSrc		= 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, 4
		push	esi
		lea	eax, [ebp+var_4]
		push	eax		; int
		push	[ebp+arg_4]	; int
		push	0		; int
		push	[ebp+pSrc]	; pSrc
		call	sub_7F8225B6
		test	eax, eax
		jnz	short loc_7F8225AF
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+var_4]
		call	sub_7F822894
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F8225A4
		cmp	[ebp+arg_8], 0
		jnz	short loc_7F8225A4
		push	0
		push	[ebp+var_4]
		call	sub_7F823452
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F8225A4
		push	0
		push	[ebp+var_4]
		call	sub_7F82D9BE
		mov	esi, eax

loc_7F8225A4:				; CODE XREF: sub_7F822552+2Ej
					; sub_7F822552+34j ...
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_7F82285E
		mov	eax, esi

loc_7F8225AF:				; CODE XREF: sub_7F822552+1Aj
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F822552	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8225B6(LPCSTR pSrc, int, int, int)
sub_7F8225B6	proc near		; CODE XREF: sub_7F8223B3+B9p
					; sub_7F822552+13p ...

Buffer		= byte ptr -20Ch
var_200		= word ptr -200h
var_1FE		= word ptr -1FEh
var_1FC		= dword	ptr -1FCh
var_1F4		= word ptr -1F4h
var_1F2		= word ptr -1F2h
var_1BC		= dword	ptr -1BCh
var_1B8		= dword	ptr -1B8h
var_1B4		= word ptr -1B4h
var_1B2		= word ptr -1B2h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
pSrc		= 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, 20Ch
		push	ebx
		mov	eax, [ebp+arg_C]
		push	esi
		xor	ebx, ebx
		push	edi
		xor	esi, esi
		lea	ecx, [ebp+var_8]
		mov	[ebp+var_8], esi
		push	ecx		; int
		mov	[eax], esi
		mov	dword_7F836C64,	1
		push	5		; __int16
		push	[ebp+pSrc]	; pSrc
		call	sub_7F815751
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F8227E5
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		push	[ebp+var_8]	; int
		call	sub_7F812BEA
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F8227E5
		cmp	[ebp+arg_4], esi
		jnz	loc_7F82270C
		lea	eax, [ebp+Buffer]
		push	eax
		call	sub_7F8219A0
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F8227E5
		mov	ax, [ebp+var_1FE]
		and	ax, 1
		cmp	[ebp+arg_8], esi
		mov	[ebp+var_2], ax
		jz	short loc_7F82264B
		mov	ax, 1
		sub	ax, [ebp+var_1FE]
		mov	[ebp+var_2], ax

loc_7F82264B:				; CODE XREF: sub_7F8225B6+84j
		mov	ax, [ebp+var_2]
		lea	ecx, [ebp+var_C]
		mov	[ebp+var_1FE], ax
		push	ecx
		push	[ebp+var_8]
		call	sub_7F815DA2
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F8227E5
		mov	ax, [ebp+var_200]
		mov	ecx, [ebp+var_1BC]
		sub	ecx, [ebp+var_1FC]
		shr	ecx, 5
		cmp	[ebp+var_2], 0
		jnz	short loc_7F8226BF
		cmp	[ebp+var_1F4], ax
		ja	short loc_7F8226F5
		cmp	cx, ax
		jb	short loc_7F8226F5
		mov	ax, [ebp+var_1F2]
		cmp	[ebp+var_1F4], ax
		jb	short loc_7F8226F5
		movzx	eax, [ebp+var_200]
		shl	eax, 5
		add	eax, [ebp+var_1FC]
		cmp	eax, [ebp+var_1BC]
		jmp	short loc_7F8226F3
; ---------------------------------------------------------------------------

loc_7F8226BF:				; CODE XREF: sub_7F8225B6+D1j
		cmp	[ebp+var_1B4], ax
		ja	short loc_7F8226F5
		cmp	cx, ax
		jb	short loc_7F8226F5
		mov	ax, [ebp+var_1B2]
		cmp	[ebp+var_1B4], ax
		jb	short loc_7F8226F5
		movzx	eax, [ebp+var_200]
		shl	eax, 5
		add	eax, [ebp+var_1BC]
		cmp	eax, [ebp+var_1B8]

loc_7F8226F3:				; CODE XREF: sub_7F8225B6+107j
		jbe	short loc_7F8226FC

loc_7F8226F5:				; CODE XREF: sub_7F8225B6+DAj
					; sub_7F8225B6+DFj ...
		mov	[ebp+arg_4], 1

loc_7F8226FC:				; CODE XREF: sub_7F8225B6:loc_7F8226F3j
		cmp	[ebp+arg_4], 0
		jz	short loc_7F82270C
		mov	edi, 100Bh
		jmp	loc_7F8227E5
; ---------------------------------------------------------------------------

loc_7F82270C:				; CODE XREF: sub_7F8225B6+56j
					; sub_7F8225B6+14Aj
		push	10h
		push	4
		call	sub_7F82F18D
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F822725
		mov	edi, 400h
		jmp	loc_7F8227E5
; ---------------------------------------------------------------------------

loc_7F822725:				; CODE XREF: sub_7F8225B6+163j
		cmp	[ebp+arg_4], 0
		jnz	short loc_7F822747
		lea	eax, [ebp+Buffer]
		push	eax
		call	sub_7F8216EE
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F822747
		mov	edi, 400h
		jmp	loc_7F8227E5
; ---------------------------------------------------------------------------

loc_7F822747:				; CODE XREF: sub_7F8225B6+173j
					; sub_7F8225B6+185j
		mov	eax, [ebx]
		mov	ecx, [ebp+var_8]
		cmp	[ebp+arg_4], 0
		mov	[eax+4], ecx
		mov	[eax], esi
		jnz	loc_7F8227E5
		cmp	dword_7F838078,	0
		mov	eax, 253h
		jnz	short loc_7F822798
		mov	eax, [ebx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ebx
		xor	eax, eax

loc_7F822798:				; CODE XREF: sub_7F8225B6+1B1j
		test	eax, eax
		jz	short loc_7F8227A3
		mov	edi, 100Bh
		jmp	short loc_7F8227E5
; ---------------------------------------------------------------------------

loc_7F8227A3:				; CODE XREF: sub_7F8225B6+1E4j
		push	0
		call	sub_7F821A34
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F8227B7
		mov	edi, 100Bh
		jmp	short loc_7F8227E5
; ---------------------------------------------------------------------------

loc_7F8227B7:				; CODE XREF: sub_7F8225B6+1F8j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F8227CD
		call	sub_7F82A34F
		jmp	short loc_7F8227DB
; ---------------------------------------------------------------------------

loc_7F8227CD:				; CODE XREF: sub_7F8225B6+20Ej
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F8227DB:				; CODE XREF: sub_7F8225B6+215j
		mov	dword_7F838078,	0

loc_7F8227E5:				; CODE XREF: sub_7F8225B6+34j
					; sub_7F8225B6+4Dj ...
		cmp	dword_7F838078,	0
		jz	short loc_7F82281C
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F822804
		call	sub_7F82A34F
		jmp	short loc_7F822812
; ---------------------------------------------------------------------------

loc_7F822804:				; CODE XREF: sub_7F8225B6+245j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F822812:				; CODE XREF: sub_7F8225B6+24Cj
		mov	dword_7F838078,	0

loc_7F82281C:				; CODE XREF: sub_7F8225B6+236j
		test	edi, edi
		jz	short loc_7F822844
		cmp	[ebp+var_8], 0
		jz	short loc_7F82282E
		push	[ebp+var_8]
		call	sub_7F815991

loc_7F82282E:				; CODE XREF: sub_7F8225B6+26Ej
		test	ebx, ebx
		jz	short loc_7F822838
		push	ebx
		call	sub_7F82F1E1

loc_7F822838:				; CODE XREF: sub_7F8225B6+27Aj
		test	esi, esi
		jz	short loc_7F822849
		push	esi
		call	sub_7F820EE1
		jmp	short loc_7F822849
; ---------------------------------------------------------------------------

loc_7F822844:				; CODE XREF: sub_7F8225B6+268j
		mov	eax, [ebp+arg_C]
		mov	[eax], ebx

loc_7F822849:				; CODE XREF: sub_7F8225B6+284j
					; sub_7F8225B6+28Cj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		mov	dword_7F836C64,	0
		pop	ebp
		retn	10h
sub_7F8225B6	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82285E	proc near		; CODE XREF: sub_7F8223B3+156p
					; sub_7F822552+56p ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		mov	eax, [esi]
		mov	eax, [eax]
		push	dword ptr [eax+4]
		mov	edi, [eax]
		call	sub_7F815991
		mov	ebx, eax
		test	edi, edi
		jz	short loc_7F82287F
		push	edi
		call	sub_7F820EE1

loc_7F82287F:				; CODE XREF: sub_7F82285E+19j
		push	dword ptr [esi]
		call	sub_7F82F1E1
		mov	eax, ebx
		pop	edi
		mov	dword ptr [esi], 0
		pop	esi
		pop	ebx
		retn	4
sub_7F82285E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F822894	proc near		; CODE XREF: sub_7F822552+25p

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_6		= word ptr -6
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		xor	ecx, ecx
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		mov	[ebp+var_18], ecx
		push	esi
		mov	ebx, [ebp+arg_0]
		push	edi
		mov	[ebp+var_C], ecx
		mov	eax, [ebx]
		mov	edx, [eax]
		mov	word_7F836C6C, cx
		mov	[ebp+var_14], edx
		add	edx, 200h
		push	32h
		push	ecx
		mov	[ebp+var_10], edx
		mov	eax, [edx]
		push	ecx
		mov	ax, [eax+8]
		mov	[ebp+var_6], ax
		call	sub_7F82A93C
		test	eax, eax
		jnz	short loc_7F8228E0
		mov	edi, 101Eh
		jmp	loc_7F822BA5
; ---------------------------------------------------------------------------

loc_7F8228E0:				; CODE XREF: sub_7F822894+40j
		movzx	eax, [ebp+var_6]
		movzx	edi, [ebp+var_6]
		xor	esi, esi
		push	edi
		mov	dword_7F838098,	esi
		mov	dword_7F83809C,	eax
		call	sub_7F8244CF
		mov	ecx, [ebp+arg_8]
		cmp	eax, esi
		mov	[ecx], eax
		jnz	short loc_7F82290E
		mov	edi, 400h
		jmp	loc_7F822BA5
; ---------------------------------------------------------------------------

loc_7F82290E:				; CODE XREF: sub_7F822894+6Ej
		mov	eax, [ebp+var_10]
		mov	ecx, [eax]
		mov	eax, [ecx+4]
		shr	eax, 7
		inc	eax
		push	eax
		call	sub_7F8244CF
		mov	ecx, [ebp+arg_4]
		test	eax, eax
		mov	[ecx], eax
		jnz	short loc_7F822933
		mov	edi, 400h
		jmp	loc_7F822BA5
; ---------------------------------------------------------------------------

loc_7F822933:				; CODE XREF: sub_7F822894+93j
		push	edi
		call	sub_7F8244CF
		mov	[ebp+var_C], eax
		test	eax, eax
		jnz	short loc_7F82294A
		mov	edi, 400h
		jmp	loc_7F822BA5
; ---------------------------------------------------------------------------

loc_7F82294A:				; CODE XREF: sub_7F822894+AAj
		mov	eax, [ebp+var_10]
		mov	ecx, [eax]
		movzx	edx, word ptr [ecx+0Ah]
		push	edx
		push	[ebp+var_C]
		call	sub_7F8245A4
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F822BA5
		mov	eax, [ebp+var_10]
		mov	ecx, [eax]
		movzx	edx, word ptr [ecx+0Ch]
		push	edx
		push	[ebp+var_C]
		call	sub_7F8245A4
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F822BA5
		xor	esi, esi

loc_7F822984:				; CODE XREF: sub_7F822894+109j
		push	esi
		mov	ecx, [ebp+arg_4]
		push	dword ptr [ecx]
		call	sub_7F8245A4
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F822BA5
		inc	esi
		cmp	esi, 4
		jb	short loc_7F822984
		cmp	dword_7F838078,	0
		jz	short loc_7F8229AF
		mov	edi, 253h
		jmp	short loc_7F8229DE
; ---------------------------------------------------------------------------

loc_7F8229AF:				; CODE XREF: sub_7F822894+112j
		mov	eax, [ebx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		xor	edi, edi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ebx

loc_7F8229DE:				; CODE XREF: sub_7F822894+119j
		test	edi, edi
		jnz	loc_7F822BA5
		mov	bx, 1
		mov	ax, [ebp+var_6]
		cmp	ax, 100h
		jb	short loc_7F8229F8
		mov	ax, 100h

loc_7F8229F8:				; CODE XREF: sub_7F822894+15Ej
		dec	ax
		mov	ecx, [ebp+var_14]
		mov	[ebp+var_2], ax
		mov	ax, [ecx+204h]
		dec	ax
		mov	word ptr [ebp+var_14+2], ax
		js	loc_7F822AF8

loc_7F822A14:				; CODE XREF: sub_7F822894+25Ej
		cmp	bx, 1
		jb	short loc_7F822A5E
		mov	eax, dword_7F838078
		mov	ecx, [eax+200h]
		cmp	[ecx+8], bx
		jbe	short loc_7F822A5E
		mov	ax, bx
		shr	ax, 6
		movzx	ecx, ax
		and	ecx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	edx, [eax+20Ch]
		mov	esi, [edx]
		mov	eax, [ecx+esi]
		xor	ecx, ecx
		mov	cx, bx
		and	ecx, 0FFh
		shl	ecx, 5
		lea	esi, [eax+ecx]
		jmp	short loc_7F822A60
; ---------------------------------------------------------------------------

loc_7F822A5E:				; CODE XREF: sub_7F822894+184j
					; sub_7F822894+195j
		xor	esi, esi

loc_7F822A60:				; CODE XREF: sub_7F822894+1C8j
		cmp	[ebp+var_2], 0
		jle	short loc_7F822AD4

loc_7F822A67:				; CODE XREF: sub_7F822894+23Ej
		push	esi
		push	ebx
		push	[ebp+var_C]
		call	sub_7F822C2A
		push	esi
		mov	ecx, [ebp+arg_8]
		push	ebx
		mov	edx, [ebp+arg_4]
		push	dword ptr [ecx]
		push	dword ptr [edx]
		call	sub_7F822DB9
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F822A94
		cmp	edi, 100Bh
		jnz	loc_7F822BA5

loc_7F822A94:				; CODE XREF: sub_7F822894+1F2j
		cmp	dword_7F83809C,	0
		mov	eax, 1
		jbe	short loc_7F822AC0
		push	64h
		sub	edx, edx
		inc	dword_7F838098
		mov	eax, dword_7F838098
		imul	eax, 64h
		div	dword_7F83809C
		push	eax
		call	sub_7F82A9CA

loc_7F822AC0:				; CODE XREF: sub_7F822894+20Cj
		test	eax, eax
		jz	short loc_7F822B0E
		inc	bx
		add	esi, 20h
		dec	[ebp+var_2]
		cmp	[ebp+var_2], 0
		jg	short loc_7F822A67

loc_7F822AD4:				; CODE XREF: sub_7F822894+1D1j
		movzx	ecx, [ebp+var_6]
		movzx	eax, bx
		sub	ecx, eax
		cmp	ecx, 100h
		jb	short loc_7F822AEA
		mov	ecx, 100h

loc_7F822AEA:				; CODE XREF: sub_7F822894+24Fj
		mov	[ebp+var_2], cx
		dec	word ptr [ebp+var_14+2]
		jns	loc_7F822A14

loc_7F822AF8:				; CODE XREF: sub_7F822894+17Aj
		mov	ax, [ebp+var_6]
		shr	ax, 2
		cmp	ax, word_7F836C6C
		jnb	short loc_7F822B18
		jmp	loc_7F822BA0
; ---------------------------------------------------------------------------

loc_7F822B0E:				; CODE XREF: sub_7F822894+22Ej
		mov	edi, 101Eh
		jmp	loc_7F822BA5
; ---------------------------------------------------------------------------

loc_7F822B18:				; CODE XREF: sub_7F822894+273j
		mov	esi, 0FFFFFFFEh
		push	0
		push	0
		mov	ecx, [ebp+arg_4]
		push	dword ptr [ecx]
		call	sub_7F824640
		mov	ecx, eax
		test	ecx, ecx
		jl	short loc_7F822B76

loc_7F822B31:				; CODE XREF: sub_7F822894+2E0j
		mov	eax, [ebp+var_10]
		mov	edx, [eax]
		mov	eax, [edx+4]
		cdq
		and	edx, 7Fh
		add	eax, edx
		sar	eax, 7
		cmp	eax, ecx
		jle	short loc_7F822B76
		mov	eax, esi
		sub	eax, ecx
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_7F822B52
		inc	esi
		jmp	short loc_7F822B62
; ---------------------------------------------------------------------------

loc_7F822B52:				; CODE XREF: sub_7F822894+2B9j
		test	esi, esi
		jle	short loc_7F822B5D
		sub	esi, [ebp-8]
		inc	esi
		add	[ebp+var_18], esi

loc_7F822B5D:				; CODE XREF: sub_7F822894+2C0j
		mov	esi, ecx
		mov	[ebp-8], ecx

loc_7F822B62:				; CODE XREF: sub_7F822894+2BCj
		push	0
		inc	ecx
		push	ecx
		mov	edx, [ebp+arg_4]
		push	dword ptr [edx]
		call	sub_7F824640
		mov	ecx, eax
		test	ecx, ecx
		jge	short loc_7F822B31

loc_7F822B76:				; CODE XREF: sub_7F822894+29Bj
					; sub_7F822894+2B0j
		test	esi, esi
		jle	short loc_7F822B81
		sub	esi, [ebp-8]
		inc	esi
		add	[ebp+var_18], esi

loc_7F822B81:				; CODE XREF: sub_7F822894+2E4j
		mov	eax, [ebp+var_10]
		mov	ecx, [eax]
		mov	eax, [ecx+4]
		cdq
		and	edx, 7Fh
		add	eax, edx
		sar	eax, 7
		cdq
		and	edx, 3
		add	eax, edx
		sar	eax, 2
		cmp	eax, [ebp+var_18]
		jge	short loc_7F822BA5

loc_7F822BA0:				; CODE XREF: sub_7F822894+275j
		mov	edi, 100Bh

loc_7F822BA5:				; CODE XREF: sub_7F822894+47j
					; sub_7F822894+75j ...
		cmp	dword_7F838078,	0
		jz	short loc_7F822BDC
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F822BC4
		call	sub_7F82A34F
		jmp	short loc_7F822BD2
; ---------------------------------------------------------------------------

loc_7F822BC4:				; CODE XREF: sub_7F822894+327j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F822BD2:				; CODE XREF: sub_7F822894+32Ej
		mov	dword_7F838078,	0

loc_7F822BDC:				; CODE XREF: sub_7F822894+318j
		call	sub_7F82AB0B
		cmp	[ebp+var_C], 0
		jz	short loc_7F822BEF
		push	[ebp+var_C]
		call	sub_7F824500

loc_7F822BEF:				; CODE XREF: sub_7F822894+351j
		xor	esi, esi
		test	edi, edi
		jz	short loc_7F822C1F
		mov	ecx, [ebp+arg_4]
		mov	eax, [ecx]
		test	eax, eax
		jz	short loc_7F822C09
		push	eax
		call	sub_7F824500
		mov	ecx, [ebp+arg_4]
		mov	[ecx], esi

loc_7F822C09:				; CODE XREF: sub_7F822894+368j
		mov	ecx, [ebp+arg_8]
		xor	esi, esi
		mov	eax, [ecx]
		test	eax, eax
		jz	short loc_7F822C1F
		push	eax
		call	sub_7F824500
		mov	ecx, [ebp+arg_8]
		mov	[ecx], esi

loc_7F822C1F:				; CODE XREF: sub_7F822894+35Fj
					; sub_7F822894+37Ej
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F822894	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F822C2A	proc near		; CODE XREF: sub_7F822894+1D8p

arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	eax, dword_7F838078
		mov	ebp, esp
		push	ebx
		push	esi
		mov	ecx, [eax+200h]
		mov	bx, [ecx+8]
		push	edi
		mov	edi, [ebp+arg_8]
		mov	eax, [edi+4]
		push	eax
		lea	ecx, [eax-8Fh]
		cmp	cl, 1
		sbb	esi, esi
		call	sub_7F82E30B
		neg	esi
		mov	eax, [edi+4]
		cmp	al, 8Ch
		jz	loc_7F822DB2
		test	byte ptr [edi+10h], 10h
		jz	short loc_7F822C7B
		push	dword ptr [edi+18h]
		call	sub_7F82E30B
		push	0
		push	dword ptr [edi+18h]
		call	sub_7F8144A4

loc_7F822C7B:				; CODE XREF: sub_7F822C2A+3Dj
		mov	cx, [edi]
		cmp	bx, cx
		jb	short loc_7F822D01
		cmp	cx, [ebp+arg_4]
		jz	short loc_7F822D01
		test	cx, cx
		jz	short loc_7F822D01
		cmp	cx, 1
		jb	short loc_7F822CD7
		mov	eax, dword_7F838078
		mov	edx, [eax+200h]
		cmp	[edx+8], cx
		jbe	short loc_7F822CD7
		mov	ax, cx
		shr	ax, 6
		movzx	edx, ax
		and	edx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	eax, [eax+20Ch]
		mov	eax, [eax]
		mov	eax, [edx+eax]
		xor	edx, edx
		mov	dx, cx
		and	edx, 0FFh
		shl	edx, 5
		add	eax, edx
		jmp	short loc_7F822CD9
; ---------------------------------------------------------------------------

loc_7F822CD7:				; CODE XREF: sub_7F822C2A+68j
					; sub_7F822C2A+79j
		xor	eax, eax

loc_7F822CD9:				; CODE XREF: sub_7F822C2A+ABj
		test	eax, eax
		jz	short loc_7F822D01
		movzx	eax, cx
		push	eax
		push	[ebp+arg_0]
		call	sub_7F8245F2
		test	eax, eax
		jnz	short loc_7F822D01
		movzx	eax, word ptr [edi]
		push	eax
		push	[ebp+arg_0]
		call	sub_7F8245A4
		test	eax, eax
		jnz	loc_7F822DB2

loc_7F822D01:				; CODE XREF: sub_7F822C2A+57j
					; sub_7F822C2A+5Dj ...
		mov	cx, [edi+2]
		cmp	bx, cx
		jb	short loc_7F822D85
		cmp	cx, [ebp+arg_4]
		jz	short loc_7F822D85
		test	cx, cx
		jz	short loc_7F822D85
		cmp	cx, 1
		jb	short loc_7F822D5E
		mov	eax, dword_7F838078
		mov	edx, [eax+200h]
		cmp	[edx+8], cx
		jbe	short loc_7F822D5E
		mov	ax, cx
		shr	ax, 6
		movzx	edx, ax
		and	edx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	ebx, [eax+20Ch]
		mov	eax, [ebx]
		mov	eax, [edx+eax]
		xor	edx, edx
		mov	dx, cx
		and	edx, 0FFh
		shl	edx, 5
		add	eax, edx
		jmp	short loc_7F822D60
; ---------------------------------------------------------------------------

loc_7F822D5E:				; CODE XREF: sub_7F822C2A+EFj
					; sub_7F822C2A+100j
		xor	eax, eax

loc_7F822D60:				; CODE XREF: sub_7F822C2A+132j
		test	eax, eax
		jz	short loc_7F822D85
		movzx	eax, cx
		push	eax
		push	[ebp+arg_0]
		call	sub_7F8245F2
		test	eax, eax
		jnz	short loc_7F822D85
		movzx	eax, word ptr [edi+2]
		push	eax
		push	[ebp+arg_0]
		call	sub_7F8245A4
		test	eax, eax
		jnz	short loc_7F822DB2

loc_7F822D85:				; CODE XREF: sub_7F822C2A+DEj
					; sub_7F822C2A+E4j ...
		mov	eax, [edi+8]
		test	eax, eax
		jz	short loc_7F822D92
		push	eax
		call	sub_7F82E30B

loc_7F822D92:				; CODE XREF: sub_7F822C2A+160j
		cmp	byte ptr [edi+4], 90h
		jz	short loc_7F822DA5
		mov	eax, [edi+0Ch]
		test	eax, eax
		jz	short loc_7F822DA5
		push	eax
		call	sub_7F82E30B

loc_7F822DA5:				; CODE XREF: sub_7F822C2A+16Cj
					; sub_7F822C2A+173j
		push	dword ptr [edi+4]
		mov	cx, [edi+12h]
		push	ecx
		call	sub_7F82E35A

loc_7F822DB2:				; CODE XREF: sub_7F822C2A+33j
					; sub_7F822C2A+D1j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_7F822C2A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F822DB9	proc near		; CODE XREF: sub_7F822894+1E9p

Buffer		= dword	ptr -0Ch
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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_C]
		test	byte ptr [esi+10h], 10h
		jnz	loc_7F822F5B
		lea	ebx, [esi+4]
		mov	eax, [ebx]
		cmp	al, 8Ch
		jz	loc_7F822F54
		lea	edi, [esi+18h]
		mov	ecx, [edi]
		test	cl, 7Fh
		jnz	loc_7F822F54
		cmp	eax, 8Fh
		jz	loc_7F822E9A
		cmp	eax, 70616D80h
		jz	loc_7F822E9A
		lea	eax, [ebp+var_4]
		lea	edx, [ebp+Buffer]
		mov	[ebp+var_4], 8
		push	eax		; int
		push	ecx		; lDistanceToMove
		push	edx		; lpBuffer
		call	sub_7F8127E7
		test	eax, eax
		jz	short loc_7F822E2E
		cmp	eax, 200h
		jnz	short loc_7F822E22
		xor	eax, eax

loc_7F822E22:				; CODE XREF: sub_7F822DB9+65j
		inc	word_7F836C6C
		jmp	loc_7F822F5D
; ---------------------------------------------------------------------------

loc_7F822E2E:				; CODE XREF: sub_7F822DB9+5Ej
		mov	ecx, [ebx]
		cmp	ecx, [ebp+Buffer]
		jz	short loc_7F822E41
		inc	word_7F836C6C
		jmp	loc_7F822F5D
; ---------------------------------------------------------------------------

loc_7F822E41:				; CODE XREF: sub_7F822DB9+7Aj
		push	ecx
		call	sub_7F82DB71
		cmp	ax, 0FFFFh
		jnz	short loc_7F822E51
		mov	ax, [esi+12h]

loc_7F822E51:				; CODE XREF: sub_7F822DB9+92j
		test	ah, 8
		lea	eax, [esi+14h]
		push	eax
		push	dword ptr [eax]
		push	dword ptr [edi]
		push	0
		jz	short loc_7F822E67
		call	sub_7F816F26
		jmp	short loc_7F822E6C
; ---------------------------------------------------------------------------

loc_7F822E67:				; CODE XREF: sub_7F822DB9+A5j
		call	sub_7F81A9B5

loc_7F822E6C:				; CODE XREF: sub_7F822DB9+ACj
		test	eax, eax
		jz	short loc_7F822E9A
		cmp	eax, 1017h
		jz	short loc_7F822E9A
		cmp	eax, 1015h
		jz	short loc_7F822E8C
		cmp	eax, 1002h
		jz	short loc_7F822E8C
		cmp	eax, 200h
		jnz	short loc_7F822E8E

loc_7F822E8C:				; CODE XREF: sub_7F822DB9+C3j
					; sub_7F822DB9+CAj
		xor	eax, eax

loc_7F822E8E:				; CODE XREF: sub_7F822DB9+D1j
		inc	word_7F836C6C
		jmp	loc_7F822F5D
; ---------------------------------------------------------------------------

loc_7F822E9A:				; CODE XREF: sub_7F822DB9+36j
					; sub_7F822DB9+41j ...
		test	byte ptr [esi+11h], 80h
		mov	edi, [edi]
		jnz	short loc_7F822EBA
		cmp	byte ptr [ebx],	8Ch
		jz	short loc_7F822EBA
		add	esi, 14h
		mov	eax, [esi]
		and	eax, 7FFFFFFFh
		add	eax, 87h
		and	al, 80h
		jmp	short loc_7F822EBF
; ---------------------------------------------------------------------------

loc_7F822EBA:				; CODE XREF: sub_7F822DB9+E7j
					; sub_7F822DB9+ECj
		add	esi, 14h
		mov	eax, [esi]

loc_7F822EBF:				; CODE XREF: sub_7F822DB9+FFj
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jbe	short loc_7F822EFA

loc_7F822EC8:				; CODE XREF: sub_7F822DB9+13Fj
		mov	ebx, edi
		shr	ebx, 7
		push	ebx
		push	[ebp+arg_0]
		call	sub_7F8245F2
		test	eax, eax
		jnz	short loc_7F822F09
		push	ebx
		push	[ebp+arg_0]
		call	sub_7F8245A4
		test	eax, eax
		jnz	short loc_7F822F5D
		sub	[ebp+var_4], 80h
		add	edi, 80h
		cmp	[ebp+var_4], 0
		ja	short loc_7F822EC8

loc_7F822EFA:				; CODE XREF: sub_7F822DB9+10Dj
		movzx	eax, [ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		call	sub_7F8245A4
		jmp	short loc_7F822F5D
; ---------------------------------------------------------------------------

loc_7F822F09:				; CODE XREF: sub_7F822DB9+11Fj
		sub	edi, 80h
		mov	eax, [esi]
		add	[ebp+var_4], 80h
		add	eax, 87h
		and	al, 80h
		cmp	eax, [ebp+var_4]
		jbe	short loc_7F822F4D

loc_7F822F24:				; CODE XREF: sub_7F822DB9+192j
		mov	eax, edi
		sub	edi, 80h
		shr	eax, 7
		push	eax
		push	[ebp+arg_0]
		call	sub_7F8245A4
		add	[ebp+var_4], 80h
		mov	eax, [esi]
		add	eax, 87h
		and	al, 80h
		cmp	eax, [ebp+var_4]
		ja	short loc_7F822F24

loc_7F822F4D:				; CODE XREF: sub_7F822DB9+169j
		mov	eax, 100Bh
		jmp	short loc_7F822F5D
; ---------------------------------------------------------------------------

loc_7F822F54:				; CODE XREF: sub_7F822DB9+1Dj
					; sub_7F822DB9+2Bj
		inc	word_7F836C6C

loc_7F822F5B:				; CODE XREF: sub_7F822DB9+10j
		xor	eax, eax

loc_7F822F5D:				; CODE XREF: sub_7F822DB9+70j
					; sub_7F822DB9+83j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F822DB9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F822F66	proc near		; CODE XREF: sub_7F8223B3+FBp

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_A		= word ptr -0Ah
var_8		= dword	ptr -8
var_2		= word ptr -2
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
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		push	[ebp+arg_C]
		mov	[ebp+var_8], edi
		call	sub_7F8233BC
		push	33h
		push	edi
		push	edi
		call	sub_7F82A93C
		test	eax, eax
		jnz	short loc_7F822F93
		mov	esi, 101Eh
		jmp	loc_7F823367
; ---------------------------------------------------------------------------

loc_7F822F93:				; CODE XREF: sub_7F822F66+21j
		push	0
		push	4000h
		call	sub_7F82F03B
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	short loc_7F822FB0
		mov	esi, 400h
		jmp	loc_7F823367
; ---------------------------------------------------------------------------

loc_7F822FB0:				; CODE XREF: sub_7F822F66+3Ej
		cmp	dword_7F838078,	0
		mov	[ebp+var_2], 2000h
		mov	eax, [ebp+var_8]
		mov	[ebp+var_18], eax
		jz	short loc_7F822FCC
		mov	esi, 253h
		jmp	short loc_7F822FFC
; ---------------------------------------------------------------------------

loc_7F822FCC:				; CODE XREF: sub_7F822F66+5Dj
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		xor	esi, esi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	edx, [ebp+arg_0]
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edx

loc_7F822FFC:				; CODE XREF: sub_7F822F66+64j
		xor	ebx, ebx
		test	esi, esi
		jnz	loc_7F823367
		mov	ecx, dword_7F838078
		add	ecx, 200h
		mov	eax, [ecx]
		mov	ax, [eax+8]
		mov	[ebp+var_A], ax
		mov	dword_7F838098,	ebx
		movzx	edx, ax
		mov	dword_7F83809C,	edx
		mov	ecx, [ecx]
		mov	eax, [ecx+4]
		mov	[ebp+var_10], eax

loc_7F823033:				; CODE XREF: sub_7F822F66+184j
					; sub_7F822F66+21Dj ...
		push	1
		inc	edi
		push	edi
		push	[ebp+arg_8]
		call	sub_7F824640
		mov	edi, eax
		test	edi, edi
		jl	loc_7F8231CB
		movzx	eax, [ebp+var_A]
		cmp	edi, eax
		jge	loc_7F8231CB
		cmp	di, 1
		mov	cx, di
		jb	short loc_7F8230A1
		mov	eax, dword_7F838078
		mov	edx, [eax+200h]
		cmp	[edx+8], cx
		jbe	short loc_7F8230A1
		mov	ax, cx
		shr	ax, 6
		movzx	edx, ax
		and	edx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	esi, [eax+20Ch]
		mov	eax, [esi]
		mov	eax, [edx+eax]
		xor	edx, edx
		mov	dx, di
		and	edx, 0FFh
		shl	edx, 5
		add	eax, edx
		jmp	short loc_7F8230A3
; ---------------------------------------------------------------------------

loc_7F8230A1:				; CODE XREF: sub_7F822F66+F6j
					; sub_7F822F66+107j
		xor	eax, eax

loc_7F8230A3:				; CODE XREF: sub_7F822F66+139j
		mov	eax, [eax+4]
		movzx	edx, al
		cmp	edx, 80h
		jz	short loc_7F8230CD
		cmp	edx, 8Ch
		jl	short loc_7F8230D8
		cmp	edx, 8Dh
		jle	loc_7F82318E
		cmp	edx, 8Fh
		jmp	short loc_7F8230D2
; ---------------------------------------------------------------------------

loc_7F8230CD:				; CODE XREF: sub_7F822F66+149j
		cmp	eax, 70616D80h

loc_7F8230D2:				; CODE XREF: sub_7F822F66+165j
		jz	loc_7F82318E

loc_7F8230D8:				; CODE XREF: sub_7F822F66+151j
		dec	[ebp+var_2]
		mov	eax, [ebp+var_18]
		mov	[eax], cx
		add	[ebp+var_18], 2
		cmp	[ebp+var_2], bx
		jg	loc_7F823033
		mov	eax, dword_7F838078
		cmp	[eax+254h], bx
		jz	short loc_7F823105
		call	sub_7F82A34F
		jmp	short loc_7F823113
; ---------------------------------------------------------------------------

loc_7F823105:				; CODE XREF: sub_7F822F66+196j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F823113:				; CODE XREF: sub_7F822F66+19Dj
		push	[ebp+arg_C]
		push	2000h
		push	[ebp+var_8]
		push	[ebp+arg_0]
		mov	dword_7F838078,	ebx
		call	sub_7F82E3D3
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F823367
		mov	eax, [ebp+var_8]
		cmp	dword_7F838078,	ebx
		mov	[ebp+var_2], 2000h
		mov	[ebp+var_18], eax
		jz	short loc_7F823151
		mov	esi, 253h
		jmp	short loc_7F823181
; ---------------------------------------------------------------------------

loc_7F823151:				; CODE XREF: sub_7F822F66+1E2j
		mov	eax, [ebp+arg_0]
		xor	esi, esi
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	edx, [ebp+arg_0]
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edx

loc_7F823181:				; CODE XREF: sub_7F822F66+1E9j
		test	esi, esi
		jz	loc_7F823033
		jmp	loc_7F823367
; ---------------------------------------------------------------------------

loc_7F82318E:				; CODE XREF: sub_7F822F66+159j
					; sub_7F822F66:loc_7F8230D2j
		mov	eax, 1
		cmp	dword_7F83809C,	ebx
		jbe	short loc_7F8231B9
		push	64h
		sub	edx, edx
		inc	dword_7F838098
		mov	eax, dword_7F838098
		imul	eax, 64h
		div	dword_7F83809C
		push	eax
		call	sub_7F82A9CA

loc_7F8231B9:				; CODE XREF: sub_7F822F66+233j
		test	eax, eax
		jnz	loc_7F823033
		mov	esi, 101Eh
		jmp	loc_7F823367
; ---------------------------------------------------------------------------

loc_7F8231CB:				; CODE XREF: sub_7F822F66+DDj
					; sub_7F822F66+E9j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F8231E1
		call	sub_7F82A34F
		jmp	short loc_7F8231EF
; ---------------------------------------------------------------------------

loc_7F8231E1:				; CODE XREF: sub_7F822F66+272j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F8231EF:				; CODE XREF: sub_7F822F66+279j
		xor	edi, edi
		cmp	[ebp+var_2], 2000h
		mov	dword_7F838078,	edi
		jz	short loc_7F823221
		mov	eax, [ebp+arg_C]
		push	eax
		mov	ax, 2000h
		sub	ax, [ebp+var_2]
		push	eax
		push	[ebp+var_8]
		push	[ebp+arg_0]
		call	sub_7F82E3D3
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F823367

loc_7F823221:				; CODE XREF: sub_7F822F66+297j
		lea	eax, [ebp+var_14]
		mov	ecx, [ebp+arg_0]
		push	eax
		mov	edx, [ecx]
		push	dword ptr [edx+4]
		call	sub_7F815DA2
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F823367
		mov	eax, [ebp+var_14]
		and	al, 7Fh
		cmp	al, 1
		jnz	short loc_7F823248
		dec	[ebp+var_14]

loc_7F823248:				; CODE XREF: sub_7F822F66+2DDj
		mov	eax, [ebp+var_10]
		cmp	[ebp+var_14], eax
		jnb	short loc_7F823256
		mov	eax, [ebp+var_14]
		mov	[ebp+var_10], eax

loc_7F823256:				; CODE XREF: sub_7F822F66+2E8j
		call	sub_7F82AB0B
		push	34h
		push	0
		push	0
		call	sub_7F82A93C
		test	eax, eax
		jnz	short loc_7F823274
		mov	esi, 101Eh
		jmp	loc_7F823367
; ---------------------------------------------------------------------------

loc_7F823274:				; CODE XREF: sub_7F822F66+302j
		xor	edi, edi
		push	edi
		push	edi
		push	[ebp+arg_4]
		call	sub_7F824640
		cmp	eax, edi
		mov	ecx, eax
		jl	short loc_7F8232AB
		mov	eax, [ebp+var_10]
		cdq
		and	edx, 7Fh
		add	eax, edx
		sar	eax, 7
		mov	ebx, eax

loc_7F823294:				; CODE XREF: sub_7F822F66+343j
		cmp	ecx, ebx
		jge	short loc_7F8232AB
		inc	edi
		push	0
		inc	ecx
		push	ecx
		push	[ebp+arg_4]
		call	sub_7F824640
		mov	ecx, eax
		test	ecx, ecx
		jge	short loc_7F823294

loc_7F8232AB:				; CODE XREF: sub_7F822F66+31Ej
					; sub_7F822F66+330j
		mov	ebx, 0FFFFFFFEh
		push	0
		push	0
		mov	dword_7F83809C,	edi
		push	[ebp+arg_4]
		mov	dword_7F838098,	0
		call	sub_7F824640
		mov	edi, eax
		test	edi, edi
		jl	short loc_7F823338
		mov	eax, [ebp+var_10]
		cdq
		and	edx, 7Fh
		add	eax, edx
		sar	eax, 7
		mov	[ebp-0Ch], eax

loc_7F8232E1:				; CODE XREF: sub_7F822F66+3D0j
		cmp	edi, [ebp-0Ch]
		jge	short loc_7F823338
		mov	eax, ebx
		sub	eax, edi
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_7F8232F2
		inc	ebx
		jmp	short loc_7F823326
; ---------------------------------------------------------------------------

loc_7F8232F2:				; CODE XREF: sub_7F822F66+387j
		test	ebx, ebx
		jle	short loc_7F823321
		push	1		; int
		inc	ebx
		shl	ebx, 7
		push	1		; int
		push	ebx		; int
		mov	eax, [ebp-4]
		shl	eax, 7
		push	eax		; lDistanceToMove
		push	[ebp+arg_C]	; int
		push	[ebp+arg_0]	; int
		call	sub_7F823594
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F823321
		cmp	esi, 200h
		jnz	short loc_7F823367
		xor	esi, esi

loc_7F823321:				; CODE XREF: sub_7F822F66+38Ej
					; sub_7F822F66+3AFj
		mov	ebx, edi
		mov	[ebp-4], edi

loc_7F823326:				; CODE XREF: sub_7F822F66+38Aj
		push	0
		inc	edi
		push	edi
		push	[ebp+arg_4]
		call	sub_7F824640
		mov	edi, eax
		test	edi, edi
		jge	short loc_7F8232E1

loc_7F823338:				; CODE XREF: sub_7F822F66+36Aj
					; sub_7F822F66+37Ej
		test	ebx, ebx
		jle	short loc_7F823367
		push	1		; int
		inc	ebx
		shl	ebx, 7
		push	1		; int
		push	ebx		; int
		mov	eax, [ebp-4]
		shl	eax, 7
		push	eax		; lDistanceToMove
		push	[ebp+arg_C]	; int
		push	[ebp+arg_0]	; int
		call	sub_7F823594
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F823367
		cmp	esi, 200h
		jnz	short loc_7F823367
		xor	esi, esi

loc_7F823367:				; CODE XREF: sub_7F822F66+28j
					; sub_7F822F66+45j ...
		cmp	dword_7F838078,	0
		jz	short loc_7F82339E
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F823386
		call	sub_7F82A34F
		jmp	short loc_7F823394
; ---------------------------------------------------------------------------

loc_7F823386:				; CODE XREF: sub_7F822F66+417j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F823394:				; CODE XREF: sub_7F822F66+41Ej
		mov	dword_7F838078,	0

loc_7F82339E:				; CODE XREF: sub_7F822F66+408j
		call	sub_7F82AB0B
		cmp	[ebp+var_8], 0
		jz	short loc_7F8233B1
		push	[ebp+var_8]
		call	sub_7F82F149

loc_7F8233B1:				; CODE XREF: sub_7F822F66+441j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F822F66	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8233BC	proc near		; CODE XREF: sub_7F822F66+11p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		mov	ebx, 1
		xor	edi, edi
		mov	esi, [esp+0Ch+arg_0]
		push	edi
		push	ebx
		push	4D504981h
		push	esi
		call	sub_7F82B9DE
		push	edi
		push	ebx
		push	64694881h
		push	esi
		call	sub_7F82B9DE
		push	edi
		push	ebx
		push	74754F8Bh
		push	esi
		call	sub_7F82B9DE
		push	edi
		push	ebx
		push	46534180h
		push	esi
		call	sub_7F82B9DE
		push	edi
		push	ebx
		push	53464180h
		push	esi
		call	sub_7F82B9DE
		push	edi
		push	ebx
		push	444C4189h
		push	esi
		call	sub_7F82B9DE
		push	edi
		push	ebx
		push	0FF00008Ah
		push	esi
		call	sub_7F82B9DE
		push	edi
		push	ebx
		push	74634180h
		push	esi
		call	sub_7F82B9DE
		push	edi
		push	ebx
		push	20634D80h
		push	esi
		call	sub_7F82B9DE
		push	edi
		push	ebx
		push	73434D80h
		push	esi
		call	sub_7F82B9DE
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_7F8233BC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F823452	proc near		; CODE XREF: sub_7F8223B3+119p
					; sub_7F822552+3Bp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_4]
		test	esi, esi
		jz	short loc_7F823465
		push	[ebp+arg_0]
		call	sub_7F82DA9A

loc_7F823465:				; CODE XREF: sub_7F823452+9j
		push	0
		push	esi
		push	[ebp+arg_0]
		call	sub_7F81D910
		test	eax, eax
		jnz	short loc_7F82347F
		push	0
		push	esi
		push	[ebp+arg_0]
		call	sub_7F829880

loc_7F82347F:				; CODE XREF: sub_7F823452+20j
		pop	esi
		pop	ebp
		retn	8
sub_7F823452	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F823484(LPCSTR pSrc, LPCSTR lpString, int)
sub_7F823484	proc near		; CODE XREF: sub_7F8223B3+183p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
pSrc		= dword	ptr  8
lpString	= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		mov	[ebp+var_8], eax
		push	edi
		mov	[ebp+var_4], eax
		push	34h
		push	eax
		push	eax
		call	sub_7F82A93C
		test	eax, eax
		jnz	short loc_7F8234AB
		mov	edi, 101Eh
		jmp	loc_7F82355B
; ---------------------------------------------------------------------------

loc_7F8234AB:				; CODE XREF: sub_7F823484+1Bj
		lea	eax, [ebp+var_8]
		push	eax		; int
		push	[ebp+arg_8]	; int
		push	1		; int
		push	[ebp+pSrc]	; pSrc
		call	sub_7F8225B6
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F82355B
		lea	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		push	eax
		mov	edx, [ecx]
		push	dword ptr [edx+4]
		call	sub_7F815DA2
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F82355B
		mov	eax, [ebp+var_C]
		and	al, 7Fh
		cmp	al, 1
		jnz	short loc_7F8234E9
		dec	[ebp+var_C]

loc_7F8234E9:				; CODE XREF: sub_7F823484+60j
		xor	esi, esi
		lea	eax, [ebp+var_4]
		push	esi		; int
		push	esi		; int
		push	eax		; int
		push	20Ah		; __int16
		push	esi		; int
		push	esi		; int
		push	[ebp+lpString]	; lpString
		call	sub_7F8207A6
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F82355B
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	esi		; int
		push	esi		; int
		mov	edx, [ecx]
		and	word ptr [edx+264h], 0BFFFh
		mov	eax, [ebp+var_C]
		mov	dword_7F838098,	esi
		push	[ebp+var_C]	; int
		push	200h		; lDistanceToMove
		push	[ebp+var_4]	; int
		push	[ebp+var_8]	; int
		shr	eax, 7
		mov	dword_7F83809C,	eax
		call	sub_7F823594
		call	sub_7F82AB0B
		push	[ebp+var_4]
		call	sub_7F82DBC2
		cmp	eax, esi
		mov	edi, eax
		jnz	short loc_7F82355B
		push	1
		push	[ebp+var_4]
		call	sub_7F823452
		mov	edi, eax

loc_7F82355B:				; CODE XREF: sub_7F823484+22j
					; sub_7F823484+3Cj ...
		call	sub_7F82AB0B
		cmp	[ebp+var_8], 0
		jz	short loc_7F823575
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F82285E
		test	edi, edi
		jnz	short loc_7F823575
		mov	edi, eax

loc_7F823575:				; CODE XREF: sub_7F823484+E0j
					; sub_7F823484+EDj
		cmp	[ebp+var_4], 0
		jz	short loc_7F82358A
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_7F820C0E
		test	edi, edi
		jnz	short loc_7F82358A
		mov	edi, eax

loc_7F82358A:				; CODE XREF: sub_7F823484+F5j
					; sub_7F823484+102j
		mov	eax, edi
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F823484	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F823594(int, int, LONG lDistanceToMove, int, int, int)
sub_7F823594	proc near		; CODE XREF: sub_7F822F66+3A6p
					; sub_7F822F66+3ECp ...

Buffer		= 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_6		= word ptr -6
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
lDistanceToMove	= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 20h
		mov	ecx, [eax]
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	edx, [ecx+4]
		mov	[ebp+var_14], edx
		mov	dword_7F838080,	edx
		mov	ebx, [eax]
		cmp	[ebp+arg_14], esi
		mov	ecx, [ebx]
		mov	[ebp+var_10], ecx
		jz	short loc_7F8235CA
		mov	eax, [ecx+50h]
		sub	eax, [ecx+10h]
		shr	eax, 5
		mov	[ebp+var_6], ax

loc_7F8235CA:				; CODE XREF: sub_7F823594+27j
					; sub_7F823594+1FFj
		mov	eax, [ebp+lDistanceToMove]
		cmp	[ebp+arg_C], eax
		jbe	loc_7F82379E
		mov	eax, [ebp+arg_C]
		sub	eax, [ebp+lDistanceToMove]
		cmp	eax, 8
		jb	short loc_7F8235E6
		mov	eax, 8

loc_7F8235E6:				; CODE XREF: sub_7F823594+4Bj
		mov	edi, eax
		lea	ecx, [ebp+var_18]
		push	ecx		; int
		mov	[ebp+var_18], eax
		push	[ebp+lDistanceToMove] ;	lDistanceToMove
		mov	eax, [ebp+var_14]
		mov	dword_7F838080,	eax
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		call	sub_7F8127E7
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F82379E
		cmp	[ebp+var_18], edi
		jnz	loc_7F82379E
		mov	ebx, [ebp+Buffer]
		mov	edi, [ebp+var_1C]
		push	ebx
		call	sub_7F82DB71
		mov	[ebp+var_2], ax
		cmp	ax, 0FFFFh
		jnz	short loc_7F823632
		mov	[ebp+var_2], 0

loc_7F823632:				; CODE XREF: sub_7F823594+96j
		test	byte ptr [ebp+var_2+1],	8
		jz	short loc_7F823657
		mov	ecx, 0
		lea	eax, [ebp+var_C]
		cmp	[ebp+arg_14], 1
		adc	ecx, 0FFFFFFFFh
		push	eax
		and	ecx, [ebp+arg_0]
		push	edi
		push	[ebp+lDistanceToMove]
		push	ecx
		call	sub_7F816F26
		jmp	short loc_7F823686
; ---------------------------------------------------------------------------

loc_7F823657:				; CODE XREF: sub_7F823594+A2j
		cmp	bl, 8Fh
		jz	loc_7F823753
		cmp	bl, 8Ch
		jz	loc_7F823753
		mov	ecx, 0
		lea	eax, [ebp+var_C]
		cmp	[ebp+arg_14], 1
		adc	ecx, 0FFFFFFFFh
		push	eax
		and	ecx, [ebp+arg_0]
		push	edi
		push	[ebp+lDistanceToMove]
		push	ecx
		call	sub_7F81A9B5

loc_7F823686:				; CODE XREF: sub_7F823594+C1j
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F82369D
		cmp	esi, 1017h
		jnz	loc_7F823723
		xor	esi, esi
		mov	edi, [ebp+var_C]

loc_7F82369D:				; CODE XREF: sub_7F823594+F6j
		test	bl, bl
		jz	loc_7F823753
		test	ebx, 0FFFFFF00h
		jz	loc_7F823753
		lea	eax, [ebp+var_C]
		push	eax
		push	0
		push	0
		push	0
		push	ebx
		push	[ebp+arg_4]
		call	sub_7F82D114
		cmp	eax, 1001h
		mov	esi, eax
		jz	short loc_7F8236F5
		test	esi, esi
		jnz	loc_7F82379E
		cmp	[ebp+arg_10], 0
		jnz	short loc_7F823755
		cmp	[ebp+var_C], edi
		jnb	short loc_7F823755
		push	0		; int
		push	0		; nNumberOfBytesToRead
		push	0		; int
		push	ebx		; int
		push	[ebp+arg_4]	; int
		call	sub_7F82D39F
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F823755

loc_7F8236F5:				; CODE XREF: sub_7F823594+137j
		push	edi		; int
		push	[ebp+lDistanceToMove] ;	lDistanceToMove
		push	[ebp+var_14]	; int
		push	ebx		; int
		push	[ebp+arg_4]	; int
		call	sub_7F8237B9
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F8237A9
		push	dword ptr [ebp+var_2]
		push	ebx
		push	[ebp+arg_4]
		call	sub_7F82CF24
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F82379E
		jmp	short loc_7F823755
; ---------------------------------------------------------------------------

loc_7F823723:				; CODE XREF: sub_7F823594+FEj
		xor	esi, esi
		cmp	[ebp+arg_14], esi
		jz	short loc_7F823753
		mov	eax, [ebp+lDistanceToMove]
		mov	ecx, [ebp+var_10]
		cmp	[ecx+10h], eax
		ja	short loc_7F823753
		movzx	edx, [ebp+var_6]
		mov	eax, [ecx+50h]
		mov	ecx, edx
		shl	ecx, 5
		add	ecx, eax
		cmp	ecx, [ebp+lDistanceToMove]
		jbe	short loc_7F823753
		sub	edx, 4
		shl	edx, 5
		add	eax, edx
		mov	[ebp+lDistanceToMove], eax

loc_7F823753:				; CODE XREF: sub_7F823594+C6j
					; sub_7F823594+CFj ...
		xor	edi, edi

loc_7F823755:				; CODE XREF: sub_7F823594+145j
					; sub_7F823594+14Aj ...
		add	edi, 87h
		mov	eax, edi
		and	al, 80h
		add	[ebp+lDistanceToMove], eax
		mov	eax, 1
		cmp	dword_7F83809C,	0
		jbe	short loc_7F823791
		shr	edi, 7
		push	64h
		sub	edx, edx
		add	dword_7F838098,	edi
		mov	eax, dword_7F838098
		imul	eax, 64h
		div	dword_7F83809C
		push	eax
		call	sub_7F82A9CA

loc_7F823791:				; CODE XREF: sub_7F823594+1DAj
		test	eax, eax
		jnz	loc_7F8235CA
		mov	esi, 101Eh

loc_7F82379E:				; CODE XREF: sub_7F823594+3Cj
					; sub_7F823594+73j ...
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
; ---------------------------------------------------------------------------

loc_7F8237A9:				; CODE XREF: sub_7F823594+175j
		xor	eax, eax
		push	eax		; int
		push	eax		; nNumberOfBytesToRead
		push	eax		; int
		push	ebx		; int
		push	[ebp+arg_4]	; int
		call	sub_7F82D39F
		jmp	short loc_7F82379E
sub_7F823594	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F8237B9(int, int, int, LONG lDistanceToMove, int)
sub_7F8237B9	proc near		; CODE XREF: sub_7F823594+16Cp

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
lpBuffer	= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
lDistanceToMove	= dword	ptr  14h
nNumberOfBytesToRead= dword ptr	 18h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		lea	eax, [ebp+var_C]
		push	esi
		xor	ebx, ebx
		mov	[ebp+var_C], 0F000h
		push	edi
		push	eax
		xor	edi, edi
		call	sub_7F81AF32
		mov	[ebp+lpBuffer],	eax
		cmp	eax, ebx
		jnz	short loc_7F8237E4
		mov	edi, 400h
		jmp	short loc_7F823857
; ---------------------------------------------------------------------------

loc_7F8237E4:				; CODE XREF: sub_7F8237B9+22j
		mov	esi, [ebp+nNumberOfBytesToRead]
		cmp	[ebp+var_C], esi
		jnb	short loc_7F823802
		push	0		; int
		push	esi		; nNumberOfBytesToRead
		push	0		; int
		push	[ebp+arg_4]	; int
		push	[ebp+arg_0]	; int
		call	sub_7F82D39F
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F823857

loc_7F823802:				; CODE XREF: sub_7F8237B9+31j
		add	[ebp+lDistanceToMove], 8
		test	esi, esi
		jz	short loc_7F823857

loc_7F82380A:				; CODE XREF: sub_7F8237B9+9Cj
		mov	eax, [ebp+arg_8]
		mov	dword_7F838080,	eax
		mov	eax, [ebp+var_C]
		cmp	eax, esi
		jb	short loc_7F82381B
		mov	eax, esi

loc_7F82381B:				; CODE XREF: sub_7F8237B9+5Ej
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_8]
		push	eax		; int
		push	[ebp+lDistanceToMove] ;	lDistanceToMove
		push	[ebp+lpBuffer]	; lpBuffer
		call	sub_7F8127E7
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F823857
		push	[ebp+lpBuffer]	; int
		push	[ebp+var_8]	; nNumberOfBytesToRead
		push	ebx		; int
		push	[ebp+arg_4]	; int
		push	[ebp+arg_0]	; int
		call	sub_7F82D39F
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F823857
		mov	eax, [ebp+var_8]
		add	ebx, eax
		add	[ebp+lDistanceToMove], eax
		sub	esi, eax
		jnz	short loc_7F82380A

loc_7F823857:				; CODE XREF: sub_7F8237B9+29j
					; sub_7F8237B9+47j ...
		cmp	[ebp+lpBuffer],	0
		jz	short loc_7F823865
		push	[ebp+lpBuffer]
		call	sub_7F82F149

loc_7F823865:				; CODE XREF: sub_7F8237B9+A2j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F8237B9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F823870(LPCSTR lpString, __int16)
sub_7F823870	proc near		; CODE XREF: sub_7F8207A6+1B7p

pSrc		= byte ptr -224h
var_223		= byte ptr -223h
TempFileName	= byte ptr -124h
var_123		= byte ptr -123h
var_24		= dword	ptr -24h
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
hCursor		= dword	ptr -0Ch
hWndParent	= dword	ptr -8
var_4		= dword	ptr -4
lpString	= dword	ptr  8
arg_4		= word ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 224h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	7F02h		; lpCursorName
		push	ebx		; hInstance
		lea	edi, [ebp+var_223]
		call	ds:LoadCursorA
		push	eax		; hCursor
		call	ds:SetCursor
		mov	edx, 3Fh
		mov	[ebp+hCursor], eax
		xor	eax, eax
		mov	ecx, edx
		mov	[ebp+pSrc], bl
		rep stosd
		stosw
		stosb
		lea	edi, [ebp+var_123]
		mov	ecx, edx
		mov	[ebp+TempFileName], bl
		rep stosd
		stosw
		stosb
		mov	[ebp+var_4], ebx
		call	sub_7F82449E
		mov	eax, [eax+0Ch]
		test	eax, eax
		jz	short loc_7F8238D7
		mov	eax, [eax]
		mov	[ebp+hWndParent], eax
		jmp	short loc_7F8238DE
; ---------------------------------------------------------------------------

loc_7F8238D7:				; CODE XREF: sub_7F823870+5Ej
		mov	[ebp+hWndParent], 0

loc_7F8238DE:				; CODE XREF: sub_7F823870+65j
		test	byte ptr [ebp+arg_4], 1
		jz	short loc_7F823934
		push	20h		; uType
		call	ds:MessageBeep
		movzx	eax, [ebp+arg_4]
		mov	si, [ebp+arg_4]
		push	eax		; dwInitParam
		and	si, 2
		push	offset sub_7F823B75 ; lpDialogFunc
		push	[ebp+hWndParent] ; hWndParent
		jz	short loc_7F82390A
		push	1FA4h
		jmp	short loc_7F82390F
; ---------------------------------------------------------------------------

loc_7F82390A:				; CODE XREF: sub_7F823870+91j
		push	1F40h		; lpTemplateName

loc_7F82390F:				; CODE XREF: sub_7F823870+98j
		push	dword_7F833F18	; hInstance
		call	ds:DialogBoxParamA
		cmp	ax, 1
		jz	short loc_7F823934
		cmp	si, 1
		sbb	eax, eax
		and	eax, 13h
		add	eax, 100Bh
		jmp	loc_7F823B6C
; ---------------------------------------------------------------------------

loc_7F823934:				; CODE XREF: sub_7F823870+72j
					; sub_7F823870+AFj
		mov	edi, [ebp+lpString]
		push	edi		; lpString
		call	ds:lstrlenA
		push	eax		; cchLength
		push	edi		; lpsz
		push	edi		; int
		call	sub_7F8176EB
		mov	al, [edi]
		cmp	al, 5Ch
		jz	short loc_7F8239CA
		movzx	ax, al
		sub	ax, 40h
		movsx	ecx, ax
		push	ecx
		call	sub_7F815671
		lea	ecx, [ebp+var_24]
		mov	[ebp+var_10], eax
		push	ecx		; int
		push	edi		; pSrc
		call	sub_7F8155EA
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F823B15
		mov	ecx, 3
		mov	eax, [ebp+var_18]
		sub	edx, edx
		div	ecx
		mov	ecx, [ebp+var_18]
		add	ecx, eax
		cmp	ecx, [ebp+var_10]
		jbe	short loc_7F8239CA
		push	40h		; uType
		call	ds:MessageBeep
		push	41h		; char
		push	offset aToContinueWith ; "To continue with the verification/repai"...
		push	offset aMessageFileVer ; "Message file verification/repair may re"...
		push	offset aMicrosoftMai_0 ; "Microsoft Mail"
		call	sub_7F815037
		cmp	ax, 2
		jnz	short loc_7F8239CA
		mov	ax, [ebp+arg_4]
		and	ax, 2
		cmp	ax, 1
		sbb	esi, esi
		and	esi, 13h
		add	esi, 100Bh
		jmp	loc_7F823B15
; ---------------------------------------------------------------------------

loc_7F8239CA:				; CODE XREF: sub_7F823870+DAj
					; sub_7F823870+118j ...
		push	1		; int
		push	1Bh		; __int16
		push	offset aPressEscToCanc ; "Press	ESC to cancel."
		push	offset aValidatingRepa ; "Validating/repairing message file"
		push	[ebp+hWndParent] ; HWND
		call	sub_7F82B14A
		mov	ebx, eax
		lea	ecx, [ebp+pSrc]
		mov	eax, 100h
		lea	edx, [ebp+TempFileName]
		push	eax		; int
		push	ecx		; lpString
		push	eax		; int
		push	edx		; lpTempFileName
		push	edi		; int
		call	sub_7F823D4A
		test	eax, eax
		jnz	short loc_7F823A1D
		mov	ax, [ebp+arg_4]
		and	ax, 2
		cmp	ax, 1
		sbb	esi, esi
		and	esi, 13h
		add	esi, 100Bh
		jmp	loc_7F823B15
; ---------------------------------------------------------------------------

loc_7F823A1D:				; CODE XREF: sub_7F823870+18Fj
		test	ebx, ebx
		jz	short loc_7F823A46
		push	0
		mov	eax, dword_7F836764
		push	offset sub_7F823C13
		push	4
		push	eax
		call	sub_7F824021
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	short loc_7F823A46
		mov	esi, 400h
		jmp	loc_7F823B15
; ---------------------------------------------------------------------------

loc_7F823A46:				; CODE XREF: sub_7F823870+1AFj
					; sub_7F823870+1CAj
		lea	eax, [ebp+TempFileName]
		push	eax		; lpString
		push	edi		; int
		call	sub_7F8223B3
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F823B09
		lea	eax, [ebp+pSrc]
		push	eax		; pSrc
		call	sub_7F8155A8
		cmp	eax, 202h
		jz	short loc_7F823AA3
		push	100h		; int
		lea	eax, [ebp+pSrc]
		push	eax		; lpString
		push	0		; int
		push	0		; lpTempFileName
		push	edi		; int
		call	sub_7F823D4A
		test	eax, eax
		jnz	short loc_7F823AA3
		mov	ax, [ebp+arg_4]
		and	ax, 2
		cmp	ax, 1
		sbb	esi, esi
		and	esi, 13h
		add	esi, 100Bh
		jmp	short loc_7F823B09
; ---------------------------------------------------------------------------

loc_7F823AA3:				; CODE XREF: sub_7F823870+1FEj
					; sub_7F823870+218j
		lea	eax, [ebp+pSrc]
		push	eax		; LPCSTR
		push	edi		; pSrc
		call	sub_7F81554E
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F823AE9
		push	edi		; LPCSTR
		lea	eax, [ebp+TempFileName]
		push	eax		; pSrc
		call	sub_7F81554E
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F823B15
		push	10h		; uType
		call	ds:MessageBeep
		push	10h		; char
		push	offset aPleaseContactY ; "Please contact your system administrato"...
		push	offset aMailCouldNotSu ; "Mail could not successfully backup your"...
		push	offset aMicrosoftMai_0 ; "Microsoft Mail"
		call	sub_7F815037
		jmp	short loc_7F823B15
; ---------------------------------------------------------------------------

loc_7F823AE9:				; CODE XREF: sub_7F823870+244j
		push	10h		; uType
		call	ds:MessageBeep
		push	10h		; char
		push	offset aPleaseExitAndR ; "Please Exit and restart Mail.	 If mail "...
		push	offset aMailCouldNotSu ; "Mail could not successfully backup your"...
		push	offset aMicrosoftMai_0 ; "Microsoft Mail"
		call	sub_7F815037
		jmp	short loc_7F823B15
; ---------------------------------------------------------------------------

loc_7F823B09:				; CODE XREF: sub_7F823870+1E7j
					; sub_7F823870+231j
		lea	eax, [ebp+TempFileName]
		push	eax		; pSrc
		call	sub_7F81550B

loc_7F823B15:				; CODE XREF: sub_7F823870+FEj
					; sub_7F823870+155j ...
		test	ebx, ebx
		jz	short loc_7F823B39
		cmp	[ebp+var_4], 0
		jz	short loc_7F823B27
		push	[ebp+var_4]
		call	sub_7F8240DB

loc_7F823B27:				; CODE XREF: sub_7F823870+2ADj
		call	sub_7F82B8C4
		cmp	eax, 1
		sbb	eax, eax
		neg	eax
		push	eax
		call	sub_7F82B8D3

loc_7F823B39:				; CODE XREF: sub_7F823870+2A7j
		test	esi, esi
		jz	short loc_7F823B61
		test	byte ptr [ebp+arg_4], 2
		jz	short loc_7F823B61
		push	10h		; uType
		call	ds:MessageBeep
		push	10h		; char
		push	offset aPleaseContactY ; "Please contact your system administrato"...
		push	offset aInconsistancie ; "Inconsistancies in your message file co"...
		push	offset aMicrosoftMai_0 ; "Microsoft Mail"
		call	sub_7F815037

loc_7F823B61:				; CODE XREF: sub_7F823870+2CBj
					; sub_7F823870+2D1j
		push	[ebp+hCursor]	; hCursor
		call	ds:SetCursor
		mov	eax, esi

loc_7F823B6C:				; CODE XREF: sub_7F823870+BFj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F823870	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; BOOL __stdcall sub_7F823B75(HWND, UINT, WPARAM, LPARAM)
sub_7F823B75	proc near		; DATA XREF: sub_7F823870+89o

hWnd		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	eax, [esp+arg_4]
		mov	ebp, esp
		cmp	eax, 110h
		push	esi
		jz	short loc_7F823B8F
		cmp	eax, 111h
		jz	short loc_7F823BEB
		xor	eax, eax
		jmp	short loc_7F823C0E
; ---------------------------------------------------------------------------

loc_7F823B8F:				; CODE XREF: sub_7F823B75+Dj
		push	offset aMicrosoftMai_0 ; "Microsoft Mail"
		mov	esi, [ebp+hWnd]
		push	esi		; hWnd
		call	ds:SetWindowTextA
		test	byte ptr [ebp+arg_C], 2
		jz	short loc_7F823BBC
		push	offset aAnInconsistenc ; "An inconsistency has been detected in	t"...
		push	1FA6h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SetDlgItemTextA
		push	offset aRepairNow ; "&Repair Now"
		jmp	short loc_7F823BD2
; ---------------------------------------------------------------------------

loc_7F823BBC:				; CODE XREF: sub_7F823B75+2Dj
		push	offset aDoYouWantToHav ; "Do you want to have your message file	c"...
		push	1FA6h		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SetDlgItemTextA
		push	offset aCheckFile ; "&Check File"

loc_7F823BD2:				; CODE XREF: sub_7F823B75+45j
		push	1		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SetDlgItemTextA
		push	offset aCancel	; "Cancel"
		push	2		; nIDDlgItem
		push	esi		; hDlg
		call	ds:SetDlgItemTextA
		jmp	short loc_7F823C09
; ---------------------------------------------------------------------------

loc_7F823BEB:				; CODE XREF: sub_7F823B75+14j
		movzx	eax, word ptr [ebp+arg_8]
		cmp	eax, 1
		jl	short loc_7F823BF9
		cmp	eax, 2
		jle	short loc_7F823BFD

loc_7F823BF9:				; CODE XREF: sub_7F823B75+7Dj
		xor	eax, eax
		jmp	short loc_7F823C0E
; ---------------------------------------------------------------------------

loc_7F823BFD:				; CODE XREF: sub_7F823B75+82j
		push	[ebp+arg_8]	; nResult
		push	[ebp+hWnd]	; hDlg
		call	ds:EndDialog

loc_7F823C09:				; CODE XREF: sub_7F823B75+74j
		mov	eax, 1

loc_7F823C0E:				; CODE XREF: sub_7F823B75+18j
					; sub_7F823B75+86j
		pop	esi
		pop	ebp
		retn	10h
sub_7F823B75	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F823C13	proc near		; DATA XREF: sub_7F8207A6+38Ao
					; sub_7F823870+1B8o

String1		= byte ptr -104h
var_103		= byte ptr -103h
var_4		= dword	ptr -4
arg_4		= byte ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 104h
		push	ebx
		push	esi
		push	edi
		call	sub_7F82449E
		test	[ebp+arg_4], 4
		mov	[ebp+var_4], eax
		jz	loc_7F823D3F
		mov	esi, [ebp+arg_8]
		movzx	eax, word ptr [esi+6]
		cmp	eax, 1
		jz	short loc_7F823C54
		cmp	eax, 2
		jz	loc_7F823D1B
		cmp	eax, 3
		jz	loc_7F823D12
		jmp	loc_7F823D2A
; ---------------------------------------------------------------------------

loc_7F823C54:				; CODE XREF: sub_7F823C13+28j
		lea	edi, [ebp+var_103]
		xor	eax, eax
		mov	[ebp+String1], 0
		mov	ecx, 3Fh
		rep stosd
		stosw
		mov	di, [esi+4]
		mov	ecx, 1
		mov	ax, 0Bh
		cmp	ax, di
		adc	ecx, 0FFFFFFFFh
		cmp	ecx, 1
		sbb	eax, eax
		and	al, 0CFh
		add	eax, 32h
		sub	di, ax
		cmp	ecx, 1
		sbb	ebx, ebx
		and	ebx, 3
		movzx	eax, di
		add	bx, 7
		cmp	ecx, 1
		sbb	ecx, ecx
		and	ecx, 7
		add	ecx, 41Eh
		add	ecx, eax
		push	ecx
		call	sub_7F82AC7E
		movzx	ecx, bx
		push	eax
		push	ecx
		movzx	eax, di
		inc	eax
		mov	ecx, [ebp+var_4]
		push	eax
		mov	eax, [ecx+18h]
		and	eax, 8
		cmp	eax, 1
		sbb	eax, eax
		and	eax, 2
		add	eax, 41Ah
		push	eax
		call	sub_7F82AC7E
		push	eax
		push	41Dh
		call	sub_7F82AC7E
		push	eax		; LPCSTR
		lea	ecx, [ebp+String1]
		push	ecx		; LPSTR
		call	ds:wsprintfA
		movsx	ecx, word ptr [esi+0Ah]
		add	esp, 18h
		movsx	edx, word ptr [esi+8]
		push	ecx
		push	edx
		call	sub_7F82B72B
		push	0		; LPCSTR
		lea	ecx, [ebp+String1]
		push	ecx		; lpString1
		call	sub_7F82B7B5
		jmp	short loc_7F823D2A
; ---------------------------------------------------------------------------

loc_7F823D12:				; CODE XREF: sub_7F823C13+36j
		call	sub_7F82B8C4
		test	eax, eax
		jnz	short loc_7F823D3F

loc_7F823D1B:				; CODE XREF: sub_7F823C13+2Dj
		movsx	eax, word ptr [esi+0Ah]
		movsx	ecx, word ptr [esi+8]
		push	eax
		push	ecx
		call	sub_7F82B72B

loc_7F823D2A:				; CODE XREF: sub_7F823C13+3Cj
					; sub_7F823C13+FDj
		call	sub_7F82B8C4
		cmp	eax, 1
		mov	eax, 0
		adc	eax, 0FFFFFFFFh
		and	eax, 2
		jmp	short loc_7F823D41
; ---------------------------------------------------------------------------

loc_7F823D3F:				; CODE XREF: sub_7F823C13+18j
					; sub_7F823C13+106j
		xor	eax, eax

loc_7F823D41:				; CODE XREF: sub_7F823C13+12Aj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F823C13	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F823D4A(int, LPSTR	lpTempFileName,	int, LPCSTR lpString, int)
sub_7F823D4A	proc near		; CODE XREF: sub_7F823870+188p
					; sub_7F823870+211p

String		= byte ptr -118h
var_117		= byte ptr -117h
String1		= byte ptr -18h
var_17		= byte ptr -17h
String2		= byte ptr -8
var_7		= byte ptr -7
var_2		= word ptr -2
arg_0		= dword	ptr  8
lpTempFileName	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
lpString	= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		xor	edx, edx
		mov	ebp, esp
		sub	esp, 118h
		xor	eax, eax
		push	ebx
		push	esi
		mov	[ebp+String2], dl
		push	edi
		mov	esi, 202h
		lea	edi, [ebp+var_7]
		stosd
		lea	edi, [ebp+var_17]
		mov	[ebp+String1], dl
		stosd
		stosd
		stosd
		lea	edi, [ebp+var_117]
		mov	ecx, 3Fh
		mov	[ebp+String], dl
		rep stosd
		stosw
		push	0Dh		; int
		lea	ecx, [ebp+String]
		stosb
		mov	[ebp+var_2], dx
		lea	edi, [ebp+String1]
		push	edi		; int
		push	100h		; int
		push	ecx		; lpString
		push	[ebp+arg_0]	; int
		call	sub_7F815497
		test	eax, eax
		jz	short loc_7F823DAE
		xor	eax, eax
		jmp	loc_7F823E9F
; ---------------------------------------------------------------------------

loc_7F823DAE:				; CODE XREF: sub_7F823D4A+5Bj
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jz	short loc_7F823DD8
		push	eax
		lea	edx, [ebp+String]
		push	[ebp+lpTempFileName]
		push	edx
		call	sub_7F81ABAD
		push	[ebp+lpTempFileName] ; lpTempFileName
		call	sub_7F82AB76
		test	eax, eax
		jnz	short loc_7F823DD8
		xor	eax, eax
		jmp	loc_7F823E9F
; ---------------------------------------------------------------------------

loc_7F823DD8:				; CODE XREF: sub_7F823D4A+69j
					; sub_7F823D4A+85j
		mov	eax, [ebp+arg_10]
		test	eax, eax
		jz	loc_7F823E92
		push	eax
		mov	ebx, [ebp+lpString]
		push	ebx
		lea	eax, [ebp+String]
		push	eax
		call	sub_7F81ABAD
		cmp	[ebp+String1], 0
		jz	short loc_7F823E05

loc_7F823DFA:				; CODE XREF: sub_7F823D4A+B9j
		cmp	byte ptr [edi],	2Eh
		jz	short loc_7F823E05
		inc	edi
		cmp	byte ptr [edi],	0
		jnz	short loc_7F823DFA

loc_7F823E05:				; CODE XREF: sub_7F823D4A+AEj
					; sub_7F823D4A+B3j
		push	offset a_bak	; ".BAK"
		push	edi		; lpString1
		call	ds:lstrcpyA
		push	ebx		; lpString
		mov	esi, ds:lstrlenA
		call	esi ; lstrlenA
		add	eax, ebx
		cmp	ebx, eax
		jnb	short loc_7F823E2A
		cmp	byte ptr [eax-1], 5Ch
		jz	short loc_7F823E2A
		mov	byte ptr [eax],	5Ch
		inc	eax

loc_7F823E2A:				; CODE XREF: sub_7F823D4A+D4j
					; sub_7F823D4A+DAj
		lea	ecx, [ebp+String1]
		push	ecx		; lpString2
		push	eax		; lpString1
		call	ds:lstrcpyA
		mov	edi, eax
		push	offset a_bak	; ".BAK"
		call	esi ; lstrlenA
		sub	edi, eax
		lea	eax, [ebp+String1]
		push	eax		; lpString
		call	esi ; lstrlenA
		add	edi, eax

loc_7F823E48:				; CODE XREF: sub_7F823D4A+13Bj
		push	ebx		; pSrc
		call	sub_7F8155A8
		cmp	eax, 202h
		mov	esi, eax
		jz	short loc_7F823E92
		cmp	[ebp+var_2], 3E7h
		jge	short loc_7F823E87
		inc	[ebp+var_2]
		lea	ecx, [ebp+String2]
		movsx	eax, [ebp+var_2]
		push	eax
		push	offset a_03_3d	; ".%03.3d"
		push	ecx		; LPSTR
		call	ds:wsprintfA
		add	esp, 0Ch
		lea	ecx, [ebp+String2]
		push	ecx		; lpString2
		push	edi		; lpString1
		call	ds:lstrcpyA
		jmp	short loc_7F823E48
; ---------------------------------------------------------------------------

loc_7F823E87:				; CODE XREF: sub_7F823D4A+113j
		cmp	esi, 202h
		jz	short loc_7F823E92
		mov	byte ptr [ebx],	0

loc_7F823E92:				; CODE XREF: sub_7F823D4A+93j
					; sub_7F823D4A+10Bj ...
		sub	esi, 202h
		cmp	esi, 1
		sbb	eax, eax
		neg	eax

loc_7F823E9F:				; CODE XREF: sub_7F823D4A+5Fj
					; sub_7F823D4A+89j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F823D4A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F823EA8	proc near		; CODE XREF: sub_7F82159B+68p

Buffer		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	esi
		lea	eax, [ebp+Buffer]
		mov	esi, [ebp+arg_0]
		push	eax		; lpBuffer
		add	esi, 4
		push	4		; nNumberOfBytesToRead
		push	122h		; lDistanceToMove
		push	1		; __int16
		push	dword ptr [esi]	; int
		call	sub_7F815C9D
		test	eax, eax
		jz	short loc_7F823ED1
		xor	eax, eax
		jmp	short loc_7F823F3F
; ---------------------------------------------------------------------------

loc_7F823ED1:				; CODE XREF: sub_7F823EA8+23j
					; sub_7F823EA8+37j
		call	sub_7F82AC0C
		mov	[ebp+var_4], eax
		mov	eax, [ebp+Buffer]
		cmp	[ebp+var_4], eax
		jz	short loc_7F823ED1
		lea	eax, [ebp+var_4]
		push	eax		; lpBuffer
		push	4		; nNumberOfBytesToRead
		push	122h		; lDistanceToMove
		push	2		; __int16
		push	dword ptr [esi]	; int
		call	sub_7F815C9D
		test	eax, eax
		jz	short loc_7F823EFD
		xor	eax, eax
		jmp	short loc_7F823F3F
; ---------------------------------------------------------------------------

loc_7F823EFD:				; CODE XREF: sub_7F823EA8+4Fj
		push	4
		lea	eax, [ebp+var_4]
		push	eax
		mov	ecx, [ebp+arg_4]
		push	80000000h
		push	dword ptr [ecx+218h]
		call	sub_7F824187
		lea	ecx, [ebp+Buffer]
		push	ecx		; lpBuffer
		push	4		; nNumberOfBytesToRead
		push	122h		; lDistanceToMove
		push	1		; __int16
		push	dword ptr [esi]	; int
		call	sub_7F815C9D
		test	eax, eax
		mov	eax, 0
		jnz	short loc_7F823F3F
		mov	eax, [ebp+var_4]
		sub	eax, [ebp+Buffer]
		cmp	eax, 1
		sbb	eax, eax
		inc	eax

loc_7F823F3F:				; CODE XREF: sub_7F823EA8+27j
					; sub_7F823EA8+53j ...
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F823EA8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F823F46	proc near		; CODE XREF: sub_7F812460+1C8p

Buffer		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 8
		push	esi
		lea	ecx, [ebp+Buffer]
		mov	esi, [eax]
		push	ecx		; lpBuffer
		push	4		; nNumberOfBytesToRead
		push	122h		; lDistanceToMove
		push	1		; __int16
		push	dword ptr [esi+4] ; int
		call	sub_7F815C9D
		test	eax, eax
		jz	short loc_7F823F70
		xor	eax, eax
		jmp	short loc_7F823FAB
; ---------------------------------------------------------------------------

loc_7F823F70:				; CODE XREF: sub_7F823F46+24j
		mov	eax, [ebp+arg_4]
		cmp	eax, [ebp+Buffer]
		jnz	short loc_7F823FA6

loc_7F823F78:				; CODE XREF: sub_7F823F46+40j
		call	sub_7F82AC0C
		mov	[ebp+var_4], eax
		mov	eax, [ebp+Buffer]
		cmp	[ebp+var_4], eax
		jz	short loc_7F823F78
		lea	eax, [ebp+var_4]
		push	eax		; lpBuffer
		push	4		; nNumberOfBytesToRead
		push	122h		; lDistanceToMove
		push	2		; __int16
		push	dword ptr [esi+4] ; int
		call	sub_7F815C9D
		test	eax, eax
		mov	eax, 0
		jnz	short loc_7F823FAB

loc_7F823FA6:				; CODE XREF: sub_7F823F46+30j
		mov	eax, 2

loc_7F823FAB:				; CODE XREF: sub_7F823F46+28j
					; sub_7F823F46+5Ej
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F823F46	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: thunk

sub_7F823FB2	proc near		; CODE XREF: sub_7F81217E+16p
					; sub_7F8173E6+150p ...
		jmp	sub_7F82E967
sub_7F823FB2	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F823FB7	proc near		; CODE XREF: sub_7F81217E+1D5p
					; sub_7F8173E6+1C9p ...

var_2		= word ptr -2
arg_0		= dword	ptr  4

		sub	esp, 4
		xor	eax, eax
		mov	[esp+4+var_2], 1
		push	esi
		mov	esi, [esp+8+arg_0]
		mov	ecx, [esi]
		cmp	[ecx+6], ax
		jle	short loc_7F823FD6
		or	byte ptr [ecx+9], 80h
		jmp	short loc_7F824003
; ---------------------------------------------------------------------------

loc_7F823FD6:				; CODE XREF: sub_7F823FB7+17j
		cmp	word ptr [ecx+2], 0
		jg	short loc_7F823FE4
		mov	eax, 1
		jmp	short loc_7F824003
; ---------------------------------------------------------------------------

loc_7F823FE4:				; CODE XREF: sub_7F823FB7+24j
		lea	eax, [esp+8+var_2]
		push	2
		push	eax
		push	0
		push	8001h
		push	esi
		call	sub_7F82ADFE
		cmp	eax, 2
		jnz	short loc_7F824003
		mov	ecx, [esi]
		or	byte ptr [ecx+9], 40h

loc_7F824003:				; CODE XREF: sub_7F823FB7+1Dj
					; sub_7F823FB7+2Bj ...
		cmp	eax, 1
		jnz	short loc_7F82400E
		push	esi
		call	sub_7F82F1E1

loc_7F82400E:				; CODE XREF: sub_7F823FB7+4Fj
		pop	esi
		add	esp, 4
		retn	4
sub_7F823FB7	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F824015	proc near		; CODE XREF: sub_7F829FD2+20p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, [eax]
		mov	ax, [ecx]
		retn	4
sub_7F824015	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F824021	proc near		; CODE XREF: sub_7F81217E+42p
					; sub_7F823870+1C0p ...

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
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		call	sub_7F81731C
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		mov	[ebp+var_4], 0
		mov	[ebp+var_8], eax
		call	sub_7F82EBA7
		cmp	eax, esi
		mov	ebx, eax
		jnz	short loc_7F824056
		mov	eax, 400h
		jmp	short loc_7F8240B4
; ---------------------------------------------------------------------------

loc_7F824056:				; CODE XREF: sub_7F824021+2Cj
		mov	edi, [ebp+arg_0]
		push	edi
		call	sub_7F82EC63
		test	ax, ax
		jge	short loc_7F824093
		call	sub_7F82EA6B
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F824076
		mov	eax, 400h
		jmp	short loc_7F8240B4
; ---------------------------------------------------------------------------

loc_7F824076:				; CODE XREF: sub_7F824021+4Cj
		push	esi		; int
		mov	ecx, [ebp+var_8]
		push	[ebp+arg_4]	; int
		push	dword ptr [ecx+4] ; hWnd
		push	edi		; int
		mov	[ebp+var_4], 1
		call	sub_7F82E97D
		test	eax, eax
		jz	short loc_7F8240A4
		jmp	short loc_7F8240B4
; ---------------------------------------------------------------------------

loc_7F824093:				; CODE XREF: sub_7F824021+41j
		movsx	eax, ax
		shl	eax, 4
		mov	ecx, [ebp+arg_4]
		add	eax, [edi]
		mov	esi, [eax+18h]
		or	[eax+14h], ecx

loc_7F8240A4:				; CODE XREF: sub_7F824021+6Ej
		push	ebx
		push	esi
		call	sub_7F82EABB
		test	eax, eax
		jnz	short loc_7F8240B8
		mov	ecx, [edi]
		inc	word ptr [ecx]

loc_7F8240B4:				; CODE XREF: sub_7F824021+33j
					; sub_7F824021+53j ...
		test	eax, eax
		jz	short loc_7F8240D0

loc_7F8240B8:				; CODE XREF: sub_7F824021+8Cj
		test	ebx, ebx
		jz	short loc_7F8240C2
		push	ebx
		call	sub_7F82F1E1

loc_7F8240C2:				; CODE XREF: sub_7F824021+99j
		cmp	[ebp+var_4], 0
		jz	short loc_7F8240CE
		push	esi
		call	sub_7F82EA8A

loc_7F8240CE:				; CODE XREF: sub_7F824021+A5j
		xor	ebx, ebx

loc_7F8240D0:				; CODE XREF: sub_7F824021+95j
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F824021	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8240DB	proc near		; CODE XREF: sub_7F811EEF+B0p
					; sub_7F81217E+1BEp ...

var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		mov	esi, [eax]
		cmp	word ptr [esi+0Eh], 0
		mov	ebx, [esi+8]
		jle	short loc_7F824104
		or	byte ptr [esi+0Dh], 80h
		mov	eax, [ebx]
		mov	ecx, [eax+4]
		mov	edx, [ecx]
		dec	word ptr [edx]
		jmp	short loc_7F82417E
; ---------------------------------------------------------------------------

loc_7F824104:				; CODE XREF: sub_7F8240DB+17j
		test	ebx, ebx
		jz	short loc_7F824176
		push	[ebp+arg_0]
		push	ebx
		call	sub_7F82EB11
		mov	ecx, [ebx]
		mov	[ebp+var_8], ecx
		mov	edi, [ecx+4]
		push	edi
		call	sub_7F82EC63
		mov	[ebp+var_2], ax
		mov	eax, [ebp+var_8]
		cmp	word ptr [eax],	0
		jnz	short loc_7F82413D
		push	ebx
		call	sub_7F82EA8A
		push	dword ptr [ebp+var_2]
		push	edi
		call	sub_7F82E9F9
		jmp	short loc_7F824156
; ---------------------------------------------------------------------------

loc_7F82413D:				; CODE XREF: sub_7F8240DB+4Fj
		mov	edx, [edi]
		push	ebx
		mov	[ebp+var_8], edx
		call	sub_7F82EC98
		movsx	ecx, [ebp+var_2]
		shl	ecx, 4
		mov	edx, [ebp+var_8]
		mov	[ecx+edx+14h], eax

loc_7F824156:				; CODE XREF: sub_7F8240DB+60j
		mov	eax, [edi]
		cmp	word ptr [eax+2], 0
		jnz	short loc_7F82416D
		test	byte ptr [eax+9], 40h
		jz	short loc_7F82416D
		push	edi
		call	sub_7F82F1E1
		jmp	short loc_7F824176
; ---------------------------------------------------------------------------

loc_7F82416D:				; CODE XREF: sub_7F8240DB+82j
					; sub_7F8240DB+88j
		test	byte ptr [esi+0Dh], 80h
		jnz	short loc_7F824176
		dec	word ptr [eax]

loc_7F824176:				; CODE XREF: sub_7F8240DB+2Bj
					; sub_7F8240DB+90j ...
		push	[ebp+arg_0]
		call	sub_7F82F1E1

loc_7F82417E:				; CODE XREF: sub_7F8240DB+27j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F8240DB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F824187	proc near		; CODE XREF: sub_7F812408+4Ep
					; sub_7F823EA8+69p ...

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	[esp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	1
		push	[ebp+arg_0]
		call	sub_7F82ADFE
		dec	eax
		pop	ebp
		cmp	eax, 1
		sbb	eax, eax
		neg	eax
		retn	10h
sub_7F824187	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8241AA	proc near		; CODE XREF: sub_7F82ACA6+58p
		mov	eax, dword_7F839014
		retn
sub_7F8241AA	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8241B0	proc near		; CODE XREF: sub_7F81217E+148p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	ebx
		mov	edx, [esp+4+arg_4]
		push	esi
		push	edi
		mov	ecx, [eax]
		mov	[ecx+10h], edx
		mov	edi, [ecx+8]
		test	edi, edi
		jz	short loc_7F8241E7
		mov	eax, [edi]
		mov	ebx, [eax+4]
		push	ebx
		call	sub_7F82EC63
		mov	si, ax
		push	edi
		call	sub_7F82EC98
		movsx	ecx, si
		shl	ecx, 4
		mov	edx, [ebx]
		mov	[ecx+edx+14h], eax

loc_7F8241E7:				; CODE XREF: sub_7F8241B0+15j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F8241B0	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F8241ED(SIZE_T dwBytes)
sub_7F8241ED	proc near		; CODE XREF: sub_7F814EF3+31p

dwBytes		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		call	ds:__imp_GetCurrentProcessId
		mov	edi, eax
		mov	eax, dword_7F8370A0
		cmp	eax, esi
		jle	short loc_7F824217
		mov	ecx, offset dword_7F8370A8

loc_7F824208:				; CODE XREF: sub_7F8241ED+26j
		cmp	dword ptr [ecx], 0
		jz	short loc_7F824215
		add	ecx, 4
		inc	esi
		cmp	eax, esi
		jg	short loc_7F824208

loc_7F824215:				; CODE XREF: sub_7F8241ED+1Ej
		cmp	eax, esi

loc_7F824217:				; CODE XREF: sub_7F8241ED+14j
		jnz	short loc_7F824228
		cmp	esi, 64h
		jnz	short loc_7F824222
		xor	eax, eax
		jmp	short loc_7F82429B
; ---------------------------------------------------------------------------

loc_7F824222:				; CODE XREF: sub_7F8241ED+2Fj
		inc	eax
		mov	dword_7F8370A0,	eax

loc_7F824228:				; CODE XREF: sub_7F8241ED:loc_7F824217j
		xor	ebx, ebx
		inc	dword_7F8373D0
		mov	dword_7F837098,	ebx
		mov	dword_7F83709C,	ebx
		cmp	dword_7F8373D4,	ebx
		jz	short loc_7F824267
		push	10h
		push	[esp+10h+dwBytes]
		call	sub_7F82F03B
		test	eax, eax
		jz	short loc_7F824294
		mov	dword_7F837098,	edi
		mov	dword_7F83709C,	eax
		mov	dword_7F8370A8[esi*4], edi
		jmp	short loc_7F824294
; ---------------------------------------------------------------------------

loc_7F824267:				; CODE XREF: sub_7F8241ED+55j
		push	[esp+0Ch+dwBytes] ; dwBytes
		push	42h		; uFlags
		call	ds:GlobalAlloc
		test	eax, eax
		jnz	short loc_7F82427B
		xor	eax, eax
		jmp	short loc_7F82429B
; ---------------------------------------------------------------------------

loc_7F82427B:				; CODE XREF: sub_7F8241ED+88j
		push	eax		; hMem
		mov	dword_7F8370A8[esi*4], edi
		mov	dword_7F837098,	edi
		call	ds:GlobalLock
		mov	dword_7F83709C,	eax

loc_7F824294:				; CODE XREF: sub_7F8241ED+64j
					; sub_7F8241ED+78j
		mov	pMem[esi*4], eax

loc_7F82429B:				; CODE XREF: sub_7F8241ED+33j
					; sub_7F8241ED+8Cj
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_7F8241ED	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8242A1	proc near		; CODE XREF: sub_7F814F94+9Ap
		push	esi
		push	edi
		xor	esi, esi
		call	ds:__imp_GetCurrentProcessId
		mov	ecx, dword_7F8370A0
		cmp	ecx, esi
		jle	short loc_7F824324
		mov	edx, offset dword_7F8370A8

loc_7F8242BA:				; CODE XREF: sub_7F8242A1+23j
		cmp	[edx], eax
		jz	short loc_7F8242C8
		add	edx, 4
		inc	esi
		cmp	ecx, esi
		jg	short loc_7F8242BA
		jmp	short loc_7F824324
; ---------------------------------------------------------------------------

loc_7F8242C8:				; CODE XREF: sub_7F8242A1+1Bj
		push	pMem[esi*4]	; pMem
		cmp	dword_7F8373D4,	0
		jz	short loc_7F8242DF
		call	sub_7F82F149
		jmp	short loc_7F8242F5
; ---------------------------------------------------------------------------

loc_7F8242DF:				; CODE XREF: sub_7F8242A1+35j
		call	ds:GlobalHandle
		push	eax		; hMem
		mov	edi, eax
		call	ds:GlobalUnlock
		push	edi		; hMem
		call	ds:GlobalFree

loc_7F8242F5:				; CODE XREF: sub_7F8242A1+3Cj
		mov	dword_7F8370A8[esi*4], 0
		mov	eax, dword_7F8370A0
		sub	eax, esi
		cmp	eax, 1
		jnz	short loc_7F824312
		dec	dword_7F8370A0

loc_7F824312:				; CODE XREF: sub_7F8242A1+69j
		xor	eax, eax
		dec	dword_7F8373D0
		mov	dword_7F837098,	eax
		mov	dword_7F83709C,	eax

loc_7F824324:				; CODE XREF: sub_7F8242A1+12j
					; sub_7F8242A1+25j
		pop	edi
		pop	esi
		retn
sub_7F8242A1	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F824327	proc near		; CODE XREF: sub_7F814EF3+22p
					; sub_7F814F94:loc_7F814FACp ...
		push	esi
		call	ds:__imp_GetCurrentProcessId
		xor	edx, edx
		mov	ecx, dword_7F8370A0
		cmp	ecx, edx
		jle	short loc_7F82434B
		mov	esi, offset dword_7F8370A8

loc_7F82433F:				; CODE XREF: sub_7F824327+22j
		cmp	[esi], eax
		jz	short loc_7F82434F
		add	esi, 4
		inc	edx
		cmp	edx, ecx
		jl	short loc_7F82433F

loc_7F82434B:				; CODE XREF: sub_7F824327+11j
		xor	eax, eax

loc_7F82434D:				; CODE XREF: sub_7F824327+2Fj
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_7F82434F:				; CODE XREF: sub_7F824327+1Aj
		mov	eax, pMem[edx*4]
		jmp	short loc_7F82434D
sub_7F824327	endp

; [00000006 BYTES: COLLAPSED FUNCTION GetCurrentProcessId. PRESS CTRL-NUMPAD+ TO EXPAND]

; =============== S U B	R O U T	I N E =======================================


sub_7F82435E	proc near		; CODE XREF: sub_7F814EF3:loc_7F814F4Cp
					; sub_7F814F94:loc_7F814FD1p
		mov	eax, dword_7F8373D0
		retn
sub_7F82435E	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F824364(SIZE_T dwBytes)
sub_7F824364	proc near		; CODE XREF: sub_7F8173E6+122p

dwBytes		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		call	ds:__imp_GetCurrentProcessId
		mov	edi, eax
		mov	eax, dword_7F8373E0
		cmp	esi, eax
		jge	short loc_7F82438E
		mov	ecx, offset dword_7F8373E8

loc_7F82437F:				; CODE XREF: sub_7F824364+26j
		cmp	dword ptr [ecx], 0
		jz	short loc_7F82438C
		add	ecx, 4
		inc	esi
		cmp	esi, eax
		jl	short loc_7F82437F

loc_7F82438C:				; CODE XREF: sub_7F824364+1Ej
		cmp	esi, eax

loc_7F82438E:				; CODE XREF: sub_7F824364+14j
		jnz	short loc_7F82439F
		cmp	esi, 64h
		jnz	short loc_7F824399
		xor	eax, eax
		jmp	short loc_7F824412
; ---------------------------------------------------------------------------

loc_7F824399:				; CODE XREF: sub_7F824364+2Fj
		inc	eax
		mov	dword_7F8373E0,	eax

loc_7F82439F:				; CODE XREF: sub_7F824364:loc_7F82438Ej
		xor	ebx, ebx
		inc	dword_7F837710
		mov	dword_7F8373D8,	ebx
		mov	dword_7F8373DC,	ebx
		cmp	dword_7F837714,	ebx
		jz	short loc_7F8243DE
		push	10h
		push	[esp+10h+dwBytes]
		call	sub_7F82F03B
		test	eax, eax
		jz	short loc_7F82440B
		mov	dword_7F8373D8,	edi
		mov	dword_7F8373DC,	eax
		mov	dword_7F8373E8[esi*4], edi
		jmp	short loc_7F82440B
; ---------------------------------------------------------------------------

loc_7F8243DE:				; CODE XREF: sub_7F824364+55j
		push	[esp+0Ch+dwBytes] ; dwBytes
		push	42h		; uFlags
		call	ds:GlobalAlloc
		test	eax, eax
		jnz	short loc_7F8243F2
		xor	eax, eax
		jmp	short loc_7F824412
; ---------------------------------------------------------------------------

loc_7F8243F2:				; CODE XREF: sub_7F824364+88j
		push	eax		; hMem
		mov	dword_7F8373E8[esi*4], edi
		mov	dword_7F8373D8,	edi
		call	ds:GlobalLock
		mov	dword_7F8373DC,	eax

loc_7F82440B:				; CODE XREF: sub_7F824364+64j
					; sub_7F824364+78j
		mov	dword_7F837580[esi*4], eax

loc_7F824412:				; CODE XREF: sub_7F824364+33j
					; sub_7F824364+8Cj
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_7F824364	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F824418	proc near		; CODE XREF: sub_7F8173E6+1E5p
					; sub_7F81762E+7Bp
		push	esi
		push	edi
		xor	esi, esi
		call	ds:__imp_GetCurrentProcessId
		mov	ecx, dword_7F8373E0
		cmp	ecx, esi
		jle	short loc_7F82449B
		mov	edx, offset dword_7F8373E8

loc_7F824431:				; CODE XREF: sub_7F824418+23j
		cmp	[edx], eax
		jz	short loc_7F82443F
		add	edx, 4
		inc	esi
		cmp	esi, ecx
		jl	short loc_7F824431
		jmp	short loc_7F82449B
; ---------------------------------------------------------------------------

loc_7F82443F:				; CODE XREF: sub_7F824418+1Bj
		push	dword_7F837580[esi*4] ;	pMem
		cmp	dword_7F837714,	0
		jz	short loc_7F824456
		call	sub_7F82F149
		jmp	short loc_7F82446C
; ---------------------------------------------------------------------------

loc_7F824456:				; CODE XREF: sub_7F824418+35j
		call	ds:GlobalHandle
		push	eax		; hMem
		mov	edi, eax
		call	ds:GlobalUnlock
		push	edi		; hMem
		call	ds:GlobalFree

loc_7F82446C:				; CODE XREF: sub_7F824418+3Cj
		mov	dword_7F8373E8[esi*4], 0
		mov	eax, dword_7F8373E0
		sub	eax, esi
		cmp	eax, 1
		jnz	short loc_7F824489
		dec	dword_7F8373E0

loc_7F824489:				; CODE XREF: sub_7F824418+69j
		xor	eax, eax
		dec	dword_7F837710
		mov	dword_7F8373D8,	eax
		mov	dword_7F8373DC,	eax

loc_7F82449B:				; CODE XREF: sub_7F824418+12j
					; sub_7F824418+25j
		pop	edi
		pop	esi
		retn
sub_7F824418	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82449E	proc near		; CODE XREF: sub_7F8173E6+19p
					; sub_7F8173E6:loc_7F81754Bp ...
		push	esi
		call	ds:__imp_GetCurrentProcessId
		xor	edx, edx
		mov	ecx, dword_7F8373E0
		cmp	ecx, edx
		jle	short loc_7F8244C2
		mov	esi, offset dword_7F8373E8

loc_7F8244B6:				; CODE XREF: sub_7F82449E+22j
		cmp	[esi], eax
		jz	short loc_7F8244C6
		add	esi, 4
		inc	edx
		cmp	ecx, edx
		jg	short loc_7F8244B6

loc_7F8244C2:				; CODE XREF: sub_7F82449E+11j
		xor	eax, eax

loc_7F8244C4:				; CODE XREF: sub_7F82449E+2Fj
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_7F8244C6:				; CODE XREF: sub_7F82449E+1Aj
		mov	eax, dword_7F837580[edx*4]
		jmp	short loc_7F8244C4
sub_7F82449E	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8244CF	proc near		; CODE XREF: sub_7F822894+62p
					; sub_7F822894+87p ...

arg_0		= dword	ptr  4

		push	esi
		push	10h
		push	4
		call	sub_7F82F18D
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F8244FA
		mov	eax, [esp+4+arg_0]
		test	eax, eax
		jz	short loc_7F8244FA
		push	eax
		push	esi
		call	sub_7F82451D
		test	eax, eax
		jz	short loc_7F8244FA
		push	esi
		call	sub_7F824500
		xor	esi, esi

loc_7F8244FA:				; CODE XREF: sub_7F8244CF+Ej
					; sub_7F8244CF+16j ...
		mov	eax, esi
		pop	esi
		retn	4
sub_7F8244CF	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F824500	proc near		; CODE XREF: sub_7F8223B3+5Dp
					; sub_7F8223B3+6Fp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi]
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_7F824513
		push	eax
		call	sub_7F82F1E1

loc_7F824513:				; CODE XREF: sub_7F824500+Bj
		push	esi
		call	sub_7F82F1E1
		pop	esi
		retn	4
sub_7F824500	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82451D	proc near		; CODE XREF: sub_7F8244CF+1Ap
					; sub_7F8245A4+14p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		mov	edi, [esp+0Ch+arg_4]
		push	ebp
		mov	ebx, [esi]
		cmp	edi, 7FFF8h
		jle	short loc_7F82453A
		mov	eax, 400h
		jmp	short loc_7F82459D
; ---------------------------------------------------------------------------

loc_7F82453A:				; CODE XREF: sub_7F82451D+14j
		mov	ecx, [ebx+4]
		test	ecx, ecx
		jz	short loc_7F82455D
		mov	eax, edi
		cdq
		and	edx, 7
		add	eax, edx
		sar	eax, 3
		mov	ebp, eax
		mov	eax, ecx
		cdq
		and	edx, 7
		add	eax, edx
		sar	eax, 3
		cmp	ebp, eax
		jz	short loc_7F824598

loc_7F82455D:				; CODE XREF: sub_7F82451D+22j
		mov	ecx, [ebx]
		push	10h
		mov	eax, edi
		test	ecx, ecx
		cdq
		jz	short loc_7F82457A
		and	edx, 7
		add	eax, edx
		sar	eax, 3
		inc	eax
		push	eax
		push	ecx
		call	sub_7F82F24A
		jmp	short loc_7F824589
; ---------------------------------------------------------------------------

loc_7F82457A:				; CODE XREF: sub_7F82451D+49j
		and	edx, 7
		add	eax, edx
		sar	eax, 3
		inc	eax
		push	eax
		call	sub_7F82F18D

loc_7F824589:				; CODE XREF: sub_7F82451D+5Bj
		test	eax, eax
		jnz	short loc_7F824594
		mov	eax, 400h
		jmp	short loc_7F82459D
; ---------------------------------------------------------------------------

loc_7F824594:				; CODE XREF: sub_7F82451D+6Ej
		mov	ebx, [esi]
		mov	[ebx], eax

loc_7F824598:				; CODE XREF: sub_7F82451D+3Ej
		xor	eax, eax
		mov	[ebx+4], edi

loc_7F82459D:				; CODE XREF: sub_7F82451D+1Bj
					; sub_7F82451D+75j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F82451D	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8245A4	proc near		; CODE XREF: sub_7F822894+C3p
					; sub_7F822894+DFp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_4]
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		mov	ecx, [edi]
		cmp	[ecx+4], esi
		jg	short loc_7F8245C3
		push	esi
		push	edi
		call	sub_7F82451D
		test	eax, eax
		jnz	short loc_7F8245EC
		mov	ecx, [edi]

loc_7F8245C3:				; CODE XREF: sub_7F8245A4+10j
		mov	eax, esi
		mov	ecx, [ecx]
		cdq
		and	edx, 7
		mov	edi, [ecx]
		add	eax, edx
		mov	bl, 1
		sar	eax, 3
		add	edi, eax
		mov	eax, esi
		cdq
		xor	eax, edx
		sub	eax, edx
		and	eax, 7
		xor	eax, edx
		sub	eax, edx
		mov	cl, al
		xor	eax, eax
		shl	bl, cl
		or	[edi], bl

loc_7F8245EC:				; CODE XREF: sub_7F8245A4+1Bj
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F8245A4	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8245F2	proc near		; CODE XREF: sub_7F822C2A+BAp
					; sub_7F822C2A+141p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	eax, [eax]
		mov	edi, [esp+0Ch+arg_4]
		cmp	[eax+4], edi
		jg	short loc_7F824608
		xor	eax, eax
		jmp	short loc_7F82463A
; ---------------------------------------------------------------------------

loc_7F824608:				; CODE XREF: sub_7F8245F2+10j
		mov	eax, [eax]
		mov	ecx, [eax]
		mov	eax, edi
		cdq
		and	edx, 7
		mov	ebx, 1
		add	eax, edx
		sar	eax, 3
		movzx	esi, byte ptr [ecx+eax]
		mov	eax, edi
		cdq
		xor	eax, edx
		sub	eax, edx
		and	eax, 7
		xor	eax, edx
		sub	eax, edx
		mov	cl, al
		shl	ebx, cl
		and	esi, ebx
		cmp	esi, 1
		sbb	eax, eax
		inc	eax

loc_7F82463A:				; CODE XREF: sub_7F8245F2+14j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F8245F2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F824640	proc near		; CODE XREF: sub_7F822894+292p
					; sub_7F822894+2D7p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		push	ebx
		push	esi
		mov	ecx, [eax]
		push	edi
		mov	esi, [ecx+4]
		cmp	[ebp+arg_4], esi
		jl	short loc_7F82465E
		mov	eax, 0FFFFFFFFh
		jmp	loc_7F824724
; ---------------------------------------------------------------------------

loc_7F82465E:				; CODE XREF: sub_7F824640+12j
		mov	eax, [ebp+arg_4]
		cdq
		and	edx, 7
		add	eax, edx
		sar	eax, 3
		mov	ebx, eax
		mov	eax, [ecx]
		mov	edi, [eax]
		mov	eax, [ebp+arg_4]
		cdq
		add	edi, ebx
		xor	eax, edx
		sub	eax, edx
		and	eax, 7
		xor	eax, edx
		sub	eax, edx
		mov	ecx, eax
		test	ecx, ecx
		jz	short loc_7F8246D2
		mov	al, 0FFh
		shl	al, cl
		cmp	[ebp+arg_8], 1
		sbb	dl, dl
		and	dl, al
		and	al, [edi]
		cmp	al, dl
		jz	short loc_7F8246C7
		cmp	[ebp+arg_8], 1
		sbb	dl, dl
		mov	al, 1
		shl	al, cl
		inc	dl
		shl	dl, cl
		test	al, al
		jz	short loc_7F8246D1
		mov	cl, [edi]

loc_7F8246AD:				; CODE XREF: sub_7F824640+7Ej
		mov	bl, al
		and	bl, cl
		cmp	bl, dl
		jz	short loc_7F8246C2
		add	al, al
		add	dl, dl
		inc	[ebp+arg_4]
		test	al, al
		jnz	short loc_7F8246AD
		jmp	short loc_7F8246D1
; ---------------------------------------------------------------------------

loc_7F8246C2:				; CODE XREF: sub_7F824640+73j
		mov	eax, [ebp+arg_4]
		jmp	short loc_7F824724
; ---------------------------------------------------------------------------

loc_7F8246C7:				; CODE XREF: sub_7F824640+57j
		lea	eax, ds:8[ebx*8]
		mov	[ebp+arg_4], eax

loc_7F8246D1:				; CODE XREF: sub_7F824640+69j
					; sub_7F824640+80j
		inc	edi

loc_7F8246D2:				; CODE XREF: sub_7F824640+45j
		cmp	[ebp+arg_8], 1
		sbb	al, al
		mov	edx, esi
		sub	edx, [ebp+arg_4]
		cmp	edx, 8
		jl	short loc_7F8246EF

loc_7F8246E2:				; CODE XREF: sub_7F824640+ADj
		cmp	[edi], al
		jnz	short loc_7F8246EF
		sub	edx, 8
		inc	edi
		cmp	edx, 8
		jge	short loc_7F8246E2

loc_7F8246EF:				; CODE XREF: sub_7F824640+A0j
					; sub_7F824640+A4j
		test	edx, edx
		jge	short loc_7F8246FA
		mov	eax, 0FFFFFFFFh
		jmp	short loc_7F824724
; ---------------------------------------------------------------------------

loc_7F8246FA:				; CODE XREF: sub_7F824640+B1j
		mov	cl, 1
		mov	ebx, esi
		sub	ebx, edx
		cmp	[ebp+arg_8], 1
		sbb	al, al
		add	al, cl

loc_7F824708:				; CODE XREF: sub_7F824640+D7j
		mov	dl, cl
		and	dl, [edi]
		cmp	dl, al
		jz	short loc_7F824719
		add	cl, cl
		add	al, al
		inc	ebx
		test	cl, cl
		jnz	short loc_7F824708

loc_7F824719:				; CODE XREF: sub_7F824640+CEj
		mov	eax, 0FFFFFFFFh
		cmp	ebx, esi
		jge	short loc_7F824724
		mov	eax, ebx

loc_7F824724:				; CODE XREF: sub_7F824640+19j
					; sub_7F824640+85j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_7F824640	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82472B	proc near		; CODE XREF: sub_7F8181F1+11Fp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, [eax]
		mov	edx, [ecx+6]
		push	dword ptr [edx]
		call	sub_7F82473E
		retn	4
sub_7F82472B	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82473E	proc near		; CODE XREF: sub_7F82472B+Bp
					; sub_7F824774+78p ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	si, 8
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		add	edi, 14h
		mov	ebx, edi

loc_7F82474E:				; CODE XREF: sub_7F82473E+25j
		mov	eax, [ebx+3]
		test	eax, eax
		jz	short loc_7F82475B
		push	eax
		call	sub_7F82F1E1

loc_7F82475B:				; CODE XREF: sub_7F82473E+15j
		dec	si
		add	ebx, 7
		test	si, si
		jnz	short loc_7F82474E
		xor	eax, eax
		mov	ecx, 0Eh
		rep stosd
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_7F82473E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F824774	proc near		; CODE XREF: sub_7F8183DC+F1p
					; sub_7F81B714+19Ap

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		cmp	dword_7F838078,	0
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		jz	short loc_7F82478D
		mov	eax, 253h
		mov	ecx, [ebp+arg_0]
		jmp	short loc_7F8247BF
; ---------------------------------------------------------------------------

loc_7F82478D:				; CODE XREF: sub_7F824774+Dj
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	ebx, [edx]
		mov	dword_7F838078,	ebx
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx
		xor	eax, eax

loc_7F8247BF:				; CODE XREF: sub_7F824774+17j
		test	eax, eax
		jnz	short loc_7F82482E
		push	1
		push	[ebp+arg_4]
		push	ecx
		call	sub_7F81155C
		test	eax, eax
		jz	short loc_7F8247F1
		mov	edi, [eax]
		lea	ebx, [edi+10h]
		push	ebx
		push	[ebp+arg_8]
		call	sub_7F814A8B
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F8247FE
		mov	eax, [ebx]
		push	edi
		mov	[edi+0Ch], eax
		call	sub_7F82473E

loc_7F8247F1:				; CODE XREF: sub_7F824774+5Cj
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_7F814868
		mov	esi, eax

loc_7F8247FE:				; CODE XREF: sub_7F824774+70j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F824814
		call	sub_7F82A34F
		jmp	short loc_7F824822
; ---------------------------------------------------------------------------

loc_7F824814:				; CODE XREF: sub_7F824774+97j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F824822:				; CODE XREF: sub_7F824774+9Ej
		mov	dword_7F838078,	0
		mov	eax, esi

loc_7F82482E:				; CODE XREF: sub_7F824774+4Dj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_7F824774	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F824835	proc near		; CODE XREF: sub_7F8178D8+CEp
					; sub_7F817E9D+43p ...

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		= word ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		mov	[ebp+var_14], edi
		mov	[ebp+var_10], edi
		mov	[ebp+var_4], edi
		mov	[ebp+var_8], edi
		test	byte ptr [ebp+arg_C+1],	20h
		jz	short loc_7F82485A
		or	word ptr [ebp+14h], 8003h

loc_7F82485A:				; CODE XREF: sub_7F824835+1Dj
		xor	eax, eax
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		cmp	dword_7F838078,	eax
		jz	short loc_7F824870
		mov	esi, 253h
		jmp	short loc_7F8248A0
; ---------------------------------------------------------------------------

loc_7F824870:				; CODE XREF: sub_7F824835+32j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		xor	esi, esi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	edx, [ebp+arg_0]
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edx

loc_7F8248A0:				; CODE XREF: sub_7F824835+39j
		test	esi, esi
		jnz	loc_7F824AEA
		test	byte ptr [ebp+arg_C], 2
		jz	short loc_7F8248D9
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_10]
		push	[ebp+arg_8]
		call	sub_7F812FC1
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F824A34
		mov	eax, [ebp+var_4]
		mov	edi, 1
		or	byte ptr [eax+10h], 8
		or	[ebp+arg_C], di
		jmp	short loc_7F82491D
; ---------------------------------------------------------------------------

loc_7F8248D9:				; CODE XREF: sub_7F824835+77j
		push	0
		mov	eax, [ebp+arg_8]
		push	dword ptr [eax]
		call	sub_7F8144A4
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	short loc_7F8248F6
		mov	esi, 1001h
		jmp	loc_7F824A30
; ---------------------------------------------------------------------------

loc_7F8248F6:				; CODE XREF: sub_7F824835+B5j
		test	byte ptr [ebp+arg_C], 1
		jz	short loc_7F82491D
		mov	ecx, [ebp+var_4]
		add	ecx, 10h
		mov	ax, [ecx]
		test	al, 8
		jz	short loc_7F824913
		mov	esi, 253h
		jmp	loc_7F824A30
; ---------------------------------------------------------------------------

loc_7F824913:				; CODE XREF: sub_7F824835+D2j
		or	al, 8
		mov	edi, 1
		mov	[ecx], ax

loc_7F82491D:				; CODE XREF: sub_7F824835+A2j
					; sub_7F824835+C5j
		mov	eax, [ebp+var_4]
		test	byte ptr [eax+10h], 10h
		jz	short loc_7F82492F
		push	eax
		call	sub_7F81470D
		mov	[ebp+var_4], eax

loc_7F82492F:				; CODE XREF: sub_7F824835+EFj
		push	10h
		push	0Eh
		call	sub_7F82F18D
		mov	ecx, [ebp+arg_4]
		test	eax, eax
		mov	[ecx], eax
		jnz	short loc_7F82494B
		mov	esi, 400h
		jmp	loc_7F824A30
; ---------------------------------------------------------------------------

loc_7F82494B:				; CODE XREF: sub_7F824835+10Aj
		mov	ecx, [eax]
		mov	edx, [ebp+arg_0]
		mov	ax, [ebp+arg_C]
		push	1
		mov	[ecx], ax
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+arg_8]
		mov	[ecx+0Ah], edx
		push	dword ptr [eax]
		push	edx
		call	sub_7F81155C
		mov	[ebp+var_8], eax
		test	eax, eax
		jz	short loc_7F824988
		test	byte ptr [ebp+arg_C], 2
		jz	short loc_7F824981
		mov	esi, 253h
		jmp	loc_7F824A30
; ---------------------------------------------------------------------------

loc_7F824981:				; CODE XREF: sub_7F824835+140j
		mov	eax, [ebp+var_8]
		mov	ebx, [eax]
		jmp	short loc_7F8249D7
; ---------------------------------------------------------------------------

loc_7F824988:				; CODE XREF: sub_7F824835+13Aj
		push	30h
		push	4Ch
		call	sub_7F82F18D
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	short loc_7F8249A2
		mov	esi, 400h
		jmp	loc_7F824A30
; ---------------------------------------------------------------------------

loc_7F8249A2:				; CODE XREF: sub_7F824835+161j
		mov	eax, [ebp+var_8]
		test	byte ptr [ebp+arg_C], 2
		mov	ebx, [eax]
		jz	short loc_7F8249B8
		mov	eax, [ebp+arg_10]
		mov	[ebx+0Ch], eax
		mov	[ebx+10h], eax
		jmp	short loc_7F8249C9
; ---------------------------------------------------------------------------

loc_7F8249B8:				; CODE XREF: sub_7F824835+176j
		mov	eax, [ebp+var_4]
		mov	eax, [eax+14h]
		and	eax, 7FFFFFFFh
		mov	[ebx+10h], eax
		mov	[ebx+0Ch], eax

loc_7F8249C9:				; CODE XREF: sub_7F824835+181j
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_14], 1
		mov	ecx, [eax]
		mov	[ebx], ecx

loc_7F8249D7:				; CODE XREF: sub_7F824835+151j
		mov	ax, [ebp+arg_C]
		and	ax, 8001h
		cmp	ax, 1
		jnz	short loc_7F824A16
		mov	eax, [ebx+0Ch]
		push	30h
		shr	eax, 0Dh
		add	ax, 5
		mov	[ebx+6], ax
		movzx	eax, ax
		shl	eax, 2
		push	eax
		call	sub_7F82F03B
		mov	[ebx+8], eax
		test	eax, eax
		jnz	short loc_7F824A0F
		mov	esi, 400h
		jmp	short loc_7F824A30
; ---------------------------------------------------------------------------

loc_7F824A0F:				; CODE XREF: sub_7F824835+1D1j
		mov	[ebp+var_10], 1

loc_7F824A16:				; CODE XREF: sub_7F824835+1AEj
		cmp	[ebp+var_14], 0
		jz	short loc_7F824A30
		mov	ecx, [ebp+arg_8]
		push	[ebp+var_8]
		push	1
		push	dword ptr [ecx]
		push	[ebp+arg_0]
		call	sub_7F811597
		mov	esi, eax

loc_7F824A30:				; CODE XREF: sub_7F824835+BCj
					; sub_7F824835+D9j ...
		test	esi, esi
		jz	short loc_7F824AAF

loc_7F824A34:				; CODE XREF: sub_7F824835+8Cj
		cmp	[ebp+var_4], 0
		jz	short loc_7F824A5D
		test	edi, edi
		jz	short loc_7F824A47
		mov	eax, [ebp+var_4]
		and	word ptr [eax+10h], 0FFF7h

loc_7F824A47:				; CODE XREF: sub_7F824835+207j
		test	byte ptr [ebp+arg_C], 2
		jz	short loc_7F824A5D
		cmp	esi, 100Ah
		jz	short loc_7F824A5D
		push	[ebp+var_4]
		call	sub_7F8147DD

loc_7F824A5D:				; CODE XREF: sub_7F824835+203j
					; sub_7F824835+216j ...
		xor	edi, edi
		test	ebx, ebx
		jz	short loc_7F824A97
		cmp	[ebp+var_10], edi
		jz	short loc_7F824A77
		push	dword ptr [ebx+8]
		call	sub_7F82F149
		mov	[ebx+8], edi
		mov	[ebx+6], di

loc_7F824A77:				; CODE XREF: sub_7F824835+231j
		cmp	word ptr [ebx+4], 0
		jg	short loc_7F824A97
		push	[ebp+var_8]
		call	sub_7F82F1E1
		push	0
		mov	eax, [ebp+arg_8]
		push	1
		push	dword ptr [eax]
		push	[ebp+arg_0]
		call	sub_7F811597

loc_7F824A97:				; CODE XREF: sub_7F824835+22Cj
					; sub_7F824835+247j
		mov	ecx, [ebp+arg_4]
		xor	edi, edi
		mov	eax, [ecx]
		test	eax, eax
		jz	short loc_7F824ABC
		push	eax
		call	sub_7F82F1E1
		mov	ecx, [ebp+arg_4]
		mov	[ecx], edi
		jmp	short loc_7F824ABC
; ---------------------------------------------------------------------------

loc_7F824AAF:				; CODE XREF: sub_7F824835+1FDj
		mov	ecx, [ebp+var_C]
		mov	eax, [ebp+var_8]
		mov	[ecx+6], eax
		inc	word ptr [ebx+4]

loc_7F824ABC:				; CODE XREF: sub_7F824835+26Bj
					; sub_7F824835+278j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F824AD2
		call	sub_7F82A34F
		jmp	short loc_7F824AE0
; ---------------------------------------------------------------------------

loc_7F824AD2:				; CODE XREF: sub_7F824835+294j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F824AE0:				; CODE XREF: sub_7F824835+29Bj
		mov	dword_7F838078,	0

loc_7F824AEA:				; CODE XREF: sub_7F824835+6Dj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F824835	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F824AF5	proc near		; CODE XREF: sub_7F8178D8+39Bp
					; sub_7F8178D8+3BFp ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		xor	esi, esi
		mov	ecx, [eax]
		mov	[ebp+var_8], esi
		mov	edi, [ecx]
		mov	eax, [edi+6]
		mov	ebx, [eax]
		xor	eax, eax
		mov	ax, [edi]
		and	eax, 1
		mov	[ebp+var_4], eax
		cmp	eax, esi
		jz	short loc_7F824B8F
		cmp	dword_7F838078,	esi
		jz	short loc_7F824B2D
		mov	esi, 253h
		jmp	short loc_7F824B5D
; ---------------------------------------------------------------------------

loc_7F824B2D:				; CODE XREF: sub_7F824AF5+2Fj
		mov	eax, [edi+0Ah]
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		xor	esi, esi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	edx, [edi+0Ah]
		mov	dword_7F83807C,	edx

loc_7F824B5D:				; CODE XREF: sub_7F824AF5+36j
		test	esi, esi
		jnz	loc_7F824C04
		mov	[ebp+var_8], 1
		test	byte ptr [edi+1], 80h
		jnz	short loc_7F824B7C
		push	[ebp+arg_4]
		push	ebx
		push	edi
		call	sub_7F824C43

loc_7F824B7C:				; CODE XREF: sub_7F824AF5+7Bj
		push	0
		push	dword ptr [ebx]
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F824B8F
		and	word ptr [eax+10h], 0FFF7h

loc_7F824B8F:				; CODE XREF: sub_7F824AF5+27j
					; sub_7F824AF5+92j
		test	esi, esi
		jnz	short loc_7F824C04
		mov	ax, [ebx+4]
		dec	ax
		mov	[ebx+4], ax
		test	ax, ax
		jle	short loc_7F824BAE
		cmp	[ebp+var_4], 0
		jz	short loc_7F824BD4
		test	byte ptr [edi+1], 80h
		jnz	short loc_7F824BB4

loc_7F824BAE:				; CODE XREF: sub_7F824AF5+ABj
		push	ebx
		call	sub_7F82473E

loc_7F824BB4:				; CODE XREF: sub_7F824AF5+B7j
		cmp	[ebp+var_4], 0
		jz	short loc_7F824BD4
		mov	eax, [ebx+8]
		test	eax, eax
		jz	short loc_7F824BD4
		push	eax
		call	sub_7F82F149
		mov	dword ptr [ebx+8], 0
		mov	word ptr [ebx+6], 0

loc_7F824BD4:				; CODE XREF: sub_7F824AF5+B1j
					; sub_7F824AF5+C3j ...
		cmp	word ptr [ebx+4], 0
		jg	short loc_7F824BF1
		push	0
		push	1
		push	dword ptr [ebx]
		push	dword ptr [edi+0Ah]
		call	sub_7F811597
		push	dword ptr [edi+6]
		call	sub_7F82F1E1

loc_7F824BF1:				; CODE XREF: sub_7F824AF5+E4j
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax]
		call	sub_7F82F1E1
		mov	edx, [ebp+arg_0]
		mov	dword ptr [edx], 0

loc_7F824C04:				; CODE XREF: sub_7F824AF5+6Aj
					; sub_7F824AF5+9Cj
		cmp	[ebp+var_8], 0
		jz	short loc_7F824C38
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F824C20
		call	sub_7F82A34F
		jmp	short loc_7F824C2E
; ---------------------------------------------------------------------------

loc_7F824C20:				; CODE XREF: sub_7F824AF5+122j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F824C2E:				; CODE XREF: sub_7F824AF5+129j
		mov	dword_7F838078,	0

loc_7F824C38:				; CODE XREF: sub_7F824AF5+113j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F824AF5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F824C43	proc near		; CODE XREF: sub_7F824AF5+82p

var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		push	esi
		mov	[ebp+var_2], 1
		push	edi
		mov	edi, [ebp+arg_4]
		mov	si, [edi+6]
		mov	ebx, [edi+8]
		test	si, si
		mov	eax, [edi+10h]
		mov	[edi+0Ch], eax
		jz	short loc_7F824C8B

loc_7F824C67:				; CODE XREF: sub_7F824C43+46j
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_7F824C7B
		push	0
		push	eax
		call	sub_7F81479E
		mov	dword ptr [ebx], 0

loc_7F824C7B:				; CODE XREF: sub_7F824C43+28j
		mov	ax, [ebp+var_2]
		add	ebx, 4
		inc	[ebp+var_2]
		cmp	si, ax
		ja	short loc_7F824C67

loc_7F824C8B:				; CODE XREF: sub_7F824C43+22j
		mov	eax, [ebp+arg_0]
		test	byte ptr [eax],	2
		jz	short loc_7F824CA2
		test	[ebp+arg_8], 2
		jz	short loc_7F824CA2
		push	0
		push	dword ptr [edi]
		call	sub_7F81479E

loc_7F824CA2:				; CODE XREF: sub_7F824C43+4Ej
					; sub_7F824C43+54j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F824C43	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F824CAB	proc near		; CODE XREF: sub_7F8178D8+1A9p
					; sub_7F8178D8+22Fp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		push	esi
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+arg_8]
		mov	ecx, [ecx]
		cmp	[edx], eax
		jz	loc_7F824D42
		cmp	dword_7F838078,	eax
		mov	eax, 253h
		jnz	short loc_7F824CFD
		mov	eax, [ecx+0Ah]
		mov	esi, [eax]
		mov	dword_7F83807C,	esi
		mov	ax, [esi+2Ch]
		mov	word_7F838084, ax
		mov	eax, [esi]
		mov	dword_7F838078,	eax
		mov	eax, [esi+4]
		mov	dword_7F838080,	eax
		xor	eax, eax
		mov	esi, [ecx+0Ah]
		mov	dword_7F83807C,	esi

loc_7F824CFD:				; CODE XREF: sub_7F824CAB+21j
		test	eax, eax
		jnz	short loc_7F824D42
		push	[ebp+arg_C]
		push	edx
		push	[ebp+arg_4]
		push	ecx
		call	sub_7F824D4D
		mov	esi, eax
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F824D26
		call	sub_7F82A34F
		jmp	short loc_7F824D34
; ---------------------------------------------------------------------------

loc_7F824D26:				; CODE XREF: sub_7F824CAB+72j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F824D34:				; CODE XREF: sub_7F824CAB+79j
		mov	dword_7F838078,	0
		mov	eax, esi
		jmp	short loc_7F824D48
; ---------------------------------------------------------------------------

loc_7F824D42:				; CODE XREF: sub_7F824CAB+10j
					; sub_7F824CAB+54j
		mov	dword ptr [edx], 0

loc_7F824D48:				; CODE XREF: sub_7F824CAB+95j
		pop	esi
		pop	ebp
		retn	10h
sub_7F824CAB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F824D4D	proc near		; CODE XREF: sub_7F824CAB+5Ep
					; sub_7F8255B9+F5p ...

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= dword	ptr -2
arg_0		= dword	ptr  8
lpBuffer	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_C], 0
		mov	eax, [esi+6]
		test	byte ptr [esi],	1
		mov	ecx, [eax]
		jz	short loc_7F824D6F
		mov	eax, [ecx+0Ch]
		jmp	short loc_7F824D72
; ---------------------------------------------------------------------------

loc_7F824D6F:				; CODE XREF: sub_7F824D4D+1Bj
		mov	eax, [ecx+10h]

loc_7F824D72:				; CODE XREF: sub_7F824D4D+20j
		cmp	[ebp+arg_C], 0FFFFFFFFh
		jnz	short loc_7F824D7D
		mov	ecx, [esi+2]
		jmp	short loc_7F824D80
; ---------------------------------------------------------------------------

loc_7F824D7D:				; CODE XREF: sub_7F824D4D+29j
		mov	ecx, [ebp+arg_C]

loc_7F824D80:				; CODE XREF: sub_7F824D4D+2Ej
		sub	eax, ecx
		mov	edi, [ebp+arg_8]
		cmp	[edi], eax
		jbe	short loc_7F824D92
		mov	[ebp+var_C], 1002h
		mov	[edi], eax

loc_7F824D92:				; CODE XREF: sub_7F824D4D+3Aj
		mov	ebx, [edi]
		mov	eax, ecx
		shr	eax, 0Dh
		and	cx, 1FFFh
		movzx	edx, cx
		mov	word ptr [ebp+var_2], ax
		mov	eax, 2000h
		sub	eax, edx
		cmp	eax, ebx
		jb	short loc_7F824DB2
		mov	eax, ebx

loc_7F824DB2:				; CODE XREF: sub_7F824D4D+61j
		lea	edx, [ebp+var_8]
		mov	[ebp+var_8], eax
		mov	ax, word ptr [ebp+var_2]
		push	edx		; int
		push	[ebp+lpBuffer]	; lpBuffer
		push	ecx		; __int16
		inc	word ptr [ebp+var_2]
		push	eax		; int
		push	esi		; int
		call	sub_7F824E37
		mov	ecx, [ebp+lpBuffer]
		sub	ebx, [ebp+var_8]
		mov	edx, [ebp+var_8]
		lea	ecx, [edx+ecx]
		mov	[ebp+var_10], ecx
		jz	short loc_7F824E18

loc_7F824DDD:				; CODE XREF: sub_7F824D4D+C9j
		test	eax, eax
		jnz	short loc_7F824E18
		cmp	ebx, 2000h
		mov	eax, ebx
		jb	short loc_7F824DF0
		mov	eax, 2000h

loc_7F824DF0:				; CODE XREF: sub_7F824D4D+9Cj
		mov	cx, word ptr [ebp+var_2]
		mov	[ebp+var_8], eax
		inc	word ptr [ebp+var_2]
		lea	eax, [ebp+var_8]
		push	eax		; int
		push	[ebp+var_10]	; lpBuffer
		push	0		; __int16
		push	ecx		; int
		push	esi		; int
		call	sub_7F824E37
		sub	ebx, [ebp+var_8]
		mov	ecx, [ebp+var_8]
		add	[ebp+var_10], ecx
		test	ebx, ebx
		jnz	short loc_7F824DDD

loc_7F824E18:				; CODE XREF: sub_7F824D4D+8Ej
					; sub_7F824D4D+92j
		mov	ecx, [edi]
		sub	ecx, ebx
		cmp	[ebp+arg_C], 0FFFFFFFFh
		mov	[edi], ecx
		jnz	short loc_7F824E27
		add	[esi+2], ecx

loc_7F824E27:				; CODE XREF: sub_7F824D4D+D5j
		test	eax, eax
		jnz	short loc_7F824E2E
		mov	eax, [ebp+var_C]

loc_7F824E2E:				; CODE XREF: sub_7F824D4D+DCj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F824D4D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F824E37(int, int, __int16,	LPVOID lpBuffer, int)
sub_7F824E37	proc near		; CODE XREF: sub_7F824D4D+7Ap
					; sub_7F824D4D+B9p

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		= word ptr  10h
lpBuffer	= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		movzx	eax, word ptr [esp+arg_4]
		shl	eax, 0Dh
		mov	ebp, esp
		movzx	ecx, [ebp+arg_8]
		sub	esp, 0Ch
		add	eax, ecx
		mov	[ebp+var_8], eax
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	edi, [ebp+arg_0]
		mov	ecx, [edi+6]
		test	byte ptr [edi],	1
		mov	ebx, [ecx]
		jz	short loc_7F824E65
		mov	eax, [ebx+0Ch]
		jmp	short loc_7F824E68
; ---------------------------------------------------------------------------

loc_7F824E65:				; CODE XREF: sub_7F824E37+27j
		mov	eax, [ebx+10h]

loc_7F824E68:				; CODE XREF: sub_7F824E37+2Cj
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_8]
		ja	short loc_7F824E86
		mov	edi, [ebp+arg_10]
		mov	esi, 1014h
		mov	dword ptr [edi], 0
		jmp	loc_7F824F18
; ---------------------------------------------------------------------------

loc_7F824E86:				; CODE XREF: sub_7F824E37+3Aj
		push	[ebp+arg_4]
		push	edi
		call	sub_7F824F23
		mov	[ebp+var_C], eax
		test	eax, eax
		jnz	short loc_7F824EE5
		test	byte ptr [edi],	40h
		jz	short loc_7F824EC9
		mov	edi, [ebp+arg_10]
		mov	eax, [edi]
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_4]
		push	eax		; int
		push	[ebp+lpBuffer]	; lpBuffer
		push	[ebp+var_8]	; int
		push	dword ptr [ebx]	; int
		call	sub_7F814DDF
		cmp	eax, 1002h
		mov	esi, eax
		jnz	short loc_7F824EC2
		mov	esi, 1014h

loc_7F824EC2:				; CODE XREF: sub_7F824E37+84j
		mov	eax, [ebp+var_4]
		mov	[edi], eax
		jmp	short loc_7F824F18
; ---------------------------------------------------------------------------

loc_7F824EC9:				; CODE XREF: sub_7F824E37+62j
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+arg_4]
		push	edi
		call	sub_7F825007
		mov	esi, eax
		xor	eax, eax
		test	esi, esi
		jz	short loc_7F824EE5
		mov	edi, [ebp+arg_10]
		mov	[edi], eax
		jmp	short loc_7F824F18
; ---------------------------------------------------------------------------

loc_7F824EE5:				; CODE XREF: sub_7F824E37+5Dj
					; sub_7F824E37+A5j
		mov	edi, [ebp+arg_10]
		mov	eax, [edi]
		add	eax, [ebp+var_8]
		cmp	eax, [ebp+var_4]
		jbe	short loc_7F824EFF
		mov	esi, 1014h
		mov	eax, [ebp+var_4]
		sub	eax, [ebp+var_8]
		mov	[edi], eax

loc_7F824EFF:				; CODE XREF: sub_7F824E37+B9j
		push	dword ptr [edi]
		mov	ecx, [ebp+var_C]
		movzx	edx, [ebp+arg_8]
		mov	eax, [ecx]
		add	eax, edx
		push	eax
		push	[ebp+lpBuffer]
		call	sub_7F82FCE0
		add	esp, 0Ch

loc_7F824F18:				; CODE XREF: sub_7F824E37+4Aj
					; sub_7F824E37+90j ...
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F824E37	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F824F23	proc near		; CODE XREF: sub_7F824E37+53p
					; sub_7F825462+12p ...

var_8		= dword	ptr -8
arg_0		= dword	ptr  4
arg_4		= word ptr  8

		sub	esp, 8
		push	ebx
		push	esi
		xor	cx, cx
		push	edi
		mov	si, 0FFFFh
		push	ebp
		mov	ebx, [esp+18h+arg_0]
		xor	edi, edi
		mov	eax, [ebx+6]
		mov	ebp, [eax]
		xor	eax, eax
		lea	edx, [ebp+14h]

loc_7F824F41:				; CODE XREF: sub_7F824F23+61j
		cmp	dword ptr [edx+3], 0
		jz	short loc_7F824F8C
		mov	bx, [esp+18h+arg_4]
		cmp	[edx+1], bx
		jnz	short loc_7F824F7B
		xor	ebx, ebx
		mov	bl, [edx]
		and	ebx, 2
		mov	[esp+18h+var_8], ebx
		mov	ebx, [esp+18h+arg_0]
		test	byte ptr [ebx],	1
		jz	short loc_7F824F74
		cmp	[esp+18h+var_8], 0
		jnz	short loc_7F824F88
		mov	si, cx
		mov	edi, edx
		jmp	short loc_7F824F7B
; ---------------------------------------------------------------------------

loc_7F824F74:				; CODE XREF: sub_7F824F23+41j
		cmp	[esp+18h+var_8], 0
		jz	short loc_7F824F8C

loc_7F824F7B:				; CODE XREF: sub_7F824F23+2Dj
					; sub_7F824F23+4Fj
		inc	cx
		add	edx, 7
		cmp	cx, 8
		jl	short loc_7F824F41
		jmp	short loc_7F824F8C
; ---------------------------------------------------------------------------

loc_7F824F88:				; CODE XREF: sub_7F824F23+48j
		mov	si, 0FFFFh

loc_7F824F8C:				; CODE XREF: sub_7F824F23+22j
					; sub_7F824F23+56j ...
		test	si, si
		jl	short loc_7F824FC2
		mov	edx, [ebp+8]
		test	edx, edx
		jz	short loc_7F824FB0
		mov	bx, [esp+18h+arg_4]
		cmp	[ebp+6], bx
		jbe	short loc_7F824FB0
		movzx	ecx, bx
		cmp	dword ptr [edx+ecx*4], 0
		jz	short loc_7F824FB0
		xor	eax, eax
		jmp	short loc_7F824FFD
; ---------------------------------------------------------------------------

loc_7F824FB0:				; CODE XREF: sub_7F824F23+73j
					; sub_7F824F23+7Ej ...
		mov	ebx, [esp+18h+arg_0]
		mov	cx, si
		mov	edx, edi
		test	byte ptr [ebx+1], 80h
		jnz	short loc_7F824FC2
		or	byte ptr [edi],	2

loc_7F824FC2:				; CODE XREF: sub_7F824F23+6Cj
					; sub_7F824F23+9Aj
		cmp	cx, 8
		jge	short loc_7F824FFD
		cmp	dword ptr [edx+3], 0
		jz	short loc_7F824FFD
		test	cx, cx
		jz	short loc_7F824FFA
		lea	edi, [esp+18h+var_8]
		mov	esi, edx
		movsd
		movsw
		movsb
		jle	short loc_7F824FF0

loc_7F824FDF:				; CODE XREF: sub_7F824F23+CBj
		dec	cx
		lea	eax, [edx-7]
		mov	edi, edx
		mov	esi, eax
		movsd
		movsw
		movsb
		mov	edx, eax
		jnz	short loc_7F824FDF

loc_7F824FF0:				; CODE XREF: sub_7F824F23+BAj
		lea	esi, [esp+18h+var_8]
		mov	edi, edx
		movsd
		movsw
		movsb

loc_7F824FFA:				; CODE XREF: sub_7F824F23+AEj
		mov	eax, [edx+3]

loc_7F824FFD:				; CODE XREF: sub_7F824F23+8Bj
					; sub_7F824F23+A3j ...
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 8
		retn	8
sub_7F824F23	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F825007	proc near		; CODE XREF: sub_7F824E37+9Ap
					; sub_7F825462+2Bp ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		mov	eax, [ebp+arg_0]
		push	esi
		xor	ebx, ebx
		push	edi
		mov	ecx, [eax+6]
		mov	[ebp+var_C], 2000h
		mov	edi, [ecx]
		mov	[ebp+var_8], 0
		cmp	[edi+48h], ebx
		lea	esi, [edi+45h]
		jz	short loc_7F825067
		test	byte ptr [esi],	1
		mov	[ebp+var_2], 7
		jz	short loc_7F82504D
		push	esi
		push	eax
		call	sub_7F8251BB
		mov	[ebp+var_8], eax
		cmp	eax, ebx
		jnz	loc_7F825190

loc_7F82504D:				; CODE XREF: sub_7F825007+32j
		mov	ebx, [esi+3]
		xor	eax, eax
		mov	[esi+3], eax
		mov	[esi], al

loc_7F825057:				; CODE XREF: sub_7F825007+95j
		mov	eax, [ebp+arg_0]
		mov	ax, [eax]
		test	ah, 20h
		jz	short loc_7F8250AA
		jmp	loc_7F82512D
; ---------------------------------------------------------------------------

loc_7F825067:				; CODE XREF: sub_7F825007+27j
		sub	esi, 31h
		cmp	dword ptr [esi+3], 0
		jz	short loc_7F825079

loc_7F825070:				; CODE XREF: sub_7F825007+70j
		add	esi, 7
		cmp	dword ptr [esi+3], 0
		jnz	short loc_7F825070

loc_7F825079:				; CODE XREF: sub_7F825007+67j
		mov	eax, esi
		mov	ecx, 7
		sub	eax, edi
		push	20h
		sub	eax, 14h
		push	2000h
		cdq
		idiv	ecx
		mov	[ebp+var_2], ax
		call	sub_7F82F18D
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F825057
		mov	[ebp+var_8], 400h
		jmp	loc_7F825190
; ---------------------------------------------------------------------------

loc_7F8250AA:				; CODE XREF: sub_7F825007+59j
		test	al, 1
		jz	short loc_7F8250DC
		mov	ecx, [edi+8]
		test	ecx, ecx
		jz	short loc_7F8250DC
		mov	ax, [ebp+arg_4]
		cmp	[edi+6], ax
		jbe	short loc_7F8250DC
		movzx	eax, ax
		mov	ecx, [ecx+eax*4]
		test	ecx, ecx
		jz	short loc_7F8250DC
		lea	eax, [ebp+var_C]
		push	eax		; int
		push	dword ptr [ebx]	; lpBuffer
		push	0FFFFFFF8h	; int
		push	ecx		; int
		call	sub_7F814DDF
		mov	[ebp+var_8], eax
		jmp	short loc_7F825138
; ---------------------------------------------------------------------------

loc_7F8250DC:				; CODE XREF: sub_7F825007+A5j
					; sub_7F825007+ACj ...
		movzx	ecx, [ebp+arg_4]
		shl	ecx, 0Dh
		mov	eax, [edi+10h]
		cmp	ecx, eax
		jnb	short loc_7F82512D
		mov	edx, [ebp+var_C]
		add	edx, ecx
		cmp	edx, eax
		jbe	short loc_7F8250F8
		sub	eax, ecx
		mov	[ebp+var_C], eax

loc_7F8250F8:				; CODE XREF: sub_7F825007+EAj
		lea	eax, [ebp+var_C]
		push	eax		; int
		push	dword ptr [ebx]	; lpBuffer
		push	ecx		; int
		push	dword ptr [edi]	; int
		call	sub_7F814DDF
		mov	edx, 2000h
		mov	[ebp+var_8], eax
		cmp	[ebp+var_C], edx
		jz	short loc_7F825138
		sub	edx, [ebp+var_C]
		mov	edi, [ebx]
		add	edi, [ebp+var_C]
		xor	eax, eax
		mov	ecx, edx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		jmp	short loc_7F825138
; ---------------------------------------------------------------------------

loc_7F82512D:				; CODE XREF: sub_7F825007+5Bj
					; sub_7F825007+E1j
		mov	edi, [ebx]
		xor	eax, eax
		mov	ecx, 800h
		rep stosd

loc_7F825138:				; CODE XREF: sub_7F825007+D3j
					; sub_7F825007+10Aj ...
		cmp	[ebp+var_8], 1002h
		jnz	short loc_7F82514A
		mov	[ebp+var_8], 0
		jmp	short loc_7F825150
; ---------------------------------------------------------------------------

loc_7F82514A:				; CODE XREF: sub_7F825007+138j
		cmp	[ebp+var_8], 0
		jnz	short loc_7F825196

loc_7F825150:				; CODE XREF: sub_7F825007+141j
		cmp	[ebp+var_2], 0
		jle	short loc_7F82516A

loc_7F825157:				; CODE XREF: sub_7F825007+161j
		lea	eax, [esi-7]
		mov	edi, esi
		mov	esi, eax
		movsd
		movsw
		movsb
		dec	[ebp+var_2]
		mov	esi, eax
		jnz	short loc_7F825157

loc_7F82516A:				; CODE XREF: sub_7F825007+14Ej
		mov	ax, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		mov	[esi+3], ebx
		mov	[esi+1], ax
		mov	ax, [ecx]
		and	ax, 8001h
		mov	byte ptr [esi],	2
		cmp	ax, 1
		jz	short loc_7F82518B
		mov	byte ptr [esi],	0

loc_7F82518B:				; CODE XREF: sub_7F825007+17Fj
		mov	ecx, [ebp+arg_8]
		mov	[ecx], ebx

loc_7F825190:				; CODE XREF: sub_7F825007+40j
					; sub_7F825007+9Ej
		cmp	[ebp+var_8], 0
		jz	short loc_7F8251AF

loc_7F825196:				; CODE XREF: sub_7F825007+147j
		test	ebx, ebx
		jz	short loc_7F8251A6
		cmp	dword ptr [esi+3], 0
		jnz	short loc_7F8251A6
		push	ebx
		call	sub_7F82F1E1

loc_7F8251A6:				; CODE XREF: sub_7F825007+191j
					; sub_7F825007+197j
		mov	ecx, [ebp+arg_8]
		mov	dword ptr [ecx], 0

loc_7F8251AF:				; CODE XREF: sub_7F825007+18Dj
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F825007	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8251BB	proc near		; CODE XREF: sub_7F825007+36p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 8
		mov	ecx, [eax+6]
		push	ebx
		push	esi
		mov	ebx, [ebp+arg_4]
		mov	si, [ebx+1]
		push	edi
		mov	edi, [ecx]
		cmp	[edi+6], si
		ja	short loc_7F825204
		movzx	eax, si
		push	30h
		lea	ecx, ds:14h[eax*4]
		push	ecx
		push	dword ptr [edi+8]
		call	sub_7F82F0CD
		test	eax, eax
		jnz	short loc_7F8251FA
		mov	eax, 400h
		jmp	short loc_7F82526F
; ---------------------------------------------------------------------------

loc_7F8251FA:				; CODE XREF: sub_7F8251BB+36j
		mov	[edi+8], eax
		lea	eax, [esi+5]
		mov	[edi+6], ax

loc_7F825204:				; CODE XREF: sub_7F8251BB+1Dj
		movzx	eax, si
		mov	ecx, [edi+8]
		lea	esi, ds:0[eax*4]
		mov	eax, [ecx+esi]
		mov	[ebp+var_4], eax
		test	eax, eax
		jz	short loc_7F825231
		push	2000h		; nNumberOfBytesToRead
		mov	eax, [ebx+3]
		push	dword ptr [eax]	; int
		push	0FFFFFFF8h	; int
		push	[ebp+var_4]	; int
		call	sub_7F814B43
		jmp	short loc_7F82526F
; ---------------------------------------------------------------------------

loc_7F825231:				; CODE XREF: sub_7F8251BB+5Ej
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_4]
		mov	[ebp+var_4], 8Eh
		push	eax
		push	1FF8h
		push	ecx
		call	sub_7F812FC1
		test	eax, eax
		jnz	short loc_7F82526F
		push	2000h		; nNumberOfBytesToRead
		mov	eax, [ebx+3]
		push	dword ptr [eax]	; int
		push	0FFFFFFF8h	; int
		push	[ebp+var_8]	; int
		call	sub_7F814D6E
		test	eax, eax
		jnz	short loc_7F82526F
		mov	edx, [ebp+var_4]
		mov	ecx, [edi+8]
		mov	[ecx+esi], edx

loc_7F82526F:				; CODE XREF: sub_7F8251BB+3Dj
					; sub_7F8251BB+74j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F8251BB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F825278	proc near		; CODE XREF: sub_7F8178D8+1D2p
					; sub_7F8178D8+254p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
nNumberOfBytesToRead= dword ptr	 10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ecx, [esp+nNumberOfBytesToRead]
		mov	ebp, esp
		test	ecx, ecx
		push	esi
		jnz	short loc_7F82528B
		xor	eax, eax
		jmp	loc_7F82531C
; ---------------------------------------------------------------------------

loc_7F82528B:				; CODE XREF: sub_7F825278+Aj
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		test	byte ptr [edx],	1
		jnz	short loc_7F82529C
		mov	esi, 203h
		jmp	short loc_7F82531A
; ---------------------------------------------------------------------------

loc_7F82529C:				; CODE XREF: sub_7F825278+1Bj
		cmp	dword_7F838078,	0
		mov	esi, 253h
		jnz	short loc_7F8252D9
		mov	eax, [edx+0Ah]
		mov	esi, [eax]
		mov	dword_7F83807C,	esi
		mov	ax, [esi+2Ch]
		mov	word_7F838084, ax
		mov	eax, [esi]
		mov	dword_7F838078,	eax
		mov	eax, [esi+4]
		mov	dword_7F838080,	eax
		mov	esi, [edx+0Ah]
		mov	dword_7F83807C,	esi
		xor	esi, esi

loc_7F8252D9:				; CODE XREF: sub_7F825278+30j
		test	esi, esi
		jnz	short loc_7F82531A
		push	[ebp+arg_C]	; int
		push	ecx		; nNumberOfBytesToRead
		push	[ebp+arg_4]	; int
		push	edx		; int
		call	sub_7F825321
		mov	esi, eax
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F825302
		call	sub_7F82A34F
		jmp	short loc_7F825310
; ---------------------------------------------------------------------------

loc_7F825302:				; CODE XREF: sub_7F825278+81j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F825310:				; CODE XREF: sub_7F825278+88j
		mov	dword_7F838078,	0

loc_7F82531A:				; CODE XREF: sub_7F825278+22j
					; sub_7F825278+63j
		mov	eax, esi

loc_7F82531C:				; CODE XREF: sub_7F825278+Ej
		pop	esi
		pop	ebp
		retn	10h
sub_7F825278	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F825321(int, int, DWORD nNumberOfBytesToRead, int)
sub_7F825321	proc near		; CODE XREF: sub_7F825278+6Dp
					; sub_7F8255B9+118p

var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
nNumberOfBytesToRead= dword ptr	 10h
arg_C		= dword	ptr  14h

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 8
		cmp	[ebp+arg_C], 0FFFFFFFFh
		push	ebx
		push	esi
		push	edi
		jnz	short loc_7F82533A
		mov	ecx, [ebp+arg_0]
		mov	edi, [ecx+2]
		jmp	short loc_7F82533D
; ---------------------------------------------------------------------------

loc_7F82533A:				; CODE XREF: sub_7F825321+Fj
		mov	edi, [ebp+arg_C]

loc_7F82533D:				; CODE XREF: sub_7F825321+17j
		mov	esi, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		test	byte ptr [ecx+1], 80h
		jz	short loc_7F82539E
		mov	edx, [ecx+6]
		mov	ebx, [ebp+nNumberOfBytesToRead]
		add	ebx, [ebp+arg_C]
		mov	ecx, [edx]
		mov	edx, [ecx+10h]
		add	edx, 87h
		and	dl, 80h
		cmp	ebx, edx
		jbe	loc_7F825451
		cmp	[ebp+arg_C], edx
		jnb	loc_7F825448
		sub	edx, [ebp+arg_C]
		mov	[ebp+nNumberOfBytesToRead], edx

loc_7F825377:				; CODE XREF: sub_7F825321+134j
		push	[ebp+nNumberOfBytesToRead] ; nNumberOfBytesToRead
		push	esi		; int
		push	[ebp+arg_C]	; int
		push	dword ptr [ecx]	; int
		call	sub_7F814B43
		test	eax, eax
		jnz	loc_7F825448
		cmp	[ebp+arg_C], 0
		jge	short loc_7F82539E
		movsx	eax, word ptr [ebp+arg_C]
		sub	esi, eax
		xor	edi, edi
		add	[ebp+nNumberOfBytesToRead], eax

loc_7F82539E:				; CODE XREF: sub_7F825321+26j
					; sub_7F825321+70j
		mov	eax, edi
		mov	ecx, edi
		and	cx, 1FFFh
		mov	edx, 2000h
		shr	eax, 0Dh
		mov	[ebp+var_2], ax
		movzx	eax, cx
		sub	edx, eax
		mov	eax, [ebp+nNumberOfBytesToRead]
		cmp	edx, eax
		jb	short loc_7F8253C1
		mov	edx, eax

loc_7F8253C1:				; CODE XREF: sub_7F825321+9Cj
		mov	ax, [ebp+var_2]
		mov	[ebp+var_8], edx
		inc	[ebp+var_2]
		lea	edx, [ebp+var_8]
		push	edx
		push	esi
		push	ecx
		push	eax
		push	[ebp+arg_0]
		call	sub_7F825462
		test	eax, eax
		jnz	short loc_7F825448
		mov	ebx, [ebp+nNumberOfBytesToRead]
		add	esi, [ebp+var_8]
		sub	ebx, [ebp+var_8]
		test	ebx, ebx
		jz	short loc_7F825424

loc_7F8253EC:				; CODE XREF: sub_7F825321+101j
		cmp	ebx, 2000h
		mov	eax, ebx
		jb	short loc_7F8253FB
		mov	eax, 2000h

loc_7F8253FB:				; CODE XREF: sub_7F825321+D3j
		lea	ecx, [ebp+var_8]
		mov	[ebp+var_8], eax
		mov	ax, [ebp+var_2]
		push	ecx
		inc	[ebp+var_2]
		push	esi
		push	0
		push	eax
		push	[ebp+arg_0]
		call	sub_7F825462
		test	eax, eax
		jnz	short loc_7F825448
		sub	ebx, [ebp+var_8]
		add	esi, [ebp+var_8]
		test	ebx, ebx
		jnz	short loc_7F8253EC

loc_7F825424:				; CODE XREF: sub_7F825321+C9j
		mov	ecx, [ebp+arg_0]
		sub	[ebp+nNumberOfBytesToRead], ebx
		mov	esi, [ecx+6]
		cmp	[ebp+arg_C], 0FFFFFFFFh
		mov	edx, [esi]
		jnz	short loc_7F82543B
		mov	esi, [ebp+nNumberOfBytesToRead]
		add	[ecx+2], esi

loc_7F82543B:				; CODE XREF: sub_7F825321+112j
		mov	ecx, [ebp+nNumberOfBytesToRead]
		add	ecx, edi
		cmp	[edx+0Ch], ecx
		jnb	short loc_7F825448
		mov	[edx+0Ch], ecx

loc_7F825448:				; CODE XREF: sub_7F825321+4Aj
					; sub_7F825321+66j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------

loc_7F825451:				; CODE XREF: sub_7F825321+41j
		cmp	[ebp+arg_C], 0FFFFFFF8h
		jge	loc_7F825377
		mov	eax, 400h
		jmp	short loc_7F825448
sub_7F825321	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F825462	proc near		; CODE XREF: sub_7F825321+B5p
					; sub_7F825321+F0p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		push	[ebp+arg_4]
		push	esi
		xor	edi, edi
		call	sub_7F824F23
		mov	[ebp+var_4], eax
		cmp	eax, edi
		jnz	short loc_7F825498
		test	byte ptr [esi],	40h
		jnz	short loc_7F8254C1
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_4]
		push	esi
		call	sub_7F825007
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F8254C1

loc_7F825498:				; CODE XREF: sub_7F825462+1Cj
		mov	eax, [esi+6]
		mov	ecx, [ebp+arg_10]
		push	dword ptr [ecx]
		mov	ebx, [eax]
		mov	ecx, [ebp+var_4]
		push	[ebp+arg_C]
		movzx	eax, [ebp+arg_8]
		add	eax, [ecx]
		push	eax
		call	sub_7F82FCE0
		add	esp, 0Ch
		test	byte ptr [esi+1], 80h
		jnz	short loc_7F8254C1
		or	byte ptr [ebx+14h], 1

loc_7F8254C1:				; CODE XREF: sub_7F825462+21j
					; sub_7F825462+34j ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F825462	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8254CC	proc near		; CODE XREF: sub_7F818816+11Cp
					; sub_7F819F06+65p

arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		mov	ecx, [edx+6]
		test	byte ptr [edx],	1
		mov	ebx, [ecx]
		jz	short loc_7F8254E8
		mov	edi, [ebx+0Ch]
		jmp	short loc_7F8254EB
; ---------------------------------------------------------------------------

loc_7F8254E8:				; CODE XREF: sub_7F8254CC+15j
		mov	edi, [ebx+10h]

loc_7F8254EB:				; CODE XREF: sub_7F8254CC+1Aj
		movsx	ecx, [ebp+arg_4]
		cmp	ecx, 1
		jz	short loc_7F825510
		cmp	ecx, 2
		jz	short loc_7F82551A
		cmp	ecx, 3
		jz	short loc_7F825524
		mov	esi, [ebp+arg_8]

loc_7F825501:				; CODE XREF: sub_7F8254CC+4Cj
					; sub_7F8254CC+56j ...
		add	edx, 2
		xor	ebx, ebx
		mov	ecx, [edx]
		test	ecx, ecx
		jge	short loc_7F825530
		mov	[edx], ebx
		jmp	short loc_7F82553B
; ---------------------------------------------------------------------------

loc_7F825510:				; CODE XREF: sub_7F8254CC+26j
		mov	esi, [ebp+arg_8]
		mov	ecx, [esi]
		mov	[edx+2], ecx
		jmp	short loc_7F825501
; ---------------------------------------------------------------------------

loc_7F82551A:				; CODE XREF: sub_7F8254CC+2Bj
		mov	esi, [ebp+arg_8]
		mov	ecx, [esi]
		add	[edx+2], ecx
		jmp	short loc_7F825501
; ---------------------------------------------------------------------------

loc_7F825524:				; CODE XREF: sub_7F8254CC+30j
		mov	ecx, edi
		mov	esi, [ebp+arg_8]
		sub	ecx, [esi]
		mov	[edx+2], ecx
		jmp	short loc_7F825501
; ---------------------------------------------------------------------------

loc_7F825530:				; CODE XREF: sub_7F8254CC+3Ej
		cmp	edi, ecx
		jnb	short loc_7F82553B
		mov	eax, 1002h
		mov	[edx], edi

loc_7F82553B:				; CODE XREF: sub_7F8254CC+42j
					; sub_7F8254CC+66j
		mov	ecx, [edx]
		pop	edi
		mov	[esi], ecx
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_7F8254CC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F825546	proc near		; CODE XREF: sub_7F818816+129p
					; sub_7F8189C2+75p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		mov	ecx, [esp+arg_0]
		mov	ecx, [ecx]
		mov	edx, [ecx+6]
		mov	cx, [ecx]
		mov	edx, [edx]
		test	ch, 80h
		jz	short loc_7F825565
		mov	eax, 1015h
		jmp	short loc_7F82559A
; ---------------------------------------------------------------------------

loc_7F825565:				; CODE XREF: sub_7F825546+16j
		test	cl, 1
		jnz	short loc_7F825571
		mov	eax, 203h
		jmp	short loc_7F82559A
; ---------------------------------------------------------------------------

loc_7F825571:				; CODE XREF: sub_7F825546+22j
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_7F825584
		cmp	ecx, 1
		jz	short loc_7F82558C
		cmp	ecx, 2
		jz	short loc_7F825594
		jmp	short loc_7F82559A
; ---------------------------------------------------------------------------

loc_7F825584:				; CODE XREF: sub_7F825546+30j
		mov	ecx, [ebp+arg_4]
		mov	[edx+0Ch], ecx
		jmp	short loc_7F82559A
; ---------------------------------------------------------------------------

loc_7F82558C:				; CODE XREF: sub_7F825546+35j
		mov	ecx, [ebp+arg_4]
		add	[edx+0Ch], ecx
		jmp	short loc_7F82559A
; ---------------------------------------------------------------------------

loc_7F825594:				; CODE XREF: sub_7F825546+3Aj
		mov	ecx, [ebp+arg_4]
		sub	[edx+0Ch], ecx

loc_7F82559A:				; CODE XREF: sub_7F825546+1Dj
					; sub_7F825546+29j ...
		pop	ebp
		retn	0Ch
sub_7F825546	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82559E	proc near		; CODE XREF: sub_7F817CD4+39p
					; sub_7F8189C2+63p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, [eax]
		mov	edx, [ecx+6]
		test	byte ptr [ecx],	1
		mov	eax, [edx]
		jz	short loc_7F8255B3
		mov	eax, [eax+0Ch]
		jmp	short locret_7F8255B6
; ---------------------------------------------------------------------------

loc_7F8255B3:				; CODE XREF: sub_7F82559E+Ej
		mov	eax, [eax+10h]

locret_7F8255B6:			; CODE XREF: sub_7F82559E+13j
		retn	4
sub_7F82559E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8255B9	proc near		; CODE XREF: sub_7F818786+65p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
nNumberOfBytesToRead= dword ptr	-0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ecx, [esp+arg_10]
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_10], 0
		push	esi
		mov	ebx, [eax]
		push	edi
		mov	edi, [ecx]
		mov	ecx, [ebp+arg_8]
		mov	eax, [ecx]
		mov	ecx, edi
		mov	[ebp+var_14], eax
		mov	eax, 0C000h
		cmp	ecx, eax
		jb	short loc_7F8255E9
		mov	ecx, eax

loc_7F8255E9:				; CODE XREF: sub_7F8255B9+2Cj
		push	0
		mov	[ebp+var_8], ecx
		push	ecx
		call	sub_7F82F03B
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	short loc_7F825643
		mov	ecx, edi
		mov	eax, 2000h
		cmp	ecx, eax
		jb	short loc_7F825608
		mov	ecx, eax

loc_7F825608:				; CODE XREF: sub_7F8255B9+4Bj
		push	0
		mov	[ebp+var_8], ecx
		push	ecx
		call	sub_7F82F03B
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	short loc_7F825643
		mov	ecx, edi
		mov	eax, 400h
		cmp	ecx, eax
		jb	short loc_7F825627
		mov	ecx, eax

loc_7F825627:				; CODE XREF: sub_7F8255B9+6Aj
		push	0
		mov	[ebp+var_8], ecx
		push	ecx
		call	sub_7F82F03B
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	short loc_7F825643
		mov	esi, 400h
		jmp	loc_7F82571A
; ---------------------------------------------------------------------------

loc_7F825643:				; CODE XREF: sub_7F8255B9+40j
					; sub_7F8255B9+5Fj ...
		cmp	dword_7F838078,	0
		jz	short loc_7F825653
		mov	esi, 253h
		jmp	short loc_7F825683
; ---------------------------------------------------------------------------

loc_7F825653:				; CODE XREF: sub_7F8255B9+91j
		mov	eax, [ebx+0Ah]
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		xor	esi, esi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	edx, [ebx+0Ah]
		mov	dword_7F83807C,	edx

loc_7F825683:				; CODE XREF: sub_7F8255B9+98j
		test	esi, esi
		jnz	loc_7F82571A
		test	edi, edi
		jz	short loc_7F8256EC

loc_7F82568F:				; CODE XREF: sub_7F8255B9+131j
		cmp	[ebp+var_10], 0
		jnz	short loc_7F8256EC
		mov	eax, edi
		mov	ecx, [ebp+var_8]
		cmp	eax, ecx
		jb	short loc_7F8256A0
		mov	eax, ecx

loc_7F8256A0:				; CODE XREF: sub_7F8255B9+E3j
		lea	ecx, [ebp+nNumberOfBytesToRead]
		mov	[ebp+nNumberOfBytesToRead], eax
		push	[ebp+arg_4]
		push	ecx
		push	[ebp+var_4]
		push	ebx
		call	sub_7F824D4D
		cmp	eax, 1002h
		mov	esi, eax
		jnz	short loc_7F8256C1
		mov	[ebp+var_10], esi
		jmp	short loc_7F8256C5
; ---------------------------------------------------------------------------

loc_7F8256C1:				; CODE XREF: sub_7F8255B9+101j
		test	esi, esi
		jnz	short loc_7F8256EC

loc_7F8256C5:				; CODE XREF: sub_7F8255B9+106j
		push	[ebp+arg_C]	; int
		push	[ebp+nNumberOfBytesToRead] ; nNumberOfBytesToRead
		push	[ebp+var_4]	; int
		push	[ebp+var_14]	; int
		call	sub_7F825321
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F8256EC
		sub	edi, [ebp+nNumberOfBytesToRead]
		mov	eax, [ebp+nNumberOfBytesToRead]
		add	[ebp+arg_4], eax
		add	[ebp+arg_C], eax
		test	edi, edi
		jnz	short loc_7F82568F

loc_7F8256EC:				; CODE XREF: sub_7F8255B9+D4j
					; sub_7F8255B9+DAj ...
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F825702
		call	sub_7F82A34F
		jmp	short loc_7F825710
; ---------------------------------------------------------------------------

loc_7F825702:				; CODE XREF: sub_7F8255B9+140j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F825710:				; CODE XREF: sub_7F8255B9+147j
		mov	dword_7F838078,	0

loc_7F82571A:				; CODE XREF: sub_7F8255B9+85j
					; sub_7F8255B9+CCj
		mov	eax, [ebp+arg_10]
		sub	[eax], edi
		cmp	[ebp+var_4], 0
		jz	short loc_7F82572D
		push	[ebp+var_4]
		call	sub_7F82F149

loc_7F82572D:				; CODE XREF: sub_7F8255B9+16Aj
		mov	eax, esi
		test	esi, esi
		jnz	short loc_7F825736
		mov	eax, [ebp+var_10]

loc_7F825736:				; CODE XREF: sub_7F8255B9+178j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F8255B9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82573F	proc near		; CODE XREF: sub_7F8190B0+5Ep
					; sub_7F8190B0+A3p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		cmp	dword_7F838078,	0
		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		push	esi
		mov	ecx, [eax]
		jz	short loc_7F825759
		mov	esi, 253h
		jmp	short loc_7F825789
; ---------------------------------------------------------------------------

loc_7F825759:				; CODE XREF: sub_7F82573F+11j
		mov	eax, [ecx+0Ah]
		mov	edx, [eax]
		mov	dword_7F83807C,	edx
		mov	ax, [edx+2Ch]
		mov	word_7F838084, ax
		mov	esi, [edx]
		mov	dword_7F838078,	esi
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	esi, [ecx+0Ah]
		mov	dword_7F83807C,	esi
		xor	esi, esi

loc_7F825789:				; CODE XREF: sub_7F82573F+18j
		test	esi, esi
		jnz	short loc_7F8257CD
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	ecx
		call	sub_7F8257D4
		mov	esi, eax
		mov	ecx, dword_7F838078
		cmp	word ptr [ecx+254h], 0
		jz	short loc_7F8257B5
		call	sub_7F82A34F
		jmp	short loc_7F8257C3
; ---------------------------------------------------------------------------

loc_7F8257B5:				; CODE XREF: sub_7F82573F+6Dj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F8257C3:				; CODE XREF: sub_7F82573F+74j
		mov	dword_7F838078,	0

loc_7F8257CD:				; CODE XREF: sub_7F82573F+4Cj
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	10h
sub_7F82573F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8257D4	proc near		; CODE XREF: sub_7F82573F+58p
					; sub_7F8258A3+74p ...

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		= byte ptr  14h

		push	ebp
		mov	ecx, [esp+arg_4]
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	esi, [ecx]
		mov	eax, esi
		mov	ebx, [ebp+arg_0]
		shr	eax, 0Dh
		mov	word ptr [ebp+var_4], ax
		mov	eax, esi
		and	ax, 1FFFh
		mov	word ptr [ebp+var_4+2],	ax
		mov	eax, [ebx+6]
		test	byte ptr [ebx],	1
		mov	ecx, [eax]
		jz	short loc_7F825808
		mov	edi, [ecx+0Ch]
		jmp	short loc_7F82580B
; ---------------------------------------------------------------------------

loc_7F825808:				; CODE XREF: sub_7F8257D4+2Dj
		mov	edi, [ecx+10h]

loc_7F82580B:				; CODE XREF: sub_7F8257D4+32j
		sub	edi, esi
		mov	eax, [ebp+arg_8]
		cmp	edi, eax
		jb	short loc_7F825816
		mov	edi, eax

loc_7F825816:				; CODE XREF: sub_7F8257D4+3Ej
					; sub_7F8257D4+AAj
		push	[ebp+var_4]
		push	ebx
		call	sub_7F824F23
		mov	[ebp+var_8], eax
		test	eax, eax
		mov	eax, 0
		jnz	short loc_7F825838
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+var_4]
		push	ebx
		call	sub_7F825007

loc_7F825838:				; CODE XREF: sub_7F8257D4+55j
		test	eax, eax
		jnz	short loc_7F825895
		mov	edx, [ebp+var_8]
		movzx	ecx, word ptr [ebp+var_4+2]
		add	ecx, [edx]
		mov	[ebp+var_C], ecx

loc_7F825848:				; CODE XREF: sub_7F8257D4+92j
		mov	ecx, edi
		dec	edi
		test	ecx, ecx
		jle	short loc_7F825868
		mov	edx, [ebp+var_C]
		mov	cl, [ebp+arg_C]
		inc	[ebp+var_C]
		cmp	[edx], cl
		jz	short loc_7F825868
		inc	word ptr [ebp+var_4+2]
		cmp	word ptr [ebp+var_4+2],	2000h
		jb	short loc_7F825848

loc_7F825868:				; CODE XREF: sub_7F8257D4+79j
					; sub_7F8257D4+86j
		test	edi, edi
		jl	short loc_7F825880
		cmp	word ptr [ebp+var_4+2],	2000h
		jb	short loc_7F825887
		mov	word ptr [ebp+var_4+2],	0
		inc	word ptr [ebp+var_4]
		jmp	short loc_7F825816
; ---------------------------------------------------------------------------

loc_7F825880:				; CODE XREF: sub_7F8257D4+96j
		mov	esi, 0FFFFFFFFh
		jmp	short loc_7F825895
; ---------------------------------------------------------------------------

loc_7F825887:				; CODE XREF: sub_7F8257D4+9Ej
		movzx	edx, word ptr [ebp+var_4]
		shl	edx, 0Dh
		movzx	ecx, word ptr [ebp+var_4+2]
		lea	esi, [edx+ecx]

loc_7F825895:				; CODE XREF: sub_7F8257D4+66j
					; sub_7F8257D4+B1j
		mov	ecx, [ebp+arg_4]
		pop	edi
		mov	[ecx], esi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F8257D4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8258A3	proc near		; CODE XREF: sub_7F81917E+AFp

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
lpString1	= dword	ptr -0Ch
lpString2	= 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	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 1Ch
		push	ebx
		mov	ecx, [ebp+arg_8]
		push	esi
		push	edi
		mov	edi, [eax]
		mov	ebx, [ecx]
		xor	eax, eax
		mov	[ebp+var_14], eax
		mov	[ebp+var_10], eax
		mov	[ebp+lpString1], eax
		mov	[ebp+lpString2], eax
		cmp	dword_7F838078,	eax
		jz	short loc_7F8258D4
		mov	esi, 253h
		jmp	short loc_7F825904
; ---------------------------------------------------------------------------

loc_7F8258D4:				; CODE XREF: sub_7F8258A3+28j
		mov	eax, [edi+0Ah]
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		xor	esi, esi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	edx, [edi+0Ah]
		mov	dword_7F83807C,	edx

loc_7F825904:				; CODE XREF: sub_7F8258A3+2Fj
		test	esi, esi
		jnz	short loc_7F825980
		mov	eax, [ebp+arg_4]
		push	0
		push	0FFFFFFFFh
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_4]
		push	eax
		push	edi
		call	sub_7F8257D4
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F825980
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_C]
		sub	eax, [ebp+arg_4]
		push	0
		inc	eax
		push	0FFFFFFFFh
		mov	[ebp+var_1C], eax
		mov	[ebp+var_4], ecx
		lea	ecx, [ebp+var_4]
		push	ecx
		push	ebx
		call	sub_7F8257D4
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F825980
		mov	eax, [ebp+var_4]
		lea	ecx, [ebp+var_14]
		sub	eax, [ebp+arg_C]
		push	ecx
		inc	eax
		lea	edx, [ebp+lpString1]
		push	edx
		mov	[ebp+var_18], eax
		push	[ebp+var_1C]
		push	[ebp+arg_4]
		push	edi
		call	sub_7F8259F5
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F825980
		lea	eax, [ebp+var_10]
		lea	ecx, [ebp+lpString2]
		push	eax
		push	ecx
		push	[ebp+var_18]
		push	[ebp+arg_C]
		push	ebx
		call	sub_7F8259F5
		mov	esi, eax

loc_7F825980:				; CODE XREF: sub_7F8258A3+63j
					; sub_7F8258A3+7Dj ...
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F825996
		call	sub_7F82A34F
		jmp	short loc_7F8259A4
; ---------------------------------------------------------------------------

loc_7F825996:				; CODE XREF: sub_7F8258A3+EAj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F8259A4:				; CODE XREF: sub_7F8258A3+F1j
		mov	dword_7F838078,	0
		test	esi, esi
		jnz	short loc_7F8259C2
		push	[ebp+lpString2]	; lpString2
		push	[ebp+lpString1]	; lpString1
		call	sub_7F8176C6
		mov	ecx, [ebp+arg_10]
		mov	[ecx], eax

loc_7F8259C2:				; CODE XREF: sub_7F8258A3+10Dj
		cmp	[ebp+var_14], 0
		jnz	short loc_7F8259D6
		cmp	[ebp+lpString1], 0
		jz	short loc_7F8259D6
		push	[ebp+lpString1]
		call	sub_7F82F149

loc_7F8259D6:				; CODE XREF: sub_7F8258A3+123j
					; sub_7F8258A3+129j
		cmp	[ebp+var_10], 0
		jnz	short loc_7F8259EA
		cmp	[ebp+lpString2], 0
		jz	short loc_7F8259EA
		push	[ebp+lpString2]
		call	sub_7F82F149

loc_7F8259EA:				; CODE XREF: sub_7F8258A3+137j
					; sub_7F8258A3+13Dj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F8258A3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8259F5	proc near		; CODE XREF: sub_7F8258A3+BCp
					; sub_7F8258A3+D6p ...

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, 4
		push	ebx
		mov	ecx, [ebp+arg_8]
		push	esi
		push	edi
		mov	esi, [ebp+arg_4]
		mov	edi, esi
		and	edi, 1FFFh
		lea	eax, [ecx+edi]
		cmp	eax, 2000h
		jnb	short loc_7F825A4B
		shr	esi, 0Dh
		push	esi
		push	[ebp+arg_0]
		call	sub_7F824F23
		mov	ebx, [ebp+arg_10]
		test	eax, eax
		mov	[ebx], eax
		mov	eax, 0
		jnz	short loc_7F825A3A
		push	ebx
		push	esi
		push	[ebp+arg_0]
		call	sub_7F825007

loc_7F825A3A:				; CODE XREF: sub_7F8259F5+39j
		test	eax, eax
		jnz	short loc_7F825A7A
		mov	ecx, [ebx]
		mov	edx, [ebp+arg_C]
		mov	ecx, [ecx]
		add	ecx, edi
		mov	[edx], ecx
		jmp	short loc_7F825A7A
; ---------------------------------------------------------------------------

loc_7F825A4B:				; CODE XREF: sub_7F8259F5+1Fj
		mov	ebx, [ebp+arg_10]
		xor	edi, edi
		push	edi
		mov	[ebp+var_4], ecx
		push	ecx
		mov	[ebx], edi
		call	sub_7F82F03B
		mov	edx, [ebp+arg_C]
		mov	ecx, eax
		test	ecx, ecx
		mov	[edx], eax
		mov	eax, 400h
		jz	short loc_7F825A7A
		push	esi
		lea	eax, [ebp+var_4]
		push	eax
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F824D4D

loc_7F825A7A:				; CODE XREF: sub_7F8259F5+47j
					; sub_7F8259F5+54j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F8259F5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F825A83	proc near		; CODE XREF: sub_7F81917E+104p
					; sub_7F81917E+16Dp ...

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 10h
		mov	ecx, [eax]
		push	ebx
		push	esi
		mov	edx, [ebp+arg_C]
		push	edi
		xor	eax, eax
		mov	edi, [edx]
		mov	[ebp+var_10], eax
		mov	ebx, [ebp+arg_8]
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_14]
		cmp	ebx, eax
		jb	short loc_7F825AB1
		mov	ebx, eax

loc_7F825AB1:				; CODE XREF: sub_7F825A83+2Aj
		cmp	dword_7F838078,	0
		jz	short loc_7F825AC1
		mov	esi, 253h
		jmp	short loc_7F825AF1
; ---------------------------------------------------------------------------

loc_7F825AC1:				; CODE XREF: sub_7F825A83+35j
		mov	eax, [ecx+0Ah]
		mov	edx, [eax]
		mov	dword_7F83807C,	edx
		mov	ax, [edx+2Ch]
		mov	word_7F838084, ax
		mov	esi, [edx]
		mov	dword_7F838078,	esi
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	esi, [ecx+0Ah]
		mov	dword_7F83807C,	esi
		xor	esi, esi

loc_7F825AF1:				; CODE XREF: sub_7F825A83+3Cj
		test	esi, esi
		jnz	loc_7F825BEA
		lea	eax, [ebp+var_10]
		lea	edx, [ebp+var_8]
		push	eax
		push	edx
		push	ebx
		push	[ebp+arg_4]
		push	ecx
		call	sub_7F8259F5
		mov	esi, eax
		mov	ecx, dword_7F838078
		cmp	word ptr [ecx+254h], 0
		jz	short loc_7F825B24
		call	sub_7F82A34F
		jmp	short loc_7F825B32
; ---------------------------------------------------------------------------

loc_7F825B24:				; CODE XREF: sub_7F825A83+98j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F825B32:				; CODE XREF: sub_7F825A83+9Fj
		mov	dword_7F838078,	0
		test	esi, esi
		jnz	loc_7F825BEA
		mov	eax, [edi+0Ah]
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		lea	ecx, [ebp+var_4]
		mov	dword_7F838080,	eax
		lea	eax, [ebp+var_C]
		mov	edx, [edi+0Ah]
		push	eax
		push	ecx
		mov	dword_7F83807C,	edx
		push	ebx
		push	[ebp+arg_10]
		push	edi
		call	sub_7F8259F5
		mov	esi, eax
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F825B9C
		call	sub_7F82A34F
		jmp	short loc_7F825BAA
; ---------------------------------------------------------------------------

loc_7F825B9C:				; CODE XREF: sub_7F825A83+110j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F825BAA:				; CODE XREF: sub_7F825A83+117j
		mov	dword_7F838078,	0
		test	esi, esi
		jnz	short loc_7F825BEA
		push	ebx
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_7F82A397
		mov	ecx, [ebp+arg_18]
		test	eax, eax
		mov	[ecx], eax
		jnz	short loc_7F825BEA
		mov	eax, [ebp+arg_8]
		cmp	eax, [ebp+arg_14]
		jb	short loc_7F825BE4
		cmp	[ebp+arg_14], eax
		mov	eax, 1
		adc	eax, 0FFFFFFFFh
		mov	[ecx], eax
		jmp	short loc_7F825BEA
; ---------------------------------------------------------------------------

loc_7F825BE4:				; CODE XREF: sub_7F825A83+150j
		mov	dword ptr [ecx], 0FFFFFFFFh

loc_7F825BEA:				; CODE XREF: sub_7F825A83+70j
					; sub_7F825A83+BBj ...
		cmp	[ebp+var_10], 0
		jnz	short loc_7F825BFE
		cmp	[ebp+var_8], 0
		jz	short loc_7F825BFE
		push	[ebp+var_8]
		call	sub_7F82F149

loc_7F825BFE:				; CODE XREF: sub_7F825A83+16Bj
					; sub_7F825A83+171j
		cmp	[ebp+var_C], 0
		jnz	short loc_7F825C12
		cmp	[ebp+var_4], 0
		jz	short loc_7F825C12
		push	[ebp+var_4]
		call	sub_7F82F149

loc_7F825C12:				; CODE XREF: sub_7F825A83+17Fj
					; sub_7F825A83+185j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	1Ch
sub_7F825A83	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F825C1D	proc near		; DATA XREF: sub_7F810922:loc_7F810946o

var_20		= byte ptr -20h
var_1C		= byte ptr -1Ch
var_18		= word ptr -18h
var_14		= byte ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_8], ebx
		cmp	[ebp+arg_4], ebx
		mov	eax, [esi]
		mov	edx, [eax]
		mov	ecx, [edx+4]
		jz	loc_7F825D14
		lea	eax, [ebp+var_C]
		lea	edx, [ebp+var_8]
		push	eax
		push	edx
		push	ecx
		call	sub_7F827B9E
		cmp	eax, ebx
		mov	edi, eax
		jnz	loc_7F825DAD
		cmp	[ebp+var_C], ebx
		jz	short loc_7F825C89
		push	ebx
		mov	ecx, [esi]
		push	ebx
		push	ebx
		push	ebx
		mov	edx, [ecx]
		push	[ebp+var_C]
		push	dword ptr [edx]
		call	sub_7F82D114
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F825C89
		cmp	edi, 1001h
		jnz	loc_7F825DAD
		mov	edi, 1009h
		jmp	loc_7F825DAD
; ---------------------------------------------------------------------------

loc_7F825C89:				; CODE XREF: sub_7F825C1D+3Cj
					; sub_7F825C1D+54j
		mov	eax, [esi]
		mov	eax, [eax]
		mov	cx, [eax+14h]
		test	ch, 8
		jnz	short loc_7F825C9F
		mov	[ebp+arg_4], 0
		jmp	short loc_7F825D14
; ---------------------------------------------------------------------------

loc_7F825C9F:				; CODE XREF: sub_7F825C1D+77j
		mov	ebx, [eax+8]
		mov	edx, [eax]
		test	cl, 2
		mov	[ebp+var_4], edx
		jz	short loc_7F825CBD
		push	ebx
		push	edx
		call	sub_7F826884
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F825DAD

loc_7F825CBD:				; CODE XREF: sub_7F825C1D+8Dj
		lea	eax, [ebp+var_18]
		push	eax
		push	ebx
		push	[ebp+var_4]
		call	sub_7F8267D3
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F825DAD
		test	byte ptr [ebp+var_18+1], 80h
		jnz	short loc_7F825D14
		push	0
		lea	eax, [ebp+var_14]
		or	byte ptr [ebp+var_18+1], 80h
		and	[ebp+var_18], 0FFFEh
		push	0
		push	0
		push	eax
		push	ebx
		push	[ebp+var_4]
		call	sub_7F82D114
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F825DAD
		mov	word ptr [ebp+var_10], 0
		lea	eax, [ebp+var_18]
		push	eax
		push	ebx
		push	[ebp+var_4]
		call	sub_7F826833

loc_7F825D14:				; CODE XREF: sub_7F825C1D+1Bj
					; sub_7F825C1D+80j ...
		mov	eax, [esi]
		cmp	[ebp+arg_4], 0
		mov	eax, [eax]
		jz	short loc_7F825D92
		mov	ebx, [eax+8]
		mov	ecx, [eax]
		push	3
		mov	[ebp+var_4], ecx
		push	ebx
		push	ecx
		call	sub_7F81155C
		lea	ecx, [ebp+var_20]
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_1C]
		push	eax
		push	ecx
		push	[ebp+var_C]
		push	ebx
		push	[ebp+var_4]
		call	sub_7F8273AF
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F825DAD
		push	[ebp+arg_4]
		push	esi
		call	sub_7F810955
		cmp	eax, 1
		mov	edi, eax
		sbb	esi, esi
		lea	eax, [ebp+var_20]
		neg	esi
		push	esi
		push	eax
		call	sub_7F81813C
		push	esi
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_7F81813C
		test	edi, edi
		jnz	short loc_7F825DAD
		push	[ebp+var_8]
		push	3
		push	ebx
		push	[ebp+var_4]
		call	sub_7F811597
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F825DAD
		mov	eax, [ebp+var_10]
		mov	[ebp+var_8], eax
		jmp	short loc_7F825DAD
; ---------------------------------------------------------------------------

loc_7F825D92:				; CODE XREF: sub_7F825C1D+FFj
		test	byte ptr [eax+14h], 2
		jz	short loc_7F825DA2
		push	dword ptr [eax+8]
		push	dword ptr [eax]
		call	sub_7F8268FD

loc_7F825DA2:				; CODE XREF: sub_7F825C1D+179j
		push	[ebp+arg_4]
		push	esi
		call	sub_7F810955
		mov	edi, eax

loc_7F825DAD:				; CODE XREF: sub_7F825C1D+33j
					; sub_7F825C1D+5Cj ...
		cmp	[ebp+var_8], 0
		jz	short loc_7F825DBB
		push	[ebp+var_8]
		call	sub_7F82F1E1

loc_7F825DBB:				; CODE XREF: sub_7F825C1D+194j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F825C1D	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F825DC6	proc near		; CODE XREF: sub_7F81217E+60p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	ebp
		xor	esi, esi
		mov	ecx, [eax]
		mov	ebp, offset aMsmail32_ini_2 ; "msmail32.ini"
		push	ebp		; lpFileName
		mov	ebx, offset aMessageFinders ; "Message Finders"
		movsx	eax, word_7F8377F8
		mov	edi, [ecx]
		push	eax		; nDefault
		push	offset aPointsperstep ;	"PointsPerStep"
		push	ebx		; lpAppName
		call	ds:GetPrivateProfileIntA
		movsx	ecx, word_7F8377FC
		mov	word_7F8377F8, ax
		push	ebp		; lpFileName
		push	ecx		; nDefault
		push	offset aPointsperaddfl ; "PointsPerAddFlush"
		push	ebx		; lpAppName
		call	ds:GetPrivateProfileIntA
		mov	word_7F8377FC, ax
		push	ebp		; lpFileName
		movsx	eax, word_7F837800
		push	eax		; nDefault
		push	offset aPointsperdelfl ; "PointsPerDelFlush"
		push	ebx		; lpAppName
		call	ds:GetPrivateProfileIntA
		mov	word_7F837800, ax
		push	ebp		; lpFileName
		movsx	eax, word_7F837804
		push	eax		; nDefault
		push	offset aPointsperfolde ; "PointsPerFolder"
		push	ebx		; lpAppName
		call	ds:GetPrivateProfileIntA
		mov	word_7F837804, ax
		push	ebp		; lpFileName
		movsx	eax, word_7F837808
		push	eax		; nDefault
		push	offset aPointspermessa ; "PointsPerMessage"
		push	ebx		; lpAppName
		call	ds:GetPrivateProfileIntA
		mov	word_7F837808, ax
		push	ebp		; lpFileName
		movsx	eax, word_7F83780C
		push	eax		; nDefault
		push	offset aPointsopenmess ; "PointsOpenMessage"
		push	ebx		; lpAppName
		call	ds:GetPrivateProfileIntA
		mov	word_7F83780C, ax
		push	ebp		; lpFileName
		movsx	eax, word_7F837810
		push	eax		; nDefault
		push	offset aPointsfoldermi ; "PointsFolderMismatch"
		push	ebx		; lpAppName
		call	ds:GetPrivateProfileIntA
		mov	word_7F837810, ax
		push	ebp		; lpFileName
		movsx	eax, word_7F837814
		push	eax		; nDefault
		push	offset aMatchesperstep ; "MatchesPerStep"
		push	ebx		; lpAppName
		call	ds:GetPrivateProfileIntA
		mov	word_7F837814, ax
		push	ebp		; lpFileName
		movsx	eax, word ptr dword_7F837818
		push	eax		; nDefault
		push	offset aInterval ; "Interval"
		push	ebx		; lpAppName
		call	ds:GetPrivateProfileIntA
		push	ebp		; lpFileName
		mov	dword_7F837818,	eax
		mov	eax, nDefault
		push	eax		; nDefault
		push	offset aBoost	; "Boost"
		push	ebx		; lpAppName
		call	ds:GetPrivateProfileIntA
		lea	ebx, [edi+244h]
		mov	nDefault, eax
		cmp	[ebx], esi
		jnz	short loc_7F825F31
		push	ebx
		push	1
		push	4F435380h
		push	[esp+1Ch+arg_0]
		call	sub_7F816C79
		cmp	eax, 1001h
		mov	esi, eax
		jnz	short loc_7F825F2D
		push	1
		push	0
		call	sub_7F816903
		mov	[ebx], eax
		test	eax, eax
		jnz	short loc_7F825F22
		mov	esi, 400h
		jmp	short loc_7F825F9F
; ---------------------------------------------------------------------------

loc_7F825F22:				; CODE XREF: sub_7F825DC6+153j
		or	byte ptr [edi+265h], 40h
		xor	esi, esi
		jmp	short loc_7F825F31
; ---------------------------------------------------------------------------

loc_7F825F2D:				; CODE XREF: sub_7F825DC6+144j
		test	esi, esi
		jnz	short loc_7F825F9F

loc_7F825F31:				; CODE XREF: sub_7F825DC6+12Aj
					; sub_7F825DC6+165j
		lea	eax, [edi+248h]
		cmp	dword ptr [eax], 0
		jnz	short loc_7F825F5E
		push	eax
		push	1
		push	4C435380h
		push	[esp+1Ch+arg_0]
		call	sub_7F816C79
		cmp	eax, 1001h
		mov	esi, eax
		jnz	short loc_7F825F5A
		xor	esi, esi
		jmp	short loc_7F825F5E
; ---------------------------------------------------------------------------

loc_7F825F5A:				; CODE XREF: sub_7F825DC6+18Ej
		test	esi, esi
		jnz	short loc_7F825F9F

loc_7F825F5E:				; CODE XREF: sub_7F825DC6+174j
					; sub_7F825DC6+192j
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_7F825F9F
		mov	edx, [eax]
		movzx	eax, word ptr [edx]
		mov	bx, [eax+edx+6]
		movzx	ecx, word ptr [edx+4]
		movzx	eax, word ptr [edx+2]
		dec	bx
		add	eax, ecx
		test	bx, bx
		lea	eax, [eax+edx+0Ch]
		jl	short loc_7F825F9F

loc_7F825F83:				; CODE XREF: sub_7F825DC6+1D7j
		movzx	ecx, word ptr [eax+4]
		test	byte ptr [ecx+edx+6], 2
		jnz	short loc_7F825F95
		inc	word ptr [edi+240h]

loc_7F825F95:				; CODE XREF: sub_7F825DC6+1C6j
		dec	bx
		add	eax, 6
		test	bx, bx
		jge	short loc_7F825F83

loc_7F825F9F:				; CODE XREF: sub_7F825DC6+15Aj
					; sub_7F825DC6+169j ...
		mov	eax, esi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_7F825DC6	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F825FA8	proc near		; CODE XREF: sub_7F81217E+1B1p
					; sub_7F812369+94p

var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		sub	esp, 4
		push	ebx
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		push	edi
		push	ebp
		mov	eax, [esi]
		mov	edi, [eax]
		lea	ebx, [edi+244h]
		cmp	dword ptr [ebx], 0
		jz	short loc_7F825FFA
		lea	ebp, [edi+264h]
		test	byte ptr [ebp+1], 40h
		jz	short loc_7F825FED
		push	dword ptr [ebx]
		mov	[esp+18h+var_4], 4F435380h
		lea	ecx, [esp+18h+var_4]
		push	ecx
		push	esi
		call	sub_7F816DC7
		test	eax, eax
		jnz	short loc_7F826010
		and	word ptr [ebp+0], 0BFFFh

loc_7F825FED:				; CODE XREF: sub_7F825FA8+24j
		push	dword ptr [ebx]
		call	sub_7F82F1E1
		mov	dword ptr [ebx], 0

loc_7F825FFA:				; CODE XREF: sub_7F825FA8+18j
		add	edi, 248h
		xor	ebx, ebx
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_7F826010
		push	eax
		call	sub_7F82F1E1
		mov	[edi], ebx

loc_7F826010:				; CODE XREF: sub_7F825FA8+3Dj
					; sub_7F825FA8+5Ej
		push	offset sub_7F826941
		push	3
		push	esi
		call	sub_7F811917
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn	4
sub_7F825FA8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F826027	proc near		; DATA XREF: sub_7F81217E+EBo

var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		mov	edi, [eax]
		call	sub_7F816000
		test	eax, eax
		jnz	loc_7F8260E4
		test	byte ptr [edi+265h], 2
		jz	short loc_7F826053
		push	0
		jmp	loc_7F8260DE
; ---------------------------------------------------------------------------

loc_7F826053:				; CODE XREF: sub_7F826027+23j
		mov	ax, word_7F83802C
		cmp	dword_7F838024,	0
		mov	word_7F838028, ax
		jz	short loc_7F826089
		cmp	word_7F8377F8, ax
		jnz	short loc_7F826089
		movsx	eax, word_7F8377F8
		imul	eax, 1Eh
		cdq
		mov	ecx, 14h
		idiv	ecx
		mov	word_7F838028, ax

loc_7F826089:				; CODE XREF: sub_7F826027+3Fj
					; sub_7F826027+48j
		xor	edi, edi

loc_7F82608B:				; CODE XREF: sub_7F826027+9Cj
		lea	eax, [ebp+var_4]
		push	eax
		push	esi
		call	sub_7F8261A0
		test	eax, eax
		jnz	short loc_7F8260AC
		cmp	word_7F838028, di
		jle	short loc_7F8260C5
		lea	eax, [ebp+var_2]
		push	eax
		push	esi
		call	sub_7F8265CF

loc_7F8260AC:				; CODE XREF: sub_7F826027+70j
		cmp	word_7F838028, di
		jle	short loc_7F8260C5
		cmp	[ebp+var_2], di
		jg	short loc_7F8260C1
		cmp	[ebp+var_4], di
		jle	short loc_7F8260C5

loc_7F8260C1:				; CODE XREF: sub_7F826027+92j
		test	eax, eax
		jz	short loc_7F82608B

loc_7F8260C5:				; CODE XREF: sub_7F826027+79j
					; sub_7F826027+8Cj ...
		xor	ecx, ecx
		test	eax, eax
		mov	dword_7F838024,	ecx
		jnz	short loc_7F8260E4
		cmp	[ebp+var_4], cx
		jnz	short loc_7F8260E4
		cmp	[ebp+var_2], cx
		jnz	short loc_7F8260E4
		push	ecx

loc_7F8260DE:				; CODE XREF: sub_7F826027+27j
		push	esi
		call	sub_7F8260F1

loc_7F8260E4:				; CODE XREF: sub_7F826027+16j
					; sub_7F826027+A8j ...
		mov	eax, 1
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F826027	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8260F1	proc near		; CODE XREF: sub_7F812460+9Cp
					; sub_7F826027+B8p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, [esp+4+arg_4]
		push	edi
		mov	eax, [eax]
		push	esi
		push	dword ptr [eax+20h]
		mov	edi, [eax]
		call	sub_7F8161D3
		test	esi, esi
		jz	short loc_7F826115
		or	byte ptr [edi+265h], 80h
		jmp	short loc_7F826139
; ---------------------------------------------------------------------------

loc_7F826115:				; CODE XREF: sub_7F8260F1+19j
		xor	esi, esi
		cmp	dword_7F838038,	esi
		jz	short loc_7F826130
		push	esi
		push	offset dword_7F838038
		call	sub_7F81813C
		mov	dword_7F838034,	esi

loc_7F826130:				; CODE XREF: sub_7F8260F1+2Cj
		and	word ptr [edi+264h], 7FFFh

loc_7F826139:				; CODE XREF: sub_7F8260F1+22j
		pop	edi
		pop	esi
		retn	8
sub_7F8260F1	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82613E	proc near		; CODE XREF: sub_7F812460+A9p

arg_0		= dword	ptr  4

		push	8
		xor	eax, eax
		mov	edx, [esp+4+arg_0]
		push	eax
		push	dword_7F838030
		push	eax
		push	eax
		push	eax
		mov	eax, [edx]
		push	dword ptr [eax+20h]
		call	sub_7F81635D
		retn	4
sub_7F82613E	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82615D	proc near		; CODE XREF: sub_7F828A3E+133p
					; sub_7F82A588+14Fp

arg_0		= dword	ptr  4
arg_4		= word ptr  8

		mov	eax, [esp+arg_0]
		mov	ecx, [eax]
		mov	edx, [ecx]
		mov	ax, [edx+264h]
		and	ax, 8000h
		cmp	ax, 1
		sbb	eax, eax
		neg	eax
		cmp	[esp+arg_4], 1
		sbb	ecx, ecx
		neg	ecx
		cmp	eax, ecx
		jz	short locret_7F82619D
		lea	eax, [esp+arg_4]
		push	2
		push	eax
		push	2000000h
		push	dword ptr [edx+218h]
		call	sub_7F824187

locret_7F82619D:			; CODE XREF: sub_7F82615D+27j
		retn	8
sub_7F82615D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8261A0	proc near		; CODE XREF: sub_7F826027+69p

var_40		= byte ptr -40h
var_3C		= dword	ptr -3Ch
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= word ptr -28h
var_26		= word ptr -26h
var_24		= word ptr -24h
var_22		= word ptr -22h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_16		= word ptr -16h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 40h
		push	ebx
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		xor	esi, esi
		mov	ecx, [eax]
		mov	edx, [ecx]
		mov	[ebp+var_30], esi
		mov	[ebp+var_34], esi
		mov	eax, [edx+248h]
		mov	[ebp+var_2C], eax
		mov	[ebp+var_8], esi
		cmp	eax, esi
		jnz	short loc_7F8261D5
		mov	eax, [ebp+arg_4]
		mov	[eax], si
		xor	eax, eax
		jmp	loc_7F8265C6
; ---------------------------------------------------------------------------

loc_7F8261D5:				; CODE XREF: sub_7F8261A0+26j
		mov	eax, [ebp+var_2C]
		mov	ecx, [eax]
		mov	[ebp+var_10], ecx
		movzx	eax, word ptr [ecx]
		mov	cx, [eax+ecx+6]
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_16], cx
		mov	[eax], cx
		cmp	word_7F838028, 0
		jle	loc_7F82656C
		mov	edi, [ebp-18h]
		xor	ebx, ebx

loc_7F826202:				; CODE XREF: sub_7F8261A0+3C6j
		cmp	[ebp+var_16], bx
		jle	loc_7F82656C
		mov	word_7F838020, bx
		cmp	[ebp+var_8], ebx
		jnz	loc_7F8262A4
		mov	ecx, [ebp+var_10]
		movzx	eax, word ptr [ecx]
		mov	edx, [eax+ecx]
		lea	eax, [ebp+var_28]
		push	eax
		mov	[ebp+var_C], edx
		push	edx
		push	[ebp+arg_0]
		call	sub_7F8288BF
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F826262
		cmp	esi, 1001h
		jnz	loc_7F82656C
		push	ebx
		xor	esi, esi
		push	[ebp+var_10]
		call	sub_7F816A42
		dec	[ebp+var_16]
		mov	[ebp+var_30], 1
		jmp	loc_7F82655F
; ---------------------------------------------------------------------------

loc_7F826262:				; CODE XREF: sub_7F8261A0+99j
		lea	eax, [ebp+var_8]
		push	eax
		push	ebx
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	sub_7F816C79
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F82629F
		cmp	esi, 1015h
		jnz	loc_7F82656C
		push	ebx
		xor	esi, esi
		push	[ebp+var_10]
		call	sub_7F816A42
		dec	[ebp+var_16]
		mov	[ebp+var_30], 1
		jmp	loc_7F82655F
; ---------------------------------------------------------------------------

loc_7F82629F:				; CODE XREF: sub_7F8261A0+D6j
		mov	eax, [ebp+var_8]
		mov	edi, [eax]

loc_7F8262A4:				; CODE XREF: sub_7F8261A0+76j
		cmp	[ebp+var_24], bx
		jle	loc_7F82636F
		movzx	eax, word ptr [edi+2]
		movzx	ecx, word ptr [edi+4]
		add	eax, ecx
		mov	edx, [eax+edi+0Ch]
		movzx	eax, [ebp+var_28]
		mov	[ebp+var_14], edx
		test	eax, eax
		jz	short loc_7F8262E7
		cmp	eax, 1
		jl	loc_7F82636F
		cmp	eax, 2
		jle	short loc_7F82634B
		cmp	eax, 3
		jl	loc_7F82636F
		cmp	eax, 4
		jg	loc_7F82636F

loc_7F8262E7:				; CODE XREF: sub_7F8261A0+125j
		mov	eax, [ebp+var_20]
		mov	[ebp+var_3C], eax

loc_7F8262ED:				; CODE XREF: sub_7F8261A0+1C1j
		movsx	ecx, [ebp+var_22]
		mov	ax, [ebp+var_26]
		sub	ax, [ebp+var_22]
		mov	[ebp+var_4], ax
		imul	ecx, 6
		movzx	eax, word ptr [edi]
		sub	eax, ecx
		add	eax, edi
		cmp	word_7F838028, bx
		mov	[ebp+var_1C], eax
		jle	loc_7F8264B9

loc_7F826317:				; CODE XREF: sub_7F8261A0+313j
		mov	ax, [ebp+var_4]
		dec	[ebp+var_4]
		test	ax, ax
		jle	loc_7F8264B9
		movzx	eax, [ebp+var_28]
		test	eax, eax
		jz	loc_7F8263BD
		cmp	eax, 1
		jz	loc_7F826402
		cmp	eax, 2
		jz	loc_7F826424
		jmp	loc_7F826476
; ---------------------------------------------------------------------------

loc_7F82634B:				; CODE XREF: sub_7F8261A0+133j
		push	ebx
		lea	eax, [ebp+var_3C]
		push	ebx
		push	ebx
		push	eax
		push	[ebp+var_14]
		push	[ebp+arg_0]
		call	sub_7F82D114
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F8262ED
		cmp	esi, 1001h
		jnz	loc_7F82656C

loc_7F82636F:				; CODE XREF: sub_7F8261A0+108j
					; sub_7F8261A0+12Aj ...
		mov	[ebp+var_22], bx
		dec	[ebp+var_24]
		cmp	[ebp+var_24], bx
		jg	loc_7F826541
		push	ebx
		push	[ebp+var_10]
		call	sub_7F816A42
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F82656C
		dec	[ebp+var_16]
		push	ebx
		mov	[ebp+var_30], 1
		push	1
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	sub_7F82B9DE
		push	[ebp+var_8]
		call	sub_7F82F1E1
		mov	[ebp+var_8], ebx
		jmp	loc_7F82655F
; ---------------------------------------------------------------------------

loc_7F8263BD:				; CODE XREF: sub_7F8261A0+18Ej
		lea	eax, [ebp+var_2]
		mov	edx, [ebp+var_1C]
		push	eax
		push	[ebp+var_14]
		push	dword ptr [edx]
		push	[ebp+arg_0]
		call	sub_7F82959B
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F8263E5
		cmp	esi, 1008h
		jnz	short loc_7F8263F1
		mov	[ebp+var_2], bx
		xor	esi, esi

loc_7F8263E5:				; CODE XREF: sub_7F8261A0+235j
		cmp	[ebp+var_2], bx
		jz	loc_7F826476
		jmp	short loc_7F82645C
; ---------------------------------------------------------------------------

loc_7F8263F1:				; CODE XREF: sub_7F8261A0+23Dj
		cmp	esi, 1001h
		jnz	loc_7F8264A8
		jmp	loc_7F82636F
; ---------------------------------------------------------------------------

loc_7F826402:				; CODE XREF: sub_7F8261A0+197j
		mov	ax, word_7F837808
		mov	ecx, [ebp+var_1C]
		sub	word_7F838028, ax
		movsx	eax, word_7F838020
		mov	edx, [ecx]
		mov	dword_7F837820[eax*4], edx
		jmp	short loc_7F82646F
; ---------------------------------------------------------------------------

loc_7F826424:				; CODE XREF: sub_7F8261A0+1A0j
		lea	eax, [ebp+var_2]
		mov	edx, [ebp+var_1C]
		push	eax
		push	[ebp+var_14]
		push	dword ptr [edx]
		push	[ebp+arg_0]
		call	sub_7F82959B
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F826450
		cmp	esi, 1008h
		jnz	loc_7F8264D2
		mov	[ebp+var_2], bx
		xor	esi, esi

loc_7F826450:				; CODE XREF: sub_7F8261A0+29Cj
		cmp	[ebp+var_2], bx
		jz	short loc_7F82645C
		mov	eax, [ebp+var_20]
		mov	[ebp+var_3C], eax

loc_7F82645C:				; CODE XREF: sub_7F8261A0+24Fj
					; sub_7F8261A0+2B4j
		mov	eax, [ebp+var_1C]
		movsx	ecx, word_7F838020
		mov	edx, [eax]
		mov	dword_7F837820[ecx*4], edx

loc_7F82646F:				; CODE XREF: sub_7F8261A0+282j
		inc	word_7F838020

loc_7F826476:				; CODE XREF: sub_7F8261A0+1A6j
					; sub_7F8261A0+249j
		mov	ax, word_7F837814
		cmp	word_7F838020, ax
		jl	short loc_7F8264A8
		lea	eax, [ebp+var_40]
		push	eax
		push	[ebp+var_14]
		push	[ebp+arg_0]
		call	sub_7F82729D
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F8264A8
		cmp	esi, 1017h
		jnz	loc_7F82656C
		xor	esi, esi

loc_7F8264A8:				; CODE XREF: sub_7F8261A0+257j
					; sub_7F8261A0+2E3j ...
		sub	[ebp+var_1C], 6
		cmp	word_7F838028, bx
		jg	loc_7F826317

loc_7F8264B9:				; CODE XREF: sub_7F8261A0+171j
					; sub_7F8261A0+182j
		movzx	eax, [ebp+var_28]
		test	eax, eax
		jl	short loc_7F826529
		cmp	eax, 2
		jle	short loc_7F8264DF
		cmp	eax, 3
		jz	short loc_7F826505
		cmp	eax, 4
		jz	short loc_7F826509
		jmp	short loc_7F826529
; ---------------------------------------------------------------------------

loc_7F8264D2:				; CODE XREF: sub_7F8261A0+2A4j
		cmp	esi, 1001h
		jnz	short loc_7F8264A8
		jmp	loc_7F82636F
; ---------------------------------------------------------------------------

loc_7F8264DF:				; CODE XREF: sub_7F8261A0+324j
		cmp	word_7F838020, bx
		jle	short loc_7F826529
		lea	eax, [ebp+var_40]
		push	eax
		push	[ebp+var_14]
		push	[ebp+arg_0]
		call	sub_7F82729D
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F826529
		cmp	esi, 1017h
		jmp	short loc_7F826525
; ---------------------------------------------------------------------------

loc_7F826505:				; CODE XREF: sub_7F8261A0+329j
		push	3
		jmp	short loc_7F82650B
; ---------------------------------------------------------------------------

loc_7F826509:				; CODE XREF: sub_7F8261A0+32Ej
		push	4

loc_7F82650B:				; CODE XREF: sub_7F8261A0+367j
		push	[ebp+var_14]
		push	[ebp+var_20]
		push	[ebp+arg_0]
		call	sub_7F82929F
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F826529
		cmp	esi, 1001h

loc_7F826525:				; CODE XREF: sub_7F8261A0+363j
		jnz	short loc_7F82656C
		xor	esi, esi

loc_7F826529:				; CODE XREF: sub_7F8261A0+31Fj
					; sub_7F8261A0+330j ...
		cmp	[ebp+var_4], bx
		jle	loc_7F82636F
		mov	ax, [ebp+var_26]
		sub	ax, [ebp+var_4]
		mov	[ebp+var_22], ax
		jmp	short loc_7F82655F
; ---------------------------------------------------------------------------

loc_7F826541:				; CODE XREF: sub_7F8261A0+1DBj
		movzx	eax, word ptr [edi]
		mov	ax, [eax+edi+6]
		dec	ax
		push	eax
		push	edi
		call	sub_7F816A42
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F82656C
		mov	[ebp+var_34], 1

loc_7F82655F:				; CODE XREF: sub_7F8261A0+BDj
					; sub_7F8261A0+FAj ...
		cmp	word_7F838028, bx
		jg	loc_7F826202

loc_7F82656C:				; CODE XREF: sub_7F8261A0+57j
					; sub_7F8261A0+66j ...
		cmp	[ebp+var_8], 0
		jz	short loc_7F82659E
		lea	eax, [ebp+var_28]
		push	eax
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	sub_7F82897B
		cmp	[ebp+var_34], 0
		jz	short loc_7F826596
		push	[ebp+var_8]
		lea	ecx, [ebp+var_C]
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F816DC7

loc_7F826596:				; CODE XREF: sub_7F8261A0+3E5j
		push	[ebp+var_8]
		call	sub_7F82F1E1

loc_7F82659E:				; CODE XREF: sub_7F8261A0+3D0j
		cmp	[ebp+var_30], 0
		jz	short loc_7F8265C4
		mov	[ebp+var_C], 4C435380h
		push	0
		push	[ebp+var_2C]
		call	sub_7F816BFE
		push	[ebp+var_2C]
		lea	ecx, [ebp+var_C]
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F816DC7

loc_7F8265C4:				; CODE XREF: sub_7F8261A0+402j
		mov	eax, esi

loc_7F8265C6:				; CODE XREF: sub_7F8261A0+30j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F8261A0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8265CF	proc near		; CODE XREF: sub_7F826027+80p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 10h
		mov	ecx, [eax]
		push	ebx
		push	esi
		mov	eax, [ebp+arg_4]
		push	edi
		xor	esi, esi
		mov	ebx, [ecx]
		mov	edx, [ebx+244h]
		mov	[eax], si
		test	edx, edx
		jz	short loc_7F8265FC
		mov	eax, [edx]
		movzx	ecx, word ptr [eax]
		mov	si, [ecx+eax+6]

loc_7F8265FC:				; CODE XREF: sub_7F8265CF+21j
		test	si, si
		jg	short loc_7F826608
		xor	eax, eax
		jmp	loc_7F82672B
; ---------------------------------------------------------------------------

loc_7F826608:				; CODE XREF: sub_7F8265CF+30j
		xor	ecx, ecx
		mov	edi, [edx]
		movzx	eax, word ptr [edi]
		add	eax, edi
		mov	[ebp+var_4], ecx
		cmp	si, word_7F838048
		mov	[ebp+var_10], eax
		jge	short loc_7F826627
		mov	word_7F838048, cx

loc_7F826627:				; CODE XREF: sub_7F8265CF+4Fj
		xor	bx, bx
		cmp	word_7F838028, bx
		jle	loc_7F8266FF

loc_7F826637:				; CODE XREF: sub_7F8265CF+12Aj
		cmp	si, bx
		jle	loc_7F8266FF
		cmp	[ebp+var_4], 0
		jnz	loc_7F8266FF
		mov	eax, [ebp+var_10]
		mov	[ebp+var_8], eax
		movsx	ecx, bx
		movsx	eax, word_7F838048
		add	eax, ecx
		cdq
		movsx	ecx, si
		idiv	ecx
		imul	edx, 6
		sub	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		movzx	ecx, word ptr [eax+4]
		mov	[ebp+var_8], eax
		lea	edx, [ecx+edi+6]
		mov	ax, [edx]
		mov	[ebp+var_C], edx
		test	ah, 40h
		jnz	short loc_7F826685
		test	al, 3
		jnz	short loc_7F8266EF

loc_7F826685:				; CODE XREF: sub_7F8265CF+B0j
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_8]
		push	[ebp+var_C]
		inc	word ptr [eax]
		push	dword ptr [edx]
		push	[ebp+arg_0]
		call	sub_7F82695E
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	short loc_7F8266B4
		mov	ecx, [ebp+var_8]
		push	[ebp+var_C]
		push	dword ptr [ecx]
		push	[ebp+arg_0]
		call	sub_7F826833
		jmp	short loc_7F8266EF
; ---------------------------------------------------------------------------

loc_7F8266B4:				; CODE XREF: sub_7F8265CF+D1j
		cmp	[ebp+var_4], 1001h
		jnz	short loc_7F8266EF
		movsx	eax, word_7F838048
		movsx	ecx, bx
		add	eax, ecx
		cdq
		movsx	ecx, si
		idiv	ecx
		push	edx
		push	edi
		call	sub_7F816A42
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	short loc_7F8266EF
		dec	si
		mov	eax, [ebp+arg_0]
		dec	bx
		mov	ecx, [eax]
		mov	edx, [ecx]
		or	byte ptr [edx+265h], 40h

loc_7F8266EF:				; CODE XREF: sub_7F8265CF+B4j
					; sub_7F8265CF+E3j ...
		inc	bx
		cmp	word_7F838028, 0
		jg	loc_7F826637

loc_7F8266FF:				; CODE XREF: sub_7F8265CF+62j
					; sub_7F8265CF+6Bj ...
		add	word_7F838048, bx
		test	si, si
		jz	short loc_7F82671F
		mov	ax, word_7F838048
		cwd
		idiv	si
		mov	word_7F838048, dx
		jmp	short loc_7F826728
; ---------------------------------------------------------------------------

loc_7F82671F:				; CODE XREF: sub_7F8265CF+13Aj
		mov	word_7F838048, 0

loc_7F826728:				; CODE XREF: sub_7F8265CF+14Ej
		mov	eax, [ebp+var_4]

loc_7F82672B:				; CODE XREF: sub_7F8265CF+34j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F8265CF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F826734	proc near		; CODE XREF: sub_7F82695E+38p
					; sub_7F82959B+39p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		lea	eax, [ebp+var_4]
		push	esi
		push	edi
		xor	edi, edi
		mov	esi, [ebp+arg_8]
		push	eax
		lea	ecx, [ebp+arg_4]
		push	edi
		mov	[esi], edi
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		test	eax, eax
		jnz	short loc_7F8267CA
		push	0
		push	69100h
		push	[ebp+var_4]
		call	sub_7F8194ED
		mov	bx, ax
		test	bx, bx
		jge	short loc_7F826777
		mov	ebx, 1004h
		jmp	short loc_7F8267AB
; ---------------------------------------------------------------------------

loc_7F826777:				; CODE XREF: sub_7F826734+3Aj
		push	ebx
		push	[ebp+var_4]
		call	sub_7F81990D
		push	20h
		mov	[ebp+var_8], eax
		push	eax
		call	sub_7F82F18D
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F826798
		mov	ebx, 400h
		jmp	short loc_7F8267AB
; ---------------------------------------------------------------------------

loc_7F826798:				; CODE XREF: sub_7F826734+5Bj
		lea	eax, [ebp+var_8]
		push	eax
		push	dword ptr [edi]
		push	0
		push	ebx
		push	[ebp+var_4]
		call	sub_7F818D47
		mov	ebx, eax

loc_7F8267AB:				; CODE XREF: sub_7F826734+41j
					; sub_7F826734+62j
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_7F81813C
		test	ebx, ebx
		jnz	short loc_7F8267BE
		mov	[esi], edi
		jmp	short loc_7F8267C8
; ---------------------------------------------------------------------------

loc_7F8267BE:				; CODE XREF: sub_7F826734+84j
		test	edi, edi
		jz	short loc_7F8267C8
		push	edi
		call	sub_7F82F1E1

loc_7F8267C8:				; CODE XREF: sub_7F826734+88j
					; sub_7F826734+8Cj
		mov	eax, ebx

loc_7F8267CA:				; CODE XREF: sub_7F826734+23j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F826734	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8267D3	proc near		; CODE XREF: sub_7F825C1D+A8p
					; sub_7F828BB2+117p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		xor	esi, esi
		mov	ecx, [eax]
		mov	edx, [ecx]
		mov	eax, [edx+244h]
		test	eax, eax
		jnz	short loc_7F8267F0
		mov	esi, 1001h
		jmp	short loc_7F82682C
; ---------------------------------------------------------------------------

loc_7F8267F0:				; CODE XREF: sub_7F8267D3+14j
		push	[esp+8+arg_4]
		mov	edi, [eax]
		push	edi
		call	sub_7F816B29
		test	ax, ax
		jge	short loc_7F826808
		mov	esi, 1001h
		jmp	short loc_7F82682C
; ---------------------------------------------------------------------------

loc_7F826808:				; CODE XREF: sub_7F8267D3+2Cj
		movzx	ecx, word ptr [edi]
		movsx	eax, ax
		imul	eax, 6
		sub	ecx, eax
		push	0Ch
		movzx	eax, word ptr [ecx+edi+4]
		add	eax, edi
		add	eax, 6
		push	eax
		push	[esp+10h+arg_8]
		call	sub_7F82FCE0
		add	esp, 0Ch

loc_7F82682C:				; CODE XREF: sub_7F8267D3+1Bj
					; sub_7F8267D3+33j
		mov	eax, esi
		pop	edi
		pop	esi
		retn	0Ch
sub_7F8267D3	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F826833	proc near		; CODE XREF: sub_7F825C1D+F2p
					; sub_7F8265CF+DEp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		mov	ecx, [eax]
		mov	esi, [ecx]
		push	[esp+8+arg_4]
		mov	eax, [esi+244h]
		mov	edi, [eax]
		push	edi
		call	sub_7F816B29
		test	ax, ax
		jl	short loc_7F82687F
		movzx	ecx, word ptr [edi]
		movsx	eax, ax
		imul	eax, 6
		sub	ecx, eax
		push	0Ch
		push	[esp+0Ch+arg_8]
		movzx	eax, word ptr [ecx+edi+4]
		add	eax, edi
		add	eax, 6
		push	eax
		call	sub_7F82FCE0
		or	byte ptr [esi+265h], 40h
		add	esp, 0Ch

loc_7F82687F:				; CODE XREF: sub_7F826833+1Fj
		pop	edi
		pop	esi
		retn	0Ch
sub_7F826833	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F826884	proc near		; CODE XREF: sub_7F825C1D+91p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	ecx, [eax]
		mov	edi, [ecx]
		lea	esi, [edi+244h]
		cmp	dword ptr [esi], 0
		jnz	short loc_7F8268CB
		push	esi
		push	1
		push	4F435380h
		push	eax
		call	sub_7F816C79
		cmp	eax, 1001h
		mov	ebx, eax
		jnz	short loc_7F8268C7
		xor	ebx, ebx
		push	1
		push	48h
		call	sub_7F816903
		mov	[esi], eax
		cmp	eax, ebx
		jnz	short loc_7F8268C7
		mov	ebx, 400h

loc_7F8268C7:				; CODE XREF: sub_7F826884+2Bj
					; sub_7F826884+3Cj
		test	ebx, ebx
		jnz	short loc_7F8268F5

loc_7F8268CB:				; CODE XREF: sub_7F826884+14j
		push	0Ch
		push	offset unk_7F835DE8
		push	[esp+14h+arg_4]
		push	esi
		call	sub_7F81698C
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F8268EB
		or	byte ptr [edi+265h], 40h
		jmp	short loc_7F8268F5
; ---------------------------------------------------------------------------

loc_7F8268EB:				; CODE XREF: sub_7F826884+5Cj
		cmp	ebx, 1003h
		jnz	short loc_7F8268F5
		xor	ebx, ebx

loc_7F8268F5:				; CODE XREF: sub_7F826884+45j
					; sub_7F826884+65j ...
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F826884	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8268FD	proc near		; CODE XREF: sub_7F825C1D+180p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		xor	eax, eax
		mov	ecx, [esp+4+arg_0]
		push	edi
		mov	edx, [ecx]
		mov	edi, [edx]
		mov	ecx, [edi+244h]
		test	ecx, ecx
		jz	short loc_7F82693C
		push	[esp+8+arg_4]
		mov	esi, [ecx]
		push	esi
		call	sub_7F816B29
		push	eax
		push	esi
		call	sub_7F816A42
		test	eax, eax
		jnz	short loc_7F826933
		or	byte ptr [edi+265h], 40h
		jmp	short loc_7F82693C
; ---------------------------------------------------------------------------

loc_7F826933:				; CODE XREF: sub_7F8268FD+2Bj
		cmp	eax, 1004h
		jnz	short loc_7F82693C
		xor	eax, eax

loc_7F82693C:				; CODE XREF: sub_7F8268FD+14j
					; sub_7F8268FD+34j ...
		pop	edi
		pop	esi
		retn	8
sub_7F8268FD	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F826941	proc near		; DATA XREF: sub_7F825FA8:loc_7F826010o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		call	sub_7F82F1E1
		push	0
		push	3
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_7F811597
		retn	0Ch
sub_7F826941	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82695E	proc near		; CODE XREF: sub_7F8265CF+C7p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
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
		xor	esi, esi
		xor	edi, edi
		push	3
		push	[ebp+arg_4]
		mov	word_7F838020, di
		mov	[ebp+var_8], edi
		push	[ebp+arg_0]
		call	sub_7F81155C
		mov	dword_7F83803C,	eax
		cmp	eax, edi
		jnz	short loc_7F8269C3
		push	offset dword_7F83803C
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F826734
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F826C1E
		mov	eax, dword_7F83803C
		push	eax
		push	3
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F811597
		test	eax, eax
		jz	short loc_7F8269C3
		mov	[ebp+var_8], 1

loc_7F8269C3:				; CODE XREF: sub_7F82695E+2Bj
					; sub_7F82695E+5Cj
		mov	ebx, [ebp+arg_8]
		cmp	byte ptr [ebx+4], 83h
		jnz	loc_7F826A76
		lea	eax, [ebp+var_C]
		lea	ecx, [ebp+var_14]
		mov	[ebp+var_14], 46534180h
		push	eax
		push	0
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F826C1E
		push	0
		push	[ebp+arg_4]
		push	[ebp+var_C]
		call	sub_7F8194ED
		mov	[ebp+var_2], ax
		test	ax, ax
		jge	short loc_7F826A15
		mov	dword_7F838044,	0
		jmp	short loc_7F826A63
; ---------------------------------------------------------------------------

loc_7F826A15:				; CODE XREF: sub_7F82695E+A9j
		push	dword ptr [ebp+var_2]
		push	[ebp+var_C]
		call	sub_7F81990D
		push	0
		mov	[ebp+var_10], eax
		push	eax
		call	sub_7F82F03B
		mov	dword_7F838040,	eax
		test	eax, eax
		jnz	short loc_7F826A3B
		mov	esi, 400h
		jmp	short loc_7F826A63
; ---------------------------------------------------------------------------

loc_7F826A3B:				; CODE XREF: sub_7F82695E+D4j
		lea	eax, [ebp+var_10]
		push	eax
		push	dword_7F838040
		push	0
		push	dword ptr [ebp+var_2]
		push	[ebp+var_C]
		call	sub_7F818D47
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F826A63
		mov	eax, [ebp+var_10]
		shr	eax, 2
		mov	dword_7F838044,	eax

loc_7F826A63:				; CODE XREF: sub_7F82695E+B5j
					; sub_7F82695E+DBj ...
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_7F81813C
		test	esi, esi
		jnz	loc_7F826C1E

loc_7F826A76:				; CODE XREF: sub_7F82695E+6Cj
		cmp	dword_7F838034,	0
		jz	short loc_7F826A9F
		mov	eax, dword_7F838034
		cmp	[ebx+4], eax
		jz	short loc_7F826A9F
		push	0
		push	offset dword_7F838038
		call	sub_7F81813C
		mov	dword_7F838034,	0

loc_7F826A9F:				; CODE XREF: sub_7F82695E+11Fj
					; sub_7F82695E+129j
		test	esi, esi
		jnz	loc_7F826B91

loc_7F826AA7:				; CODE XREF: sub_7F82695E+18Cj
					; sub_7F82695E+20Ej ...
		cmp	word_7F838028, 0
		jle	loc_7F826B91
		cmp	dword_7F838038,	0
		jnz	short loc_7F826B08
		push	offset dword_7F838038
		lea	eax, [ebx+4]
		push	0
		push	eax
		push	[ebp+arg_0]
		call	sub_7F817E9D
		cmp	eax, 1001h
		mov	esi, eax
		jnz	short loc_7F826AF8
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F826C68
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F826AA7
		cmp	esi, 1009h
		jz	loc_7F826B8A

loc_7F826AF8:				; CODE XREF: sub_7F82695E+17Aj
		test	esi, esi
		jnz	loc_7F826B91
		mov	eax, [ebx+4]
		mov	dword_7F838034,	eax

loc_7F826B08:				; CODE XREF: sub_7F82695E+15Ej
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F826D5C
		cmp	eax, 1005h
		mov	esi, eax
		jnz	short loc_7F826B7A
		cmp	word_7F838020, 0
		jle	short loc_7F826B46
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82729D
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F826B46
		cmp	esi, 1017h
		jnz	short loc_7F826B91
		mov	edi, 1

loc_7F826B46:				; CODE XREF: sub_7F82695E+1C7j
					; sub_7F82695E+1D9j
		push	0
		push	offset dword_7F838038
		call	sub_7F81813C
		mov	dword_7F838034,	0
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F826C68
		mov	esi, eax
		test	esi, esi
		jz	loc_7F826AA7
		cmp	esi, 1009h
		jz	short loc_7F826B8A

loc_7F826B7A:				; CODE XREF: sub_7F82695E+1BDj
		test	esi, esi
		jz	loc_7F826AA7
		cmp	esi, 1017h
		jnz	short loc_7F826B91

loc_7F826B8A:				; CODE XREF: sub_7F82695E+194j
					; sub_7F82695E+21Aj
		mov	edi, 1
		xor	esi, esi

loc_7F826B91:				; CODE XREF: sub_7F82695E+143j
					; sub_7F82695E+151j ...
		cmp	word_7F838020, 0
		jle	short loc_7F826BBB
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82729D
		test	esi, esi
		jnz	short loc_7F826BBB
		mov	esi, eax
		cmp	eax, 1017h
		jnz	short loc_7F826BBB
		xor	esi, esi
		mov	edi, 1

loc_7F826BBB:				; CODE XREF: sub_7F82695E+23Bj
					; sub_7F82695E+24Bj ...
		xor	ecx, ecx
		test	edi, edi
		jz	short loc_7F826C1E
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		mov	edi, [edx]
		dec	word ptr [edi+240h]
		mov	ax, [ebx]
		mov	[ebx+4], ecx
		mov	[ebx+8], cx
		or	al, 3
		test	ah, 40h
		mov	[ebx], ax
		jz	short loc_7F826BEC
		and	ax, 0BFFFh
		mov	[ebx], ax
		jmp	short loc_7F826BFE
; ---------------------------------------------------------------------------

loc_7F826BEC:				; CODE XREF: sub_7F82695E+283j
		push	0
		push	10000h
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82A016

loc_7F826BFE:				; CODE XREF: sub_7F82695E+28Cj
		cmp	[ebp+var_8], 0
		jnz	short loc_7F826C1E
		push	0
		push	3
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F811597
		test	eax, eax
		jnz	short loc_7F826C1E
		mov	[ebp+var_8], 1

loc_7F826C1E:				; CODE XREF: sub_7F82695E+41j
					; sub_7F82695E+8Fj ...
		xor	edi, edi
		cmp	dword_7F838040,	edi
		jz	short loc_7F826C39
		mov	eax, dword_7F838040
		push	eax
		call	sub_7F82F149
		mov	dword_7F838040,	edi

loc_7F826C39:				; CODE XREF: sub_7F82695E+2C8j
		cmp	[ebp+var_8], 0
		jz	short loc_7F826C53
		cmp	dword_7F83803C,	0
		jz	short loc_7F826C53
		mov	eax, dword_7F83803C
		push	eax
		call	sub_7F82F1E1

loc_7F826C53:				; CODE XREF: sub_7F82695E+2DFj
					; sub_7F82695E+2E8j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		mov	dword_7F83803C,	0
		pop	ebp
		retn	0Ch
sub_7F82695E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F826C68	proc near		; CODE XREF: sub_7F82695E+183p
					; sub_7F82695E+205p

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, 10h
		push	ebx
		lea	eax, [ebp+var_4]
		mov	[ebp+var_8], 46534180h
		push	esi
		lea	ecx, [ebp+var_8]
		push	edi
		push	eax
		xor	edi, edi
		push	edi
		mov	[ebp+var_C], edi
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		cmp	eax, edi
		mov	esi, eax
		jnz	loc_7F826D1E
		push	edi
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	sub_7F8194ED
		mov	ebx, [ebp+arg_8]
		mov	ecx, [ebx+4]
		cmp	cl, 83h
		jnz	short loc_7F826CB6
		and	word ptr [ebx],	7FFFh
		jmp	short loc_7F826CC4
; ---------------------------------------------------------------------------

loc_7F826CB6:				; CODE XREF: sub_7F826C68+45j
		test	ecx, 0FFFFFF00h
		mov	di, [ebx+0Ah]
		jz	short loc_7F826CC4
		inc	di

loc_7F826CC4:				; CODE XREF: sub_7F826C68+4Cj
					; sub_7F826C68+58j
		lea	ecx, [ebp+var_10]
		lea	edx, [ebp+var_8]
		mov	[ebp+var_10], 4
		push	ecx
		push	edx
		movsx	ecx, di
		shl	ecx, 2
		push	ecx
		push	eax
		push	[ebp+var_4]
		call	sub_7F818D47
		mov	esi, eax
		xor	eax, eax
		test	esi, esi
		jz	short loc_7F826D02
		cmp	esi, 1014h
		jnz	short loc_7F826D1E
		xor	esi, esi
		mov	[ebp+var_8], eax
		mov	[ebp+var_C], 1
		or	byte ptr [ebx],	3

loc_7F826D02:				; CODE XREF: sub_7F826C68+81j
		mov	[ebx+0Ah], di
		mov	eax, [ebp+var_8]
		push	ebx
		mov	[ebx+4], eax
		push	[ebp+arg_4]
		mov	word ptr [ebx+8], 0
		push	[ebp+arg_0]
		call	sub_7F826833

loc_7F826D1E:				; CODE XREF: sub_7F826C68+2Aj
					; sub_7F826C68+89j
		cmp	[ebp+var_4], 0
		jz	short loc_7F826D2F
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_7F81813C

loc_7F826D2F:				; CODE XREF: sub_7F826C68+BAj
		mov	ax, word_7F837804
		sub	word_7F838028, ax
		mov	eax, esi
		test	esi, esi
		jnz	short loc_7F826D53
		cmp	[ebp+var_C], 1
		mov	eax, 0
		adc	eax, 0FFFFFFFFh
		and	eax, 1009h

loc_7F826D53:				; CODE XREF: sub_7F826C68+D8j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F826C68	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F826D5C	proc near		; CODE XREF: sub_7F82695E+1B1p

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	eax, dword_7F83803C
		mov	ebp, esp
		sub	esp, 24h
		mov	word ptr [ebp+var_4+2],	1
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	edi, [eax]
		lea	ecx, [ebp+var_C]
		mov	eax, [ebp+arg_8]
		push	ecx
		add	eax, 8
		push	offset ReturnedString
		push	ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_C], 220h
		mov	[ebp+var_1C], eax
		mov	ax, [eax]
		push	eax
		push	dword_7F838038
		call	sub_7F818D47
		cmp	eax, 1014h
		mov	esi, eax
		jnz	short loc_7F826DB2
		cmp	[ebp+var_C], ebx
		jbe	short loc_7F826DB2
		xor	esi, esi
		jmp	short loc_7F826DBA
; ---------------------------------------------------------------------------

loc_7F826DB2:				; CODE XREF: sub_7F826D5C+4Bj
					; sub_7F826D5C+50j
		test	esi, esi
		jnz	loc_7F82722C

loc_7F826DBA:				; CODE XREF: sub_7F826D5C+54j
		mov	eax, [ebp+var_C]
		sub	eax, 1Bh
		push	eax		; cchLength
		mov	eax, offset sz
		push	eax		; lpsz
		push	eax		; int
		call	sub_7F8176EB
		mov	ecx, [ebp+arg_8]
		cmp	byte ptr [ecx+4], 83h
		jnz	short loc_7F826E13
		mov	eax, dword_7F8367EF
		push	eax
		mov	eax, dword_7F838044
		shl	eax, 2
		push	eax
		push	dword_7F838040
		call	sub_7F82A419
		test	eax, eax
		jnz	short loc_7F826E13
		mov	word ptr [ebp+var_4+2],	0
		mov	ax, word_7F837810
		sub	ax, word_7F837808
		add	word_7F838028, ax
		jmp	loc_7F8271C8
; ---------------------------------------------------------------------------

loc_7F826E13:				; CODE XREF: sub_7F826D5C+78j
					; sub_7F826D5C+96j
		movzx	eax, word ptr [edi]
		add	eax, edi
		mov	[ebp+var_18], eax
		mov	ecx, [eax]
		mov	[ebp+var_14], ecx
		cmp	ecx, 0FFFFFFFFh
		jz	loc_7F8271C8

loc_7F826E29:				; CODE XREF: sub_7F826D5C+44Ej
		mov	eax, [ebp+var_18]
		movzx	ecx, word ptr [eax+4]
		movzx	eax, word ptr [eax-2]
		lea	ebx, [edi+ecx+6]
		sub	eax, ecx
		mov	[ebp+var_C], eax
		movzx	eax, word ptr [ebp+var_14]
		test	eax, eax
		jz	loc_7F826F0F
		cmp	eax, 8000h
		jz	loc_7F826F2B
		cmp	eax, 8004h
		jz	loc_7F826F6B
		cmp	eax, 8007h
		jz	loc_7F826FAB
		cmp	eax, 8008h
		jz	loc_7F826FC7
		cmp	eax, 800Dh
		jz	loc_7F826FE4

loc_7F826E80:				; CODE XREF: sub_7F826D5C+1D6j
					; sub_7F826D5C+204j ...
		cmp	[ebp+var_8], 0
		jnz	loc_7F827001
		mov	eax, [ebp+var_1C]
		mov	ax, [eax]
		push	eax
		push	dword_7F838038
		call	sub_7F819508
		lea	ecx, [ebp+var_8]
		mov	[ebp+var_24], eax
		push	ecx
		lea	eax, [ebp+var_24]
		push	0
		push	eax
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F8271B2
		mov	ax, word_7F83780C
		sub	word_7F838028, ax
		movzx	eax, word ptr [edi+2]
		movzx	ecx, word ptr [edi+4]
		add	eax, ecx
		lea	edx, [eax+edi+0Ch]
		mov	[ebp+var_10], edx
		cmp	[ebp+var_18], edx
		jb	loc_7F827012

loc_7F826EE2:				; CODE XREF: sub_7F826D5C+1ACj
		push	0
		mov	eax, [ebp+var_10]
		push	dword ptr [eax]
		push	[ebp+var_8]
		call	sub_7F8194ED
		mov	word ptr [ebp+var_4], ax
		test	ax, ax
		jl	loc_7F8271C2
		add	[ebp+var_10], 6
		mov	eax, [ebp+var_18]
		cmp	eax, [ebp+var_10]
		jnb	short loc_7F826EE2
		jmp	loc_7F827012
; ---------------------------------------------------------------------------

loc_7F826F0F:				; CODE XREF: sub_7F826D5C+E7j
		mov	eax, dword_7F8367EB
		push	eax
		push	[ebp+var_C]
		push	ebx
		call	sub_7F82A419
		test	eax, eax
		jnz	loc_7F82719B
		jmp	loc_7F8271C2
; ---------------------------------------------------------------------------

loc_7F826F2B:				; CODE XREF: sub_7F826D5C+F2j
		test	byte_7F8367E6, 40h
		jnz	loc_7F826E80
		push	offset sz	; lpString
		call	ds:lstrlenA
		push	0		; int
		mov	[ebp+var_10], eax
		push	eax		; __int16
		push	offset sz	; int
		push	ebx		; lpString
		call	sub_7F827EC0
		test	eax, eax
		jnz	loc_7F82719B
		cmp	[ebp+var_10], 7Fh
		jnb	loc_7F826E80
		jmp	loc_7F8271C2
; ---------------------------------------------------------------------------

loc_7F826F6B:				; CODE XREF: sub_7F826D5C+FDj
		push	offset sz	; lpString
		call	ds:lstrlenA
		add	eax, offset unk_7F8367F4
		push	eax		; lpString
		mov	[ebp+var_20], eax
		call	ds:lstrlenA
		push	0		; int
		mov	[ebp+var_10], eax
		push	eax		; __int16
		push	[ebp+var_20]	; int
		push	ebx		; lpString
		call	sub_7F827EC0
		test	eax, eax
		jnz	loc_7F82719B
		cmp	[ebp+var_10], 7Fh
		jnb	loc_7F826E80
		jmp	loc_7F8271C2
; ---------------------------------------------------------------------------

loc_7F826FAB:				; CODE XREF: sub_7F826D5C+108j
		mov	al, byte_7F8367E6
		push	eax
		push	[ebp+var_C]
		push	ebx
		call	sub_7F82A3C9
		test	eax, eax
		jnz	loc_7F82719B
		jmp	loc_7F8271C2
; ---------------------------------------------------------------------------

loc_7F826FC7:				; CODE XREF: sub_7F826D5C+113j
		mov	ax, word_7F8367E7
		push	eax
		push	[ebp+var_C]
		push	ebx
		call	sub_7F82A3EF
		test	eax, eax
		jnz	loc_7F82719B
		jmp	loc_7F8271C2
; ---------------------------------------------------------------------------

loc_7F826FE4:				; CODE XREF: sub_7F826D5C+11Ej
		mov	ax, word_7F8367E9
		push	eax
		push	[ebp+var_C]
		push	ebx
		call	sub_7F82A3EF
		test	eax, eax
		jnz	loc_7F82719B
		jmp	loc_7F8271C2
; ---------------------------------------------------------------------------

loc_7F827001:				; CODE XREF: sub_7F826D5C+128j
		push	0
		push	[ebp+var_14]
		push	[ebp+var_8]
		call	sub_7F8194ED
		mov	word ptr [ebp+var_4], ax

loc_7F827012:				; CODE XREF: sub_7F826D5C+180j
					; sub_7F826D5C+1AEj
		mov	eax, [ebp+var_14]
		shr	eax, 10h
		movzx	eax, ax
		cmp	eax, 8		; switch 9 cases
		ja	short loc_7F827027 ; jumptable 7F827020	default	case
		jmp	ds:off_7F827279[eax*4] ; switch	jump
; ---------------------------------------------------------------------------

loc_7F827027:				; CODE XREF: sub_7F826D5C+2C2j
					; sub_7F826D5C+2C4j
					; DATA XREF: ...
		lea	eax, [ebp+var_4+2] ; jumptable 7F827020	default	case
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	[ebp+var_C]
		push	ebx
		call	sub_7F8283BC
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F82722C
		cmp	word ptr [ebp+var_4+2],	0
		jnz	loc_7F82719B
		jmp	loc_7F8271C8
; ---------------------------------------------------------------------------

loc_7F827054:				; CODE XREF: sub_7F826D5C+2C4j
					; DATA XREF: .text:off_7F827279o
		lea	eax, [ebp+var_4+2] ; jumptable 7F827020	case 0
		push	eax		; int
		push	[ebp+var_4]	; int
		push	[ebp+var_8]	; int
		push	ebx		; lpString
		call	sub_7F82826A
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F82722C
		cmp	word ptr [ebp+var_4+2],	0
		jnz	loc_7F82719B
		cmp	[ebp+var_14], 8001h
		jnz	short loc_7F8270F1
		push	0
		push	8002h
		push	[ebp+var_8]
		call	sub_7F8194ED
		mov	word ptr [ebp+var_4], ax
		test	ax, ax
		jl	short loc_7F8270B4
		lea	eax, [ebp+var_4+2]
		push	eax		; int
		push	[ebp+var_4]	; int
		push	[ebp+var_8]	; int
		push	ebx		; lpString
		call	sub_7F82826A
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F82722C

loc_7F8270B4:				; CODE XREF: sub_7F826D5C+33Cj
		cmp	word ptr [ebp+var_4+2],	0
		jnz	loc_7F82719B
		push	0
		push	8003h
		push	[ebp+var_8]
		call	sub_7F8194ED
		mov	word ptr [ebp+var_4], ax
		test	ax, ax
		jl	short loc_7F8270F1
		lea	eax, [ebp+var_4+2]
		push	eax		; int
		push	[ebp+var_4]	; int
		push	[ebp+var_8]	; int
		push	ebx		; lpString
		call	sub_7F82826A
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F82722C

loc_7F8270F1:				; CODE XREF: sub_7F826D5C+324j
					; sub_7F826D5C+379j
		cmp	word ptr [ebp+var_4+2],	0
		jnz	loc_7F82719B
		jmp	loc_7F8271C8
; ---------------------------------------------------------------------------

loc_7F827101:				; CODE XREF: sub_7F826D5C+2C4j
					; DATA XREF: .text:off_7F827279o
		lea	eax, [ebp+var_4+2] ; jumptable 7F827020	cases 1,2
		push	eax		; int
		push	0		; int
		push	0		; int
		push	[ebp+var_4]	; int
		push	[ebp+var_8]	; int
		push	ebx		; lpString
		call	sub_7F827F63
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F82722C
		cmp	word ptr [ebp+var_4+2],	0
		jnz	short loc_7F82719B
		jmp	loc_7F8271C8
; ---------------------------------------------------------------------------

loc_7F82712B:				; CODE XREF: sub_7F826D5C+2C4j
					; DATA XREF: .text:off_7F827279o
		lea	eax, [ebp+var_4+2] ; jumptable 7F827020	case 3
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	[ebp+var_C]
		push	ebx
		call	sub_7F828018
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F82722C
		cmp	word ptr [ebp+var_4+2],	0
		jnz	short loc_7F82719B
		jmp	short loc_7F8271C8
; ---------------------------------------------------------------------------

loc_7F827151:				; CODE XREF: sub_7F826D5C+2C4j
					; DATA XREF: .text:off_7F827279o
		lea	eax, [ebp+var_4+2] ; jumptable 7F827020	cases 4,7
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	[ebp+var_C]
		push	ebx
		call	sub_7F828107
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F82722C
		cmp	word ptr [ebp+var_4+2],	0
		jnz	short loc_7F82719B
		jmp	short loc_7F8271C8
; ---------------------------------------------------------------------------

loc_7F827177:				; CODE XREF: sub_7F826D5C+2C4j
					; DATA XREF: .text:off_7F827279o
		lea	eax, [ebp+var_4+2] ; jumptable 7F827020	cases 5,8
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	[ebp+var_C]
		push	ebx
		call	sub_7F8281B9
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F82722C
		cmp	word ptr [ebp+var_4+2],	0
		jz	short loc_7F8271C8

loc_7F82719B:				; CODE XREF: sub_7F826D5C+1C4j
					; sub_7F826D5C+1FAj ...
		sub	[ebp+var_18], 6
		mov	eax, [ebp+var_18]
		mov	ecx, [eax]
		mov	[ebp+var_14], ecx
		cmp	ecx, 0FFFFFFFFh
		jnz	loc_7F826E29
		jmp	short loc_7F8271C8
; ---------------------------------------------------------------------------

loc_7F8271B2:				; CODE XREF: sub_7F826D5C+159j
		cmp	esi, 1001h
		jnz	short loc_7F82722C
		xor	esi, esi
		mov	word ptr [ebp+var_4+2],	si
		jmp	short loc_7F8271C8
; ---------------------------------------------------------------------------

loc_7F8271C2:				; CODE XREF: sub_7F826D5C+19Cj
					; sub_7F826D5C+1CAj ...
		mov	word ptr [ebp+var_4+2],	0

loc_7F8271C8:				; CODE XREF: sub_7F826D5C+B2j
					; sub_7F826D5C+C7j ...
		mov	eax, [ebp+arg_8]
		cmp	byte ptr [eax+4], 83h
		jnz	short loc_7F8271DE
		cmp	word ptr [ebp+var_4+2],	1
		sbb	eax, eax
		neg	eax
		mov	word ptr [ebp+var_4+2],	ax

loc_7F8271DE:				; CODE XREF: sub_7F826D5C+473j
		cmp	word ptr [ebp+var_4+2],	0
		jz	short loc_7F82722C
		mov	eax, [ebp+var_1C]
		mov	ax, [eax]
		push	eax
		push	dword_7F838038
		call	sub_7F819508
		movsx	ecx, word_7F838020
		mov	dx, word_7F837814
		mov	dword_7F837820[ecx*4], eax
		inc	word_7F838020
		cmp	word_7F838020, dx
		jl	short loc_7F82722C
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82729D
		mov	esi, eax

loc_7F82722C:				; CODE XREF: sub_7F826D5C+58j
					; sub_7F826D5C+2E2j ...
		mov	eax, [ebp+var_1C]
		mov	di, [eax]
		inc	di
		mov	[eax], di
		push	dword_7F838038
		call	sub_7F8198FC
		cmp	ax, di
		jg	short loc_7F827250
		test	esi, esi
		jnz	short loc_7F827250
		mov	esi, 1005h

loc_7F827250:				; CODE XREF: sub_7F826D5C+4E9j
					; sub_7F826D5C+4EDj
		cmp	[ebp+var_8], 0
		jz	short loc_7F827261
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F81813C

loc_7F827261:				; CODE XREF: sub_7F826D5C+4F8j
		mov	ax, word_7F837808
		pop	edi
		sub	word_7F838028, ax
		mov	eax, esi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F826D5C	endp

; ---------------------------------------------------------------------------
off_7F827279	dd offset loc_7F827054	; DATA XREF: sub_7F826D5C+2C4r
		dd offset loc_7F827101	; jump table for switch	statement
		dd offset loc_7F827101
		dd offset loc_7F82712B
		dd offset loc_7F827151
		dd offset loc_7F827177
		dd offset loc_7F827027
		dd offset loc_7F827151
		dd offset loc_7F827177

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82729D	proc near		; CODE XREF: sub_7F8261A0+2EFp
					; sub_7F8261A0+352p ...

var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		cmp	word_7F838020, 0
		push	esi
		push	edi
		mov	edi, offset dword_7F837820
		jg	short loc_7F8272BB
		xor	eax, eax
		jmp	loc_7F8273A7
; ---------------------------------------------------------------------------

loc_7F8272BB:				; CODE XREF: sub_7F82729D+15j
		mov	esi, [ebp+arg_8]
		add	esi, 4
		cmp	byte ptr [esi],	83h
		jnz	short loc_7F827326
		mov	ax, word_7F837800
		sub	word_7F838028, ax

loc_7F8272D3:				; CODE XREF: sub_7F82729D+85j
		mov	ax, word_7F838020
		mov	[ebp+var_2], ax
		lea	eax, [ebp+var_2]
		push	eax
		push	edi
		push	dword ptr [esi]
		push	[ebp+arg_0]
		call	sub_7F81BF33
		test	eax, eax
		jz	short loc_7F82730F
		cmp	eax, 1004h
		jz	short loc_7F827302
		cmp	eax, 1008h
		jnz	loc_7F82739E

loc_7F827302:				; CODE XREF: sub_7F82729D+58j
		inc	[ebp+var_2]
		xor	eax, eax
		movsx	ecx, [ebp+var_2]
		lea	edi, [edi+ecx*4]

loc_7F82730F:				; CODE XREF: sub_7F82729D+51j
		mov	cx, [ebp+var_2]
		sub	word_7F838020, cx
		cmp	word_7F838020, 0
		jg	short loc_7F8272D3
		jmp	short loc_7F82739E
; ---------------------------------------------------------------------------

loc_7F827326:				; CODE XREF: sub_7F82729D+27j
		mov	ax, word_7F8377FC
		push	0
		sub	word_7F838028, ax
		push	0
		push	0
		lea	ecx, [ebp+var_8]
		push	ecx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82D114
		test	eax, eax
		jnz	short loc_7F82739E

loc_7F82734C:				; CODE XREF: sub_7F82729D+FFj
		mov	ax, word_7F838020
		push	0
		mov	[ebp+var_2], ax
		lea	eax, [ebp+var_2]
		push	eax
		push	edi
		push	[ebp+var_8]
		push	dword ptr [esi]
		push	[ebp+arg_0]
		call	sub_7F81C56F
		test	eax, eax
		jz	short loc_7F827389
		cmp	eax, 1004h
		jz	short loc_7F82737C
		cmp	eax, 1008h
		jnz	short loc_7F82739E

loc_7F82737C:				; CODE XREF: sub_7F82729D+D6j
		inc	[ebp+var_2]
		xor	eax, eax
		movsx	ecx, [ebp+var_2]
		lea	edi, [edi+ecx*4]

loc_7F827389:				; CODE XREF: sub_7F82729D+CFj
		mov	cx, [ebp+var_2]
		sub	word_7F838020, cx
		cmp	word_7F838020, 0
		jg	short loc_7F82734C

loc_7F82739E:				; CODE XREF: sub_7F82729D+5Fj
					; sub_7F82729D+87j ...
		mov	word_7F838020, 0

loc_7F8273A7:				; CODE XREF: sub_7F82729D+19j
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F82729D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8273AF	proc near		; CODE XREF: sub_7F825C1D+124p

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_A		= dword	ptr -0Ah
var_6		= dword	ptr -6
var_2		= word ptr -2
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, 20h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		lea	eax, [ebp+var_1C]
		push	eax
		mov	[ebp+var_1C], edi
		push	edi
		lea	ecx, [ebp+var_20]
		push	ecx
		mov	[ebp+var_18], edi
		push	[ebp+arg_0]
		mov	[ebp+var_20], 4D504981h
		mov	[ebp+var_10], edi
		call	sub_7F817E9D
		cmp	eax, ebx
		mov	esi, eax
		jnz	loc_7F8276D1
		lea	eax, [ebp+var_18]
		lea	ecx, [ebp+var_20]
		mov	[ebp+var_20], 53464180h
		push	eax
		push	1
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		cmp	eax, ebx
		mov	esi, eax
		jnz	loc_7F8276D1
		lea	eax, [ebp+var_10]
		lea	ecx, [ebp+var_20]
		mov	[ebp+var_20], 46534180h
		push	eax
		push	1
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		cmp	eax, ebx
		mov	esi, eax
		jnz	loc_7F8276D1
		cmp	[ebp+arg_8], 0FFFFFFFFh
		jnz	short loc_7F82743D
		mov	word ptr [ebp+var_6+2],	di
		mov	[ebp+var_2], di
		jmp	short loc_7F8274AE
; ---------------------------------------------------------------------------

loc_7F82743D:				; CODE XREF: sub_7F8273AF+82j
		cmp	[ebp+arg_8], 0
		jz	short loc_7F82749C
		lea	eax, [ebp+var_A]
		lea	ecx, [ebp+var_6+2]
		push	eax
		push	0
		push	ecx
		push	[ebp+arg_8]
		push	[ebp+var_1C]
		call	sub_7F81B5AF
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F827474
		cmp	esi, 1004h
		jnz	loc_7F8276D1
		mov	esi, 1009h
		jmp	loc_7F8276D1
; ---------------------------------------------------------------------------

loc_7F827474:				; CODE XREF: sub_7F8273AF+ADj
		lea	eax, [ebp+var_A+2]
		push	eax
		push	[ebp+var_A]
		push	[ebp+var_6+2]
		push	[ebp+var_1C]
		call	sub_7F81B64C
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F8276D1
		mov	ax, word ptr [ebp+var_A+2]
		sub	ax, word ptr [ebp+var_6+2]
		inc	ax
		jmp	short loc_7F8274AA
; ---------------------------------------------------------------------------

loc_7F82749C:				; CODE XREF: sub_7F8273AF+92j
		push	[ebp+var_1C]
		mov	word ptr [ebp+var_6+2],	0
		call	sub_7F8198FC

loc_7F8274AA:				; CODE XREF: sub_7F8273AF+EBj
		mov	[ebp+var_2], ax

loc_7F8274AE:				; CODE XREF: sub_7F8273AF+8Cj
		cmp	[ebp+var_2], 0
		jle	short loc_7F82752F
		movsx	eax, [ebp+var_2]
		shl	eax, 2
		push	0
		push	eax
		call	sub_7F82F03B
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F8274D4
		mov	esi, 400h
		jmp	loc_7F8276D1
; ---------------------------------------------------------------------------

loc_7F8274D4:				; CODE XREF: sub_7F8273AF+119j
		push	edi
		lea	eax, [ebp+var_2]
		push	eax
		push	[ebp+var_6+2]
		push	[ebp+var_1C]
		call	sub_7F819938
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F8276D1
		cmp	[ebp+arg_8], 0
		jnz	short loc_7F82752F
		movsx	eax, [ebp+var_2]
		shl	eax, 2
		push	74735782h
		push	eax
		push	edi
		call	sub_7F82A419
		test	eax, eax
		jz	short loc_7F82752F
		dec	[ebp+var_2]
		mov	ecx, edi
		sub	ecx, eax
		movsx	edx, [ebp+var_2]
		lea	ecx, [ecx+edx*4]
		mov	[ebp+var_14], ecx
		test	ecx, ecx
		jz	short loc_7F82752F
		push	ecx
		lea	edx, [eax+4]
		push	edx
		push	eax
		call	sub_7F82FCE0
		add	esp, 0Ch

loc_7F82752F:				; CODE XREF: sub_7F8273AF+104j
					; sub_7F8273AF+143j ...
		push	0
		push	[ebp+arg_4]
		push	[ebp+var_10]
		call	sub_7F8194ED
		mov	word ptr [ebp+var_6+2],	ax
		test	ax, ax
		jl	short loc_7F827591
		push	[ebp+var_6+2]
		push	[ebp+var_10]
		call	sub_7F81990D
		push	0
		mov	[ebp+var_14], eax
		shr	eax, 2
		push	[ebp+var_14]
		mov	word ptr [ebp+var_6], ax
		call	sub_7F82F03B
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F827574
		mov	esi, 400h
		jmp	loc_7F8276D1
; ---------------------------------------------------------------------------

loc_7F827574:				; CODE XREF: sub_7F8273AF+1B9j
		lea	eax, [ebp+var_14]
		push	eax
		push	ebx
		push	0
		push	[ebp+var_6+2]
		push	[ebp+var_10]
		call	sub_7F818D47
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F8275C2
		jmp	loc_7F8276D1
; ---------------------------------------------------------------------------

loc_7F827591:				; CODE XREF: sub_7F8273AF+194j
		mov	word ptr [ebp+var_6], 0
		cmp	[ebp+var_2], 0
		jle	short loc_7F82760B
		movsx	eax, [ebp+var_2]
		shl	eax, 2
		lea	edx, [ebp+var_6+2]
		push	eax
		mov	[ebp+var_14], eax
		push	[ebp+arg_4]
		push	edx
		push	[ebp+var_10]
		call	sub_7F818B75
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F8276D1

loc_7F8275C2:				; CODE XREF: sub_7F8273AF+1DBj
		cmp	[ebp+var_2], 0
		jle	short loc_7F82760B
		movsx	eax, [ebp+var_2]
		shl	eax, 2
		cmp	eax, [ebp+var_14]
		jz	short loc_7F8275EE
		push	eax
		mov	[ebp+var_14], eax
		push	[ebp+var_6+2]
		push	[ebp+var_10]
		call	sub_7F81851E
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F8276D1

loc_7F8275EE:				; CODE XREF: sub_7F8273AF+224j
		push	[ebp+var_14]
		push	edi
		push	0
		lea	ecx, [ebp+var_6+2]
		push	ecx
		push	[ebp+var_10]
		call	sub_7F818DC7
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F827627
		jmp	loc_7F8276D1
; ---------------------------------------------------------------------------

loc_7F82760B:				; CODE XREF: sub_7F8273AF+1EDj
					; sub_7F8273AF+218j
		cmp	word ptr [ebp+var_6+2],	0
		jl	short loc_7F82761F
		push	[ebp+var_6+2]
		push	[ebp+var_10]
		call	sub_7F818AE7
		mov	esi, eax

loc_7F82761F:				; CODE XREF: sub_7F8273AF+261j
		test	esi, esi
		jnz	loc_7F8276D1

loc_7F827627:				; CODE XREF: sub_7F8273AF+255j
		cmp	[ebp+var_2], 0
		jz	short loc_7F827637
		push	dword ptr [ebp+var_2]
		push	edi
		call	sub_7F827737

loc_7F827637:				; CODE XREF: sub_7F8273AF+27Dj
		cmp	word ptr [ebp+var_6], 0
		jz	short loc_7F827647
		push	[ebp+var_6]
		push	ebx
		call	sub_7F827737

loc_7F827647:				; CODE XREF: sub_7F8273AF+28Dj
		lea	eax, [ebp+var_2]
		lea	ecx, [ebp+var_6]
		push	eax
		push	edi
		push	ecx
		push	ebx
		call	sub_7F8277C1
		cmp	word ptr [ebp+var_6], 0
		jle	short loc_7F827676
		push	0
		push	1
		push	[ebp+var_18]
		push	[ebp+var_6]
		push	ebx
		push	[ebp+arg_4]
		call	sub_7F82786A
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F8276D1

loc_7F827676:				; CODE XREF: sub_7F8273AF+2ACj
		cmp	[ebp+var_2], 0
		jle	short loc_7F827697
		push	1
		lea	ecx, [ebp+arg_4]
		push	[ebp+var_18]
		push	dword ptr [ebp+var_2]
		push	edi
		push	1
		push	ecx
		call	sub_7F8279C8
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F8276D1

loc_7F827697:				; CODE XREF: sub_7F8273AF+2CCj
		cmp	[ebp+arg_8], 0
		jnz	short loc_7F8276B9
		push	1
		lea	ecx, [ebp+arg_8]
		push	[ebp+var_18]
		push	1
		push	ecx
		lea	edx, [ebp+arg_4]
		push	1
		push	edx
		call	sub_7F8279C8
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F8276D1

loc_7F8276B9:				; CODE XREF: sub_7F8273AF+2ECj
		push	[ebp+var_18]
		call	sub_7F8178C4
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F8276D1
		push	[ebp+var_10]
		call	sub_7F8178C4
		mov	esi, eax

loc_7F8276D1:				; CODE XREF: sub_7F8273AF+32j
					; sub_7F8273AF+55j ...
		cmp	[ebp+var_1C], 0
		jz	short loc_7F8276E2
		push	0
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_7F81813C

loc_7F8276E2:				; CODE XREF: sub_7F8273AF+326j
		test	edi, edi
		jz	short loc_7F8276EC
		push	edi
		call	sub_7F82F149

loc_7F8276EC:				; CODE XREF: sub_7F8273AF+335j
		test	ebx, ebx
		jz	short loc_7F8276F6
		push	ebx
		call	sub_7F82F149

loc_7F8276F6:				; CODE XREF: sub_7F8273AF+33Fj
		test	esi, esi
		jz	short loc_7F82771C
		cmp	[ebp+var_18], 0
		jz	short loc_7F82770B
		push	0
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_7F81813C

loc_7F82770B:				; CODE XREF: sub_7F8273AF+34Fj
		cmp	[ebp+var_10], 0
		jz	short loc_7F82771C
		push	0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_7F81813C

loc_7F82771C:				; CODE XREF: sub_7F8273AF+349j
					; sub_7F8273AF+360j
		mov	ecx, [ebp+var_18]
		mov	eax, [ebp+arg_C]
		mov	edx, [ebp+var_10]
		pop	edi
		mov	[eax], ecx
		mov	ecx, [ebp+arg_10]
		mov	eax, esi
		pop	esi
		pop	ebx
		mov	[ecx], edx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F8273AF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F827737	proc near		; CODE XREF: sub_7F8273AF+283p
					; sub_7F8273AF+293p

var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch

		push	ebp
		dec	[esp+arg_4]
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+var_2], 1
		cmp	[ebp+arg_4], 0
		push	ebx
		push	esi
		push	edi
		jle	short loc_7F8277B8
		mov	esi, [ebp+arg_0]

loc_7F827755:				; CODE XREF: sub_7F827737+7Fj
		movsx	eax, [ebp+var_2]
		mov	cx, [ebp+var_2]
		mov	edi, [esi+eax*4]
		xor	ax, ax
		cmp	cx, ax
		jle	short loc_7F827787

loc_7F827768:				; CODE XREF: sub_7F827737+4Ej
		movsx	edx, cx
		movsx	ebx, ax
		add	edx, ebx
		sar	edx, 1
		movsx	ebx, dx
		cmp	[esi+ebx*4], edi
		jbe	short loc_7F82777F
		mov	cx, dx
		jmp	short loc_7F827782
; ---------------------------------------------------------------------------

loc_7F82777F:				; CODE XREF: sub_7F827737+41j
		lea	eax, [edx+1]

loc_7F827782:				; CODE XREF: sub_7F827737+46j
		cmp	cx, ax
		jg	short loc_7F827768

loc_7F827787:				; CODE XREF: sub_7F827737+2Fj
		cmp	ax, [ebp+var_2]
		jz	short loc_7F8277AE
		movsx	ebx, ax
		movsx	eax, [ebp+var_2]
		sub	eax, ebx
		lea	ecx, [esi+ebx*4+4]
		shl	eax, 2
		push	eax
		lea	eax, [esi+ebx*4]
		push	eax
		push	ecx
		call	sub_7F82FCE0
		add	esp, 0Ch
		mov	[esi+ebx*4], edi

loc_7F8277AE:				; CODE XREF: sub_7F827737+54j
		inc	[ebp+var_2]
		dec	[ebp+arg_4]
		jnz	short loc_7F827755

loc_7F8277B8:				; CODE XREF: sub_7F827737+19j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F827737	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8277C1	proc near		; CODE XREF: sub_7F8273AF+2A2p
					; sub_7F829147+BCp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ecx, [esp+arg_C]
		mov	cx, [ecx]
		mov	ebp, esp
		push	ebx
		push	esi
		test	cx, cx
		push	edi
		mov	edi, [ebp+arg_0]
		mov	esi, [ebp+arg_8]
		mov	eax, [ebp+arg_4]
		mov	dx, [eax]
		jle	short loc_7F82782F

loc_7F8277DF:				; CODE XREF: sub_7F8277C1+5Aj
		test	dx, dx
		jle	short loc_7F82781D
		mov	eax, [ebp+arg_8]
		mov	ebx, [eax]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		cmp	ebx, eax
		jbe	short loc_7F8277FF
		add	[ebp+arg_0], 4
		dec	dx
		mov	[edi], eax
		add	edi, 4
		jmp	short loc_7F827818
; ---------------------------------------------------------------------------

loc_7F8277FF:				; CODE XREF: sub_7F8277C1+2Fj
		jnb	short loc_7F82780C
		add	[ebp+arg_8], 4
		mov	[esi], ebx
		add	esi, 4
		jmp	short loc_7F827816
; ---------------------------------------------------------------------------

loc_7F82780C:				; CODE XREF: sub_7F8277C1:loc_7F8277FFj
		add	[ebp+arg_0], 4
		dec	dx
		add	[ebp+arg_8], 4

loc_7F827816:				; CODE XREF: sub_7F8277C1+49j
		dec	cx

loc_7F827818:				; CODE XREF: sub_7F8277C1+3Cj
		test	cx, cx
		jg	short loc_7F8277DF

loc_7F82781D:				; CODE XREF: sub_7F8277C1+21j
		test	cx, cx
		jle	short loc_7F82782F
		movsx	eax, cx
		shl	eax, 2
		push	eax
		push	[ebp+arg_8]
		push	esi
		jmp	short loc_7F82783F
; ---------------------------------------------------------------------------

loc_7F82782F:				; CODE XREF: sub_7F8277C1+1Cj
					; sub_7F8277C1+5Fj
		test	dx, dx
		jle	short loc_7F827847
		movsx	eax, dx
		shl	eax, 2
		push	eax
		push	[ebp+arg_0]
		push	edi

loc_7F82783F:				; CODE XREF: sub_7F8277C1+6Cj
		call	sub_7F82FCE0
		add	esp, 0Ch

loc_7F827847:				; CODE XREF: sub_7F8277C1+71j
		mov	ecx, [ebp+arg_0]
		mov	eax, [ebp+arg_4]
		sub	ecx, edi
		sar	ecx, 2
		pop	edi
		sub	[eax], cx
		mov	eax, [ebp+arg_8]
		sub	eax, esi
		mov	ecx, [ebp+arg_C]
		sar	eax, 2
		pop	esi
		sub	[ecx], ax
		pop	ebx
		pop	ebp
		retn	10h
sub_7F8277C1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82786A	proc near		; CODE XREF: sub_7F8273AF+2BCp
					; sub_7F828680+12Ep

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		= word ptr  10h
arg_C		= dword	ptr  14h
arg_10		= byte ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp+var_C], 20h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	ebx
		push	20h
		call	sub_7F82F18D
		cmp	eax, ebx
		mov	esi, eax
		jnz	short loc_7F827894
		mov	eax, 400h
		jmp	loc_7F8279BF
; ---------------------------------------------------------------------------

loc_7F827894:				; CODE XREF: sub_7F82786A+1Ej
		mov	ax, [ebp+arg_8]
		mov	edi, [esi]
		dec	[ebp+arg_8]
		test	ax, ax
		jle	loc_7F8279B3

loc_7F8278A7:				; CODE XREF: sub_7F82786A+13Cj
		push	0
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax]
		push	[ebp+arg_C]
		call	sub_7F8194ED
		mov	word ptr [ebp+var_4], ax
		test	ax, ax
		jl	loc_7F82799B
		push	[ebp+var_4]
		push	[ebp+arg_C]
		call	sub_7F81990D
		and	al, 0FCh
		mov	[ebp+var_8], eax
		cmp	eax, [ebp+var_C]
		jbe	short loc_7F8278F0
		push	0
		mov	[ebp+var_C], eax
		push	eax
		push	esi
		call	sub_7F82F24A
		test	eax, eax
		jz	loc_7F8279AE
		mov	esi, eax
		mov	edi, [eax]

loc_7F8278F0:				; CODE XREF: sub_7F82786A+6Cj
		lea	eax, [ebp+var_8]
		push	eax
		push	edi
		push	0
		push	[ebp+var_4]
		push	[ebp+arg_C]
		call	sub_7F818D47
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F8279B3
		mov	eax, [ebp+var_8]
		shr	eax, 2
		dec	ax
		mov	word ptr [ebp+var_4+2],	ax
		js	short loc_7F827983

loc_7F82791A:				; CODE XREF: sub_7F82786A+C0j
		movsx	ecx, word ptr [ebp+var_4+2]
		mov	eax, [ebp+arg_0]
		cmp	[edi+ecx*4], eax
		jz	short loc_7F82792E
		dec	word ptr [ebp+var_4+2]
		jns	short loc_7F82791A
		jmp	short loc_7F827983
; ---------------------------------------------------------------------------

loc_7F82792E:				; CODE XREF: sub_7F82786A+BAj
		sub	[ebp+var_8], 4
		movsx	eax, word ptr [ebp+var_4+2]
		shl	eax, 2
		cmp	eax, [ebp+var_8]
		jz	short loc_7F827954
		lea	edx, [edi+eax]
		mov	ecx, [ebp+var_8]
		sub	ecx, eax
		lea	eax, [edx+4]
		push	ecx
		push	eax
		push	edx
		call	sub_7F82FCE0
		add	esp, 0Ch

loc_7F827954:				; CODE XREF: sub_7F82786A+D2j
		cmp	[ebp+var_8], 0
		jnz	short loc_7F82796D
		test	[ebp+arg_10], 1
		jz	short loc_7F82796D
		push	[ebp+var_4]
		push	[ebp+arg_C]
		call	sub_7F818AE7
		jmp	short loc_7F82797D
; ---------------------------------------------------------------------------

loc_7F82796D:				; CODE XREF: sub_7F82786A+EEj
					; sub_7F82786A+F4j
		push	[ebp+var_8]
		push	edi
		lea	ecx, [ebp+var_4]
		push	ecx
		push	[ebp+arg_C]
		call	sub_7F818E95

loc_7F82797D:				; CODE XREF: sub_7F82786A+101j
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F8279B3

loc_7F827983:				; CODE XREF: sub_7F82786A+AEj
					; sub_7F82786A+C2j
		cmp	[ebp+arg_14], 0
		jz	short loc_7F827997
		mov	cx, word ptr [ebp+var_4+2]
		mov	eax, [ebp+arg_14]
		add	[ebp+arg_14], 2
		mov	[eax], cx

loc_7F827997:				; CODE XREF: sub_7F82786A+11Dj
		add	[ebp+arg_4], 4

loc_7F82799B:				; CODE XREF: sub_7F82786A+53j
		mov	ax, [ebp+arg_8]
		dec	[ebp+arg_8]
		test	ax, ax
		jg	loc_7F8278A7
		jmp	short loc_7F8279B3
; ---------------------------------------------------------------------------

loc_7F8279AE:				; CODE XREF: sub_7F82786A+7Cj
		mov	ebx, 400h

loc_7F8279B3:				; CODE XREF: sub_7F82786A+37j
					; sub_7F82786A+9Cj ...
		test	esi, esi
		jz	short loc_7F8279BD
		push	esi
		call	sub_7F82F1E1

loc_7F8279BD:				; CODE XREF: sub_7F82786A+14Bj
		mov	eax, ebx

loc_7F8279BF:				; CODE XREF: sub_7F82786A+25j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F82786A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8279C8	proc near		; CODE XREF: sub_7F8273AF+2DDp
					; sub_7F8273AF+2FFp ...

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= word ptr  14h
arg_10		= dword	ptr  18h
arg_14		= byte ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	[ebp+var_14], 20h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	esi
		mov	[ebp+var_C], esi
		push	20h
		call	sub_7F82F18D
		mov	[ebp+var_10], eax
		cmp	eax, esi
		jnz	short loc_7F8279F6
		mov	eax, 400h
		jmp	loc_7F827B95
; ---------------------------------------------------------------------------

loc_7F8279F6:				; CODE XREF: sub_7F8279C8+22j
		mov	cx, [ebp+arg_C]
		mov	eax, [ebp+var_10]
		dec	[ebp+arg_C]
		mov	esi, [eax]
		test	cx, cx
		jle	loc_7F827B84

loc_7F827A0C:				; CODE XREF: sub_7F8279C8+1ADj
		push	0
		mov	eax, [ebp+arg_8]
		push	dword ptr [eax]
		push	[ebp+arg_10]
		call	sub_7F8194ED
		mov	[ebp+var_2], ax
		test	ax, ax
		jge	short loc_7F827A51
		movsx	eax, [ebp+arg_4]
		shl	eax, 2
		mov	ecx, [ebp+arg_8]
		push	eax
		lea	eax, [ebp+var_2]
		push	dword ptr [ecx]
		push	eax
		push	[ebp+arg_10]
		call	sub_7F818B75
		mov	[ebp+var_C], eax
		test	eax, eax
		jnz	loc_7F827B84
		mov	[ebp+var_8], 0
		jmp	short loc_7F827A61
; ---------------------------------------------------------------------------

loc_7F827A51:				; CODE XREF: sub_7F8279C8+5Aj
		push	dword ptr [ebp+var_2]
		push	[ebp+arg_10]
		call	sub_7F81990D
		and	al, 0FCh
		mov	[ebp+var_8], eax

loc_7F827A61:				; CODE XREF: sub_7F8279C8+87j
		movsx	eax, [ebp+arg_4]
		lea	edi, ds:0[eax*4]
		mov	eax, [ebp+var_8]
		add	eax, edi
		cmp	eax, [ebp+var_14]
		jbe	short loc_7F827A91
		push	0
		mov	[ebp+var_14], eax
		push	eax
		push	[ebp+var_10]
		call	sub_7F82F24A
		test	eax, eax
		jz	loc_7F827B7D
		mov	esi, [eax]
		mov	[ebp+var_10], eax

loc_7F827A91:				; CODE XREF: sub_7F8279C8+ACj
		cmp	[ebp+var_8], 0
		jz	short loc_7F827AB4
		lea	eax, [ebp+var_8]
		push	eax
		push	esi
		push	0
		push	dword ptr [ebp+var_2]
		push	[ebp+arg_10]
		call	sub_7F818D47
		mov	[ebp+var_C], eax
		test	eax, eax
		jnz	loc_7F827B84

loc_7F827AB4:				; CODE XREF: sub_7F8279C8+CDj
		test	[ebp+arg_14], 1
		jz	short loc_7F827B20
		mov	ax, [ebp+arg_4]
		mov	edi, [ebp+arg_0]
		mov	[ebp+var_4], ax
		test	ax, ax
		jle	loc_7F827B4F

loc_7F827ACE:				; CODE XREF: sub_7F8279C8+154j
		mov	ecx, [ebp+var_8]
		mov	ebx, esi
		shr	ecx, 2
		test	cx, cx
		jle	short loc_7F827B08
		mov	eax, [edi]

loc_7F827ADD:				; CODE XREF: sub_7F8279C8+121j
		cmp	[ebx], eax
		jnb	short loc_7F827AED
		dec	cx
		add	ebx, 4
		test	cx, cx
		jg	short loc_7F827ADD
		jmp	short loc_7F827AEF
; ---------------------------------------------------------------------------

loc_7F827AED:				; CODE XREF: sub_7F8279C8+117j
		jbe	short loc_7F827B66

loc_7F827AEF:				; CODE XREF: sub_7F8279C8+123j
		test	cx, cx
		jle	short loc_7F827B08
		movsx	eax, cx
		shl	eax, 2
		lea	ecx, [ebx+4]
		push	eax
		push	ebx
		push	ecx
		call	sub_7F82FCE0
		add	esp, 0Ch

loc_7F827B08:				; CODE XREF: sub_7F8279C8+111j
					; sub_7F8279C8+12Aj
		dec	[ebp+var_4]
		mov	eax, [edi]
		add	edi, 4
		mov	[ebx], eax
		add	[ebp+var_8], 4
		cmp	[ebp+var_4], 0
		jg	short loc_7F827ACE
		jmp	short loc_7F827B4F
; ---------------------------------------------------------------------------

loc_7F827B20:				; CODE XREF: sub_7F8279C8+F0j
		test	[ebp+arg_14], 2
		jz	short loc_7F827B2D
		mov	ebx, [ebp+var_8]
		add	ebx, esi
		jmp	short loc_7F827B3F
; ---------------------------------------------------------------------------

loc_7F827B2D:				; CODE XREF: sub_7F8279C8+15Cj
		mov	ebx, esi
		lea	ecx, [edi+esi]
		push	[ebp+var_8]
		push	esi
		push	ecx
		call	sub_7F82FCE0
		add	esp, 0Ch

loc_7F827B3F:				; CODE XREF: sub_7F8279C8+163j
		push	edi
		add	[ebp+var_8], edi
		push	[ebp+arg_0]
		push	ebx
		call	sub_7F82FCE0
		add	esp, 0Ch

loc_7F827B4F:				; CODE XREF: sub_7F8279C8+100j
					; sub_7F8279C8+156j
		push	[ebp+var_8]
		push	esi
		lea	ecx, [ebp+var_2]
		push	ecx
		push	[ebp+arg_10]
		call	sub_7F818E95
		mov	[ebp+var_C], eax
		test	eax, eax
		jnz	short loc_7F827B84

loc_7F827B66:				; CODE XREF: sub_7F8279C8:loc_7F827AEDj
		mov	ax, [ebp+arg_C]
		add	[ebp+arg_8], 4
		dec	[ebp+arg_C]
		test	ax, ax
		jg	loc_7F827A0C
		jmp	short loc_7F827B84
; ---------------------------------------------------------------------------

loc_7F827B7D:				; CODE XREF: sub_7F8279C8+BEj
		mov	[ebp+var_C], 400h

loc_7F827B84:				; CODE XREF: sub_7F8279C8+3Ej
					; sub_7F8279C8+7Aj ...
		cmp	[ebp+var_10], 0
		jz	short loc_7F827B92
		push	[ebp+var_10]
		call	sub_7F82F1E1

loc_7F827B92:				; CODE XREF: sub_7F8279C8+1C0j
		mov	eax, [ebp+var_C]

loc_7F827B95:				; CODE XREF: sub_7F8279C8+29j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F8279C8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F827B9E	proc near		; CODE XREF: sub_7F825C1D+2Ap

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
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
		push	edi
		mov	esi, 400h
		mov	di, 0FFFFh
		push	1
		push	esi
		call	sub_7F816903
		mov	[ebp+var_8], eax
		test	eax, eax
		jnz	short loc_7F827BC6
		mov	eax, esi
		jmp	loc_7F827D30
; ---------------------------------------------------------------------------

loc_7F827BC6:				; CODE XREF: sub_7F827B9E+1Fj
		xor	ebx, ebx
		mov	esi, [ebp+arg_0]
		push	ebx
		push	88FFFh
		push	esi
		call	sub_7F8194ED
		mov	[ebp+var_2], ax
		cmp	ax, bx
		jge	short loc_7F827BE7
		mov	eax, [ebp+arg_8]
		mov	[eax], ebx
		jmp	short loc_7F827C08
; ---------------------------------------------------------------------------

loc_7F827BE7:				; CODE XREF: sub_7F827B9E+40j
		mov	[ebp+var_C], 4
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+arg_8]
		push	0
		push	dword ptr [ebp+var_2]
		push	esi
		call	sub_7F818D47
		test	eax, eax
		jnz	loc_7F827D30

loc_7F827C08:				; CODE XREF: sub_7F827B9E+47j
		mov	ebx, 0FFFFFFFFh
		lea	eax, [ebp+var_8]
		push	ebx
		push	80000h
		push	esi
		push	eax
		call	sub_7F827DE1
		test	eax, eax
		jnz	loc_7F827D30
		push	ebx
		lea	eax, [ebp+var_8]
		push	68007h
		push	esi
		push	eax
		call	sub_7F827DE1
		test	eax, eax
		jnz	loc_7F827D30
		push	ebx
		lea	eax, [ebp+var_8]
		push	78008h
		push	esi
		push	eax
		call	sub_7F827DE1
		test	eax, eax
		jnz	loc_7F827D30
		push	ebx
		lea	eax, [ebp+var_8]
		push	4800Dh
		push	esi
		push	eax
		call	sub_7F827DE1
		test	eax, eax
		jnz	loc_7F827D30
		push	ebx
		lea	eax, [ebp+var_8]
		push	18004h
		push	esi
		push	eax
		call	sub_7F827DE1
		test	eax, eax
		jnz	loc_7F827D30
		push	ebx
		lea	eax, [ebp+var_8]
		push	8000h
		push	esi
		push	eax
		call	sub_7F827DE1
		test	eax, eax
		jnz	loc_7F827D30
		push	esi
		call	sub_7F8198FC
		add	ax, bx
		mov	[ebp+var_2], ax
		js	short loc_7F827CE2

loc_7F827CAC:				; CODE XREF: sub_7F827B9E+142j
		push	dword ptr [ebp+var_2]
		push	esi
		call	sub_7F819508
		movzx	ecx, ax
		cmp	ecx, 8000h
		jg	short loc_7F827D3F
		jz	short loc_7F827CDC
		test	ecx, ecx
		jz	loc_7F827D88

loc_7F827CCA:				; CODE XREF: sub_7F827B9E+1AFj
					; sub_7F827B9E+1E5j ...
		push	dword ptr [ebp+var_2]
		push	eax
		push	esi
		lea	ecx, [ebp+var_8]
		push	ecx
		call	sub_7F827DE1
		test	eax, eax
		jnz	short loc_7F827D30

loc_7F827CDC:				; CODE XREF: sub_7F827B9E+122j
					; sub_7F827B9E+1A7j ...
		dec	[ebp+var_2]
		jns	short loc_7F827CAC

loc_7F827CE2:				; CODE XREF: sub_7F827B9E+10Cj
		test	di, di
		jl	short loc_7F827CFB
		push	edi
		lea	eax, [ebp+var_8]
		push	2800Ch
		push	esi
		push	eax
		call	sub_7F827DE1
		test	eax, eax
		jnz	short loc_7F827D30

loc_7F827CFB:				; CODE XREF: sub_7F827B9E+147j
		push	0
		push	[ebp+var_8]
		call	sub_7F816BFE
		push	eax
		lea	ecx, [ebp+var_2]
		push	69100h
		mov	[ebp+var_C], eax
		push	ecx
		push	esi
		call	sub_7F818B75
		test	eax, eax
		jnz	short loc_7F827D30
		mov	ecx, [ebp+var_8]
		lea	eax, [ebp+var_2]
		push	[ebp+var_C]
		push	dword ptr [ecx]
		push	0
		push	eax
		push	esi
		call	sub_7F818DC7

loc_7F827D30:				; CODE XREF: sub_7F827B9E+23j
					; sub_7F827B9E+64j ...
		xor	ecx, ecx
		test	eax, eax
		jz	loc_7F827DD0
		jmp	loc_7F827DD3
; ---------------------------------------------------------------------------

loc_7F827D3F:				; CODE XREF: sub_7F827B9E+120j
		cmp	ecx, 8004h
		jz	short loc_7F827CDC
		cmp	ecx, 8007h
		jl	loc_7F827CCA
		cmp	ecx, 8008h
		jle	short loc_7F827CDC
		cmp	ecx, 800Ch
		jz	short loc_7F827D9C
		cmp	ecx, 800Dh
		jz	loc_7F827CDC
		cmp	ecx, 8FFFh
		jz	loc_7F827CDC
		cmp	ecx, 9100h
		jz	short loc_7F827DA5
		jmp	loc_7F827CCA
; ---------------------------------------------------------------------------

loc_7F827D88:				; CODE XREF: sub_7F827B9E+126j
		mov	ecx, eax
		shr	ecx, 10h
		cmp	cx, 8
		jnz	loc_7F827CCA
		jmp	loc_7F827CDC
; ---------------------------------------------------------------------------

loc_7F827D9C:				; CODE XREF: sub_7F827B9E+1C3j
		mov	di, [ebp+var_2]
		jmp	loc_7F827CDC
; ---------------------------------------------------------------------------

loc_7F827DA5:				; CODE XREF: sub_7F827B9E+1E3j
		push	dword ptr [ebp+var_2]
		push	esi
		call	sub_7F818AE7
		test	eax, eax
		jnz	loc_7F827D30
		test	di, di
		jl	loc_7F827CDC
		cmp	di, [ebp+var_2]
		jle	loc_7F827CDC
		dec	di
		jmp	loc_7F827CDC
; ---------------------------------------------------------------------------

loc_7F827DD0:				; CODE XREF: sub_7F827B9E+196j
		mov	ecx, [ebp+var_8]

loc_7F827DD3:				; CODE XREF: sub_7F827B9E+19Cj
		mov	edx, [ebp+arg_4]
		pop	edi
		pop	esi
		pop	ebx
		mov	[edx], ecx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F827B9E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F827DE1	proc near		; CODE XREF: sub_7F827B9E+7Ap
					; sub_7F827B9E+92p ...

var_C		= dword	ptr -0Ch
cchLength	= dword	ptr -8
var_2		= word ptr -2
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, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_8]
		xor	edi, edi
		mov	eax, esi
		shr	eax, 10h
		movzx	eax, ax
		test	eax, eax
		jl	short loc_7F827E05
		cmp	eax, 2
		jg	short loc_7F827E05
		mov	edi, 1

loc_7F827E05:				; CODE XREF: sub_7F827DE1+18j
					; sub_7F827DE1+1Dj
		cmp	word ptr [ebp+arg_C], 0
		jge	short loc_7F827E27
		push	0
		push	esi
		push	[ebp+arg_4]
		call	sub_7F8194ED
		mov	word ptr [ebp+arg_C], ax
		test	ax, ax
		jge	short loc_7F827E27
		xor	eax, eax
		jmp	loc_7F827EB7
; ---------------------------------------------------------------------------

loc_7F827E27:				; CODE XREF: sub_7F827DE1+29j
					; sub_7F827DE1+3Dj
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		call	sub_7F81990D
		mov	[ebp+cchLength], eax
		cmp	edi, 1
		sbb	eax, eax
		mov	ebx, [ebp+arg_0]
		inc	eax
		add	eax, [ebp+cchLength]
		push	eax
		push	0
		push	esi
		push	ebx
		call	sub_7F81698C
		test	eax, eax
		jnz	short loc_7F827EB7
		mov	eax, [ebx]
		push	esi
		mov	ebx, [eax]
		push	ebx
		call	sub_7F816B29
		mov	[ebp+var_2], ax
		movzx	eax, word ptr [ebx]
		movsx	ecx, [ebp+var_2]
		imul	ecx, 6
		sub	eax, ecx
		movzx	edx, word ptr [eax+ebx+4]
		lea	eax, [ebp+cchLength]
		lea	esi, [edx+ebx+6]
		push	eax
		push	esi
		push	0
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		call	sub_7F818D47
		mov	[ebp+var_C], eax
		test	eax, eax
		jnz	short loc_7F827EA5
		test	edi, edi
		jz	short loc_7F827EA5
		mov	eax, [ebp+cchLength]
		test	edi, edi
		mov	byte ptr [esi+eax], 0
		jz	short loc_7F827EA5
		push	[ebp+cchLength]	; cchLength
		push	esi		; lpsz
		push	esi		; int
		call	sub_7F8176EB

loc_7F827EA5:				; CODE XREF: sub_7F827DE1+A9j
					; sub_7F827DE1+ADj ...
		cmp	[ebp+var_C], 0
		jz	short loc_7F827EB4
		push	dword ptr [ebp+var_2]
		push	ebx
		call	sub_7F816A42

loc_7F827EB4:				; CODE XREF: sub_7F827DE1+C8j
		mov	eax, [ebp+var_C]

loc_7F827EB7:				; CODE XREF: sub_7F827DE1+41j
					; sub_7F827DE1+6Cj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F827DE1	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F827EC0(LPCSTR lpString, int, __int16, int)
sub_7F827EC0	proc near		; CODE XREF: sub_7F826D5C+1F3p
					; sub_7F826D5C+233p ...

var_4		= dword	ptr -4
lpString	= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= word ptr  0Ch
arg_C		= dword	ptr  10h

		sub	esp, 4
		xor	eax, eax
		push	ebx
		push	esi
		mov	esi, [esp+0Ch+arg_C]
		push	edi
		push	ebp
		test	esi, esi
		jz	short loc_7F827ED3
		mov	[esi], eax

loc_7F827ED3:				; CODE XREF: sub_7F827EC0+Fj
		mov	edi, [esp+14h+lpString]
		cmp	byte ptr [edi],	0
		jz	short loc_7F827F48

loc_7F827EDC:				; CODE XREF: sub_7F827EC0+86j
		mov	dx, [esp+14h+arg_8]
		mov	ebx, [esp+14h+arg_4]

loc_7F827EE5:				; CODE XREF: sub_7F827EC0+69j
		test	dx, dx
		jle	short loc_7F827EFB
		mov	al, [edi]

loc_7F827EEC:				; CODE XREF: sub_7F827EC0+36j
		cmp	[ebx], al
		jz	short loc_7F827EF8
		dec	dx
		inc	ebx
		test	dx, dx
		jg	short loc_7F827EEC

loc_7F827EF8:				; CODE XREF: sub_7F827EC0+2Ej
		test	dx, dx

loc_7F827EFB:				; CODE XREF: sub_7F827EC0+28j
		jz	short loc_7F827F38
		mov	ax, dx
		mov	ebp, edi
		mov	[esp+14h+var_4], ebx

loc_7F827F06:				; CODE XREF: sub_7F827EC0+5Aj
		inc	ebp
		dec	dx
		inc	ebx
		cmp	byte ptr [ebp+0], 0
		jz	short loc_7F827F54
		test	dx, dx
		jle	short loc_7F827F1F
		mov	cl, [ebp+0]
		cmp	[ebx], cl
		jz	short loc_7F827F06
		test	dx, dx

loc_7F827F1F:				; CODE XREF: sub_7F827EC0+53j
		jz	short loc_7F827F2B
		lea	edx, [eax-1]
		mov	ebx, [esp+14h+var_4]
		inc	ebx
		jmp	short loc_7F827EE5
; ---------------------------------------------------------------------------

loc_7F827F2B:				; CODE XREF: sub_7F827EC0:loc_7F827F1Fj
		test	esi, esi
		jz	short loc_7F827F38
		movsx	eax, ax
		cmp	[esi], eax
		jnb	short loc_7F827F38
		mov	[esi], eax

loc_7F827F38:				; CODE XREF: sub_7F827EC0:loc_7F827EFBj
					; sub_7F827EC0+6Dj ...
		push	edi		; lpString
		call	ds:lstrlenA
		lea	edi, [eax+edi+1]
		cmp	byte ptr [edi],	0
		jnz	short loc_7F827EDC

loc_7F827F48:				; CODE XREF: sub_7F827EC0+1Aj
		xor	eax, eax

loc_7F827F4A:				; CODE XREF: sub_7F827EC0+A1j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn	10h
; ---------------------------------------------------------------------------

loc_7F827F54:				; CODE XREF: sub_7F827EC0+4Ej
		xor	eax, eax
		test	esi, esi
		jz	short loc_7F827F5C
		mov	[esi], eax

loc_7F827F5C:				; CODE XREF: sub_7F827EC0+98j
		mov	eax, 1
		jmp	short loc_7F827F4A
sub_7F827EC0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F827F63(LPCSTR lpString, int, int,	int, int, int)
sub_7F827F63	proc near		; CODE XREF: sub_7F826D5C+3B4p
					; sub_7F82826A+108p ...

var_8		= dword	ptr -8
cchLength	= dword	ptr -4
lpString	= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_14]
		xor	edi, edi
		mov	ebx, [ebp+arg_10]
		mov	[esi], di
		cmp	ebx, edi
		jnz	short loc_7F827F88
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_7F81990D
		mov	ebx, eax

loc_7F827F88:				; CODE XREF: sub_7F827F63+16j
		mov	[ebp+var_8], 0
		test	ebx, ebx
		jz	short loc_7F82800D

loc_7F827F93:				; CODE XREF: sub_7F827F63+A1j
		cmp	ebx, 0FDF8h
		mov	eax, ebx
		jb	short loc_7F827FA2
		mov	eax, 0FDF8h

loc_7F827FA2:				; CODE XREF: sub_7F827F63+38j
		mov	[ebp+cchLength], eax
		lea	eax, [ebp+cchLength]
		push	eax
		push	lpsz
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_7F818D47
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F82800D
		push	[ebp+cchLength]	; cchLength
		push	lpsz		; lpsz
		push	lpsz		; int
		call	sub_7F8176EB
		lea	ecx, [ebp+var_8]
		mov	eax, lpsz
		push	ecx		; int
		push	[ebp+cchLength]	; __int16
		push	eax		; int
		push	[ebp+lpString]	; lpString
		call	sub_7F827EC0
		test	eax, eax
		jnz	short loc_7F828008
		mov	eax, [ebp+var_8]
		sub	[ebp+cchLength], eax
		jz	short loc_7F828008
		sub	ebx, [ebp+cchLength]
		mov	eax, [ebp+cchLength]
		add	[ebp+arg_C], eax
		cmp	[ebp+var_8], ebx
		jb	short loc_7F827F93
		jmp	short loc_7F82800D
; ---------------------------------------------------------------------------

loc_7F828008:				; CODE XREF: sub_7F827F63+8Bj
					; sub_7F827F63+93j
		mov	word ptr [esi],	1

loc_7F82800D:				; CODE XREF: sub_7F827F63+2Ej
					; sub_7F827F63+5Ej ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	18h
sub_7F827F63	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F828018	proc near		; CODE XREF: sub_7F826D5C+3DDp
					; sub_7F82959B+219p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
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	eax, [esp+arg_10]
		mov	word ptr [eax],	0
		mov	ebp, esp
		sub	esp, 10h
		sub	edx, edx
		mov	eax, [ebp+arg_4]
		mov	ecx, 0Eh
		mov	[ebp+var_C], 0
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		div	ecx
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		mov	[ebp+arg_4], eax
		call	sub_7F81990D
		mov	edi, eax
		test	edi, edi
		jz	loc_7F8280E8

loc_7F828057:				; CODE XREF: sub_7F828018+C0j
		cmp	edi, 0FDF8h
		mov	eax, edi
		jb	short loc_7F828066
		mov	eax, 0FDF8h

loc_7F828066:				; CODE XREF: sub_7F828018+47j
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_8]
		push	eax
		push	lpsz
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_7F818D47
		mov	[ebp+var_C], eax
		test	eax, eax
		jnz	short loc_7F8280E8
		mov	ax, word ptr [ebp+arg_4]
		mov	ebx, [ebp+arg_0]
		mov	[ebp+var_2], ax
		test	ax, ax
		jle	short loc_7F8280D0

loc_7F828096:				; CODE XREF: sub_7F828018+B6j
		mov	ecx, 0Eh
		mov	eax, [ebp+var_8]
		sub	edx, edx
		push	offset loc_7F8280F4
		div	ecx
		push	ecx
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_10]
		push	eax
		push	lpsz
		push	ebx
		call	sub_7F8302D0
		add	esp, 14h
		test	eax, eax
		jnz	short loc_7F8280E0
		dec	[ebp+var_2]
		add	ebx, 0Eh
		cmp	[ebp+var_2], 0
		jg	short loc_7F828096

loc_7F8280D0:				; CODE XREF: sub_7F828018+7Cj
		sub	edi, [ebp+var_8]
		add	esi, [ebp+var_8]
		test	edi, edi
		jnz	loc_7F828057
		jmp	short loc_7F8280E8
; ---------------------------------------------------------------------------

loc_7F8280E0:				; CODE XREF: sub_7F828018+A8j
		mov	eax, [ebp+arg_10]
		mov	word ptr [eax],	1

loc_7F8280E8:				; CODE XREF: sub_7F828018+39j
					; sub_7F828018+6Cj ...
		mov	eax, [ebp+var_C]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
; ---------------------------------------------------------------------------

loc_7F8280F4:				; DATA XREF: sub_7F828018+88o
		push	0FEFFh
		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_7F817767
		retn
sub_7F828018	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F828107	proc near		; CODE XREF: sub_7F826D5C+403p
					; sub_7F82959B+235p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
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	eax, [esp+arg_10]
		mov	word ptr [eax],	0
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp+var_C], 0
		shr	[ebp+arg_4], 1
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_7F81990D
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F8281AD

loc_7F828136:				; CODE XREF: sub_7F828107+9Aj
		cmp	edi, 0FDF8h
		mov	eax, edi
		jb	short loc_7F828145
		mov	eax, 0FDF8h

loc_7F828145:				; CODE XREF: sub_7F828107+37j
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_8]
		push	eax
		push	lpsz
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_7F818D47
		mov	[ebp+var_C], eax
		test	eax, eax
		jnz	short loc_7F8281AD
		mov	ax, word ptr [ebp+arg_4]
		mov	ebx, [ebp+arg_0]
		mov	[ebp+var_2], ax
		test	ax, ax
		jle	short loc_7F828199

loc_7F828175:				; CODE XREF: sub_7F828107+90j
		mov	ax, [ebx]
		push	eax
		push	[ebp+var_8]
		push	lpsz
		call	sub_7F82A3EF
		test	eax, eax
		jnz	short loc_7F8281A5
		dec	[ebp+var_2]
		add	ebx, 2
		cmp	[ebp+var_2], 0
		jg	short loc_7F828175

loc_7F828199:				; CODE XREF: sub_7F828107+6Cj
		sub	edi, [ebp+var_8]
		add	esi, [ebp+var_8]
		test	edi, edi
		jnz	short loc_7F828136
		jmp	short loc_7F8281AD
; ---------------------------------------------------------------------------

loc_7F8281A5:				; CODE XREF: sub_7F828107+82j
		mov	eax, [ebp+arg_10]
		mov	word ptr [eax],	1

loc_7F8281AD:				; CODE XREF: sub_7F828107+2Dj
					; sub_7F828107+5Cj ...
		mov	eax, [ebp+var_C]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F828107	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8281B9	proc near		; CODE XREF: sub_7F826D5C+429p
					; sub_7F82959B+251p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
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	eax, [esp+arg_10]
		mov	word ptr [eax],	0
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp+var_C], 0
		shr	[ebp+arg_4], 2
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_7F81990D
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F82825E

loc_7F8281E9:				; CODE XREF: sub_7F8281B9+99j
		cmp	edi, 0FDF8h
		mov	eax, edi
		jb	short loc_7F8281F8
		mov	eax, 0FDF8h

loc_7F8281F8:				; CODE XREF: sub_7F8281B9+38j
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_8]
		push	eax
		push	lpsz
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_7F818D47
		mov	[ebp+var_C], eax
		test	eax, eax
		jnz	short loc_7F82825E
		mov	ax, word ptr [ebp+arg_4]
		mov	ebx, [ebp+arg_0]
		mov	[ebp+var_2], ax
		test	ax, ax
		jle	short loc_7F82824A

loc_7F828228:				; CODE XREF: sub_7F8281B9+8Fj
		push	dword ptr [ebx]
		push	[ebp+var_8]
		push	lpsz
		call	sub_7F82A419
		test	eax, eax
		jnz	short loc_7F828256
		dec	[ebp+var_2]
		add	ebx, 4
		cmp	[ebp+var_2], 0
		jg	short loc_7F828228

loc_7F82824A:				; CODE XREF: sub_7F8281B9+6Dj
		sub	edi, [ebp+var_8]
		add	esi, [ebp+var_8]
		test	edi, edi
		jnz	short loc_7F8281E9
		jmp	short loc_7F82825E
; ---------------------------------------------------------------------------

loc_7F828256:				; CODE XREF: sub_7F8281B9+81j
		mov	eax, [ebp+arg_10]
		mov	word ptr [eax],	1

loc_7F82825E:				; CODE XREF: sub_7F8281B9+2Ej
					; sub_7F8281B9+5Dj ...
		mov	eax, [ebp+var_C]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F8281B9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F82826A(LPCSTR lpString, int, int,	int)
sub_7F82826A	proc near		; CODE XREF: sub_7F826D5C+303p
					; sub_7F826D5C+349p ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
lpString	= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	eax, [esp+arg_C]
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		push	[ebp+arg_8]
		mov	[eax], di
		push	[ebp+arg_4]
		call	sub_7F81990D
		mov	esi, eax
		mov	[ebp+var_C], edi
		test	esi, esi
		jz	loc_7F8283B1

loc_7F828294:				; CODE XREF: sub_7F82826A+130j
		cmp	esi, 0FDF8h
		mov	eax, esi
		jb	short loc_7F8282A3
		mov	eax, 0FDF8h

loc_7F8282A3:				; CODE XREF: sub_7F82826A+32j
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_4]
		push	eax
		push	lpsz
		push	[ebp+var_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_7F818D47
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F8283B1
		cmp	[ebp+var_4], 8
		jb	loc_7F8283B1
		mov	eax, [ebp+var_4]
		mov	ebx, lpsz
		mov	[ebp+var_8], eax

loc_7F8282DE:				; CODE XREF: sub_7F82826A+D2j
		cmp	word ptr [ebx],	0
		jz	loc_7F8283B1
		movzx	eax, word ptr [ebx+6]
		movzx	ecx, word ptr [ebx+4]
		lea	edx, [eax+ecx]
		add	edx, 8
		cmp	edx, [ebp+var_8]
		ja	short loc_7F828340
		add	eax, ecx
		push	ecx		; cchLength
		add	eax, 8
		sub	[ebp+var_8], eax
		lea	eax, [ebx+8]
		push	eax		; lpsz
		push	eax		; int
		call	sub_7F8176EB
		push	0		; int
		lea	eax, [ebx+8]
		movzx	ecx, word ptr [ebx+4]
		push	ecx		; __int16
		push	eax		; int
		push	[ebp+lpString]	; lpString
		call	sub_7F827EC0
		test	eax, eax
		jnz	loc_7F8283A9
		movzx	ecx, word ptr [ebx+4]
		movzx	eax, word ptr [ebx+6]
		add	ecx, eax
		add	ecx, 8
		add	ebx, ecx
		cmp	[ebp+var_8], 8
		jnb	short loc_7F8282DE
		jmp	short loc_7F828389
; ---------------------------------------------------------------------------

loc_7F828340:				; CODE XREF: sub_7F82826A+8Fj
		movzx	eax, word ptr [ebx+6]
		movzx	ecx, word ptr [ebx+4]
		lea	ebx, [eax+ecx+8]
		cmp	esi, ebx
		jb	short loc_7F8283A2
		cmp	ebx, 0FDF8h
		jbe	short loc_7F828389
		push	[ebp+arg_C]	; int
		push	ecx		; int
		mov	eax, [ebp+var_C]
		sub	eax, [ebp+var_8]
		add	eax, [ebp+var_4]
		add	eax, 8
		push	eax		; int
		push	[ebp+arg_8]	; int
		push	[ebp+arg_4]	; int
		push	[ebp+lpString]	; lpString
		call	sub_7F827F63
		mov	edi, eax
		mov	ecx, [ebp+arg_C]
		cmp	word ptr [ecx],	0
		jnz	short loc_7F8283B1
		test	edi, edi
		jnz	short loc_7F8283B1
		add	[ebp+var_4], ebx

loc_7F828389:				; CODE XREF: sub_7F82826A+D4j
					; sub_7F82826A+ECj
		mov	eax, [ebp+var_8]
		sub	[ebp+var_4], eax
		sub	esi, [ebp+var_4]
		mov	ecx, [ebp+var_4]
		add	[ebp+var_C], ecx
		test	esi, esi
		jnz	loc_7F828294
		jmp	short loc_7F8283B1
; ---------------------------------------------------------------------------

loc_7F8283A2:				; CODE XREF: sub_7F82826A+E4j
		mov	edi, 1014h
		jmp	short loc_7F8283B1
; ---------------------------------------------------------------------------

loc_7F8283A9:				; CODE XREF: sub_7F82826A+B9j
		mov	eax, [ebp+arg_C]
		mov	word ptr [eax],	1

loc_7F8283B1:				; CODE XREF: sub_7F82826A+24j
					; sub_7F82826A+58j ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F82826A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8283BC	proc near		; CODE XREF: sub_7F826D5C+2D9p
					; sub_7F82959B+143p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	eax, [esp+arg_10]
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	[ebp+arg_C]
		mov	[eax], si
		xor	edi, edi
		push	[ebp+arg_8]
		call	sub_7F81990D
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F828457

loc_7F8283E1:				; CODE XREF: sub_7F8283BC+8Fj
		cmp	ebx, 0FDF8h
		mov	eax, ebx
		jb	short loc_7F8283F0
		mov	eax, 0FDF8h

loc_7F8283F0:				; CODE XREF: sub_7F8283BC+2Dj
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_4]
		push	eax
		push	lpsz
		push	edi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_7F818D47
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F828457
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_4]
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], ecx
		test	ecx, ecx
		jz	short loc_7F828443

loc_7F82841F:				; CODE XREF: sub_7F8283BC+85j
		mov	eax, [ebp+var_C]
		mov	al, [eax]
		push	eax
		push	[ebp+var_4]
		push	lpsz
		call	sub_7F82A3C9
		test	eax, eax
		jnz	short loc_7F82844F
		dec	[ebp+var_8]
		inc	[ebp+var_C]
		cmp	[ebp+var_8], 0
		jnz	short loc_7F82841F

loc_7F828443:				; CODE XREF: sub_7F8283BC+61j
		sub	ebx, [ebp+var_4]
		add	edi, [ebp+var_4]
		test	ebx, ebx
		jnz	short loc_7F8283E1
		jmp	short loc_7F828457
; ---------------------------------------------------------------------------

loc_7F82844F:				; CODE XREF: sub_7F8283BC+79j
		mov	eax, [ebp+arg_10]
		mov	word ptr [eax],	1

loc_7F828457:				; CODE XREF: sub_7F8283BC+23j
					; sub_7F8283BC+51j ...
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F8283BC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F828462	proc near		; CODE XREF: sub_7F81B01B+127p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		xor	ecx, ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		mov	eax, [eax]
		mov	[ebp+var_10], ecx
		test	eax, eax
		jz	short loc_7F828491
		mov	eax, [eax+244h]
		test	eax, eax
		jz	short loc_7F828491
		mov	eax, [eax]
		movzx	ecx, word ptr [eax]
		movsx	eax, word ptr [ecx+eax+6]
		jmp	short loc_7F828493
; ---------------------------------------------------------------------------

loc_7F828491:				; CODE XREF: sub_7F828462+17j
					; sub_7F828462+21j
		xor	eax, eax

loc_7F828493:				; CODE XREF: sub_7F828462+2Dj
		test	eax, eax
		jle	loc_7F82860B
		mov	al, byte ptr [ebp+arg_8]
		cmp	al, 69h
		jz	loc_7F82860B
		cmp	al, 70h
		jz	loc_7F82860B
		mov	edi, [ebp+arg_4]
		cmp	edi, 82h
		jnz	short loc_7F8284BB
		xor	edi, edi

loc_7F8284BB:				; CODE XREF: sub_7F828462+55j
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_14]
		mov	[ebp+var_14], 53464180h
		push	eax
		push	1
		push	ecx
		push	esi
		call	sub_7F817E9D
		test	eax, eax
		jnz	loc_7F82860D
		xor	ebx, ebx
		push	ebx
		push	edi
		push	[ebp+var_8]
		call	sub_7F8194ED
		mov	[ebp+var_2], ax
		cmp	ax, bx
		jge	short loc_7F8284FE
		push	ebx
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F81813C
		jmp	loc_7F82860B
; ---------------------------------------------------------------------------

loc_7F8284FE:				; CODE XREF: sub_7F828462+8Bj
		push	dword ptr [ebp+var_2]
		push	[ebp+var_8]
		call	sub_7F81990D
		push	0
		mov	[ebp+var_C], eax
		push	eax
		call	sub_7F82F03B
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F828524
		mov	edi, 400h
		jmp	loc_7F8285D5
; ---------------------------------------------------------------------------

loc_7F828524:				; CODE XREF: sub_7F828462+B6j
		lea	eax, [ebp+var_C]
		push	eax
		push	ebx
		push	0
		push	dword ptr [ebp+var_2]
		push	[ebp+var_8]
		call	sub_7F818D47
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F8285D5
		push	[ebp+var_C]
		push	[ebp+arg_8]
		lea	edx, [ebp+var_2]
		push	edx
		push	[ebp+var_8]
		call	sub_7F818B75
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F8285D5
		push	[ebp+var_C]
		push	ebx
		push	0
		lea	ecx, [ebp+var_2]
		push	ecx
		push	[ebp+var_8]
		call	sub_7F818DC7
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F8285D5
		lea	eax, [ebp+var_10]
		lea	ecx, [ebp+var_14]
		mov	[ebp+var_14], 46534180h
		push	eax
		push	1
		push	ecx
		push	esi
		call	sub_7F817E9D
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F8285D5
		push	0
		mov	eax, [ebp+var_C]
		shr	eax, 2
		lea	ecx, [ebp+arg_8]
		push	[ebp+var_10]
		push	eax
		push	ebx
		push	1
		push	ecx
		call	sub_7F8279C8
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F8285D5
		push	[ebp+var_10]
		call	sub_7F8178C4
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F8285D5
		push	[ebp+var_8]
		call	sub_7F8178C4
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F8285D5
		mov	eax, [ebp+var_C]
		shr	eax, 2
		push	eax
		push	ebx
		push	esi
		call	sub_7F828616

loc_7F8285D5:				; CODE XREF: sub_7F828462+BDj
					; sub_7F828462+D8j ...
		test	ebx, ebx
		jz	short loc_7F8285DF
		push	ebx
		call	sub_7F82F149

loc_7F8285DF:				; CODE XREF: sub_7F828462+175j
		cmp	[ebp+var_10], 0
		jz	short loc_7F8285F6
		lea	ecx, [ebp+var_10]
		cmp	edi, 1
		sbb	eax, eax
		neg	eax
		push	eax
		push	ecx
		call	sub_7F81813C

loc_7F8285F6:				; CODE XREF: sub_7F828462+181j
		lea	ecx, [ebp+var_8]
		cmp	edi, 1
		sbb	eax, eax
		neg	eax
		push	eax
		push	ecx
		call	sub_7F81813C
		mov	eax, edi
		jmp	short loc_7F82860D
; ---------------------------------------------------------------------------

loc_7F82860B:				; CODE XREF: sub_7F828462+33j
					; sub_7F828462+3Ej ...
		xor	eax, eax

loc_7F82860D:				; CODE XREF: sub_7F828462+72j
					; sub_7F828462+1A7j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F828462	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F828616	proc near		; CODE XREF: sub_7F828462+16Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= word ptr  0Ch

		mov	eax, [esp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ecx, [eax]
		mov	si, [esp+10h+arg_8]
		mov	edi, [ecx]
		mov	eax, [edi+244h]
		mov	ebx, [eax]
		movzx	ecx, word ptr [ebx]
		mov	ax, si
		lea	ebp, [ecx+ebx]
		dec	si
		test	ax, ax
		jle	short loc_7F828672

loc_7F82863F:				; CODE XREF: sub_7F828616+5Aj
		mov	eax, [esp+10h+arg_4]
		add	[esp+10h+arg_4], 4
		push	dword ptr [eax]
		push	ebx
		call	sub_7F816B29
		test	ax, ax
		jl	short loc_7F828668
		movsx	eax, ax
		imul	eax, 6
		mov	ecx, ebp
		sub	ecx, eax
		movzx	edx, word ptr [ecx+4]
		inc	word ptr [edx+ebx+10h]

loc_7F828668:				; CODE XREF: sub_7F828616+3Dj
		mov	ax, si
		dec	si
		test	ax, ax
		jg	short loc_7F82863F

loc_7F828672:				; CODE XREF: sub_7F828616+27j
		or	byte ptr [edi+265h], 40h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_7F828616	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F828680	proc near		; CODE XREF: sub_7F81B01B+15Ap

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 14h
		mov	ecx, [eax]
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	eax, [ecx]
		mov	[ebp+var_C], esi
		test	eax, eax
		jz	short loc_7F8286B0
		mov	eax, [eax+244h]
		test	eax, eax
		jz	short loc_7F8286B0
		mov	eax, [eax]
		movzx	ecx, word ptr [eax]
		movsx	eax, word ptr [ecx+eax+6]
		jmp	short loc_7F8286B2
; ---------------------------------------------------------------------------

loc_7F8286B0:				; CODE XREF: sub_7F828680+18j
					; sub_7F828680+22j
		xor	eax, eax

loc_7F8286B2:				; CODE XREF: sub_7F828680+2Ej
		test	eax, eax
		jle	loc_7F828826
		mov	al, byte ptr [ebp+arg_4]
		cmp	al, 69h
		jz	loc_7F828826
		cmp	al, 70h
		jz	loc_7F828826
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_14]
		mov	[ebp+var_14], 53464180h
		push	eax
		push	1
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		test	eax, eax
		jnz	loc_7F828828
		xor	edi, edi
		push	edi
		push	[ebp+arg_4]
		push	[ebp+var_8]
		call	sub_7F8194ED
		mov	[ebp+var_2], ax
		cmp	ax, di
		jge	short loc_7F828714
		push	edi
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F81813C
		jmp	loc_7F828826
; ---------------------------------------------------------------------------

loc_7F828714:				; CODE XREF: sub_7F828680+83j
		push	dword ptr [ebp+var_2]
		push	[ebp+var_8]
		call	sub_7F81990D
		push	0
		mov	[ebp+var_10], eax
		push	eax
		call	sub_7F82F03B
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F82873A
		mov	ebx, 400h
		jmp	loc_7F8287E6
; ---------------------------------------------------------------------------

loc_7F82873A:				; CODE XREF: sub_7F828680+AEj
		lea	eax, [ebp+var_10]
		push	eax
		push	edi
		push	0
		push	dword ptr [ebp+var_2]
		push	[ebp+var_8]
		call	sub_7F818D47
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F8287E6
		push	dword ptr [ebp+var_2]
		push	[ebp+var_8]
		call	sub_7F818AE7
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F8287E6
		push	0
		push	[ebp+var_10]
		call	sub_7F82F03B
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F82877E
		mov	ebx, 400h
		jmp	short loc_7F8287E6
; ---------------------------------------------------------------------------

loc_7F82877E:				; CODE XREF: sub_7F828680+F5j
		lea	eax, [ebp+var_C]
		lea	ecx, [ebp+var_14]
		mov	[ebp+var_14], 46534180h
		push	eax
		push	1
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F8287E6
		push	esi
		mov	eax, [ebp+var_10]
		shr	eax, 2
		push	0
		push	[ebp+var_C]
		push	eax
		push	edi
		push	[ebp+arg_4]
		call	sub_7F82786A
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F8287E6
		push	[ebp+var_C]
		call	sub_7F8178C4
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F8287E6
		push	[ebp+var_8]
		call	sub_7F8178C4
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F8287E6
		mov	eax, [ebp+var_10]
		shr	eax, 2
		push	eax
		push	esi
		push	edi
		push	[ebp+arg_0]
		call	sub_7F828831

loc_7F8287E6:				; CODE XREF: sub_7F828680+B5j
					; sub_7F828680+D0j ...
		test	edi, edi
		jz	short loc_7F8287F0
		push	edi
		call	sub_7F82F149

loc_7F8287F0:				; CODE XREF: sub_7F828680+168j
		test	esi, esi
		jz	short loc_7F8287FA
		push	esi
		call	sub_7F82F149

loc_7F8287FA:				; CODE XREF: sub_7F828680+172j
		cmp	[ebp+var_C], 0
		jz	short loc_7F828811
		lea	ecx, [ebp+var_C]
		cmp	ebx, 1
		sbb	eax, eax
		neg	eax
		push	eax
		push	ecx
		call	sub_7F81813C

loc_7F828811:				; CODE XREF: sub_7F828680+17Ej
		lea	ecx, [ebp+var_8]
		cmp	ebx, 1
		sbb	eax, eax
		neg	eax
		push	eax
		push	ecx
		call	sub_7F81813C
		mov	eax, ebx
		jmp	short loc_7F828828
; ---------------------------------------------------------------------------

loc_7F828826:				; CODE XREF: sub_7F828680+34j
					; sub_7F828680+3Fj ...
		xor	eax, eax

loc_7F828828:				; CODE XREF: sub_7F828680+68j
					; sub_7F828680+1A4j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F828680	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F828831	proc near		; CODE XREF: sub_7F828680+161p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= word ptr  14h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 4
		mov	ecx, [eax]
		push	ebx
		push	esi
		push	edi
		mov	esi, [ecx]
		mov	cx, [ebp+arg_C]
		mov	eax, [esi+244h]
		dec	[ebp+arg_C]
		mov	edi, [eax]
		movzx	eax, word ptr [edi]
		add	eax, edi
		test	cx, cx
		mov	[ebp+var_4], eax
		jle	short loc_7F8288AF
		mov	ebx, [ebp+arg_8]

loc_7F828862:				; CODE XREF: sub_7F828831+7Cj
		cmp	word ptr [ebx],	0
		jl	short loc_7F82889F
		mov	eax, [ebp+arg_4]
		add	[ebp+arg_4], 4
		push	dword ptr [eax]
		push	edi
		call	sub_7F816B29
		test	ax, ax
		jl	short loc_7F82889F
		movsx	eax, ax
		imul	eax, 6
		mov	ecx, [ebp+var_4]
		sub	ecx, eax
		movzx	edx, word ptr [ecx+4]
		mov	cx, [edx+edi+10h]
		lea	eax, [edx+edi+6]
		cmp	[ebx], cx
		jge	short loc_7F82889F
		dec	cx
		mov	[eax+0Ah], cx

loc_7F82889F:				; CODE XREF: sub_7F828831+35j
					; sub_7F828831+49j ...
		mov	ax, [ebp+arg_C]
		add	ebx, 2
		dec	[ebp+arg_C]
		test	ax, ax
		jg	short loc_7F828862

loc_7F8288AF:				; CODE XREF: sub_7F828831+2Cj
		or	byte ptr [esi+265h], 40h
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F828831	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F8288BF	proc near		; CODE XREF: sub_7F8261A0+90p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		cmp	dword_7F838078,	0
		push	esi
		jz	short loc_7F8288D0
		mov	esi, 253h
		jmp	short loc_7F828903
; ---------------------------------------------------------------------------

loc_7F8288D0:				; CODE XREF: sub_7F8288BF+8j
		mov	ecx, [esp+4+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	esi, [edx]
		mov	dword_7F838078,	esi
		xor	esi, esi
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx

loc_7F828903:				; CODE XREF: sub_7F8288BF+Fj
		test	esi, esi
		jnz	short loc_7F828975
		push	0
		push	[esp+8+arg_4]
		call	sub_7F8144A4
		test	eax, eax
		jnz	short loc_7F82891D
		mov	esi, 1001h
		jmp	short loc_7F828947
; ---------------------------------------------------------------------------

loc_7F82891D:				; CODE XREF: sub_7F8288BF+55j
		mov	ecx, [eax+0Ch]
		mov	edx, [esp+4+arg_8]
		mov	[edx], cx
		mov	ecx, [eax+0Ch]
		shr	ecx, 10h
		mov	[edx+2], cx
		mov	cx, [eax+1Eh]
		mov	[edx+4], cx
		mov	cx, [eax+1Ch]
		mov	[edx+6], cx
		mov	eax, [eax+8]
		mov	[edx+8], eax

loc_7F828947:				; CODE XREF: sub_7F8288BF+5Cj
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82895D
		call	sub_7F82A34F
		jmp	short loc_7F82896B
; ---------------------------------------------------------------------------

loc_7F82895D:				; CODE XREF: sub_7F8288BF+95j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82896B:				; CODE XREF: sub_7F8288BF+9Cj
		mov	dword_7F838078,	0

loc_7F828975:				; CODE XREF: sub_7F8288BF+46j
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_7F8288BF	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82897B	proc near		; CODE XREF: sub_7F8261A0+3DCp
					; sub_7F828A3E+EAp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		cmp	dword_7F838078,	0
		push	esi
		push	edi
		jz	short loc_7F82898D
		mov	esi, 253h
		jmp	short loc_7F8289C0
; ---------------------------------------------------------------------------

loc_7F82898D:				; CODE XREF: sub_7F82897B+9j
		mov	ecx, [esp+8+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	esi, [edx]
		mov	dword_7F838078,	esi
		xor	esi, esi
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx

loc_7F8289C0:				; CODE XREF: sub_7F82897B+10j
		test	esi, esi
		jnz	short loc_7F828A37
		push	0
		push	[esp+0Ch+arg_4]
		call	sub_7F8144A4
		test	eax, eax
		jnz	short loc_7F8289DA
		mov	esi, 1001h
		jmp	short loc_7F828A09
; ---------------------------------------------------------------------------

loc_7F8289DA:				; CODE XREF: sub_7F82897B+56j
		mov	edi, [esp+8+arg_8]
		movsx	ecx, word ptr [edi+2]
		movzx	edx, word ptr [edi]
		shl	ecx, 10h
		or	ecx, edx
		mov	[eax+0Ch], ecx
		push	eax
		mov	dx, [edi+4]
		mov	[eax+1Eh], dx
		mov	cx, [edi+6]
		mov	[eax+1Ch], cx
		mov	edi, [edi+8]
		mov	[eax+8], edi
		call	sub_7F8148F7

loc_7F828A09:				; CODE XREF: sub_7F82897B+5Dj
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F828A1F
		call	sub_7F82A34F
		jmp	short loc_7F828A2D
; ---------------------------------------------------------------------------

loc_7F828A1F:				; CODE XREF: sub_7F82897B+9Bj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F828A2D:				; CODE XREF: sub_7F82897B+A2j
		mov	dword_7F838078,	0

loc_7F828A37:				; CODE XREF: sub_7F82897B+47j
		mov	eax, esi
		pop	edi
		pop	esi
		retn	0Ch
sub_7F82897B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F828A3E	proc near		; CODE XREF: sub_7F828F0F+D8p
					; sub_7F8290A9+81p ...

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, 10h
		push	ebx
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_10], 4C435380h
		push	esi
		mov	ecx, [eax]
		push	edi
		xor	esi, esi
		mov	[ebp+var_C], 90h
		mov	edx, [ecx]
		mov	edi, [ebp+arg_4]
		mov	eax, [edx+248h]
		mov	[edi+6], si
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], esi
		cmp	eax, esi
		jnz	short loc_7F828A8F
		push	1
		push	30h
		call	sub_7F816903
		mov	[ebp+var_8], eax
		cmp	eax, esi
		jnz	short loc_7F828A8F
		mov	eax, 400h
		jmp	loc_7F828BA9
; ---------------------------------------------------------------------------

loc_7F828A8F:				; CODE XREF: sub_7F828A3E+35j
					; sub_7F828A3E+45j
		movsx	eax, word ptr [edi+4]
		movsx	ecx, word ptr [edi+2]
		push	0
		add	eax, ecx
		imul	eax, 6
		push	eax
		call	sub_7F816903
		mov	[ebp+var_4], eax
		test	eax, eax
		jz	loc_7F828B89
		mov	bx, [edi+2]

loc_7F828AB3:				; CODE XREF: sub_7F828A3E+99j
		mov	ax, bx
		dec	bx
		test	ax, ax
		jle	short loc_7F828ADE
		mov	eax, [ebp+arg_8]
		push	0
		push	0
		lea	edx, [ebp+var_4]
		push	dword ptr [eax]
		push	edx
		add	[ebp+arg_8], 4
		call	sub_7F81698C
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F828AB3
		jmp	loc_7F828B89
; ---------------------------------------------------------------------------

loc_7F828ADE:				; CODE XREF: sub_7F828A3E+7Dj
		mov	bx, [edi+4]

loc_7F828AE2:				; CODE XREF: sub_7F828A3E+C8j
		mov	ax, bx
		dec	bx
		test	ax, ax
		jle	short loc_7F828B0A
		mov	eax, [ebp+arg_C]
		push	0
		push	0
		lea	edx, [ebp+var_4]
		push	dword ptr [eax]
		push	edx
		add	[ebp+arg_C], 4
		call	sub_7F81698C
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F828AE2
		jmp	short loc_7F828B89
; ---------------------------------------------------------------------------

loc_7F828B0A:				; CODE XREF: sub_7F828A3E+ACj
		lea	ecx, [ebp+var_C]
		xor	ebx, ebx
		push	[ebp+var_4]
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F816DC7
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F828B89
		push	edi
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	sub_7F82897B
		cmp	eax, ebx
		mov	esi, eax
		jnz	short loc_7F828B89
		push	ebx
		lea	ecx, [ebp+var_8]
		push	ebx
		push	[ebp+var_C]
		push	ecx
		call	sub_7F81698C
		cmp	eax, ebx
		mov	esi, eax
		jnz	short loc_7F828B89
		push	[ebp+var_8]
		lea	ecx, [ebp+var_10]
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F816DC7
		cmp	eax, ebx
		mov	esi, eax
		jz	short loc_7F828B6C
		push	ebx
		push	1
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	sub_7F82B9DE
		jmp	short loc_7F828B89
; ---------------------------------------------------------------------------

loc_7F828B6C:				; CODE XREF: sub_7F828A3E+11Cj
		push	1
		push	[ebp+arg_0]
		call	sub_7F82615D
		cmp	nDefault, 0
		jz	short loc_7F828B89
		mov	dword_7F838024,	1

loc_7F828B89:				; CODE XREF: sub_7F828A3E+6Bj
					; sub_7F828A3E+9Bj ...
		cmp	[ebp+var_4], 0
		jz	short loc_7F828B97
		push	[ebp+var_4]
		call	sub_7F82F1E1

loc_7F828B97:				; CODE XREF: sub_7F828A3E+14Fj
		mov	ecx, [ebp+var_8]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		mov	eax, esi
		mov	ebx, [edx]
		mov	[ebx+248h], ecx

loc_7F828BA9:				; CODE XREF: sub_7F828A3E+4Cj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F828A3E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F828BB2	proc near		; CODE XREF: sub_7F828F0F+ACp
					; sub_7F8290A9+55p ...

var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_28		= dword	ptr -28h
var_24		= word ptr -24h
var_22		= word ptr -22h
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		= word ptr -4
var_2		= word ptr -2
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

		push	ebp
		mov	eax, [esp+arg_C]
		mov	ebp, esp
		sub	esp, 30h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	edi, [eax]
		mov	[ebp+var_14], esi
		cmp	edi, 1
		mov	[ebp+var_C], esi
		sbb	eax, eax
		neg	eax
		mov	[ebp+var_20], eax
		cmp	eax, esi
		jz	short loc_7F828C4C
		mov	eax, [ebp+arg_0]
		mov	ebx, [ebp+arg_10]
		push	esi
		mov	ecx, [eax]
		mov	edx, [ecx+30h]
		push	[ebp+arg_4]
		mov	[ebx], si
		push	edx
		mov	[ebp+var_8], edx
		call	sub_7F8194ED
		mov	[ebp+var_2], ax
		cmp	ax, si
		jl	loc_7F828DB7
		push	dword ptr [ebp+var_2]
		push	[ebp+var_8]
		call	sub_7F81990D
		mov	[ebp+var_10], eax
		cmp	eax, esi
		jz	loc_7F828DB7
		push	esi
		push	eax
		call	sub_7F82F03B
		cmp	eax, esi
		mov	edi, eax
		jz	loc_7F828DB2
		mov	eax, [ebp+arg_C]
		lea	ecx, [ebp+var_10]
		push	ecx
		push	edi
		push	0
		mov	[eax], edi
		push	dword ptr [ebp+var_2]
		push	[ebp+var_8]
		call	sub_7F818D47
		test	eax, eax
		jnz	short loc_7F828C4F
		mov	eax, [ebp+var_10]
		shr	eax, 2
		mov	[ebx], ax
		jmp	short loc_7F828C4F
; ---------------------------------------------------------------------------

loc_7F828C4C:				; CODE XREF: sub_7F828BB2+23j
		mov	ebx, [ebp+arg_10]

loc_7F828C4F:				; CODE XREF: sub_7F828BB2+8Dj
					; sub_7F828BB2+98j
		lea	eax, [ebp+var_14]
		lea	ecx, [ebp+var_30]
		mov	[ebp+var_30], 46534180h
		push	eax
		push	0
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F828DBB
		mov	[ebp+var_4], 8
		push	0
		push	20h
		call	sub_7F82F18D
		mov	[ebp+var_C], eax
		test	eax, eax
		jz	loc_7F828DB2
		mov	dx, [ebx]
		mov	eax, [ebp+var_C]
		mov	word ptr [ebp+var_8+2],	dx
		mov	[ebp+var_18], edi
		test	dx, dx
		mov	ecx, [eax]
		mov	[ebp+var_1C], ecx
		jle	loc_7F828DB7

loc_7F828CA7:				; CODE XREF: sub_7F828BB2+1F8j
		push	0
		push	dword ptr [edi]
		push	[ebp+var_14]
		call	sub_7F8194ED
		mov	[ebp+var_2], ax
		test	ax, ax
		jl	loc_7F828D9B
		lea	eax, [ebp+var_2C]
		push	eax
		push	dword ptr [edi]
		push	[ebp+arg_0]
		call	sub_7F8267D3
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F828CEA
		cmp	esi, 1001h
		jnz	loc_7F828DB7
		dec	word ptr [ebx]
		xor	esi, esi
		jmp	loc_7F828D9E
; ---------------------------------------------------------------------------

loc_7F828CEA:				; CODE XREF: sub_7F828BB2+120j
		push	dword ptr [ebp+var_2]
		push	[ebp+var_14]
		call	sub_7F81990D
		shr	eax, 2
		cmp	ax, [ebp+var_22]
		jg	short loc_7F828D0E
		mov	eax, [edi]
		mov	ecx, [ebp+var_18]
		add	[ebp+var_18], 4
		mov	[ecx], eax
		jmp	loc_7F828D9E
; ---------------------------------------------------------------------------

loc_7F828D0E:				; CODE XREF: sub_7F828BB2+14Aj
		mov	eax, [ebp+arg_4]
		cmp	[ebp+var_28], eax
		jnz	short loc_7F828D22
		mov	ax, [ebp+arg_8]
		cmp	ax, [ebp+var_24]
		jge	short loc_7F828D9B
		jmp	short loc_7F828D8E
; ---------------------------------------------------------------------------

loc_7F828D22:				; CODE XREF: sub_7F828BB2+162j
		cmp	[ebp+var_22], 0
		jle	short loc_7F828D9B
		mov	ax, [ebp+var_4]
		cmp	ax, [ebp+var_22]
		jge	short loc_7F828D58
		mov	ax, [ebp+var_22]
		push	0
		mov	[ebp+var_4], ax
		movsx	eax, ax
		shl	eax, 2
		push	eax
		push	[ebp+var_C]
		call	sub_7F82F1FF
		test	eax, eax
		jz	short loc_7F828DB2
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		mov	[ebp+var_1C], ecx

loc_7F828D58:				; CODE XREF: sub_7F828BB2+17Fj
		movsx	eax, [ebp+var_22]
		shl	eax, 2
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+var_1C]
		push	0
		push	dword ptr [ebp+var_2]
		push	[ebp+var_14]
		call	sub_7F818D47
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F828DBB
		push	[ebp+arg_4]
		push	[ebp+var_10]
		push	[ebp+var_1C]
		call	sub_7F82A419
		test	eax, eax
		jz	short loc_7F828D9B

loc_7F828D8E:				; CODE XREF: sub_7F828BB2+16Ej
		mov	eax, [edi]
		mov	ecx, [ebp+var_18]
		add	[ebp+var_18], 4
		mov	[ecx], eax
		jmp	short loc_7F828D9E
; ---------------------------------------------------------------------------

loc_7F828D9B:				; CODE XREF: sub_7F828BB2+108j
					; sub_7F828BB2+16Cj ...
		dec	word ptr [ebx]

loc_7F828D9E:				; CODE XREF: sub_7F828BB2+133j
					; sub_7F828BB2+157j ...
		dec	word ptr [ebp+var_8+2]
		add	edi, 4
		cmp	word ptr [ebp+var_8+2],	0
		jg	loc_7F828CA7
		jmp	short loc_7F828DB7
; ---------------------------------------------------------------------------

loc_7F828DB2:				; CODE XREF: sub_7F828BB2+6Ej
					; sub_7F828BB2+D4j ...
		mov	esi, 400h

loc_7F828DB7:				; CODE XREF: sub_7F828BB2+47j
					; sub_7F828BB2+5Dj ...
		test	esi, esi
		jz	short loc_7F828DC0

loc_7F828DBB:				; CODE XREF: sub_7F828BB2+BAj
					; sub_7F828BB2+1C8j
		mov	word ptr [ebx],	0

loc_7F828DC0:				; CODE XREF: sub_7F828BB2+207j
		cmp	word ptr [ebx],	0
		jnz	short loc_7F828DE3
		cmp	[ebp+var_20], 0
		jz	short loc_7F828DE3
		test	edi, edi
		jz	short loc_7F828DE3
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax]
		call	sub_7F82F149
		mov	ecx, [ebp+arg_C]
		mov	dword ptr [ecx], 0

loc_7F828DE3:				; CODE XREF: sub_7F828BB2+212j
					; sub_7F828BB2+218j ...
		cmp	[ebp+var_C], 0
		jz	short loc_7F828DF1
		push	[ebp+var_C]
		call	sub_7F82F1E1

loc_7F828DF1:				; CODE XREF: sub_7F828BB2+235j
		cmp	[ebp+var_14], 0
		jz	short loc_7F828E02
		push	0
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_7F81813C

loc_7F828E02:				; CODE XREF: sub_7F828BB2+243j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F828BB2	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F828E0D	proc near		; CODE XREF: sub_7F82C1D4+1AFp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		xor	edx, edx
		mov	ecx, [esp+4+arg_0]
		push	esi
		push	edi
		mov	eax, [ecx]
		mov	ebx, [eax]
		mov	edi, [ebx+244h]
		mov	esi, [edi]
		movzx	eax, word ptr [esi]
		add	eax, esi
		mov	di, [eax+6]
		test	di, di
		jle	short loc_7F828E74
		mov	ebx, [esp+0Ch+arg_4]
		cmp	bl, 69h
		jz	short loc_7F828E74
		cmp	bl, 70h
		jz	short loc_7F828E74
		movzx	eax, word ptr [eax+4]
		test	di, di
		lea	eax, [eax+esi+6]
		jle	short loc_7F828E65

loc_7F828E4B:				; CODE XREF: sub_7F828E0D+56j
		cmp	[eax+4], ebx
		jnz	short loc_7F828E5B
		mov	word ptr [eax+8], 0
		mov	edx, 1

loc_7F828E5B:				; CODE XREF: sub_7F828E0D+41j
		dec	di
		add	eax, 0Ch
		test	di, di
		jnz	short loc_7F828E4B

loc_7F828E65:				; CODE XREF: sub_7F828E0D+3Cj
		test	edx, edx
		jz	short loc_7F828E74
		mov	eax, [ecx]
		mov	ecx, [eax]
		or	byte ptr [ecx+265h], 40h

loc_7F828E74:				; CODE XREF: sub_7F828E0D+21j
					; sub_7F828E0D+2Aj ...
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F828E0D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F828E7A	proc near		; CODE XREF: sub_7F81BF33+3DEp
					; sub_7F829147+A9p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= word ptr  14h

		push	ebp
		xor	ecx, ecx
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		mov	ebx, [edx]
		mov	eax, [ebx+244h]
		mov	edx, [eax]
		movzx	ebx, word ptr [edx]
		mov	si, [ebx+edx+6]
		lea	edi, [ebx+edx]
		test	si, si
		jle	short loc_7F828F08
		mov	al, byte ptr [ebp+arg_4]
		cmp	al, 69h
		jz	short loc_7F828F08
		cmp	al, 70h
		jz	short loc_7F828F08
		movzx	eax, word ptr [edi+4]
		test	si, si
		lea	edi, [eax+edx+6]
		jle	short loc_7F828EF6

loc_7F828EB9:				; CODE XREF: sub_7F828E7A+7Aj
		mov	eax, [ebp+arg_4]
		cmp	[edi+4], eax
		jnz	short loc_7F828EEC
		mov	ax, [ebp+arg_C]
		mov	edx, [ebp+arg_8]
		test	ax, ax
		jle	short loc_7F828EEC

loc_7F828ECD:				; CODE XREF: sub_7F828E7A+70j
		mov	bx, [edi+8]
		cmp	[edx+2], bx
		jge	short loc_7F828EE2
		dec	bx
		mov	ecx, 1
		mov	[edi+8], bx

loc_7F828EE2:				; CODE XREF: sub_7F828E7A+5Bj
		dec	ax
		add	edx, 8
		test	ax, ax
		jnz	short loc_7F828ECD

loc_7F828EEC:				; CODE XREF: sub_7F828E7A+45j
					; sub_7F828E7A+51j
		dec	si
		add	edi, 0Ch
		test	si, si
		jg	short loc_7F828EB9

loc_7F828EF6:				; CODE XREF: sub_7F828E7A+3Dj
		test	ecx, ecx
		jz	short loc_7F828F08
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		mov	edx, [ecx]
		or	byte ptr [edx+265h], 40h

loc_7F828F08:				; CODE XREF: sub_7F828E7A+25j
					; sub_7F828E7A+2Cj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_7F828E7A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F828F0F	proc near		; CODE XREF: sub_7F810955+E0p

var_14		= dword	ptr -14h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		xor	ecx, ecx
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		mov	[ebp+var_4], ecx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_7F828F3E
		mov	eax, [eax+244h]
		test	eax, eax
		jz	short loc_7F828F3E
		mov	eax, [eax]
		movzx	ecx, word ptr [eax]
		movsx	eax, word ptr [ecx+eax+6]
		jmp	short loc_7F828F40
; ---------------------------------------------------------------------------

loc_7F828F3E:				; CODE XREF: sub_7F828F0F+17j
					; sub_7F828F0F+21j
		xor	eax, eax

loc_7F828F40:				; CODE XREF: sub_7F828F0F+2Dj
		test	eax, eax
		jg	short loc_7F828F4B
		xor	eax, eax
		jmp	loc_7F82900C
; ---------------------------------------------------------------------------

loc_7F828F4B:				; CODE XREF: sub_7F828F0F+33j
		cmp	byte ptr [ebp+arg_4], 71h
		jnz	short loc_7F828F58
		xor	eax, eax
		jmp	loc_7F82900C
; ---------------------------------------------------------------------------

loc_7F828F58:				; CODE XREF: sub_7F828F0F+40j
		xor	edi, edi
		lea	eax, [ebp+var_8]
		push	edi
		push	edi
		push	edi
		push	eax
		push	[ebp+arg_4]
		push	esi
		call	sub_7F82D114
		test	eax, eax
		jnz	loc_7F82900C
		lea	eax, [ebp+var_14]
		lea	ecx, [ebp+var_8]
		push	eax
		push	0
		push	ecx
		push	esi
		call	sub_7F817E9D
		test	eax, eax
		jnz	loc_7F82900C
		push	0
		push	[ebp+arg_4]
		push	[ebp+var_14]
		call	sub_7F8194ED
		mov	bx, ax
		push	0
		lea	ecx, [ebp+var_14]
		push	ecx
		call	sub_7F81813C
		test	bx, bx
		jge	short loc_7F828FAE
		xor	eax, eax
		jmp	short loc_7F82900C
; ---------------------------------------------------------------------------

loc_7F828FAE:				; CODE XREF: sub_7F828F0F+99j
		lea	eax, [ebp+var_C]
		lea	ecx, [ebp+var_4]
		push	eax
		push	ecx
		push	ebx
		push	[ebp+var_8]
		push	esi
		call	sub_7F828BB2
		test	eax, eax
		jnz	short loc_7F82900C
		cmp	word ptr [ebp+var_C], 0
		jg	short loc_7F828FCF
		xor	eax, eax
		jmp	short loc_7F82900C
; ---------------------------------------------------------------------------

loc_7F828FCF:				; CODE XREF: sub_7F828F0F+BAj
		mov	[ebp+var_10], 2
		lea	ecx, [ebp+arg_4]
		lea	edx, [ebp+var_10]
		push	[ebp+var_4]
		mov	[ebp+var_E], 1
		push	ecx
		push	edx
		push	esi
		call	sub_7F828A3E
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F829002
		push	ebx
		push	[ebp+var_8]
		push	[ebp+var_C]
		push	[ebp+var_4]
		push	esi
		call	sub_7F829015

loc_7F829002:				; CODE XREF: sub_7F828F0F+E1j
		push	[ebp+var_4]
		call	sub_7F82F149
		mov	eax, edi

loc_7F82900C:				; CODE XREF: sub_7F828F0F+37j
					; sub_7F828F0F+44j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F828F0F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F829015	proc near		; CODE XREF: sub_7F828F0F+EEp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= word ptr  10h
arg_C		= dword	ptr  14h
arg_10		= word ptr  18h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		push	ebx
		push	esi
		mov	ecx, [eax]
		push	edi
		xor	esi, esi
		mov	edx, [ecx]
		mov	eax, [edx+244h]
		mov	edi, [eax]
		movzx	ecx, word ptr [edi]
		mov	ax, [ebp+arg_8]
		lea	ebx, [ecx+edi]
		dec	[ebp+arg_8]
		test	ax, ax
		jle	short loc_7F829090

loc_7F829040:				; CODE XREF: sub_7F829015+79j
		mov	eax, [ebp+arg_4]
		add	[ebp+arg_4], 4
		push	dword ptr [eax]
		push	edi
		call	sub_7F816B29
		test	ax, ax
		jl	short loc_7F829083
		movsx	eax, ax
		imul	eax, 6
		mov	ecx, ebx
		sub	ecx, eax
		mov	eax, [ebp+arg_C]
		movzx	edx, word ptr [ecx+4]
		cmp	[edx+edi+0Ah], eax
		lea	ecx, [edx+edi]
		jnz	short loc_7F829083
		mov	ax, [ecx+0Eh]
		cmp	[ebp+arg_10], ax
		jge	short loc_7F829083
		dec	ax
		mov	esi, 1
		mov	[ecx+0Eh], ax

loc_7F829083:				; CODE XREF: sub_7F829015+3Dj
					; sub_7F829015+57j ...
		mov	ax, [ebp+arg_8]
		dec	[ebp+arg_8]
		test	ax, ax
		jg	short loc_7F829040

loc_7F829090:				; CODE XREF: sub_7F829015+29j
		test	esi, esi
		jz	short loc_7F8290A2
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		mov	edx, [ecx]
		or	byte ptr [edx+265h], 40h

loc_7F8290A2:				; CODE XREF: sub_7F829015+7Dj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	14h
sub_7F829015	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8290A9	proc near		; CODE XREF: sub_7F81B8F0+B4p
					; sub_7F81C56F+55Cp

var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= word 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		= word ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_4], 0
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ebx, [ebp+arg_4]
		cmp	bl, 83h
		mov	ecx, [esi]
		mov	eax, [ecx]
		jz	short loc_7F82913D
		test	eax, eax
		jz	short loc_7F8290E1
		mov	eax, [eax+244h]
		test	eax, eax
		jz	short loc_7F8290E1
		mov	eax, [eax]
		movzx	ecx, word ptr [eax]
		movsx	eax, word ptr [ecx+eax+6]
		jmp	short loc_7F8290E3
; ---------------------------------------------------------------------------

loc_7F8290E1:				; CODE XREF: sub_7F8290A9+20j
					; sub_7F8290A9+2Aj
		xor	eax, eax

loc_7F8290E3:				; CODE XREF: sub_7F8290A9+36j
		test	eax, eax
		jle	short loc_7F82913D
		cmp	bl, 69h
		jz	short loc_7F82913D
		cmp	bl, 70h
		jz	short loc_7F82913D
		lea	eax, [ebp+var_C]
		lea	ecx, [ebp+var_4]
		push	eax
		push	ecx
		push	[ebp+arg_10]
		push	ebx
		push	esi
		call	sub_7F828BB2
		test	eax, eax
		jnz	short loc_7F82913F
		cmp	[ebp+var_C], 0
		jle	short loc_7F82913D
		push	[ebp+var_4]
		mov	[ebp+var_10], 0
		mov	ax, [ebp+arg_C]
		mov	[ebp+var_8], ebx
		push	[ebp+arg_8]
		mov	[ebp+var_E], ax
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		call	sub_7F828A3E
		push	[ebp+var_4]
		mov	ebx, eax
		call	sub_7F82F149
		mov	eax, ebx
		jmp	short loc_7F82913F
; ---------------------------------------------------------------------------

loc_7F82913D:				; CODE XREF: sub_7F8290A9+1Cj
					; sub_7F8290A9+3Cj ...
		xor	eax, eax

loc_7F82913F:				; CODE XREF: sub_7F8290A9+5Cj
					; sub_7F8290A9+92j
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F8290A9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F829147	proc near		; CODE XREF: sub_7F81C56F+543p

var_18		= word ptr -18h
var_16		= word ptr -16h
var_14		= word ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= word ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		xor	ecx, ecx
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		mov	[ebp+var_C], ecx
		push	esi
		mov	[ebp+var_8], ecx
		push	edi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_7F829179
		mov	eax, [eax+244h]
		test	eax, eax
		jz	short loc_7F829179
		mov	eax, [eax]
		movzx	ecx, word ptr [eax]
		movsx	eax, word ptr [ecx+eax+6]
		jmp	short loc_7F82917B
; ---------------------------------------------------------------------------

loc_7F829179:				; CODE XREF: sub_7F829147+1Aj
					; sub_7F829147+24j
		xor	eax, eax

loc_7F82917B:				; CODE XREF: sub_7F829147+30j
		test	eax, eax
		jle	loc_7F829294
		mov	ebx, [ebp+arg_4]
		cmp	bl, 69h
		jz	loc_7F829294
		cmp	bl, 70h
		jz	loc_7F829294
		lea	eax, [ebp+var_2]
		lea	ecx, [ebp+var_C]
		push	eax
		push	ecx
		push	0
		push	ebx
		push	esi
		call	sub_7F828BB2
		test	eax, eax
		jnz	loc_7F829296
		lea	eax, [ebp+var_4]
		lea	ecx, [ebp+var_8]
		push	eax
		push	ecx
		push	[ebp+arg_14]
		push	[ebp+arg_8]
		push	esi
		call	sub_7F828BB2
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F829274
		cmp	[ebp+var_2], 0
		jg	short loc_7F8291E8
		cmp	[ebp+var_4], 0
		jle	loc_7F829294
		cmp	[ebp+var_2], 0
		jle	short loc_7F8291F5

loc_7F8291E8:				; CODE XREF: sub_7F829147+8Dj
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	ebx
		push	esi
		call	sub_7F828E7A

loc_7F8291F5:				; CODE XREF: sub_7F829147+9Fj
		lea	eax, [ebp+var_4]
		lea	edx, [ebp+var_2]
		push	eax
		push	[ebp+var_8]
		push	edx
		push	[ebp+var_C]
		call	sub_7F8277C1
		cmp	[ebp+var_2], 0
		jle	short loc_7F829240
		push	[ebp+var_C]
		mov	[ebp+var_18], 1
		mov	ax, [ebp+var_2]
		mov	[ebp+var_10], ebx
		push	[ebp+arg_C]
		mov	bx, [ebp+arg_10]
		mov	[ebp+var_16], bx
		mov	[ebp+var_14], ax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		call	sub_7F828A3E
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F829274
		jmp	short loc_7F829244
; ---------------------------------------------------------------------------

loc_7F829240:				; CODE XREF: sub_7F829147+C6j
		mov	bx, [ebp+arg_10]

loc_7F829244:				; CODE XREF: sub_7F829147+F7j
		xor	ecx, ecx
		cmp	[ebp+var_4], cx
		jle	short loc_7F829274
		push	[ebp+var_8]
		mov	[ebp+var_18], cx
		mov	eax, [ebp+arg_8]
		mov	cx, [ebp+var_4]
		mov	[ebp+var_10], eax
		push	[ebp+arg_C]
		mov	[ebp+var_16], bx
		mov	[ebp+var_14], cx
		lea	ecx, [ebp+var_18]
		push	ecx
		push	esi
		call	sub_7F828A3E
		mov	edi, eax

loc_7F829274:				; CODE XREF: sub_7F829147+82j
					; sub_7F829147+F5j ...
		cmp	[ebp+var_C], 0
		jz	short loc_7F829282
		push	[ebp+var_C]
		call	sub_7F82F149

loc_7F829282:				; CODE XREF: sub_7F829147+131j
		cmp	[ebp+var_8], 0
		jz	short loc_7F829290
		push	[ebp+var_8]
		call	sub_7F82F149

loc_7F829290:				; CODE XREF: sub_7F829147+13Fj
		mov	eax, edi
		jmp	short loc_7F829296
; ---------------------------------------------------------------------------

loc_7F829294:				; CODE XREF: sub_7F829147+36j
					; sub_7F829147+42j ...
		xor	eax, eax

loc_7F829296:				; CODE XREF: sub_7F829147+64j
					; sub_7F829147+14Bj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	20h
sub_7F829147	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82929F	proc near		; CODE XREF: sub_7F8261A0+374p

var_30		= byte ptr -30h
var_2C		= dword	ptr -2Ch
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_6		= word ptr -6
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= word ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 30h
		mov	[ebp+var_2], 0FFFFh
		movsx	eax, word_7F837814
		shl	eax, 3
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		push	20h
		push	eax
		mov	[ebp+var_10], edi
		call	sub_7F82F03B
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F8292D5
		mov	eax, 400h
		jmp	loc_7F829592
; ---------------------------------------------------------------------------

loc_7F8292D5:				; CODE XREF: sub_7F82929F+2Aj
		push	0
		lea	eax, [ebp+arg_8]
		push	0
		mov	[ebp+var_2C+2],	esi
		push	0
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_7F82D114
		mov	[ebp+var_C], eax
		test	eax, eax
		jnz	loc_7F82955A
		push	0
		lea	eax, [ebp+var_18]
		push	0
		push	0
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82D114
		mov	[ebp+var_C], eax
		test	eax, eax
		jnz	loc_7F82955A
		push	offset byte_7F8369F8
		push	[ebp+var_18]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F81B6A6
		mov	[ebp+var_C], eax
		test	eax, eax
		jnz	loc_7F82955A

loc_7F829336:				; CODE XREF: sub_7F82929F+2B6j
		lea	eax, [ebp+var_10]
		lea	ecx, [ebp+arg_8]
		push	eax
		push	1
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	[ebp+var_C], eax
		test	eax, eax
		jnz	loc_7F82955A
		mov	eax, [ebp+var_10]
		mov	ecx, [eax]
		cmp	[ebp+var_2], 0
		mov	edx, [ecx+14h]
		mov	eax, [ecx+18h]
		mov	[ebp+var_20], edx
		mov	[ebp+var_1C], eax
		mov	edi, [eax]
		jge	short loc_7F829380
		mov	ax, [edi]
		mov	[ebp+var_2], ax
		mov	ax, [edi+2]
		and	ax, 3
		mov	[ebp+var_4], ax

loc_7F829380:				; CODE XREF: sub_7F82929F+CCj
		and	word ptr [edi+2], 0FFFCh
		mov	word ptr [ebp+var_2C], 0
		movsx	ecx, [ebp+var_2]
		movsx	eax, word ptr [edi]
		sub	eax, ecx
		imul	eax, 0Ch
		cmp	[ebp+var_2], 0
		lea	ebx, [eax+edi+0Eh]
		jle	loc_7F8294D9

loc_7F8293A7:				; CODE XREF: sub_7F82929F+234j
		lea	ecx, [ebp+var_14]
		lea	edx, [ebp+var_18]
		mov	[ebp+var_14], 4
		mov	eax, [ebx+4]
		add	eax, 17h
		push	eax
		push	ecx
		push	edx
		push	[ebp+var_20]
		call	sub_7F824CAB
		mov	[ebp+var_C], eax
		test	eax, eax
		jnz	loc_7F8294C7
		mov	eax, [ebp+arg_4]
		cmp	eax, [ebp+var_18]
		jnz	loc_7F8294C7
		mov	eax, [ebx]
		mov	[esi+4], eax
		mov	ax, [edi]
		sub	ax, [ebp+var_2]
		cmp	[ebp+arg_C], 3
		mov	[esi+2], ax
		jnz	short loc_7F82940A
		mov	word ptr [esi],	3
		mov	ax, [esi+2]
		push	eax
		push	[ebp+var_10]
		call	sub_7F818AE7
		jmp	loc_7F829496
; ---------------------------------------------------------------------------

loc_7F82940A:				; CODE XREF: sub_7F82929F+152j
		mov	word ptr [esi],	2
		mov	eax, [ebx+8]
		cmp	eax, 19Dh
		jb	short loc_7F82941E
		mov	eax, 19Dh

loc_7F82941E:				; CODE XREF: sub_7F82929F+178j
		lea	ecx, [ebp+var_14]
		mov	[ebp+var_14], eax
		push	dword ptr [ebx+4]
		push	ecx
		push	offset ReturnedString
		push	[ebp+var_20]
		call	sub_7F824CAB
		mov	[ebp+var_C], eax
		test	eax, eax
		jnz	loc_7F8294C7
		push	offset sz	; lpString
		call	ds:lstrlenA
		lea	edi, unk_7F8367F4[eax]
		push	edi		; lpString
		call	ds:lstrlenA
		lea	edi, [eax+edi+1]
		push	offset byte_7F8369F8 ; lpString
		call	ds:lstrlenA
		mov	ebx, eax
		push	offset byte_7F8369F8 ; lpString2
		push	edi		; lpString1
		call	ds:lstrcpyA
		lea	eax, [ebx+eax+1]
		mov	byte ptr [eax],	0
		sub	eax, offset unk_7F8367D7
		push	eax
		mov	[ebp+var_14], eax
		push	offset ReturnedString
		lea	eax, [esi+2]
		push	eax
		push	[ebp+var_10]
		call	sub_7F818E95

loc_7F829496:				; CODE XREF: sub_7F82929F+166j
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_1C]
		movsx	ecx, [ebp+var_2]
		mov	edi, [eax]
		movsx	eax, word ptr [edi]
		sub	eax, ecx
		imul	eax, 0Ch
		cmp	[ebp+var_C], 0
		lea	ebx, [eax+edi+0Eh]
		jnz	short loc_7F8294C7
		mov	ax, word_7F837814
		add	esi, 8
		inc	word ptr [ebp+var_2C]
		cmp	word ptr [ebp+var_2C], ax
		jge	short loc_7F8294D9

loc_7F8294C7:				; CODE XREF: sub_7F82929F+12Bj
					; sub_7F82929F+137j ...
		dec	[ebp+var_2]
		add	ebx, 0Ch
		cmp	[ebp+var_2], 0
		jg	loc_7F8293A7

loc_7F8294D9:				; CODE XREF: sub_7F82929F+102j
					; sub_7F82929F+226j
		cmp	word ptr [ebp+var_2C], 0
		jle	short loc_7F82955A
		mov	ax, [edi+2]
		push	1
		mov	cx, [ebp+var_4]
		xor	cx, ax
		and	cx, 3
		xor	cx, ax
		lea	eax, [ebp+var_10]
		mov	[edi+2], cx
		push	eax
		xor	edi, edi
		call	sub_7F81813C
		mov	[ebp+var_C], eax
		cmp	eax, edi
		jnz	short loc_7F82955A
		cmp	[ebp+arg_C], 3
		jnz	short loc_7F82953E
		lea	eax, [ebp+var_6]
		push	eax
		push	3
		push	[ebp+var_2C]
		push	[ebp+var_2C+2]
		push	[ebp+arg_0]
		call	sub_7F82C7BB
		cmp	[ebp+var_6], di
		jz	short loc_7F82953E
		mov	ax, [ebp+var_6]
		neg	ax
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_7F82C50A

loc_7F82953E:				; CODE XREF: sub_7F82929F+270j
					; sub_7F82929F+28Aj
		lea	eax, [ebp+var_30]
		push	eax
		push	4000h
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_7F82A016
		mov	esi, [ebp+var_2C+2]
		jmp	loc_7F829336
; ---------------------------------------------------------------------------

loc_7F82955A:				; CODE XREF: sub_7F82929F+53j
					; sub_7F82929F+73j ...
		test	edi, edi
		jz	short loc_7F829574
		mov	ax, [edi+2]
		mov	cx, [ebp+var_4]
		xor	cx, ax
		and	cx, 3
		xor	cx, ax
		mov	[edi+2], cx

loc_7F829574:				; CODE XREF: sub_7F82929F+2BDj
		cmp	[ebp+var_10], 0
		jz	short loc_7F829585
		push	0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_7F81813C

loc_7F829585:				; CODE XREF: sub_7F82929F+2D9j
		test	esi, esi
		jz	short loc_7F82958F
		push	esi
		call	sub_7F82F149

loc_7F82958F:				; CODE XREF: sub_7F82929F+2E8j
		mov	eax, [ebp+var_C]

loc_7F829592:				; CODE XREF: sub_7F82929F+31j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F82929F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82959B	proc near		; CODE XREF: sub_7F8261A0+22Cp
					; sub_7F8261A0+293p

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
lpString	= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_C]
		mov	word ptr [esi],	1
		xor	edi, edi
		push	3
		mov	ebx, [ebp+arg_0]
		mov	[ebp+var_18], edi
		mov	[ebp+var_C], edi
		push	[ebp+arg_8]
		push	ebx
		call	sub_7F81155C
		mov	dword_7F83803C,	eax
		cmp	eax, edi
		jnz	short loc_7F829600
		push	offset dword_7F83803C
		push	[ebp+arg_8]
		push	ebx
		call	sub_7F826734
		mov	[ebp+var_8], eax
		cmp	eax, edi
		jnz	loc_7F82980E
		mov	eax, dword_7F83803C
		push	eax
		push	3
		push	[ebp+arg_8]
		push	ebx
		call	sub_7F811597
		test	eax, eax
		jz	short loc_7F829600
		mov	[ebp+var_18], 1

loc_7F829600:				; CODE XREF: sub_7F82959B+2Ej
					; sub_7F82959B+5Cj
		lea	eax, [ebp+var_C]
		lea	ecx, [ebp+arg_4]
		push	eax
		push	0
		push	ecx
		push	ebx
		call	sub_7F817E9D
		mov	[ebp+var_8], eax
		test	eax, eax
		jz	short loc_7F82962E
		cmp	eax, 1001h
		jnz	loc_7F82980E
		mov	[ebp+var_8], 1008h
		jmp	loc_7F82980E
; ---------------------------------------------------------------------------

loc_7F82962E:				; CODE XREF: sub_7F82959B+7Aj
		mov	ax, word_7F83780C
		mov	edx, dword_7F83803C
		sub	word_7F838028, ax
		mov	ecx, [edx]
		movzx	eax, word ptr [ecx]
		mov	di, [eax+ecx+6]
		mov	[ebp+var_14], ecx
		movzx	edx, word ptr [ecx+2]
		movzx	eax, word ptr [ecx+4]
		add	edx, eax
		test	di, di
		lea	ebx, [edx+ecx+0Ch]
		jle	short loc_7F82967C

loc_7F829661:				; CODE XREF: sub_7F82959B+DFj
		push	0
		push	dword ptr [ebx]
		push	[ebp+var_C]
		call	sub_7F8194ED
		test	ax, ax
		jl	short loc_7F8296CB
		dec	di
		add	ebx, 6
		test	di, di
		jg	short loc_7F829661

loc_7F82967C:				; CODE XREF: sub_7F82959B+C4j
		mov	ecx, [ebp+var_14]
		movzx	eax, word ptr [ecx]
		lea	edi, [eax+ecx]
		mov	ax, [edi+6]
		mov	[ebp+var_2], ax
		test	ax, ax
		jle	loc_7F82980E
		xor	ebx, ebx

loc_7F829698:				; CODE XREF: sub_7F82959B+26Dj
		push	ebx
		push	dword ptr [edi]
		push	[ebp+var_C]
		call	sub_7F8194ED
		mov	ecx, [ebp+var_14]
		movzx	edx, word ptr [edi+4]
		lea	ecx, [ecx+edx+6]
		mov	[ebp+lpString],	ecx
		movzx	ecx, word ptr [edi-2]
		sub	ecx, edx
		mov	edx, [edi]
		shr	edx, 10h
		movzx	edx, dx
		cmp	edx, 8		; switch 9 cases
		ja	short loc_7F8296D5 ; jumptable 7F8296C4	default	case
		jmp	ds:off_7F82985C[edx*4] ; switch	jump
; ---------------------------------------------------------------------------

loc_7F8296CB:				; CODE XREF: sub_7F82959B+D5j
		mov	word ptr [esi],	0
		jmp	loc_7F82980E
; ---------------------------------------------------------------------------

loc_7F8296D5:				; CODE XREF: sub_7F82959B+127j
					; sub_7F82959B+129j
					; DATA XREF: ...
		push	esi		; jumptable 7F8296C4 default case
		push	eax
		push	[ebp+var_C]
		push	ecx
		push	[ebp+lpString]
		call	sub_7F8283BC
		mov	[ebp+var_8], eax
		cmp	eax, ebx
		jnz	loc_7F82980E
		cmp	[esi], bx
		jnz	loc_7F8297FD
		jmp	loc_7F82980E
; ---------------------------------------------------------------------------

loc_7F8296FC:				; CODE XREF: sub_7F82959B+129j
					; DATA XREF: .text:off_7F82985Co
		push	esi		; jumptable 7F8296C4 case 0
		push	eax		; int
		push	[ebp+var_C]	; int
		push	[ebp+lpString]	; lpString
		call	sub_7F82826A
		mov	[ebp+var_8], eax
		cmp	eax, ebx
		jnz	loc_7F82980E
		cmp	[esi], bx
		jnz	loc_7F8297FD
		cmp	dword ptr [edi], 8001h
		jnz	short loc_7F829784
		push	ebx
		push	8002h
		push	[ebp+var_C]
		call	sub_7F8194ED
		test	ax, ax
		jl	short loc_7F829750
		push	esi		; int
		push	eax		; int
		push	[ebp+var_C]	; int
		push	[ebp+lpString]	; lpString
		call	sub_7F82826A
		mov	[ebp+var_8], eax
		cmp	eax, ebx
		jnz	loc_7F82980E

loc_7F829750:				; CODE XREF: sub_7F82959B+19Bj
		cmp	[esi], bx
		jnz	loc_7F8297FD
		push	ebx
		push	8003h
		push	[ebp+var_C]
		call	sub_7F8194ED
		test	ax, ax
		jl	short loc_7F829784
		push	esi		; int
		push	eax		; int
		push	[ebp+var_C]	; int
		push	[ebp+lpString]	; lpString
		call	sub_7F82826A
		mov	[ebp+var_8], eax
		cmp	eax, ebx
		jnz	loc_7F82980E

loc_7F829784:				; CODE XREF: sub_7F82959B+188j
					; sub_7F82959B+1CFj
		cmp	[esi], bx
		jnz	short loc_7F8297FD
		jmp	loc_7F82980E
; ---------------------------------------------------------------------------

loc_7F82978E:				; CODE XREF: sub_7F82959B+129j
					; DATA XREF: .text:off_7F82985Co
		push	esi		; jumptable 7F8296C4 cases 1,2
		push	ebx		; int
		push	ebx		; int
		push	eax		; int
		push	[ebp+var_C]	; int
		push	[ebp+lpString]	; lpString
		call	sub_7F827F63
		mov	[ebp+var_8], eax
		cmp	eax, ebx
		jnz	short loc_7F82980E
		cmp	[esi], bx
		jnz	short loc_7F8297FD
		jmp	short loc_7F82980E
; ---------------------------------------------------------------------------

loc_7F8297AB:				; CODE XREF: sub_7F82959B+129j
					; DATA XREF: .text:off_7F82985Co
		push	esi		; jumptable 7F8296C4 case 3
		push	eax
		push	[ebp+var_C]
		push	ecx
		push	[ebp+lpString]
		call	sub_7F828018
		mov	[ebp+var_8], eax
		cmp	eax, ebx
		jnz	short loc_7F82980E
		cmp	[esi], bx
		jnz	short loc_7F8297FD
		jmp	short loc_7F82980E
; ---------------------------------------------------------------------------

loc_7F8297C7:				; CODE XREF: sub_7F82959B+129j
					; DATA XREF: .text:off_7F82985Co
		push	esi		; jumptable 7F8296C4 cases 4,7
		push	eax
		push	[ebp+var_C]
		push	ecx
		push	[ebp+lpString]
		call	sub_7F828107
		mov	[ebp+var_8], eax
		cmp	eax, ebx
		jnz	short loc_7F82980E
		cmp	[esi], bx
		jnz	short loc_7F8297FD
		jmp	short loc_7F82980E
; ---------------------------------------------------------------------------

loc_7F8297E3:				; CODE XREF: sub_7F82959B+129j
					; DATA XREF: .text:off_7F82985Co
		push	esi		; jumptable 7F8296C4 cases 5,8
		push	eax
		push	[ebp+var_C]
		push	ecx
		push	[ebp+lpString]
		call	sub_7F8281B9
		mov	[ebp+var_8], eax
		cmp	eax, ebx
		jnz	short loc_7F82980E
		cmp	[esi], bx
		jz	short loc_7F82980E

loc_7F8297FD:				; CODE XREF: sub_7F82959B+156j
					; sub_7F82959B+17Cj ...
		dec	[ebp+var_2]
		sub	edi, 6
		cmp	[ebp+var_2], bx
		jg	loc_7F829698

loc_7F82980E:				; CODE XREF: sub_7F82959B+43j
					; sub_7F82959B+81j ...
		cmp	dword_7F83803C,	0
		jz	short loc_7F829832
		cmp	[ebp+var_18], 0
		jz	short loc_7F829828
		mov	eax, dword_7F83803C
		push	eax
		call	sub_7F82F1E1

loc_7F829828:				; CODE XREF: sub_7F82959B+280j
		mov	dword_7F83803C,	0

loc_7F829832:				; CODE XREF: sub_7F82959B+27Aj
		cmp	[ebp+var_C], 0
		jz	short loc_7F829843
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_7F81813C

loc_7F829843:				; CODE XREF: sub_7F82959B+29Bj
		mov	ax, word_7F837808
		pop	edi
		sub	word_7F838028, ax
		pop	esi
		mov	eax, [ebp+var_8]
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F82959B	endp

; ---------------------------------------------------------------------------
off_7F82985C	dd offset loc_7F8296FC	; DATA XREF: sub_7F82959B+129r
		dd offset loc_7F82978E	; jump table for switch	statement
		dd offset loc_7F82978E
		dd offset loc_7F8297AB
		dd offset loc_7F8297C7
		dd offset loc_7F8297E3
		dd offset loc_7F8296D5
		dd offset loc_7F8297C7
		dd offset loc_7F8297E3

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F829880	proc near		; CODE XREF: sub_7F823452+28p

var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		push	37h
		push	0
		push	esi
		call	sub_7F82A93C
		test	eax, eax
		jnz	short loc_7F8298A4
		mov	ebx, 101Eh
		jmp	loc_7F82993C
; ---------------------------------------------------------------------------

loc_7F8298A4:				; CODE XREF: sub_7F829880+18j
		mov	dword_7F836C60,	1
		lea	eax, [ebp+var_2]
		push	eax
		push	4F435380h
		push	esi
		call	sub_7F82C87F
		lea	ecx, [ebp+var_4]
		xor	edi, edi
		push	ecx
		push	4C435380h
		push	esi
		call	sub_7F82C87F
		push	edi
		mov	ebx, 0FEFFh
		push	ebx
		mov	dword_7F838098,	edi
		movsx	eax, [ebp+var_4]
		movsx	ecx, [ebp+var_2]
		add	eax, ecx
		push	8
		push	8
		mov	dword_7F83809C,	eax
		push	esi
		call	sub_7F82D545
		push	edi
		push	ebx
		push	90h
		push	esi
		call	sub_7F82D59C
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_7F829975
		cmp	eax, edi
		mov	ebx, eax
		jnz	short loc_7F82993C
		push	[ebp+arg_4]
		push	esi
		call	sub_7F829C7D
		cmp	eax, edi
		mov	ebx, eax
		jnz	short loc_7F82993C
		push	[ebp+arg_4]
		push	esi
		call	sub_7F829E5C
		cmp	eax, edi
		mov	ebx, eax
		jnz	short loc_7F82993C
		push	[ebp+arg_4]
		push	esi
		call	sub_7F829EE1
		mov	ebx, eax

loc_7F82993C:				; CODE XREF: sub_7F829880+1Fj
					; sub_7F829880+91j ...
		xor	edi, edi
		push	edi
		push	0FEFFh
		push	8
		push	8
		push	esi
		call	sub_7F82D545
		push	edi
		push	0FEFFh
		push	90h
		push	esi
		call	sub_7F82D59C
		call	sub_7F82AB0B
		mov	eax, ebx
		mov	dword_7F836C60,	edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F829880	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F829975	proc near		; CODE XREF: sub_7F829880+88p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		lea	eax, [ebp+var_C]
		push	esi
		push	edi
		xor	edi, edi
		push	eax
		push	edi
		mov	[ebp+var_C], edi
		push	4F435380h
		mov	[ebp+var_14], edi
		push	[ebp+arg_0]
		call	sub_7F816C79
		cmp	eax, edi
		mov	esi, eax
		jz	short loc_7F8299B1
		cmp	esi, 1001h
		jnz	loc_7F829C2D
		xor	esi, esi
		jmp	loc_7F829C2D
; ---------------------------------------------------------------------------

loc_7F8299B1:				; CODE XREF: sub_7F829975+27j
		cmp	dword_7F838078,	0
		jz	short loc_7F8299C1
		mov	esi, 253h
		jmp	short loc_7F8299F1
; ---------------------------------------------------------------------------

loc_7F8299C1:				; CODE XREF: sub_7F829975+43j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		xor	esi, esi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	edx, [ebp+arg_0]
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edx

loc_7F8299F1:				; CODE XREF: sub_7F829975+4Aj
		test	esi, esi
		jnz	loc_7F829C2D
		mov	eax, [ebp+var_C]
		mov	ebx, [eax]
		movzx	eax, word ptr [ebx]
		add	eax, ebx
		mov	[ebp+var_4], eax
		cmp	dword ptr [eax], 0FFFFFFFFh
		jz	loc_7F829BCF

loc_7F829A0F:				; CODE XREF: sub_7F829975+254j
		mov	eax, [ebp+var_4]
		push	0
		mov	ecx, [eax]
		push	ecx
		mov	[ebp+var_10], ecx
		call	sub_7F8144A4
		test	eax, eax
		jz	loc_7F829B8F
		test	byte ptr [eax+11h], 1
		jz	short loc_7F829A62
		cmp	[ebp+arg_4], 0
		jz	short loc_7F829A62
		movzx	eax, word ptr [ebx]
		sub	eax, [ebp+var_4]
		mov	ecx, 6
		add	eax, ebx
		cdq
		idiv	ecx
		push	eax
		push	ebx
		call	sub_7F816A42
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F829C2D
		add	[ebp+var_4], 6
		mov	edi, 1
		jmp	loc_7F829B8F
; ---------------------------------------------------------------------------

loc_7F829A62:				; CODE XREF: sub_7F829975+B6j
					; sub_7F829975+BCj
		mov	ecx, [eax+8]
		mov	[ebp+var_8], ecx
		or	byte ptr [eax+11h], 1
		cmp	byte ptr [ebp+var_8], 83h
		jz	short loc_7F829A90
		cmp	[ebp+arg_4], 0
		jz	loc_7F829B8F
		mov	[ebp+var_8], 83h
		mov	dword ptr [eax+8], 83h
		push	eax
		call	sub_7F8148F7

loc_7F829A90:				; CODE XREF: sub_7F829975+FBj
		push	0
		push	[ebp+var_8]
		call	sub_7F8144A4
		test	eax, eax
		jnz	loc_7F829B8B
		cmp	[ebp+arg_4], 0
		jz	loc_7F829B8F
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F829AC2
		call	sub_7F82A34F
		jmp	short loc_7F829AD0
; ---------------------------------------------------------------------------

loc_7F829AC2:				; CODE XREF: sub_7F829975+144j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F829AD0:				; CODE XREF: sub_7F829975+14Bj
		lea	eax, [ebp+var_14]
		lea	ecx, [ebp+var_8]
		mov	dword_7F838078,	0
		push	eax
		push	2
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F829C2D
		push	1
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_7F81813C
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F829BE5
		cmp	dword_7F838078,	0
		jz	short loc_7F829B1B
		mov	esi, 253h
		jmp	short loc_7F829B4B
; ---------------------------------------------------------------------------

loc_7F829B1B:				; CODE XREF: sub_7F829975+19Dj
		mov	eax, [ebp+arg_0]
		xor	esi, esi
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	edx, [ebp+arg_0]
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edx

loc_7F829B4B:				; CODE XREF: sub_7F829975+1A4j
		test	esi, esi
		jnz	loc_7F829C2D
		push	0
		push	[ebp+var_10]
		call	sub_7F8144A4
		mov	ecx, [ebp+var_8]
		push	eax
		mov	[eax+8], ecx
		call	sub_7F8148F7
		push	0
		push	[ebp+var_8]
		call	sub_7F8144A4
		mov	ecx, [ebp+var_10]
		push	eax
		mov	[eax+8], ecx
		mov	word ptr [eax+12h], 801Dh
		or	byte ptr [eax+11h], 1
		call	sub_7F8148F7
		jmp	short loc_7F829B8F
; ---------------------------------------------------------------------------

loc_7F829B8B:				; CODE XREF: sub_7F829975+127j
		or	byte ptr [eax+11h], 1

loc_7F829B8F:				; CODE XREF: sub_7F829975+ACj
					; sub_7F829975+E8j ...
		cmp	dword_7F83809C,	0
		mov	eax, 1
		jbe	short loc_7F829BBB
		push	64h
		sub	edx, edx
		inc	dword_7F838098
		mov	eax, dword_7F838098
		imul	eax, 64h
		div	dword_7F83809C
		push	eax
		call	sub_7F82A9CA

loc_7F829BBB:				; CODE XREF: sub_7F829975+226j
		test	eax, eax
		jz	short loc_7F829BF2
		sub	[ebp+var_4], 6
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jnz	loc_7F829A0F

loc_7F829BCF:				; CODE XREF: sub_7F829975+94j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F829BF9
		call	sub_7F82A34F
		jmp	short loc_7F829C07
; ---------------------------------------------------------------------------

loc_7F829BE5:				; CODE XREF: sub_7F829975+190j
		push	0
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_7F81813C
		jmp	short loc_7F829C2D
; ---------------------------------------------------------------------------

loc_7F829BF2:				; CODE XREF: sub_7F829975+248j
		mov	esi, 101Eh
		jmp	short loc_7F829C2D
; ---------------------------------------------------------------------------

loc_7F829BF9:				; CODE XREF: sub_7F829975+267j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F829C07:				; CODE XREF: sub_7F829975+26Ej
		mov	dword_7F838078,	0
		test	edi, edi
		jz	short loc_7F829C2D
		push	[ebp+var_C]
		mov	[ebp+var_10], 4F435380h
		lea	ecx, [ebp+var_10]
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F816DC7
		mov	esi, eax

loc_7F829C2D:				; CODE XREF: sub_7F829975+2Fj
					; sub_7F829975+37j ...
		cmp	dword_7F838078,	0
		jz	short loc_7F829C64
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F829C4C
		call	sub_7F82A34F
		jmp	short loc_7F829C5A
; ---------------------------------------------------------------------------

loc_7F829C4C:				; CODE XREF: sub_7F829975+2CEj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F829C5A:				; CODE XREF: sub_7F829975+2D5j
		mov	dword_7F838078,	0

loc_7F829C64:				; CODE XREF: sub_7F829975+2BFj
		cmp	[ebp+var_C], 0
		jz	short loc_7F829C72
		push	[ebp+var_C]
		call	sub_7F82F1E1

loc_7F829C72:				; CODE XREF: sub_7F829975+2F3j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F829975	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F829C7D	proc near		; CODE XREF: sub_7F829880+97p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		lea	eax, [ebp+var_4]
		push	esi
		push	edi
		xor	edi, edi
		push	eax
		push	edi
		mov	[ebp+var_C], edi
		push	4C435380h
		mov	[ebp+var_4], edi
		push	[ebp+arg_0]
		call	sub_7F816C79
		cmp	eax, edi
		mov	esi, eax
		jz	short loc_7F829CB9
		cmp	esi, 1001h
		jnz	loc_7F829E0C
		xor	esi, esi
		jmp	loc_7F829E0C
; ---------------------------------------------------------------------------

loc_7F829CB9:				; CODE XREF: sub_7F829C7D+27j
		cmp	dword_7F838078,	0
		jz	short loc_7F829CC9
		mov	esi, 253h
		jmp	short loc_7F829CF9
; ---------------------------------------------------------------------------

loc_7F829CC9:				; CODE XREF: sub_7F829C7D+43j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		xor	esi, esi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	edx, [ebp+arg_0]
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edx

loc_7F829CF9:				; CODE XREF: sub_7F829C7D+4Aj
		test	esi, esi
		jnz	loc_7F829E0C
		mov	eax, [ebp+var_4]
		mov	edi, [eax]
		movzx	ecx, word ptr [edi]
		lea	ebx, [ecx+edi]
		cmp	dword ptr [ebx], 0FFFFFFFFh
		jz	loc_7F829DB1

loc_7F829D15:				; CODE XREF: sub_7F829C7D+12Ej
		mov	eax, [ebx]
		mov	[ebp+var_8], eax
		cmp	al, 90h
		jz	short loc_7F829D25
		mov	[ebp+var_8], 90h

loc_7F829D25:				; CODE XREF: sub_7F829C7D+9Fj
		push	0
		push	[ebp+var_8]
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F829D45
		mov	cx, [eax+10h]
		test	ch, 1
		jnz	short loc_7F829D75
		or	ch, 1
		mov	[eax+10h], cx
		jmp	short loc_7F829D75
; ---------------------------------------------------------------------------

loc_7F829D45:				; CODE XREF: sub_7F829C7D+B4j
		cmp	[ebp+arg_4], 0
		jz	short loc_7F829D75
		movzx	eax, word ptr [edi]
		sub	eax, ebx
		mov	ecx, 6
		add	eax, edi
		cdq
		idiv	ecx
		push	eax
		push	edi
		call	sub_7F816A42
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F829E0C
		mov	[ebp+var_C], 1
		add	ebx, 6

loc_7F829D75:				; CODE XREF: sub_7F829C7D+BDj
					; sub_7F829C7D+C6j ...
		cmp	dword_7F83809C,	0
		mov	eax, 1
		jbe	short loc_7F829DA1
		push	64h
		sub	edx, edx
		inc	dword_7F838098
		mov	eax, dword_7F838098
		imul	eax, 64h
		div	dword_7F83809C
		push	eax
		call	sub_7F82A9CA

loc_7F829DA1:				; CODE XREF: sub_7F829C7D+104j
		test	eax, eax
		jz	short loc_7F829DDC
		sub	ebx, 6
		cmp	dword ptr [ebx], 0FFFFFFFFh
		jnz	loc_7F829D15

loc_7F829DB1:				; CODE XREF: sub_7F829C7D+92j
		xor	ecx, ecx
		cmp	[ebp+var_C], ecx
		jz	short loc_7F829E0C
		mov	[ebp+var_8], 4C435380h
		cmp	dword_7F838078,	ecx
		jz	short loc_7F829DFB
		mov	eax, dword_7F838078
		cmp	[eax+254h], cx
		jz	short loc_7F829DE3
		call	sub_7F82A34F
		jmp	short loc_7F829DF1
; ---------------------------------------------------------------------------

loc_7F829DDC:				; CODE XREF: sub_7F829C7D+126j
		mov	esi, 101Eh
		jmp	short loc_7F829E0C
; ---------------------------------------------------------------------------

loc_7F829DE3:				; CODE XREF: sub_7F829C7D+156j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F829DF1:				; CODE XREF: sub_7F829C7D+15Dj
		mov	dword_7F838078,	0

loc_7F829DFB:				; CODE XREF: sub_7F829C7D+148j
		push	[ebp+var_4]
		lea	ecx, [ebp+var_8]
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F816DC7
		mov	esi, eax

loc_7F829E0C:				; CODE XREF: sub_7F829C7D+2Fj
					; sub_7F829C7D+37j ...
		cmp	dword_7F838078,	0
		jz	short loc_7F829E43
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F829E2B
		call	sub_7F82A34F
		jmp	short loc_7F829E39
; ---------------------------------------------------------------------------

loc_7F829E2B:				; CODE XREF: sub_7F829C7D+1A5j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F829E39:				; CODE XREF: sub_7F829C7D+1ACj
		mov	dword_7F838078,	0

loc_7F829E43:				; CODE XREF: sub_7F829C7D+196j
		cmp	[ebp+var_4], 0
		jz	short loc_7F829E51
		push	[ebp+var_4]
		call	sub_7F82F1E1

loc_7F829E51:				; CODE XREF: sub_7F829C7D+1CAj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F829C7D	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F829E5C	proc near		; CODE XREF: sub_7F829880+A6p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		xor	di, di
		push	ebp
		mov	ebx, [esp+10h+arg_0]
		mov	ebp, [esp+10h+arg_4]

loc_7F829E6D:				; CODE XREF: sub_7F829E5C+42j
		mov	eax, 0
		test	ebp, ebp
		jnz	short loc_7F829E7B

loc_7F829E76:				; CODE XREF: sub_7F829E5C+31j
		movzx	eax, di
		inc	di

loc_7F829E7B:				; CODE XREF: sub_7F829E5C+18j
		push	85h
		push	eax
		push	ebx
		call	sub_7F82D73C
		test	eax, eax
		jz	short loc_7F829EA2
		test	ebp, ebp
		jz	short loc_7F829E76
		push	0
		push	1
		push	eax
		push	ebx
		call	sub_7F82B9DE
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F829E6D
		jmp	short loc_7F829ED8
; ---------------------------------------------------------------------------

loc_7F829EA2:				; CODE XREF: sub_7F829E5C+2Dj
		xor	di, di

loc_7F829EA5:				; CODE XREF: sub_7F829E5C+7Aj
		mov	eax, 0
		test	ebp, ebp
		jnz	short loc_7F829EB3

loc_7F829EAE:				; CODE XREF: sub_7F829E5C+69j
		movzx	eax, di
		inc	di

loc_7F829EB3:				; CODE XREF: sub_7F829E5C+50j
		push	83h
		push	eax
		push	ebx
		call	sub_7F82D73C
		test	eax, eax
		jz	short loc_7F829ED8
		test	ebp, ebp
		jz	short loc_7F829EAE
		push	0
		push	1
		push	eax
		push	ebx
		call	sub_7F82B9DE
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F829EA5

loc_7F829ED8:				; CODE XREF: sub_7F829E5C+44j
					; sub_7F829E5C+65j
		mov	eax, esi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F829E5C	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F829EE1	proc near		; CODE XREF: sub_7F829880+B5p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		xor	di, di
		mov	esi, [esp+0Ch+arg_4]

loc_7F829EED:				; CODE XREF: sub_7F829EE1+43j
		mov	eax, 0
		test	esi, esi
		jnz	short loc_7F829EFB

loc_7F829EF6:				; CODE XREF: sub_7F829EE1+2Fj
		movzx	eax, di
		inc	di

loc_7F829EFB:				; CODE XREF: sub_7F829EE1+13j
		push	90h
		push	eax
		push	[esp+14h+arg_0]
		call	sub_7F82D73C
		test	eax, eax
		jz	short loc_7F829F26
		test	esi, esi
		jz	short loc_7F829EF6
		push	0
		push	1
		push	eax
		push	[esp+18h+arg_0]
		call	sub_7F82B9DE
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F829EED

loc_7F829F26:				; CODE XREF: sub_7F829EE1+2Bj
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F829EE1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F829F2E	proc near		; CODE XREF: sub_7F81039F+12Dp
					; sub_7F81039F+15Cp ...

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, 4
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		xor	edi, edi
		xor	ebx, ebx
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F81155C
		mov	[ebp+var_4], eax
		cmp	eax, ebx
		jnz	short loc_7F829F68
		call	sub_7F823FB2
		mov	[ebp+var_4], eax
		cmp	eax, ebx
		jnz	short loc_7F829F63
		mov	esi, 400h
		jmp	short loc_7F829F9C
; ---------------------------------------------------------------------------

loc_7F829F63:				; CODE XREF: sub_7F829F2E+2Cj
		mov	edi, 1

loc_7F829F68:				; CODE XREF: sub_7F829F2E+20j
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+var_4]
		call	sub_7F824021
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F829F86
		mov	esi, 400h
		jmp	short loc_7F829F9C
; ---------------------------------------------------------------------------

loc_7F829F86:				; CODE XREF: sub_7F829F2E+4Fj
		test	edi, edi
		jz	short loc_7F829F9C
		push	[ebp+var_4]
		push	0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F811597
		mov	esi, eax

loc_7F829F9C:				; CODE XREF: sub_7F829F2E+33j
					; sub_7F829F2E+56j ...
		test	esi, esi
		jz	short loc_7F829FC7
		test	ebx, ebx
		jz	short loc_7F829FAA
		push	ebx
		call	sub_7F8240DB

loc_7F829FAA:				; CODE XREF: sub_7F829F2E+74j
		test	edi, edi
		jz	short loc_7F829FC5
		push	[ebp+var_4]
		call	sub_7F823FB7
		push	0
		push	0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F811597

loc_7F829FC5:				; CODE XREF: sub_7F829F2E+7Ej
		xor	ebx, ebx

loc_7F829FC7:				; CODE XREF: sub_7F829F2E+70j
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F829F2E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F829FD2	proc near		; CODE XREF: sub_7F81039F+1A1p
					; sub_7F810567+22Ap ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	edi
		push	0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F81155C
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F82A011
		push	[ebp+arg_8]
		call	sub_7F8240DB
		push	edi
		call	sub_7F824015
		test	ax, ax
		jg	short loc_7F82A011
		push	edi
		call	sub_7F823FB7
		push	0
		push	0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F811597

loc_7F82A011:				; CODE XREF: sub_7F829FD2+15j
					; sub_7F829FD2+28j
		pop	edi
		pop	ebp
		retn	0Ch
sub_7F829FD2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82A016	proc near		; CODE XREF: sub_7F810955+228p
					; sub_7F810955+257p ...

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	ebx
		push	esi
		push	edi
		mov	edi, 1
		mov	esi, [ebp+arg_C]
		test	esi, esi
		jnz	short loc_7F82A02D
		mov	esi, offset unk_7F833D10

loc_7F82A02D:				; CODE XREF: sub_7F82A016+10j
		mov	ebx, [ebp+arg_4]
		push	0
		push	ebx
		mov	[esi], ebx
		push	[ebp+arg_0]
		call	sub_7F81155C
		test	eax, eax
		jz	short loc_7F82A04F
		push	0Eh
		push	esi
		push	[ebp+arg_8]
		push	eax
		call	sub_7F824187
		mov	edi, eax

loc_7F82A04F:				; CODE XREF: sub_7F82A016+29j
		test	edi, edi
		jz	short loc_7F82A0A1
		test	ebx, 0FFFFFF00h
		jz	short loc_7F82A07B
		movzx	eax, bl
		push	0
		push	eax
		push	[ebp+arg_0]
		call	sub_7F81155C
		test	eax, eax
		jz	short loc_7F82A07B
		push	0Eh
		push	esi
		push	[ebp+arg_8]
		push	eax
		call	sub_7F824187
		mov	edi, eax

loc_7F82A07B:				; CODE XREF: sub_7F82A016+43j
					; sub_7F82A016+55j
		test	edi, edi
		jz	short loc_7F82A0A1
		test	ebx, ebx
		jz	short loc_7F82A0A1
		push	0
		push	0
		push	[ebp+arg_0]
		call	sub_7F81155C
		test	eax, eax
		jz	short loc_7F82A0A1
		push	0Eh
		push	esi
		push	[ebp+arg_8]
		push	eax
		call	sub_7F824187
		mov	edi, eax

loc_7F82A0A1:				; CODE XREF: sub_7F82A016+3Bj
					; sub_7F82A016+67j ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_7F82A016	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F82A0AA(int, LPCSTR lpString)
sub_7F82A0AA	proc near		; CODE XREF: sub_7F812460+70p

arg_0		= dword	ptr  4
lpString	= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		mov	esi, [edi]
		lea	eax, [esi+38h]
		push	eax		; lpString
		call	ds:lstrlenA
		push	[esp+0Ch+lpString] ; lpString
		mov	ebx, eax
		call	ds:lstrlenA
		cmp	eax, ebx
		jbe	short loc_7F82A0E6
		push	0
		add	eax, 39h
		push	eax
		push	edi
		call	sub_7F82F1FF
		test	eax, eax
		jnz	short loc_7F82A0E4
		mov	eax, 400h
		jmp	short loc_7F82A103
; ---------------------------------------------------------------------------

loc_7F82A0E4:				; CODE XREF: sub_7F82A0AA+31j
		mov	esi, [edi]

loc_7F82A0E6:				; CODE XREF: sub_7F82A0AA+21j
		lea	eax, [esi+8]
		push	eax		; int
		push	0		; __int16
		push	[esp+14h+lpString] ; pSrc
		call	sub_7F820E0E
		test	eax, eax
		jnz	short loc_7F82A103
		push	1
		push	dword ptr [esi]
		push	esi
		call	sub_7F820F2F

loc_7F82A103:				; CODE XREF: sub_7F82A0AA+38j
					; sub_7F82A0AA+4Dj
		cmp	eax, 253h
		jz	short loc_7F82A111
		cmp	eax, 202h
		jnz	short loc_7F82A129

loc_7F82A111:				; CODE XREF: sub_7F82A0AA+5Ej
		mov	ecx, [esi]
		test	byte ptr [ecx+265h], 2
		jz	short loc_7F82A129
		mov	ecx, dword_7F838078
		or	byte ptr [ecx+265h], 1

loc_7F82A129:				; CODE XREF: sub_7F82A0AA+65j
					; sub_7F82A0AA+70j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F82A0AA	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F82A12F(int, LPCSTR lpString2)
sub_7F82A12F	proc near		; CODE XREF: sub_7F812460+8Bp

arg_0		= dword	ptr  4
lpString2	= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	ebx
		mov	ebx, [esp+4+lpString2]
		push	esi
		push	edi
		mov	esi, [eax]
		push	ebp
		xor	eax, eax
		cmp	[ebx], al
		jz	short loc_7F82A1B2
		cmp	[esi+10h], ax
		jl	short loc_7F82A152
		push	eax
		push	dword ptr [esi]
		push	esi
		call	sub_7F821055

loc_7F82A152:				; CODE XREF: sub_7F82A12F+18j
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_7F82A15F
		push	eax
		call	sub_7F815991

loc_7F82A15F:				; CODE XREF: sub_7F82A12F+28j
		lea	edi, [esi+8]
		lea	ebp, [esi+38h]
		push	ebx		; lpString2
		push	ebp		; lpString1
		mov	eax, [edi]
		mov	[esi+4], eax
		mov	cx, [esi+12h]
		mov	[esi+10h], cx
		call	ds:lstrcpyA
		push	ebp		; lpRootPathName
		call	sub_7F82A7AB
		test	eax, eax
		jz	short loc_7F82A19B
		mov	word ptr [esi+2Ch], 3
		mov	eax, [esi+24h]
		test	eax, eax
		jz	short loc_7F82A1D2
		push	1
		push	eax
		call	sub_7F8161D3
		jmp	short loc_7F82A1D2
; ---------------------------------------------------------------------------

loc_7F82A19B:				; CODE XREF: sub_7F82A12F+53j
		mov	word ptr [esi+2Ch], 2
		mov	eax, [esi+24h]
		test	eax, eax
		jz	short loc_7F82A1D2
		push	0
		push	eax
		call	sub_7F8161D3
		jmp	short loc_7F82A1D2
; ---------------------------------------------------------------------------

loc_7F82A1B2:				; CODE XREF: sub_7F82A12F+12j
		lea	edi, [esi+8]
		cmp	dword ptr [edi], 0
		jz	short loc_7F82A1D2
		cmp	word ptr [esi+12h], 0
		jl	short loc_7F82A1CB
		push	1
		push	dword ptr [esi]
		push	esi
		call	sub_7F821055

loc_7F82A1CB:				; CODE XREF: sub_7F82A12F+90j
		push	dword ptr [edi]
		call	sub_7F815991

loc_7F82A1D2:				; CODE XREF: sub_7F82A12F+60j
					; sub_7F82A12F+6Aj ...
		xor	eax, eax
		pop	ebp
		mov	dword ptr [edi], 0
		pop	edi
		mov	word ptr [esi+12h], 0FFFFh
		pop	esi
		pop	ebx
		retn	8
sub_7F82A12F	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82A1E7	proc near		; CODE XREF: sub_7F810955+275p
					; sub_7F811B7E+5Dp ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	esi, [esp+0Ch+arg_0]
		push	esi
		call	sub_7F812408
		mov	eax, [esi]
		mov	edi, [eax]
		cmp	[edi+214h], bx
		jbe	loc_7F82A2BE
		cmp	word ptr [edi+21Ch], 6
		jz	short loc_7F82A228
		push	1
		push	edi
		call	sub_7F82A8C1
		cmp	eax, 1
		sbb	ebx, ebx
		neg	ebx
		test	ebx, ebx
		jz	loc_7F82A2BE

loc_7F82A228:				; CODE XREF: sub_7F82A1E7+28j
		test	ebx, ebx
		jnz	short loc_7F82A246
		call	ds:GetTickCount
		mov	ecx, [edi+268h]
		lea	edx, [ecx+0EA60h]
		cmp	edx, eax
		jb	short loc_7F82A246
		cmp	eax, ecx
		jnb	short loc_7F82A2BE

loc_7F82A246:				; CODE XREF: sub_7F82A1E7+43j
					; sub_7F82A1E7+59j
		cmp	dword_7F838078,	0
		mov	eax, 253h
		jnz	short loc_7F82A283
		mov	eax, [esi]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	esi
		xor	eax, eax

loc_7F82A283:				; CODE XREF: sub_7F82A1E7+6Bj
		test	eax, eax
		jnz	short loc_7F82A2BE
		push	0
		push	1
		call	sub_7F813C77
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82A2A6
		call	sub_7F82A34F
		jmp	short loc_7F82A2B4
; ---------------------------------------------------------------------------

loc_7F82A2A6:				; CODE XREF: sub_7F82A1E7+B6j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82A2B4:				; CODE XREF: sub_7F82A1E7+BDj
		mov	dword_7F838078,	0

loc_7F82A2BE:				; CODE XREF: sub_7F82A1E7+1Aj
					; sub_7F82A1E7+3Bj ...
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_7F82A1E7	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82A2C4	proc near		; CODE XREF: sub_7F810955+26Dp

arg_0		= dword	ptr  4

		push	esi
		mov	eax, 253h
		cmp	dword_7F838078,	0
		jnz	short loc_7F82A306
		mov	ecx, [esp+4+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	esi, [edx]
		mov	dword_7F838078,	esi
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx
		xor	eax, eax

loc_7F82A306:				; CODE XREF: sub_7F82A2C4+Dj
		test	eax, eax
		jnz	short loc_7F82A345
		push	0
		push	1
		call	sub_7F813C77
		mov	esi, eax
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82A32B
		call	sub_7F82A34F
		jmp	short loc_7F82A339
; ---------------------------------------------------------------------------

loc_7F82A32B:				; CODE XREF: sub_7F82A2C4+5Ej
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82A339:				; CODE XREF: sub_7F82A2C4+65j
		mov	dword_7F838078,	0
		mov	eax, esi

loc_7F82A345:				; CODE XREF: sub_7F82A2C4+44j
		pop	esi
		retn	4
sub_7F82A2C4	endp

; [00000006 BYTES: COLLAPSED FUNCTION GetCurrentProcessId_0. PRESS CTRL-NUMPAD+	TO EXPAND]

; =============== S U B	R O U T	I N E =======================================


sub_7F82A34F	proc near		; CODE XREF: sub_7F810875+89p
					; sub_7F812460+14Fp ...

var_10		= byte ptr -10h
var_C		= word ptr -0Ch

		sub	esp, 10h
		mov	edx, dword_7F838078
		push	esi
		lea	ecx, [edx+264h]
		xor	esi, esi
		mov	dword_7F838078,	esi
		mov	ax, [ecx]
		test	al, 2
		jnz	short loc_7F82A392
		or	al, 2
		mov	[ecx], ax
		mov	eax, dword_7F83807C
		mov	cx, [edx+254h]
		lea	edx, [esp+14h+var_10]
		mov	[esp+14h+var_C], cx
		push	edx
		push	8
		push	esi
		push	eax
		call	sub_7F82A016

loc_7F82A392:				; CODE XREF: sub_7F82A34F+1Dj
		pop	esi
		add	esp, 10h
		retn
sub_7F82A34F	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82A397	proc near		; CODE XREF: sub_7F819627+22Cp
					; sub_7F825A83+13Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	ecx, [esp+arg_8]
		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	edi, [esp+8+arg_4]
		sub	eax, eax
		repe cmpsb
		jz	short loc_7F82A3B0
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh

loc_7F82A3B0:				; CODE XREF: sub_7F82A397+12j
		test	eax, eax
		jle	short loc_7F82A3BB
		mov	eax, 1
		jmp	short loc_7F82A3C4
; ---------------------------------------------------------------------------

loc_7F82A3BB:				; CODE XREF: sub_7F82A397+1Bj
		mov	eax, 0FFFFFFFFh
		jl	short loc_7F82A3C4
		xor	eax, eax

loc_7F82A3C4:				; CODE XREF: sub_7F82A397+22j
					; sub_7F82A397+29j
		pop	edi
		pop	esi
		retn	0Ch
sub_7F82A397	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82A3C9	proc near		; CODE XREF: sub_7F810181+61p
					; sub_7F81D22C+FAp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		mov	edx, [esp+arg_4]
		push	ebx
		mov	eax, edx
		dec	edx
		test	eax, eax
		jz	short loc_7F82A3E9
		mov	eax, [esp+4+arg_0]
		mov	bl, [esp+4+arg_8]

loc_7F82A3DD:				; CODE XREF: sub_7F82A3C9+1Ej
		cmp	[eax], bl
		jz	short loc_7F82A3EB
		inc	eax
		mov	ecx, edx
		dec	edx
		test	ecx, ecx
		jnz	short loc_7F82A3DD

loc_7F82A3E9:				; CODE XREF: sub_7F82A3C9+Aj
		xor	eax, eax

loc_7F82A3EB:				; CODE XREF: sub_7F82A3C9+16j
		pop	ebx
		retn	0Ch
sub_7F82A3C9	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82A3EF	proc near		; CODE XREF: sub_7F826D5C+276p
					; sub_7F826D5C+293p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= word ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_4]
		mov	eax, esi
		dec	esi
		test	eax, eax
		jz	short loc_7F82A413
		mov	cx, [esp+4+arg_8]
		mov	eax, [esp+4+arg_0]

loc_7F82A404:				; CODE XREF: sub_7F82A3EF+22j
		cmp	[eax], cx
		jz	short loc_7F82A415
		add	eax, 2
		mov	edx, esi
		dec	esi
		test	edx, edx
		jnz	short loc_7F82A404

loc_7F82A413:				; CODE XREF: sub_7F82A3EF+Aj
		xor	eax, eax

loc_7F82A415:				; CODE XREF: sub_7F82A3EF+18j
		pop	esi
		retn	0Ch
sub_7F82A3EF	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82A419	proc near		; CODE XREF: sub_7F81CE7B+119p
					; sub_7F826D5C+8Fp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_4]
		mov	eax, esi
		dec	esi
		test	eax, eax
		jz	short loc_7F82A43B
		mov	eax, [esp+4+arg_0]
		mov	ecx, [esp+4+arg_8]

loc_7F82A42D:				; CODE XREF: sub_7F82A419+20j
		cmp	[eax], ecx
		jz	short loc_7F82A43D
		add	eax, 4
		mov	edx, esi
		dec	esi
		test	edx, edx
		jnz	short loc_7F82A42D

loc_7F82A43B:				; CODE XREF: sub_7F82A419+Aj
		xor	eax, eax

loc_7F82A43D:				; CODE XREF: sub_7F82A419+16j
		pop	esi
		retn	0Ch
sub_7F82A419	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82A441	proc near		; DATA XREF: sub_7F81217E+96o

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		mov	eax, [esi]
		mov	edi, [eax+4]
		call	sub_7F8168ED
		mov	ebx, eax
		call	sub_7F816000
		test	eax, eax
		jnz	loc_7F82A509
		mov	ecx, [esi]
		lea	eax, [ecx+2Ch]
		test	byte ptr [eax],	1
		jnz	short loc_7F82A47A
		push	0
		push	dword ptr [ecx+24h]
		call	sub_7F8161D3
		jmp	loc_7F82A509
; ---------------------------------------------------------------------------

loc_7F82A47A:				; CODE XREF: sub_7F82A441+28j
		cmp	ebx, dword_7F83676C
		jb	loc_7F82A509
		test	edi, edi
		jz	short loc_7F82A509
		cmp	dword_7F838078,	0
		jz	short loc_7F82A49A
		mov	eax, 253h
		jmp	short loc_7F82A4C1
; ---------------------------------------------------------------------------

loc_7F82A49A:				; CODE XREF: sub_7F82A441+50j
		mov	dword_7F83807C,	ecx
		mov	ax, [eax]
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	esi
		xor	eax, eax

loc_7F82A4C1:				; CODE XREF: sub_7F82A441+57j
		test	eax, eax
		jnz	short loc_7F82A509
		push	0
		push	1
		call	sub_7F813C77
		test	eax, eax
		jnz	short loc_7F82A4D9
		push	0
		call	sub_7F82A514

loc_7F82A4D9:				; CODE XREF: sub_7F82A441+8Fj
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82A4EF
		call	sub_7F82A34F
		jmp	short loc_7F82A4FD
; ---------------------------------------------------------------------------

loc_7F82A4EF:				; CODE XREF: sub_7F82A441+A5j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82A4FD:				; CODE XREF: sub_7F82A441+ACj
		mov	dword_7F838078,	0
		jmp	short loc_7F82A50E
; ---------------------------------------------------------------------------

loc_7F82A509:				; CODE XREF: sub_7F82A441+1Aj
					; sub_7F82A441+34j ...
		mov	eax, 1

loc_7F82A50E:				; CODE XREF: sub_7F82A441+C6j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F82A441	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82A514	proc near		; CODE XREF: sub_7F812653+165p
					; sub_7F8127E7+D2p ...

arg_0		= dword	ptr  4

		xor	ecx, ecx
		cmp	dword_7F836C60,	ecx
		jnz	short locret_7F82A585
		mov	eax, dword_7F838078
		mov	eax, [eax+218h]
		test	eax, eax
		jz	short loc_7F82A53A
		push	ecx
		push	ecx
		push	8000000h
		push	eax
		call	sub_7F824187

loc_7F82A53A:				; CODE XREF: sub_7F82A514+17j
		call	ds:GetTickCount
		mov	ecx, dword_7F838078
		mov	[ecx+26Ch], eax
		mov	ecx, dword_7F838078
		or	byte ptr [ecx+265h], 2
		mov	eax, dword_7F83807C
		xor	ecx, ecx
		cmp	[esp+arg_0], ecx
		mov	edx, [eax]
		mov	[edx+4], ecx
		mov	dword_7F838080,	ecx
		jz	short locret_7F82A585
		mov	eax, dword_7F838078
		add	eax, 254h
		cmp	[eax], cx
		jnz	short locret_7F82A585
		mov	word ptr [eax],	7

locret_7F82A585:			; CODE XREF: sub_7F82A514+8j
					; sub_7F82A514+5Bj ...
		retn	4
sub_7F82A514	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82A588	proc near		; CODE XREF: sub_7F812460+13Bp
					; sub_7F812653+22p ...

Buffer		= byte ptr -200h
var_1F8		= dword	ptr -1F8h
var_1F2		= word ptr -1F2h
var_1F0		= byte ptr -1F0h
var_E4		= dword	ptr -0E4h

		push	ebp
		mov	eax, dword_7F838078
		mov	ebp, esp
		sub	esp, 200h
		push	esi
		push	edi
		xor	esi, esi
		test	byte ptr [eax+265h], 1
		jz	short loc_7F82A5AD
		mov	eax, 611h
		jmp	loc_7F82A7A5
; ---------------------------------------------------------------------------

loc_7F82A5AD:				; CODE XREF: sub_7F82A588+19j
		call	ds:GetTickCount
		mov	ecx, dword_7F838078
		mov	edi, eax
		mov	edx, 1F4h
		mov	ecx, [ecx+26Ch]
		sub	edi, ecx
		cmp	edi, edx
		ja	short loc_7F82A5DE
		cmp	ecx, eax
		jbe	short loc_7F82A5D4
		cmp	eax, edx
		ja	short loc_7F82A5DE

loc_7F82A5D4:				; CODE XREF: sub_7F82A588+46j
		mov	eax, 611h
		jmp	loc_7F82A7A5
; ---------------------------------------------------------------------------

loc_7F82A5DE:				; CODE XREF: sub_7F82A588+42j
					; sub_7F82A588+4Aj
		mov	eax, dword_7F83807C
		mov	edi, [eax]
		cmp	dword ptr [edi+18h], 0
		jz	short loc_7F82A610
		add	edi, 38h
		push	edi		; lpString
		call	ds:lstrlenA
		inc	eax
		mov	ecx, dword_7F838078
		push	eax
		push	edi
		push	800000h
		push	dword ptr [ecx+218h]
		call	sub_7F824187
		mov	esi, eax

loc_7F82A610:				; CODE XREF: sub_7F82A588+61j
		test	esi, esi
		jnz	short loc_7F82A63A
		mov	eax, dword_7F838078
		test	byte ptr [eax+265h], 1
		jz	short loc_7F82A632
		add	eax, 254h
		cmp	word ptr [eax],	0
		jnz	short loc_7F82A632
		mov	word ptr [eax],	7

loc_7F82A632:				; CODE XREF: sub_7F82A588+98j
					; sub_7F82A588+A3j
		test	esi, esi
		jz	loc_7F82A70B

loc_7F82A63A:				; CODE XREF: sub_7F82A588+8Aj
		mov	eax, dword_7F83807C
		mov	ecx, [eax]
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		mov	edi, [ecx+8]
		push	edi		; int
		call	sub_7F812BEA
		test	eax, eax
		jz	short loc_7F82A65C
		xor	esi, esi
		jmp	loc_7F82A6F7
; ---------------------------------------------------------------------------

loc_7F82A65C:				; CODE XREF: sub_7F82A588+CBj
		mov	eax, dword_7F838078
		mov	ecx, [ebp+var_1F8]
		cmp	[eax+8], ecx
		jnz	short loc_7F82A6E9
		mov	ecx, [ebp+var_E4]
		cmp	[eax+11Ch], ecx
		jnz	short loc_7F82A6E9
		mov	ax, [eax+0Eh]
		cmp	[ebp+var_1F2], ax
		jnz	short loc_7F82A6E9
		push	40h
		xor	al, 1
		movsx	eax, ax
		shl	eax, 6
		add	eax, dword_7F838078
		add	eax, 10h
		push	eax
		mov	ax, [ebp+var_1F2]
		xor	al, 1
		movsx	eax, ax
		shl	eax, 6
		lea	ecx, [ebp+eax+var_1F0]
		push	ecx
		call	sub_7F81AF66
		test	eax, eax
		jz	short loc_7F82A6E9
		mov	eax, dword_7F838078
		push	1
		mov	dword_7F838080,	edi
		and	word ptr [eax+264h], 0FDFFh
		push	dword_7F83807C
		call	sub_7F82615D
		push	dword_7F83807C
		call	sub_7F812408
		jmp	short loc_7F82A70B
; ---------------------------------------------------------------------------

loc_7F82A6E9:				; CODE XREF: sub_7F82A588+E2j
					; sub_7F82A588+F0j ...
		xor	esi, esi
		mov	eax, dword_7F838078
		or	byte ptr [eax+265h], 1

loc_7F82A6F7:				; CODE XREF: sub_7F82A588+CFj
		mov	eax, dword_7F838078
		add	eax, 254h
		cmp	[eax], si
		jnz	short loc_7F82A70B
		mov	word ptr [eax],	7

loc_7F82A70B:				; CODE XREF: sub_7F82A588+ACj
					; sub_7F82A588+15Fj ...
		call	ds:GetTickCount
		mov	ecx, dword_7F838078
		mov	[ecx+26Ch], eax
		mov	eax, dword_7F83807C
		mov	edi, [eax]
		cmp	dword ptr [edi+18h], 0
		jz	short loc_7F82A764
		mov	eax, 1
		test	esi, esi
		jz	short loc_7F82A73E
		lea	eax, [edi+38h]
		push	eax		; lpString
		call	ds:lstrlenA
		inc	eax

loc_7F82A73E:				; CODE XREF: sub_7F82A588+1A9j
		test	esi, esi
		jz	short loc_7F82A747
		add	edi, 38h
		jmp	short loc_7F82A74C
; ---------------------------------------------------------------------------

loc_7F82A747:				; CODE XREF: sub_7F82A588+1B8j
		mov	edi, offset Default

loc_7F82A74C:				; CODE XREF: sub_7F82A588+1BDj
		push	eax
		mov	ecx, dword_7F838078
		push	edi
		push	1000000h
		push	dword ptr [ecx+218h]
		call	sub_7F824187

loc_7F82A764:				; CODE XREF: sub_7F82A588+1A0j
		test	esi, esi
		jz	short loc_7F82A77B
		mov	eax, dword_7F838078
		mov	edx, [eax+260h]
		mov	[eax+25Ch], edx
		jmp	short loc_7F82A78B
; ---------------------------------------------------------------------------

loc_7F82A77B:				; CODE XREF: sub_7F82A588+1DEj
		mov	ecx, dword_7F838078
		mov	dword ptr [ecx+25Ch], 0

loc_7F82A78B:				; CODE XREF: sub_7F82A588+1F1j
		mov	ecx, dword_7F838078
		cmp	esi, 1
		sbb	eax, eax
		mov	dword ptr [ecx+260h], 0
		and	eax, 611h

loc_7F82A7A5:				; CODE XREF: sub_7F82A588+20j
					; sub_7F82A588+51j
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn
sub_7F82A588	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F82A7AB(LPCSTR lpRootPathName)
sub_7F82A7AB	proc near		; CODE XREF: sub_7F8207A6+A5p
					; sub_7F82A12F+4Cp

lpRootPathName	= dword	ptr  4

		push	[esp+lpRootPathName] ; lpRootPathName
		call	ds:GetDriveTypeA
		sub	eax, 4
		cmp	eax, 1
		sbb	eax, eax
		neg	eax
		retn	4
sub_7F82A7AB	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82A7C2	proc near		; CODE XREF: sub_7F82159B+45p

arg_0		= dword	ptr  4

		push	esi
		push	1
		mov	esi, [esp+8+arg_0]
		push	offset Default
		push	10000000h
		push	dword ptr [esi+218h]
		call	sub_7F824187
		mov	ax, [esi+264h]
		pop	esi
		and	ax, 200h
		cmp	ax, 1
		sbb	eax, eax
		neg	eax
		retn	4
sub_7F82A7C2	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82A7F5	proc near		; CODE XREF: sub_7F8129CD+63p
					; sub_7F8129CD+176p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_7F815DE7
		retn	4
sub_7F82A7F5	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS CTRL-NUMPAD+ TO EXPAND]

; =============== S U B	R O U T	I N E =======================================


sub_7F82A802	proc near		; DATA XREF: sub_7F81217E+C0o

arg_0		= dword	ptr  4

		call	sub_7F816000
		test	eax, eax
		jnz	loc_7F82A8B9
		cmp	dword_7F838078,	0
		jz	short loc_7F82A823
		mov	eax, 253h
		mov	ecx, [esp+arg_0]
		jmp	short loc_7F82A855
; ---------------------------------------------------------------------------

loc_7F82A823:				; CODE XREF: sub_7F82A802+14j
		mov	ecx, [esp+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	eax, [edx]
		mov	dword_7F838078,	eax
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx
		xor	eax, eax

loc_7F82A855:				; CODE XREF: sub_7F82A802+1Fj
		test	eax, eax
		jnz	short loc_7F82A8B9
		mov	eax, dword_7F838078
		cmp	word ptr [eax+21Ch], 6
		jnz	short loc_7F82A87F
		call	sub_7F8168ED
		cmp	eax, 0C8h
		jb	short loc_7F82A88B
		push	0
		push	0
		call	sub_7F813C77
		jmp	short loc_7F82A88B
; ---------------------------------------------------------------------------

loc_7F82A87F:				; CODE XREF: sub_7F82A802+64j
		push	0
		mov	eax, [ecx]
		push	dword ptr [eax+28h]
		call	sub_7F8161D3

loc_7F82A88B:				; CODE XREF: sub_7F82A802+70j
					; sub_7F82A802+7Bj
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82A8A1
		call	sub_7F82A34F
		jmp	short loc_7F82A8AF
; ---------------------------------------------------------------------------

loc_7F82A8A1:				; CODE XREF: sub_7F82A802+96j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82A8AF:				; CODE XREF: sub_7F82A802+9Dj
		mov	dword_7F838078,	0

loc_7F82A8B9:				; CODE XREF: sub_7F82A802+7j
					; sub_7F82A802+55j
		mov	eax, 1
		retn	8
sub_7F82A802	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82A8C1	proc near		; CODE XREF: sub_7F81F44F+146p
					; sub_7F81F5A7+CEp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	ebx, 1
		mov	esi, [esp+0Ch+arg_0]
		lea	edi, [esi+21Ch]
		cmp	word ptr [edi],	6
		jz	short loc_7F82A934
		xor	eax, eax
		cmp	[esp+0Ch+arg_4], eax
		jz	short loc_7F82A903
		push	eax
		push	eax
		push	20000000h
		push	dword ptr [esi+218h]
		call	sub_7F824187
		mov	ax, [edi]
		sub	ax, 6
		cmp	ax, bx
		sbb	ebx, ebx
		neg	ebx
		jmp	short loc_7F82A924
; ---------------------------------------------------------------------------

loc_7F82A903:				; CODE XREF: sub_7F82A8C1+1Ej
		mov	eax, dword_7F838078
		mov	ax, [eax+21Ch]
		mov	word ptr [esi+23Ch], 0
		mov	[esi+23Ah], ax
		mov	word ptr [edi],	6

loc_7F82A924:				; CODE XREF: sub_7F82A8C1+40j
		test	ebx, ebx
		jz	short loc_7F82A934
		call	ds:GetTickCount
		mov	[esi+268h], eax

loc_7F82A934:				; CODE XREF: sub_7F82A8C1+16j
					; sub_7F82A8C1+65j
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F82A8C1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82A93C	proc near		; CODE XREF: sub_7F81D598+24p
					; sub_7F81F0AC+1Bp ...

var_10		= byte ptr -10h
var_C		= word ptr -0Ch
var_A		= word ptr -0Ah
var_8		= word ptr -8
var_6		= word ptr -6
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= word ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		cmp	word_7F838088, 0
		push	esi
		jnz	short loc_7F82A9C1
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_4]
		xor	esi, esi
		mov	dword_7F838090,	eax
		mov	ax, [ebp+arg_8]
		mov	dword_7F83808C,	ecx
		mov	[ebp+var_A], 1
		mov	[ebp+var_6], 64h
		mov	word_7F838088, ax
		push	0Eh
		mov	word_7F838094, si
		lea	ecx, [ebp+var_10]
		mov	[ebp+var_C], ax
		push	ecx
		mov	[ebp+var_8], si
		push	4
		mov	eax, dword_7F836764
		push	eax
		call	sub_7F824187
		test	eax, eax
		jz	short loc_7F82A9C1
		mov	ecx, dword_7F838090
		cmp	ecx, esi
		jz	short loc_7F82A9BA
		lea	eax, [ebp+var_10]
		push	eax
		push	4
		push	dword_7F83808C
		push	ecx
		call	sub_7F82A016
		jmp	short loc_7F82A9C3
; ---------------------------------------------------------------------------

loc_7F82A9BA:				; CODE XREF: sub_7F82A93C+68j
		mov	eax, 1
		jmp	short loc_7F82A9C3
; ---------------------------------------------------------------------------

loc_7F82A9C1:				; CODE XREF: sub_7F82A93C+Fj
					; sub_7F82A93C+5Ej
		xor	eax, eax

loc_7F82A9C3:				; CODE XREF: sub_7F82A93C+7Cj
					; sub_7F82A93C+83j
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F82A93C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82A9CA	proc near		; CODE XREF: sub_7F81D598+2DAp
					; sub_7F81F0AC+F8p ...

var_10		= byte ptr -10h
var_C		= word ptr -0Ch
var_A		= word ptr -0Ah
var_8		= word ptr -8
var_6		= word ptr -6
arg_0		= word ptr  8
arg_4		= word ptr  0Ch

		push	ebp
		mov	cx, [esp+arg_4]
		mov	ebp, esp
		mov	ax, [ebp+arg_0]
		sub	esp, 10h
		cmp	cx, ax
		push	esi
		jge	short loc_7F82A9E2
		mov	ax, cx

loc_7F82A9E2:				; CODE XREF: sub_7F82A9CA+13j
		cmp	word_7F838088, 0
		jnz	short loc_7F82A9F3
		xor	eax, eax
		jmp	loc_7F82AB04
; ---------------------------------------------------------------------------

loc_7F82A9F3:				; CODE XREF: sub_7F82A9CA+20j
		movsx	esi, cx
		movsx	eax, ax
		movsx	ecx, word_7F838094
		inc	ecx
		imul	eax, 64h
		imul	ecx, esi
		cmp	ecx, eax
		jle	short loc_7F82AA15
		mov	eax, 1
		jmp	loc_7F82AB04
; ---------------------------------------------------------------------------

loc_7F82AA15:				; CODE XREF: sub_7F82A9CA+3Fj
		cdq
		mov	[ebp+var_A], 2
		idiv	esi
		mov	[ebp+var_6], 64h
		mov	word_7F838094, ax
		mov	esi, 0
		cmp	dword_7F838078,	0
		mov	ax, word_7F838088
		mov	cx, word_7F838094
		mov	[ebp+var_C], ax
		mov	[ebp+var_8], cx
		jz	short loc_7F82AA53
		mov	esi, dword_7F83807C

loc_7F82AA53:				; CODE XREF: sub_7F82A9CA+81j
		test	esi, esi
		jz	short loc_7F82AA85
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82AA6D
		call	sub_7F82A34F
		jmp	short loc_7F82AA7B
; ---------------------------------------------------------------------------

loc_7F82AA6D:				; CODE XREF: sub_7F82A9CA+9Aj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82AA7B:				; CODE XREF: sub_7F82A9CA+A1j
		mov	dword_7F838078,	0

loc_7F82AA85:				; CODE XREF: sub_7F82A9CA+8Bj
		push	0Eh
		lea	eax, [ebp+var_10]
		push	eax
		push	4
		push	dword_7F836764
		call	sub_7F824187
		test	eax, eax
		jz	short loc_7F82AAC5
		cmp	dword_7F838090,	0
		jz	short loc_7F82AABE
		lea	eax, [ebp+var_10]
		push	eax
		push	4
		push	dword_7F83808C
		push	dword_7F838090
		call	sub_7F82A016
		jmp	short loc_7F82AAC7
; ---------------------------------------------------------------------------

loc_7F82AABE:				; CODE XREF: sub_7F82A9CA+D9j
		mov	eax, 1
		jmp	short loc_7F82AAC7
; ---------------------------------------------------------------------------

loc_7F82AAC5:				; CODE XREF: sub_7F82A9CA+D0j
		xor	eax, eax

loc_7F82AAC7:				; CODE XREF: sub_7F82A9CA+F2j
					; sub_7F82A9CA+F9j
		test	esi, esi
		jz	short loc_7F82AB04
		cmp	dword_7F838078,	0
		jnz	short loc_7F82AB04
		mov	ecx, [esi]
		mov	dword_7F83807C,	ecx
		mov	cx, [ecx+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, cx
		mov	ecx, [edx]
		mov	dword_7F838078,	ecx
		mov	ecx, [edx+4]
		mov	dword_7F838080,	ecx
		mov	dword_7F83807C,	esi

loc_7F82AB04:				; CODE XREF: sub_7F82A9CA+24j
					; sub_7F82A9CA+46j ...
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F82A9CA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82AB0B	proc near		; CODE XREF: sub_7F81D598+368p
					; sub_7F81F0AC+14Cp ...

var_10		= byte ptr -10h
var_C		= word ptr -0Ch
var_A		= word ptr -0Ah
var_8		= word ptr -8
var_6		= word ptr -6

		mov	ax, word_7F838088
		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		test	ax, ax
		jz	short loc_7F82AB72
		mov	[ebp+var_C], ax
		push	0Eh
		mov	[ebp+var_A], 3
		mov	[ebp+var_8], 64h
		mov	[ebp+var_6], 64h
		lea	eax, [ebp+var_10]
		push	eax
		push	4
		push	dword_7F836764
		call	sub_7F824187
		test	eax, eax
		jz	short loc_7F82AB65
		mov	ecx, dword_7F838090
		test	ecx, ecx
		jz	short loc_7F82AB65
		lea	eax, [ebp+var_10]
		push	eax
		push	4
		push	dword_7F83808C
		push	ecx
		call	sub_7F82A016

loc_7F82AB65:				; CODE XREF: sub_7F82AB0B+3Cj
					; sub_7F82AB0B+46j
		xor	eax, eax
		mov	word_7F838088, ax
		mov	dword_7F83809C,	eax

loc_7F82AB72:				; CODE XREF: sub_7F82AB0B+Fj
		mov	esp, ebp
		pop	ebp
		retn
sub_7F82AB0B	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F82AB76(LPSTR lpTempFileName)
sub_7F82AB76	proc near		; CODE XREF: sub_7F823D4A+7Ep

Buffer		= byte ptr -104h
lpTempFileName	= dword	ptr  4

		sub	esp, 104h
		lea	eax, [esp+104h+Buffer]
		push	eax		; lpBuffer
		push	104h		; nBufferLength
		call	ds:GetTempPathA
		push	[esp+104h+lpTempFileName] ; lpTempFileName
		push	0		; uUnique
		lea	ecx, [esp+10Ch+Buffer]
		push	offset PrefixString ; "msm"
		push	ecx		; lpPathName
		call	ds:GetTempFileNameA
		cmp	eax, 1
		sbb	eax, eax
		add	esp, 104h
		inc	eax
		retn	4
sub_7F82AB76	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82ABB4	proc near		; CODE XREF: sub_7F82AC0C+2Bp

arg_0		= word ptr  4
arg_4		= word ptr  8
arg_8		= word ptr  0Ch

		mov	dword_7F838184,	1
		mov	dword_7F83817C,	17h
		mov	dword_7F838180,	36h
		movzx	ecx, [esp+arg_4]
		movzx	eax, [esp+arg_8]
		movzx	edx, [esp+arg_0]
		shl	ecx, 8
		shl	eax, 10h
		xor	ecx, eax
		mov	eax, offset unk_7F8380A4
		xor	ecx, edx
		mov	dword_7F8380A0,	ecx

loc_7F82ABF6:				; CODE XREF: sub_7F82ABB4+53j
		mov	ecx, [eax-4]
		imul	ecx, 1Fh
		inc	ecx
		mov	[eax], ecx
		add	eax, 4
		cmp	eax, offset dword_7F83817C
		jb	short loc_7F82ABF6
		retn	0Ch
sub_7F82ABB4	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82AC0C	proc near		; CODE XREF: sub_7F8142AB:loc_7F8142B7p
					; sub_7F81698C:loc_7F8169A2p ...
		cmp	dword_7F838184,	0
		jnz	short loc_7F82AC3C
		call	ds:GetTickCount
		mov	dx, ax
		mov	ecx, eax
		shr	ecx, 14h
		xor	cx, dx
		push	ecx
		mov	ecx, eax
		shr	ecx, 0Ch
		shr	eax, 4
		xor	cx, dx
		xor	ax, dx
		push	ecx
		push	eax
		call	sub_7F82ABB4

loc_7F82AC3C:				; CODE XREF: sub_7F82AC0C+7j
		mov	eax, dword_7F838180
		mov	edx, dword_7F83817C
		lea	ecx, dword_7F8380A0[eax*4]
		mov	eax, dword_7F8380A0[edx*4]
		add	eax, [ecx]
		mov	[ecx], eax
		dec	dword_7F83817C
		jnz	short loc_7F82AC6B
		mov	dword_7F83817C,	36h

loc_7F82AC6B:				; CODE XREF: sub_7F82AC0C+53j
		dec	dword_7F838180
		jnz	short locret_7F82AC7D
		mov	dword_7F838180,	36h

locret_7F82AC7D:			; CODE XREF: sub_7F82AC0C+65j
		retn
sub_7F82AC0C	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82AC7E	proc near		; CODE XREF: sub_7F81DCCA+A2p
					; sub_7F81DCCA+B3p ...

arg_0		= dword	ptr  4

		mov	ecx, offset unk_7F838FA8
		mov	eax, [esp+arg_0]

loc_7F82AC87:				; CODE XREF: sub_7F82AC7E+15j
		cmp	[ecx], eax
		jg	short loc_7F82AC90
		cmp	[ecx+4], eax
		jg	short loc_7F82AC95

loc_7F82AC90:				; CODE XREF: sub_7F82AC7E+Bj
		add	ecx, 0Ch
		jmp	short loc_7F82AC87
; ---------------------------------------------------------------------------

loc_7F82AC95:				; CODE XREF: sub_7F82AC7E+10j
		mov	edx, [ecx+8]
		sub	edx, [ecx]
		add	edx, eax
		mov	eax, dword_7F838E30[edx*4]
		retn	4
sub_7F82AC7E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F82ACA6(HWND hWnd,	UINT Msg, WPARAM wParam, LPARAM	lParam)
sub_7F82ACA6	proc near		; CODE XREF: sub_7F82AF09+68p
					; DATA XREF: sub_7F8171B7+3Do

hWnd		= dword	ptr  8
Msg		= dword	ptr  0Ch
wParam		= dword	ptr  10h
lParam		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		cmp	[ebp+Msg], 400h
		jz	short loc_7F82ACCB
		push	[ebp+lParam]	; lParam
		push	[ebp+wParam]	; wParam
		push	[ebp+Msg]	; Msg
		push	[ebp+hWnd]	; hWnd
		call	ds:DefWindowProcA
		jmp	short loc_7F82AD18
; ---------------------------------------------------------------------------

loc_7F82ACCB:				; CODE XREF: sub_7F82ACA6+Fj
		mov	bx, word ptr [ebp+wParam]
		mov	edi, [ebp+lParam]
		test	bl, 1
		jz	short loc_7F82ACEB
		lea	eax, [edi+0Ch]
		push	eax
		push	dword ptr [edi]
		push	dword ptr [edi+4]
		call	sub_7F82AD1F
		cmp	eax, 1
		sbb	esi, esi
		inc	esi

loc_7F82ACEB:				; CODE XREF: sub_7F82ACA6+2Fj
		test	bh, 80h
		jz	short loc_7F82AD16
		cmp	dword ptr [edi], 0
		jnz	short loc_7F82AD16
		movzx	eax, word ptr [edi+0Ch]
		cmp	eax, 1
		jnz	short loc_7F82AD16
		call	sub_7F8241AA
		push	eax
		call	sub_7F82EC63
		test	ax, ax
		jl	short loc_7F82AD16
		push	dword ptr [edi+4]
		call	sub_7F82EA8A

loc_7F82AD16:				; CODE XREF: sub_7F82ACA6+48j
					; sub_7F82ACA6+4Dj ...
		mov	eax, esi

loc_7F82AD18:				; CODE XREF: sub_7F82ACA6+23j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_7F82ACA6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82AD1F	proc near		; CODE XREF: sub_7F82ACA6+3Ap

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		push	ebx
		push	esi
		xor	ebx, ebx
		push	edi
		mov	edx, [eax]
		mov	si, [edx]
		mov	edi, dword_7F839018
		dec	si
		js	loc_7F82ADE8

loc_7F82AD3E:				; CODE XREF: sub_7F82AD1F+C3j
		test	ebx, ebx
		jnz	loc_7F82ADE8
		movsx	ecx, si
		mov	eax, [edx+ecx*4+8]
		mov	dword_7F839018,	eax
		mov	ecx, [eax]
		test	byte ptr [ecx+0Ch], 1
		jz	loc_7F82ADE0
		mov	eax, [ebp+arg_4]
		test	[ecx+10h], eax
		jnz	short loc_7F82AD6A
		test	eax, eax
		jnz	short loc_7F82ADE0

loc_7F82AD6A:				; CODE XREF: sub_7F82AD1F+45j
		test	byte ptr [ecx+0Ch], 2
		jz	short loc_7F82AD77
		cmp	word ptr [ecx+0Eh], 0
		jg	short loc_7F82ADE0

loc_7F82AD77:				; CODE XREF: sub_7F82AD1F+4Fj
		push	[ebp+arg_8]
		inc	word ptr [ecx+0Eh]
		push	[ebp+arg_4]
		push	dword ptr [ecx]
		call	dword ptr [ecx+4]
		mov	ebx, eax
		mov	eax, dword_7F839018
		mov	ecx, [eax]
		mov	eax, [ebp+arg_0]
		dec	word ptr [ecx+0Eh]
		mov	edx, [eax]
		mov	eax, dword_7F839018
		movsx	ecx, si
		cmp	[edx+ecx*4+8], eax
		jz	short loc_7F82ADB7

loc_7F82ADA6:				; CODE XREF: sub_7F82AD1F+96j
		dec	si
		mov	ecx, dword_7F839018
		movsx	eax, si
		cmp	[edx+eax*4+8], ecx
		jnz	short loc_7F82ADA6

loc_7F82ADB7:				; CODE XREF: sub_7F82AD1F+85j
		mov	eax, dword_7F839018
		mov	eax, [eax]
		cmp	word ptr [eax+0Eh], 0
		jg	short loc_7F82ADE0
		test	byte ptr [eax+0Dh], 80h
		jz	short loc_7F82ADE0
		mov	eax, dword_7F839018
		push	eax
		call	sub_7F8240DB
		test	si, si
		jz	short loc_7F82ADE8
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]

loc_7F82ADE0:				; CODE XREF: sub_7F82AD1F+39j
					; sub_7F82AD1F+49j ...
		dec	si
		jns	loc_7F82AD3E

loc_7F82ADE8:				; CODE XREF: sub_7F82AD1F+19j
					; sub_7F82AD1F+21j ...
		sub	ebx, 2
		mov	dword_7F839018,	edi
		pop	edi
		cmp	ebx, 1
		sbb	eax, eax
		pop	esi
		inc	eax
		pop	ebx
		pop	ebp
		retn	0Ch
sub_7F82AD1F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82ADFE	proc near		; CODE XREF: sub_7F823FB7+3Cp
					; sub_7F824187+12p

var_10		= dword	ptr -10h
lParam		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, dword_7F839014
		push	ebx
		push	esi
		mov	ebx, [ebp+arg_0]
		push	edi
		xor	esi, esi
		mov	edi, dword_7F83901C
		mov	[ebp+var_10], eax
		mov	[ebp+var_8], 1
		mov	dword_7F839014,	ebx
		call	ds:__imp_GetCurrentProcessId
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		mov	dword_7F83901C,	eax
		call	sub_7F82EBDD
		mov	[ebp+lParam], eax
		cmp	eax, esi
		jnz	short loc_7F82AE51
		mov	esi, 400h
		jmp	loc_7F82AED8
; ---------------------------------------------------------------------------

loc_7F82AE51:				; CODE XREF: sub_7F82ADFE+47j
		mov	ecx, [ebx]
		inc	word ptr [ecx+6]
		mov	ax, [ecx+2]
		dec	ax
		mov	[ebp+var_2], ax
		js	short loc_7F82AEBA

loc_7F82AE63:				; CODE XREF: sub_7F82ADFE+BAj
		cmp	[ebp+var_8], 1
		jnz	short loc_7F82AEBA
		movsx	eax, [ebp+var_2]
		movzx	edx, [ebp+arg_4]
		shl	eax, 4
		test	edx, 0FFFFFFFEh
		lea	ecx, [eax+ecx+0Ch]
		jnz	short loc_7F82AE88
		mov	eax, [ebp+arg_8]
		test	[ecx+8], eax
		jz	short loc_7F82AE9A

loc_7F82AE88:				; CODE XREF: sub_7F82ADFE+80j
		push	[ebp+lParam]	; lParam
		push	dword ptr [ebp+arg_4] ;	__int16
		push	dword ptr [ebp+var_2] ;	__int16
		push	ebx		; int
		call	sub_7F82AF09
		mov	[ebp+var_8], eax

loc_7F82AE9A:				; CODE XREF: sub_7F82ADFE+88j
		cmp	[ebp+var_8], 3
		mov	ecx, [ebx]
		jnz	short loc_7F82AEB4
		push	dword ptr [ebp+var_2]
		push	ebx
		call	sub_7F82E9F9
		mov	[ebp+var_8], 1
		mov	ecx, [ebx]

loc_7F82AEB4:				; CODE XREF: sub_7F82ADFE+A2j
		dec	[ebp+var_2]
		jns	short loc_7F82AE63

loc_7F82AEBA:				; CODE XREF: sub_7F82ADFE+63j
					; sub_7F82ADFE+69j
		mov	ax, [ecx+6]
		dec	ax
		mov	[ecx+6], ax
		test	ax, ax
		jg	short loc_7F82AED8
		mov	ax, [ecx+8]
		test	ah, 0C0h
		jz	short loc_7F82AED8
		push	ebx
		call	sub_7F82F1E1

loc_7F82AED8:				; CODE XREF: sub_7F82ADFE+4Ej
					; sub_7F82ADFE+C9j ...
		mov	eax, [ebp+var_10]
		mov	dword_7F83901C,	edi
		cmp	[ebp+lParam], 0
		mov	dword_7F839014,	eax
		jz	short loc_7F82AEF4
		push	[ebp+lParam]
		call	sub_7F82EC41

loc_7F82AEF4:				; CODE XREF: sub_7F82ADFE+ECj
		mov	eax, 2
		test	esi, esi
		jnz	short loc_7F82AF00
		mov	eax, [ebp+var_8]

loc_7F82AF00:				; CODE XREF: sub_7F82ADFE+FDj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F82ADFE	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F82AF09(int, __int16, __int16, LPARAM lParam)
sub_7F82AF09	proc near		; CODE XREF: sub_7F82ADFE+94p

arg_0		= dword	ptr  4
arg_4		= word ptr  8
arg_8		= word ptr  0Ch
lParam		= dword	ptr  10h

		push	ebx
		push	esi
		push	edi
		push	ebp
		call	ds:__imp_GetCurrentProcessId
		movsx	ecx, [esp+10h+arg_4]
		shl	ecx, 4
		mov	esi, eax
		mov	eax, [esp+10h+arg_0]
		mov	ebx, [esp+10h+lParam]
		mov	edx, [eax]
		mov	eax, [ecx+edx+18h]
		lea	edi, [ecx+edx+10h]
		lea	ebp, [ecx+edx+0Ch]
		mov	[ebx+4], eax
		push	dword ptr [edi]	; hWnd
		call	ds:IsWindow
		test	eax, eax
		jnz	short loc_7F82AF49
		mov	eax, 3
		jmp	short loc_7F82AF7E
; ---------------------------------------------------------------------------

loc_7F82AF49:				; CODE XREF: sub_7F82AF09+37j
		push	0		; nIndex
		push	dword ptr [edi]	; hWnd
		call	ds:GetWindowLongA
		cmp	[ebp+0], eax
		jz	short loc_7F82AF5F
		mov	eax, 3
		jmp	short loc_7F82AF7E
; ---------------------------------------------------------------------------

loc_7F82AF5F:				; CODE XREF: sub_7F82AF09+4Dj
		push	ebx		; lParam
		cmp	esi, eax
		movzx	eax, [esp+14h+arg_8]
		push	eax		; wParam
		push	400h		; Msg
		push	dword ptr [edi]	; hWnd
		jnz	short loc_7F82AF78
		call	sub_7F82ACA6
		jmp	short loc_7F82AF7E
; ---------------------------------------------------------------------------

loc_7F82AF78:				; CODE XREF: sub_7F82AF09+66j
		call	ds:SendMessageA

loc_7F82AF7E:				; CODE XREF: sub_7F82AF09+3Ej
					; sub_7F82AF09+54j ...
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	10h
sub_7F82AF09	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82AF85	proc near		; CODE XREF: sub_7F82B14A+47p

WndClass	= WNDCLASSA ptr	-28h

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	esi
		xor	esi, esi
		cmp	dword_7F839020,	esi
		jnz	short loc_7F82AFE8
		push	7F00h		; lpCursorName
		push	esi		; hInstance
		call	ds:LoadCursorA
		mov	[ebp+WndClass.hCursor],	eax
		mov	[ebp+WndClass.hIcon], esi
		mov	eax, dword_7F833F18
		mov	[ebp+WndClass.lpszMenuName], esi
		mov	[ebp+WndClass.lpszClassName], offset aStoreprogressi ; "StoreProgressIndicatorClass32"
		mov	[ebp+WndClass.hInstance], eax
		mov	[ebp+WndClass.cbClsExtra], esi
		lea	ecx, [ebp+WndClass]
		mov	[ebp+WndClass.cbWndExtra], esi
		mov	[ebp+WndClass.hbrBackground], 10h
		mov	[ebp+WndClass.style], 4000h
		mov	[ebp+WndClass.lpfnWndProc], offset sub_7F82AFF2
		push	ecx		; lpWndClass
		call	ds:RegisterClassA
		movzx	ecx, ax
		mov	dword_7F839020,	ecx

loc_7F82AFE8:				; CODE XREF: sub_7F82AF85+Fj
		mov	eax, dword_7F839020
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn
sub_7F82AF85	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F82AFF2(HWND hWnd,	UINT Msg, WPARAM wParam, LPARAM	lParam)
sub_7F82AFF2	proc near		; DATA XREF: sub_7F82AF85+4Co

Paint		= tagPAINTSTRUCT ptr -50h
Rect		= tagRECT ptr -10h
hWnd		= dword	ptr  8
Msg		= dword	ptr  0Ch
wParam		= dword	ptr  10h
lParam		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 50h
		push	ebx
		push	esi
		push	edi
		call	sub_7F82449E
		mov	esi, eax
		mov	eax, [ebp+Msg]
		cmp	eax, 0Fh
		jz	short loc_7F82B04F
		cmp	eax, 10h
		jz	loc_7F82B11E
		cmp	eax, 100h
		movzx	eax, word ptr [esi+20h]
		jz	loc_7F82B143
		push	eax		; vKey
		call	ds:GetAsyncKeyState
		test	ax, 8001h
		jz	short loc_7F82B038
		or	byte ptr [esi+18h], 4
		call	sub_7F82B86D

loc_7F82B038:				; CODE XREF: sub_7F82AFF2+3Bj
		push	[ebp+lParam]	; lParam
		push	[ebp+wParam]	; wParam
		push	[ebp+Msg]	; Msg
		push	[ebp+hWnd]	; hWnd
		call	ds:DefWindowProcA
		jmp	loc_7F82B13A
; ---------------------------------------------------------------------------

loc_7F82B04F:				; CODE XREF: sub_7F82AFF2+16j
		lea	eax, [ebp+Paint]
		push	eax		; lpPaint
		push	[ebp+hWnd]	; hWnd
		call	ds:BeginPaint
		push	0Fh		; nIndex
		call	ds:GetSysColor
		push	eax		; color
		push	[ebp+Paint.hdc]	; hdc
		call	ds:SetBkColor
		push	0Ch		; i
		call	ds:GetStockObject
		push	eax		; h
		push	[ebp+Paint.hdc]	; hdc
		call	ds:SelectObject
		mov	edi, eax
		lea	ecx, [ebp+Rect]
		push	ecx		; lpRect
		push	[ebp+hWnd]	; hWnd
		call	ds:GetClientRect
		push	4		; i
		call	ds:GetStockObject
		push	eax		; hbr
		lea	ecx, [ebp+Rect]
		push	ecx		; lprc
		xor	ebx, ebx
		push	[ebp+Paint.hdc]	; hDC
		call	ds:FrameRect
		push	1		; int
		lea	ecx, [ebp+Rect]
		push	ebx		; int
		dec	[ebp+Rect.right]
		push	ecx		; int
		dec	[ebp+Rect.bottom]
		push	[ebp+Paint.hdc]	; hdc
		call	sub_7F82B4DE
		push	ebx		; int
		push	1		; int
		push	offset dword_7F839050 ;	int
		push	[ebp+Paint.hdc]	; hdc
		call	sub_7F82B4DE
		push	11h		; format
		lea	ecx, [esi+2Ch]
		push	offset stru_7F839060 ; lprc
		push	0FFFFFFFFh	; cchText
		push	ecx		; lpchText
		push	[ebp+Paint.hdc]	; hdc
		call	ds:DrawTextA
		push	11h		; format
		lea	ecx, [esi+12Bh]
		push	offset stru_7F839070 ; lprc
		push	0FFFFFFFFh	; cchText
		push	ecx		; lpchText
		push	[ebp+Paint.hdc]	; hdc
		call	ds:DrawTextA
		mov	[esi+22h], bx
		push	[ebp+Paint.hdc]	; hDC
		call	sub_7F82B644
		push	edi		; h
		push	[ebp+Paint.hdc]	; hdc
		call	ds:SelectObject
		lea	eax, [ebp+Paint]
		push	eax		; lpPaint
		push	[ebp+hWnd]	; hWnd
		call	ds:EndPaint

loc_7F82B11E:				; CODE XREF: sub_7F82AFF2+1Bj
		movzx	eax, word ptr [esi+20h]
		push	eax		; vKey
		call	ds:GetAsyncKeyState
		test	ax, 8001h
		jz	short loc_7F82B138
		or	byte ptr [esi+18h], 4

loc_7F82B133:				; CODE XREF: sub_7F82AFF2+156j
		call	sub_7F82B86D

loc_7F82B138:				; CODE XREF: sub_7F82AFF2+13Bj
					; sub_7F82AFF2+154j
		xor	eax, eax

loc_7F82B13A:				; CODE XREF: sub_7F82AFF2+58j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------

loc_7F82B143:				; CODE XREF: sub_7F82AFF2+2Aj
		cmp	eax, [ebp+wParam]
		jnz	short loc_7F82B138
		jmp	short loc_7F82B133
sub_7F82AFF2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F82B14A(HWND, int,	int, __int16, int)
sub_7F82B14A	proc near		; CODE XREF: sub_7F8207A6+37Ap
					; sub_7F823870+16Bp

tm		= tagTEXTMETRICA ptr -60h
var_28		= tagRECT ptr -28h
h		= dword	ptr -18h
Rect		= tagRECT ptr -14h
hWnd		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= word ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 60h
		push	ebx
		push	esi
		push	edi
		call	sub_7F82449E
		mov	esi, eax
		call	ds:GetDesktopWindow
		mov	[ebp+hWnd], eax
		xor	eax, eax
		cmp	[esi+4], eax
		jnz	loc_7F82B451
		cmp	[ebp+hWnd], eax
		jz	loc_7F82B451
		cmp	[ebp+arg_4], eax
		jz	loc_7F82B451
		cmp	[ebp+arg_8], eax
		jz	loc_7F82B451
		cmp	dword_7F839020,	eax
		jnz	short loc_7F82B19E
		call	sub_7F82AF85
		test	eax, eax
		jz	loc_7F82B451

loc_7F82B19E:				; CODE XREF: sub_7F82B14A+45j
		cmp	word_7F839024, 0
		jnz	loc_7F82B31F
		push	[ebp+hWnd]	; hWnd
		call	ds:GetDC
		mov	edi, eax
		test	edi, edi
		jz	loc_7F82B31F
		push	0Ch		; i
		call	ds:GetStockObject
		push	eax		; h
		push	edi		; hdc
		call	ds:SelectObject
		lea	ecx, [ebp+tm]
		mov	[ebp+h], eax
		push	ecx		; lptm
		push	edi		; hdc
		call	ds:GetTextMetricsA
		mov	ax, word ptr [ebp+tm.tmHeight]
		mov	ecx, [ebp+tm.tmAveCharWidth]
		mov	word_7F839024, cx
		mov	ecx, [ebp+tm.tmExternalLeading]
		add	cx, ax
		mov	word_7F839028, ax
		mov	eax, [ebp+tm.tmMaxCharWidth]
		mov	word_7F83902C, cx
		mov	cx, ax
		imul	cx, 14h
		add	cx, 19h
		mov	dx, word_7F83902C
		lea	ebx, [ecx+32h]
		add	dx, 2
		mov	word_7F839030, ax
		mov	ax, word_7F83902C
		shl	ax, 2
		movzx	eax, ax
		mov	word_7F839034, bx
		mov	dword_7F839054,	eax
		mov	dword_7F839050,	19h
		movzx	ecx, cx
		mov	bx, word_7F83902C
		add	ecx, 19h
		imul	bx, 5
		add	bx, dx
		mov	dword_7F839058,	ecx
		mov	Rect.left, 1Bh
		movzx	ecx, dx
		mov	word_7F839038, bx
		add	ecx, eax
		add	eax, 3
		mov	dword_7F83905C,	ecx
		mov	Rect.top, eax
		mov	eax, dword_7F839058
		sub	eax, 2
		mov	Rect.right, eax
		lea	eax, [ecx-2]
		movzx	ecx, word_7F83902C
		mov	edx, ecx
		mov	Rect.bottom, eax
		mov	ax, word_7F83902C
		shr	ax, 1
		movzx	ebx, ax
		movzx	eax, word_7F839034
		sub	edx, ebx
		sub	eax, 0Ah
		mov	stru_7F839060.top, edx
		mov	edx, 0Ah
		mov	stru_7F839060.left, edx
		mov	stru_7F839060.right, eax
		lea	eax, ds:0[ecx*2]
		mov	stru_7F839070.left, edx
		add	eax, stru_7F839060.top
		mov	edx, stru_7F839060.right
		mov	stru_7F839060.bottom, eax
		mov	stru_7F839070.right, edx
		push	[ebp+h]		; h
		push	edi		; hdc
		inc	eax
		mov	stru_7F839070.top, eax
		add	eax, ecx
		mov	stru_7F839070.bottom, eax
		call	ds:SelectObject
		push	edi		; hDC
		push	[ebp+arg_0]	; hWnd
		call	ds:ReleaseDC
		push	6		; i
		call	ds:GetStockObject
		mov	h, eax

loc_7F82B31F:				; CODE XREF: sub_7F82B14A+5Cj
					; sub_7F82B14A+6Fj
		push	10h		; nIndex
		xor	edi, edi
		mov	ebx, 0FFh
		call	ds:GetSysColor
		push	eax		; color
		push	1		; cWidth
		push	edi		; iStyle
		call	ds:CreatePen
		push	ebx
		mov	[esi+10h], eax
		lea	eax, [esi+2Ch]
		push	eax
		push	[ebp+arg_4]
		call	sub_7F81ABAD
		push	ebx
		lea	ecx, [esi+12Bh]
		push	ecx
		lea	ebx, [esi+18h]
		push	[ebp+arg_8]
		call	sub_7F81ABAD
		mov	[esi+24h], edi
		mov	dword ptr [esi+28h], 1
		mov	eax, [ebx]
		and	al, 0FDh
		mov	[ebx], eax
		and	al, 0FBh
		mov	[ebx], eax
		mov	ax, [ebp+arg_C]
		movzx	ecx, ax
		mov	[esi+20h], ax
		push	ecx		; vKey
		mov	[esi+1Ch], edi
		call	ds:GetAsyncKeyState
		mov	[esi+22h], di
		mov	eax, [ebx]
		mov	ecx, eax
		xor	ecx, [ebp+arg_10]
		and	ecx, 1
		xor	ecx, eax
		lea	eax, [ebp+Rect]
		push	eax		; lpRect
		mov	[ebx], ecx
		push	[ebp+hWnd]	; hWnd
		call	ds:GetClientRect
		lea	ecx, [ebp+var_28]
		push	ecx		; lpRect
		push	[ebp+hWnd]	; hWnd
		call	ds:GetWindowRect
		mov	eax, [ebp+var_28.bottom]
		sub	eax, [ebp+Rect.bottom]
		mov	[ebp+Rect.top],	eax
		mov	eax, [ebp+var_28.right]
		sub	eax, [ebp+Rect.right]
		mov	ecx, [ebp+Rect.top]
		movzx	edx, word_7F839038
		push	edi		; lpParam
		mov	[ebp+Rect.left], eax
		add	[ebp+Rect.right], eax
		add	[ebp+Rect.bottom], ecx
		movzx	ecx, word_7F839034
		mov	eax, dword_7F833F18
		push	eax		; hInstance
		push	edi		; hMenu
		push	[ebp+hWnd]	; hWndParent
		push	edx		; nHeight
		push	ecx		; nWidth
		mov	eax, [ebp+Rect.bottom]
		sub	eax, edx
		sub	eax, [ebp+Rect.top]
		cdq
		sub	eax, edx
		mov	edx, [ebp+Rect.top]
		sar	eax, 1
		add	edx, eax
		mov	eax, [ebp+Rect.right]
		push	edx		; Y
		sub	eax, ecx
		sub	eax, [ebp+Rect.left]
		mov	ecx, [ebp+Rect.left]
		cdq
		sub	eax, edx
		sar	eax, 1
		add	ecx, eax
		push	ecx		; X
		push	90000000h	; dwStyle
		push	edi		; lpWindowName
		push	offset aStoreprogressi ; "StoreProgressIndicatorClass32"
		push	edi		; dwExStyle
		call	ds:CreateWindowExA
		mov	[esi+4], eax
		test	eax, eax
		jz	short loc_7F82B448
		push	eax		; hWnd
		call	ds:SetFocus
		push	edi		; lParam
		push	offset fn	; lpfn
		call	ds:GetCurrentThreadId
		push	eax		; dwThreadId
		call	ds:EnumThreadWindows
		push	dword ptr [esi+4] ; hWnd
		call	ds:UpdateWindow

loc_7F82B448:				; CODE XREF: sub_7F82B14A+2D9j
		cmp	dword ptr [esi+4], 1
		sbb	eax, eax
		inc	eax
		jmp	short loc_7F82B453
; ---------------------------------------------------------------------------

loc_7F82B451:				; CODE XREF: sub_7F82B14A+1Ej
					; sub_7F82B14A+27j ...
		xor	eax, eax

loc_7F82B453:				; CODE XREF: sub_7F82B14A+305j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F82B14A	endp


; =============== S U B	R O U T	I N E =======================================


; BOOL __stdcall fn(HWND, LPARAM)
fn		proc near		; DATA XREF: sub_7F82B14A+2E3o

hWnd		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		call	sub_7F82449E
		mov	ebx, eax
		push	10h
		push	8
		call	sub_7F82F03B
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F82B496
		mov	esi, [esp+0Ch+hWnd]
		cmp	[ebx+4], esi
		jz	short loc_7F82B4A1
		push	0		; bEnable
		push	esi		; hWnd
		call	ds:EnableWindow
		test	eax, eax
		jnz	short loc_7F82B4A1
		mov	[edi], esi
		mov	eax, [ebx+8]
		mov	[edi+4], eax
		mov	[ebx+8], edi

loc_7F82B496:				; CODE XREF: fn+17j fn+4Bj
		mov	eax, 1
		pop	edi
		pop	esi
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------

loc_7F82B4A1:				; CODE XREF: fn+20j fn+2Dj
		push	edi
		call	sub_7F82F149
		jmp	short loc_7F82B496
fn		endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82B4A9	proc near		; CODE XREF: sub_7F82B8D3+66p
		push	ebx
		push	esi
		push	edi
		call	sub_7F82449E
		mov	esi, [eax+8]
		mov	edi, eax
		test	esi, esi
		jz	short loc_7F82B4D3

loc_7F82B4BA:				; CODE XREF: sub_7F82B4A9+28j
		mov	ebx, [esi+4]
		push	1		; bEnable
		push	dword ptr [esi]	; hWnd
		call	ds:EnableWindow
		push	esi
		call	sub_7F82F149
		mov	esi, ebx
		test	ebx, ebx
		jnz	short loc_7F82B4BA

loc_7F82B4D3:				; CODE XREF: sub_7F82B4A9+Fj
		mov	dword ptr [edi+8], 0
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F82B4A9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F82B4DE(HDC hdc, int, int,	int)
sub_7F82B4DE	proc near		; CODE XREF: sub_7F82AFF2+C5p
					; sub_7F82AFF2+D5p

h		= dword	ptr -4
hdc		= 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, 4
		push	ebx
		push	esi
		push	edi
		call	sub_7F82449E
		mov	ebx, eax
		mov	esi, [ebp+hdc]
		test	esi, esi
		jz	loc_7F82B63B
		mov	edi, [ebp+arg_4]
		test	edi, edi
		jz	loc_7F82B63B
		cmp	[ebp+arg_8], 0
		jz	short loc_7F82B511
		mov	eax, h
		jmp	short loc_7F82B514
; ---------------------------------------------------------------------------

loc_7F82B511:				; CODE XREF: sub_7F82B4DE+2Aj
		mov	eax, [ebx+10h]

loc_7F82B514:				; CODE XREF: sub_7F82B4DE+31j
		push	eax		; h
		push	esi		; hdc
		call	ds:SelectObject
		mov	[ebp+h], eax
		test	eax, eax
		jz	loc_7F82B63B
		push	0		; lppt
		mov	eax, [edi+4]
		inc	eax
		push	eax		; y
		mov	eax, [edi+8]
		dec	eax
		push	eax		; x
		push	esi		; hdc
		call	ds:MoveToEx
		mov	eax, [edi+0Ch]
		dec	eax
		push	eax		; y
		mov	eax, [edi+8]
		dec	eax
		push	eax		; x
		push	esi		; hdc
		call	ds:LineTo
		mov	eax, [edi+0Ch]
		dec	eax
		push	eax		; y
		mov	eax, [edi]
		inc	eax
		push	eax		; x
		push	esi		; hdc
		call	ds:LineTo
		cmp	[ebp+arg_C], 0
		jz	short loc_7F82B5B3
		push	0		; lppt
		mov	eax, [edi+4]
		add	eax, 2
		push	eax		; y
		mov	eax, [edi+8]
		sub	eax, 2
		push	eax		; x
		push	esi		; hdc
		call	ds:MoveToEx
		mov	eax, [edi+0Ch]
		sub	eax, 2
		push	eax		; y
		mov	eax, [edi+8]
		sub	eax, 2
		push	eax		; x
		push	esi		; hdc
		call	ds:LineTo
		mov	eax, [edi+0Ch]
		sub	eax, 2
		push	eax		; y
		mov	eax, [edi]
		add	eax, 2
		push	eax		; x
		push	esi		; hdc
		call	ds:LineTo
		push	0		; lppt
		mov	eax, [edi+0Ch]
		dec	eax
		push	eax		; y
		mov	eax, [edi]
		inc	eax
		push	eax		; x
		push	esi		; hdc
		call	ds:MoveToEx

loc_7F82B5B3:				; CODE XREF: sub_7F82B4DE+81j
		cmp	[ebp+arg_8], 0
		jz	short loc_7F82B5BE
		mov	eax, [ebx+10h]
		jmp	short loc_7F82B5C3
; ---------------------------------------------------------------------------

loc_7F82B5BE:				; CODE XREF: sub_7F82B4DE+D9j
		mov	eax, h

loc_7F82B5C3:				; CODE XREF: sub_7F82B4DE+DEj
		push	eax		; h
		push	esi		; hdc
		call	ds:SelectObject
		mov	eax, [edi+4]
		inc	eax
		push	eax		; y
		mov	eax, [edi]
		inc	eax
		push	eax		; x
		push	esi		; hdc
		call	ds:LineTo
		mov	eax, [edi+4]
		inc	eax
		push	eax		; y
		mov	eax, [edi+8]
		dec	eax
		push	eax		; x
		push	esi		; hdc
		call	ds:LineTo
		cmp	[ebp+arg_C], 0
		jz	short loc_7F82B631
		push	0		; lppt
		mov	eax, [edi+0Ch]
		sub	eax, 2
		push	eax		; y
		mov	eax, [edi]
		add	eax, 2
		push	eax		; x
		push	esi		; hdc
		call	ds:MoveToEx
		mov	eax, [edi+4]
		add	eax, 2
		push	eax		; y
		mov	eax, [edi]
		add	eax, 2
		push	eax		; x
		push	esi		; hdc
		call	ds:LineTo
		mov	eax, [edi+4]
		add	eax, 2
		push	eax		; y
		mov	eax, [edi+8]
		sub	eax, 2
		push	eax		; x
		push	esi		; hdc
		call	ds:LineTo

loc_7F82B631:				; CODE XREF: sub_7F82B4DE+112j
		push	[ebp+h]		; h
		push	esi		; hdc
		call	ds:SelectObject

loc_7F82B63B:				; CODE XREF: sub_7F82B4DE+15j
					; sub_7F82B4DE+20j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F82B4DE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F82B644(HDC hDC)
sub_7F82B644	proc near		; CODE XREF: sub_7F82AFF2+110p
					; sub_7F82B72B+3Bp

rc		= RECT ptr -10h
hDC		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		mov	esi, offset Rect
		lea	edi, [ebp+rc]
		movsd
		movsd
		movsd
		movsd
		call	sub_7F82449E
		cmp	[ebp+hDC], 0
		mov	edi, eax
		jz	loc_7F82B722
		mov	eax, [edi+24h]
		test	eax, eax
		jz	loc_7F82B722
		imul	eax, 14h
		sub	edx, edx
		div	dword ptr [edi+28h]
		cmp	ax, 14h
		mov	si, ax
		jle	short loc_7F82B68A
		mov	si, 14h

loc_7F82B68A:				; CODE XREF: sub_7F82B644+40j
		cmp	dword ptr [edi+14h], 0
		jnz	short loc_7F82B6B4
		mov	ebx, 800000h
		push	0Fh		; nIndex
		call	ds:GetSysColor
		cmp	eax, ebx
		jnz	short loc_7F82B6A6
		mov	ebx, 0FFFFh

loc_7F82B6A6:				; CODE XREF: sub_7F82B644+5Bj
		push	ebx		; color
		call	ds:CreateSolidBrush
		mov	[edi+14h], eax
		test	eax, eax
		jz	short loc_7F82B722

loc_7F82B6B4:				; CODE XREF: sub_7F82B644+4Aj
		test	byte ptr [edi+18h], 1
		jz	short loc_7F82B6FB
		mov	bx, [edi+22h]
		cmp	bx, si
		jge	short loc_7F82B6F5

loc_7F82B6C3:				; CODE XREF: sub_7F82B644+AFj
		movzx	eax, word_7F839030
		movsx	ecx, bx
		inc	bx
		lea	edx, [eax+1]
		imul	ecx, edx
		add	ecx, 1Ch
		lea	edx, [ebp+rc]
		add	eax, ecx
		mov	[ebp+rc.left], ecx
		mov	[ebp+rc.right],	eax
		push	dword ptr [edi+14h] ; hbr
		push	edx		; lprc
		push	[ebp+hDC]	; hDC
		call	ds:FillRect
		cmp	bx, si
		jl	short loc_7F82B6C3

loc_7F82B6F5:				; CODE XREF: sub_7F82B644+7Dj
		mov	[edi+22h], bx
		jmp	short loc_7F82B722
; ---------------------------------------------------------------------------

loc_7F82B6FB:				; CODE XREF: sub_7F82B644+74j
		movzx	ecx, word_7F839030
		inc	ecx
		lea	edx, [ebp+rc]
		movsx	eax, si
		imul	ecx, eax
		inc	[ebp+rc.left]
		add	ecx, [ebp+rc.left]
		mov	[ebp+rc.right],	ecx
		push	dword ptr [edi+14h] ; hbr
		push	edx		; lprc
		push	[ebp+hDC]	; hDC
		call	ds:FillRect

loc_7F82B722:				; CODE XREF: sub_7F82B644+20j
					; sub_7F82B644+2Bj ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F82B644	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82B72B	proc near		; CODE XREF: sub_7F823C13+EAp
					; sub_7F823C13+112p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		call	sub_7F82449E
		lea	edi, [eax+4]
		mov	esi, eax
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_7F82B7AF
		push	eax		; hWnd
		call	ds:UpdateWindow
		mov	eax, [esp+0Ch+arg_4]
		mov	[esi+28h], eax
		mov	eax, [esp+0Ch+arg_0]
		mov	[esi+24h], eax
		test	eax, eax
		jz	short loc_7F82B798
		push	dword ptr [edi]	; hWnd
		call	ds:GetDC
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F82B774
		push	ebx		; hDC
		call	sub_7F82B644
		push	ebx		; hDC
		push	dword ptr [edi]	; hWnd
		call	ds:ReleaseDC

loc_7F82B774:				; CODE XREF: sub_7F82B72B+38j
		mov	eax, [esi+28h]
		cmp	[esi+24h], eax
		jnb	short loc_7F82B7AF
		movzx	eax, word ptr [esi+20h]
		push	eax		; vKey
		call	ds:GetAsyncKeyState
		test	ax, 8001h
		jz	short loc_7F82B7AF
		or	byte ptr [esi+18h], 4
		call	sub_7F82B86D
		jmp	short loc_7F82B7AF
; ---------------------------------------------------------------------------

loc_7F82B798:				; CODE XREF: sub_7F82B72B+2Aj
		push	1		; bErase
		push	offset Rect	; lpRect
		push	dword ptr [edi]	; hWnd
		call	ds:InvalidateRect
		push	dword ptr [edi]	; hWnd
		call	ds:UpdateWindow

loc_7F82B7AF:				; CODE XREF: sub_7F82B72B+11j
					; sub_7F82B72B+4Fj ...
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F82B72B	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F82B7B5(LPCSTR lpString1, LPCSTR)
sub_7F82B7B5	proc near		; CODE XREF: sub_7F823C13+F8p

lpString1	= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		push	ebp
		call	sub_7F82449E
		mov	esi, eax
		mov	eax, [eax+4]
		test	eax, eax
		jz	loc_7F82B866
		push	eax		; hWnd
		call	ds:UpdateWindow
		mov	edi, [esp+10h+lpString1]
		test	edi, edi
		jz	short loc_7F82B805
		lea	ebx, [esi+2Ch]
		push	ebx		; lpString2
		push	edi		; lpString1
		call	ds:lstrcmpA
		test	eax, eax
		jz	short loc_7F82B805
		push	0FFh
		push	ebx
		push	edi
		call	sub_7F81ABAD
		push	1		; bErase
		push	offset stru_7F839060 ; lpRect
		push	dword ptr [esi+4] ; hWnd
		call	ds:InvalidateRect

loc_7F82B805:				; CODE XREF: sub_7F82B7B5+23j
					; sub_7F82B7B5+32j
		mov	ebx, [esp+10h+arg_4]
		test	ebx, ebx
		jz	short loc_7F82B83B
		lea	ebp, [esi+12Bh]
		push	ebp		; lpString2
		push	ebx		; lpString1
		call	ds:lstrcmpA
		test	eax, eax
		jz	short loc_7F82B83B
		push	0FFh
		push	ebp
		push	ebx
		call	sub_7F81ABAD
		push	1		; bErase
		push	offset stru_7F839070 ; lpRect
		push	dword ptr [esi+4] ; hWnd
		call	ds:InvalidateRect

loc_7F82B83B:				; CODE XREF: sub_7F82B7B5+56j
					; sub_7F82B7B5+68j
		test	edi, edi
		jnz	short loc_7F82B843
		test	ebx, ebx
		jz	short loc_7F82B84C

loc_7F82B843:				; CODE XREF: sub_7F82B7B5+88j
		push	dword ptr [esi+4] ; hWnd
		call	ds:UpdateWindow

loc_7F82B84C:				; CODE XREF: sub_7F82B7B5+8Cj
		movzx	eax, word ptr [esi+20h]
		push	eax		; vKey
		call	ds:GetAsyncKeyState
		test	ax, 8001h
		jz	short loc_7F82B866
		or	byte ptr [esi+18h], 4
		call	sub_7F82B86D

loc_7F82B866:				; CODE XREF: sub_7F82B7B5+10j
					; sub_7F82B7B5+A6j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F82B7B5	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82B86D	proc near		; CODE XREF: sub_7F82AFF2+41p
					; sub_7F82AFF2:loc_7F82B133p ...
		push	esi
		push	edi
		call	sub_7F82449E
		cmp	dword ptr [eax+4], 0
		mov	esi, eax
		jz	short loc_7F82B8B8
		cmp	word ptr [esi+20h], 0
		jz	short loc_7F82B8B8
		lea	edi, [esi+18h]
		mov	ecx, [edi]
		test	cl, 2
		jnz	short loc_7F82B8B8
		mov	eax, [esi+1Ch]
		test	eax, eax
		jz	short loc_7F82B8A5
		call	eax
		mov	ecx, [edi]
		add	eax, eax
		xor	eax, ecx
		and	eax, 2
		xor	eax, ecx
		mov	[edi], eax
		jmp	short loc_7F82B8AA
; ---------------------------------------------------------------------------

loc_7F82B8A5:				; CODE XREF: sub_7F82B86D+25j
		or	cl, 2
		mov	[edi], ecx

loc_7F82B8AA:				; CODE XREF: sub_7F82B86D+36j
		test	byte ptr [edi],	2
		jz	short loc_7F82B8B8
		push	dword ptr [esi+4] ; hWnd
		call	ds:UpdateWindow

loc_7F82B8B8:				; CODE XREF: sub_7F82B86D+Dj
					; sub_7F82B86D+14j ...
		mov	eax, [esi+18h]
		pop	edi
		shl	eax, 1Eh
		pop	esi
		sar	eax, 1Fh
		retn
sub_7F82B86D	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82B8C4	proc near		; CODE XREF: sub_7F8207A6:loc_7F820B59p
					; sub_7F823870:loc_7F823B27p ...
		call	sub_7F82449E
		mov	eax, [eax+18h]
		shl	eax, 1Eh
		sar	eax, 1Fh
		retn
sub_7F82B8C4	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82B8D3	proc near		; CODE XREF: sub_7F8207A6+3C0p
					; sub_7F823870+2C4p

Msg		= tagMSG ptr -1Ch
arg_0		= dword	ptr  4

		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		call	sub_7F82449E
		lea	edi, [eax+4]
		mov	esi, eax
		cmp	dword ptr [edi], 0
		jz	short loc_7F82B94C
		cmp	[esp+28h+arg_0], 0
		jz	short loc_7F82B8FF
		push	64h
		push	64h
		call	sub_7F82B72B
		push	1Eh
		call	sub_7F81AF92

loc_7F82B8FF:				; CODE XREF: sub_7F82B8D3+1Aj
		test	byte ptr [esi+18h], 4
		jz	short loc_7F82B933
		mov	ebx, 100h
		call	sub_7F82F2D1

loc_7F82B90F:				; CODE XREF: sub_7F82B8D3+59j
		lea	ecx, [esp+28h+Msg]
		push	3		; wRemoveMsg
		push	ebx		; wMsgFilterMax
		push	ebx		; wMsgFilterMin
		push	dword ptr [edi]	; hWnd
		push	ecx		; lpMsg
		call	ds:PeekMessageA
		test	eax, eax
		jz	short loc_7F82B92E
		movzx	eax, word ptr [esi+20h]
		cmp	eax, [esp+28h+Msg.wParam]
		jnz	short loc_7F82B90F

loc_7F82B92E:				; CODE XREF: sub_7F82B8D3+4Fj
		call	sub_7F82F26E

loc_7F82B933:				; CODE XREF: sub_7F82B8D3+30j
		cmp	dword ptr [esi+8], 0
		jz	short loc_7F82B93E
		call	sub_7F82B4A9

loc_7F82B93E:				; CODE XREF: sub_7F82B8D3+64j
		push	dword ptr [edi]	; hWnd
		call	ds:DestroyWindow
		mov	dword ptr [edi], 0

loc_7F82B94C:				; CODE XREF: sub_7F82B8D3+13j
		mov	eax, [esi+10h]
		xor	edi, edi
		test	eax, eax
		jz	short loc_7F82B95F
		push	eax		; ho
		call	ds:DeleteObject
		mov	[esi+10h], edi

loc_7F82B95F:				; CODE XREF: sub_7F82B8D3+80j
		mov	eax, [esi+14h]
		xor	edi, edi
		test	eax, eax
		jz	short loc_7F82B972
		push	eax		; ho
		call	ds:DeleteObject
		mov	[esi+14h], edi

loc_7F82B972:				; CODE XREF: sub_7F82B8D3+93j
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 1Ch
		retn	4
sub_7F82B8D3	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82B97B	proc near		; CODE XREF: sub_7F82B9AC+Ap

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx
		mov	word ptr [eax],	3
		mov	[eax+6], ecx
		mov	[eax+2], cx
		mov	[eax+0Ah], ecx
		mov	[eax+0Eh], ecx
		mov	[eax+12h], ecx
		mov	dword ptr [eax+6], offset aDemilayr ; "demilayr"
		mov	word ptr [eax+4], 0FA3h
		mov	word ptr [eax+16h], 1
		retn	4
sub_7F82B97B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82B9AC	proc near		; CODE XREF: sub_7F814EF3+Bp

var_18		= byte ptr -18h
var_12		= dword	ptr -12h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_7F82B97B
		mov	eax, [ebp+var_12]
		mov	ecx, [ebp+arg_4]
		push	0BBBh
		lea	edx, [ebp+var_18]
		push	0
		mov	[ecx+6], eax
		push	edx
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F82ECC1
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F82B9AC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82B9DE	proc near		; CODE XREF: sub_7F81813C+50p
					; sub_7F818550+10p ...

var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		inc	word_7F838070
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		xor	bx, bx
		push	edi
		cmp	[ebp+arg_C], 0
		jz	loc_7F82BADB
		cmp	dword_7F838078,	0
		jz	short loc_7F82BA0E
		mov	edi, 253h
		mov	esi, [ebp+arg_0]
		jmp	short loc_7F82BA40
; ---------------------------------------------------------------------------

loc_7F82BA0E:				; CODE XREF: sub_7F82B9DE+24j
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		xor	edi, edi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	esi

loc_7F82BA40:				; CODE XREF: sub_7F82B9DE+2Ej
		test	edi, edi
		jnz	loc_7F82BB7C
		push	0
		push	[ebp+arg_4]
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F82BA71
		xor	ecx, ecx
		mov	cx, [eax+12h]
		and	ecx, 8000h
		cmp	dword ptr [eax+14h], 0
		mov	[ebp+arg_C], ecx
		jl	short loc_7F82BA76
		mov	bx, [eax+1Eh]
		jmp	short loc_7F82BA76
; ---------------------------------------------------------------------------

loc_7F82BA71:				; CODE XREF: sub_7F82B9DE+76j
		mov	edi, 1001h

loc_7F82BA76:				; CODE XREF: sub_7F82B9DE+8Bj
					; sub_7F82B9DE+91j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82BA8C
		call	sub_7F82A34F
		jmp	short loc_7F82BA9A
; ---------------------------------------------------------------------------

loc_7F82BA8C:				; CODE XREF: sub_7F82B9DE+A5j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82BA9A:				; CODE XREF: sub_7F82B9DE+ACj
		mov	dword_7F838078,	0
		test	edi, edi
		jnz	loc_7F82BB99
		cmp	bx, 1
		jg	short loc_7F82BAFD
		cmp	[ebp+arg_C], 0
		jz	short loc_7F82BADE
		push	0
		push	80h
		push	[ebp+arg_4]
		push	esi
		call	sub_7F82A016
		cmp	eax, 1
		sbb	edi, edi
		and	edi, 253h
		jnz	loc_7F82BB7C
		jmp	short loc_7F82BADE
; ---------------------------------------------------------------------------

loc_7F82BADB:				; CODE XREF: sub_7F82B9DE+17j
		mov	esi, [ebp+arg_0]

loc_7F82BADE:				; CODE XREF: sub_7F82B9DE+D8j
					; sub_7F82B9DE+FBj
		cmp	bx, 1
		jg	short loc_7F82BAFD
		cmp	[ebp+arg_8], 0
		jnz	short loc_7F82BAFD
		push	[ebp+arg_4]
		push	esi
		call	sub_7F82BC21
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F82BB99

loc_7F82BAFD:				; CODE XREF: sub_7F82B9DE+D2j
					; sub_7F82B9DE+104j ...
		cmp	dword_7F838078,	0
		jz	short loc_7F82BB0D
		mov	edi, 253h
		jmp	short loc_7F82BB3C
; ---------------------------------------------------------------------------

loc_7F82BB0D:				; CODE XREF: sub_7F82B9DE+126j
		mov	eax, [esi]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		xor	edi, edi
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	esi

loc_7F82BB3C:				; CODE XREF: sub_7F82B9DE+12Dj
		test	edi, edi
		jnz	short loc_7F82BB99
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_7F81479E
		mov	edi, eax
		mov	ecx, dword_7F838078
		cmp	word ptr [ecx+254h], 0
		jz	short loc_7F82BB64
		call	sub_7F82A34F
		jmp	short loc_7F82BB72
; ---------------------------------------------------------------------------

loc_7F82BB64:				; CODE XREF: sub_7F82B9DE+17Dj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82BB72:				; CODE XREF: sub_7F82B9DE+184j
		mov	dword_7F838078,	0

loc_7F82BB7C:				; CODE XREF: sub_7F82B9DE+64j
					; sub_7F82B9DE+F5j
		test	edi, edi
		jnz	short loc_7F82BB99
		cmp	word_7F838070, 1
		jnz	short loc_7F82BB99
		lea	eax, [ebp+var_10]
		push	eax
		push	20h
		push	[ebp+arg_4]
		push	esi
		call	sub_7F82A016

loc_7F82BB99:				; CODE XREF: sub_7F82B9DE+C8j
					; sub_7F82B9DE+119j ...
		dec	word_7F838070
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F82B9DE	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82BBAB	proc near		; CODE XREF: sub_7F81BF33+BBp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	edi, [esp+10h+arg_8]
		mov	bx, [edi]
		test	bx, bx
		jle	short loc_7F82BC1A
		mov	esi, [esp+10h+arg_4]

loc_7F82BBBF:				; CODE XREF: sub_7F82BBAB+6Dj
		push	0
		push	80h
		push	dword ptr [esi]
		push	[esp+1Ch+arg_0]
		call	sub_7F82A016
		test	eax, eax
		jz	short loc_7F82BBE4
		push	dword ptr [esi]
		push	[esp+14h+arg_0]
		call	sub_7F82BCCA
		test	eax, eax
		jz	short loc_7F82BC10

loc_7F82BBE4:				; CODE XREF: sub_7F82BBAB+28j
		dec	word ptr [edi]
		cmp	bx, 1
		jle	short loc_7F82BC10
		movsx	eax, bx
		mov	ebp, [esi]
		lea	edx, [esi+4]
		lea	ecx, ds:0FFFFFFFCh[eax*4]
		push	ecx
		push	edx
		push	esi
		call	sub_7F82FCE0
		movsx	ecx, bx
		add	esp, 0Ch
		sub	esi, 4
		mov	[esi+ecx*4], ebp

loc_7F82BC10:				; CODE XREF: sub_7F82BBAB+37j
					; sub_7F82BBAB+40j
		dec	bx
		add	esi, 4
		test	bx, bx
		jnz	short loc_7F82BBBF

loc_7F82BC1A:				; CODE XREF: sub_7F82BBAB+Ej
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_7F82BBAB	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82BC21	proc near		; CODE XREF: sub_7F82B9DE+110p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	dword_7F838078,	0
		push	esi
		jz	short loc_7F82BC32
		mov	esi, 253h
		jmp	short loc_7F82BC65
; ---------------------------------------------------------------------------

loc_7F82BC32:				; CODE XREF: sub_7F82BC21+8j
		mov	ecx, [esp+4+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	esi, [edx]
		mov	dword_7F838078,	esi
		xor	esi, esi
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx

loc_7F82BC65:				; CODE XREF: sub_7F82BC21+Fj
		test	esi, esi
		jnz	short loc_7F82BCC4
		push	0
		push	[esp+8+arg_4]
		call	sub_7F8144A4
		test	eax, eax
		jnz	short loc_7F82BC7F
		mov	esi, 1001h
		jmp	short loc_7F82BC96
; ---------------------------------------------------------------------------

loc_7F82BC7F:				; CODE XREF: sub_7F82BC21+55j
		mov	cx, [eax+10h]
		test	cl, 8
		jz	short loc_7F82BC8F
		mov	esi, 253h
		jmp	short loc_7F82BC96
; ---------------------------------------------------------------------------

loc_7F82BC8F:				; CODE XREF: sub_7F82BC21+65j
		or	cl, 8
		mov	[eax+10h], cx

loc_7F82BC96:				; CODE XREF: sub_7F82BC21+5Cj
					; sub_7F82BC21+6Cj
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82BCAC
		call	sub_7F82A34F
		jmp	short loc_7F82BCBA
; ---------------------------------------------------------------------------

loc_7F82BCAC:				; CODE XREF: sub_7F82BC21+82j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82BCBA:				; CODE XREF: sub_7F82BC21+89j
		mov	dword_7F838078,	0

loc_7F82BCC4:				; CODE XREF: sub_7F82BC21+46j
		mov	eax, esi
		pop	esi
		retn	8
sub_7F82BC21	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82BCCA	proc near		; CODE XREF: sub_7F8183DC+36p
					; sub_7F82BBAB+30p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	eax, 253h
		xor	esi, esi
		cmp	dword_7F838078,	esi
		jnz	short loc_7F82BD0C
		mov	ecx, [esp+4+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	eax, [edx]
		mov	dword_7F838078,	eax
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx
		xor	eax, eax

loc_7F82BD0C:				; CODE XREF: sub_7F82BCCA+Ej
		test	eax, eax
		jnz	short loc_7F82BD5C
		push	0
		push	[esp+8+arg_4]
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F82BD2E
		mov	ax, [eax+10h]
		and	ax, 8
		cmp	ax, 1
		sbb	esi, esi
		inc	esi

loc_7F82BD2E:				; CODE XREF: sub_7F82BCCA+53j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82BD44
		call	sub_7F82A34F
		jmp	short loc_7F82BD52
; ---------------------------------------------------------------------------

loc_7F82BD44:				; CODE XREF: sub_7F82BCCA+71j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82BD52:				; CODE XREF: sub_7F82BCCA+78j
		mov	dword_7F838078,	0

loc_7F82BD5C:				; CODE XREF: sub_7F82BCCA+44j
		mov	eax, esi
		pop	esi
		retn	8
sub_7F82BCCA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82BD62	proc near		; CODE XREF: sub_7F81CCA0+5Bp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	eax, 253h
		cmp	dword_7F838078,	0
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		jnz	short loc_7F82BDA8
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	ebx, [edx]
		mov	dword_7F838078,	ebx
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx
		xor	eax, eax

loc_7F82BDA8:				; CODE XREF: sub_7F82BD62+12j
		test	eax, eax
		jnz	loc_7F82BE4F
		push	0
		push	[ebp+arg_4]
		call	sub_7F8144A4
		test	eax, eax
		jnz	short loc_7F82BDC5
		mov	esi, 1008h
		jmp	short loc_7F82BE1F
; ---------------------------------------------------------------------------

loc_7F82BDC5:				; CODE XREF: sub_7F82BD62+5Aj
		mov	cx, [eax+10h]
		and	cx, 800h
		cmp	cx, 1
		mov	ecx, [ebp+arg_14]
		sbb	edi, edi
		neg	edi
		test	ecx, ecx
		jz	short loc_7F82BDE0
		mov	[ecx], di

loc_7F82BDE0:				; CODE XREF: sub_7F82BD62+79j
		mov	ebx, [ebp+arg_8]
		push	ebx
		push	0
		push	eax
		call	sub_7F81453F
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F82BE1F
		push	0
		push	dword ptr [ebx]
		call	sub_7F8144A4
		mov	edx, [eax+0Ch]
		mov	ecx, [ebp+arg_C]
		mov	ebx, [ebp+arg_10]
		test	edi, edi
		mov	[ecx], edx
		mov	[eax+8], ebx
		jz	short loc_7F82BE15
		and	word ptr [eax+10h], 0F7FFh
		jmp	short loc_7F82BE19
; ---------------------------------------------------------------------------

loc_7F82BE15:				; CODE XREF: sub_7F82BD62+A9j
		or	byte ptr [eax+11h], 8

loc_7F82BE19:				; CODE XREF: sub_7F82BD62+B1j
		push	eax
		call	sub_7F8148F7

loc_7F82BE1F:				; CODE XREF: sub_7F82BD62+61j
					; sub_7F82BD62+8Ej
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82BE35
		call	sub_7F82A34F
		jmp	short loc_7F82BE43
; ---------------------------------------------------------------------------

loc_7F82BE35:				; CODE XREF: sub_7F82BD62+CAj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82BE43:				; CODE XREF: sub_7F82BD62+D1j
		mov	dword_7F838078,	0
		mov	eax, esi

loc_7F82BE4F:				; CODE XREF: sub_7F82BD62+48j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	18h
sub_7F82BD62	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82BE56	proc near		; CODE XREF: sub_7F811467+62p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	eax, [esp+arg_C]
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		cmp	dword_7F838078,	0
		movsx	esi, word ptr [eax]
		jz	short loc_7F82BE73
		mov	ebx, 253h
		jmp	short loc_7F82BEA5
; ---------------------------------------------------------------------------

loc_7F82BE73:				; CODE XREF: sub_7F82BE56+14j
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	ebx, [edx]
		mov	dword_7F838078,	ebx
		xor	ebx, ebx
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx

loc_7F82BEA5:				; CODE XREF: sub_7F82BE56+1Bj
		test	ebx, ebx
		jnz	short loc_7F82BF13
		xor	edi, edi

loc_7F82BEAB:				; CODE XREF: sub_7F82BE56+8Dj
		mov	eax, esi
		dec	esi
		test	eax, eax
		jle	short loc_7F82BEE5
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_8]
		push	edi
		mov	ebx, 1001h
		add	[ebp+arg_4], 4
		mov	eax, [eax]
		push	eax
		mov	[ecx], edi
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F82BEE1
		mov	ecx, [ebp+arg_8]
		add	[ebp+arg_8], 4
		push	ecx
		push	edi
		push	eax
		call	sub_7F81453F
		mov	ebx, eax

loc_7F82BEE1:				; CODE XREF: sub_7F82BE56+78j
		test	ebx, ebx
		jz	short loc_7F82BEAB

loc_7F82BEE5:				; CODE XREF: sub_7F82BE56+5Aj
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82BEFB
		call	sub_7F82A34F
		jmp	short loc_7F82BF09
; ---------------------------------------------------------------------------

loc_7F82BEFB:				; CODE XREF: sub_7F82BE56+9Cj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82BF09:				; CODE XREF: sub_7F82BE56+A3j
		mov	dword_7F838078,	0

loc_7F82BF13:				; CODE XREF: sub_7F82BE56+51j
		inc	si
		mov	eax, [ebp+arg_C]
		sub	[eax], si
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_7F82BE56	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82BF24	proc near		; CODE XREF: sub_7F810955+17Ap
					; sub_7F810955+18Fp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	eax, 253h
		cmp	dword_7F838078,	0
		push	edi
		jnz	short loc_7F82BF67
		mov	ecx, [esp+8+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	esi, [edx]
		mov	dword_7F838078,	esi
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx
		xor	eax, eax

loc_7F82BF67:				; CODE XREF: sub_7F82BF24+Ej
		test	eax, eax
		jnz	short loc_7F82BFDF
		mov	eax, [esp+8+arg_4]
		mov	eax, [eax]
		movzx	ecx, word ptr [eax]
		mov	si, [ecx+eax+6]
		lea	edi, [ecx+eax]
		mov	ax, si
		dec	si
		test	ax, ax
		jle	short loc_7F82BFB1

loc_7F82BF86:				; CODE XREF: sub_7F82BF24+8Bj
		mov	eax, edi
		push	0
		sub	edi, 6
		push	dword ptr [eax]
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F82BFA7
		mov	cx, [eax+1Ch]
		test	cx, cx
		jz	short loc_7F82BFA7
		dec	cx
		mov	[eax+1Ch], cx

loc_7F82BFA7:				; CODE XREF: sub_7F82BF24+72j
					; sub_7F82BF24+7Bj
		mov	ax, si
		dec	si
		test	ax, ax
		jg	short loc_7F82BF86

loc_7F82BFB1:				; CODE XREF: sub_7F82BF24+60j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82BFC7
		call	sub_7F82A34F
		jmp	short loc_7F82BFD5
; ---------------------------------------------------------------------------

loc_7F82BFC7:				; CODE XREF: sub_7F82BF24+9Aj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82BFD5:				; CODE XREF: sub_7F82BF24+A1j
		mov	dword_7F838078,	0

loc_7F82BFDF:				; CODE XREF: sub_7F82BF24+45j
		pop	edi
		pop	esi
		retn	8
sub_7F82BF24	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82BFE4	proc near		; CODE XREF: sub_7F8107B6+85p
					; sub_7F810C5D+2Ap ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		cmp	dword_7F838078,	0
		push	esi
		push	edi
		jz	short loc_7F82BFF6
		mov	esi, 253h
		jmp	short loc_7F82C029
; ---------------------------------------------------------------------------

loc_7F82BFF6:				; CODE XREF: sub_7F82BFE4+9j
		mov	ecx, [esp+8+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	esi, [edx]
		mov	dword_7F838078,	esi
		xor	esi, esi
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx

loc_7F82C029:				; CODE XREF: sub_7F82BFE4+10j
		test	esi, esi
		jnz	short loc_7F82C0A9
		push	0
		push	[esp+0Ch+arg_4]
		call	sub_7F8144A4
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F82C076
		test	byte ptr [edi+10h], 20h
		jz	short loc_7F82C04B
		mov	esi, 203h
		jmp	short loc_7F82C07B
; ---------------------------------------------------------------------------

loc_7F82C04B:				; CODE XREF: sub_7F82BFE4+5Ej
		cmp	[esp+8+arg_8], 0
		jz	short loc_7F82C05E
		inc	word ptr [edi+1Ch]
		push	edi
		call	sub_7F8148F7
		jmp	short loc_7F82C07B
; ---------------------------------------------------------------------------

loc_7F82C05E:				; CODE XREF: sub_7F82BFE4+6Cj
		cmp	dword ptr [edi+14h], 0
		jge	short loc_7F82C06A
		push	edi
		call	sub_7F814971

loc_7F82C06A:				; CODE XREF: sub_7F82BFE4+7Ej
		inc	word ptr [edi+1Eh]
		push	edi
		call	sub_7F8148F7
		jmp	short loc_7F82C07B
; ---------------------------------------------------------------------------

loc_7F82C076:				; CODE XREF: sub_7F82BFE4+58j
		mov	esi, 1001h

loc_7F82C07B:				; CODE XREF: sub_7F82BFE4+65j
					; sub_7F82BFE4+78j ...
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82C091
		call	sub_7F82A34F
		jmp	short loc_7F82C09F
; ---------------------------------------------------------------------------

loc_7F82C091:				; CODE XREF: sub_7F82BFE4+A4j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82C09F:				; CODE XREF: sub_7F82BFE4+ABj
		mov	dword_7F838078,	0

loc_7F82C0A9:				; CODE XREF: sub_7F82BFE4+47j
		mov	eax, esi
		pop	edi
		pop	esi
		retn	0Ch
sub_7F82BFE4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82C0B0	proc near		; CODE XREF: sub_7F81D598+18Ep
					; sub_7F81DE67+212p

var_10		= word ptr -10h
var_E		= dword	ptr -0Eh
var_A		= dword	ptr -0Ah
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, 10h
		mov	[ebp+var_4], 0
		push	esi
		push	edi
		push	4
		push	4
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82CFC5
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F82C0EA
		cmp	esi, 1001h
		jnz	loc_7F82C1B9
		mov	esi, 1009h
		jmp	loc_7F82C1B9
; ---------------------------------------------------------------------------

loc_7F82C0EA:				; CODE XREF: sub_7F82C0B0+22j
		lea	eax, [ebp+var_4]
		lea	ecx, [ebp+arg_4]
		push	eax
		push	0
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F82C1B9
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+var_4]
		call	sub_7F8199C3
		xor	eax, eax
		mov	ax, [ebp+var_10]
		and	eax, 3
		cmp	eax, 1
		jz	short loc_7F82C12C
		cmp	eax, 3
		jz	short loc_7F82C16E
		mov	esi, 1013h
		jmp	short loc_7F82C1A3
; ---------------------------------------------------------------------------

loc_7F82C12C:				; CODE XREF: sub_7F82C0B0+6Ej
		cmp	[ebp+var_E], 0
		jnz	short loc_7F82C14C
		mov	eax, [ebp+var_A]
		sub	eax, [ebp+var_E]
		cmp	eax, 0Dh
		jz	short loc_7F82C142
		cmp	eax, 9
		jnz	short loc_7F82C14C

loc_7F82C142:				; CODE XREF: sub_7F82C0B0+8Bj
		mov	eax, [ebp+arg_8]
		mov	word ptr [eax],	1
		jmp	short loc_7F82C1A3
; ---------------------------------------------------------------------------

loc_7F82C14C:				; CODE XREF: sub_7F82C0B0+80j
					; sub_7F82C0B0+90j
		cmp	[ebp+var_E], 11h
		jnz	short loc_7F82C167
		mov	eax, [ebp+var_A]
		sub	eax, [ebp+var_E]
		cmp	eax, 1
		jnz	short loc_7F82C167
		mov	eax, [ebp+arg_8]
		mov	word ptr [eax],	2
		jmp	short loc_7F82C1A3
; ---------------------------------------------------------------------------

loc_7F82C167:				; CODE XREF: sub_7F82C0B0+A0j
					; sub_7F82C0B0+ABj
		mov	esi, 1013h
		jmp	short loc_7F82C1A3
; ---------------------------------------------------------------------------

loc_7F82C16E:				; CODE XREF: sub_7F82C0B0+73j
		movzx	eax, word ptr [ebp+var_A]
		test	eax, eax
		jz	short loc_7F82C187
		cmp	eax, 1
		jz	short loc_7F82C191
		cmp	eax, 2
		jz	short loc_7F82C19B
		mov	esi, 1013h
		jmp	short loc_7F82C1A3
; ---------------------------------------------------------------------------

loc_7F82C187:				; CODE XREF: sub_7F82C0B0+C4j
		mov	eax, [ebp+arg_8]
		mov	word ptr [eax],	3
		jmp	short loc_7F82C1A3
; ---------------------------------------------------------------------------

loc_7F82C191:				; CODE XREF: sub_7F82C0B0+C9j
		mov	eax, [ebp+arg_8]
		mov	word ptr [eax],	4
		jmp	short loc_7F82C1A3
; ---------------------------------------------------------------------------

loc_7F82C19B:				; CODE XREF: sub_7F82C0B0+CEj
		mov	eax, [ebp+arg_8]
		mov	word ptr [eax],	5

loc_7F82C1A3:				; CODE XREF: sub_7F82C0B0+7Aj
					; sub_7F82C0B0+9Aj ...
		test	esi, esi
		jnz	short loc_7F82C1B9
		mov	cx, [ebp+var_10]
		mov	eax, [ebp+arg_C]
		and	cx, 4
		shr	cx, 2
		mov	[eax], cx

loc_7F82C1B9:				; CODE XREF: sub_7F82C0B0+2Aj
					; sub_7F82C0B0+35j ...
		cmp	[ebp+var_4], 0
		jz	short loc_7F82C1CA
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_7F81813C

loc_7F82C1CA:				; CODE XREF: sub_7F82C0B0+10Dj
		mov	eax, esi
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F82C0B0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82C1D4	proc near		; CODE XREF: sub_7F81D598+228p
					; sub_7F81DE67+222p

var_2C		= byte ptr -2Ch
var_28		= byte ptr -28h
var_1C		= byte ptr -1Ch
var_10		= dword	ptr -10h
var_C		= word ptr -0Ch
var_A		= dword	ptr -0Ah
var_6		= dword	ptr -6
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= word ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		inc	word_7F838070
		mov	ebp, esp
		sub	esp, 2Ch
		mov	[ebp+var_10], 0
		push	ebx
		push	esi
		push	edi
		push	4
		push	4
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82CFC5
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F82C216
		cmp	ebx, 1001h
		jnz	loc_7F82C334
		mov	ebx, 1009h
		jmp	loc_7F82C334
; ---------------------------------------------------------------------------

loc_7F82C216:				; CODE XREF: sub_7F82C1D4+2Aj
		lea	eax, [ebp+var_10]
		lea	ecx, [ebp+arg_4]
		push	eax
		push	1
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F82C334
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+var_10]
		call	sub_7F8199C3
		push	0Ah
		lea	ecx, [ebp+var_C]
		push	ecx
		lea	edx, [ebp+var_1C]
		push	edx
		call	sub_7F82FCE0
		movzx	eax, [ebp+arg_8]
		add	esp, 0Ch
		cmp	eax, 1
		jz	short loc_7F82C274
		cmp	eax, 2
		jz	short loc_7F82C292
		cmp	eax, 3
		jz	short loc_7F82C2B0
		cmp	eax, 4
		jz	short loc_7F82C2C3
		cmp	eax, 5
		jz	short loc_7F82C2D6
		mov	ebx, 1013h
		jmp	short loc_7F82C2E7
; ---------------------------------------------------------------------------

loc_7F82C274:				; CODE XREF: sub_7F82C1D4+83j
		mov	[ebp+var_A], 0
		mov	[ebp+var_6], 9
		mov	ax, [ebp+var_C]
		and	ax, 0FFFDh
		or	al, 1
		mov	[ebp+var_C], ax
		jmp	short loc_7F82C2E7
; ---------------------------------------------------------------------------

loc_7F82C292:				; CODE XREF: sub_7F82C1D4+88j
		mov	[ebp+var_A], 11h
		mov	[ebp+var_6], 12h
		mov	ax, [ebp+var_C]
		and	ax, 0FFFDh
		or	al, 1
		mov	[ebp+var_C], ax
		jmp	short loc_7F82C2E7
; ---------------------------------------------------------------------------

loc_7F82C2B0:				; CODE XREF: sub_7F82C1D4+8Dj
		or	byte ptr [ebp+var_C], 3
		mov	word ptr [ebp+var_6], 0
		mov	[ebp+var_A], 1Bh
		jmp	short loc_7F82C2E7
; ---------------------------------------------------------------------------

loc_7F82C2C3:				; CODE XREF: sub_7F82C1D4+92j
		or	byte ptr [ebp+var_C], 3
		mov	word ptr [ebp+var_6], 1
		mov	[ebp+var_A], 1Bh
		jmp	short loc_7F82C2E7
; ---------------------------------------------------------------------------

loc_7F82C2D6:				; CODE XREF: sub_7F82C1D4+97j
		or	byte ptr [ebp+var_C], 3
		mov	word ptr [ebp+var_6], 2
		mov	[ebp+var_A], 1Bh

loc_7F82C2E7:				; CODE XREF: sub_7F82C1D4+9Ej
					; sub_7F82C1D4+BCj ...
		test	ebx, ebx
		jnz	short loc_7F82C334
		mov	eax, [ebp+arg_C]
		push	0Ah
		shl	ax, 2
		lea	ecx, [ebp+var_1C]
		xor	ax, [ebp+var_C]
		push	ecx
		and	ax, 4
		lea	edx, [ebp+var_C]
		xor	[ebp+var_C], ax
		push	edx
		call	sub_7F81AF66
		test	eax, eax
		jz	short loc_7F82C326
		mov	eax, [ebp+arg_0]
		mov	ebx, 1
		mov	ecx, [eax]
		mov	edx, [ecx]
		test	byte ptr [edx+265h], 8
		jz	short loc_7F82C334

loc_7F82C326:				; CODE XREF: sub_7F82C1D4+13Bj
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+var_10]
		call	sub_7F8199E0
		mov	ebx, eax

loc_7F82C334:				; CODE XREF: sub_7F82C1D4+32j
					; sub_7F82C1D4+3Dj ...
		cmp	[ebp+var_10], 0
		jz	short loc_7F82C351
		lea	ecx, [ebp+var_10]
		cmp	ebx, 1
		sbb	eax, eax
		neg	eax
		push	eax
		push	ecx
		call	sub_7F81813C
		test	ebx, ebx
		jnz	short loc_7F82C388
		mov	ebx, eax

loc_7F82C351:				; CODE XREF: sub_7F82C1D4+164j
		test	ebx, ebx
		jnz	short loc_7F82C388
		cmp	word_7F838070, 1
		jnz	short loc_7F82C37D
		lea	esi, [ebp+var_C]
		lea	edi, [ebp+var_28]
		movsd
		movsd
		movsw
		lea	eax, [ebp+var_2C]
		push	eax
		push	20000h
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82A016

loc_7F82C37D:				; CODE XREF: sub_7F82C1D4+189j
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F828E0D

loc_7F82C388:				; CODE XREF: sub_7F82C1D4+179j
					; sub_7F82C1D4+17Fj
		dec	word_7F838070
		lea	eax, [ebx-1]
		pop	edi
		cmp	eax, 1
		mov	eax, 0
		pop	esi
		adc	eax, 0FFFFFFFFh
		and	eax, ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F82C1D4	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82C3A8	proc near		; CODE XREF: sub_7F80CBB5+452p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		xor	eax, eax
		push	esi
		push	edi
		mov	esi, [esp+0Ch+arg_8]
		mov	[esi], ax
		cmp	dword_7F838078,	eax
		jz	short loc_7F82C3C3
		mov	edi, 253h
		jmp	short loc_7F82C3F6
; ---------------------------------------------------------------------------

loc_7F82C3C3:				; CODE XREF: sub_7F82C3A8+12j
		mov	ecx, [esp+0Ch+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		xor	edi, edi
		mov	ebx, [edx]
		mov	dword_7F838078,	ebx
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx

loc_7F82C3F6:				; CODE XREF: sub_7F82C3A8+19j
		test	edi, edi
		jnz	short loc_7F82C462
		push	0
		push	[esp+10h+arg_4]
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F82C42F
		mov	cx, [eax+12h]
		and	cx, 800Ah
		cmp	cx, 800Ah
		jnz	short loc_7F82C423
		push	0
		push	dword ptr [eax+8]
		call	sub_7F8144A4

loc_7F82C423:				; CODE XREF: sub_7F82C3A8+6Fj
		test	eax, eax
		jz	short loc_7F82C42F
		mov	eax, [eax+0Ch]
		mov	[esi], ax
		jmp	short loc_7F82C434
; ---------------------------------------------------------------------------

loc_7F82C42F:				; CODE XREF: sub_7F82C3A8+5Fj
					; sub_7F82C3A8+7Dj
		mov	edi, 1009h

loc_7F82C434:				; CODE XREF: sub_7F82C3A8+85j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82C44A
		call	sub_7F82A34F
		jmp	short loc_7F82C458
; ---------------------------------------------------------------------------

loc_7F82C44A:				; CODE XREF: sub_7F82C3A8+99j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82C458:				; CODE XREF: sub_7F82C3A8+A0j
		mov	dword_7F838078,	0

loc_7F82C462:				; CODE XREF: sub_7F82C3A8+50j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_7F82C3A8	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82C46A	proc near		; CODE XREF: sub_7F810955+D7p
					; sub_7F81B8F0+D1p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	eax, 253h
		cmp	dword_7F838078,	0
		jnz	short loc_7F82C4AC
		mov	ecx, [esp+4+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	esi, [edx]
		mov	dword_7F838078,	esi
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx
		xor	eax, eax

loc_7F82C4AC:				; CODE XREF: sub_7F82C46A+Dj
		test	eax, eax
		jnz	short loc_7F82C506
		push	0
		push	[esp+8+arg_4]
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F82C4D8
		cmp	[esp+4+arg_8], 0
		jz	short loc_7F82C4CE
		and	word ptr [eax+10h], 0F7FFh
		jmp	short loc_7F82C4D2
; ---------------------------------------------------------------------------

loc_7F82C4CE:				; CODE XREF: sub_7F82C46A+5Aj
		or	byte ptr [eax+11h], 8

loc_7F82C4D2:				; CODE XREF: sub_7F82C46A+62j
		push	eax
		call	sub_7F8148F7

loc_7F82C4D8:				; CODE XREF: sub_7F82C46A+53j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82C4EE
		call	sub_7F82A34F
		jmp	short loc_7F82C4FC
; ---------------------------------------------------------------------------

loc_7F82C4EE:				; CODE XREF: sub_7F82C46A+7Bj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82C4FC:				; CODE XREF: sub_7F82C46A+82j
		mov	dword_7F838078,	0

loc_7F82C506:				; CODE XREF: sub_7F82C46A+44j
		pop	esi
		retn	0Ch
sub_7F82C46A	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82C50A	proc near		; CODE XREF: sub_7F81B8F0+E2p
					; sub_7F81BF33+388p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= word ptr  0Ch

		cmp	dword_7F838078,	0
		mov	eax, 253h
		jnz	short loc_7F82C54A
		mov	ecx, [esp+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	eax, [edx]
		mov	dword_7F838078,	eax
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx
		xor	eax, eax

loc_7F82C54A:				; CODE XREF: sub_7F82C50A+Cj
		test	eax, eax
		jnz	short locret_7F82C5A7
		push	0
		push	[esp+4+arg_4]
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F82C579
		mov	ecx, [eax+0Ch]
		add	cx, [esp+arg_8]
		test	cx, cx
		jg	short loc_7F82C56D
		xor	cx, cx

loc_7F82C56D:				; CODE XREF: sub_7F82C50A+5Ej
		movsx	ecx, cx
		push	eax
		mov	[eax+0Ch], ecx
		call	sub_7F8148F7

loc_7F82C579:				; CODE XREF: sub_7F82C50A+51j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82C58F
		call	sub_7F82A34F
		jmp	short loc_7F82C59D
; ---------------------------------------------------------------------------

loc_7F82C58F:				; CODE XREF: sub_7F82C50A+7Cj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82C59D:				; CODE XREF: sub_7F82C50A+83j
		mov	dword_7F838078,	0

locret_7F82C5A7:			; CODE XREF: sub_7F82C50A+42j
		retn	0Ch
sub_7F82C50A	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82C5AA	proc near		; CODE XREF: sub_7F81D598+307p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= word ptr  0Ch

		cmp	dword_7F838078,	0
		mov	eax, 253h
		jnz	short loc_7F82C5EA
		mov	ecx, [esp+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	eax, [edx]
		mov	dword_7F838078,	eax
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx
		xor	eax, eax

loc_7F82C5EA:				; CODE XREF: sub_7F82C5AA+Cj
		test	eax, eax
		jnz	short locret_7F82C639
		push	0
		push	[esp+4+arg_4]
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F82C60B
		movsx	ecx, [esp+arg_8]
		push	eax
		mov	[eax+0Ch], ecx
		call	sub_7F8148F7

loc_7F82C60B:				; CODE XREF: sub_7F82C5AA+51j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82C621
		call	sub_7F82A34F
		jmp	short loc_7F82C62F
; ---------------------------------------------------------------------------

loc_7F82C621:				; CODE XREF: sub_7F82C5AA+6Ej
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82C62F:				; CODE XREF: sub_7F82C5AA+75j
		mov	dword_7F838078,	0

locret_7F82C639:			; CODE XREF: sub_7F82C5AA+42j
		retn	0Ch
sub_7F82C5AA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82C63C	proc near		; CODE XREF: sub_7F81BF33+199p
					; sub_7F81D22C+2Dp

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

		cmp	dword_7F838078,	0
		push	ebp
		mov	ebp, esp
		push	esi
		jz	short loc_7F82C650
		mov	esi, 253h
		jmp	short loc_7F82C682
; ---------------------------------------------------------------------------

loc_7F82C650:				; CODE XREF: sub_7F82C63C+Bj
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	esi, [edx]
		mov	dword_7F838078,	esi
		xor	esi, esi
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx

loc_7F82C682:				; CODE XREF: sub_7F82C63C+12j
		test	esi, esi
		jnz	short loc_7F82C6FB
		push	0
		push	[ebp+arg_4]
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F82C6C8
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_7F82C6A0
		mov	edx, [eax+8]
		mov	[ecx], edx

loc_7F82C6A0:				; CODE XREF: sub_7F82C63C+5Dj
		mov	ecx, [ebp+arg_C]
		test	ecx, ecx
		jz	short loc_7F82C6AC
		mov	edx, [eax+0Ch]
		mov	[ecx], edx

loc_7F82C6AC:				; CODE XREF: sub_7F82C63C+69j
		mov	ecx, [ebp+arg_10]
		test	ecx, ecx
		jz	short loc_7F82C6CD
		mov	ax, [eax+10h]
		and	ax, 800h
		cmp	ax, 1
		sbb	eax, eax
		neg	eax
		mov	[ecx], ax
		jmp	short loc_7F82C6CD
; ---------------------------------------------------------------------------

loc_7F82C6C8:				; CODE XREF: sub_7F82C63C+56j
		mov	esi, 1008h

loc_7F82C6CD:				; CODE XREF: sub_7F82C63C+75j
					; sub_7F82C63C+8Aj
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82C6E3
		call	sub_7F82A34F
		jmp	short loc_7F82C6F1
; ---------------------------------------------------------------------------

loc_7F82C6E3:				; CODE XREF: sub_7F82C63C+9Ej
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82C6F1:				; CODE XREF: sub_7F82C63C+A5j
		mov	dword_7F838078,	0

loc_7F82C6FB:				; CODE XREF: sub_7F82C63C+48j
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	14h
sub_7F82C63C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82C702	proc near		; CODE XREF: sub_7F81C56F+246p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= word ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		push	esi
		push	edi
		mov	esi, [ebp+arg_C]
		mov	[esi], ax
		cmp	dword_7F838078,	eax
		mov	eax, 253h
		jnz	short loc_7F82C74E
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	edi, [edx]
		mov	dword_7F838078,	edi
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx
		xor	eax, eax

loc_7F82C74E:				; CODE XREF: sub_7F82C702+18j
		test	eax, eax
		jnz	short loc_7F82C7B5
		mov	di, [ebp+arg_8]
		mov	ax, di
		dec	di
		test	ax, ax
		jle	short loc_7F82C787

loc_7F82C760:				; CODE XREF: sub_7F82C702+83j
		mov	eax, [ebp+arg_4]
		push	0
		add	[ebp+arg_4], 4
		push	dword ptr [eax]
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F82C77D
		test	byte ptr [eax+11h], 8
		jz	short loc_7F82C77D
		inc	word ptr [esi]

loc_7F82C77D:				; CODE XREF: sub_7F82C702+70j
					; sub_7F82C702+76j
		mov	ax, di
		dec	di
		test	ax, ax
		jg	short loc_7F82C760

loc_7F82C787:				; CODE XREF: sub_7F82C702+5Cj
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82C79D
		call	sub_7F82A34F
		jmp	short loc_7F82C7AB
; ---------------------------------------------------------------------------

loc_7F82C79D:				; CODE XREF: sub_7F82C702+92j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82C7AB:				; CODE XREF: sub_7F82C702+99j
		mov	dword_7F838078,	0

loc_7F82C7B5:				; CODE XREF: sub_7F82C702+4Ej
		pop	edi
		pop	esi
		pop	ebp
		retn	10h
sub_7F82C702	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82C7BB	proc near		; CODE XREF: sub_7F81C56F+3D2p
					; sub_7F82929F+281p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= word ptr  10h
arg_C		= word ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_10]
		mov	[esi], ax
		cmp	dword_7F838078,	eax
		mov	eax, 253h
		jnz	short loc_7F82C808
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	ebx, [edx]
		mov	dword_7F838078,	ebx
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx
		xor	eax, eax

loc_7F82C808:				; CODE XREF: sub_7F82C7BB+19j
		test	eax, eax
		jnz	short loc_7F82C878
		mov	di, [ebp+arg_8]
		mov	ax, di
		dec	di
		test	ax, ax
		jle	short loc_7F82C84A
		mov	ebx, [ebp+arg_4]

loc_7F82C81D:				; CODE XREF: sub_7F82C7BB+8Dj
		mov	ax, [ebp+arg_C]
		cmp	[ebx], ax
		jnz	short loc_7F82C83D
		push	0
		push	dword ptr [ebx+4]
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F82C83D
		test	byte ptr [eax+11h], 8
		jz	short loc_7F82C83D
		inc	word ptr [esi]

loc_7F82C83D:				; CODE XREF: sub_7F82C7BB+69j
					; sub_7F82C7BB+77j ...
		mov	ax, di
		add	ebx, 8
		dec	di
		test	ax, ax
		jg	short loc_7F82C81D

loc_7F82C84A:				; CODE XREF: sub_7F82C7BB+5Dj
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82C860
		call	sub_7F82A34F
		jmp	short loc_7F82C86E
; ---------------------------------------------------------------------------

loc_7F82C860:				; CODE XREF: sub_7F82C7BB+9Cj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82C86E:				; CODE XREF: sub_7F82C7BB+A3j
		mov	dword_7F838078,	0

loc_7F82C878:				; CODE XREF: sub_7F82C7BB+4Fj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	14h
sub_7F82C7BB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82C87F	proc near		; CODE XREF: sub_7F829880+38p
					; sub_7F829880+49p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= byte ptr -2
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		lea	eax, [ebp+var_2]
		push	esi
		push	edi
		xor	edi, edi
		mov	ebx, [ebp+arg_0]
		push	edi
		push	eax
		push	edi
		push	edi
		push	[ebp+arg_4]
		push	ebx
		call	sub_7F82D114
		cmp	eax, edi
		mov	esi, eax
		jnz	loc_7F82C96D
		test	[ebp+var_1], 8
		jz	short loc_7F82C8E8
		lea	eax, [ebp+var_8]
		mov	[ebp+var_8], edi
		push	eax
		push	edi
		push	[ebp+arg_4]
		push	ebx
		call	sub_7F816C79
		cmp	eax, edi
		mov	esi, eax
		jnz	loc_7F82C96D
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+arg_8]
		mov	eax, [eax]
		push	[ebp+var_8]
		movzx	ecx, word ptr [eax]
		mov	ax, [ecx+eax+6]
		mov	[edx], ax
		call	sub_7F82F1E1
		jmp	loc_7F82C96D
; ---------------------------------------------------------------------------

loc_7F82C8E8:				; CODE XREF: sub_7F82C87F+2Cj
		push	2
		push	[ebp+arg_4]
		push	ebx
		call	sub_7F81155C
		test	eax, eax
		jz	short loc_7F82C904
		mov	eax, [eax]
		mov	ecx, [ebp+arg_8]
		mov	ax, [eax]
		mov	[ecx], ax
		jmp	short loc_7F82C96D
; ---------------------------------------------------------------------------

loc_7F82C904:				; CODE XREF: sub_7F82C87F+76j
		xor	edi, edi
		lea	eax, [ebp+arg_4]
		push	edi
		lea	ecx, [ebp+var_8]
		push	8040h
		mov	[ebp+var_8], edi
		push	eax
		push	ecx
		push	ebx
		call	sub_7F824835
		cmp	eax, edi
		mov	esi, eax
		jnz	short loc_7F82C95C
		push	edi
		lea	eax, [ebp+var_C]
		push	eax
		lea	ecx, [ebp+var_10]
		mov	[ebp+var_C], 4
		push	ecx
		push	[ebp+var_8]
		call	sub_7F824CAB
		cmp	eax, edi
		mov	esi, eax
		jnz	short loc_7F82C95C
		push	[ebp+var_10]
		mov	[ebp+var_C], 2
		lea	ecx, [ebp+var_C]
		push	ecx
		push	[ebp+arg_8]
		push	[ebp+var_8]
		call	sub_7F824CAB
		mov	esi, eax

loc_7F82C95C:				; CODE XREF: sub_7F82C87F+A2j
					; sub_7F82C87F+C0j
		cmp	[ebp+var_8], 0
		jz	short loc_7F82C96D
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F824AF5

loc_7F82C96D:				; CODE XREF: sub_7F82C87F+22j
					; sub_7F82C87F+43j ...
		test	esi, esi
		jz	short loc_7F82C979
		mov	ecx, [ebp+arg_8]
		mov	word ptr [ecx],	0

loc_7F82C979:				; CODE XREF: sub_7F82C87F+F0j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F82C87F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82C984	proc near		; CODE XREF: sub_7F82CB67+64p

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, 4
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F81990D
		mov	esi, [ebp+arg_C]
		push	edi
		push	eax
		mov	[esi], eax
		call	sub_7F82F03B
		mov	ebx, eax
		mov	eax, [ebp+arg_8]
		test	ebx, ebx
		mov	[eax], ebx
		jnz	short loc_7F82C9BA
		mov	eax, 400h
		mov	[esi], edi
		jmp	short loc_7F82C9E6
; ---------------------------------------------------------------------------

loc_7F82C9BA:				; CODE XREF: sub_7F82C984+2Bj
		push	esi
		xor	edi, edi
		push	ebx
		push	edi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F818D47
		mov	[ebp+var_4], eax
		cmp	eax, edi
		mov	eax, 0
		jz	short loc_7F82C9E6
		push	ebx
		call	sub_7F82F149
		mov	eax, [ebp+arg_8]
		mov	[eax], edi
		mov	eax, [ebp+var_4]
		mov	[esi], edi

loc_7F82C9E6:				; CODE XREF: sub_7F82C984+34j
					; sub_7F82C984+50j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F82C984	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82C9EF	proc near		; CODE XREF: sub_7F82110E+2B5p

var_24		= word ptr -24h
var_22		= word ptr -22h
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_2		= byte ptr -2
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	ebx
		lea	eax, [ebp+var_8]
		push	esi
		lea	ecx, [ebp+var_18]
		mov	[ebp+var_18], 73434D80h
		mov	[ebp+var_8], 0
		push	edi
		push	eax
		push	2
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F82CB32
		and	[ebp+var_24], 0FFFBh
		and	[ebp+var_24], 0FFFCh
		mov	[ebp+var_22], 0FFFFh
		lea	eax, [ebp+var_24]
		push	eax
		push	[ebp+var_8]
		call	sub_7F8199E0
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F82CB32
		mov	si, 1
		mov	edi, offset word_7F835938
		cmp	word_7F835938, 0
		jz	loc_7F82CB32

loc_7F82CA61:				; CODE XREF: sub_7F82C9EF+13Dj
		movsx	eax, word ptr [edi]
		push	eax
		call	sub_7F82AC7E
		push	eax		; lpString
		mov	[ebp+var_14], eax
		call	ds:lstrlenA
		inc	eax
		mov	[ebp+var_C], eax
		mov	eax, [edi+2]
		movzx	ecx, byte ptr [eax]
		movzx	edx, byte ptr [eax+1]
		shl	ecx, 8
		mov	eax, [ebp+var_C]
		add	ecx, edx
		lea	edx, [ebp+var_2]
		add	eax, ecx
		mov	[ebp+var_10], ecx
		movzx	ecx, si
		add	eax, 4
		push	eax
		push	ecx
		push	edx
		push	[ebp+var_8]
		call	sub_7F818B75
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_7F82CB32
		push	2
		lea	eax, [ebp+var_C]
		push	eax
		lea	ecx, [ebp+var_2]
		push	0
		push	ecx
		push	[ebp+var_8]
		call	sub_7F818DC7
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F82CB32
		push	[ebp+var_C]
		push	[ebp+var_14]
		push	2
		lea	edx, [ebp+var_2]
		push	edx
		push	[ebp+var_8]
		call	sub_7F818DC7
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F82CB32
		push	2
		lea	eax, [ebp+var_10]
		push	eax
		lea	ecx, [ebp+var_2]
		mov	eax, [ebp+var_C]
		add	eax, 2
		push	eax
		push	ecx
		push	[ebp+var_8]
		call	sub_7F818DC7
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F82CB32
		mov	eax, [edi+2]
		lea	ecx, [ebp+var_2]
		push	[ebp+var_10]
		add	eax, 2
		push	eax
		mov	eax, [ebp+var_C]
		add	eax, 4
		push	eax
		push	ecx
		push	[ebp+var_8]
		call	sub_7F818DC7
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F82CB32
		inc	si
		add	edi, 6
		cmp	word ptr [edi],	0
		jnz	loc_7F82CA61

loc_7F82CB32:				; CODE XREF: sub_7F82C9EF+2Dj
					; sub_7F82C9EF+55j ...
		cmp	[ebp+var_8], 0
		jz	short loc_7F82CB5C
		lea	ecx, [ebp+var_8]
		cmp	ebx, 1
		sbb	eax, eax
		neg	eax
		push	eax
		push	ecx
		call	sub_7F81813C
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F82CB5C
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		mov	ebx, esi
		call	sub_7F81813C

loc_7F82CB5C:				; CODE XREF: sub_7F82C9EF+147j
					; sub_7F82C9EF+15Ej
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F82C9EF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82CB67	proc near		; CODE XREF: sub_7F80E2BF+6Fp

var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		mov	[ebp+var_4], eax
		push	esi
		mov	[ebp+var_8], eax
		push	edi
		mov	esi, [ebp+arg_10]
		mov	[ebp+var_C], 73434D80h
		cmp	esi, eax
		jz	short loc_7F82CB88
		mov	[esi], eax

loc_7F82CB88:				; CODE XREF: sub_7F82CB67+1Dj
		lea	eax, [ebp+var_8]
		lea	ecx, [ebp+var_C]
		push	eax
		push	0
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F82CC24
		movzx	eax, [ebp+arg_4]
		push	0
		push	eax
		push	[ebp+var_8]
		call	sub_7F8194ED
		test	ax, ax
		jge	short loc_7F82CBBF
		mov	edi, 1004h
		jmp	short loc_7F82CC24
; ---------------------------------------------------------------------------

loc_7F82CBBF:				; CODE XREF: sub_7F82CB67+4Fj
		lea	ecx, [ebp+var_10]
		lea	edx, [ebp+var_4]
		push	ecx
		push	edx
		push	eax
		push	[ebp+var_8]
		call	sub_7F82C984
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F82CC24
		cmp	[ebp+arg_8], 0
		jz	short loc_7F82CC15
		mov	ebx, [ebp+arg_C]
		test	ebx, ebx
		jz	short loc_7F82CC15
		mov	ecx, [ebx]
		test	ecx, ecx
		jz	short loc_7F82CC15
		mov	eax, [ebp+var_4]
		movzx	eax, word ptr [eax]
		cmp	eax, ecx
		jb	short loc_7F82CBF5
		mov	eax, ecx

loc_7F82CBF5:				; CODE XREF: sub_7F82CB67+8Aj
		mov	[ebx], eax
		dec	eax
		push	eax
		mov	eax, [ebp+var_4]
		add	eax, 2
		push	eax
		push	[ebp+arg_8]
		call	sub_7F82FCE0
		mov	edx, [ebp+arg_8]
		add	esp, 0Ch
		mov	ecx, [ebx]
		mov	byte ptr [ecx+edx-1], 0

loc_7F82CC15:				; CODE XREF: sub_7F82CB67+73j
					; sub_7F82CB67+7Aj ...
		test	esi, esi
		jz	short loc_7F82CC24
		push	esi
		push	[ebp+var_4]
		call	sub_7F82CC4E
		mov	edi, eax

loc_7F82CC24:				; CODE XREF: sub_7F82CB67+37j
					; sub_7F82CB67+56j ...
		cmp	[ebp+var_4], 0
		jz	short loc_7F82CC32
		push	[ebp+var_4]
		call	sub_7F82F149

loc_7F82CC32:				; CODE XREF: sub_7F82CB67+C1j
		cmp	[ebp+var_8], 0
		jz	short loc_7F82CC43
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_7F81813C

loc_7F82CC43:				; CODE XREF: sub_7F82CB67+CFj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F82CB67	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82CC4E	proc near		; CODE XREF: sub_7F82CB67+B6p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		movzx	eax, word ptr [esi]
		push	ebp
		add	eax, 2
		add	esi, eax
		xor	eax, eax
		cmp	[esi], ax
		jnz	short loc_7F82CC6D
		mov	edi, [esp+10h+arg_4]
		mov	[edi], eax
		jmp	short loc_7F82CCCA
; ---------------------------------------------------------------------------

loc_7F82CC6D:				; CODE XREF: sub_7F82CC4E+15j
		push	0
		push	6
		call	sub_7F82F18D
		mov	edi, [esp+10h+arg_4]
		test	eax, eax
		mov	[edi], eax
		jnz	short loc_7F82CC87
		mov	eax, 400h
		jmp	short loc_7F82CCCA
; ---------------------------------------------------------------------------

loc_7F82CC87:				; CODE XREF: sub_7F82CC4E+30j
		mov	ebp, [eax]
		xor	ebx, ebx
		mov	ax, [esi]
		push	ebx
		mov	[ebp+0], ax
		add	esi, 2
		movzx	eax, ax
		push	eax
		call	sub_7F82F18D
		mov	ecx, eax
		mov	[ebp+2], eax
		test	ecx, ecx
		jnz	short loc_7F82CCB8
		push	dword ptr [edi]
		call	sub_7F82F1E1
		mov	eax, 400h
		mov	[edi], ebx
		jmp	short loc_7F82CCCA
; ---------------------------------------------------------------------------

loc_7F82CCB8:				; CODE XREF: sub_7F82CC4E+58j
		movzx	eax, word ptr [ebp+0]
		push	eax
		push	esi
		push	dword ptr [ecx]
		call	sub_7F82FCE0
		add	esp, 0Ch
		xor	eax, eax

loc_7F82CCCA:				; CODE XREF: sub_7F82CC4E+1Dj
					; sub_7F82CC4E+37j ...
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F82CC4E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82CCD1	proc near		; CODE XREF: sub_7F82110E+39p

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_2		= byte ptr -2
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		mov	[ebp+var_18], 20634D80h
		mov	[ebp+var_14], 73434D80h
		push	ebx
		lea	eax, [ebp+var_10]
		push	esi
		push	edi
		xor	esi, esi
		push	eax
		push	esi
		lea	ecx, [ebp+var_18]
		push	ecx
		mov	[ebp+var_10], esi
		push	[ebp+arg_0]
		mov	[ebp+var_C], esi
		call	sub_7F817E9D
		cmp	eax, esi
		mov	edi, eax
		jnz	loc_7F82CDF5
		lea	eax, [ebp+var_C]
		lea	ecx, [ebp+var_14]
		push	eax
		push	2
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		cmp	eax, esi
		mov	edi, eax
		jz	short loc_7F82CD36
		cmp	edi, 100Ah
		jnz	loc_7F82CDF5
		xor	edi, edi
		jmp	loc_7F82CDF5
; ---------------------------------------------------------------------------

loc_7F82CD36:				; CODE XREF: sub_7F82CCD1+50j
		push	[ebp+var_10]
		call	sub_7F8198FC
		mov	bx, ax
		xor	si, si
		test	bx, bx
		jle	loc_7F82CDF5

loc_7F82CD4D:				; CODE XREF: sub_7F82CCD1+11Ej
		mov	[ebp+var_8], 21Bh
		lea	eax, [ebp+var_8]
		push	eax
		push	offset word_7F8367DA
		push	0
		push	esi
		push	[ebp+var_10]
		call	sub_7F818D47
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F82CD7C
		cmp	edi, 1014h
		jnz	short loc_7F82CDF5
		cmp	[ebp+var_8], 0
		jbe	short loc_7F82CDF5

loc_7F82CD7C:				; CODE XREF: sub_7F82CCD1+9Bj
		mov	eax, [ebp+var_8]
		push	offset word_7F8367DA ; lpString
		mov	byte ptr word_7F8367DA[eax], 0
		call	ds:lstrlenA
		inc	eax
		push	esi
		push	[ebp+var_10]
		mov	ReturnedString,	ax
		mov	[ebp+var_8], eax
		call	sub_7F819508
		mov	ecx, [ebp+var_8]
		lea	edx, [ebp+var_2]
		mov	word_7F8367DA[ecx], 0
		movzx	eax, ax
		add	ecx, 4
		push	ecx
		push	eax
		push	edx
		push	[ebp+var_C]
		call	sub_7F818B75
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F82CDF5
		mov	eax, [ebp+var_8]
		lea	ecx, [ebp+var_2]
		add	eax, 4
		push	eax
		push	offset ReturnedString
		push	0
		push	ecx
		push	[ebp+var_C]
		call	sub_7F818DC7
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F82CDF5
		inc	si
		cmp	bx, si
		jg	loc_7F82CD4D

loc_7F82CDF5:				; CODE XREF: sub_7F82CCD1+34j
					; sub_7F82CCD1+58j ...
		cmp	[ebp+var_10], 0
		jz	short loc_7F82CE06
		push	0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_7F81813C

loc_7F82CE06:				; CODE XREF: sub_7F82CCD1+128j
		cmp	[ebp+var_C], 0
		jz	short loc_7F82CE30
		lea	ecx, [ebp+var_C]
		cmp	edi, 1
		sbb	eax, eax
		neg	eax
		push	eax
		push	ecx
		call	sub_7F81813C
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F82CE30
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		mov	edi, esi
		call	sub_7F81813C

loc_7F82CE30:				; CODE XREF: sub_7F82CCD1+139j
					; sub_7F82CCD1+150j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F82CCD1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82CE3B	proc near		; CODE XREF: sub_7F82110E+2C9p

var_1C		= dword	ptr -1Ch
var_18		= word ptr -18h
var_16		= dword	ptr -16h
var_12		= word ptr -12h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= byte ptr -2
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		mov	[ebp+var_1C], 0FF00008Ah
		push	ebx
		lea	eax, [ebp+var_8]
		push	esi
		push	edi
		xor	esi, esi
		push	eax
		push	2
		lea	ecx, [ebp+var_1C]
		push	ecx
		mov	[ebp+var_8], esi
		push	[ebp+arg_0]
		mov	[ebp+var_C], esi
		call	sub_7F817E9D
		cmp	eax, esi
		mov	ebx, eax
		jnz	short loc_7F82CEE9
		mov	[ebp+var_12], si
		lea	eax, [ebp+var_18]
		push	eax
		mov	[ebp+var_16], esi
		push	[ebp+var_8]
		and	[ebp+var_18], 0FFFBh
		or	byte ptr [ebp+var_18], 3
		call	sub_7F8199E0
		cmp	eax, esi
		mov	ebx, eax
		jnz	short loc_7F82CEE9
		mov	edi, offset dword_7F835950
		cmp	dword_7F835950,	esi
		jz	short loc_7F82CEE9

loc_7F82CE9B:				; CODE XREF: sub_7F82CE3B+ACj
		push	dword ptr [edi+4] ; lpString
		call	ds:lstrlenA
		lea	esi, [eax+1]
		lea	eax, [ebp+var_C]
		push	eax
		push	esi
		push	dword ptr [edi]
		push	[ebp+var_8]
		call	sub_7F819BC5
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F82CEE9
		push	esi
		push	dword ptr [edi+4]
		push	[ebp+var_C]
		call	sub_7F81A03B
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F82CEE9
		lea	eax, [ebp+var_2]
		lea	ecx, [ebp+var_C]
		push	eax
		push	ecx
		call	sub_7F81A0C1
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F82CEE9
		add	edi, 8
		cmp	dword ptr [edi], 0
		jnz	short loc_7F82CE9B

loc_7F82CEE9:				; CODE XREF: sub_7F82CE3B+2Ej
					; sub_7F82CE3B+51j ...
		cmp	[ebp+var_C], 0
		jz	short loc_7F82CEFC
		lea	eax, [ebp+var_2]
		lea	ecx, [ebp+var_C]
		push	eax
		push	ecx
		call	sub_7F81A0C1

loc_7F82CEFC:				; CODE XREF: sub_7F82CE3B+B2j
		cmp	[ebp+var_8], 0
		jz	short loc_7F82CF19
		lea	ecx, [ebp+var_8]
		cmp	ebx, 1
		sbb	eax, eax
		neg	eax
		push	eax
		push	ecx
		call	sub_7F81813C
		test	ebx, ebx
		jnz	short loc_7F82CF19
		mov	ebx, eax

loc_7F82CF19:				; CODE XREF: sub_7F82CE3B+C5j
					; sub_7F82CE3B+DAj
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F82CE3B	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82CF24	proc near		; CODE XREF: sub_7F81039F+40p
					; sub_7F810567+80p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= word ptr  0Ch

		cmp	dword_7F838078,	0
		push	esi
		jz	short loc_7F82CF35
		mov	esi, 253h
		jmp	short loc_7F82CF68
; ---------------------------------------------------------------------------

loc_7F82CF35:				; CODE XREF: sub_7F82CF24+8j
		mov	ecx, [esp+4+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	esi, [edx]
		mov	dword_7F838078,	esi
		xor	esi, esi
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx

loc_7F82CF68:				; CODE XREF: sub_7F82CF24+Fj
		test	esi, esi
		jnz	short loc_7F82CFBF
		push	0
		push	[esp+8+arg_4]
		call	sub_7F8144A4
		test	eax, eax
		jnz	short loc_7F82CF82
		mov	esi, 1001h
		jmp	short loc_7F82CF91
; ---------------------------------------------------------------------------

loc_7F82CF82:				; CODE XREF: sub_7F82CF24+55j
		mov	cx, [esp+4+arg_8]
		push	eax
		mov	[eax+12h], cx
		call	sub_7F8148F7

loc_7F82CF91:				; CODE XREF: sub_7F82CF24+5Cj
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82CFA7
		call	sub_7F82A34F
		jmp	short loc_7F82CFB5
; ---------------------------------------------------------------------------

loc_7F82CFA7:				; CODE XREF: sub_7F82CF24+7Aj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82CFB5:				; CODE XREF: sub_7F82CF24+81j
		mov	dword_7F838078,	0

loc_7F82CFBF:				; CODE XREF: sub_7F82CF24+46j
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_7F82CF24	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82CFC5	proc near		; CODE XREF: sub_7F81028C+88p
					; sub_7F81028C+C0p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= word ptr  10h
arg_C		= word ptr  14h

		cmp	dword_7F838078,	0
		push	ebp
		mov	ebp, esp
		push	esi
		jz	short loc_7F82CFD9
		mov	esi, 253h
		jmp	short loc_7F82D00B
; ---------------------------------------------------------------------------

loc_7F82CFD9:				; CODE XREF: sub_7F82CFC5+Bj
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	esi, [edx]
		mov	dword_7F838078,	esi
		xor	esi, esi
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx

loc_7F82D00B:				; CODE XREF: sub_7F82CFC5+12j
		test	esi, esi
		jnz	short loc_7F82D06C
		push	0
		push	[ebp+arg_4]
		call	sub_7F8144A4
		test	eax, eax
		jnz	short loc_7F82D024
		mov	esi, 1001h
		jmp	short loc_7F82D03E
; ---------------------------------------------------------------------------

loc_7F82D024:				; CODE XREF: sub_7F82CFC5+56j
		mov	ax, [eax+12h]
		mov	cx, [ebp+arg_C]
		and	ax, [ebp+arg_C]
		and	cx, [ebp+arg_8]
		cmp	ax, cx
		jz	short loc_7F82D03E
		mov	esi, 1015h

loc_7F82D03E:				; CODE XREF: sub_7F82CFC5+5Dj
					; sub_7F82CFC5+72j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82D054
		call	sub_7F82A34F
		jmp	short loc_7F82D062
; ---------------------------------------------------------------------------

loc_7F82D054:				; CODE XREF: sub_7F82CFC5+86j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82D062:				; CODE XREF: sub_7F82CFC5+8Dj
		mov	dword_7F838078,	0

loc_7F82D06C:				; CODE XREF: sub_7F82CFC5+48j
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	10h
sub_7F82CFC5	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82D073	proc near		; CODE XREF: sub_7F80D08D+23p
					; sub_7F80D1F3+151p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		cmp	dword_7F838078,	0
		push	esi
		jz	short loc_7F82D084
		mov	esi, 253h
		jmp	short loc_7F82D0B7
; ---------------------------------------------------------------------------

loc_7F82D084:				; CODE XREF: sub_7F82D073+8j
		mov	ecx, [esp+4+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	esi, [edx]
		mov	dword_7F838078,	esi
		xor	esi, esi
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx

loc_7F82D0B7:				; CODE XREF: sub_7F82D073+Fj
		test	esi, esi
		jnz	short loc_7F82D10E
		push	0
		push	[esp+8+arg_4]
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F82D0DB
		test	byte ptr [eax+13h], 80h
		jz	short loc_7F82D0DB
		mov	ecx, [eax+8]
		mov	eax, [esp+4+arg_8]
		mov	[eax], ecx
		jmp	short loc_7F82D0E0
; ---------------------------------------------------------------------------

loc_7F82D0DB:				; CODE XREF: sub_7F82D073+55j
					; sub_7F82D073+5Bj
		mov	esi, 1001h

loc_7F82D0E0:				; CODE XREF: sub_7F82D073+66j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82D0F6
		call	sub_7F82A34F
		jmp	short loc_7F82D104
; ---------------------------------------------------------------------------

loc_7F82D0F6:				; CODE XREF: sub_7F82D073+7Aj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82D104:				; CODE XREF: sub_7F82D073+81j
		mov	dword_7F838078,	0

loc_7F82D10E:				; CODE XREF: sub_7F82D073+46j
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_7F82D073	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82D114	proc near		; CODE XREF: sub_7F81028C+4Dp
					; sub_7F81039F+F6p ...

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

		cmp	dword_7F838078,	0
		push	ebp
		mov	ebp, esp
		push	esi
		jz	short loc_7F82D128
		mov	esi, 253h
		jmp	short loc_7F82D15A
; ---------------------------------------------------------------------------

loc_7F82D128:				; CODE XREF: sub_7F82D114+Bj
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	esi, [edx]
		mov	dword_7F838078,	esi
		xor	esi, esi
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx

loc_7F82D15A:				; CODE XREF: sub_7F82D114+12j
		test	esi, esi
		jnz	short loc_7F82D1D8
		push	0
		push	[ebp+arg_4]
		call	sub_7F8144A4
		test	eax, eax
		jz	short loc_7F82D1A5
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_7F82D178
		mov	edx, [eax+8]
		mov	[ecx], edx

loc_7F82D178:				; CODE XREF: sub_7F82D114+5Dj
		mov	ecx, [ebp+arg_C]
		test	ecx, ecx
		jz	short loc_7F82D184
		mov	edx, [eax+0Ch]
		mov	[ecx], edx

loc_7F82D184:				; CODE XREF: sub_7F82D114+69j
		mov	ecx, [ebp+arg_10]
		test	ecx, ecx
		jz	short loc_7F82D192
		mov	dx, [eax+12h]
		mov	[ecx], dx

loc_7F82D192:				; CODE XREF: sub_7F82D114+75j
		mov	ecx, [ebp+arg_14]
		test	ecx, ecx
		jz	short loc_7F82D1AA
		mov	eax, [eax+14h]
		and	eax, 7FFFFFFFh
		mov	[ecx], eax
		jmp	short loc_7F82D1AA
; ---------------------------------------------------------------------------

loc_7F82D1A5:				; CODE XREF: sub_7F82D114+56j
		mov	esi, 1001h

loc_7F82D1AA:				; CODE XREF: sub_7F82D114+83j
					; sub_7F82D114+8Fj
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82D1C0
		call	sub_7F82A34F
		jmp	short loc_7F82D1CE
; ---------------------------------------------------------------------------

loc_7F82D1C0:				; CODE XREF: sub_7F82D114+A3j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82D1CE:				; CODE XREF: sub_7F82D114+AAj
		mov	dword_7F838078,	0

loc_7F82D1D8:				; CODE XREF: sub_7F82D114+48j
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	18h
sub_7F82D114	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82D1DF	proc near		; CODE XREF: sub_7F81B21F+F6p
					; sub_7F81B8F0+F5p ...

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

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	si, [ebp+arg_8]
		test	si, si
		jg	short loc_7F82D1F5
		xor	eax, eax
		jmp	loc_7F82D2B7
; ---------------------------------------------------------------------------

loc_7F82D1F5:				; CODE XREF: sub_7F82D1DF+Dj
		cmp	dword_7F838078,	0
		jz	short loc_7F82D205
		mov	edi, 253h
		jmp	short loc_7F82D237
; ---------------------------------------------------------------------------

loc_7F82D205:				; CODE XREF: sub_7F82D1DF+1Dj
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		xor	edi, edi
		mov	ebx, [edx]
		mov	dword_7F838078,	ebx
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx

loc_7F82D237:				; CODE XREF: sub_7F82D1DF+24j
		test	edi, edi
		jnz	short loc_7F82D2B5
		mov	ax, si
		dec	si
		test	ax, ax
		jle	short loc_7F82D287

loc_7F82D245:				; CODE XREF: sub_7F82D1DF+A6j
		mov	eax, [ebp+arg_4]
		push	0
		add	[ebp+arg_4], 4
		push	dword ptr [eax]
		call	sub_7F8144A4
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F82D27D
		cmp	[ebp+arg_10], 0
		mov	eax, [ebp+arg_C]
		mov	[ebx+8], eax
		jz	short loc_7F82D277
		cmp	dword ptr [ebx+14h], 0
		jge	short loc_7F82D273
		push	ebx
		call	sub_7F814971

loc_7F82D273:				; CODE XREF: sub_7F82D1DF+8Cj
		inc	word ptr [ebx+1Eh]

loc_7F82D277:				; CODE XREF: sub_7F82D1DF+86j
		push	ebx
		call	sub_7F8148F7

loc_7F82D27D:				; CODE XREF: sub_7F82D1DF+7Aj
		mov	ax, si
		dec	si
		test	ax, ax
		jg	short loc_7F82D245

loc_7F82D287:				; CODE XREF: sub_7F82D1DF+64j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82D29D
		call	sub_7F82A34F
		jmp	short loc_7F82D2AB
; ---------------------------------------------------------------------------

loc_7F82D29D:				; CODE XREF: sub_7F82D1DF+B5j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82D2AB:				; CODE XREF: sub_7F82D1DF+BCj
		mov	dword_7F838078,	0

loc_7F82D2B5:				; CODE XREF: sub_7F82D1DF+5Aj
		mov	eax, edi

loc_7F82D2B7:				; CODE XREF: sub_7F82D1DF+11j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	14h
sub_7F82D1DF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82D2BE	proc near		; CODE XREF: sub_7F810955+1BDp
					; sub_7F811467+78p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= word ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	si, [ebp+arg_C]
		test	si, si
		jg	short loc_7F82D2D4
		xor	eax, eax
		jmp	loc_7F82D398
; ---------------------------------------------------------------------------

loc_7F82D2D4:				; CODE XREF: sub_7F82D2BE+Dj
		cmp	dword_7F838078,	0
		jz	short loc_7F82D2E4
		mov	edi, 253h
		jmp	short loc_7F82D316
; ---------------------------------------------------------------------------

loc_7F82D2E4:				; CODE XREF: sub_7F82D2BE+1Dj
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		xor	edi, edi
		mov	ebx, [edx]
		mov	dword_7F838078,	ebx
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx

loc_7F82D316:				; CODE XREF: sub_7F82D2BE+24j
		test	edi, edi
		jnz	short loc_7F82D396
		mov	ax, si
		dec	si
		test	ax, ax
		jle	short loc_7F82D368

loc_7F82D324:				; CODE XREF: sub_7F82D2BE+A8j
		mov	eax, [ebp+arg_4]
		push	0
		add	[ebp+arg_4], 4
		push	dword ptr [eax]
		call	sub_7F8144A4
		mov	ebx, eax
		mov	ecx, [ebp+arg_8]
		add	[ebp+arg_8], 4
		cmp	[ebp+arg_10], 0
		mov	eax, [ecx]
		mov	[ebx+0Ch], eax
		jz	short loc_7F82D358
		cmp	dword ptr [ebx+14h], 0
		jge	short loc_7F82D354
		push	ebx
		call	sub_7F814971

loc_7F82D354:				; CODE XREF: sub_7F82D2BE+8Ej
		inc	word ptr [ebx+1Eh]

loc_7F82D358:				; CODE XREF: sub_7F82D2BE+88j
		push	ebx
		call	sub_7F8148F7
		mov	ax, si
		dec	si
		test	ax, ax
		jg	short loc_7F82D324

loc_7F82D368:				; CODE XREF: sub_7F82D2BE+64j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82D37E
		call	sub_7F82A34F
		jmp	short loc_7F82D38C
; ---------------------------------------------------------------------------

loc_7F82D37E:				; CODE XREF: sub_7F82D2BE+B7j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82D38C:				; CODE XREF: sub_7F82D2BE+BEj
		mov	dword_7F838078,	0

loc_7F82D396:				; CODE XREF: sub_7F82D2BE+5Aj
		mov	eax, edi

loc_7F82D398:				; CODE XREF: sub_7F82D2BE+11j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	14h
sub_7F82D2BE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F82D39F(int, int, int, DWORD nNumberOfBytesToRead,	int)
sub_7F82D39F	proc near		; CODE XREF: sub_7F823594+156p
					; sub_7F823594+21Ep ...

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
nNumberOfBytesToRead= dword ptr	 14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	[ebp+var_4], esi
		cmp	dword_7F838078,	esi
		jz	short loc_7F82D3BC
		mov	ebx, 253h
		jmp	short loc_7F82D3EE
; ---------------------------------------------------------------------------

loc_7F82D3BC:				; CODE XREF: sub_7F82D39F+14j
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	ebx, [edx]
		mov	dword_7F838078,	ebx
		xor	ebx, ebx
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx

loc_7F82D3EE:				; CODE XREF: sub_7F82D39F+1Bj
		test	ebx, ebx
		jnz	loc_7F82D4EE
		xor	edi, edi
		push	edi
		push	[ebp+arg_4]
		call	sub_7F8144A4
		mov	[ebp+var_4], eax
		cmp	[ebp+arg_10], edi
		jnz	short loc_7F82D426
		cmp	[ebp+nNumberOfBytesToRead], edi
		jnz	short loc_7F82D426
		cmp	[ebp+arg_8], edi
		jnz	short loc_7F82D426
		cmp	eax, edi
		jz	loc_7F82D4AA
		push	eax
		call	sub_7F8147DD
		jmp	loc_7F82D4AA
; ---------------------------------------------------------------------------

loc_7F82D426:				; CODE XREF: sub_7F82D39F+68j
					; sub_7F82D39F+6Dj ...
		xor	edi, edi
		cmp	[ebp+var_4], edi
		jnz	short loc_7F82D491
		lea	eax, [ebp+var_4]
		lea	edx, [ebp+arg_4]
		push	eax
		push	[ebp+nNumberOfBytesToRead]
		push	edx
		call	sub_7F812FC1
		cmp	eax, edi
		mov	ebx, eax
		jnz	short loc_7F82D4AA
		push	[ebp+arg_4]
		call	sub_7F82DB71
		mov	ecx, [ebp+var_4]
		mov	[ecx+12h], ax
		mov	eax, [ebp+var_4]
		add	eax, 12h
		cmp	word ptr [eax],	0FFFFh
		jnz	short loc_7F82D462
		mov	[eax], di

loc_7F82D462:				; CODE XREF: sub_7F82D39F+BEj
		mov	esi, 1
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+nNumberOfBytesToRead]
		push	8		; nNumberOfBytesToRead
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], ecx
		lea	eax, [ebp+var_C]
		push	eax		; int
		push	0FFFFFFF8h	; int
		push	[ebp+var_4]	; int
		call	sub_7F814D6E
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F82D4AE
		push	[ebp+var_4]
		call	sub_7F814971

loc_7F82D491:				; CODE XREF: sub_7F82D39F+8Cj
		cmp	[ebp+arg_10], 0
		jz	short loc_7F82D4AA
		push	[ebp+nNumberOfBytesToRead] ; nNumberOfBytesToRead
		push	[ebp+arg_10]	; int
		push	[ebp+arg_8]	; int
		push	[ebp+var_4]	; int
		call	sub_7F814D6E
		mov	ebx, eax

loc_7F82D4AA:				; CODE XREF: sub_7F82D39F+76j
					; sub_7F82D39F+82j ...
		test	ebx, ebx
		jz	short loc_7F82D4C0

loc_7F82D4AE:				; CODE XREF: sub_7F82D39F+E8j
		test	esi, esi
		jz	short loc_7F82D4C0
		cmp	[ebp+var_4], 0
		jz	short loc_7F82D4C0
		push	[ebp+var_4]
		call	sub_7F8147DD

loc_7F82D4C0:				; CODE XREF: sub_7F82D39F+10Dj
					; sub_7F82D39F+111j ...
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82D4D6
		call	sub_7F82A34F
		jmp	short loc_7F82D4E4
; ---------------------------------------------------------------------------

loc_7F82D4D6:				; CODE XREF: sub_7F82D39F+12Ej
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82D4E4:				; CODE XREF: sub_7F82D39F+135j
		mov	dword_7F838078,	0

loc_7F82D4EE:				; CODE XREF: sub_7F82D39F+51j
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	14h
sub_7F82D39F	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82D4F9	proc near		; CODE XREF: sub_7F81D910+25p
					; sub_7F81D910+31p

arg_0		= dword	ptr  4
arg_4		= word ptr  8
arg_8		= word ptr  0Ch

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		mov	ecx, [eax]
		mov	edx, [ecx]
		mov	eax, [edx+20Ch]
		mov	ecx, [eax]
		mov	edx, [ecx]
		add	ecx, 4
		test	edx, edx
		jz	short loc_7F82D540

loc_7F82D514:				; CODE XREF: sub_7F82D4F9+45j
		mov	ax, 100h
		xor	esi, esi

loc_7F82D51A:				; CODE XREF: sub_7F82D4F9+3Cj
		mov	di, [edx+12h]
		and	di, [esp+8+arg_8]
		cmp	di, [esp+8+arg_4]
		jnz	short loc_7F82D52D
		mov	[edx+8], esi

loc_7F82D52D:				; CODE XREF: sub_7F82D4F9+2Fj
		dec	ax
		add	edx, 20h
		test	ax, ax
		jnz	short loc_7F82D51A
		mov	edx, [ecx]
		add	ecx, 4
		test	edx, edx
		jnz	short loc_7F82D514

loc_7F82D540:				; CODE XREF: sub_7F82D4F9+19j
		pop	edi
		pop	esi
		retn	0Ch
sub_7F82D4F9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82D545	proc near		; CODE XREF: sub_7F81D910+4Fp
					; sub_7F81D910+5Fp ...

arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch
arg_8		= word ptr  10h
arg_C		= word ptr  14h
arg_10		= word ptr  18h

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		push	esi
		mov	ecx, [eax]
		mov	edx, [ecx]
		mov	eax, [edx+20Ch]
		mov	edx, [eax]
		mov	esi, [edx]
		add	edx, 4
		test	esi, esi
		jz	short loc_7F82D597

loc_7F82D562:				; CODE XREF: sub_7F82D545+50j
		mov	cx, 100h

loc_7F82D566:				; CODE XREF: sub_7F82D545+47j
		mov	ax, [esi+12h]
		and	ax, [ebp+arg_8]
		cmp	ax, [ebp+arg_4]
		jnz	short loc_7F82D584
		mov	ax, [esi+10h]
		and	ax, [ebp+arg_C]
		or	ax, [ebp+arg_10]
		mov	[esi+10h], ax

loc_7F82D584:				; CODE XREF: sub_7F82D545+2Dj
		dec	cx
		add	esi, 20h
		test	cx, cx
		jnz	short loc_7F82D566
		mov	esi, [edx]
		add	edx, 4
		test	esi, esi
		jnz	short loc_7F82D562

loc_7F82D597:				; CODE XREF: sub_7F82D545+1Bj
		pop	esi
		pop	ebp
		retn	14h
sub_7F82D545	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82D59C	proc near		; CODE XREF: sub_7F81D910+6Dp
					; sub_7F81D910+80p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8
arg_8		= word ptr  0Ch
arg_C		= word ptr  10h

		mov	eax, [esp+arg_0]
		push	ebx
		push	esi
		mov	ecx, [eax]
		mov	edx, [ecx]
		mov	eax, [edx+20Ch]
		mov	ecx, [eax]
		mov	edx, [ecx]
		add	ecx, 4
		test	edx, edx
		jz	short loc_7F82D5E9
		mov	bl, [esp+8+arg_4]

loc_7F82D5BB:				; CODE XREF: sub_7F82D59C+4Bj
		mov	ax, 100h

loc_7F82D5BF:				; CODE XREF: sub_7F82D59C+42j
		cmp	[edx+4], bl
		jnz	short loc_7F82D5D6
		mov	si, [edx+10h]
		and	si, [esp+8+arg_8]
		or	si, [esp+8+arg_C]
		mov	[edx+10h], si

loc_7F82D5D6:				; CODE XREF: sub_7F82D59C+26j
		dec	ax
		add	edx, 20h
		test	ax, ax
		jnz	short loc_7F82D5BF
		mov	edx, [ecx]
		add	ecx, 4
		test	edx, edx
		jnz	short loc_7F82D5BB

loc_7F82D5E9:				; CODE XREF: sub_7F82D59C+19j
		pop	esi
		pop	ebx
		retn	10h
sub_7F82D59C	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82D5EE	proc near		; CODE XREF: sub_7F81DCCA+29p
					; sub_7F81E844+2Fp

arg_0		= dword	ptr  4
arg_4		= word ptr  8
arg_8		= word ptr  0Ch
arg_C		= word ptr  10h

		push	ebx
		mov	ecx, 1
		push	esi
		cmp	dword_7F838078,	ecx
		push	edi
		push	ebp
		sbb	edi, edi
		xor	esi, esi
		neg	edi
		test	edi, edi
		jz	short loc_7F82D652
		mov	eax, 253h
		cmp	dword_7F838078,	esi
		jnz	short loc_7F82D647
		mov	edx, [esp+10h+arg_0]
		mov	eax, [edx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ebx, dword_7F83807C
		mov	word_7F838084, ax
		mov	ebp, [ebx]
		mov	dword_7F838078,	ebp
		mov	eax, [ebx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edx
		xor	eax, eax

loc_7F82D647:				; CODE XREF: sub_7F82D5EE+24j
		test	eax, eax
		jz	short loc_7F82D652
		xor	eax, eax
		jmp	loc_7F82D735
; ---------------------------------------------------------------------------

loc_7F82D652:				; CODE XREF: sub_7F82D5EE+17j
					; sub_7F82D5EE+5Bj
		mov	eax, dword_7F838078
		mov	ebx, [eax+20Ch]
		mov	edx, [ebx]
		mov	ebx, [edx]
		add	edx, 4
		test	ebx, ebx
		jz	loc_7F82D701

loc_7F82D66C:				; CODE XREF: sub_7F82D5EE+EFj
		test	ecx, ecx
		mov	cx, 0
		jz	short loc_7F82D67B
		mov	cx, 1
		add	ebx, 20h

loc_7F82D67B:				; CODE XREF: sub_7F82D5EE+84j
		movsx	eax, cx
		cmp	eax, 100h
		jnb	short loc_7F82D6D4
		mov	ebp, 100h

loc_7F82D68A:				; CODE XREF: sub_7F82D5EE+E4j
		movzx	eax, byte ptr [ebx+4]
		cmp	eax, 8Ch
		jl	short loc_7F82D69C
		cmp	eax, 8Fh
		jle	short loc_7F82D6C8

loc_7F82D69C:				; CODE XREF: sub_7F82D5EE+A5j
		mov	ax, [ebx+12h]
		and	ax, [esp+10h+arg_C]
		cmp	ax, [esp+10h+arg_8]
		jnz	short loc_7F82D6C8
		mov	ax, [ebx+10h]
		test	bp, ax
		jnz	short loc_7F82D6C8
		test	al, 20h
		jnz	short loc_7F82D6C8
		mov	ax, [esp+10h+arg_4]
		dec	[esp+10h+arg_4]
		test	ax, ax
		jle	short loc_7F82D6E1

loc_7F82D6C8:				; CODE XREF: sub_7F82D5EE+ACj
					; sub_7F82D5EE+BCj ...
		inc	cx
		add	ebx, 20h
		movsx	eax, cx
		cmp	eax, ebp
		jb	short loc_7F82D68A

loc_7F82D6D4:				; CODE XREF: sub_7F82D5EE+95j
		xor	ecx, ecx
		mov	ebx, [edx]
		add	edx, 4
		test	ebx, ebx
		jnz	short loc_7F82D66C
		jmp	short loc_7F82D701
; ---------------------------------------------------------------------------

loc_7F82D6E1:				; CODE XREF: sub_7F82D5EE+D8j
		push	ebx
		mov	esi, 0
		call	sub_7F812F73
		mov	ecx, dword_7F838078
		mov	edx, [ecx+200h]
		cmp	ax, [edx+8]
		jnb	short loc_7F82D701
		mov	esi, [ebx+4]

loc_7F82D701:				; CODE XREF: sub_7F82D5EE+78j
					; sub_7F82D5EE+F1j ...
		test	edi, edi
		jz	short loc_7F82D733
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82D71B
		call	sub_7F82A34F
		jmp	short loc_7F82D729
; ---------------------------------------------------------------------------

loc_7F82D71B:				; CODE XREF: sub_7F82D5EE+124j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82D729:				; CODE XREF: sub_7F82D5EE+12Bj
		mov	dword_7F838078,	0

loc_7F82D733:				; CODE XREF: sub_7F82D5EE+115j
		mov	eax, esi

loc_7F82D735:				; CODE XREF: sub_7F82D5EE+5Fj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	10h
sub_7F82D5EE	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82D73C	proc near		; CODE XREF: sub_7F81E9D4+24p
					; sub_7F81EA21+25p ...

arg_0		= dword	ptr  4
arg_4		= word ptr  8
arg_8		= byte ptr  0Ch

		push	ebx
		mov	ecx, 1
		push	esi
		cmp	dword_7F838078,	ecx
		push	edi
		push	ebp
		sbb	edi, edi
		xor	esi, esi
		neg	edi
		test	edi, edi
		jz	short loc_7F82D7A0
		mov	eax, 253h
		cmp	dword_7F838078,	esi
		jnz	short loc_7F82D795
		mov	edx, [esp+10h+arg_0]
		mov	eax, [edx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ebx, dword_7F83807C
		mov	word_7F838084, ax
		mov	ebp, [ebx]
		mov	dword_7F838078,	ebp
		mov	eax, [ebx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edx
		xor	eax, eax

loc_7F82D795:				; CODE XREF: sub_7F82D73C+24j
		test	eax, eax
		jz	short loc_7F82D7A0
		xor	eax, eax
		jmp	loc_7F82D878
; ---------------------------------------------------------------------------

loc_7F82D7A0:				; CODE XREF: sub_7F82D73C+17j
					; sub_7F82D73C+5Bj
		mov	eax, dword_7F838078
		mov	ebx, [eax+20Ch]
		mov	edx, [ebx]
		mov	ebx, [edx]
		add	edx, 4
		test	ebx, ebx
		jz	loc_7F82D844

loc_7F82D7BA:				; CODE XREF: sub_7F82D73C+E4j
		test	ecx, ecx
		mov	cx, 0
		jz	short loc_7F82D7C9
		mov	cx, 1
		add	ebx, 20h

loc_7F82D7C9:				; CODE XREF: sub_7F82D73C+84j
		movsx	eax, cx
		cmp	eax, 100h
		jnb	short loc_7F82D817

loc_7F82D7D3:				; CODE XREF: sub_7F82D73C+D9j
		mov	al, [ebx+4]
		movzx	ebp, al
		cmp	ebp, 8Ch
		jl	short loc_7F82D7E9
		cmp	ebp, 8Fh
		jle	short loc_7F82D808

loc_7F82D7E9:				; CODE XREF: sub_7F82D73C+A3j
		cmp	[esp+10h+arg_8], al
		jnz	short loc_7F82D808
		mov	ax, [ebx+10h]
		test	ax, 120h
		jnz	short loc_7F82D808
		mov	ax, [esp+10h+arg_4]
		dec	[esp+10h+arg_4]
		test	ax, ax
		jle	short loc_7F82D824

loc_7F82D808:				; CODE XREF: sub_7F82D73C+ABj
					; sub_7F82D73C+B1j ...
		inc	cx
		add	ebx, 20h
		movsx	eax, cx
		cmp	eax, 100h
		jb	short loc_7F82D7D3

loc_7F82D817:				; CODE XREF: sub_7F82D73C+95j
		xor	ecx, ecx
		mov	ebx, [edx]
		add	edx, 4
		test	ebx, ebx
		jnz	short loc_7F82D7BA
		jmp	short loc_7F82D844
; ---------------------------------------------------------------------------

loc_7F82D824:				; CODE XREF: sub_7F82D73C+CAj
		push	ebx
		mov	esi, 0
		call	sub_7F812F73
		mov	ecx, dword_7F838078
		mov	edx, [ecx+200h]
		cmp	ax, [edx+8]
		jnb	short loc_7F82D844
		mov	esi, [ebx+4]

loc_7F82D844:				; CODE XREF: sub_7F82D73C+78j
					; sub_7F82D73C+E6j ...
		test	edi, edi
		jz	short loc_7F82D876
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82D85E
		call	sub_7F82A34F
		jmp	short loc_7F82D86C
; ---------------------------------------------------------------------------

loc_7F82D85E:				; CODE XREF: sub_7F82D73C+119j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82D86C:				; CODE XREF: sub_7F82D73C+120j
		mov	dword_7F838078,	0

loc_7F82D876:				; CODE XREF: sub_7F82D73C+10Aj
		mov	eax, esi

loc_7F82D878:				; CODE XREF: sub_7F82D73C+5Fj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_7F82D73C	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82D87F	proc near		; CODE XREF: sub_7F81EABA+60p

arg_0		= dword	ptr  4
arg_4		= word ptr  8
arg_8		= byte ptr  0Ch

		push	ebx
		mov	ecx, 1
		push	esi
		cmp	dword_7F838078,	ecx
		push	edi
		push	ebp
		sbb	edi, edi
		xor	esi, esi
		neg	edi
		test	edi, edi
		jz	short loc_7F82D8E3
		mov	eax, 253h
		cmp	dword_7F838078,	esi
		jnz	short loc_7F82D8D8
		mov	edx, [esp+10h+arg_0]
		mov	eax, [edx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ebx, dword_7F83807C
		mov	word_7F838084, ax
		mov	ebp, [ebx]
		mov	dword_7F838078,	ebp
		mov	eax, [ebx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edx
		xor	eax, eax

loc_7F82D8D8:				; CODE XREF: sub_7F82D87F+24j
		test	eax, eax
		jz	short loc_7F82D8E3
		xor	eax, eax
		jmp	loc_7F82D9B7
; ---------------------------------------------------------------------------

loc_7F82D8E3:				; CODE XREF: sub_7F82D87F+17j
					; sub_7F82D87F+5Bj
		mov	eax, dword_7F838078
		mov	ebx, [eax+20Ch]
		mov	edx, [ebx]
		mov	ebx, [edx]
		add	edx, 4
		test	ebx, ebx
		jz	loc_7F82D983

loc_7F82D8FD:				; CODE XREF: sub_7F82D87F+E0j
		test	ecx, ecx
		mov	cx, 0
		jz	short loc_7F82D90C
		mov	cx, 1
		add	ebx, 20h

loc_7F82D90C:				; CODE XREF: sub_7F82D87F+84j
		movsx	eax, cx
		cmp	eax, 100h
		jnb	short loc_7F82D956

loc_7F82D916:				; CODE XREF: sub_7F82D87F+D5j
		mov	al, [ebx+4]
		movzx	ebp, al
		cmp	ebp, 8Ch
		jl	short loc_7F82D92C
		cmp	ebp, 8Fh
		jle	short loc_7F82D947

loc_7F82D92C:				; CODE XREF: sub_7F82D87F+A3j
		cmp	al, [esp+10h+arg_8]
		jnz	short loc_7F82D947
		test	byte ptr [ebx+10h], 20h
		jnz	short loc_7F82D947
		mov	ax, [esp+10h+arg_4]
		dec	[esp+10h+arg_4]
		test	ax, ax
		jle	short loc_7F82D963

loc_7F82D947:				; CODE XREF: sub_7F82D87F+ABj
					; sub_7F82D87F+B1j ...
		inc	cx
		add	ebx, 20h
		movsx	eax, cx
		cmp	eax, 100h
		jb	short loc_7F82D916

loc_7F82D956:				; CODE XREF: sub_7F82D87F+95j
		xor	ecx, ecx
		mov	ebx, [edx]
		add	edx, 4
		test	ebx, ebx
		jnz	short loc_7F82D8FD
		jmp	short loc_7F82D983
; ---------------------------------------------------------------------------

loc_7F82D963:				; CODE XREF: sub_7F82D87F+C6j
		push	ebx
		mov	esi, 0
		call	sub_7F812F73
		mov	ecx, dword_7F838078
		mov	edx, [ecx+200h]
		cmp	ax, [edx+8]
		jnb	short loc_7F82D983
		mov	esi, [ebx+4]

loc_7F82D983:				; CODE XREF: sub_7F82D87F+78j
					; sub_7F82D87F+E2j ...
		test	edi, edi
		jz	short loc_7F82D9B5
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82D99D
		call	sub_7F82A34F
		jmp	short loc_7F82D9AB
; ---------------------------------------------------------------------------

loc_7F82D99D:				; CODE XREF: sub_7F82D87F+115j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82D9AB:				; CODE XREF: sub_7F82D87F+11Cj
		mov	dword_7F838078,	0

loc_7F82D9B5:				; CODE XREF: sub_7F82D87F+106j
		mov	eax, esi

loc_7F82D9B7:				; CODE XREF: sub_7F82D87F+5Fj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_7F82D87F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82D9BE	proc near		; CODE XREF: sub_7F8223B3+129p
					; sub_7F822552+4Bp

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	dword_7F836C60,	1
		push	ebx
		lea	eax, [ebp+var_4]
		mov	[ebp+var_8], 64765356h
		push	esi
		push	edi
		xor	edi, edi
		push	eax
		lea	ecx, [ebp+var_8]
		mov	[ebp+var_4], edi
		cmp	[ebp+arg_4], 1
		sbb	eax, eax
		inc	eax
		push	eax
		push	ecx
		push	[ebp+arg_0]
		call	sub_7F817E9D
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F82D9FF
		xor	esi, esi
		jmp	short loc_7F82DA64
; ---------------------------------------------------------------------------

loc_7F82D9FF:				; CODE XREF: sub_7F82D9BE+3Bj
		push	[ebp+var_4]
		call	sub_7F8198FC
		mov	di, ax
		xor	ebx, ebx

loc_7F82DA0C:				; CODE XREF: sub_7F82D9BE+8Bj
					; sub_7F82D9BE+95j ...
		mov	ax, di
		dec	di
		test	ax, ax
		jle	short loc_7F82DA64
		lea	eax, [ebp+var_C]
		lea	ecx, [ebp+var_8]
		mov	[ebp+var_C], 4
		push	eax
		push	ecx
		push	12h
		push	edi
		push	[ebp+var_4]
		call	sub_7F818D47
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F82DA64
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	[ebp+var_8]
		push	[ebp+arg_0]
		call	sub_7F82D114
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F82DA0C
		mov	esi, 1001h
		cmp	[ebp+arg_4], ebx
		jz	short loc_7F82DA0C
		push	edi
		push	[ebp+var_4]
		call	sub_7F818AE7
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F82DA0C

loc_7F82DA64:				; CODE XREF: sub_7F82D9BE+3Fj
					; sub_7F82D9BE+56j ...
		cmp	[ebp+var_4], 0
		jz	short loc_7F82DA85
		cmp	[ebp+arg_4], 0
		jz	short loc_7F82DA79
		mov	eax, 1
		test	esi, esi
		jz	short loc_7F82DA7B

loc_7F82DA79:				; CODE XREF: sub_7F82D9BE+B0j
		xor	eax, eax

loc_7F82DA7B:				; CODE XREF: sub_7F82D9BE+B9j
		push	eax
		lea	ecx, [ebp+var_4]
		push	ecx
		call	sub_7F81813C

loc_7F82DA85:				; CODE XREF: sub_7F82D9BE+AAj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		mov	dword_7F836C60,	0
		pop	ebp
		retn	8
sub_7F82D9BE	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82DA9A	proc near		; CODE XREF: sub_7F823452+Ep

arg_0		= dword	ptr  4

		push	ebx
		mov	eax, 253h
		mov	dword_7F836C60,	1
		cmp	dword_7F838078,	0
		push	esi
		push	edi
		jnz	short loc_7F82DAE8
		mov	ecx, [esp+0Ch+arg_0]
		mov	eax, [ecx]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	edx, dword_7F83807C
		mov	word_7F838084, ax
		mov	ebx, [edx]
		mov	dword_7F838078,	ebx
		mov	eax, [edx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	ecx
		xor	eax, eax

loc_7F82DAE8:				; CODE XREF: sub_7F82DA9A+19j
		xor	ecx, ecx
		test	eax, eax
		jz	short loc_7F82DAF6
		mov	dword_7F836C60,	ecx
		jmp	short loc_7F82DB6B
; ---------------------------------------------------------------------------

loc_7F82DAF6:				; CODE XREF: sub_7F82DA9A+52j
		mov	eax, dword_7F838078
		mov	ecx, [eax+20Ch]
		mov	ebx, [ecx]
		mov	edi, [ebx]
		add	ebx, 4
		test	edi, edi
		jz	short loc_7F82DB3B

loc_7F82DB0C:				; CODE XREF: sub_7F82DA9A+9Fj
		mov	si, 100h

loc_7F82DB10:				; CODE XREF: sub_7F82DA9A+96j
		push	dword ptr [edi+4]
		call	sub_7F82DB71
		cmp	ax, 0FFFFh
		jz	short loc_7F82DB22
		mov	[edi+12h], ax

loc_7F82DB22:				; CODE XREF: sub_7F82DA9A+82j
		dec	si
		push	edi
		add	edi, 20h
		call	sub_7F8148F7
		test	si, si
		jnz	short loc_7F82DB10
		mov	edi, [ebx]
		add	ebx, 4
		test	edi, edi
		jnz	short loc_7F82DB0C

loc_7F82DB3B:				; CODE XREF: sub_7F82DA9A+70j
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82DB51
		call	sub_7F82A34F
		jmp	short loc_7F82DB5F
; ---------------------------------------------------------------------------

loc_7F82DB51:				; CODE XREF: sub_7F82DA9A+AEj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82DB5F:				; CODE XREF: sub_7F82DA9A+B5j
		xor	eax, eax
		mov	dword_7F838078,	eax
		mov	dword_7F836C60,	eax

loc_7F82DB6B:				; CODE XREF: sub_7F82DA9A+5Aj
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_7F82DA9A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82DB71	proc near		; CODE XREF: sub_7F81DE67+9Bp
					; sub_7F81E22F+17p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	eax, offset aAsco ; "�SCO"
		cmp	dword ptr aAsco, 0 ; "�SCO"
		mov	ebp, esp
		jz	short loc_7F82DB91

loc_7F82DB82:				; CODE XREF: sub_7F82DB71+1Ej
		mov	ecx, [ebp+arg_0]
		cmp	[eax], ecx
		jz	short loc_7F82DBB6
		add	eax, 6
		cmp	dword ptr [eax], 0
		jnz	short loc_7F82DB82

loc_7F82DB91:				; CODE XREF: sub_7F82DB71+Fj
		cmp	byte_7F835A78, 0
		mov	eax, offset byte_7F835A78
		jz	short loc_7F82DBAE
		mov	cl, byte ptr [ebp+arg_0]

loc_7F82DBA2:				; CODE XREF: sub_7F82DB71+3Bj
		cmp	[eax], cl
		jz	short loc_7F82DBBC
		add	eax, 3
		cmp	byte ptr [eax],	0
		jnz	short loc_7F82DBA2

loc_7F82DBAE:				; CODE XREF: sub_7F82DB71+2Cj
		mov	ax, 0FFFFh

loc_7F82DBB2:				; CODE XREF: sub_7F82DB71+49j
					; sub_7F82DB71+4Fj
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------

loc_7F82DBB6:				; CODE XREF: sub_7F82DB71+16j
		mov	ax, [eax+4]
		jmp	short loc_7F82DBB2
; ---------------------------------------------------------------------------

loc_7F82DBBC:				; CODE XREF: sub_7F82DB71+33j
		mov	ax, [eax+1]
		jmp	short loc_7F82DBB2
sub_7F82DB71	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82DBC2	proc near		; CODE XREF: sub_7F8223B3+109p
					; sub_7F823484+C0p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		push	38h
		push	0
		mov	eax, [esi]
		push	esi
		mov	edi, [eax]
		call	sub_7F82A93C
		test	eax, eax
		jnz	short loc_7F82DBE5
		mov	eax, 101Eh
		jmp	loc_7F82DD43
; ---------------------------------------------------------------------------

loc_7F82DBE5:				; CODE XREF: sub_7F82DBC2+17j
		mov	dword_7F836C60,	1
		cmp	dword_7F838078,	0
		mov	eax, 253h
		jnz	short loc_7F82DC2C
		mov	eax, [esi]
		mov	dword_7F83807C,	eax
		mov	ax, [eax+2Ch]
		mov	ecx, dword_7F83807C
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	esi
		xor	eax, eax

loc_7F82DC2C:				; CODE XREF: sub_7F82DBC2+39j
		xor	ecx, ecx
		test	eax, eax
		jz	short loc_7F82DC3D
		mov	dword_7F836C60,	ecx
		jmp	loc_7F82DD43
; ---------------------------------------------------------------------------

loc_7F82DC3D:				; CODE XREF: sub_7F82DBC2+6Ej
		xor	ebx, ebx
		push	edi
		mov	dword_7F83809C,	64h
		mov	dword_7F838098,	ebx
		call	sub_7F82DD49
		cmp	eax, ebx
		mov	esi, eax
		jz	short loc_7F82DC66
		mov	[edi+20Ch], ebx
		jmp	loc_7F82DD0A
; ---------------------------------------------------------------------------

loc_7F82DC66:				; CODE XREF: sub_7F82DBC2+97j
		cmp	dword_7F83809C,	0
		jbe	short loc_7F82DC8E
		push	64h
		sub	edx, edx
		add	dword_7F838098,	50h
		mov	eax, dword_7F838098
		imul	eax, 64h
		div	dword_7F83809C
		push	eax
		call	sub_7F82A9CA

loc_7F82DC8E:				; CODE XREF: sub_7F82DBC2+ABj
		push	edi
		call	sub_7F82E169
		mov	esi, eax
		xor	eax, eax
		test	esi, esi
		jz	short loc_7F82DCA4
		mov	[edi+20Ch], eax
		jmp	short loc_7F82DD0A
; ---------------------------------------------------------------------------

loc_7F82DCA4:				; CODE XREF: sub_7F82DBC2+D8j
		cmp	dword_7F83809C,	0
		jbe	short loc_7F82DCCC
		push	64h
		sub	edx, edx
		add	dword_7F838098,	0Ah
		mov	eax, dword_7F838098
		imul	eax, 64h
		div	dword_7F83809C
		push	eax
		call	sub_7F82A9CA

loc_7F82DCCC:				; CODE XREF: sub_7F82DBC2+E9j
		push	edi
		call	sub_7F82E283
		mov	esi, eax
		xor	eax, eax
		test	esi, esi
		jz	short loc_7F82DCE2
		mov	[edi+20Ch], eax
		jmp	short loc_7F82DD0A
; ---------------------------------------------------------------------------

loc_7F82DCE2:				; CODE XREF: sub_7F82DBC2+116j
		cmp	dword_7F83809C,	0
		jbe	short loc_7F82DD0A
		push	64h
		sub	edx, edx
		add	dword_7F838098,	0Ah
		mov	eax, dword_7F838098
		imul	eax, 64h
		div	dword_7F83809C
		push	eax
		call	sub_7F82A9CA

loc_7F82DD0A:				; CODE XREF: sub_7F82DBC2+9Fj
					; sub_7F82DBC2+E0j ...
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82DD20
		call	sub_7F82A34F
		jmp	short loc_7F82DD2E
; ---------------------------------------------------------------------------

loc_7F82DD20:				; CODE XREF: sub_7F82DBC2+155j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82DD2E:				; CODE XREF: sub_7F82DBC2+15Cj
		xor	edi, edi
		mov	dword_7F838078,	edi
		call	sub_7F82AB0B
		mov	eax, esi
		mov	dword_7F836C60,	edi

loc_7F82DD43:				; CODE XREF: sub_7F82DBC2+1Ej
					; sub_7F82DBC2+76j
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_7F82DBC2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82DD49	proc near		; CODE XREF: sub_7F82DBC2+8Ep

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		= word ptr -8
var_6		= word ptr -6
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		mov	[ebp+var_1C], esi
		mov	[ebp+var_C], esi
		mov	[ebp+var_10], esi
		call	GetCurrentProcessId_0
		mov	ecx, dword_7F838078
		mov	[ecx+24Ch], eax
		call	sub_7F813856
		mov	eax, dword_7F838078
		mov	ecx, [ebp+arg_0]
		mov	[eax+24Ch], esi
		mov	edx, [ecx+20Ch]
		mov	ecx, 8
		push	10h
		mov	eax, [edx]
		mov	[ebp+var_18], eax
		mov	edi, [eax]
		xor	eax, eax
		rep stosd
		mov	ecx, [ebp+arg_0]
		movzx	eax, word ptr [ecx+204h]
		add	eax, eax
		push	eax
		call	sub_7F82F03B
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F82DDBD
		mov	[ebp+var_1C], 400h
		jmp	loc_7F82E0E3
; ---------------------------------------------------------------------------

loc_7F82DDBD:				; CODE XREF: sub_7F82DD49+66j
		push	10h
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax+204h]
		shl	eax, 2
		push	eax
		call	sub_7F82F03B
		mov	[ebp+var_C], eax
		test	eax, eax
		jnz	short loc_7F82DDE5
		mov	[ebp+var_1C], 400h
		jmp	loc_7F82E0E3
; ---------------------------------------------------------------------------

loc_7F82DDE5:				; CODE XREF: sub_7F82DD49+8Ej
		push	10h
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax+204h]
		shl	eax, 2
		push	eax
		call	sub_7F82F03B
		mov	[ebp+var_10], eax
		test	eax, eax
		jnz	short loc_7F82DE0D
		mov	[ebp+var_1C], 400h
		jmp	loc_7F82E0E3
; ---------------------------------------------------------------------------

loc_7F82DE0D:				; CODE XREF: sub_7F82DD49+B6j
		xor	si, si
		mov	eax, [ebp+arg_0]
		cmp	[eax+204h], si
		jle	short loc_7F82DE72
		mov	edi, 2000h

loc_7F82DE21:				; CODE XREF: sub_7F82DD49+127j
		push	30h
		push	edi
		call	sub_7F82F03B
		mov	ecx, [ebp+var_C]
		mov	[ecx], eax
		mov	ecx, eax
		test	ecx, ecx
		jz	loc_7F82DFF8
		inc	si
		mov	eax, [ebp+var_10]
		push	edi
		mov	[eax], ecx
		mov	word ptr [ebx],	100h
		mov	ecx, [ebp+var_18]
		push	dword ptr [ecx]
		mov	ecx, [ebp+var_C]
		add	ebx, 2
		push	dword ptr [ecx]
		call	sub_7F82FCE0
		add	esp, 0Ch
		mov	eax, [ebp+arg_0]
		add	[ebp+var_18], 4
		add	[ebp+var_C], 4
		add	[ebp+var_10], 4
		cmp	[eax+204h], si
		jg	short loc_7F82DE21

loc_7F82DE72:				; CODE XREF: sub_7F82DD49+D1j
		movsx	ecx, si
		sub	ebx, 2
		mov	edx, [ebp+arg_0]
		lea	eax, ds:0[ecx*4]
		sub	[ebp+var_18], eax
		sub	[ebp+var_C], eax
		sub	[ebp+var_10], eax
		mov	eax, [edx+200h]
		mov	ax, [eax+8]
		and	ax, 0FFh
		mov	[ebx], ax
		jnz	short loc_7F82DEA3
		mov	word ptr [ebx],	100h

loc_7F82DEA3:				; CODE XREF: sub_7F82DD49+153j
		xor	si, si
		mov	eax, 1
		sub	eax, ecx
		lea	ebx, [ebx+eax*2]
		mov	eax, [ebp+arg_0]
		cmp	[eax+204h], si
		jle	short loc_7F82DEE9

loc_7F82DEBC:				; CODE XREF: sub_7F82DD49+19Ej
		inc	si
		push	offset sub_7F82E147
		push	20h
		mov	ecx, [ebp+var_C]
		movsx	eax, word ptr [ebx]
		push	eax
		add	ebx, 2
		push	dword ptr [ecx]
		call	sub_7F8300E0
		add	esp, 10h
		mov	eax, [ebp+arg_0]
		add	[ebp+var_C], 4
		cmp	[eax+204h], si
		jg	short loc_7F82DEBC

loc_7F82DEE9:				; CODE XREF: sub_7F82DD49+171j
		movsx	eax, si
		lea	ecx, ds:0[eax*4]
		add	eax, eax
		sub	ebx, eax
		sub	[ebp+var_C], ecx
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx+200h]
		mov	ax, [eax+8]
		movsx	ecx, ax
		mov	[ebp+var_2], ax
		and	cl, 3Fh
		shr	ecx, 6
		mov	eax, [ebp+var_18]
		mov	eax, [ecx+eax]
		xor	ecx, ecx
		mov	[ebp+var_6], 0
		mov	cx, [ebp+var_2]
		and	ecx, 0FFh
		shl	ecx, 5
		add	eax, ecx
		cmp	[ebp+var_2], 0
		mov	[ebp+var_20], eax
		jle	loc_7F82E0C6

loc_7F82DF3F:				; CODE XREF: sub_7F82DD49+377j
		cmp	byte ptr [ebp+var_6], 0
		jnz	short loc_7F82DF58
		movsx	ecx, [ebp+var_6]
		and	cl, 3Fh
		mov	eax, [ebp+var_18]
		shr	ecx, 6
		mov	edx, [ecx+eax]
		mov	[ebp+var_24], edx

loc_7F82DF58:				; CODE XREF: sub_7F82DD49+1FAj
		mov	[ebp+var_14], 0
		mov	[ebp+var_8], 0FFFFh
		mov	[ebp+var_4], 0

loc_7F82DF6B:				; CODE XREF: sub_7F82DD49+321j
		mov	cx, [ebp+var_4]
		mov	eax, [ebp+arg_0]
		cmp	[eax+204h], cx
		jle	loc_7F82E06F
		cmp	word ptr [ebx],	0
		jle	loc_7F82E05F
		xor	edx, edx

loc_7F82DF8B:				; CODE XREF: sub_7F82DD49+29Fj
		mov	eax, [ebp+var_10]
		mov	eax, [eax]
		cmp	byte ptr [eax+4], 8Fh
		jnz	short loc_7F82DFEA
		mov	[eax], dx
		mov	eax, [ebp+var_10]
		sub	[ebp+var_20], 20h
		dec	[ebp+var_2]
		mov	ecx, [eax]
		cmp	byte ptr [ebp+var_2], 0FFh
		mov	[ecx+2], dx
		jnz	short loc_7F82DFC8
		movsx	ecx, [ebp+var_2]
		and	cl, 3Fh
		mov	eax, [ebp+var_18]
		shr	ecx, 6
		mov	eax, [ecx+eax]
		add	eax, 1FE0h
		mov	[ebp+var_20], eax

loc_7F82DFC8:				; CODE XREF: sub_7F82DD49+265j
		mov	edi, [ebp+var_20]
		mov	eax, [ebp+var_10]
		mov	ecx, 8
		mov	esi, [eax]
		rep movsd
		mov	eax, [ebp+var_10]
		add	dword ptr [eax], 20h
		mov	ax, [ebx]
		dec	ax
		mov	[ebx], ax
		test	ax, ax
		jg	short loc_7F82DF8B

loc_7F82DFEA:				; CODE XREF: sub_7F82DD49+24Bj
		cmp	word ptr [ebx],	0
		jle	short loc_7F82E05F
		cmp	[ebp+var_14], 0
		jnz	short loc_7F82E03A
		jmp	short loc_7F82E04F
; ---------------------------------------------------------------------------

loc_7F82DFF8:				; CODE XREF: sub_7F82DD49+E9j
		movsx	eax, si
		mov	[ebp+var_1C], 400h
		lea	ecx, ds:0[eax*4]
		add	eax, eax
		sub	ebx, eax
		sub	[ebp+var_C], ecx
		dec	si
		js	short loc_7F82E026

loc_7F82E014:				; CODE XREF: sub_7F82DD49+2DBj
		sub	[ebp+var_C], 4
		mov	ecx, [ebp+var_C]
		push	dword ptr [ecx]
		call	sub_7F82F149
		dec	si
		jns	short loc_7F82E014

loc_7F82E026:				; CODE XREF: sub_7F82DD49+2C9j
		push	[ebp+var_C]
		call	sub_7F82F149
		mov	[ebp+var_C], 0
		jmp	loc_7F82E0E3
; ---------------------------------------------------------------------------

loc_7F82E03A:				; CODE XREF: sub_7F82DD49+2ABj
		mov	ecx, [ebp+var_10]
		push	[ebp+var_14]
		push	dword ptr [ecx]
		call	sub_7F82E147
		add	esp, 8
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_7F82E05F

loc_7F82E04F:				; CODE XREF: sub_7F82DD49+2ADj
		mov	dx, [ebp+var_4]
		mov	eax, [ebp+var_10]
		mov	[ebp+var_8], dx
		mov	ecx, [eax]
		mov	[ebp+var_14], ecx

loc_7F82E05F:				; CODE XREF: sub_7F82DD49+23Aj
					; sub_7F82DD49+2A5j ...
		add	[ebp+var_10], 4
		inc	[ebp+var_4]
		add	ebx, 2
		jmp	loc_7F82DF6B
; ---------------------------------------------------------------------------

loc_7F82E06F:				; CODE XREF: sub_7F82DD49+230j
		movsx	eax, [ebp+var_4]
		lea	ecx, ds:0[eax*4]
		add	eax, eax
		sub	ebx, eax
		sub	[ebp+var_10], ecx
		cmp	[ebp+var_14], 0
		jz	short loc_7F82E0C6
		mov	eax, [ebp+var_14]
		mov	edx, [ebp+var_10]
		mov	word ptr [eax],	0
		mov	edi, [ebp+var_24]
		mov	word ptr [eax+2], 0
		movsx	ecx, [ebp+var_8]
		dec	word ptr [ebx+ecx*2]
		mov	esi, eax
		add	dword ptr [edx+ecx*4], 20h
		mov	ecx, 8
		rep movsd
		mov	ax, [ebp+var_2]
		add	[ebp+var_24], 20h
		inc	[ebp+var_6]
		cmp	ax, [ebp+var_6]
		jg	loc_7F82DF3F

loc_7F82E0C6:				; CODE XREF: sub_7F82DD49+1F0j
					; sub_7F82DD49+33Cj
		mov	dx, [ebp+var_2]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+200h]
		mov	[ecx+0Ch], dx
		mov	ecx, [eax+200h]
		mov	word ptr [ecx+0Ah], 0

loc_7F82E0E3:				; CODE XREF: sub_7F82DD49+6Fj
					; sub_7F82DD49+97j ...
		xor	esi, esi
		cmp	[ebp+var_C], esi
		jz	short loc_7F82E123
		mov	eax, [ebp+arg_0]
		cmp	[eax+204h], si
		jle	short loc_7F82E112

loc_7F82E0F6:				; CODE XREF: sub_7F82DD49+3C7j
		inc	si
		mov	ecx, [ebp+var_C]
		push	dword ptr [ecx]
		call	sub_7F82F149
		mov	ecx, [ebp+arg_0]
		add	[ebp+var_C], 4
		cmp	[ecx+204h], si
		jg	short loc_7F82E0F6

loc_7F82E112:				; CODE XREF: sub_7F82DD49+3ABj
		movsx	eax, si
		shl	eax, 2
		sub	[ebp+var_C], eax
		push	[ebp+var_C]
		call	sub_7F82F149

loc_7F82E123:				; CODE XREF: sub_7F82DD49+39Fj
		cmp	[ebp+var_10], 0
		jz	short loc_7F82E131
		push	[ebp+var_10]
		call	sub_7F82F149

loc_7F82E131:				; CODE XREF: sub_7F82DD49+3DEj
		test	ebx, ebx
		jz	short loc_7F82E13B
		push	ebx
		call	sub_7F82F149

loc_7F82E13B:				; CODE XREF: sub_7F82DD49+3EAj
		mov	eax, [ebp+var_1C]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F82DD49	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82E147	proc near		; CODE XREF: sub_7F82DD49+2F9p
					; DATA XREF: sub_7F82DD49+175o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_0]
		mov	ecx, [eax+4]
		mov	eax, [edx+4]
		cmp	ecx, eax
		jbe	short loc_7F82E160
		mov	eax, 0FFFFFFFFh
		jmp	short locret_7F82E168
; ---------------------------------------------------------------------------

loc_7F82E160:				; CODE XREF: sub_7F82E147+10j
		mov	eax, 1
		adc	eax, 0FFFFFFFFh

locret_7F82E168:			; CODE XREF: sub_7F82E147+17j
		retn
sub_7F82E147	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82E169	proc near		; CODE XREF: sub_7F82DBC2+CDp

var_8C		= word ptr -8Ch
var_8A		= word ptr -8Ah
var_88		= byte ptr -88h
var_C		= dword	ptr -0Ch
var_6		= word ptr -6
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		add	eax, 200h
		sub	esp, 8Ch
		mov	ecx, [eax]
		mov	word ptr [ecx+0Ah], 0
		mov	[ebp+var_8C], 1
		push	ebx
		push	esi
		push	edi
		mov	ecx, [eax]
		mov	ax, [ecx+0Ch]
		lea	esi, [ebp+var_88]
		mov	[ebp+var_2], 1
		mov	[ebp+var_8A], ax

loc_7F82E1A8:				; CODE XREF: sub_7F82E169+10Bj
		mov	ax, [esi-2]
		sub	esi, 4
		mov	cx, [esi]
		mov	[ebp+var_6], cx
		dec	[ebp+var_2]
		mov	[ebp+var_4], ax
		movzx	eax, cx
		movzx	edx, [ebp+var_4]
		add	eax, edx
		cdq
		sub	eax, edx
		sar	eax, 1
		cmp	ax, 1
		mov	di, ax
		jb	short loc_7F82E219
		mov	eax, dword_7F838078
		mov	ecx, [eax+200h]
		cmp	[ecx+8], di
		jbe	short loc_7F82E219
		mov	ax, di
		shr	ax, 6
		movzx	ecx, ax
		and	ecx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	edx, [eax+20Ch]
		mov	ebx, [edx]
		mov	eax, [ecx+ebx]
		xor	ecx, ecx
		mov	cx, di
		and	ecx, 0FFh
		shl	ecx, 5
		lea	ebx, [eax+ecx]
		jmp	short loc_7F82E21B
; ---------------------------------------------------------------------------

loc_7F82E219:				; CODE XREF: sub_7F82E169+6Aj
					; sub_7F82E169+7Bj
		xor	ebx, ebx

loc_7F82E21B:				; CODE XREF: sub_7F82E169+AEj
		lea	eax, [ebp+var_C]
		push	eax
		push	dword ptr [ebx+4]
		call	sub_7F8144A4
		push	[ebp+var_C]
		push	ebx
		push	dword ptr [ebx+4]
		call	sub_7F81444D
		test	eax, eax
		jnz	short loc_7F82E27A
		cmp	[ebp+var_6], di
		jnb	short loc_7F82E24F
		mov	cx, [ebp+var_6]
		mov	[esi], cx
		add	esi, 4
		mov	[esi-2], di
		inc	[ebp+var_2]

loc_7F82E24F:				; CODE XREF: sub_7F82E169+D2j
		movzx	ecx, di
		movzx	edx, [ebp+var_4]
		inc	ecx
		cmp	ecx, edx
		jge	short loc_7F82E26F
		inc	di
		mov	cx, [ebp+var_4]
		mov	[esi], di
		add	esi, 4
		mov	[esi-2], cx
		inc	[ebp+var_2]

loc_7F82E26F:				; CODE XREF: sub_7F82E169+F0j
		cmp	[ebp+var_2], 0
		jg	loc_7F82E1A8

loc_7F82E27A:				; CODE XREF: sub_7F82E169+CCj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F82E169	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82E283	proc near		; CODE XREF: sub_7F82DBC2+10Bp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, [esp+8+arg_0]
		add	esi, 200h
		mov	eax, [esi]
		add	eax, 0Ch
		mov	di, [eax]
		mov	word ptr [eax],	0
		mov	ecx, [esi]
		cmp	[ecx+8], di
		jbe	short loc_7F82E304

loc_7F82E2A4:				; CODE XREF: sub_7F82E283+7Fj
		cmp	di, 1
		jb	short loc_7F82E2ED
		mov	eax, dword_7F838078
		mov	ecx, [eax+200h]
		cmp	[ecx+8], di
		jbe	short loc_7F82E2ED
		mov	ax, di
		shr	ax, 6
		movzx	ecx, ax
		and	ecx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	edx, [eax+20Ch]
		mov	eax, [edx]
		mov	eax, [ecx+eax]
		xor	ecx, ecx
		mov	cx, di
		and	ecx, 0FFh
		shl	ecx, 5
		add	eax, ecx
		jmp	short loc_7F82E2EF
; ---------------------------------------------------------------------------

loc_7F82E2ED:				; CODE XREF: sub_7F82E283+25j
					; sub_7F82E283+36j
		xor	eax, eax

loc_7F82E2EF:				; CODE XREF: sub_7F82E283+68j
		mov	cx, [eax+10h]
		inc	di
		push	ecx
		push	eax
		call	sub_7F813059
		mov	ecx, [esi]
		cmp	[ecx+8], di
		ja	short loc_7F82E2A4

loc_7F82E304:				; CODE XREF: sub_7F82E283+1Fj
		xor	eax, eax
		pop	edi
		pop	esi
		retn	4
sub_7F82E283	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82E30B	proc near		; CODE XREF: sub_7F822C2A+27p
					; sub_7F822C2A+42p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ecx, offset dword_7F8359F8
		cmp	dword_7F8359F8,	0
		mov	ebp, esp
		jz	short loc_7F82E32B

loc_7F82E31C:				; CODE XREF: sub_7F82E30B+1Ej
		mov	eax, [ebp+arg_0]
		cmp	[ecx], eax
		jz	short loc_7F82E34C
		add	ecx, 4
		cmp	dword ptr [ecx], 0
		jnz	short loc_7F82E31C

loc_7F82E32B:				; CODE XREF: sub_7F82E30B+Fj
		cmp	byte_7F835A68, 0
		mov	eax, offset byte_7F835A68
		jz	short loc_7F82E346
		mov	cl, byte ptr [ebp+arg_0]

loc_7F82E33C:				; CODE XREF: sub_7F82E30B+39j
		cmp	[eax], cl
		jz	short loc_7F82E353
		inc	eax
		cmp	byte ptr [eax],	0
		jnz	short loc_7F82E33C

loc_7F82E346:				; CODE XREF: sub_7F82E30B+2Cj
		xor	eax, eax

loc_7F82E348:				; CODE XREF: sub_7F82E30B+46j
					; sub_7F82E30B+4Dj
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------

loc_7F82E34C:				; CODE XREF: sub_7F82E30B+16j
		mov	eax, 1
		jmp	short loc_7F82E348
; ---------------------------------------------------------------------------

loc_7F82E353:				; CODE XREF: sub_7F82E30B+33j
		mov	eax, 1
		jmp	short loc_7F82E348
sub_7F82E30B	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82E35A	proc near		; CODE XREF: sub_7F822C2A+183p

arg_0		= word ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		call	sub_7F82DB71
		mov	dx, ax
		mov	cx, [esp+arg_0]
		and	dx, cx
		cmp	dx, ax
		jz	short loc_7F82E377
		xor	eax, eax
		jmp	short locret_7F82E3D0
; ---------------------------------------------------------------------------

loc_7F82E377:				; CODE XREF: sub_7F82E35A+17j
		test	ch, 80h
		jz	short loc_7F82E385
		test	ah, 80h
		jnz	short loc_7F82E385
		xor	eax, eax
		jmp	short locret_7F82E3D0
; ---------------------------------------------------------------------------

loc_7F82E385:				; CODE XREF: sub_7F82E35A+20j
					; sub_7F82E35A+25j
		test	ch, 10h
		jz	short loc_7F82E393
		test	ah, 10h
		jnz	short loc_7F82E393
		xor	eax, eax
		jmp	short locret_7F82E3D0
; ---------------------------------------------------------------------------

loc_7F82E393:				; CODE XREF: sub_7F82E35A+2Ej
					; sub_7F82E35A+33j
		test	ch, 20h
		jz	short loc_7F82E3A1
		test	ah, 20h
		jnz	short loc_7F82E3A1
		xor	eax, eax
		jmp	short locret_7F82E3D0
; ---------------------------------------------------------------------------

loc_7F82E3A1:				; CODE XREF: sub_7F82E35A+3Cj
					; sub_7F82E35A+41j
		test	ch, 40h
		jz	short loc_7F82E3AF
		test	ah, 40h
		jnz	short loc_7F82E3AF
		xor	eax, eax
		jmp	short locret_7F82E3D0
; ---------------------------------------------------------------------------

loc_7F82E3AF:				; CODE XREF: sub_7F82E35A+4Aj
					; sub_7F82E35A+4Fj
		mov	ax, cx
		and	al, 6
		cmp	al, 6
		jnz	short loc_7F82E3BC
		xor	eax, eax
		jmp	short locret_7F82E3D0
; ---------------------------------------------------------------------------

loc_7F82E3BC:				; CODE XREF: sub_7F82E35A+5Cj
		test	ch, 8
		jz	short loc_7F82E3CB
		test	ch, 0F0h
		mov	eax, 0
		jnz	short locret_7F82E3D0

loc_7F82E3CB:				; CODE XREF: sub_7F82E35A+65j
		mov	eax, 1

locret_7F82E3D0:			; CODE XREF: sub_7F82E35A+1Bj
					; sub_7F82E35A+29j ...
		retn	8
sub_7F82E35A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82E3D3	proc near		; CODE XREF: sub_7F822F66+1C1p
					; sub_7F822F66+2ACp

var_3C		= byte ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= word ptr -2Ch
var_2A		= word ptr -2Ah
var_1E		= word ptr -1Eh
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
lDistanceToMove	= dword	ptr -14h
nNumberOfBytesToRead= dword ptr	-10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= word ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ax, [esp+arg_8]
		mov	ebp, esp
		sub	esp, 3Ch
		mov	[ebp+var_2], ax
		push	ebx
		push	esi
		xor	ebx, ebx
		push	edi
		xor	esi, esi

loc_7F82E3E9:				; CODE XREF: sub_7F82E3D3+375j
		cmp	[ebp+var_2], bx
		jz	loc_7F82E753
		mov	eax, 253h
		cmp	dword_7F838078,	ebx
		jnz	short loc_7F82E430
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	edx, [ebp+arg_0]
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edx
		xor	eax, eax

loc_7F82E430:				; CODE XREF: sub_7F82E3D3+2Bj
		test	eax, eax
		jnz	loc_7F82E95E
		mov	eax, [ebp+arg_4]
		mov	cx, [eax]
		cmp	cx, 1
		jb	short loc_7F82E48A
		mov	eax, dword_7F838078
		mov	edx, [eax+200h]
		cmp	[edx+8], cx
		jbe	short loc_7F82E48A
		mov	ax, cx
		shr	ax, 6
		movzx	edx, ax
		and	edx, 3FFFFFCh
		mov	eax, dword_7F838078
		mov	esi, [eax+20Ch]
		mov	edi, [esi]
		mov	eax, [edx+edi]
		xor	edx, edx
		mov	dx, cx
		and	edx, 0FFh
		shl	edx, 5
		add	eax, edx
		mov	[ebp+var_8], eax
		jmp	short loc_7F82E48D
; ---------------------------------------------------------------------------

loc_7F82E48A:				; CODE XREF: sub_7F82E3D3+6Fj
					; sub_7F82E3D3+80j
		mov	[ebp+var_8], ebx

loc_7F82E48D:				; CODE XREF: sub_7F82E3D3+B5j
		cmp	[ebp+var_8], ebx
		jz	loc_7F82E7A0
		lea	edi, [ebp+var_3C]
		mov	esi, [ebp+var_8]
		mov	ecx, 8
		rep movsd
		mov	eax, [ebp+var_8]
		mov	edi, [eax+14h]
		mov	ecx, [eax+18h]
		and	edi, 7FFFFFFFh
		mov	edx, [eax+4]
		mov	[ebp+var_18], ecx
		mov	[ebp+var_C], edx
		mov	ecx, dword_7F838078
		cmp	[ecx+254h], bx
		jz	short loc_7F82E4D1
		call	sub_7F82A34F
		jmp	short loc_7F82E4DF
; ---------------------------------------------------------------------------

loc_7F82E4D1:				; CODE XREF: sub_7F82E3D3+F5j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82E4DF:				; CODE XREF: sub_7F82E3D3+FCj
		mov	eax, [ebp+arg_C]
		mov	dword_7F838078,	ebx
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	edx, [ebp+arg_C]
		mov	eax, [ecx+4]
		lea	ecx, [ebp+var_C]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edx
		lea	eax, [ebp+var_8]
		push	eax
		push	edi
		push	ecx
		call	sub_7F812FC1
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F82E555
		cmp	esi, 100Ah
		jnz	short loc_7F82E54D
		mov	eax, [ebp+var_38]
		push	1
		push	eax
		mov	[ebp+var_C], eax
		call	sub_7F81479E
		lea	ecx, [ebp+var_8]
		lea	eax, [ebp+var_C]
		push	ecx
		push	edi
		push	eax
		call	sub_7F812FC1
		mov	esi, eax

loc_7F82E54D:				; CODE XREF: sub_7F82E3D3+15Aj
		test	esi, esi
		jnz	loc_7F82E753

loc_7F82E555:				; CODE XREF: sub_7F82E3D3+152j
		mov	ecx, [ebp+var_8]
		mov	edx, [ebp+var_30]
		dec	[ebp+var_2]
		mov	eax, [ebp+var_34]
		mov	[ecx+8], eax
		mov	ecx, [ebp+var_8]
		add	[ebp+arg_4], 2
		mov	ax, [ebp+var_2A]
		mov	[ecx+0Ch], edx
		mov	ecx, [ebp+var_8]
		mov	[ecx+12h], ax
		mov	cx, [ebp+var_2C]
		mov	edx, [ebp+var_8]
		and	cx, 0F00h
		or	[edx+10h], cx
		push	[ebp+var_8]
		call	sub_7F814971
		mov	dx, [ebp+var_1E]
		mov	ecx, [ebp+var_8]
		mov	[ecx+1Eh], dx
		mov	ecx, [ebp+var_8]
		mov	edx, dword_7F838078
		mov	eax, [ecx+18h]
		cmp	[edx+254h], bx
		mov	[ebp+lDistanceToMove], eax
		jz	short loc_7F82E5BC
		call	sub_7F82A34F
		jmp	short loc_7F82E5CA
; ---------------------------------------------------------------------------

loc_7F82E5BC:				; CODE XREF: sub_7F82E3D3+1E0j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82E5CA:				; CODE XREF: sub_7F82E3D3+1E7j
		add	edi, 87h
		mov	esi, 0
		and	edi, 0FFFFFF80h
		mov	dword_7F838078,	ebx
		mov	[ebp+var_1C], 1
		jz	loc_7F82E71B

loc_7F82E5EB:				; CODE XREF: sub_7F82E3D3+342j
		cmp	edi, 2000h
		mov	eax, edi
		jb	short loc_7F82E5FA
		mov	eax, 2000h

loc_7F82E5FA:				; CODE XREF: sub_7F82E3D3+220j
		mov	[ebp+nNumberOfBytesToRead], eax
		cmp	dword_7F838078,	ebx
		jz	short loc_7F82E60C
		mov	esi, 253h
		jmp	short loc_7F82E63C
; ---------------------------------------------------------------------------

loc_7F82E60C:				; CODE XREF: sub_7F82E3D3+230j
		mov	eax, [ebp+arg_0]
		xor	esi, esi
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	edx, [ebp+arg_0]
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edx

loc_7F82E63C:				; CODE XREF: sub_7F82E3D3+237j
		test	esi, esi
		jnz	loc_7F82E71B
		lea	eax, [ebp+nNumberOfBytesToRead]
		push	eax		; int
		push	[ebp+var_18]	; lDistanceToMove
		push	lpBuffer	; lpBuffer
		call	sub_7F8127E7
		mov	esi, eax
		test	esi, esi
		jnz	loc_7F82E71B
		cmp	[ebp+var_1C], ebx
		jz	short loc_7F82E673
		mov	eax, [ebp+var_C]
		mov	ecx, lpBuffer
		mov	[ebp+var_1C], ebx
		mov	[ecx], eax

loc_7F82E673:				; CODE XREF: sub_7F82E3D3+290j
		mov	eax, dword_7F838078
		cmp	[eax+254h], bx
		jz	short loc_7F82E688
		call	sub_7F82A34F
		jmp	short loc_7F82E696
; ---------------------------------------------------------------------------

loc_7F82E688:				; CODE XREF: sub_7F82E3D3+2ACj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82E696:				; CODE XREF: sub_7F82E3D3+2B3j
		mov	eax, [ebp+arg_C]
		mov	dword_7F838078,	ebx
		push	[ebp+nNumberOfBytesToRead] ; nNumberOfBytesToRead
		push	[ebp+lDistanceToMove] ;	lDistanceToMove
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		push	lpBuffer	; int
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	edx, [ebp+arg_C]
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edx
		call	sub_7F812653
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F82E71B
		mov	eax, dword_7F838078
		cmp	[eax+254h], bx
		jz	short loc_7F82E6F6
		call	sub_7F82A34F
		jmp	short loc_7F82E704
; ---------------------------------------------------------------------------

loc_7F82E6F6:				; CODE XREF: sub_7F82E3D3+31Aj
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82E704:				; CODE XREF: sub_7F82E3D3+321j
		mov	eax, [ebp+nNumberOfBytesToRead]
		mov	dword_7F838078,	ebx
		add	[ebp+var_18], eax
		add	[ebp+lDistanceToMove], eax
		sub	edi, eax
		jnz	loc_7F82E5EB

loc_7F82E71B:				; CODE XREF: sub_7F82E3D3+212j
					; sub_7F82E3D3+26Bj ...
		mov	eax, 1
		cmp	dword_7F83809C,	ebx
		jbe	short loc_7F82E746
		push	64h
		sub	edx, edx
		inc	dword_7F838098
		mov	eax, dword_7F838098
		imul	eax, 64h
		div	dword_7F83809C
		push	eax
		call	sub_7F82A9CA

loc_7F82E746:				; CODE XREF: sub_7F82E3D3+353j
		test	eax, eax
		jnz	loc_7F82E3E9
		mov	esi, 101Eh

loc_7F82E753:				; CODE XREF: sub_7F82E3D3+1Aj
					; sub_7F82E3D3+17Cj ...
		xor	ecx, ecx
		test	esi, esi
		jz	loc_7F82E925
		cmp	esi, 101Eh
		jz	loc_7F82E925
		cmp	[ebp+var_2], cx
		jz	loc_7F82E925
		mov	di, [ebp+arg_8]
		sub	di, [ebp+var_2]
		movzx	eax, di
		add	eax, eax
		sub	[ebp+arg_4], eax
		cmp	dword_7F838078,	ecx
		jz	short loc_7F82E7BF
		mov	eax, dword_7F838078
		cmp	[eax+254h], cx
		jz	short loc_7F82E7A7
		call	sub_7F82A34F
		jmp	short loc_7F82E7B5
; ---------------------------------------------------------------------------

loc_7F82E7A0:				; CODE XREF: sub_7F82E3D3+BDj
		mov	esi, 1001h
		jmp	short loc_7F82E753
; ---------------------------------------------------------------------------

loc_7F82E7A7:				; CODE XREF: sub_7F82E3D3+3C4j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82E7B5:				; CODE XREF: sub_7F82E3D3+3CBj
		mov	dword_7F838078,	0

loc_7F82E7BF:				; CODE XREF: sub_7F82E3D3+3B6j
		mov	ax, di
		dec	di
		test	ax, ax
		jz	loc_7F82E925
		xor	ebx, ebx

loc_7F82E7CF:				; CODE XREF: sub_7F82E3D3+54Cj
		mov	eax, 253h
		cmp	dword_7F838078,	ebx
		jnz	short loc_7F82E80C
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	edx, [ebp+arg_0]
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edx
		xor	eax, eax

loc_7F82E80C:				; CODE XREF: sub_7F82E3D3+407j
		test	eax, eax
		jnz	loc_7F82E925
		mov	eax, [ebp+arg_4]
		add	[ebp+arg_4], 2
		cmp	word ptr [eax],	1
		jb	short loc_7F82E87C
		mov	eax, [ebp+arg_4]
		mov	ecx, dword_7F838078
		mov	ax, [eax]
		mov	edx, [ecx+200h]
		add	[ebp+arg_4], 2
		cmp	[edx+8], ax
		jbe	short loc_7F82E87C
		mov	eax, [ebp+arg_4]
		mov	edx, dword_7F838078
		mov	cx, [eax]
		mov	edx, [edx+20Ch]
		add	[ebp+arg_4], 4
		mov	ax, cx
		mov	edx, [edx]
		shr	ax, 6
		movzx	eax, ax
		and	eax, 3FFFFFCh
		mov	eax, [eax+edx]
		xor	edx, edx
		mov	dx, cx
		and	edx, 0FFh
		shl	edx, 5
		add	eax, edx
		mov	[ebp+var_8], eax
		jmp	short loc_7F82E87F
; ---------------------------------------------------------------------------

loc_7F82E87C:				; CODE XREF: sub_7F82E3D3+44Cj
					; sub_7F82E3D3+468j
		mov	[ebp+var_8], ebx

loc_7F82E87F:				; CODE XREF: sub_7F82E3D3+4A7j
		mov	eax, [ebp+var_8]
		mov	edx, dword_7F838078
		mov	ecx, [eax+4]
		mov	[ebp+var_C], ecx
		cmp	[edx+254h], bx
		jz	short loc_7F82E89E
		call	sub_7F82A34F
		jmp	short loc_7F82E8AC
; ---------------------------------------------------------------------------

loc_7F82E89E:				; CODE XREF: sub_7F82E3D3+4C2j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82E8AC:				; CODE XREF: sub_7F82E3D3+4C9j
		mov	eax, [ebp+arg_C]
		push	1
		mov	dword_7F838078,	ebx
		mov	ecx, [eax]
		mov	dword_7F83807C,	ecx
		push	[ebp+var_C]
		mov	ax, [ecx+2Ch]
		mov	word_7F838084, ax
		mov	edx, [ecx]
		mov	dword_7F838078,	edx
		mov	edx, [ebp+arg_C]
		mov	eax, [ecx+4]
		mov	dword_7F838080,	eax
		mov	dword_7F83807C,	edx
		call	sub_7F81479E
		test	eax, eax
		jnz	short loc_7F82E925
		mov	eax, dword_7F838078
		cmp	[eax+254h], bx
		jz	short loc_7F82E903
		call	sub_7F82A34F
		jmp	short loc_7F82E911
; ---------------------------------------------------------------------------

loc_7F82E903:				; CODE XREF: sub_7F82E3D3+527j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82E911:				; CODE XREF: sub_7F82E3D3+52Ej
		mov	ax, di
		mov	dword_7F838078,	ebx
		dec	di
		test	ax, ax
		jnz	loc_7F82E7CF

loc_7F82E925:				; CODE XREF: sub_7F82E3D3+384j
					; sub_7F82E3D3+390j ...
		cmp	dword_7F838078,	0
		jz	short loc_7F82E95C
		mov	eax, dword_7F838078
		cmp	word ptr [eax+254h], 0
		jz	short loc_7F82E944
		call	sub_7F82A34F
		jmp	short loc_7F82E952
; ---------------------------------------------------------------------------

loc_7F82E944:				; CODE XREF: sub_7F82E3D3+568j
		mov	eax, dword_7F838078
		and	word ptr [eax+264h], 0FFFDh

loc_7F82E952:				; CODE XREF: sub_7F82E3D3+56Fj
		mov	dword_7F838078,	0

loc_7F82E95C:				; CODE XREF: sub_7F82E3D3+559j
		mov	eax, esi

loc_7F82E95E:				; CODE XREF: sub_7F82E3D3+5Fj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_7F82E3D3	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82E967	proc near		; CODE XREF: sub_7F823FB2j
		push	30h
		push	2Ch
		call	sub_7F82F18D
		test	eax, eax
		jz	short locret_7F82E97C
		mov	ecx, [eax]
		mov	word ptr [ecx+4], 2

locret_7F82E97C:			; CODE XREF: sub_7F82E967+Bj
		retn
sub_7F82E967	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F82E97D(int, HWND hWnd, int, int)
sub_7F82E97D	proc near		; CODE XREF: sub_7F824021+67p

arg_0		= dword	ptr  8
hWnd		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		mov	esi, [ebp+arg_0]
		mov	ecx, [esi]
		mov	bx, [ecx+2]
		cmp	[ecx+4], bx
		jg	short loc_7F82E9BA
		add	bx, 2
		push	edi
		movsx	eax, bx
		shl	eax, 4
		add	eax, 0Ch
		push	eax
		push	esi
		call	sub_7F82F1FF
		test	eax, eax
		jnz	short loc_7F82E9B4
		mov	edi, 400h
		jmp	short loc_7F82E9F0
; ---------------------------------------------------------------------------

loc_7F82E9B4:				; CODE XREF: sub_7F82E97D+2Ej
		mov	ecx, [esi]
		mov	[ecx+4], bx

loc_7F82E9BA:				; CODE XREF: sub_7F82E97D+15j
		mov	dx, [ecx+2]
		movsx	eax, dx
		inc	dx
		push	0		; nIndex
		shl	eax, 4
		mov	[ecx+2], dx
		lea	ebx, [eax+ecx+0Ch]
		mov	eax, [ebp+hWnd]
		push	eax		; hWnd
		mov	[ebx+4], eax
		call	ds:GetWindowLongA
		mov	ecx, [ebp+arg_8]
		mov	[ebx], eax
		mov	eax, [ebp+arg_C]
		mov	[ebx+8], ecx
		mov	[ebx+0Ch], eax
		mov	edx, [eax]
		mov	[edx+4], esi

loc_7F82E9F0:				; CODE XREF: sub_7F82E97D+35j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_7F82E97D	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82E9F9	proc near		; CODE XREF: sub_7F8240DB+5Bp
					; sub_7F82ADFE+A8p

arg_0		= dword	ptr  4
arg_4		= word ptr  8

		push	ebx
		push	esi
		movsx	eax, [esp+8+arg_4]
		push	edi
		push	ebp
		mov	edi, [esp+10h+arg_0]
		mov	ebp, [edi]
		lea	ebx, [ebp+2]
		movsx	ecx, word ptr [ebx]
		sub	ecx, eax
		dec	ecx
		shl	ecx, 4
		test	ecx, ecx
		jz	short loc_7F82EA2E
		shl	eax, 4
		push	ecx
		add	eax, ebp
		lea	edx, [eax+1Ch]
		add	eax, 0Ch
		push	edx
		push	eax
		call	sub_7F82FCE0
		add	esp, 0Ch

loc_7F82EA2E:				; CODE XREF: sub_7F82E9F9+1Dj
		mov	si, [ebx]
		dec	si
		mov	[ebx], si
		movsx	eax, si
		movsx	ecx, word ptr [ebp+4]
		sub	ecx, eax
		cmp	ecx, 8
		jl	short loc_7F82EA64
		add	si, 2
		push	0
		movsx	eax, si
		shl	eax, 4
		add	eax, 0Ch
		push	eax
		push	edi
		call	sub_7F82F1FF
		test	eax, eax
		jz	short loc_7F82EA64
		mov	eax, [edi]
		mov	[eax+4], si

loc_7F82EA64:				; CODE XREF: sub_7F82E9F9+49j
					; sub_7F82E9F9+63j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F82E9F9	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82EA6B	proc near		; CODE XREF: sub_7F824021+43p
		push	esi
		xor	esi, esi
		push	esi
		push	18h
		call	sub_7F82F18D
		test	eax, eax
		jz	short loc_7F82EA88
		mov	ecx, [eax]
		mov	[ecx], si
		mov	word ptr [ecx+2], 4
		mov	[ecx+4], esi

loc_7F82EA88:				; CODE XREF: sub_7F82EA6B+Dj
		pop	esi
		retn
sub_7F82EA6B	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82EA8A	proc near		; CODE XREF: sub_7F824021+A8p
					; sub_7F8240DB+52p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, [esp+8+arg_0]
		mov	edx, [esi]
		mov	cx, [edx]
		add	edx, 8
		test	cx, cx
		jle	short loc_7F82EAB0
		xor	edi, edi

loc_7F82EA9F:				; CODE XREF: sub_7F82EA8A+24j
		dec	cx
		mov	eax, [edx]
		add	edx, 4
		mov	eax, [eax]
		test	cx, cx
		mov	[eax+8], edi
		jnz	short loc_7F82EA9F

loc_7F82EAB0:				; CODE XREF: sub_7F82EA8A+11j
		push	esi
		call	sub_7F82F1E1
		pop	edi
		pop	esi
		retn	4
sub_7F82EA8A	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82EABB	proc near		; CODE XREF: sub_7F824021+85p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		xor	edi, edi
		mov	edx, [esi]
		mov	bx, [edx]
		cmp	[edx+2], bx
		jg	short loc_7F82EAF6
		add	bx, 4
		push	edi
		movsx	eax, bx
		lea	ecx, ds:8[eax*4]
		push	ecx
		push	esi
		call	sub_7F82F1FF
		test	eax, eax
		jnz	short loc_7F82EAF0
		mov	edi, 400h
		jmp	short loc_7F82EB09
; ---------------------------------------------------------------------------

loc_7F82EAF0:				; CODE XREF: sub_7F82EABB+2Cj
		mov	edx, [esi]
		mov	[edx+2], bx

loc_7F82EAF6:				; CODE XREF: sub_7F82EABB+12j
		movsx	ecx, word ptr [edx]
		mov	eax, [esp+0Ch+arg_4]
		mov	[edx+ecx*4+8], eax
		inc	word ptr [edx]
		mov	edx, [eax]
		mov	[edx+8], esi

loc_7F82EB09:				; CODE XREF: sub_7F82EABB+33j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F82EABB	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82EB11	proc near		; CODE XREF: sub_7F8240DB+31p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		mov	eax, [esp+0Ch+arg_4]
		mov	edi, [esi]
		mov	bx, [edi]
		lea	ecx, [edi+8]
		test	bx, bx
		jle	short loc_7F82EB37

loc_7F82EB29:				; CODE XREF: sub_7F82EB11+24j
		cmp	[ecx], eax
		jz	short loc_7F82EB37
		dec	bx
		add	ecx, 4
		test	bx, bx
		jg	short loc_7F82EB29

loc_7F82EB37:				; CODE XREF: sub_7F82EB11+16j
					; sub_7F82EB11+1Aj
		xor	edx, edx
		test	bx, bx
		jle	short loc_7F82EBA1
		mov	eax, [eax]
		movsx	ebx, bx
		mov	[eax+8], edx
		lea	eax, ds:0FFFFFFFCh[ebx*4]
		test	eax, eax
		jz	short loc_7F82EB5F
		push	eax
		lea	edx, [ecx+4]
		push	edx
		push	ecx
		call	sub_7F82FCE0
		add	esp, 0Ch

loc_7F82EB5F:				; CODE XREF: sub_7F82EB11+3Ej
		mov	ax, [edi]
		xor	edx, edx
		dec	ax
		movsx	ecx, ax
		mov	[edi], ax
		mov	[edi+ecx*4+8], edx
		mov	bx, [edi]
		movsx	eax, word ptr [edi+2]
		movsx	ecx, bx
		sub	eax, ecx
		cmp	eax, 10h
		jl	short loc_7F82EBA1
		add	bx, 4
		push	edx
		movsx	eax, bx
		lea	ecx, ds:8[eax*4]
		push	ecx
		push	esi
		call	sub_7F82F1FF
		test	eax, eax
		jz	short loc_7F82EBA1
		mov	eax, [esi]
		mov	[eax+2], bx

loc_7F82EBA1:				; CODE XREF: sub_7F82EB11+2Bj
					; sub_7F82EB11+6Ej ...
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F82EB11	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82EBA7	proc near		; CODE XREF: sub_7F824021+23p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		xor	esi, esi
		push	esi
		push	14h
		call	sub_7F82F18D
		test	eax, eax
		jz	short loc_7F82EBD9
		mov	edx, [eax]
		mov	ecx, [esp+4+arg_8]
		mov	[edx], ecx
		mov	ecx, [esp+4+arg_4]
		mov	[edx+4], ecx
		mov	[edx+8], esi
		mov	[edx+0Eh], si
		mov	esi, [esp+4+arg_0]
		mov	word ptr [edx+0Ch], 1
		mov	[edx+10h], esi

loc_7F82EBD9:				; CODE XREF: sub_7F82EBA7+Dj
		pop	esi
		retn	0Ch
sub_7F82EBA7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82EBDD	proc near		; CODE XREF: sub_7F82ADFE+3Dp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		cmp	dword_7F839098,	0
		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		jnz	short loc_7F82EC07
		cmp	edi, 80h
		ja	short loc_7F82EC07
		mov	dword_7F839098,	1
		mov	esi, offset unk_7F833D30
		jmp	short loc_7F82EC14
; ---------------------------------------------------------------------------

loc_7F82EC07:				; CODE XREF: sub_7F82EBDD+Fj
					; sub_7F82EBDD+17j
		push	20h
		lea	eax, [edi+0Ch]
		push	eax
		call	sub_7F82F03B
		mov	esi, eax

loc_7F82EC14:				; CODE XREF: sub_7F82EBDD+28j
		xor	ecx, ecx
		test	esi, esi
		jz	short loc_7F82EC39
		mov	eax, [ebp+arg_0]
		test	edi, edi
		mov	[esi], eax
		mov	[esi+4], ecx
		mov	[esi+8], edi
		jz	short loc_7F82EC39
		push	edi
		lea	ecx, [esi+0Ch]
		push	[ebp+arg_4]
		push	ecx
		call	sub_7F82FCE0
		add	esp, 0Ch

loc_7F82EC39:				; CODE XREF: sub_7F82EBDD+3Bj
					; sub_7F82EBDD+4Aj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
sub_7F82EBDD	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82EC41	proc near		; CODE XREF: sub_7F82ADFE+F1p

arg_0		= dword	ptr  4

		cmp	[esp+arg_0], offset unk_7F833D30
		jnz	short loc_7F82EC57
		mov	dword_7F839098,	0
		jmp	short locret_7F82EC60
; ---------------------------------------------------------------------------

loc_7F82EC57:				; CODE XREF: sub_7F82EC41+8j
		push	[esp+arg_0]
		call	sub_7F82F149

locret_7F82EC60:			; CODE XREF: sub_7F82EC41+14j
		retn	4
sub_7F82EC41	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82EC63	proc near		; CODE XREF: sub_7F824021+39p
					; sub_7F8240DB+3Fp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, [eax]
		call	ds:__imp_GetCurrentProcessId
		mov	dx, [esi+2]
		movsx	ecx, dx
		shl	ecx, 4
		test	dx, dx
		lea	ecx, [ecx+esi-4]
		jle	short loc_7F82EC91

loc_7F82EC83:				; CODE XREF: sub_7F82EC63+2Cj
		cmp	[ecx], eax
		jz	short loc_7F82EC91
		dec	dx
		sub	ecx, 10h
		test	dx, dx
		jg	short loc_7F82EC83

loc_7F82EC91:				; CODE XREF: sub_7F82EC63+1Ej
					; sub_7F82EC63+22j
		lea	eax, [edx-1]
		pop	esi
		retn	4
sub_7F82EC63	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82EC98	proc near		; CODE XREF: sub_7F8240DB+68p
					; sub_7F8241B0+26p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, [eax]
		xor	eax, eax
		mov	dx, [esi]
		add	esi, 8
		test	dx, dx
		jle	short loc_7F82ECBD

loc_7F82ECAC:				; CODE XREF: sub_7F82EC98+23j
		dec	dx
		mov	ecx, [esi]
		add	esi, 4
		mov	ecx, [ecx]
		or	eax, [ecx+10h]
		test	dx, dx
		jnz	short loc_7F82ECAC

loc_7F82ECBD:				; CODE XREF: sub_7F82EC98+12j
		pop	esi
		retn	4
sub_7F82EC98	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82ECC1	proc near		; CODE XREF: sub_7F82B9AC+27p
					; sub_7F82ED7C+43p

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	ecx, [esp+arg_0]
		mov	ax, [ecx]
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_8]
		cmp	[esi], ax
		jg	short loc_7F82ED34
		mov	edi, 0FFFFFFFFh

loc_7F82ECDB:				; CODE XREF: sub_7F82ECC1+71j
		mov	dx, [esi]
		cmp	[ecx], dx
		jnz	short loc_7F82ED17
		mov	ax, [ecx+2]
		movsx	ebx, ax
		cmp	ebx, [ebp+arg_C]
		jl	short loc_7F82ED34
		cmp	[ebp+arg_C], edi
		jnz	short loc_7F82ECFA
		cmp	[esi+2], ax
		jg	short loc_7F82ED34

loc_7F82ECFA:				; CODE XREF: sub_7F82ECC1+31j
		cmp	[esi+2], ax
		jnz	short loc_7F82ED17
		mov	ax, [ecx+4]
		movsx	ecx, ax
		cmp	ecx, [ebp+arg_10]
		jl	short loc_7F82ED34
		cmp	[ebp+arg_10], edi
		jnz	short loc_7F82ED17
		cmp	[esi+4], ax
		jg	short loc_7F82ED34

loc_7F82ED17:				; CODE XREF: sub_7F82ECC1+20j
					; sub_7F82ECC1+3Dj ...
		cmp	[ebp+arg_4], 0
		jz	short loc_7F82ED47
		mov	ecx, esi
		mov	[ebp+arg_10], edi
		mov	esi, [ebp+arg_4]
		mov	[ebp+arg_C], edi
		mov	[ebp+arg_4], 0
		cmp	[esi], dx
		jle	short loc_7F82ECDB

loc_7F82ED34:				; CODE XREF: sub_7F82ECC1+13j
					; sub_7F82ECC1+2Cj ...
		cmp	[ebp+arg_4], 1
		mov	eax, 70Bh
		adc	eax, 0FFFFFFFFh

loc_7F82ED40:				; CODE XREF: sub_7F82ECC1+88j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	14h
; ---------------------------------------------------------------------------

loc_7F82ED47:				; CODE XREF: sub_7F82ECC1+5Aj
		xor	eax, eax
		jmp	short loc_7F82ED40
sub_7F82ECC1	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82ED4B	proc near		; CODE XREF: sub_7F8216EE+34p
					; sub_7F821D9A+48p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx
		mov	word ptr [eax],	3
		mov	[eax+6], ecx
		mov	[eax+2], cx
		mov	[eax+0Ah], ecx
		mov	[eax+0Eh], ecx
		mov	[eax+12h], ecx
		mov	dword ptr [eax+6], offset aDemilayr ; "demilayr"
		mov	word ptr [eax+4], 0FA6h
		mov	word ptr [eax+16h], 1
		retn	4
sub_7F82ED4B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82ED7C	proc near		; CODE XREF: sub_7F8173E6+34p

var_18		= word ptr -18h
var_16		= word ptr -16h
var_14		= word ptr -14h
var_12		= dword	ptr -12h
var_E		= dword	ptr -0Eh
var_A		= dword	ptr -0Ah
var_6		= dword	ptr -6
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 18h
		mov	[ebp+var_16], ax
		mov	[ebp+var_E], eax
		mov	[ebp+var_A], eax
		mov	[ebp+var_6], eax
		mov	ecx, offset aDemilayr ;	"demilayr"
		mov	edx, [ebp+arg_4]
		mov	[ebp+var_18], 3
		push	0BBBh
		mov	[ebp+var_12], ecx
		push	eax
		mov	[edx+6], ecx
		mov	[ebp+var_14], 0FA6h
		mov	[ebp+var_2], 1
		lea	eax, [ebp+var_18]
		push	eax
		push	edx
		push	[ebp+arg_0]
		call	sub_7F82ECC1
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F82ED7C	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82EDCA	proc near		; CODE XREF: sub_7F8173E6+4Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		xor	edx, edx
		mov	word ptr [eax],	3
		mov	[eax+6], edx
		mov	[eax+2], dx
		mov	[eax+0Ah], edx
		mov	ecx, [esp+arg_4]
		mov	[eax+0Eh], edx
		mov	word ptr [eax+4], 0FA3h
		mov	word ptr [eax+16h], 1
		mov	[eax+12h], edx
		mov	word ptr [ecx],	3
		mov	eax, dword_7F83909C
		mov	[ecx+2], ax
		mov	eax, dword_7F8390A0
		mov	[ecx+4], ax
		mov	[ecx+6], edx
		mov	[ecx+0Ah], edx
		mov	[ecx+0Eh], edx
		mov	word ptr [ecx+16h], 1
		mov	[ecx+12h], edx
		retn	8
sub_7F82EDCA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; BOOL __stdcall DllEntryPoint(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved)
		public DllEntryPoint
DllEntryPoint	proc near

hMutex		= dword	ptr -4
hinstDLL	= dword	ptr  8
fdwReason	= dword	ptr  0Ch
lpReserved	= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	esi
		mov	esi, [ebp+fdwReason]
		cmp	esi, 1
		jz	short loc_7F82EE41
		cmp	esi, 2
		jz	short loc_7F82EE76

loc_7F82EE35:				; CODE XREF: DllEntryPoint+4Fj
					; DllEntryPoint+7Cj
		mov	eax, 1

loc_7F82EE3A:				; CODE XREF: DllEntryPoint+37j
					; DllEntryPoint+53j ...
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------

loc_7F82EE41:				; CODE XREF: DllEntryPoint+Dj
		mov	eax, [ebp+hinstDLL]
		lea	ecx, [ebp+hMutex]
		push	ecx
		mov	dword_7F833F18,	eax
		call	sub_7F82EEA3
		test	eax, eax
		jnz	short loc_7F82EE5A
		xor	eax, eax
		jmp	short loc_7F82EE3A
; ---------------------------------------------------------------------------

loc_7F82EE5A:				; CODE XREF: DllEntryPoint+33j
		push	[ebp+lpReserved]
		push	esi
		push	[ebp+hinstDLL]
		call	sub_7F830310
		push	[ebp+hMutex]	; hMutex
		call	sub_7F82EED6
		test	eax, eax
		jnz	short loc_7F82EE35
		xor	eax, eax
		jmp	short loc_7F82EE3A
; ---------------------------------------------------------------------------

loc_7F82EE76:				; CODE XREF: DllEntryPoint+12j
		lea	eax, [ebp+hMutex]
		push	eax
		call	sub_7F82EEA3
		test	eax, eax
		jnz	short loc_7F82EE87
		xor	eax, eax
		jmp	short loc_7F82EE3A
; ---------------------------------------------------------------------------

loc_7F82EE87:				; CODE XREF: DllEntryPoint+60j
		push	[ebp+lpReserved]
		push	esi
		push	[ebp+hinstDLL]
		call	sub_7F830310
		push	[ebp+hMutex]	; hMutex
		call	sub_7F82EED6
		test	eax, eax
		jnz	short loc_7F82EE35
		xor	eax, eax
		jmp	short loc_7F82EE3A
DllEntryPoint	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82EEA3	proc near		; CODE XREF: DllEntryPoint+2Cp
					; DllEntryPoint+59p

arg_0		= dword	ptr  4

		push	offset Name	; "MsMail32.CrtInit"
		push	0		; bInitialOwner
		push	0		; lpMutexAttributes
		call	ds:CreateMutexA
		mov	ecx, [esp+arg_0]
		test	eax, eax
		mov	[ecx], eax
		jnz	short loc_7F82EEC0
		xor	eax, eax
		jmp	short locret_7F82EED3
; ---------------------------------------------------------------------------

loc_7F82EEC0:				; CODE XREF: sub_7F82EEA3+17j
		push	493E0h		; dwMilliseconds
		push	eax		; hHandle
		call	ds:WaitForSingleObject
		cmp	eax, 1
		sbb	eax, eax
		neg	eax

locret_7F82EED3:			; CODE XREF: sub_7F82EEA3+1Bj
		retn	4
sub_7F82EEA3	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F82EED6(HANDLE hMutex)
sub_7F82EED6	proc near		; CODE XREF: DllEntryPoint+48p
					; DllEntryPoint+75p

hMutex		= dword	ptr  4

		push	[esp+hMutex]	; hMutex
		call	ds:ReleaseMutex
		push	[esp+hMutex]	; hObject
		call	ds:CloseHandle
		mov	eax, 1
		retn	4
sub_7F82EED6	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82EEF2	proc near		; CODE XREF: sub_7F814EF3+44p
		mov	eax, 1
		retn	4
sub_7F82EEF2	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82EEFA	proc near		; CODE XREF: sub_7F814F94+95p
		mov	eax, 1
		retn	4
sub_7F82EEFA	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82EF02	proc near		; CODE XREF: sub_7F816044:loc_7F816064p
					; sub_7F8161D3:loc_7F8161F2p ...
		call	GetCurrentProcessId
		cmp	eax, dword_7F837098
		jnz	short loc_7F82EF16
		mov	eax, dword_7F83709C
		jmp	short loc_7F82EF1B
; ---------------------------------------------------------------------------

loc_7F82EF16:				; CODE XREF: sub_7F82EF02+Bj
		call	sub_7F824327

loc_7F82EF1B:				; CODE XREF: sub_7F82EF02+12j
		push	493E0h		; dwMilliseconds
		push	dword ptr [eax+28h] ; hHandle
		call	ds:WaitForSingleObject
		cmp	eax, 1
		sbb	eax, eax
		neg	eax
		retn
sub_7F82EF02	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82EF31	proc near		; CODE XREF: sub_7F816044:loc_7F8160B5p
					; sub_7F816044:loc_7F8160C1p ...
		call	GetCurrentProcessId
		cmp	eax, dword_7F837098
		jnz	short loc_7F82EF45
		mov	eax, dword_7F83709C
		jmp	short loc_7F82EF4A
; ---------------------------------------------------------------------------

loc_7F82EF45:				; CODE XREF: sub_7F82EF31+Bj
		call	sub_7F824327

loc_7F82EF4A:				; CODE XREF: sub_7F82EF31+12j
		push	dword ptr [eax+28h] ; hMutex
		call	ds:ReleaseMutex
		cmp	eax, 1
		sbb	eax, eax
		inc	eax
		retn
sub_7F82EF31	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82EF5A	proc near		; CODE XREF: sub_7F82EFBB+1Dp
					; sub_7F82F03B+61p

var_4		= dword	ptr -4
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	esi
		push	edi
		mov	esi, [ebp+arg_4]
		lea	edi, [esi+10h]
		cmp	edi, 10000h
		jbe	short loc_7F82EF74
		xor	eax, eax
		jmp	short loc_7F82EFB3
; ---------------------------------------------------------------------------

loc_7F82EF74:				; CODE XREF: sub_7F82EF5A+14j
		mov	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	edi
		call	MAPIAllocateBuffer@8
		test	eax, eax
		mov	eax, 0
		jnz	short loc_7F82EFB3
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax+4], 0FFFFFFFFh
		mov	ecx, [ebp+var_4]
		mov	dword ptr [ecx], 0
		mov	eax, [ebp+var_4]
		mov	[eax+8], edi
		mov	eax, [ebp+var_4]
		mov	[eax+0Ch], esi
		mov	eax, [ebp+var_4]
		add	eax, 10h

loc_7F82EFB3:				; CODE XREF: sub_7F82EF5A+18j
					; sub_7F82EF5A+32j
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F82EF5A	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82EFBB	proc near		; CODE XREF: sub_7F82F0CD+45p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_8]
		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		push	edi
		push	ebp
		cmp	[ebx-4], eax
		lea	esi, [ebx-10h]
		jnz	short loc_7F82EFD3
		mov	eax, ebx
		jmp	short loc_7F82F009
; ---------------------------------------------------------------------------

loc_7F82EFD3:				; CODE XREF: sub_7F82EFBB+12j
		push	eax
		push	[esp+14h+arg_0]
		call	sub_7F82EF5A
		mov	ebp, eax
		mov	eax, 0
		test	ebp, ebp
		jz	short loc_7F82F009
		mov	eax, [esi+0Ch]
		mov	edi, ebp
		mov	esi, ebx
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		push	ebx
		and	ecx, 3
		rep movsb
		push	[esp+14h+arg_0]
		call	sub_7F82F010
		mov	eax, ebp

loc_7F82F009:				; CODE XREF: sub_7F82EFBB+16j
					; sub_7F82EFBB+2Bj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_7F82EFBB	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82F010	proc near		; CODE XREF: sub_7F82EFBB+47p
					; sub_7F82F149+1Ep

arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		sub	eax, 10h
		cmp	dword ptr [eax+4], 0FFFFFFFFh
		jnz	short loc_7F82F02C
		push	eax
		call	MAPIFreeBuffer@4
		test	eax, eax
		mov	eax, 1
		jz	short locret_7F82F02E

loc_7F82F02C:				; CODE XREF: sub_7F82F010+Bj
		xor	eax, eax

locret_7F82F02E:			; CODE XREF: sub_7F82F010+1Aj
		retn	8
sub_7F82F010	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82F031	proc near		; CODE XREF: sub_7F82F0CD+33p
					; sub_7F82F16F+16p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax-4]
		retn	4
sub_7F82F031	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82F03B	proc near		; CODE XREF: sub_7F8107B6+2Ep
					; sub_7F81339D+13Bp ...

Text		= byte ptr -64h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 64h
		push	esi
		push	edi
		call	GetCurrentProcessId
		cmp	eax, dword_7F837098
		jnz	short loc_7F82F058
		mov	edi, dword_7F83709C
		jmp	short loc_7F82F05F
; ---------------------------------------------------------------------------

loc_7F82F058:				; CODE XREF: sub_7F82F03B+13j
		call	sub_7F824327
		mov	edi, eax

loc_7F82F05F:				; CODE XREF: sub_7F82F03B+1Bj
		mov	esi, [ebp+arg_0]
		cmp	esi, 0FFFFh
		jbe	short loc_7F82F090
		push	esi
		lea	eax, [ebp+Text]
		push	offset aCbmaxallocD ; "cbMaxAlloc %d"
		push	eax		; LPSTR
		call	ds:wsprintfA
		add	esp, 0Ch
		lea	eax, [ebp+Text]
		push	0		; uType
		push	offset aMemory	; "Memory"
		push	eax		; lpText
		push	0		; hWnd
		call	ds:MessageBoxA

loc_7F82F090:				; CODE XREF: sub_7F82F03B+2Dj
		cmp	esi, 30h
		jnb	short loc_7F82F09A
		mov	esi, 30h

loc_7F82F09A:				; CODE XREF: sub_7F82F03B+58j
		push	esi
		push	edi
		call	sub_7F82EF5A
		mov	edx, eax
		test	edx, edx
		jnz	short loc_7F82F0AB
		xor	eax, eax
		jmp	short loc_7F82F0C5
; ---------------------------------------------------------------------------

loc_7F82F0AB:				; CODE XREF: sub_7F82F03B+6Aj
		cmp	[ebp+arg_4], 0
		jz	short loc_7F82F0C3
		mov	edi, edx
		xor	eax, eax
		mov	ecx, esi
		shr	ecx, 2
		rep stosd
		mov	ecx, esi
		and	ecx, 3
		rep stosb

loc_7F82F0C3:				; CODE XREF: sub_7F82F03B+74j
		mov	eax, edx

loc_7F82F0C5:				; CODE XREF: sub_7F82F03B+6Ej
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	8
sub_7F82F03B	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82F0CD	proc near		; CODE XREF: sub_7F816044+45p
					; sub_7F816255+D0p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		push	edi
		push	ebp
		call	GetCurrentProcessId
		cmp	eax, dword_7F837098
		jnz	short loc_7F82F0E6
		mov	esi, dword_7F83709C
		jmp	short loc_7F82F0ED
; ---------------------------------------------------------------------------

loc_7F82F0E6:				; CODE XREF: sub_7F82F0CD+Fj
		call	sub_7F824327
		mov	esi, eax

loc_7F82F0ED:				; CODE XREF: sub_7F82F0CD+17j
		mov	ebx, [esp+10h+arg_4]
		cmp	ebx, 30h
		jnb	short loc_7F82F0FB
		mov	ebx, 30h

loc_7F82F0FB:				; CODE XREF: sub_7F82F0CD+27j
		mov	ebp, [esp+10h+arg_0]
		push	ebp
		call	sub_7F82F031
		cmp	ebx, eax
		mov	edi, eax
		jnz	short loc_7F82F10F
		mov	eax, ebp
		jmp	short loc_7F82F142
; ---------------------------------------------------------------------------

loc_7F82F10F:				; CODE XREF: sub_7F82F0CD+3Cj
		push	ebx
		push	ebp
		push	esi
		call	sub_7F82EFBB
		mov	edx, eax
		test	edx, edx
		jnz	short loc_7F82F121
		xor	eax, eax
		jmp	short loc_7F82F142
; ---------------------------------------------------------------------------

loc_7F82F121:				; CODE XREF: sub_7F82F0CD+4Ej
		cmp	[esp+10h+arg_8], 0
		jz	short loc_7F82F140
		cmp	ebx, edi
		jbe	short loc_7F82F140
		sub	ebx, edi
		xor	eax, eax
		add	edi, edx
		mov	ecx, ebx
		shr	ecx, 2
		rep stosd
		mov	ecx, ebx
		and	ecx, 3
		rep stosb

loc_7F82F140:				; CODE XREF: sub_7F82F0CD+59j
					; sub_7F82F0CD+5Dj
		mov	eax, edx

loc_7F82F142:				; CODE XREF: sub_7F82F0CD+40j
					; sub_7F82F0CD+52j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_7F82F0CD	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82F149	proc near		; CODE XREF: sub_7F8107B6+AEp
					; sub_7F81339D+1DEp ...

arg_0		= dword	ptr  4

		call	GetCurrentProcessId
		cmp	eax, dword_7F837098
		jnz	short loc_7F82F15D
		mov	eax, dword_7F83709C
		jmp	short loc_7F82F162
; ---------------------------------------------------------------------------

loc_7F82F15D:				; CODE XREF: sub_7F82F149+Bj
		call	sub_7F824327

loc_7F82F162:				; CODE XREF: sub_7F82F149+12j
		push	[esp+arg_0]
		push	eax
		call	sub_7F82F010
		retn	4
sub_7F82F149	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82F16F	proc near		; CODE XREF: sub_7F82F1CA+Fp

arg_0		= dword	ptr  4

		call	GetCurrentProcessId
		cmp	eax, dword_7F837098
		jz	short loc_7F82F181
		call	sub_7F824327

loc_7F82F181:				; CODE XREF: sub_7F82F16F+Bj
		push	[esp+arg_0]
		call	sub_7F82F031
		retn	4
sub_7F82F16F	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82F18D	proc near		; CODE XREF: sub_7F81039F+54p
					; sub_7F810567+93p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	1
		push	8
		call	sub_7F82F03B
		test	eax, eax
		jnz	short loc_7F82F19F
		xor	eax, eax
		jmp	short loc_7F82F1C6
; ---------------------------------------------------------------------------

loc_7F82F19F:				; CODE XREF: sub_7F82F18D+Cj
		mov	ecx, [esp+4+arg_0]
		lea	esi, [eax+4]
		test	ecx, ecx
		jz	short loc_7F82F1BE
		push	[esp+4+arg_4]
		push	ecx
		call	sub_7F82F03B
		mov	[esi], eax
		test	eax, eax
		jnz	short loc_7F82F1C4
		xor	eax, eax
		jmp	short loc_7F82F1C6
; ---------------------------------------------------------------------------

loc_7F82F1BE:				; CODE XREF: sub_7F82F18D+1Bj
		mov	dword ptr [esi], 0

loc_7F82F1C4:				; CODE XREF: sub_7F82F18D+2Bj
		mov	eax, esi

loc_7F82F1C6:				; CODE XREF: sub_7F82F18D+10j
					; sub_7F82F18D+2Fj
		pop	esi
		retn	8
sub_7F82F18D	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82F1CA	proc near		; CODE XREF: sub_7F81339D+F0p
					; sub_7F817E9D+7Ap ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax]
		test	eax, eax
		jnz	short loc_7F82F1D8
		xor	eax, eax
		jmp	short locret_7F82F1DE
; ---------------------------------------------------------------------------

loc_7F82F1D8:				; CODE XREF: sub_7F82F1CA+8j
		push	eax
		call	sub_7F82F16F

locret_7F82F1DE:			; CODE XREF: sub_7F82F1CA+Cj
		retn	4
sub_7F82F1CA	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82F1E1	proc near		; CODE XREF: sub_7F81039F+1A7p
					; sub_7F810567+230p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_7F82F1F2
		push	eax
		call	sub_7F82F149

loc_7F82F1F2:				; CODE XREF: sub_7F82F1E1+9j
		sub	esi, 4
		push	esi
		call	sub_7F82F149
		pop	esi
		retn	4
sub_7F82F1E1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82F1FF	proc near		; CODE XREF: sub_7F816BFE+6Dp
					; sub_7F8181F1+169p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	edx, [esp+arg_4]
		mov	ebp, esp
		test	edx, edx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		jnz	short loc_7F82F22A
		test	eax, eax
		jz	short loc_7F82F21A
		push	eax
		call	sub_7F82F149

loc_7F82F21A:				; CODE XREF: sub_7F82F1FF+13j
		mov	dword ptr [esi], 0

loc_7F82F220:				; CODE XREF: sub_7F82F1FF+45j
		mov	eax, 1

loc_7F82F225:				; CODE XREF: sub_7F82F1FF+49j
		pop	esi
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------

loc_7F82F22A:				; CODE XREF: sub_7F82F1FF+Fj
		push	[ebp+arg_8]
		push	edx
		test	eax, eax
		jz	short loc_7F82F23A
		push	eax
		call	sub_7F82F0CD
		jmp	short loc_7F82F23F
; ---------------------------------------------------------------------------

loc_7F82F23A:				; CODE XREF: sub_7F82F1FF+31j
		call	sub_7F82F03B

loc_7F82F23F:				; CODE XREF: sub_7F82F1FF+39j
		mov	[esi], eax
		cmp	dword ptr [esi], 0
		jnz	short loc_7F82F220
		xor	eax, eax
		jmp	short loc_7F82F225
sub_7F82F1FF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82F24A	proc near		; CODE XREF: sub_7F8116DD+4Cp
					; sub_7F81339D+10Ap ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	[esp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_7F82F1FF
		cmp	eax, 1
		mov	eax, 0
		adc	eax, 0FFFFFFFFh
		and	eax, [ebp+arg_0]
		pop	ebp
		retn	0Ch
sub_7F82F24A	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82F26E	proc near		; CODE XREF: TimerFunc+12p
					; sub_7F82B8D3:loc_7F82B92Ep

Msg		= tagMSG ptr -1Ch

		sub	esp, 1Ch
		push	esi
		push	edi
		mov	esi, offset Addend
		call	ds:GetTickCount
		xor	edi, edi

loc_7F82F280:				; CODE XREF: sub_7F82F26E+4Bj
		push	esi		; lpAddend
		call	ds:InterlockedIncrement
		test	eax, eax
		jz	short loc_7F82F2BB
		push	esi		; lpAddend
		call	ds:InterlockedDecrement
		lea	eax, [esp+24h+Msg]
		push	edi		; wRemoveMsg
		push	edi		; wMsgFilterMax
		push	edi		; wMsgFilterMin
		push	edi		; hWnd
		push	eax		; lpMsg
		call	ds:PeekMessageA
		cmp	dword_7F8393C4,	edi
		jz	short loc_7F82F2B1
		push	46h		; uExitCode
		call	ds:ExitProcess
; ---------------------------------------------------------------------------

loc_7F82F2B1:				; CODE XREF: sub_7F82F26E+39j
		push	0Ah		; dwMilliseconds
		call	ds:Sleep
		jmp	short loc_7F82F280
; ---------------------------------------------------------------------------

loc_7F82F2BB:				; CODE XREF: sub_7F82F26E+1Bj
		call	ds:__imp_GetCurrentProcessId
		pop	edi
		mov	dword_7F8393BC,	eax
		mov	eax, 1
		pop	esi
		add	esp, 1Ch
		retn
sub_7F82F26E	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82F2D1	proc near		; CODE XREF: TimerFunc+28p
					; sub_7F82B8D3+37p
		cmp	dword_7F8393C4,	0
		jz	short loc_7F82F2E2
		push	46h		; uExitCode
		call	ds:ExitProcess
; ---------------------------------------------------------------------------

loc_7F82F2E2:				; CODE XREF: sub_7F82F2D1+7j
		cmp	Addend,	0FFFFFFFFh
		mov	eax, 0
		jz	short locret_7F82F30A
		mov	dword_7F8393BC,	0
		push	offset Addend	; lpAddend
		call	ds:InterlockedDecrement
		mov	eax, 1

locret_7F82F30A:			; CODE XREF: sub_7F82F2D1+1Dj
		retn
sub_7F82F2D1	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82F30B	proc near		; CODE XREF: TimerFunc+1p
		mov	eax, dword_7F8393BC
		retn
sub_7F82F30B	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82F311	proc near		; CODE XREF: sub_7F816468+30p

arg_0		= dword	ptr  4

		mov	eax, dword_7F8393BC
		mov	ecx, [esp+arg_0]
		mov	dword_7F8393BC,	ecx
		retn	4
sub_7F82F311	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82F323	proc near		; CODE XREF: sub_7F815751+135p
					; sub_7F815751+155p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dword_7F8393C8,	eax
		retn	4
sub_7F82F323	endp

; ---------------------------------------------------------------------------
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION UlRelease@4. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION HrSetOneProp@8. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION HrGetOneProp@12. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION MAPIFreeBuffer@4.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION FreeProws@4. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION HrQueryAllRows@24. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION MAPIUninitialize@0. PRESS	CTRL-NUMPAD+ TO	EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION MAPIAllocateBuffer@8. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION MAPIAllocateMore@12. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION MAPIGetDefaultMalloc@0. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION MAPIInitialize@4.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION HrValidateIPMSubtree@20. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION PpropFindProp@12.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION SzFindCh@8. PRESS	CTRL-NUMPAD+ TO	EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION MAPIAdminProfiles@8. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION MAPILogonEx@20. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION HrAllocAdviseSink@12. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION CreateIProp@24. PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION CreateTable@36. PRESS CTRL-NUMPAD+ TO EXPAND]

; =============== S U B	R O U T	I N E =======================================


sub_7F82F3A2	proc near		; CODE XREF: sub_7F82F462+30p
					; sub_7F82F462+ACp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		mov	ecx, [esp+arg_0]
		mov	eax, 30303030h
		mov	dl, [esp+arg_8]
		mov	dword ptr [ecx], 4950414Dh
		mov	dword ptr [ecx+4], 2A50482Dh
		mov	[ecx+8], eax
		mov	[ecx+0Ch], eax
		add	ecx, 0Fh
		mov	eax, [esp+arg_4]
		mov	byte ptr [ecx+1], 0
		mov	[ecx-8], dl
		test	eax, eax
		jz	short locret_7F82F3F0

loc_7F82F3D4:				; CODE XREF: sub_7F82F3A2+4Cj
		mov	edx, eax
		and	edx, 0Fh
		cmp	edx, 0Ah
		jl	short loc_7F82F3E3
		add	dl, 37h
		jmp	short loc_7F82F3E6
; ---------------------------------------------------------------------------

loc_7F82F3E3:				; CODE XREF: sub_7F82F3A2+3Aj
		add	dl, 30h

loc_7F82F3E6:				; CODE XREF: sub_7F82F3A2+3Fj
		shr	eax, 4
		mov	[ecx], dl
		dec	ecx
		test	eax, eax
		jnz	short loc_7F82F3D4

locret_7F82F3F0:			; CODE XREF: sub_7F82F3A2+30j
		retn	0Ch
sub_7F82F3A2	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_7F82F3F3(HANDLE hHandle, DWORD dwMilliseconds)
sub_7F82F3F3	proc near		; CODE XREF: sub_7F801AF7+39p
					; sub_7F801B61+D8p ...

hHandle		= dword	ptr  4
dwMilliseconds	= dword	ptr  8

		push	[esp+dwMilliseconds] ; dwMilliseconds
		push	[esp+4+hHandle]	; hHandle
		call	ds:WaitForSingleObject
		mov	ecx, eax
		test	ecx, ecx
		jz	short loc_7F82F414
		mov	eax, 0
		cmp	ecx, 80h
		jnz	short locret_7F82F419

loc_7F82F414:				; CODE XREF: sub_7F82F3F3+12j
		mov	eax, 1

locret_7F82F419:			; CODE XREF: sub_7F82F3F3+1Fj
		retn	8
sub_7F82F3F3	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82F41C	proc near		; CODE XREF: sub_7F82F462+1Ap

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, [esp+8+arg_0]
		push	1		; dwRevision
		lea	edi, [esi+0Ch]
		push	edi		; pSecurityDescriptor
		call	ds:InitializeSecurityDescriptor
		test	eax, eax
		jnz	short loc_7F82F436
		xor	eax, eax
		jmp	short loc_7F82F45D
; ---------------------------------------------------------------------------

loc_7F82F436:				; CODE XREF: sub_7F82F41C+14j
		push	0		; bDaclDefaulted
		push	0		; pDacl
		push	1		; bDaclPresent
		push	edi		; pSecurityDescriptor
		call	ds:SetSecurityDescriptorDacl
		test	eax, eax
		mov	eax, 0
		jz	short loc_7F82F45D
		mov	eax, 1
		mov	dword ptr [esi], 0Ch
		mov	[esi+4], edi
		mov	[esi+8], eax

loc_7F82F45D:				; CODE XREF: sub_7F82F41C+18j
					; sub_7F82F41C+2Ej
		pop	edi
		pop	esi
		retn	4
sub_7F82F41C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F82F462(int, int, DWORD dwMaximumSizeLow)
sub_7F82F462	proc near		; CODE XREF: sub_7F82F6AD+5Ap
					; sub_7F82F6AD+71p

Buffer		= _MEMORY_BASIC_INFORMATION ptr	-6Ch
FileMappingAttributes= _SECURITY_ATTRIBUTES ptr	-50h
Name		= byte ptr -30h
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
hObject		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
dwMaximumSizeLow= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 6Ch
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		xor	edi, edi
		lea	eax, [ebp+FileMappingAttributes]
		push	eax
		mov	[ebp+var_8], esi
		mov	[ebp+hObject], esi
		mov	[ebp+var_C], esi
		call	sub_7F82F41C
		test	eax, eax
		jz	loc_7F82F65D
		push	21h
		lea	ecx, [ebp+Name]
		push	[ebp+arg_4]
		push	ecx
		call	sub_7F82F3A2
		lea	ecx, [ebp+Name]
		lea	eax, [ebp+FileMappingAttributes]
		push	ecx		; lpName
		push	[ebp+dwMaximumSizeLow] ; dwMaximumSizeLow
		push	esi		; dwMaximumSizeHigh
		push	4000004h	; flProtect
		push	eax		; lpFileMappingAttributes
		push	0FFFFFFFFh	; hFile
		call	ds:CreateFileMappingA
		mov	[ebp+hObject], eax
		cmp	eax, esi
		jz	loc_7F82F65D
		call	ds:GetLastError
		cmp	eax, 0B7h
		jnz	short loc_7F82F4E1
		cmp	[ebp+arg_0], 2
		jnz	short loc_7F82F4EB
		push	[ebp+hObject]	; hObject
		call	ds:CloseHandle
		mov	eax, 0FFFFFFFFh
		jmp	loc_7F82F6A4
; ---------------------------------------------------------------------------

loc_7F82F4E1:				; CODE XREF: sub_7F82F462+64j
		cmp	[ebp+arg_0], 0
		jz	loc_7F82F65D

loc_7F82F4EB:				; CODE XREF: sub_7F82F462+6Aj
		xor	ebx, ebx
		push	ebx		; dwNumberOfBytesToMap
		push	ebx		; dwFileOffsetLow
		push	ebx		; dwFileOffsetHigh
		push	2		; dwDesiredAccess
		push	[ebp+hObject]	; hFileMappingObject
		call	ds:MapViewOfFile
		mov	edi, eax
		test	edi, edi
		jz	loc_7F82F668
		push	2Ah
		lea	ecx, [ebp+Name]
		push	[ebp+arg_4]
		push	ecx
		call	sub_7F82F3A2
		lea	ecx, [ebp+Name]
		lea	edx, [ebp+FileMappingAttributes]
		push	ecx		; lpName
		push	ebx		; bInitialOwner
		push	edx		; lpMutexAttributes
		call	ds:CreateMutexA
		mov	[ebp+var_8], eax
		cmp	eax, ebx
		jz	loc_7F82F65D
		push	2Bh
		lea	ecx, [ebp+Name]
		push	[ebp+arg_4]
		push	ecx
		call	sub_7F82F3A2
		lea	ecx, [ebp+Name]
		lea	edx, [ebp+FileMappingAttributes]
		push	ecx		; lpName
		push	ebx		; bInitialOwner
		push	edx		; lpMutexAttributes
		call	ds:CreateMutexA
		mov	esi, eax
		test	esi, esi
		jz	loc_7F82F65D
		push	0FFFFFFFFh	; dwMilliseconds
		push	esi		; hHandle
		call	sub_7F82F3F3
		test	eax, eax
		jz	loc_7F82F65D
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+hObject]
		mov	[ebp+var_1C], edi
		mov	[ebp+var_18], esi
		push	1Ch		; dwLength
		lea	edx, [ebp+Buffer]
		push	edx		; lpBuffer
		mov	[ebp+var_14], eax
		push	edi		; lpAddress
		mov	[ebp+var_10], ecx
		mov	[ebp+var_C], 1
		call	ds:VirtualQuery
		cmp	[ebp+Buffer.State], 2000h
		jnz	loc_7F82F628
		push	4		; flProtect
		push	1000h		; flAllocationType
		push	10000h		; dwSize
		push	edi		; lpAddress
		call	ds:VirtualAlloc
		test	eax, eax
		jz	loc_7F82F65D
		mov	ecx, [ebp+dwMaximumSizeLow]
		mov	edx, 0FFF0h
		shr	ecx, 10h
		mov	[edi+0Ch], ebx
		add	ecx, ecx
		mov	eax, [ebp+dwMaximumSizeLow]
		mov	dword ptr [edi+10h], 10000h
		add	ecx, 1Bh
		mov	[edi+14h], eax
		and	cl, 0FCh
		sub	edx, ecx
		lea	eax, [ecx-5]
		and	ax, 0FFFCh
		mov	[edi+18h], dx
		mov	[edi+6], bx
		or	dl, 1
		mov	[edi+4], ax
		mov	dword ptr [edi], 0FC1E01CDh
		movzx	eax, word ptr [edi+4]
		and	al, 0FCh
		mov	[eax+edi+0Eh], bx
		lea	eax, [eax+edi+8]
		mov	[eax+4], dx
		mov	dword ptr [eax], 0FEE1CD01h
		lea	eax, [edi+0FFF8h]
		mov	[eax+6], cx
		mov	ecx, [ebp+arg_4]
		mov	[eax+4], bx
		mov	dword ptr [eax], 0FC1E01CDh
		mov	[edi+8], ecx
		jmp	short loc_7F82F640
; ---------------------------------------------------------------------------

loc_7F82F628:				; CODE XREF: sub_7F82F462+12Fj
		push	10000h		; ucb
		push	edi		; lp
		call	ds:IsBadWritePtr
		test	eax, eax
		jnz	short loc_7F82F65D
		mov	eax, [ebp+arg_4]
		cmp	[edi+8], eax
		jnz	short loc_7F82F65D

loc_7F82F640:				; CODE XREF: sub_7F82F462+1C4j
		push	10h
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_7F82F76F
		test	eax, eax
		jz	short loc_7F82F65D
		add	eax, [ebp+var_1C]
		lea	esi, [ebp+var_1C]
		mov	edi, eax
		movsd
		movsd
		movsd
		movsd
		jmp	short loc_7F82F6A4
; ---------------------------------------------------------------------------

loc_7F82F65D:				; CODE XREF: sub_7F82F462+21j
					; sub_7F82F462+53j ...
		test	edi, edi
		jz	short loc_7F82F668
		push	edi		; lpBaseAddress
		call	ds:UnmapViewOfFile

loc_7F82F668:				; CODE XREF: sub_7F82F462+9Dj
					; sub_7F82F462+1FDj
		test	esi, esi
		jz	short loc_7F82F684
		cmp	[ebp+var_C], 0
		jz	short loc_7F82F679
		push	esi		; hMutex
		call	ds:ReleaseMutex

loc_7F82F679:				; CODE XREF: sub_7F82F462+20Ej
		test	esi, esi
		jz	short loc_7F82F684
		push	esi		; hObject
		call	ds:CloseHandle

loc_7F82F684:				; CODE XREF: sub_7F82F462+208j
					; sub_7F82F462+219j
		cmp	[ebp+var_8], 0
		jz	short loc_7F82F693
		push	[ebp+var_8]	; hObject
		call	ds:CloseHandle

loc_7F82F693:				; CODE XREF: sub_7F82F462+226j
		cmp	[ebp+hObject], 0
		jz	short loc_7F82F6A2
		push	[ebp+hObject]	; hObject
		call	ds:CloseHandle

loc_7F82F6A2:				; CODE XREF: sub_7F82F462+235j
		xor	eax, eax

loc_7F82F6A4:				; CODE XREF: sub_7F82F462+7Aj
					; sub_7F82F462+1F9j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_7F82F462	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_7F82F6AD(int, int, DWORD dwMaximumSizeLow)
sub_7F82F6AD	proc near		; CODE XREF: sub_7F801D78+16p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
dwMaximumSizeLow= dword	ptr  10h

		push	ebp
		mov	ecx, [esp+arg_0]
		mov	ebp, esp
		test	ecx, ecx
		push	esi
		push	edi
		jz	short loc_7F82F6C4
		cmp	[ebp+arg_4], 0
		jge	short loc_7F82F6C4
		xor	eax, eax
		jmp	short loc_7F82F723
; ---------------------------------------------------------------------------

loc_7F82F6C4:				; CODE XREF: sub_7F82F6AD+Bj
					; sub_7F82F6AD+11j
		mov	esi, [ebp+dwMaximumSizeLow]
		test	esi, esi
		jnz	short loc_7F82F6D0
		mov	esi, 100000h

loc_7F82F6D0:				; CODE XREF: sub_7F82F6AD+1Cj
		mov	eax, 10000h
		cmp	esi, eax
		jnb	short loc_7F82F6DB
		mov	esi, eax

loc_7F82F6DB:				; CODE XREF: sub_7F82F6AD+2Aj
		mov	eax, 800000h
		cmp	esi, eax
		jbe	short loc_7F82F6E6
		mov	esi, eax

loc_7F82F6E6:				; CODE XREF: sub_7F82F6AD+35j
		test	ecx, ecx
		jz	short loc_7F82F713
		cmp	[ebp+arg_4], 0
		jnz	short loc_7F82F713
		call	ds:GetTickCount
		and	eax, 3FFFFFFFh
		or	eax, 80000000h
		mov	edi, eax

loc_7F82F702:				; CODE XREF: sub_7F82F6AD+62j
		inc	edi
		push	esi		; dwMaximumSizeLow
		push	edi		; int
		push	2		; int
		call	sub_7F82F462
		cmp	eax, 0FFFFFFFFh
		jz	short loc_7F82F702
		jmp	short loc_7F82F723
; ---------------------------------------------------------------------------

loc_7F82F713:				; CODE XREF: sub_7F82F6AD+3Bj
					; sub_7F82F6AD+41j
		push	esi		; dwMaximumSizeLow
		cmp	ecx, 1
		push	[ebp+arg_4]	; int
		sbb	eax, eax
		inc	eax
		push	eax		; int
		call	sub_7F82F462

loc_7F82F723:				; CODE XREF: sub_7F82F6AD+15j
					; sub_7F82F6AD+64j
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
sub_7F82F6AD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82F729	proc near		; CODE XREF: sub_7F801AF7+59p

lpBaseAddress	= dword	ptr -10h
hObject		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ecx, [esp+arg_0]
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		lea	edi, [ebp+lpBaseAddress]
		mov	esi, ecx
		movsd
		movsd
		movsd
		movsd
		mov	eax, ecx
		sub	eax, [ecx]
		push	eax
		push	ecx
		call	sub_7F82FA86
		push	[ebp+lpBaseAddress] ; lpBaseAddress
		call	ds:UnmapViewOfFile
		push	[ebp+hObject]	; hObject
		mov	esi, ds:CloseHandle
		call	esi ; CloseHandle
		push	[ebp+var_8]	; hObject
		call	esi ; CloseHandle
		push	[ebp+var_4]	; hObject
		call	esi ; CloseHandle
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4
sub_7F82F729	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82F76F	proc near		; CODE XREF: sub_7F82F462+1E4p

var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		sub	esp, 4
		cmp	eax, 0FFF0h
		push	ebx
		push	esi
		push	edi
		push	ebp
		jbe	short loc_7F82F788
		xor	eax, eax
		jmp	loc_7F82F885
; ---------------------------------------------------------------------------

loc_7F82F788:				; CODE XREF: sub_7F82F76F+10j
		add	eax, 3
		push	0FFFFFFFFh	; dwMilliseconds
		and	al, 0FCh
		mov	ecx, [esp+18h+arg_0]
		mov	[esp+18h+arg_4], eax
		push	dword ptr [ecx+8] ; hHandle
		call	sub_7F82F3F3
		test	eax, eax
		jnz	short loc_7F82F7AA
		xor	eax, eax
		jmp	loc_7F82F885
; ---------------------------------------------------------------------------

loc_7F82F7AA:				; CODE XREF: sub_7F82F76F+32j
		xor	edi, edi
		mov	eax, [esp+14h+arg_0]
		mov	esi, [eax]
		mov	ebx, esi
		lea	ebp, [esi+18h]
		mov	eax, [esi+10h]
		add	eax, esi
		mov	[esp+14h+var_4], eax
		cmp	eax, esi
		jbe	short loc_7F82F7F3

loc_7F82F7C4:				; CODE XREF: sub_7F82F76F+82j
		movzx	eax, word ptr [ebp+0]
		cmp	eax, [esp+14h+arg_4]
		jb	short loc_7F82F7E4
		push	[esp+14h+arg_4]
		push	ebx
		push	ebp
		push	esi
		call	sub_7F82F88F
		mov	edi, eax
		test	edi, edi
		jnz	loc_7F82F876

loc_7F82F7E4:				; CODE XREF: sub_7F82F76F+5Dj
		add	ebx, 10000h
		add	ebp, 2
		cmp	[esp+14h+var_4], ebx
		ja	short loc_7F82F7C4

loc_7F82F7F3:				; CODE XREF: sub_7F82F76F+53j
		mov	eax, [esi+10h]
		cmp	[esi+14h], eax
		jbe	short loc_7F82F876
		push	4		; flProtect
		push	1000h		; flAllocationType
		push	10000h		; dwSize
		push	ebx		; lpAddress
		call	ds:VirtualAlloc
		test	eax, eax
		jz	short loc_7F82F876
		mov	cx, word ptr [esp+14h+arg_4]
		xor	edx, edx
		add	dword ptr [esi+10h], 10000h
		mov	[ebx+6], dx
		mov	eax, [esp+14h+arg_4]
		mov	di, 0FFE8h
		and	al, 0FCh
		sub	di, cx
		lea	eax, [eax+ebx+8]
		or	di, 1
		mov	[ebx+4], cx
		mov	dword ptr [ebx], 0FC1E01CDh
		add	cx, 8
		mov	[eax+6], dx
		mov	[eax+4], di
		mov	dword ptr [eax], 0FEE1CD01h
		mov	ax, [eax+4]
		mov	[ebp+0], ax
		lea	eax, [ebx+0FFF8h]
		mov	[eax+6], cx
		sub	ebx, esi
		mov	[eax+4], dx
		lea	edi, [ebx+8]
		mov	dword ptr [eax], 0FC1E01CDh

loc_7F82F876:				; CODE XREF: sub_7F82F76F+6Fj
					; sub_7F82F76F+8Aj ...
		mov	eax, [esp+14h+arg_0]
		push	dword ptr [eax+8] ; hMutex
		call	ds:ReleaseMutex
		mov	eax, edi

loc_7F82F885:				; CODE XREF: sub_7F82F76F+14j
					; sub_7F82F76F+36j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn	8
sub_7F82F76F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82F88F	proc near		; CODE XREF: sub_7F82F76F+66p

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
		xor	eax, eax
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		mov	ecx, [ebp+arg_8]
		push	esi
		mov	edx, ecx
		push	edi
		lea	esi, [ecx+0FFF8h]
		xor	edi, edi
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], esi
		cmp	esi, ecx
		jbe	short loc_7F82F8FC

loc_7F82F8B1:				; CODE XREF: sub_7F82F88F+6Bj
		mov	bx, [edx+4]
		mov	si, bx
		and	si, 1
		jz	short loc_7F82F8D6
		cmp	dword ptr [edx], 0FEE1CD01h
		jnz	short loc_7F82F8D6
		movzx	esi, bx
		cmp	[ebp+arg_C], esi
		jb	short loc_7F82F90B
		cmp	edi, esi
		jnb	short loc_7F82F8EC
		mov	edi, esi
		jmp	short loc_7F82F8EC
; ---------------------------------------------------------------------------

loc_7F82F8D6:				; CODE XREF: sub_7F82F88F+2Dj
					; sub_7F82F88F+35j
		test	si, si
		jnz	short loc_7F82F8E3
		cmp	dword ptr [edx], 0FC1E01CDh
		jz	short loc_7F82F8EC

loc_7F82F8E3:				; CODE XREF: sub_7F82F88F+4Aj
		inc	[ebp+var_8]
		cmp	[ebp+var_8], 2
		ja	short loc_7F82F902

loc_7F82F8EC:				; CODE XREF: sub_7F82F88F+41j
					; sub_7F82F88F+45j ...
		movzx	esi, bx
		and	esi, 0FFFFFFFCh
		add	esi, 8
		add	edx, esi
		cmp	[ebp+var_4], edx
		ja	short loc_7F82F8B1

loc_7F82F8FC:				; CODE XREF: sub_7F82F88F+20j
		mov	ecx, [ebp+arg_4]
		mov	[ecx], di

loc_7F82F902:				; CODE XREF: sub_7F82F88F+5Bj
					; sub_7F82F88F+F2j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------

loc_7F82F90B:				; CODE XREF: sub_7F82F88F+3Dj
		lea	esi, [edx+4]
		mov	ax, [esi]
		and	ax, 0FFFEh
		mov	[esi], ax
		movzx	eax, ax
		mov	edi, eax
		sub	edi, [ebp+arg_C]
		cmp	edi, 10h
		jbe	short loc_7F82F972
		and	al, 0FCh
		lea	edi, [eax+edx+8]
		movzx	eax, word ptr [edi+6]
		add	eax, ecx
		cmp	eax, edx
		jnz	short loc_7F82F972
		mov	eax, [ebp+arg_C]
		and	al, 0FCh
		sub	eax, ecx
		add	eax, edx
		add	ax, 8
		movzx	ebx, ax
		mov	[edi+6], ax
		lea	edi, [ebx+ecx]
		mov	eax, edx
		sub	eax, ecx
		mov	[edi+6], ax
		mov	ax, word ptr [ebp+arg_C]
		mov	bx, [esi]
		sub	bx, ax
		sub	bx, 8
		or	bl, 1
		mov	[edi+4], bx
		mov	[esi], ax
		mov	dword ptr [edi], 0FEE1CD01h

loc_7F82F972:				; CODE XREF: sub_7F82F88F+94j
					; sub_7F82F88F+A4j
		mov	dword ptr [edx], 0FC1E01CDh
		sub	edx, ecx
		sub	edx, [ebp+arg_0]
		lea	eax, [edx+ecx+8]
		jmp	loc_7F82F902
sub_7F82F88F	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82F986	proc near		; CODE XREF: sub_7F82FA86+2Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	ecx, [esp+arg_8]
		push	ebx
		push	esi
		and	ecx, 0FFFF0000h
		add	ecx, [esp+8+arg_0]
		push	edi
		mov	eax, [esp+0Ch+arg_8]
		push	ebp
		and	eax, 0FFFFh
		mov	ebx, 0FC1E01CDh
		lea	edx, [eax+ecx-8]
		cmp	[edx], ebx
		jnz	loc_7F82FA7F
		movzx	eax, word ptr [edx+4]
		and	al, 0FCh
		lea	esi, [eax+edx+8]
		mov	ax, [esi+4]
		test	al, 1
		jz	short loc_7F82FA14
		mov	ebp, 0FEE1CD01h
		cmp	[esi], ebp
		jnz	short loc_7F82FA14
		movzx	edi, word ptr [esi+6]
		add	edi, ecx
		cmp	edi, edx
		jnz	short loc_7F82FA14
		movzx	eax, ax
		and	al, 0FCh
		lea	edi, [eax+esi+8]
		mov	eax, [edi]
		cmp	eax, ebx
		jz	short loc_7F82F9EA
		cmp	eax, ebp
		jnz	short loc_7F82FA14

loc_7F82F9EA:				; CODE XREF: sub_7F82F986+5Ej
		movzx	eax, word ptr [edi+6]
		add	eax, ecx
		cmp	eax, esi
		jnz	short loc_7F82FA14
		mov	dword ptr [esi], 0FDD0EF10h
		mov	ax, [esi+4]
		mov	esi, edi
		and	ax, 0FFFEh
		add	ax, 8
		add	[edx+4], ax
		mov	eax, edx
		sub	eax, ecx
		mov	[edi+6], ax

loc_7F82FA14:				; CODE XREF: sub_7F82F986+3Cj
					; sub_7F82F986+45j ...
		or	byte ptr [edx+4], 1
		mov	ebx, 0FEE1CD01h
		cmp	ecx, edx
		mov	[edx], ebx
		jz	short loc_7F82FA6B
		movzx	eax, word ptr [edx+6]
		lea	edi, [eax+ecx]
		test	byte ptr [edi+4], 1
		jz	short loc_7F82FA6B
		cmp	[edi], ebx
		jnz	short loc_7F82FA6B
		mov	eax, [esi]
		cmp	eax, 0FC1E01CDh
		jz	short loc_7F82FA41
		cmp	eax, ebx
		jnz	short loc_7F82FA6B

loc_7F82FA41:				; CODE XREF: sub_7F82F986+B5j
		movzx	eax, word ptr [esi+6]
		add	eax, ecx
		cmp	eax, edx
		jnz	short loc_7F82FA6B
		mov	dword ptr [edx], 0FDD0EF10h
		mov	ax, [edx+4]
		mov	edx, edi
		and	ax, 0FFFEh
		add	ax, 8
		add	[edi+4], ax
		mov	eax, edi
		sub	eax, ecx
		mov	[esi+6], ax

loc_7F82FA6B:				; CODE XREF: sub_7F82F986+9Bj
					; sub_7F82F986+A8j ...
		mov	ax, [edx+4]
		mov	ecx, [esp+10h+arg_4]
		cmp	[ecx], ax
		jnb	short loc_7F82FA7F
		and	ax, 0FFFEh
		mov	[ecx], ax

loc_7F82FA7F:				; CODE XREF: sub_7F82F986+26j
					; sub_7F82F986+F0j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_7F82F986	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82FA86	proc near		; CODE XREF: sub_7F82F729+1Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	ebx, [esp+8+arg_0]
		push	edi
		mov	esi, [esp+0Ch+arg_4]
		mov	edi, [ebx+8]
		test	esi, esi
		jz	short loc_7F82FABE
		push	0FFFFFFFFh	; dwMilliseconds
		push	edi		; hHandle
		call	sub_7F82F3F3
		test	eax, eax
		jz	short loc_7F82FABE
		mov	ecx, [ebx]
		mov	eax, esi
		shr	eax, 10h
		push	esi
		lea	eax, [ecx+eax*2+18h]
		push	eax
		push	ecx
		call	sub_7F82F986
		push	edi		; hMutex
		call	ds:ReleaseMutex

loc_7F82FABE:				; CODE XREF: sub_7F82FA86+10j
					; sub_7F82FA86+1Cj
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_7F82FA86	endp

; [00000006 BYTES: COLLAPSED FUNCTION GetFileTitleA. PRESS CTRL-NUMPAD+	TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION GetSaveFileNameA.	PRESS CTRL-NUMPAD+ TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION GetOpenFileNameA.	PRESS CTRL-NUMPAD+ TO EXPAND]
		align 4

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_7F82FAD8(PVOID TargetFrame)
sub_7F82FAD8	proc near		; CODE XREF: sub_7F82FBD0+5Ap

TargetFrame	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		push	ebp
		push	0		; ReturnValue
		push	0		; ExceptionRecord
		push	offset loc_7F82FAF0 ; TargetIp
		push	[ebp+TargetFrame] ; TargetFrame
		call	RtlUnwind

loc_7F82FAF0:				; DATA XREF: sub_7F82FAD8+Bo
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_7F82FAD8	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82FAF8	proc near		; DATA XREF: sub_7F82FB1A+Ao
					; .text:7F82FB8Bo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_C		= dword	ptr  10h

		mov	ecx, [esp+arg_0]
		test	dword ptr [ecx+4], 6
		mov	eax, 1
		jz	short locret_7F82FB19
		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_C]
		mov	[edx], eax
		mov	eax, 3

locret_7F82FB19:			; CODE XREF: sub_7F82FAF8+10j
		retn
sub_7F82FAF8	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F82FB1A	proc near		; CODE XREF: sub_7F82FBD0+67p
					; sub_7F82FBD0+A7p ...

var_14		= dword	ptr -14h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	eax, [esp+0Ch+arg_0]
		push	eax
		push	0FFFFFFFEh
		push	offset sub_7F82FAF8
		push	large dword ptr	fs:0
		mov	large fs:0, esp

loc_7F82FB37:				; CODE XREF: sub_7F82FB1A:loc_7F82FB72j
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_7F82FB74
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_7F82FB74
		lea	esi, [esi+esi*2]
		mov	ecx, [ebx+esi*4]
		mov	[esp+1Ch+var_14], ecx
		mov	[eax+0Ch], ecx
		cmp	dword ptr [ebx+esi*4+4], 0
		jnz	short loc_7F82FB72
		push	101h
		mov	eax, [ebx+esi*4+8]
		call	sub_7F82FBAE
		call	dword ptr [ebx+esi*4+8]

loc_7F82FB72:				; CODE XREF: sub_7F82FB1A+44j
		jmp	short loc_7F82FB37
; ---------------------------------------------------------------------------

loc_7F82FB74:				; CODE XREF: sub_7F82FB1A+2Aj
					; sub_7F82FB1A+30j
		pop	large dword ptr	fs:0
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F82FB1A	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		mov	ecx, large fs:0
		cmp	dword ptr [ecx+4], offset sub_7F82FAF8
		jnz	short locret_7F82FBA4
		mov	edx, [ecx+0Ch]
		mov	edx, [edx+0Ch]
		cmp	[ecx+8], edx
		jnz	short locret_7F82FBA4
		mov	eax, 1

locret_7F82FBA4:			; CODE XREF: .text:7F82FB92j
					; .text:7F82FB9Dj
		retn
; ---------------------------------------------------------------------------
		push	ebx
		push	ecx
		mov	ebx, offset unk_7F839740
		jmp	short loc_7F82FBB8

; =============== S U B	R O U T	I N E =======================================


sub_7F82FBAE	proc near		; CODE XREF: sub_7F82FB1A+4Fp
					; sub_7F82FBD0+78p
		push	ebx
		push	ecx
		mov	ebx, offset unk_7F839740
		mov	ecx, [ebp+8]

loc_7F82FBB8:				; CODE XREF: .text:7F82FBACj
		mov	[ebx+8], ecx
		mov	[ebx+4], eax
		mov	[ebx+0Ch], ebp
		pop	ecx
		pop	ebx
		retn	4
sub_7F82FBAE	endp

; ---------------------------------------------------------------------------
		align 4
		push	esi
		inc	ebx
		xor	dh, [eax]
		pop	eax
		inc	ebx
		xor	[eax], dh

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_7F82FBD0(int,	PVOID TargetFrame, int)
sub_7F82FBD0	proc near		; DATA XREF: ScMMFVerify@16+10o
					; ScMMFMigrateToMDB@48+10o ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
TargetFrame	= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		push	ebp
		cld
		mov	ebx, [ebp+TargetFrame]
		mov	eax, [ebp+arg_0]
		test	dword ptr [eax+4], 6
		jnz	loc_7F82FC70
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_8]
		mov	[ebx-4], eax
		mov	esi, [ebx+0Ch]
		mov	edi, [ebx+8]

loc_7F82FC03:				; CODE XREF: sub_7F82FBD0+90j
		cmp	esi, 0FFFFFFFFh
		jz	short loc_7F82FC69
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [edi+ecx*4+4], 0
		jz	short loc_7F82FC57
		push	esi
		push	ebp
		lea	ebp, [ebx+10h]
		call	dword ptr [edi+ecx*4+4]
		pop	ebp
		pop	esi
		mov	ebx, [ebp+TargetFrame]
		or	eax, eax
		jz	short loc_7F82FC57
		js	short loc_7F82FC62
		mov	edi, [ebx+8]
		push	ebx		; TargetFrame
		call	sub_7F82FAD8
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_7F82FB1A
		add	esp, 8
		lea	ecx, [esi+esi*2]
		push	1
		mov	eax, [edi+ecx*4+8]
		call	sub_7F82FBAE
		mov	eax, [edi+ecx*4]
		mov	[ebx+0Ch], eax
		call	dword ptr [edi+ecx*4+8]

loc_7F82FC57:				; CODE XREF: sub_7F82FBD0+40j
					; sub_7F82FBD0+52j
		mov	edi, [ebx+8]
		lea	ecx, [esi+esi*2]
		mov	esi, [edi+ecx*4]
		jmp	short loc_7F82FC03
; ---------------------------------------------------------------------------

loc_7F82FC62:				; CODE XREF: sub_7F82FBD0+54j
		mov	eax, 0
		jmp	short loc_7F82FC85
; ---------------------------------------------------------------------------

loc_7F82FC69:				; CODE XREF: sub_7F82FBD0+36j
		mov	eax, 1
		jmp	short loc_7F82FC85
; ---------------------------------------------------------------------------

loc_7F82FC70:				; CODE XREF: sub_7F82FBD0+18j
		push	ebp
		lea	ebp, [ebx+10h]
		push	0FFFFFFFFh
		push	ebx
		call	sub_7F82FB1A
		add	esp, 8
		pop	ebp
		mov	eax, 1

loc_7F82FC85:				; CODE XREF: sub_7F82FBD0+97j
					; sub_7F82FBD0+9Ej
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_7F82FBD0	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ecx, [esp+8]
		mov	ebp, [ecx]
		mov	eax, [ecx+1Ch]
		push	eax
		mov	eax, [ecx+18h]
		push	eax
		call	sub_7F82FB1A
		add	esp, 8
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82FCB0	proc near		; CODE XREF: sub_7F80530D+4Bp
					; sub_7F80530D+77p ...

arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	edi
		mov	edi, [ebp+arg_0]
		xor	eax, eax
		or	ecx, 0FFFFFFFFh
		repne scasb
		inc	ecx
		neg	ecx
		dec	edi
		mov	al, [ebp+arg_4]
		std
		repne scasb
		inc	edi
		cmp	[edi], al
		jz	short loc_7F82FCD1
		xor	eax, eax
		jmp	short loc_7F82FCD3
; ---------------------------------------------------------------------------

loc_7F82FCD1:				; CODE XREF: sub_7F82FCB0+1Bj
		mov	eax, edi

loc_7F82FCD3:				; CODE XREF: sub_7F82FCB0+1Fj
		cld
		pop	edi
		leave
		retn
sub_7F82FCB0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82FCE0	proc near		; CODE XREF: sub_7F80AB5D+1FFp
					; sub_7F813AA8+B6p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		mov	esi, [ebp+arg_4]
		mov	edi, [ebp+arg_0]
		mov	ecx, [ebp+arg_8]
		cmp	edi, esi
		jbe	short loc_7F82FCFE
		mov	eax, esi
		add	eax, ecx
		cmp	edi, eax
		jb	loc_7F82FD8C

loc_7F82FCFE:				; CODE XREF: sub_7F82FCE0+10j
		test	edi, 3
		jnz	short loc_7F82FD58
		mov	edx, ecx
		and	edx, 3
		shr	ecx, 2
		rep movsd
		jmp	ds:off_7F82FD18[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_7F82FD18	dd offset loc_7F82FD50	; DATA XREF: sub_7F82FCE0+30r
					; sub_7F82FCE0+96r
		dd offset loc_7F82FD4C
		dd offset loc_7F82FD3C
		dd offset loc_7F82FD28
; ---------------------------------------------------------------------------

loc_7F82FD28:				; CODE XREF: sub_7F82FCE0+30j
					; sub_7F82FCE0+96j
					; DATA XREF: ...
		mov	ax, [esi]
		mov	[edi], ax
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4

loc_7F82FD3C:				; CODE XREF: sub_7F82FCE0+30j
					; sub_7F82FCE0+96j
					; DATA XREF: ...
		mov	ax, [esi]
		mov	[edi], ax
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4

loc_7F82FD4C:				; CODE XREF: sub_7F82FCE0+30j
					; sub_7F82FCE0+96j
					; DATA XREF: ...
		mov	al, [esi]
		mov	[edi], al

loc_7F82FD50:				; CODE XREF: sub_7F82FCE0+30j
					; sub_7F82FCE0+96j
					; DATA XREF: ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4

loc_7F82FD58:				; CODE XREF: sub_7F82FCE0+24j
		cmp	ecx, 0Ch
		jbe	short loc_7F82FD80
		mov	edx, edi
		neg	edx
		and	edx, 3
		sub	ecx, edx
		mov	eax, ecx
		mov	ecx, edx
		rep movsb
		mov	ecx, eax
		and	eax, 3
		shr	ecx, 2
		rep movsd
		jmp	ds:off_7F82FD18[eax*4]
; ---------------------------------------------------------------------------
		align 10h

loc_7F82FD80:				; CODE XREF: sub_7F82FCE0+7Bj
		rep movsb
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4

loc_7F82FD8C:				; CODE XREF: sub_7F82FCE0+18j
		std
		add	esi, ecx
		add	edi, ecx
		test	edi, 3
		jnz	short loc_7F82FDF8
		mov	edx, ecx
		and	edx, 3
		sub	esi, 4
		sub	edi, 4
		shr	ecx, 2
		rep movsd
		jmp	ds:off_7F82FDB0[edx*4]
; ---------------------------------------------------------------------------
off_7F82FDB0	dd offset loc_7F82FDEE	; DATA XREF: sub_7F82FCE0+C9r
					; sub_7F82FCE0+13Cr
		dd offset loc_7F82FDE8
		dd offset loc_7F82FDD8
		dd offset loc_7F82FDC0
; ---------------------------------------------------------------------------

loc_7F82FDC0:				; CODE XREF: sub_7F82FCE0+C9j
					; sub_7F82FCE0+13Cj
					; DATA XREF: ...
		mov	ax, [esi+2]
		mov	[edi+2], ax
		mov	al, [esi+1]
		mov	[edi+1], al
		cld
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4

loc_7F82FDD8:				; CODE XREF: sub_7F82FCE0+C9j
					; sub_7F82FCE0+13Cj
					; DATA XREF: ...
		mov	ax, [esi+2]
		mov	[edi+2], ax
		cld
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------

loc_7F82FDE8:				; CODE XREF: sub_7F82FCE0+C9j
					; sub_7F82FCE0+13Cj
					; DATA XREF: ...
		mov	al, [esi+3]
		mov	[edi+3], al

loc_7F82FDEE:				; CODE XREF: sub_7F82FCE0+C9j
					; sub_7F82FCE0+13Cj
					; DATA XREF: ...
		cld
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4

loc_7F82FDF8:				; CODE XREF: sub_7F82FCE0+B7j
		dec	esi
		dec	edi
		cmp	ecx, 0Ch
		jbe	short loc_7F82FE24
		neg	edx
		and	edx, 3
		sub	ecx, edx
		mov	eax, ecx
		mov	ecx, edx
		rep movsb
		mov	ecx, eax
		and	eax, 3
		sub	esi, 3
		sub	edi, 3
		shr	ecx, 2
		rep movsd
		jmp	ds:off_7F82FDB0[eax*4]
; ---------------------------------------------------------------------------
		align 4

loc_7F82FE24:				; CODE XREF: sub_7F82FCE0+11Dj
		rep movsb
		cld
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
sub_7F82FCE0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F82FE30	proc near		; CODE XREF: sub_7F80E7F6+126p
					; sub_7F80F023+D7p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	eax, [esp+arg_0]
		mov	cl, [esp+arg_4]

loc_7F82FE38:				; CODE XREF: sub_7F82FE30+13j
		mov	dl, [eax]
		cmp	cl, dl
		jz	short locret_7F82FE47
		or	dl, dl
		jz	short loc_7F82FE45
		inc	eax
		jmp	short loc_7F82FE38
; ---------------------------------------------------------------------------

loc_7F82FE45:				; CODE XREF: sub_7F82FE30+10j
		xor	eax, eax

locret_7F82FE47:			; CODE XREF: sub_7F82FE30+Cj
		retn
sub_7F82FE30	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F82FE50	proc near		; CODE XREF: sub_7F80F91C+4Ap
					; sub_7F80F91C+7Dp

lpSrcStr	= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		push	ebp
		xor	ebp, ebp
		cmp	Locale,	ebp
		jnz	short loc_7F82FE87
		mov	ebx, [esp+10h+lpSrcStr]
		mov	eax, ebx
		cmp	byte ptr [ebx],	0
		jz	short loc_7F82FE80

loc_7F82FE69:				; CODE XREF: sub_7F82FE50+2Ej
		mov	cl, [eax]
		cmp	cl, 61h
		jl	short loc_7F82FE7A
		cmp	cl, 7Ah
		jg	short loc_7F82FE7A
		sub	cl, 20h
		mov	[eax], cl

loc_7F82FE7A:				; CODE XREF: sub_7F82FE50+1Ej
					; sub_7F82FE50+23j
		inc	eax
		cmp	byte ptr [eax],	0
		jnz	short loc_7F82FE69

loc_7F82FE80:				; CODE XREF: sub_7F82FE50+17j
		mov	eax, ebx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_7F82FE87:				; CODE XREF: sub_7F82FE50+Cj
		push	15h
		call	sub_7F830560
		add	esp, 4
		cmp	Locale,	0
		jnz	short loc_7F82FECD
		push	15h
		call	sub_7F8305D0
		mov	ebx, [esp+14h+lpSrcStr]
		add	esp, 4
		mov	eax, ebx
		cmp	byte ptr [ebx],	0
		jz	short loc_7F82FEC6

loc_7F82FEAF:				; CODE XREF: sub_7F82FE50+74j
		mov	cl, [eax]
		cmp	cl, 61h
		jl	short loc_7F82FEC0
		cmp	cl, 7Ah
		jg	short loc_7F82FEC0
		sub	cl, 20h
		mov	[eax], cl

loc_7F82FEC0:				; CODE XREF: sub_7F82FE50+64j
					; sub_7F82FE50+69j
		inc	eax
		cmp	byte ptr [eax],	0
		jnz	short loc_7F82FEAF

loc_7F82FEC6:				; CODE XREF: sub_7F82FE50+5Dj
		mov	eax, ebx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_7F82FECD:				; CODE XREF: sub_7F82FE50+48j
		mov	ebx, [esp+10h+lpSrcStr]
		push	0		; CodePage
		push	0		; cchDest
		mov	eax, Locale
		push	0		; lpDestStr
		push	0FFFFFFFFh	; cchSrc
		push	ebx		; lpSrcStr
		push	200h		; dwMapFlags
		push	eax		; Locale
		call	sub_7F8306D0
		add	esp, 1Ch
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F82FF41
		push	esi
		call	sub_7F830930
		add	esp, 4
		mov	ebp, eax
		test	ebp, ebp
		jz	short loc_7F82FF41
		push	0		; CodePage
		mov	eax, Locale
		push	esi		; cchDest
		push	ebp		; lpDestStr
		push	0FFFFFFFFh	; cchSrc
		push	ebx		; lpSrcStr
		push	200h		; dwMapFlags
		push	eax		; Locale
		call	sub_7F8306D0
		add	esp, 1Ch
		test	eax, eax
		jz	short loc_7F82FF41
		mov	edi, ebp
		mov	ecx, 0FFFFFFFFh
		sub	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	eax, ecx
		shr	ecx, 2
		mov	esi, edi
		mov	edi, ebx
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb

loc_7F82FF41:				; CODE XREF: sub_7F82FE50+A1j
					; sub_7F82FE50+B0j ...
		push	15h
		call	sub_7F8305D0
		add	esp, 4
		push	ebp		; lpMem
		call	sub_7F8304A0
		add	esp, 4
		mov	eax, ebx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F82FE50	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F82FF60	proc near		; CODE XREF: sub_7F811CD9+C9p
					; sub_7F811CD9+189p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_8]
		push	ebx
		push	esi
		cmp	eax, 1
		jle	short loc_7F82FF87
		shr	eax, 1
		mov	ecx, [esp+8+arg_0]
		mov	esi, [esp+8+arg_4]

loc_7F82FF76:				; CODE XREF: sub_7F82FF60+25j
		mov	dl, [ecx]
		mov	bl, [ecx+1]
		mov	[esi], bl
		inc	ecx
		mov	[esi+1], dl
		inc	ecx
		inc	esi
		inc	esi
		dec	eax
		jnz	short loc_7F82FF76

loc_7F82FF87:				; CODE XREF: sub_7F82FF60+9j
		pop	esi
		pop	ebx
		retn
sub_7F82FF60	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F82FF90	proc near		; CODE XREF: sub_7F815163+1D9p
					; sub_7F815163+24Ap

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		push	ebx
		mov	esi, [ebp+arg_0]
		mov	ecx, esi
		mov	edi, [ebp+arg_4]
		mov	edx, edi

loc_7F82FFA0:				; CODE XREF: sub_7F82FF90+25j
					; sub_7F82FF90+29j
		mov	al, [edi]
		or	al, al
		jz	short loc_7F82FFBB
		mov	ah, [esi]
		or	ah, ah
		jz	short loc_7F82FFBF
		cmp	al, ah
		jz	short loc_7F82FFB7
		mov	edi, edx
		inc	ecx
		mov	esi, ecx
		jmp	short loc_7F82FFA0
; ---------------------------------------------------------------------------

loc_7F82FFB7:				; CODE XREF: sub_7F82FF90+1Ej
		inc	edi
		inc	esi
		jmp	short loc_7F82FFA0
; ---------------------------------------------------------------------------

loc_7F82FFBB:				; CODE XREF: sub_7F82FF90+14j
		mov	eax, ecx
		jmp	short loc_7F82FFC1
; ---------------------------------------------------------------------------

loc_7F82FFBF:				; CODE XREF: sub_7F82FF90+1Aj
		xor	eax, eax

loc_7F82FFC1:				; CODE XREF: sub_7F82FF90+2Dj
		pop	ebx
		pop	edi
		pop	esi
		leave
		retn
sub_7F82FF90	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F82FFD0	proc near		; CODE XREF: sub_7F830070+1Fp
					; sub_7F8300A0+24p ...

arg_0		= dword	ptr  4

		push	esi
		call	sub_7F830060
		mov	ecx, [esp+4+arg_0]
		xor	esi, esi
		mov	[eax], ecx
		mov	eax, offset unk_7F839750

loc_7F82FFE3:				; CODE XREF: sub_7F82FFD0+20j
		cmp	[eax], ecx
		jz	short loc_7F830009
		add	eax, 8
		inc	esi
		cmp	eax, offset dword_7F8398B8
		jb	short loc_7F82FFE3
		cmp	ecx, 13h
		jb	short loc_7F830019
		cmp	ecx, 24h
		ja	short loc_7F830019
		call	sub_7F830050
		pop	esi
		mov	dword ptr [eax], 0Dh
		retn
; ---------------------------------------------------------------------------

loc_7F830009:				; CODE XREF: sub_7F82FFD0+15j
		call	sub_7F830050
		mov	ecx, dword_7F839754[esi*8]
		pop	esi
		mov	[eax], ecx
		retn
; ---------------------------------------------------------------------------

loc_7F830019:				; CODE XREF: sub_7F82FFD0+25j
					; sub_7F82FFD0+2Aj
		cmp	ecx, 0BCh
		jb	short loc_7F830036
		cmp	ecx, 0CAh
		ja	short loc_7F830036
		call	sub_7F830050
		pop	esi
		mov	dword ptr [eax], 8
		retn
; ---------------------------------------------------------------------------

loc_7F830036:				; CODE XREF: sub_7F82FFD0+4Fj
					; sub_7F82FFD0+57j
		call	sub_7F830050
		pop	esi
		mov	dword ptr [eax], 16h
		retn
sub_7F82FFD0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F830050	proc near		; CODE XREF: sub_7F81550B+2Ep
					; sub_7F81554E+48p ...
		call	sub_7F830A60
		add	eax, 8
		retn
sub_7F830050	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F830060	proc near		; CODE XREF: sub_7F82FFD0+1p
					; sub_7F831EA0+68p ...
		call	sub_7F830A60
		add	eax, 0Ch
		retn
sub_7F830060	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_7F830070(LPCSTR lpFileName)
sub_7F830070	proc near		; CODE XREF: sub_7F81550B+1Dp

lpFileName	= dword	ptr  4

		mov	eax, [esp+lpFileName]
		push	eax		; lpFileName
		call	ds:DeleteFileA
		test	eax, eax
		mov	eax, 0
		jnz	short loc_7F83008A
		call	ds:GetLastError

loc_7F83008A:				; CODE XREF: sub_7F830070+12j
		test	eax, eax
		jz	short loc_7F83009D
		push	eax
		call	sub_7F82FFD0
		add	esp, 4
		mov	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------

loc_7F83009D:				; CODE XREF: sub_7F830070+1Cj
		xor	eax, eax
		retn
sub_7F830070	endp


; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_7F8300A0(LPCSTR lpExistingFileName, LPCSTR lpNewFileName)
sub_7F8300A0	proc near		; CODE XREF: sub_7F81554E+37p

lpExistingFileName= dword ptr  4
lpNewFileName	= dword	ptr  8

		mov	eax, [esp+lpNewFileName]
		mov	ecx, [esp+lpExistingFileName]
		push	eax		; lpNewFileName
		push	ecx		; lpExistingFileName
		call	ds:MoveFileA
		test	eax, eax
		mov	eax, 0
		jnz	short loc_7F8300BF
		call	ds:GetLastError

loc_7F8300BF:				; CODE XREF: sub_7F8300A0+17j
		test	eax, eax
		jz	short loc_7F8300D2
		push	eax
		call	sub_7F82FFD0
		add	esp, 4
		mov	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------

loc_7F8300D2:				; CODE XREF: sub_7F8300A0+21j
		xor	eax, eax
		retn
sub_7F8300A0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F8300E0	proc near		; CODE XREF: sub_7F816044+127p
					; sub_7F81635D+B3p ...

var_F8		= dword	ptr -0F8h
var_F4		= dword	ptr -0F4h
var_F0		= dword	ptr -0F0h
var_78		= dword	ptr -78h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		mov	eax, [esp+arg_4]
		sub	esp, 0F8h
		cmp	eax, 2
		push	ebx
		push	esi
		push	edi
		push	ebp
		jb	loc_7F830233
		mov	esi, [esp+108h+arg_8]
		test	esi, esi
		jz	loc_7F830233
		mov	edi, [esp+108h+arg_0]
		dec	eax
		mov	[esp+108h+var_F4], 0
		imul	eax, esi
		add	eax, edi

loc_7F83011B:				; CODE XREF: sub_7F8300E0+7Fj
		mov	[esp+108h+var_F8], eax

loc_7F83011F:				; CODE XREF: sub_7F8300E0+11Bj
					; sub_7F8300E0+14Ej
		mov	eax, [esp+108h+var_F8]
		sub	edx, edx
		sub	eax, edi
		div	esi
		inc	eax
		cmp	eax, 8
		ja	short loc_7F830161
		mov	eax, [esp+108h+arg_C]
		mov	ecx, [esp+108h+var_F8]
		push	eax
		push	esi
		push	ecx
		push	edi
		call	sub_7F830240
		add	esp, 10h

loc_7F830146:				; CODE XREF: sub_7F8300E0+113j
					; sub_7F8300E0+142j
		dec	[esp+108h+var_F4]
		js	loc_7F830233
		mov	ecx, [esp+108h+var_F4]
		mov	edi, [esp+ecx*4+108h+var_F0]
		mov	eax, [esp+ecx*4+108h+var_78]
		jmp	short loc_7F83011B
; ---------------------------------------------------------------------------

loc_7F830161:				; CODE XREF: sub_7F8300E0+4Dj
		shr	eax, 1
		push	esi
		push	edi
		mov	ebp, edi
		imul	eax, esi
		add	eax, edi
		push	eax
		call	sub_7F8302A0
		mov	ebx, [esp+114h+var_F8]
		add	esp, 0Ch
		add	ebx, esi

loc_7F83017C:				; CODE XREF: sub_7F8300E0+B2j
					; sub_7F8300E0+D9j
		add	ebp, esi
		cmp	ebp, [esp+108h+var_F8]
		ja	short loc_7F830194
		push	edi
		push	ebp
		call	[esp+110h+arg_C]
		add	esp, 8
		test	eax, eax
		jle	short loc_7F83017C

loc_7F830194:				; CODE XREF: sub_7F8300E0+A2j
					; sub_7F8300E0+C8j
		sub	ebx, esi
		cmp	ebx, edi
		jbe	short loc_7F8301AA
		push	edi
		push	ebx
		call	[esp+110h+arg_C]
		add	esp, 8
		test	eax, eax
		jge	short loc_7F830194

loc_7F8301AA:				; CODE XREF: sub_7F8300E0+B8j
		push	esi
		cmp	ebx, ebp
		push	ebx
		jb	short loc_7F8301BB
		push	ebp
		call	sub_7F8302A0
		add	esp, 0Ch
		jmp	short loc_7F83017C
; ---------------------------------------------------------------------------

loc_7F8301BB:				; CODE XREF: sub_7F8300E0+CEj
		push	edi
		call	sub_7F8302A0
		mov	ecx, [esp+114h+var_F8]
		add	esp, 0Ch
		mov	eax, ebx
		sub	ecx, ebp
		sub	eax, edi
		dec	eax
		cmp	eax, ecx
		jl	short loc_7F830200
		lea	eax, [edi+esi]
		cmp	eax, ebx
		jnb	short loc_7F8301EF
		mov	ecx, [esp+108h+var_F4]
		sub	ebx, esi
		inc	[esp+108h+var_F4]
		mov	[esp+ecx*4+108h+var_F0], edi
		mov	[esp+ecx*4+108h+var_78], ebx

loc_7F8301EF:				; CODE XREF: sub_7F8300E0+F8j
		cmp	ebp, [esp+108h+var_F8]
		jnb	loc_7F830146
		mov	edi, ebp
		jmp	loc_7F83011F
; ---------------------------------------------------------------------------

loc_7F830200:				; CODE XREF: sub_7F8300E0+F1j
		cmp	ebp, [esp+108h+var_F8]
		jnb	short loc_7F83021D
		mov	ecx, [esp+108h+var_F4]
		mov	eax, [esp+108h+var_F8]
		inc	[esp+108h+var_F4]
		mov	[esp+ecx*4+108h+var_F0], ebp
		mov	[esp+ecx*4+108h+var_78], eax

loc_7F83021D:				; CODE XREF: sub_7F8300E0+124j
		lea	eax, [edi+esi]
		cmp	eax, ebx
		jnb	loc_7F830146
		sub	ebx, esi
		mov	[esp+108h+var_F8], ebx
		jmp	loc_7F83011F
; ---------------------------------------------------------------------------

loc_7F830233:				; CODE XREF: sub_7F8300E0+11j
					; sub_7F8300E0+20j ...
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 0F8h
		retn
sub_7F8300E0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F830240	proc near		; CODE XREF: sub_7F8300E0+5Ep

var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		sub	esp, 4
		push	ebx
		push	esi
		mov	esi, [esp+0Ch+arg_4]
		push	edi
		cmp	esi, [esp+10h+arg_0]
		push	ebp
		jbe	short loc_7F830293
		mov	edi, [esp+14h+arg_8]
		mov	eax, [esp+14h+arg_0]
		add	eax, edi
		mov	[esp+14h+var_4], eax

loc_7F83025F:				; CODE XREF: sub_7F830240+51j
		mov	ebp, [esp+14h+arg_0]
		mov	ebx, [esp+14h+var_4]
		cmp	ebx, esi
		ja	short loc_7F830280

loc_7F83026B:				; CODE XREF: sub_7F830240+3Ej
		push	ebp
		push	ebx
		call	[esp+1Ch+arg_C]
		add	esp, 8
		test	eax, eax
		jle	short loc_7F83027A
		mov	ebp, ebx

loc_7F83027A:				; CODE XREF: sub_7F830240+36j
		add	ebx, edi
		cmp	ebx, esi
		jbe	short loc_7F83026B

loc_7F830280:				; CODE XREF: sub_7F830240+29j
		push	edi
		push	esi
		push	ebp
		sub	esi, edi
		call	sub_7F8302A0
		add	esp, 0Ch
		cmp	esi, [esp+14h+arg_0]
		ja	short loc_7F83025F

loc_7F830293:				; CODE XREF: sub_7F830240+Fj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn
sub_7F830240	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F8302A0	proc near		; CODE XREF: sub_7F8300E0+8Ep
					; sub_7F8300E0+D1p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	edx, [esp+arg_4]
		push	ebx
		mov	ecx, [esp+4+arg_0]
		push	esi
		cmp	edx, ecx
		jz	short loc_7F8302CA
		mov	esi, [esp+8+arg_8]
		mov	eax, esi
		dec	esi
		test	eax, eax
		jz	short loc_7F8302CA

loc_7F8302B9:				; CODE XREF: sub_7F8302A0+28j
		mov	al, [ecx]
		mov	bl, [edx]
		mov	[ecx], bl
		inc	ecx
		mov	[edx], al
		inc	edx
		mov	eax, esi
		dec	esi
		test	eax, eax
		jnz	short loc_7F8302B9

loc_7F8302CA:				; CODE XREF: sub_7F8302A0+Cj
					; sub_7F8302A0+17j
		pop	esi
		pop	ebx
		retn
sub_7F8302A0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F8302D0	proc near		; CODE XREF: sub_7F828018+9Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h

		push	ebx
		push	esi
		mov	ebx, [esp+8+arg_8]
		push	edi
		push	ebp
		xor	ebp, ebp
		cmp	[ebx], ebp
		jbe	short loc_7F8302FC
		mov	esi, [esp+10h+arg_0]
		mov	edi, [esp+10h+arg_4]

loc_7F8302E6:				; CODE XREF: sub_7F8302D0+2Aj
		push	edi
		push	esi
		call	[esp+18h+arg_10]
		add	esp, 8
		test	eax, eax
		jz	short loc_7F830303
		add	edi, [esp+10h+arg_C]
		inc	ebp
		cmp	[ebx], ebp
		ja	short loc_7F8302E6

loc_7F8302FC:				; CODE XREF: sub_7F8302D0+Cj
		xor	eax, eax
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_7F830303:				; CODE XREF: sub_7F8302D0+21j
		mov	eax, edi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F8302D0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F830310	proc near		; CODE XREF: DllEntryPoint+40p
					; DllEntryPoint+6Dp

arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		cmp	eax, 1
		jnz	loc_7F830409
		call	ds:GetVersion
		cmp	dword_7F8398CC,	0
		mov	dword_7F8399DC,	eax
		jnz	short loc_7F83036F
		cmp	al, 3
		jnz	short loc_7F830346
		test	eax, 80000000h
		jz	short loc_7F830346
		push	2
		call	sub_7F831740
		add	esp, 4

loc_7F830346:				; CODE XREF: sub_7F830310+23j
					; sub_7F830310+2Aj
		push	offset aKernel32_dll ; "kernel32.dll"
		call	ds:GetModuleHandleA
		test	eax, eax
		jz	short loc_7F83036F
		push	offset aIstnt	; "IsTNT"
		push	eax		; hModule
		call	ds:GetProcAddress
		test	eax, eax
		jz	short loc_7F83036F
		push	1
		call	sub_7F831740
		add	esp, 4

loc_7F83036F:				; CODE XREF: sub_7F830310+1Fj
					; sub_7F830310+43j ...
		call	sub_7F830CB0
		xor	ecx, ecx
		mov	edx, dword_7F8399DC
		mov	cl, dh
		mov	eax, edx
		and	eax, 0FFh
		inc	dword_7F8398B8
		shr	edx, 10h
		mov	dword_7F8399E8,	ecx
		mov	dword_7F8399E4,	eax
		mov	dword_7F8399DC,	edx
		shl	eax, 8
		add	eax, ecx
		mov	dword_7F8399E0,	eax
		call	sub_7F8309B0
		test	eax, eax
		jnz	short loc_7F8303BC
		call	sub_7F830CD0
		xor	eax, eax
		retn	0Ch
; ---------------------------------------------------------------------------

loc_7F8303BC:				; CODE XREF: sub_7F830310+A0j
		call	ds:GetCommandLineA
		mov	dword_7F835130,	eax
		call	sub_7F8315A0
		cmp	dword_7F835130,	0
		mov	lpMem, eax
		jz	short loc_7F8303FF
		test	eax, eax
		jz	short loc_7F8303FF
		call	sub_7F830CE0
		call	sub_7F831590
		call	sub_7F831000
		call	sub_7F830F20
		call	sub_7F830B80
		mov	eax, 1
		retn	0Ch
; ---------------------------------------------------------------------------

loc_7F8303FF:				; CODE XREF: sub_7F830310+C8j
					; sub_7F830310+CCj
		call	sub_7F830CD0
		xor	eax, eax
		retn	0Ch
; ---------------------------------------------------------------------------

loc_7F830409:				; CODE XREF: sub_7F830310+7j
		test	eax, eax
		jnz	short loc_7F830446
		mov	eax, dword_7F8398B8
		test	eax, eax
		jle	short loc_7F830441
		dec	eax
		cmp	dword_7F839A14,	0
		mov	dword_7F8398B8,	eax
		jnz	short loc_7F83042A
		call	sub_7F830BD0

loc_7F83042A:				; CODE XREF: sub_7F830310+113j
		call	sub_7F830EC0
		call	sub_7F830A10
		call	sub_7F830CD0
		mov	eax, 1
		retn	0Ch
; ---------------------------------------------------------------------------

loc_7F830441:				; CODE XREF: sub_7F830310+104j
		xor	eax, eax
		retn	0Ch
; ---------------------------------------------------------------------------

loc_7F830446:				; CODE XREF: sub_7F830310+FBj
		cmp	eax, 3
		jnz	short loc_7F830455
		push	0		; lpMem
		call	sub_7F830AD0
		add	esp, 4

loc_7F830455:				; CODE XREF: sub_7F830310+139j
		mov	eax, 1
		retn	0Ch
sub_7F830310	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F830460	proc near		; CODE XREF: sub_7F830560+27p
					; sub_7F830A60+5Bp ...

arg_0		= dword	ptr  4

		mov	eax, dword_7F8398C8
		cmp	eax, 1
		jz	short loc_7F830477
		test	eax, eax
		jnz	short loc_7F83047C
		cmp	dword_7F8398CC,	1
		jnz	short loc_7F83047C

loc_7F830477:				; CODE XREF: sub_7F830460+8j
		call	sub_7F831750

loc_7F83047C:				; CODE XREF: sub_7F830460+Cj
					; sub_7F830460+15j
		mov	eax, [esp+arg_0]
		push	eax
		call	sub_7F831790
		add	esp, 4
		push	0FFh
		call	off_7F8398C4
		add	esp, 4
		retn
sub_7F830460	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_7F8304A0(LPVOID lpMem)
sub_7F8304A0	proc near		; CODE XREF: sub_7F82FE50+FCp
					; sub_7F8304F0+32p ...

lpMem		= dword	ptr  4

		mov	eax, [esp+lpMem]
		test	eax, eax
		jz	short locret_7F8304B7
		push	eax		; lpMem
		push	0		; dwFlags
		mov	eax, hHeap
		push	eax		; hHeap
		call	ds:HeapFree

locret_7F8304B7:			; CODE XREF: sub_7F8304A0+6j
		retn
sub_7F8304A0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F8304C0	proc near		; CODE XREF: sub_7F8309B0+1p
		push	esi
		mov	eax, lpCriticalSection
		push	eax		; lpCriticalSection
		mov	esi, ds:InitializeCriticalSection
		call	esi ; InitializeCriticalSection
		mov	ecx, off_7F83991C
		push	ecx		; lpCriticalSection
		call	esi ; InitializeCriticalSection
		mov	eax, off_7F83990C
		push	eax		; lpCriticalSection
		call	esi ; InitializeCriticalSection
		mov	eax, off_7F8398EC
		push	eax		; lpCriticalSection
		call	esi ; InitializeCriticalSection
		pop	esi
		retn
sub_7F8304C0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F8304F0	proc near		; CODE XREF: sub_7F830A10p
		push	ebx
		push	esi
		push	edi
		mov	esi, ds:DeleteCriticalSection
		xor	edi, edi

loc_7F8304FB:				; CODE XREF: sub_7F8304F0+3Ej
		lea	ebx, dword_7F8398E8[edi*4]
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_7F83052A
		cmp	edi, 11h
		jz	short loc_7F83052A
		cmp	edi, 0Dh
		jz	short loc_7F83052A
		cmp	edi, 9
		jz	short loc_7F83052A
		cmp	edi, 1
		jz	short loc_7F83052A
		push	eax		; lpCriticalSection
		call	esi ; DeleteCriticalSection
		mov	eax, [ebx]
		push	eax		; lpMem
		call	sub_7F8304A0
		add	esp, 4

loc_7F83052A:				; CODE XREF: sub_7F8304F0+16j
					; sub_7F8304F0+1Bj ...
		inc	edi
		cmp	edi, 30h
		jl	short loc_7F8304FB
		mov	eax, off_7F83990C
		push	eax		; lpCriticalSection
		call	esi ; DeleteCriticalSection
		mov	eax, off_7F83991C
		push	eax		; lpCriticalSection
		call	esi ; DeleteCriticalSection
		mov	eax, lpCriticalSection
		push	eax		; lpCriticalSection
		call	esi ; DeleteCriticalSection
		mov	eax, off_7F8398EC
		push	eax		; lpCriticalSection
		call	esi ; DeleteCriticalSection
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F8304F0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F830560	proc near		; CODE XREF: sub_7F82FE50+39p
					; sub_7F830560+31p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		push	esi
		push	edi
		lea	edi, dword_7F8398E8[eax*4]
		cmp	dword ptr [edi], 0
		jnz	short loc_7F8305BB
		push	18h
		call	sub_7F830930
		add	esp, 4
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F83058F
		push	11h
		call	sub_7F830460
		add	esp, 4

loc_7F83058F:				; CODE XREF: sub_7F830560+23j
		push	11h
		call	sub_7F830560
		add	esp, 4
		cmp	dword ptr [edi], 0
		push	esi		; lpMem
		jnz	short loc_7F8305A9
		call	ds:InitializeCriticalSection
		mov	[edi], esi
		jmp	short loc_7F8305B1
; ---------------------------------------------------------------------------

loc_7F8305A9:				; CODE XREF: sub_7F830560+3Dj
		call	sub_7F8304A0
		add	esp, 4

loc_7F8305B1:				; CODE XREF: sub_7F830560+47j
		push	11h
		call	sub_7F8305D0
		add	esp, 4

loc_7F8305BB:				; CODE XREF: sub_7F830560+13j
		mov	eax, [edi]
		push	eax		; lpCriticalSection
		call	ds:EnterCriticalSection
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_7F830560	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8305D0	proc near		; CODE XREF: sub_7F82FE50+4Cp
					; sub_7F82FE50+F3p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		mov	ecx, dword_7F8398E8[eax*4]
		push	ecx		; lpCriticalSection
		call	ds:LeaveCriticalSection
		pop	ebp
		retn
sub_7F8305D0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8305F0	proc near		; CODE XREF: sub_7F831E00+1Ep

arg_0		= dword	ptr  8

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		cmp	eax, offset off_7F839FC0
		jb	short loc_7F83061A
		cmp	eax, offset unk_7F83A220
		ja	short loc_7F83061A
		sub	eax, offset off_7F839FC0
		sar	eax, 5
		add	eax, 1Ch
		push	eax
		call	sub_7F830560
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_7F83061A:				; CODE XREF: sub_7F8305F0+Cj
					; sub_7F8305F0+13j
		add	eax, 20h
		push	eax		; lpCriticalSection
		call	ds:EnterCriticalSection
		pop	ebp
		retn
sub_7F8305F0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F830630	proc near		; CODE XREF: sub_7F831D40+33p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		cmp	eax, 14h
		jge	short loc_7F830649
		add	eax, 1Ch
		push	eax
		call	sub_7F830560
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_7F830649:				; CODE XREF: sub_7F830630+Aj
		mov	eax, [ebp+arg_4]
		add	eax, 20h
		push	eax		; lpCriticalSection
		call	ds:EnterCriticalSection
		pop	ebp
		retn
sub_7F830630	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F830660	proc near		; CODE XREF: sub_7F831E00+32p

arg_0		= dword	ptr  8

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		cmp	eax, offset off_7F839FC0
		jb	short loc_7F83068A
		cmp	eax, offset unk_7F83A220
		ja	short loc_7F83068A
		sub	eax, offset off_7F839FC0
		sar	eax, 5
		add	eax, 1Ch
		push	eax
		call	sub_7F8305D0
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_7F83068A:				; CODE XREF: sub_7F830660+Cj
					; sub_7F830660+13j
		add	eax, 20h
		push	eax		; lpCriticalSection
		call	ds:LeaveCriticalSection
		pop	ebp
		retn
sub_7F830660	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F8306A0	proc near		; CODE XREF: sub_7F831D40+88p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	eax, [esp+arg_0]
		mov	ebp, esp
		cmp	eax, 14h
		jge	short loc_7F8306B9
		add	eax, 1Ch
		push	eax
		call	sub_7F8305D0
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_7F8306B9:				; CODE XREF: sub_7F8306A0+Aj
		mov	eax, [ebp+arg_4]
		add	eax, 20h
		push	eax		; lpCriticalSection
		call	ds:LeaveCriticalSection
		pop	ebp
		retn
sub_7F8306A0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_7F8306D0(LCID	Locale,	DWORD dwMapFlags, LPCSTR lpSrcStr, int cchSrc, LPSTR lpDestStr,	int cchDest, UINT CodePage)
sub_7F8306D0	proc near		; CODE XREF: sub_7F82FE50+95p
					; sub_7F82FE50+C4p

Locale		= dword	ptr  4
dwMapFlags	= dword	ptr  8
lpSrcStr	= dword	ptr  0Ch
cchSrc		= dword	ptr  10h
lpDestStr	= dword	ptr  14h
cchDest		= dword	ptr  18h
CodePage	= dword	ptr  1Ch

		push	ebx
		mov	eax, dword_7F8399AC
		push	esi
		test	eax, eax
		push	edi
		push	ebp
		jnz	short loc_7F83072C
		push	0		; cchDest
		mov	esi, ds:LCMapStringA
		push	0		; lpDestStr
		push	1		; cchSrc
		push	offset SrcStr	; lpSrcStr
		push	100h		; dwMapFlags
		push	0		; Locale
		call	esi ; LCMapStringA
		test	eax, eax
		jz	short loc_7F830702
		mov	eax, 2
		jmp	short loc_7F830732
; ---------------------------------------------------------------------------

loc_7F830702:				; CODE XREF: sub_7F8306D0+29j
		push	0		; cchDest
		push	0		; lpDestStr
		push	1		; cchSrc
		push	offset word_7F8399B4 ; lpSrcStr
		push	100h		; dwMapFlags
		push	0		; Locale
		call	ds:LCMapStringW
		test	eax, eax
		jz	short loc_7F830725
		mov	eax, 1
		jmp	short loc_7F830732
; ---------------------------------------------------------------------------

loc_7F830725:				; CODE XREF: sub_7F8306D0+4Cj
		xor	eax, eax
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_7F83072C:				; CODE XREF: sub_7F8306D0+Bj
		mov	esi, ds:LCMapStringA

loc_7F830732:				; CODE XREF: sub_7F8306D0+30j
					; sub_7F8306D0+53j
		mov	edi, [esp+10h+cchSrc]
		mov	dword_7F8399AC,	eax
		test	edi, edi
		jle	short loc_7F830754
		mov	eax, [esp+10h+lpSrcStr]
		push	edi
		push	eax
		call	sub_7F830900
		add	esp, 8
		mov	edi, eax
		mov	eax, dword_7F8399AC

loc_7F830754:				; CODE XREF: sub_7F8306D0+6Dj
		mov	dword_7F8399AC,	eax
		cmp	eax, 2
		jnz	short loc_7F83077F
		mov	eax, [esp+10h+cchDest]
		mov	ecx, [esp+10h+lpDestStr]
		mov	edx, [esp+10h+lpSrcStr]
		push	eax		; cchDest
		mov	eax, [esp+14h+dwMapFlags]
		push	ecx		; lpDestStr
		mov	ecx, [esp+18h+Locale]
		push	edi		; cchSrc
		push	edx		; lpSrcStr
		push	eax		; dwMapFlags
		push	ecx		; Locale
		call	esi ; LCMapStringA
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_7F83077F:				; CODE XREF: sub_7F8306D0+8Cj
		mov	dword_7F8399AC,	eax
		cmp	eax, 1
		jnz	loc_7F83085F
		xor	esi, esi
		cmp	[esp+10h+CodePage], esi
		jnz	short loc_7F83079E
		mov	eax, dword_7F8399D0
		mov	[esp+10h+CodePage], eax

loc_7F83079E:				; CODE XREF: sub_7F8306D0+C3j
		mov	eax, [esp+10h+lpSrcStr]
		push	0		; cchWideChar
		mov	ecx, [esp+14h+CodePage]
		push	0		; lpWideCharStr
		push	edi		; cbMultiByte
		push	eax		; lpMultiByteStr
		push	9		; dwFlags
		push	ecx		; CodePage
		call	ds:MultiByteToWideChar
		mov	ebp, eax
		test	ebp, ebp
		jnz	short loc_7F8307C2
		xor	eax, eax
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_7F8307C2:				; CODE XREF: sub_7F8306D0+E9j
		lea	eax, ds:0[ebp*2]
		push	eax
		call	sub_7F830930
		add	esp, 4
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F8307DF
		xor	eax, eax
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_7F8307DF:				; CODE XREF: sub_7F8306D0+106j
		mov	eax, [esp+10h+lpSrcStr]
		push	ebp		; cchWideChar
		mov	ecx, [esp+14h+CodePage]
		push	ebx		; lpWideCharStr
		push	edi		; cbMultiByte
		push	eax		; lpMultiByteStr
		push	1		; dwFlags
		push	ecx		; CodePage
		call	ds:MultiByteToWideChar
		test	eax, eax
		jz	short loc_7F83084B
		mov	eax, [esp+10h+dwMapFlags]
		push	0		; cchDest
		mov	ecx, [esp+14h+Locale]
		push	0		; lpDestStr
		push	ebp		; cchSrc
		push	ebx		; lpSrcStr
		push	eax		; dwMapFlags
		push	ecx		; Locale
		call	ds:LCMapStringW
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F83084B
		test	byte ptr [esp+10h+dwMapFlags+1], 4
		jz	short loc_7F830864
		mov	eax, [esp+10h+cchDest]
		test	eax, eax
		jz	loc_7F8308E2
		cmp	edi, eax
		jg	short loc_7F83084B
		mov	ecx, [esp+10h+dwMapFlags]
		push	eax		; cchDest
		mov	eax, [esp+14h+lpDestStr]
		mov	edx, [esp+14h+Locale]
		push	eax		; lpDestStr
		push	ebp		; cchSrc
		push	ebx		; lpSrcStr
		push	ecx		; dwMapFlags
		push	edx		; Locale
		call	ds:LCMapStringW
		test	eax, eax
		jnz	loc_7F8308E2

loc_7F83084B:				; CODE XREF: sub_7F8306D0+126j
					; sub_7F8306D0+142j ...
		push	ebx		; lpMem
		call	sub_7F8304A0
		add	esp, 4
		push	esi		; lpMem
		call	sub_7F8304A0
		add	esp, 4
		xor	eax, eax

loc_7F83085F:				; CODE XREF: sub_7F8306D0+B7j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_7F830864:				; CODE XREF: sub_7F8306D0+149j
		lea	eax, ds:0[edi*2]
		push	eax
		call	sub_7F830930
		add	esp, 4
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F83084B
		mov	eax, [esp+10h+dwMapFlags]
		push	edi		; cchDest
		mov	ecx, [esp+14h+Locale]
		push	esi		; lpDestStr
		push	ebp		; cchSrc
		push	ebx		; lpSrcStr
		push	eax		; dwMapFlags
		push	ecx		; Locale
		call	ds:LCMapStringW
		test	eax, eax
		jz	short loc_7F83084B
		mov	eax, [esp+10h+cchDest]
		push	0		; lpUsedDefaultChar
		push	0		; lpDefaultChar
		test	eax, eax
		jnz	short loc_7F8308BE
		mov	eax, [esp+18h+CodePage]
		push	0		; cbMultiByte
		push	0		; lpMultiByteStr
		mov	ebp, ds:WideCharToMultiByte
		push	edi		; cchWideChar
		push	esi		; lpWideCharStr
		push	220h		; dwFlags
		push	eax		; CodePage
		call	ebp ; WideCharToMultiByte
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F8308E2
		jmp	short loc_7F83084B
; ---------------------------------------------------------------------------

loc_7F8308BE:				; CODE XREF: sub_7F8306D0+1CCj
		mov	ecx, [esp+18h+CodePage]
		push	eax		; cbMultiByte
		mov	eax, [esp+1Ch+lpDestStr]
		mov	ebp, ds:WideCharToMultiByte
		push	eax		; lpMultiByteStr
		push	edi		; cchWideChar
		push	esi		; lpWideCharStr
		push	220h		; dwFlags
		push	ecx		; CodePage
		call	ebp ; WideCharToMultiByte
		mov	edi, eax
		test	edi, edi
		jz	loc_7F83084B

loc_7F8308E2:				; CODE XREF: sub_7F8306D0+151j
					; sub_7F8306D0+175j ...
		push	ebx		; lpMem
		call	sub_7F8304A0
		add	esp, 4
		push	esi		; lpMem
		call	sub_7F8304A0
		add	esp, 4
		mov	eax, edi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F8306D0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F830900	proc near		; CODE XREF: sub_7F8306D0+75p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		push	esi
		mov	eax, [esp+4+arg_4]
		push	edi
		mov	edi, ecx
		test	eax, eax
		lea	esi, [eax-1]
		jz	short loc_7F830920

loc_7F830913:				; CODE XREF: sub_7F830900+1Ej
		cmp	byte ptr [edi],	0
		jz	short loc_7F830925
		inc	edi
		mov	edx, esi
		dec	esi
		test	edx, edx
		jnz	short loc_7F830913

loc_7F830920:				; CODE XREF: sub_7F830900+11j
		cmp	byte ptr [edi],	0
		jnz	short loc_7F830929

loc_7F830925:				; CODE XREF: sub_7F830900+16j
		sub	edi, ecx
		mov	eax, edi

loc_7F830929:				; CODE XREF: sub_7F830900+23j
		pop	edi
		pop	esi
		retn
sub_7F830900	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F830930	proc near		; CODE XREF: sub_7F82FE50+A4p
					; sub_7F830560+17p ...

dwBytes		= dword	ptr  4

		mov	eax, dword_7F83A244
		mov	ecx, [esp+dwBytes]
		push	eax		; int
		push	ecx		; dwBytes
		call	sub_7F830950
		add	esp, 8
		retn
sub_7F830930	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_7F830950(SIZE_T dwBytes, int)
sub_7F830950	proc near		; CODE XREF: sub_7F830930+Bp

dwBytes		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+dwBytes]
		cmp	edi, 0FFFFFFE0h
		jbe	short loc_7F830960
		xor	eax, eax
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_7F830960:				; CODE XREF: sub_7F830950+9j
		test	edi, edi
		jnz	short loc_7F830969
		mov	edi, 1

loc_7F830969:				; CODE XREF: sub_7F830950+12j
		mov	esi, [esp+8+arg_4]

loc_7F83096D:				; CODE XREF: sub_7F830950+39j
		push	edi		; dwBytes
		call	sub_7F830990
		add	esp, 4
		test	eax, eax
		jnz	short loc_7F83098D
		test	esi, esi
		jz	short loc_7F83098D
		push	edi
		call	sub_7F831AA0
		add	esp, 4
		test	eax, eax
		jnz	short loc_7F83096D
		xor	eax, eax

loc_7F83098D:				; CODE XREF: sub_7F830950+28j
					; sub_7F830950+2Cj
		pop	edi
		pop	esi
		retn
sub_7F830950	endp


; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_7F830990(SIZE_T dwBytes)
sub_7F830990	proc near		; CODE XREF: sub_7F830950+1Ep

dwBytes		= dword	ptr  4

		mov	eax, [esp+dwBytes]
		mov	ecx, hHeap
		push	eax		; dwBytes
		push	0		; dwFlags
		push	ecx		; hHeap
		call	ds:HeapAlloc
		retn
sub_7F830990	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F8309B0	proc near		; CODE XREF: sub_7F830310+99p
		push	esi
		call	sub_7F8304C0
		call	ds:TlsAlloc
		mov	dwTlsIndex, eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_7F8309CA
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_7F8309CA:				; CODE XREF: sub_7F8309B0+14j
		push	74h
		push	1
		call	sub_7F831AE0
		add	esp, 8
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F830A0C
		push	esi		; lpTlsValue
		mov	eax, dwTlsIndex
		push	eax		; dwTlsIndex
		call	ds:TlsSetValue
		test	eax, eax
		jz	short loc_7F830A0C
		push	esi
		call	sub_7F830A40
		add	esp, 4
		call	ds:GetCurrentThreadId
		mov	[esi], eax
		mov	eax, 1
		mov	dword ptr [esi+4], 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_7F830A0C:				; CODE XREF: sub_7F8309B0+2Aj
					; sub_7F8309B0+3Bj
		xor	eax, eax
		pop	esi
		retn
sub_7F8309B0	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F830A10	proc near		; CODE XREF: sub_7F830310+11Fp
		call	sub_7F8304F0
		mov	eax, dwTlsIndex
		cmp	eax, 0FFFFFFFFh
		jz	short locret_7F830A30
		push	eax		; dwTlsIndex
		call	ds:TlsFree
		mov	dwTlsIndex, 0FFFFFFFFh

locret_7F830A30:			; CODE XREF: sub_7F830A10+Dj
		retn
sub_7F830A10	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F830A40	proc near		; CODE XREF: sub_7F8309B0+3Ep
					; sub_7F830A60+40p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dword ptr [eax+50h], offset unk_7F83A248
		mov	dword ptr [eax+14h], 1
		retn
sub_7F830A40	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F830A60	proc near		; CODE XREF: sub_7F830050p
					; sub_7F830060p
		push	esi
		push	edi
		call	ds:GetLastError
		mov	esi, eax
		mov	eax, dwTlsIndex
		push	eax		; dwTlsIndex
		call	ds:TlsGetValue
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F830AC3
		push	74h
		push	1
		call	sub_7F831AE0
		add	esp, 8
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F830AB9
		push	edi		; lpTlsValue
		mov	eax, dwTlsIndex
		push	eax		; dwTlsIndex
		call	ds:TlsSetValue
		test	eax, eax
		jz	short loc_7F830AB9
		push	edi
		call	sub_7F830A40
		add	esp, 4
		call	ds:GetCurrentThreadId
		mov	[edi], eax
		mov	dword ptr [edi+4], 0FFFFFFFFh
		jmp	short loc_7F830AC3
; ---------------------------------------------------------------------------

loc_7F830AB9:				; CODE XREF: sub_7F830A60+2Cj
					; sub_7F830A60+3Dj
		push	10h
		call	sub_7F830460
		add	esp, 4

loc_7F830AC3:				; CODE XREF: sub_7F830A60+1Aj
					; sub_7F830A60+57j
		push	esi		; dwErrCode
		call	ds:SetLastError
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_7F830A60	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_7F830AD0(LPVOID lpMem)
sub_7F830AD0	proc near		; CODE XREF: sub_7F830310+13Dp

lpMem		= dword	ptr  4

		cmp	dwTlsIndex, 0FFFFFFFFh
		push	esi
		jz	loc_7F830B6F
		mov	esi, [esp+4+lpMem]
		test	esi, esi
		jnz	short loc_7F830AF8
		mov	eax, dwTlsIndex
		push	eax		; dwTlsIndex
		call	ds:TlsGetValue
		mov	esi, eax
		test	esi, esi
		jz	short loc_7F830B61

loc_7F830AF8:				; CODE XREF: sub_7F830AD0+14j
		mov	eax, [esi+24h]
		test	eax, eax
		jz	short loc_7F830B08
		push	eax		; lpMem
		call	sub_7F8304A0
		add	esp, 4

loc_7F830B08:				; CODE XREF: sub_7F830AD0+2Dj
		mov	eax, [esi+28h]
		test	eax, eax
		jz	short loc_7F830B18
		push	eax		; lpMem
		call	sub_7F8304A0
		add	esp, 4

loc_7F830B18:				; CODE XREF: sub_7F830AD0+3Dj
		mov	eax, [esi+30h]
		test	eax, eax
		jz	short loc_7F830B28
		push	eax		; lpMem
		call	sub_7F8304A0
		add	esp, 4

loc_7F830B28:				; CODE XREF: sub_7F830AD0+4Dj
		mov	eax, [esi+38h]
		test	eax, eax
		jz	short loc_7F830B38
		push	eax		; lpMem
		call	sub_7F8304A0
		add	esp, 4

loc_7F830B38:				; CODE XREF: sub_7F830AD0+5Dj
		mov	eax, [esi+40h]
		test	eax, eax
		jz	short loc_7F830B48
		push	eax		; lpMem
		call	sub_7F8304A0
		add	esp, 4

loc_7F830B48:				; CODE XREF: sub_7F830AD0+6Dj
		mov	eax, [esi+44h]
		test	eax, eax
		jz	short loc_7F830B58
		push	eax		; lpMem
		call	sub_7F8304A0
		add	esp, 4

loc_7F830B58:				; CODE XREF: sub_7F830AD0+7Dj
		push	esi		; lpMem
		call	sub_7F8304A0
		add	esp, 4

loc_7F830B61:				; CODE XREF: sub_7F830AD0+26j
		push	0		; lpTlsValue
		mov	eax, dwTlsIndex
		push	eax		; dwTlsIndex
		call	ds:TlsSetValue

loc_7F830B6F:				; CODE XREF: sub_7F830AD0+8j
		pop	esi
		retn
sub_7F830AD0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F830B80	proc near		; CODE XREF: sub_7F830310+E2p
		mov	eax, dword_7F835128
		test	eax, eax
		jz	short loc_7F830B8B
		call	eax ; dword_7F835128

loc_7F830B8B:				; CODE XREF: sub_7F830B80+7j
		push	offset unk_7F833010
		push	offset unk_7F833008
		call	sub_7F830C90
		add	esp, 8
		push	offset unk_7F833004
		push	offset unk_7F833000
		call	sub_7F830C90
		add	esp, 8
		retn
sub_7F830B80	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F830BB0	proc near		; CODE XREF: sub_7F830460+2Ep
					; DATA XREF: .data:off_7F8398C4o

uExitCode	= dword	ptr  4

		mov	eax, [esp+uExitCode]
		push	0		; int
		push	1		; int
		push	eax		; uExitCode
		call	sub_7F830BE0
		add	esp, 0Ch
		retn
sub_7F830BB0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F830BD0	proc near		; CODE XREF: sub_7F830310+115p
		push	1		; int
		push	0		; int
		push	0		; uExitCode
		call	sub_7F830BE0
		add	esp, 0Ch
		retn
sub_7F830BD0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_7F830BE0(UINT	uExitCode, int,	int)
sub_7F830BE0	proc near		; CODE XREF: sub_7F830BB0+9p
					; sub_7F830BD0+6p

uExitCode	= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		call	sub_7F830C70
		mov	dword_7F839A14,	1
		cmp	[esp+8+arg_4], 0
		mov	ebx, [esp+8+arg_8]
		mov	byte_7F839A10, bl
		jnz	short loc_7F830C41
		cmp	dword_7F83512C,	0
		jz	short loc_7F830C2F
		mov	esi, dword_7F835124
		sub	esi, 4
		cmp	esi, dword_7F83512C
		jb	short loc_7F830C2F

loc_7F830C1C:				; CODE XREF: sub_7F830BE0+4Dj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_7F830C24
		call	eax

loc_7F830C24:				; CODE XREF: sub_7F830BE0+40j
		sub	esi, 4
		cmp	esi, dword_7F83512C
		jnb	short loc_7F830C1C

loc_7F830C2F:				; CODE XREF: sub_7F830BE0+29j
					; sub_7F830BE0+3Aj
		push	offset unk_7F83301C
		push	offset unk_7F833014
		call	sub_7F830C90
		add	esp, 8

loc_7F830C41:				; CODE XREF: sub_7F830BE0+20j
		push	offset unk_7F833024
		push	offset unk_7F833020
		call	sub_7F830C90
		add	esp, 8
		test	ebx, ebx
		jz	short loc_7F830C5F
		call	sub_7F830C80
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_7F830C5F:				; CODE XREF: sub_7F830BE0+75j
		mov	eax, [esp+8+uExitCode]
		push	eax		; uExitCode
		call	ds:ExitProcess
sub_7F830BE0	endp

; ---------------------------------------------------------------------------
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F830C70	proc near		; CODE XREF: sub_7F830BE0+2p
		push	0Dh
		call	sub_7F830560
		add	esp, 4
		retn
sub_7F830C70	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F830C80	proc near		; CODE XREF: sub_7F830BE0+77p
		push	0Dh
		call	sub_7F8305D0
		add	esp, 4
		retn
sub_7F830C80	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F830C90	proc near		; CODE XREF: sub_7F830B80+15p
					; sub_7F830B80+27p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		mov	esi, [esp+8+arg_0]
		cmp	edi, esi
		jbe	short loc_7F830CAD

loc_7F830C9E:				; CODE XREF: sub_7F830C90+1Bj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_7F830CA6
		call	eax

loc_7F830CA6:				; CODE XREF: sub_7F830C90+12j
		add	esi, 4
		cmp	edi, esi
		ja	short loc_7F830C9E

loc_7F830CAD:				; CODE XREF: sub_7F830C90+Cj
		pop	edi
		pop	esi
		retn
sub_7F830C90	endp


; =============== S U B	R O U T	I N E =======================================


sub_7F830CB0	proc near		; CODE XREF: sub_7F830310:loc_7F83036Fp
		push	0		; dwMaximumSize
		push	1000h		; dwInitialSize
		push	0		; flOptions
		call	ds:HeapCreate
		mov	hHeap, eax
		retn
sub_7F830CB0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F830CD0	proc near		; CODE XREF: sub_7F830310+A2p
					; sub_7F830310:loc_7F8303FFp ...
		mov	eax, hHeap
		push	eax		; hHeap
		call	ds:HeapDestroy
		retn
sub_7F830CD0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F830CE0	proc near		; CODE XREF: sub_7F830310+CEp

StartupInfo	= _STARTUPINFOA	ptr -44h

		sub	esp, 44h
		push	ebx
		push	esi
		push	edi
		push	ebp
		push	480h
		call	sub_7F830930
		add	esp, 4
		mov	esi, eax
		test	esi, esi
		jnz	short loc_7F830D04
		push	1Bh
		call	sub_7F830460
		add	esp, 4

loc_7F830D04:				; CODE XREF: sub_7F830CE0+18j
		lea	eax, [esi+480h]
		mov	dword_7F835020,	esi
		mov	uNumber, 20h
		cmp	eax, esi
		jbe	short loc_7F830D46
		xor	ecx, ecx
		mov	edx, 0Ah

loc_7F830D25:				; CODE XREF: sub_7F830CE0+64j
		mov	[esi+4], cl
		add	esi, 24h
		mov	dword ptr [esi-24h], 0FFFFFFFFh
		mov	[esi-1Fh], dl
		mov	[esi-1Ch], ecx
		mov	eax, dword_7F835020
		add	eax, 480h
		cmp	eax, esi
		ja	short loc_7F830D25

loc_7F830D46:				; CODE XREF: sub_7F830CE0+3Cj
		lea	eax, [esp+54h+StartupInfo]
		push	eax		; lpStartupInfo
		call	ds:GetStartupInfoA
		cmp	[esp+54h+StartupInfo.cbReserved2], 0
		jz	loc_7F830E32
		cmp	[esp+54h+StartupInfo.lpReserved2], 0
		jz	loc_7F830E32
		mov	eax, [esp+54h+StartupInfo.lpReserved2]
		mov	ebp, [eax]
		lea	edi, [eax+4]
		cmp	ebp, 800h
		lea	ebx, [ebp+edi+0]
		jl	short loc_7F830D82
		mov	ebp, 800h

loc_7F830D82:				; CODE XREF: sub_7F830CE0+9Bj
		cmp	uNumber, ebp
		jge	short loc_7F830DE8
		mov	esi, offset unk_7F835024

loc_7F830D8F:				; CODE XREF: sub_7F830CE0+FEj
		push	480h
		call	sub_7F830930
		add	esp, 4
		test	eax, eax
		jz	short loc_7F830DE2
		lea	ecx, [eax+480h]
		mov	[esi], eax
		add	uNumber, 20h
		cmp	ecx, eax
		jbe	short loc_7F830DD5
		xor	ecx, ecx

loc_7F830DB5:				; CODE XREF: sub_7F830CE0+F3j
		mov	[eax+4], cl
		add	eax, 24h
		mov	dword ptr [eax-24h], 0FFFFFFFFh
		mov	byte ptr [eax-1Fh], 0Ah
		mov	[eax-1Ch], ecx
		mov	edx, [esi]
		add	edx, 480h
		cmp	edx, eax
		ja	short loc_7F830DB5

loc_7F830DD5:				; CODE XREF: sub_7F830CE0+D1j
		add	esi, 4
		cmp	uNumber, ebp
		jl	short loc_7F830D8F
		jmp	short loc_7F830DE8
; ---------------------------------------------------------------------------

loc_7F830DE2:				; CODE XREF: sub_7F830CE0+BEj
		mov	ebp, uNumber

loc_7F830DE8:				; CODE XREF: sub_7F830CE0+A8j
					; sub_7F830CE0+100j
		xor	esi, esi
		test	ebp, ebp
		jle	short loc_7F830E32

loc_7F830DEE:				; CODE XREF: sub_7F830CE0+150j
		mov	eax, [ebx]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_7F830E29
		test	byte ptr [edi],	1
		jz	short loc_7F830E29
		push	eax		; hFile
		call	ds:GetFileType
		test	eax, eax
		jz	short loc_7F830E29
		mov	eax, esi
		mov	ecx, esi
		and	eax, 0FFFFFFE7h
		and	ecx, 1Fh
		sar	eax, 3
		shl	ecx, 2
		mov	edx, dword_7F835020[eax]
		mov	eax, [ebx]
		lea	ecx, [ecx+ecx*8]
		add	ecx, edx
		mov	[ecx], eax
		mov	dl, [edi]
		mov	[ecx+4], dl

loc_7F830E29:				; CODE XREF: sub_7F830CE0+113j
					; sub_7F830CE0+118j ...
		inc	esi
		inc	edi
		add	ebx, 4
		cmp	esi, ebp
		jl	short loc_7F830DEE

loc_7F830E32:				; CODE XREF: sub_7F830CE0+77j
					; sub_7F830CE0+82j ...
		xor	esi, esi
		xor	edi, edi

loc_7F830E36:				; CODE XREF: sub_7F830CE0+1C5j
		mov	ebx, dword_7F835020
		add	ebx, esi
		cmp	dword ptr [ebx], 0FFFFFFFFh
		jnz	short loc_7F830E9A
		mov	eax, 0FFFFFFF6h
		test	esi, esi
		mov	byte ptr [ebx+4], 81h
		jz	short loc_7F830E5E
		lea	eax, [edi-1]
		cmp	eax, 1
		mov	eax, 0FFFFFFF5h
		adc	eax, 0FFFFFFFFh

loc_7F830E5E:				; CODE XREF: sub_7F830CE0+16Ej
		push	eax		; nStdHandle
		call	ds:GetStdHandle
		cmp	eax, 0FFFFFFFFh
		mov	ebp, eax
		jz	short loc_7F830E94
		push	ebp		; hFile
		call	ds:GetFileType
		test	eax, eax
		jz	short loc_7F830E94
		and	eax, 0FFh
		mov	[ebx], ebp
		cmp	eax, 2
		jnz	short loc_7F830E89
		or	byte ptr [ebx+4], 40h
		jmp	short loc_7F830E9E
; ---------------------------------------------------------------------------

loc_7F830E89:				; CODE XREF: sub_7F830CE0+1A1j
		cmp	eax, 3
		jnz	short loc_7F830E9E
		or	byte ptr [ebx+4], 8
		jmp	short loc_7F830E9E
; ---------------------------------------------------------------------------

loc_7F830E94:				; CODE XREF: sub_7F830CE0+18Aj
					; sub_7F830CE0+195j
		or	byte ptr [ebx+4], 40h
		jmp	short loc_7F830E9E
; ---------------------------------------------------------------------------

loc_7F830E9A:				; CODE XREF: sub_7F830CE0+161j
		or	byte ptr [ebx+4], 80h

loc_7F830E9E:				; CODE XREF: sub_7F830CE0+1A7j
					; sub_7F830CE0+1ACj ...
		add	esi, 24h
		inc	edi
		cmp	esi, 6Ch
		jl	short loc_7F830E36
		mov	eax, uNumber
		push	eax		; uNumber
		call	ds:SetHandleCount
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 44h
		retn
sub_7F830CE0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F830EC0	proc near		; CODE XREF: sub_7F830310:loc_7F83042Ap
		push	ebx
		push	esi
		push	edi
		mov	esi, offset dword_7F835020
		push	ebp
		mov	edi, ds:DeleteCriticalSection

loc_7F830ECF:				; CODE XREF: sub_7F830EC0+4Ej
		mov	ebx, [esi]
		test	ebx, ebx
		jz	short loc_7F830F05
		lea	eax, [ebx+480h]
		cmp	eax, ebx
		jbe	short loc_7F830EFA
		xor	ebp, ebp

loc_7F830EE1:				; CODE XREF: sub_7F830EC0+38j
		cmp	[ebx+8], ebp
		jz	short loc_7F830EEC
		lea	eax, [ebx+0Ch]
		push	eax		; lpCriticalSection
		call	edi ; DeleteCriticalSection

loc_7F830EEC:				; CODE XREF: sub_7F830EC0+24j
		add	ebx, 24h
		mov	eax, [esi]
		add	eax, 480h
		cmp	eax, ebx
		ja	short loc_7F830EE1

loc_7F830EFA:				; CODE XREF: sub_7F830EC0+1Dj
		mov	eax, [esi]
		push	eax		; lpMem
		call	sub_7F8304A0
		add	esp, 4

loc_7F830F05:				; CODE XREF: sub_7F830EC0+13j
		add	esi, 4
		cmp	esi, offset hHeap
		jb	short loc_7F830ECF
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F830EC0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F830F20	proc near		; CODE XREF: sub_7F830310+DDp

var_4		= dword	ptr -4

		sub	esp, 4
		mov	edx, lpMem
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	ebp
		cmp	byte ptr [edx],	0
		jz	short loc_7F830F4E

loc_7F830F34:				; CODE XREF: sub_7F830F20+2Cj
		cmp	byte ptr [edx],	3Dh
		jz	short loc_7F830F3A
		inc	esi

loc_7F830F3A:				; CODE XREF: sub_7F830F20+17j
		mov	edi, edx
		mov	ecx, 0FFFFFFFFh
		sub	eax, eax
		repne scasb
		not	ecx
		add	edx, ecx
		cmp	byte ptr [edx],	0
		jnz	short loc_7F830F34

loc_7F830F4E:				; CODE XREF: sub_7F830F20+12j
		lea	eax, ds:4[esi*4]
		push	eax
		call	sub_7F830930
		mov	dword_7F8399F8,	eax
		add	esp, 4
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F830F73
		push	9
		call	sub_7F830460
		add	esp, 4

loc_7F830F73:				; CODE XREF: sub_7F830F20+47j
		mov	ebp, lpMem
		mov	eax, ebp
		cmp	byte ptr [ebp+0], 0
		jz	short loc_7F830FDF

loc_7F830F81:				; CODE XREF: sub_7F830F20+BDj
		mov	edi, ebp
		mov	ecx, 0FFFFFFFFh
		sub	eax, eax
		repne scasb
		not	ecx
		mov	[esp+14h+var_4], ecx
		cmp	byte ptr [ebp+0], 3Dh
		jz	short loc_7F830FD5
		push	ecx
		call	sub_7F830930
		add	esp, 4
		mov	[ebx], eax
		test	eax, eax
		jnz	short loc_7F830FB1
		push	9
		call	sub_7F830460
		add	esp, 4

loc_7F830FB1:				; CODE XREF: sub_7F830F20+85j
		mov	edi, ebp
		mov	ecx, 0FFFFFFFFh
		sub	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	eax, ecx
		shr	ecx, 2
		mov	esi, edi
		mov	edi, [ebx]
		add	ebx, 4
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb

loc_7F830FD5:				; CODE XREF: sub_7F830F20+76j
		add	ebp, [esp+14h+var_4]
		cmp	byte ptr [ebp+0], 0
		jnz	short loc_7F830F81

loc_7F830FDF:				; CODE XREF: sub_7F830F20+5Fj
		mov	eax, lpMem
		push	eax		; lpMem
		call	sub_7F8304A0
		add	esp, 4
		mov	dword ptr [ebx], 0
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn
sub_7F830F20	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831000	proc near		; CODE XREF: sub_7F830310+D8p

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		sub	esp, 8
		push	esi
		push	edi
		push	104h		; nSize
		mov	esi, offset Filename
		push	esi		; lpFilename
		push	0		; hModule
		call	ds:GetModuleFileNameA
		mov	eax, dword_7F835130
		mov	dword_7F839A08,	esi
		cmp	byte ptr [eax],	0
		jz	short loc_7F83102E
		mov	esi, dword_7F835130

loc_7F83102E:				; CODE XREF: sub_7F831000+26j
		lea	eax, [esp+10h+var_4]
		lea	ecx, [esp+10h+var_8]
		push	eax
		push	ecx
		push	0
		push	0
		push	esi
		call	sub_7F8310A0
		mov	eax, [esp+24h+var_8]
		add	esp, 14h
		shl	eax, 2
		add	eax, [esp+10h+var_4]
		push	eax
		call	sub_7F830930
		add	esp, 4
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F831069
		push	8
		call	sub_7F830460
		add	esp, 4

loc_7F831069:				; CODE XREF: sub_7F831000+5Dj
		lea	eax, [esp+10h+var_4]
		lea	ecx, [esp+10h+var_8]
		mov	edx, [esp+10h+var_8]
		push	eax
		push	ecx
		lea	eax, [edi+edx*4]
		push	eax
		push	edi
		push	esi
		call	sub_7F8310A0
		mov	eax, [esp+24h+var_8]
		add	esp, 14h
		dec	eax
		mov	dword_7F8399F0,	edi
		pop	edi
		mov	dword_7F8399EC,	eax
		pop	esi
		add	esp, 8
		retn
sub_7F831000	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F8310A0	proc near		; CODE XREF: sub_7F831000+3Dp
					; sub_7F831000+7Dp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h

		mov	ecx, [esp+arg_10]
		push	ebx
		mov	edx, [esp+4+arg_C]
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		mov	eax, [esp+0Ch+arg_8]
		push	ebp
		cmp	[esp+10h+arg_4], 0
		mov	dword ptr [ecx], 0
		mov	dword ptr [edx], 1
		jz	short loc_7F8310D2
		mov	edx, [esp+10h+arg_4]
		add	[esp+10h+arg_4], 4
		mov	[edx], eax

loc_7F8310D2:				; CODE XREF: sub_7F8310A0+25j
		cmp	byte ptr [esi],	22h
		jz	short loc_7F83111D

loc_7F8310D7:				; CODE XREF: sub_7F8310A0+6Aj
		inc	dword ptr [ecx]
		test	eax, eax
		jz	short loc_7F8310E2
		mov	dl, [esi]
		mov	[eax], dl
		inc	eax

loc_7F8310E2:				; CODE XREF: sub_7F8310A0+3Bj
		mov	dl, [esi]
		inc	esi
		xor	ebx, ebx
		mov	bl, dl
		test	byte_7F839A49[ebx], 4
		jz	short loc_7F8310FE
		inc	dword ptr [ecx]
		test	eax, eax
		jz	short loc_7F8310FD
		mov	bl, [esi]
		mov	[eax], bl
		inc	eax

loc_7F8310FD:				; CODE XREF: sub_7F8310A0+56j
		inc	esi

loc_7F8310FE:				; CODE XREF: sub_7F8310A0+50j
		cmp	dl, 20h
		jz	short loc_7F83110C
		test	dl, dl
		jz	short loc_7F831110
		cmp	dl, 9
		jnz	short loc_7F8310D7

loc_7F83110C:				; CODE XREF: sub_7F8310A0+61j
		test	dl, dl
		jnz	short loc_7F831113

loc_7F831110:				; CODE XREF: sub_7F8310A0+65j
		dec	esi
		jmp	short loc_7F831163
; ---------------------------------------------------------------------------

loc_7F831113:				; CODE XREF: sub_7F8310A0+6Ej
		test	eax, eax
		jz	short loc_7F831163
		mov	byte ptr [eax-1], 0
		jmp	short loc_7F831163
; ---------------------------------------------------------------------------

loc_7F83111D:				; CODE XREF: sub_7F8310A0+35j
		inc	esi
		cmp	byte ptr [esi],	22h
		jz	short loc_7F831153

loc_7F831123:				; CODE XREF: sub_7F8310A0+B1j
		mov	bl, [esi]
		test	bl, bl
		jz	short loc_7F831153
		xor	edx, edx
		mov	dl, bl
		test	byte_7F839A49[edx], 4
		jz	short loc_7F831142
		inc	dword ptr [ecx]
		test	eax, eax
		jz	short loc_7F831142
		mov	dl, [esi]
		inc	esi
		mov	[eax], dl
		inc	eax

loc_7F831142:				; CODE XREF: sub_7F8310A0+94j
					; sub_7F8310A0+9Aj
		inc	dword ptr [ecx]
		test	eax, eax
		jz	short loc_7F83114D
		mov	dl, [esi]
		mov	[eax], dl
		inc	eax

loc_7F83114D:				; CODE XREF: sub_7F8310A0+A6j
		inc	esi
		cmp	byte ptr [esi],	22h
		jnz	short loc_7F831123

loc_7F831153:				; CODE XREF: sub_7F8310A0+81j
					; sub_7F8310A0+87j
		inc	dword ptr [ecx]
		test	eax, eax
		jz	short loc_7F83115D
		mov	byte ptr [eax],	0
		inc	eax

loc_7F83115D:				; CODE XREF: sub_7F8310A0+B7j
		cmp	byte ptr [esi],	22h
		jnz	short loc_7F831163
		inc	esi

loc_7F831163:				; CODE XREF: sub_7F8310A0+71j
					; sub_7F8310A0+75j ...
		xor	edi, edi

loc_7F831165:				; CODE XREF: sub_7F8310A0+1B1j
		cmp	byte ptr [esi],	0
		jz	loc_7F831256

loc_7F83116E:				; CODE XREF: sub_7F8310A0+DBj
		mov	dl, [esi]
		cmp	dl, 20h
		jz	short loc_7F83117A
		cmp	dl, 9
		jnz	short loc_7F83117D

loc_7F83117A:				; CODE XREF: sub_7F8310A0+D3j
		inc	esi
		jmp	short loc_7F83116E
; ---------------------------------------------------------------------------

loc_7F83117D:				; CODE XREF: sub_7F8310A0+D8j
		cmp	byte ptr [esi],	0
		jz	loc_7F831256
		cmp	[esp+10h+arg_4], 0
		jz	short loc_7F831198
		mov	edx, [esp+10h+arg_4]
		add	[esp+10h+arg_4], 4
		mov	[edx], eax

loc_7F831198:				; CODE XREF: sub_7F8310A0+EBj
		mov	edx, [esp+10h+arg_C]
		inc	dword ptr [edx]

loc_7F83119E:				; CODE XREF: sub_7F8310A0+18Aj
					; sub_7F8310A0+1A2j
		mov	ebx, 1
		xor	ebp, ebp
		cmp	byte ptr [esi],	5Ch
		jnz	short loc_7F8311B1

loc_7F8311AA:				; CODE XREF: sub_7F8310A0+10Fj
		inc	esi
		inc	ebp
		cmp	byte ptr [esi],	5Ch
		jz	short loc_7F8311AA

loc_7F8311B1:				; CODE XREF: sub_7F8310A0+108j
		cmp	byte ptr [esi],	22h
		jnz	short loc_7F8311DA
		test	ebp, 1
		jnz	short loc_7F8311D7
		test	edi, edi
		jz	short loc_7F8311CE
		lea	edx, [esi+1]
		cmp	byte ptr [edx],	22h
		jnz	short loc_7F8311CE
		mov	esi, edx
		jmp	short loc_7F8311D0
; ---------------------------------------------------------------------------

loc_7F8311CE:				; CODE XREF: sub_7F8310A0+120j
					; sub_7F8310A0+128j
		xor	ebx, ebx

loc_7F8311D0:				; CODE XREF: sub_7F8310A0+12Cj
		cmp	edi, 1
		sbb	edi, edi
		neg	edi

loc_7F8311D7:				; CODE XREF: sub_7F8310A0+11Cj
		shr	ebp, 1

loc_7F8311DA:				; CODE XREF: sub_7F8310A0+114j
		mov	edx, ebp
		dec	ebp
		test	edx, edx
		jz	short loc_7F8311F2

loc_7F8311E1:				; CODE XREF: sub_7F8310A0+150j
		test	eax, eax
		jz	short loc_7F8311E9
		mov	byte ptr [eax],	5Ch
		inc	eax

loc_7F8311E9:				; CODE XREF: sub_7F8310A0+143j
		mov	edx, ebp
		inc	dword ptr [ecx]
		dec	ebp
		test	edx, edx
		jnz	short loc_7F8311E1

loc_7F8311F2:				; CODE XREF: sub_7F8310A0+13Fj
		mov	dl, [esi]
		test	dl, dl
		jz	short loc_7F831247
		test	edi, edi
		jnz	short loc_7F831206
		cmp	dl, 20h
		jz	short loc_7F831247
		cmp	dl, 9
		jz	short loc_7F831247

loc_7F831206:				; CODE XREF: sub_7F8310A0+15Aj
		test	ebx, ebx
		jz	short loc_7F831241
		test	eax, eax
		jz	short loc_7F83122F
		xor	ebx, ebx
		mov	bl, dl
		test	byte_7F839A49[ebx], 4
		jz	short loc_7F831221
		mov	[eax], dl
		inc	esi
		inc	eax
		inc	dword ptr [ecx]

loc_7F831221:				; CODE XREF: sub_7F8310A0+179j
		mov	dl, [esi]
		inc	eax
		inc	esi
		mov	[eax-1], dl
		inc	dword ptr [ecx]
		jmp	loc_7F83119E
; ---------------------------------------------------------------------------

loc_7F83122F:				; CODE XREF: sub_7F8310A0+16Cj
		xor	ebx, ebx
		mov	bl, dl
		test	byte_7F839A49[ebx], 4
		jz	short loc_7F83123F
		inc	esi
		inc	dword ptr [ecx]

loc_7F83123F:				; CODE XREF: sub_7F8310A0+19Aj
		inc	dword ptr [ecx]

loc_7F831241:				; CODE XREF: sub_7F8310A0+168j
		inc	esi
		jmp	loc_7F83119E
; ---------------------------------------------------------------------------

loc_7F831247:				; CODE XREF: sub_7F8310A0+156j
					; sub_7F8310A0+15Fj ...
		test	eax, eax
		jz	short loc_7F83124F
		mov	byte ptr [eax],	0
		inc	eax

loc_7F83124F:				; CODE XREF: sub_7F8310A0+1A9j
		inc	dword ptr [ecx]
		jmp	loc_7F831165
; ---------------------------------------------------------------------------

loc_7F831256:				; CODE XREF: sub_7F8310A0+C8j
					; sub_7F8310A0+E0j
		cmp	[esp+10h+arg_4], 0
		jz	short loc_7F831267
		mov	edx, [esp+10h+arg_4]
		mov	dword ptr [edx], 0

loc_7F831267:				; CODE XREF: sub_7F8310A0+1BBj
		mov	edx, [esp+10h+arg_C]
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		inc	dword ptr [edx]
		retn
sub_7F8310A0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831280	proc near		; CODE XREF: sub_7F831590+2p

var_18		= dword	ptr -18h
CPInfo		= _cpinfo ptr -14h
arg_0		= dword	ptr  4

		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		push	ebp
		push	19h
		call	sub_7F830560
		mov	eax, [esp+2Ch+arg_0]
		add	esp, 4
		push	eax
		call	sub_7F8314B0
		add	esp, 4
		mov	ebp, eax
		cmp	ebp, dword_7F839B4C
		jnz	short loc_7F8312BC
		push	19h
		call	sub_7F8305D0
		add	esp, 4
		xor	eax, eax
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 18h
		retn
; ---------------------------------------------------------------------------

loc_7F8312BC:				; CODE XREF: sub_7F831280+26j
		test	ebp, ebp
		jnz	short loc_7F8312D9
		call	sub_7F831560
		push	19h
		call	sub_7F8305D0
		add	esp, 4
		xor	eax, eax
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 18h
		retn
; ---------------------------------------------------------------------------

loc_7F8312D9:				; CODE XREF: sub_7F831280+3Ej
		mov	[esp+28h+var_18], 0
		mov	eax, offset unk_7F839B70

loc_7F8312E6:				; CODE XREF: sub_7F831280+7Aj
		cmp	[eax], ebp
		jz	loc_7F831389
		add	eax, 30h
		inc	[esp+28h+var_18]
		cmp	eax, offset unk_7F839C60
		jb	short loc_7F8312E6
		lea	eax, [esp+28h+CPInfo]
		push	eax		; lpCPInfo
		push	ebp		; CodePage
		call	ds:GetCPInfo
		cmp	eax, 1
		jnz	loc_7F83146A
		mov	edi, offset unk_7F839A48
		xor	eax, eax
		mov	ecx, 40h
		rep stosd
		stosb
		cmp	[esp+28h+CPInfo.MaxCharSize], 1
		jbe	loc_7F83143B
		lea	esi, [esp+28h+CPInfo.LeadByte]
		cmp	[esp+28h+CPInfo.LeadByte], al
		jz	short loc_7F831361

loc_7F831335:				; CODE XREF: sub_7F831280+DFj
		mov	al, [esi+1]
		test	al, al
		jz	short loc_7F831361
		xor	ecx, ecx
		xor	edx, edx
		mov	cl, [esi]
		mov	dl, al
		cmp	edx, ecx
		jb	short loc_7F831359

loc_7F831348:				; CODE XREF: sub_7F831280+D7j
		or	byte_7F839A49[ecx], 4
		inc	ecx
		xor	eax, eax
		mov	al, [esi+1]
		cmp	eax, ecx
		jnb	short loc_7F831348

loc_7F831359:				; CODE XREF: sub_7F831280+C6j
		add	esi, 2
		cmp	byte ptr [esi],	0
		jnz	short loc_7F831335

loc_7F831361:				; CODE XREF: sub_7F831280+B3j
					; sub_7F831280+BAj
		mov	eax, 1

loc_7F831366:				; CODE XREF: sub_7F831280+F3j
		or	byte_7F839A49[eax], 8
		inc	eax
		cmp	eax, 0FFh
		jb	short loc_7F831366
		push	ebp
		mov	dword_7F839B4C,	ebp
		call	sub_7F831500
		add	esp, 4
		jmp	loc_7F831442
; ---------------------------------------------------------------------------

loc_7F831389:				; CODE XREF: sub_7F831280+68j
		mov	edi, offset unk_7F839A48
		xor	eax, eax
		mov	ecx, 40h
		rep stosd
		stosb
		mov	ecx, [esp+28h+var_18]
		lea	edx, [ecx+ecx*2]
		lea	edi, ds:0[edx*2]

loc_7F8313A6:				; CODE XREF: sub_7F831280+16Aj
		lea	ecx, [edi+eax]
		lea	esi, unk_7F839B80[ecx*8]
		cmp	byte ptr [esi],	0
		jz	short loc_7F8313E6

loc_7F8313B5:				; CODE XREF: sub_7F831280+164j
		mov	cl, [esi+1]
		test	cl, cl
		jz	short loc_7F8313E6
		xor	edx, edx
		xor	ebx, ebx
		mov	dl, [esi]
		mov	bl, cl
		cmp	ebx, edx
		jb	short loc_7F8313DE
		mov	cl, byte_7F839B68[eax]

loc_7F8313CE:				; CODE XREF: sub_7F831280+15Cj
		or	byte_7F839A49[edx], cl
		inc	edx
		xor	ebx, ebx
		mov	bl, [esi+1]
		cmp	ebx, edx
		jnb	short loc_7F8313CE

loc_7F8313DE:				; CODE XREF: sub_7F831280+146j
		add	esi, 2
		cmp	byte ptr [esi],	0
		jnz	short loc_7F8313B5

loc_7F8313E6:				; CODE XREF: sub_7F831280+133j
					; sub_7F831280+13Aj
		inc	eax
		cmp	eax, 4
		jb	short loc_7F8313A6
		push	ebp
		mov	dword_7F839B4C,	ebp
		call	sub_7F831500
		add	esp, 4
		mov	edx, offset dword_7F839B58
		mov	dword_7F839B50,	eax
		mov	eax, [esp+28h+var_18]
		shl	eax, 4
		mov	ebx, dword_7F839B78[eax+eax*2]
		push	19h
		lea	ecx, unk_7F839B74[eax+eax*2]
		mov	eax, [ecx]
		mov	ecx, [ecx+8]
		mov	[edx], eax
		mov	[edx+4], ebx
		mov	[edx+8], ecx
		call	sub_7F8305D0
		add	esp, 4
		xor	eax, eax
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 18h
		retn
; ---------------------------------------------------------------------------

loc_7F83143B:				; CODE XREF: sub_7F831280+A5j
		xor	eax, eax
		mov	dword_7F839B4C,	eax

loc_7F831442:				; CODE XREF: sub_7F831280+104j
		mov	ecx, offset dword_7F839B58
		push	19h
		mov	dword_7F839B50,	eax
		xor	eax, eax
		mov	[ecx], eax
		mov	[ecx+4], eax
		mov	[ecx+8], eax
		call	sub_7F8305D0
		add	esp, 4
		xor	eax, eax
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 18h
		retn
; ---------------------------------------------------------------------------

loc_7F83146A:				; CODE XREF: sub_7F831280+8Bj
		cmp	dword_7F839B64,	0
		jz	short loc_7F83148C
		call	sub_7F831560
		push	19h
		call	sub_7F8305D0
		add	esp, 4
		xor	eax, eax
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 18h
		retn
; ---------------------------------------------------------------------------

loc_7F83148C:				; CODE XREF: sub_7F831280+1F1j
		push	19h
		call	sub_7F8305D0
		add	esp, 4
		mov	eax, 0FFFFFFFFh
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 18h
		retn
sub_7F831280	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F8314B0	proc near		; CODE XREF: sub_7F831280+16p

arg_0		= dword	ptr  4

		mov	dword_7F839B64,	0
		mov	eax, [esp+arg_0]
		cmp	eax, 0FFFFFFFEh
		jnz	short loc_7F8314D3
		mov	dword_7F839B64,	1
		jmp	ds:GetOEMCP
; ---------------------------------------------------------------------------

loc_7F8314D3:				; CODE XREF: sub_7F8314B0+11j
		cmp	eax, 0FFFFFFFDh
		jnz	short loc_7F8314E8
		mov	dword_7F839B64,	1
		jmp	ds:GetACP
; ---------------------------------------------------------------------------

loc_7F8314E8:				; CODE XREF: sub_7F8314B0+26j
		cmp	eax, 0FFFFFFFCh
		jnz	short locret_7F8314FC
		mov	dword_7F839B64,	1
		mov	eax, dword_7F8399D0

locret_7F8314FC:			; CODE XREF: sub_7F8314B0+3Bj
		retn
sub_7F8314B0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831500	proc near		; CODE XREF: sub_7F831280+FCp
					; sub_7F831280+173p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		sub	eax, 3A4h	; switch 19 cases
		cmp	eax, 12h
		ja	short loc_7F83151D ; jumptable 7F831516	default	case
		xor	ecx, ecx
		mov	cl, ds:byte_7F83154C[eax]
		jmp	ds:off_7F831538[ecx*4] ; switch	jump
; ---------------------------------------------------------------------------

loc_7F83151D:				; CODE XREF: sub_7F831500+Cj
					; sub_7F831500+16j
					; DATA XREF: ...
		xor	eax, eax	; jumptable 7F831516 default case
		retn
; ---------------------------------------------------------------------------

loc_7F831520:				; CODE XREF: sub_7F831500+16j
					; DATA XREF: .text:off_7F831538o
		mov	eax, 411h	; jumptable 7F831516 case 932
		retn
; ---------------------------------------------------------------------------

loc_7F831526:				; CODE XREF: sub_7F831500+16j
					; DATA XREF: .text:off_7F831538o
		mov	eax, 804h	; jumptable 7F831516 case 936
		retn
; ---------------------------------------------------------------------------

loc_7F83152C:				; CODE XREF: sub_7F831500+16j
					; DATA XREF: .text:off_7F831538o
		mov	eax, 412h	; jumptable 7F831516 case 949
		retn
; ---------------------------------------------------------------------------

loc_7F831532:				; CODE XREF: sub_7F831500+16j
					; DATA XREF: .text:off_7F831538o
		mov	eax, 404h	; jumptable 7F831516 case 950
		retn
sub_7F831500	endp

; ---------------------------------------------------------------------------
off_7F831538	dd offset loc_7F831520	; DATA XREF: sub_7F831500+16r
		dd offset loc_7F831526	; jump table for switch	statement
		dd offset loc_7F83152C
		dd offset loc_7F831532
		dd offset loc_7F83151D
byte_7F83154C	db	0,     4,     4,     4 ; DATA XREF: sub_7F831500+10r
		db	1,     4,     4,     4 ; indirect table	for switch statement
		db	4,     4,     4,     4
		db	4,     4,     4,     4
		db	4,     2,     3
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831560	proc near		; CODE XREF: sub_7F831280+40p
					; sub_7F831280+1F3p
		push	edi
		xor	eax, eax
		mov	edi, offset unk_7F839A48
		mov	ecx, 40h
		rep stosd
		stosb
		mov	dword_7F839B58,	eax
		mov	ecx, offset dword_7F839B58
		pop	edi
		mov	dword_7F839B4C,	eax
		mov	dword_7F839B50,	eax
		mov	[ecx+4], eax
		mov	[ecx+8], eax
		retn
sub_7F831560	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831590	proc near		; CODE XREF: sub_7F830310+D3p
		push	0FFFFFFFDh
		call	sub_7F831280
		add	esp, 4
		retn
sub_7F831590	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F8315A0	proc near		; CODE XREF: sub_7F830310+B7p

var_4		= dword	ptr -4

		sub	esp, 4
		cmp	dword_7F839C64,	0
		push	ebx
		push	esi
		push	edi
		push	ebp
		jnz	short loc_7F8315F0
		mov	esi, ds:GetEnvironmentStringsW
		call	esi ; GetEnvironmentStringsW
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F8315CE
		mov	dword_7F839C64,	1
		mov	ebx, [esp+14h+var_4]
		jmp	short loc_7F8315FE
; ---------------------------------------------------------------------------

loc_7F8315CE:				; CODE XREF: sub_7F8315A0+1Cj
		call	ds:GetEnvironmentStrings
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F8315E6
		mov	dword_7F839C64,	2
		jmp	short loc_7F8315FE
; ---------------------------------------------------------------------------

loc_7F8315E6:				; CODE XREF: sub_7F8315A0+38j
		xor	eax, eax
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn
; ---------------------------------------------------------------------------

loc_7F8315F0:				; CODE XREF: sub_7F8315A0+Ej
		mov	edi, [esp+14h+var_4]
		mov	ebx, [esp+14h+var_4]
		mov	esi, ds:GetEnvironmentStringsW

loc_7F8315FE:				; CODE XREF: sub_7F8315A0+2Cj
					; sub_7F8315A0+44j
		cmp	dword_7F839C64,	1
		jnz	loc_7F8316AD
		test	edi, edi
		jnz	short loc_7F831621
		call	esi ; GetEnvironmentStringsW
		mov	edi, eax
		test	edi, edi
		jnz	short loc_7F831621
		xor	eax, eax
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn
; ---------------------------------------------------------------------------

loc_7F831621:				; CODE XREF: sub_7F8315A0+6Dj
					; sub_7F8315A0+75j
		cmp	word ptr [edi],	0
		mov	esi, edi
		jz	short loc_7F83163B

loc_7F831629:				; CODE XREF: sub_7F8315A0+90j
					; sub_7F8315A0+99j
		add	esi, 2
		cmp	word ptr [esi],	0
		jnz	short loc_7F831629
		add	esi, 2
		cmp	word ptr [esi],	0
		jnz	short loc_7F831629

loc_7F83163B:				; CODE XREF: sub_7F8315A0+87j
		sub	esi, edi
		push	0		; lpUsedDefaultChar
		sar	esi, 1
		push	0		; lpDefaultChar
		inc	esi
		push	0		; cbMultiByte
		push	0		; lpMultiByteStr
		push	esi		; cchWideChar
		push	edi		; lpWideCharStr
		push	0		; dwFlags
		push	0		; CodePage
		call	ds:WideCharToMultiByte
		mov	ebp, eax
		test	ebp, ebp
		jz	short loc_7F83169C
		push	ebp
		call	sub_7F830930
		add	esp, 4
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_7F83169C
		push	0		; lpUsedDefaultChar
		push	0		; lpDefaultChar
		push	ebp		; cbMultiByte
		push	ebx		; lpMultiByteStr
		push	esi		; cchWideChar
		push	edi		; lpWideCharStr
		push	0		; dwFlags
		push	0		; CodePage
		call	ds:WideCharToMultiByte
		test	eax, eax
		jnz	short loc_7F83168B
		push	ebx		; lpMem
		call	sub_7F8304A0
		add	esp, 4
		xor	ebx, ebx

loc_7F83168B:				; CODE XREF: sub_7F8315A0+DEj
		push	edi		; LPWCH
		call	ds:FreeEnvironmentStringsW
		mov	eax, ebx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn
; ---------------------------------------------------------------------------

loc_7F83169C:				; CODE XREF: sub_7F8315A0+B9j
					; sub_7F8315A0+C8j
		push	edi		; LPWCH
		call	ds:FreeEnvironmentStringsW
		xor	eax, eax
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn
; ---------------------------------------------------------------------------

loc_7F8316AD:				; CODE XREF: sub_7F8315A0+65j
		cmp	dword_7F839C64,	2
		jnz	short loc_7F831731
		test	ebx, ebx
		jnz	short loc_7F8316D0
		call	ds:GetEnvironmentStrings
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_7F8316D0
		xor	eax, eax
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn
; ---------------------------------------------------------------------------

loc_7F8316D0:				; CODE XREF: sub_7F8315A0+118j
					; sub_7F8315A0+124j
		mov	ebp, ebx
		cmp	byte ptr [ebx],	0
		jz	short loc_7F8316E5

loc_7F8316D7:				; CODE XREF: sub_7F8315A0+13Cj
					; sub_7F8315A0+143j
		inc	ebp
		cmp	byte ptr [ebp+0], 0
		jnz	short loc_7F8316D7
		inc	ebp
		cmp	byte ptr [ebp+0], 0
		jnz	short loc_7F8316D7

loc_7F8316E5:				; CODE XREF: sub_7F8315A0+135j
		sub	ebp, ebx
		inc	ebp
		push	ebp
		call	sub_7F830930
		mov	[esp+18h+var_4], eax
		add	esp, 4
		test	eax, eax
		jnz	short loc_7F83170A
		push	ebx		; LPCH
		call	ds:FreeEnvironmentStringsA
		xor	eax, eax
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn
; ---------------------------------------------------------------------------

loc_7F83170A:				; CODE XREF: sub_7F8315A0+157j
		mov	edi, [esp+14h+var_4]
		mov	esi, ebx
		mov	ecx, ebp
		shr	ecx, 2
		rep movsd
		mov	ecx, ebp
		push	ebx		; LPCH
		and	ecx, 3
		rep movsb
		call	ds:FreeEnvironmentStringsA
		mov	eax, [esp+14h+var_4]
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn
; ---------------------------------------------------------------------------

loc_7F831731:				; CODE XREF: sub_7F8315A0+114j
		xor	eax, eax
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn
sub_7F8315A0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831740	proc near		; CODE XREF: sub_7F830310+2Ep
					; sub_7F830310+57p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dword_7F8398CC,	eax
		retn
sub_7F831740	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831750	proc near		; CODE XREF: sub_7F830460:loc_7F830477p
		mov	eax, dword_7F8398C8
		cmp	eax, 1
		jz	short loc_7F831767
		test	eax, eax
		jnz	short locret_7F83178C
		cmp	dword_7F8398CC,	1
		jnz	short locret_7F83178C

loc_7F831767:				; CODE XREF: sub_7F831750+8j
		push	0FCh
		call	sub_7F831790
		add	esp, 4
		mov	eax, dword_7F839F58
		test	eax, eax
		jz	short loc_7F83177F
		call	eax ; dword_7F839F58

loc_7F83177F:				; CODE XREF: sub_7F831750+2Bj
		push	0FFh
		call	sub_7F831790
		add	esp, 4

locret_7F83178C:			; CODE XREF: sub_7F831750+Cj
					; sub_7F831750+15j
		retn
sub_7F831750	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831790	proc near		; CODE XREF: sub_7F830460+21p
					; sub_7F831750+1Cp ...

NumberOfBytesWritten= dword ptr	-1A8h
var_1A4		= byte ptr -1A4h
var_140		= byte ptr -140h
Filename	= byte ptr -104h
arg_0		= dword	ptr  4

		sub	esp, 1A8h
		xor	eax, eax
		mov	ecx, offset dword_7F839ED0
		push	ebx
		mov	edx, [esp+1ACh+arg_0]
		push	esi
		push	edi
		push	ebp

loc_7F8317A8:				; CODE XREF: sub_7F831790+26j
		cmp	[ecx], edx
		jz	short loc_7F8317B8
		add	ecx, 8
		inc	eax
		cmp	ecx, offset dword_7F839F58
		jb	short loc_7F8317A8

loc_7F8317B8:				; CODE XREF: sub_7F831790+1Aj
		cmp	dword_7F839ED0[eax*8], edx
		lea	ebx, ds:0[eax*8]
		jnz	loc_7F831973
		cmp	dword_7F8398C8,	1
		jz	loc_7F831938
		cmp	dword_7F8398C8,	0
		jnz	short loc_7F8317EF
		cmp	dword_7F8398CC,	1
		jz	loc_7F831938

loc_7F8317EF:				; CODE XREF: sub_7F831790+50j
		cmp	edx, 0FCh
		jz	loc_7F831973
		lea	eax, [esp+1B8h+Filename]
		push	104h		; nSize
		push	eax		; lpFilename
		mov	ebp, ds:GetModuleFileNameA
		push	0		; hModule
		call	ebp ; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_7F83182C
		mov	esi, offset aProgramNameUnk ; "<program	name unknown>"
		lea	edi, [esp+1B8h+Filename]
		mov	ecx, 5
		rep movsd
		movsw
		movsb

loc_7F83182C:				; CODE XREF: sub_7F831790+84j
		lea	ebp, [esp+1B8h+Filename]
		lea	edi, [esp+1B8h+Filename]
		mov	ecx, 0FFFFFFFFh
		sub	eax, eax
		repne scasb
		not	ecx
		cmp	ecx, 3Ch
		jbe	short loc_7F831870
		lea	edi, [esp+1B8h+Filename]
		mov	ecx, 0FFFFFFFFh
		sub	eax, eax
		push	3
		repne scasb
		not	ecx
		lea	ebp, [esp+ecx+1BCh+var_140]
		push	offset a___	; "..."
		push	ebp
		call	sub_7F831A70
		add	esp, 0Ch

loc_7F831870:				; CODE XREF: sub_7F831790+B8j
		mov	esi, offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: "
		lea	edi, [esp+1B8h+var_1A4]
		mov	ecx, 6
		rep movsd
		movsw
		mov	edi, ebp
		mov	ecx, 0FFFFFFFFh
		sub	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	edx, ecx
		mov	esi, edi
		mov	ecx, 0FFFFFFFFh
		lea	edi, [esp+1B8h+var_1A4]
		sub	eax, eax
		repne scasb
		dec	edi
		mov	ecx, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	edi, offset asc_7F839F84 ; "\n\n"
		mov	ecx, 0FFFFFFFFh
		sub	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	edx, ecx
		mov	esi, edi
		mov	ecx, 0FFFFFFFFh
		lea	edi, [esp+1B8h+var_1A4]
		sub	eax, eax
		repne scasb
		dec	edi
		mov	ecx, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	edi, off_7F839ED4[ebx]
		mov	ecx, 0FFFFFFFFh
		sub	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	edx, ecx
		lea	edi, [esp+1B8h+var_1A4]
		mov	ecx, 0FFFFFFFFh
		sub	eax, eax
		repne scasb
		dec	edi
		mov	ecx, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		push	12010h
		and	ecx, 3
		push	offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library"
		rep movsb
		lea	eax, [esp+1C0h+var_1A4]
		push	eax
		call	sub_7F831B40
		add	esp, 0Ch
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 1A8h
		retn
; ---------------------------------------------------------------------------

loc_7F831938:				; CODE XREF: sub_7F831790+43j
					; sub_7F831790+59j
		mov	eax, dword_7F835020
		mov	esi, [eax+48h]
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_7F83194F
		push	0FFFFFFF4h	; nStdHandle
		call	ds:GetStdHandle
		mov	esi, eax

loc_7F83194F:				; CODE XREF: sub_7F831790+1B3j
		mov	edx, off_7F839ED4[ebx]
		push	0		; lpOverlapped
		lea	eax, [esp+1BCh+NumberOfBytesWritten]
		mov	edi, edx
		push	eax		; lpNumberOfBytesWritten
		mov	ecx, 0FFFFFFFFh
		sub	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx		; nNumberOfBytesToWrite
		push	edx		; lpBuffer
		push	esi		; hFile
		call	ds:WriteFile

loc_7F831973:				; CODE XREF: sub_7F831790+36j
					; sub_7F831790+65j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 1A8h
		retn
sub_7F831790	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831980	proc near		; DATA XREF: .data:7F83300Co
		cmp	dword ptr Caption+40h, 0
		push	esi
		jnz	short loc_7F831996
		mov	dword ptr Caption+40h, 200h
		jmp	short loc_7F8319A9
; ---------------------------------------------------------------------------

loc_7F831996:				; CODE XREF: sub_7F831980+8j
		cmp	dword ptr Caption+40h, 14h
		jge	short loc_7F8319A9
		mov	dword ptr Caption+40h, 14h

loc_7F8319A9:				; CODE XREF: sub_7F831980+14j
					; sub_7F831980+1Dj
		push	4
		mov	eax, dword ptr Caption+40h
		push	eax
		call	sub_7F831AE0
		add	esp, 8
		mov	dword ptr Caption+44h, eax
		test	eax, eax
		jnz	short loc_7F8319EB
		mov	dword ptr Caption+40h, 14h
		push	4
		push	14h
		call	sub_7F831AE0
		add	esp, 8
		mov	dword ptr Caption+44h, eax
		test	eax, eax
		jnz	short loc_7F8319EB
		push	1Ah
		call	sub_7F830460
		add	esp, 4

loc_7F8319EB:				; CODE XREF: sub_7F831980+40j
					; sub_7F831980+5Fj
		mov	ecx, offset off_7F839FC0
		xor	eax, eax

loc_7F8319F2:				; CODE XREF: sub_7F831980+85j
		mov	edx, dword ptr Caption+44h
		add	eax, 4
		mov	[edx+eax-4], ecx
		add	ecx, 20h
		cmp	eax, 50h
		jl	short loc_7F8319F2
		xor	edx, edx
		mov	esi, offset unk_7F839FD0

loc_7F831A0E:				; CODE XREF: sub_7F831980+C3j
		mov	eax, edx
		mov	ecx, edx
		and	eax, 0FFFFFFE7h
		and	ecx, 1Fh
		sar	eax, 3
		shl	ecx, 2
		mov	eax, dword_7F835020[eax]
		lea	ecx, [ecx+ecx*8]
		mov	eax, [eax+ecx]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_7F831A33
		test	eax, eax
		jnz	short loc_7F831A39

loc_7F831A33:				; CODE XREF: sub_7F831980+ADj
		mov	dword ptr [esi], 0FFFFFFFFh

loc_7F831A39:				; CODE XREF: sub_7F831980+B1j
		add	esi, 20h
		inc	edx
		cmp	esi, offset unk_7F83A030
		jb	short loc_7F831A0E
		pop	esi
		retn
sub_7F831980	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831A50	proc near		; DATA XREF: .data:7F833018o
		call	sub_7F831D30
		cmp	byte_7F839A10, 0
		jz	short locret_7F831A63
		jmp	sub_7F831BE0
; ---------------------------------------------------------------------------

locret_7F831A63:			; CODE XREF: sub_7F831A50+Cj
		retn
sub_7F831A50	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

sub_7F831A70	proc near		; CODE XREF: sub_7F831790+D8p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		mov	edi, [ebp+arg_0]
		mov	esi, [ebp+arg_4]
		mov	edx, edi
		mov	ecx, [ebp+arg_8]
		jecxz	short loc_7F831A8E

loc_7F831A82:				; CODE XREF: sub_7F831A70+18j
		lodsb
		or	al, al
		jz	short loc_7F831A8A
		stosb
		loop	loc_7F831A82

loc_7F831A8A:				; CODE XREF: sub_7F831A70+15j
		xor	al, al
		rep stosb

loc_7F831A8E:				; CODE XREF: sub_7F831A70+10j
		mov	eax, edx
		pop	esi
		pop	edi
		leave
		retn
sub_7F831A70	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831AA0	proc near		; CODE XREF: sub_7F830950+2Fp
					; sub_7F831AE0+3Cp

arg_0		= dword	ptr  4

		push	9
		call	sub_7F830560
		add	esp, 4
		mov	eax, dword_7F833F14
		test	eax, eax
		jz	short loc_7F831AD1
		mov	ecx, [esp+arg_0]
		push	ecx
		call	eax ; dword_7F833F14
		add	esp, 4
		test	eax, eax
		jz	short loc_7F831AD1
		push	9
		call	sub_7F8305D0
		add	esp, 4
		mov	eax, 1
		retn
; ---------------------------------------------------------------------------

loc_7F831AD1:				; CODE XREF: sub_7F831AA0+11j
					; sub_7F831AA0+1Fj
		push	9
		call	sub_7F8305D0
		add	esp, 4
		xor	eax, eax
		retn
sub_7F831AA0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831AE0	proc near		; CODE XREF: sub_7F8309B0+1Ep
					; sub_7F830A60+20p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		imul	edi, [esp+8+arg_0]
		test	edi, edi
		jnz	short loc_7F831AF4
		mov	edi, 1

loc_7F831AF4:				; CODE XREF: sub_7F831AE0+Dj
		mov	esi, ds:HeapAlloc
		mov	eax, hHeap

loc_7F831AFF:				; CODE XREF: sub_7F831AE0+4Bj
		cmp	edi, 0FFFFFFE0h
		jbe	short loc_7F831B08
		xor	eax, eax
		jmp	short loc_7F831B0E
; ---------------------------------------------------------------------------

loc_7F831B08:				; CODE XREF: sub_7F831AE0+22j
		push	edi		; dwBytes
		push	8		; dwFlags
		push	eax		; hHeap
		call	esi ; HeapAlloc

loc_7F831B0E:				; CODE XREF: sub_7F831AE0+26j
		test	eax, eax
		jnz	short loc_7F831B2F
		cmp	dword_7F83A244,	0
		jz	short loc_7F831B2F
		push	edi
		call	sub_7F831AA0
		add	esp, 4
		test	eax, eax
		mov	eax, hHeap
		jnz	short loc_7F831AFF
		xor	eax, eax

loc_7F831B2F:				; CODE XREF: sub_7F831AE0+30j
					; sub_7F831AE0+39j
		pop	edi
		pop	esi
		retn
sub_7F831AE0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831B40	proc near		; CODE XREF: sub_7F831790+195p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		cmp	dword_7F83A4E8,	esi
		jnz	short loc_7F831B8F
		push	offset aUser32_dll ; "user32.dll"
		call	ds:LoadLibraryA
		mov	edi, eax
		test	edi, edi
		jz	short loc_7F831BCC
		push	offset aMessageboxa ; "MessageBoxA"
		mov	ebx, ds:GetProcAddress
		push	edi		; hModule
		call	ebx ; GetProcAddress
		mov	dword_7F83A4E8,	eax
		test	eax, eax
		jz	short loc_7F831BCC
		push	offset aGetactivewindo ; "GetActiveWindow"
		push	edi		; hModule
		call	ebx ; GetProcAddress
		push	offset aGetlastactivep ; "GetLastActivePopup"
		mov	dword_7F83A4EC,	eax
		push	edi		; hModule
		call	ebx ; GetProcAddress
		mov	dword_7F83A4F0,	eax

loc_7F831B8F:				; CODE XREF: sub_7F831B40+Bj
		mov	eax, dword_7F83A4EC
		test	eax, eax
		jz	short loc_7F831B9C
		call	eax ; dword_7F83A4EC
		mov	esi, eax

loc_7F831B9C:				; CODE XREF: sub_7F831B40+56j
		test	esi, esi
		jz	short loc_7F831BB2
		cmp	dword_7F83A4F0,	0
		jz	short loc_7F831BB2
		push	esi
		call	dword_7F83A4F0
		mov	esi, eax

loc_7F831BB2:				; CODE XREF: sub_7F831B40+5Ej
					; sub_7F831B40+67j
		mov	eax, [esp+0Ch+arg_8]
		mov	ecx, [esp+0Ch+arg_4]
		mov	edx, [esp+0Ch+arg_0]
		push	eax
		push	ecx
		push	edx
		push	esi
		call	dword_7F83A4E8
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_7F831BCC:				; CODE XREF: sub_7F831B40+1Cj
					; sub_7F831B40+33j
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F831B40	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831BE0	proc near		; CODE XREF: sub_7F831A50+Ej
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	ebp
		mov	edi, 3
		push	2
		call	sub_7F830560
		add	esp, 4
		cmp	dword ptr Caption+40h, edi
		jle	short loc_7F831C67
		mov	ebp, 0Ch
		mov	ebx, ds:DeleteCriticalSection

loc_7F831C08:				; CODE XREF: sub_7F831BE0+85j
		mov	eax, dword ptr Caption+44h
		mov	eax, [eax+ebp]
		test	eax, eax
		jz	short loc_7F831C5B
		test	byte ptr [eax+0Ch], 83h
		jz	short loc_7F831C29
		push	eax
		call	sub_7F831E00
		add	esp, 4
		cmp	eax, 0FFFFFFFFh
		jz	short loc_7F831C29
		inc	esi

loc_7F831C29:				; CODE XREF: sub_7F831BE0+38j
					; sub_7F831BE0+46j
		cmp	ebp, 50h
		jl	short loc_7F831C5B
		mov	eax, dword ptr Caption+44h
		mov	eax, [eax+ebp]
		add	eax, 20h
		push	eax		; lpCriticalSection
		call	ebx ; DeleteCriticalSection
		mov	ecx, dword ptr Caption+44h
		mov	edx, [ecx+ebp]
		push	edx		; lpMem
		call	sub_7F8304A0
		add	esp, 4
		mov	ecx, dword ptr Caption+44h
		mov	dword ptr [ecx+ebp], 0

loc_7F831C5B:				; CODE XREF: sub_7F831BE0+32j
					; sub_7F831BE0+4Cj
		add	ebp, 4
		inc	edi
		cmp	edi, dword ptr Caption+40h
		jl	short loc_7F831C08

loc_7F831C67:				; CODE XREF: sub_7F831BE0+1Bj
		push	2
		call	sub_7F8305D0
		add	esp, 4
		mov	eax, esi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F831BE0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831C80	proc near		; CODE XREF: sub_7F831D40+50p
					; sub_7F831D40+69p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	esi
		call	sub_7F831CC0
		add	esp, 4
		test	eax, eax
		jz	short loc_7F831C99
		mov	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_7F831C99:				; CODE XREF: sub_7F831C80+10j
		test	byte ptr [esi+0Dh], 40h
		jz	short loc_7F831CB8
		mov	eax, [esi+10h]
		push	eax
		call	sub_7F831EA0
		add	esp, 4
		cmp	eax, 1
		mov	eax, 0
		pop	esi
		adc	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------

loc_7F831CB8:				; CODE XREF: sub_7F831C80+1Dj
		xor	eax, eax
		pop	esi
		retn
sub_7F831C80	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831CC0	proc near		; CODE XREF: sub_7F831C80+6p
					; sub_7F831E40+12p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		xor	edi, edi
		mov	eax, [esi+0Ch]
		mov	ecx, eax
		and	cl, 3
		cmp	cl, 2
		jnz	short loc_7F831D12
		test	eax, 108h
		jz	short loc_7F831D12
		mov	eax, [esi+8]
		mov	ebx, [esi]
		sub	ebx, eax
		test	ebx, ebx
		jle	short loc_7F831D12
		push	ebx
		push	eax
		mov	eax, [esi+10h]
		push	eax
		call	sub_7F831F50
		add	esp, 0Ch
		cmp	eax, ebx
		jnz	short loc_7F831D09
		mov	eax, [esi+0Ch]
		test	al, 80h
		jz	short loc_7F831D12
		and	eax, 0FFFFFFFDh
		mov	[esi+0Ch], eax
		jmp	short loc_7F831D12
; ---------------------------------------------------------------------------

loc_7F831D09:				; CODE XREF: sub_7F831CC0+38j
		or	dword ptr [esi+0Ch], 20h
		mov	edi, 0FFFFFFFFh

loc_7F831D12:				; CODE XREF: sub_7F831CC0+14j
					; sub_7F831CC0+1Bj ...
		mov	eax, [esi+8]
		mov	[esi], eax
		mov	eax, edi
		mov	dword ptr [esi+4], 0
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F831CC0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831D30	proc near		; CODE XREF: sub_7F831A50p
		push	1
		call	sub_7F831D40
		add	esp, 4
		retn
sub_7F831D30	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831D40	proc near		; CODE XREF: sub_7F831D30+2p

var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		sub	esp, 4
		push	ebx
		push	esi
		push	edi
		push	ebp
		xor	edi, edi
		push	2
		xor	esi, esi
		xor	ebx, ebx
		mov	[esp+18h+var_4], edi
		call	sub_7F830560
		mov	ebp, [esp+18h+arg_0]
		add	esp, 4

loc_7F831D5F:				; CODE XREF: sub_7F831D40+9Aj
		mov	eax, dword ptr Caption+44h
		mov	eax, [eax+ebx]
		test	eax, eax
		jz	short loc_7F831DD0
		test	byte ptr [eax+0Ch], 83h
		jz	short loc_7F831DD0
		push	eax
		push	esi
		call	sub_7F830630
		add	esp, 8
		mov	eax, dword ptr Caption+44h
		mov	ecx, [eax+ebx]
		mov	eax, [ecx+0Ch]
		test	al, 83h
		jz	short loc_7F831DBE
		cmp	ebp, 1
		jnz	short loc_7F831DA0
		push	ecx
		call	sub_7F831C80
		add	esp, 4
		cmp	eax, 0FFFFFFFFh
		jz	short loc_7F831DBE
		inc	edi
		jmp	short loc_7F831DBE
; ---------------------------------------------------------------------------

loc_7F831DA0:				; CODE XREF: sub_7F831D40+4Dj
		test	ebp, ebp
		jnz	short loc_7F831DBE
		test	al, 2
		jz	short loc_7F831DBE
		push	ecx
		call	sub_7F831C80
		add	esp, 4
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_7F831DBE
		mov	[esp+14h+var_4], 0FFFFFFFFh

loc_7F831DBE:				; CODE XREF: sub_7F831D40+48j
					; sub_7F831D40+5Bj ...
		mov	eax, dword ptr Caption+44h
		mov	ecx, [eax+ebx]
		push	ecx
		push	esi
		call	sub_7F8306A0
		add	esp, 8

loc_7F831DD0:				; CODE XREF: sub_7F831D40+29j
					; sub_7F831D40+2Fj
		add	ebx, 4
		inc	esi
		cmp	ebx, 800h
		jl	short loc_7F831D5F
		push	2
		call	sub_7F8305D0
		add	esp, 4
		mov	eax, edi
		cmp	ebp, 1
		jz	short loc_7F831DF1
		mov	eax, [esp+14h+var_4]

loc_7F831DF1:				; CODE XREF: sub_7F831D40+ABj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4
		retn
sub_7F831D40	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831E00	proc near		; CODE XREF: sub_7F831BE0+3Bp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, 0FFFFFFFFh
		mov	esi, [esp+8+arg_0]
		test	byte ptr [esi+0Ch], 40h
		jz	short loc_7F831E1D
		mov	dword ptr [esi+0Ch], 0
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_7F831E1D:				; CODE XREF: sub_7F831E00+Fj
		push	esi
		call	sub_7F8305F0
		add	esp, 4
		push	esi
		call	sub_7F831E40
		add	esp, 4
		mov	edi, eax
		push	esi
		call	sub_7F830660
		add	esp, 4
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_7F831E00	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831E40	proc near		; CODE XREF: sub_7F831E00+27p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, 0FFFFFFFFh
		mov	esi, [esp+8+arg_0]
		test	byte ptr [esi+0Ch], 83h
		jz	short loc_7F831E93
		push	esi
		call	sub_7F831CC0
		add	esp, 4
		mov	edi, eax
		push	esi
		call	sub_7F832310
		add	esp, 4
		mov	eax, [esi+10h]
		push	eax
		call	sub_7F832210
		add	esp, 4
		test	eax, eax
		jge	short loc_7F831E7C
		mov	edi, 0FFFFFFFFh
		jmp	short loc_7F831E93
; ---------------------------------------------------------------------------

loc_7F831E7C:				; CODE XREF: sub_7F831E40+33j
		mov	eax, [esi+1Ch]
		test	eax, eax
		jz	short loc_7F831E93
		push	eax		; lpMem
		call	sub_7F8304A0
		mov	dword ptr [esi+1Ch], 0
		add	esp, 4

loc_7F831E93:				; CODE XREF: sub_7F831E40+Fj
					; sub_7F831E40+3Aj ...
		mov	dword ptr [esi+0Ch], 0
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_7F831E40	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831EA0	proc near		; CODE XREF: sub_7F831C80+23p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		cmp	uNumber, esi
		jbe	short loc_7F831F2E
		mov	eax, esi
		and	eax, 0FFFFFFE7h
		sar	eax, 3
		lea	ebx, dword_7F835020[eax]
		mov	eax, esi
		and	eax, 1Fh
		mov	ecx, [ebx]
		shl	eax, 2
		lea	edi, [eax+eax*8]
		test	byte ptr [ecx+edi+4], 1
		jz	short loc_7F831F2E
		push	esi
		call	sub_7F832440
		add	esp, 4
		mov	eax, [ebx]
		test	byte ptr [eax+edi+4], 1
		jz	short loc_7F831F0F
		push	esi
		mov	edi, 0
		call	sub_7F8323F0
		add	esp, 4
		push	eax		; hFile
		call	ds:FlushFileBuffers
		test	eax, eax
		jnz	short loc_7F831F04
		call	ds:GetLastError
		mov	edi, eax

loc_7F831F04:				; CODE XREF: sub_7F831EA0+5Aj
		test	edi, edi
		jz	short loc_7F831F1F
		call	sub_7F830060
		mov	[eax], edi

loc_7F831F0F:				; CODE XREF: sub_7F831EA0+41j
		mov	edi, 0FFFFFFFFh
		call	sub_7F830050
		mov	dword ptr [eax], 9

loc_7F831F1F:				; CODE XREF: sub_7F831EA0+66j
		push	esi
		call	sub_7F8324B0
		add	esp, 4
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_7F831F2E:				; CODE XREF: sub_7F831EA0+Dj
					; sub_7F831EA0+2Fj
		call	sub_7F830050
		pop	edi
		mov	dword ptr [eax], 9
		mov	eax, 0FFFFFFFFh
		pop	esi
		pop	ebx
		retn
sub_7F831EA0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F831F50	proc near		; CODE XREF: sub_7F831CC0+2Ep

arg_0		= dword	ptr  4
lpBuffer	= dword	ptr  8
nNumberOfBytesToWrite= dword ptr  0Ch

		push	esi
		push	edi
		mov	esi, [esp+8+arg_0]
		cmp	uNumber, esi
		jbe	short loc_7F831FAA
		mov	eax, esi
		mov	ecx, esi
		and	eax, 0FFFFFFE7h
		and	ecx, 1Fh
		sar	eax, 3
		shl	ecx, 2
		mov	edx, dword_7F835020[eax]
		lea	eax, [ecx+ecx*8]
		test	byte ptr [edx+eax+4], 1
		jz	short loc_7F831FAA
		push	esi
		call	sub_7F832440
		mov	eax, [esp+0Ch+nNumberOfBytesToWrite]
		mov	ecx, [esp+0Ch+lpBuffer]
		add	esp, 4
		push	eax		; nNumberOfBytesToWrite
		push	ecx		; lpBuffer
		push	esi		; int
		call	sub_7F831FD0
		add	esp, 0Ch
		mov	edi, eax
		push	esi
		call	sub_7F8324B0
		add	esp, 4
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_7F831FAA:				; CODE XREF: sub_7F831F50+Cj
					; sub_7F831F50+2Cj
		call	sub_7F830050
		mov	dword ptr [eax], 9
		call	sub_7F830060
		pop	edi
		mov	dword ptr [eax], 0
		mov	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_7F831F50	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_7F831FD0(int,	LPCVOID	lpBuffer, DWORD	nNumberOfBytesToWrite)
sub_7F831FD0	proc near		; CODE XREF: sub_7F831F50+42p

var_418		= dword	ptr -418h
NumberOfBytesWritten= dword ptr	-414h
var_410		= dword	ptr -410h
var_40C		= dword	ptr -40Ch
var_408		= dword	ptr -408h
Buffer		= byte ptr -404h
arg_0		= dword	ptr  4
lpBuffer	= dword	ptr  8
nNumberOfBytesToWrite= dword ptr  0Ch

		sub	esp, 418h
		push	ebx
		push	esi
		push	edi
		push	ebp
		xor	edi, edi
		mov	ebp, [esp+428h+nNumberOfBytesToWrite]
		mov	[esp+428h+var_408], edi
		cmp	ebp, edi
		jnz	short loc_7F831FF8
		xor	eax, eax
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 418h
		retn
; ---------------------------------------------------------------------------

loc_7F831FF8:				; CODE XREF: sub_7F831FD0+19j
		mov	edx, [esp+428h+arg_0]
		mov	eax, edx
		and	eax, 0FFFFFFE7h
		sar	eax, 3
		add	eax, offset dword_7F835020
		mov	[esp+428h+var_410], eax
		mov	eax, edx
		and	eax, 1Fh
		mov	ebx, [esp+428h+var_410]
		shl	eax, 2
		lea	ecx, [eax+eax*8]
		mov	eax, [ebx]
		mov	[esp+428h+var_40C], ecx
		test	byte ptr [eax+ecx+4], 20h
		jz	short loc_7F832039
		push	2		; dwMoveMethod
		push	0		; lDistanceToMove
		push	edx		; int
		call	sub_7F8324E0
		add	esp, 0Ch

loc_7F832039:				; CODE XREF: sub_7F831FD0+5Aj
		mov	eax, [esp+428h+var_410]
		mov	ecx, [esp+428h+var_40C]
		add	ecx, [eax]
		test	byte ptr [ecx+4], 80h
		jz	loc_7F8320D5
		mov	[esp+428h+var_418], 0
		mov	ebx, [esp+428h+lpBuffer]

loc_7F83205C:				; CODE XREF: sub_7F831FD0+101j
		mov	eax, ebx
		sub	eax, [esp+428h+lpBuffer]
		cmp	eax, ebp
		jnb	loc_7F83210E
		lea	esi, [esp+428h+Buffer]

loc_7F832071:				; CODE XREF: sub_7F831FD0+CAj
		mov	eax, ebx
		sub	eax, [esp+428h+lpBuffer]
		cmp	eax, ebp
		jnb	short loc_7F83209C
		mov	al, [ebx]
		inc	ebx
		cmp	al, 0Ah
		jnz	short loc_7F83208A
		mov	byte ptr [esi],	0Dh
		inc	edi
		inc	esi

loc_7F83208A:				; CODE XREF: sub_7F831FD0+B3j
		mov	[esi], al
		inc	esi
		mov	eax, esi
		lea	ecx, [esp+428h+Buffer]
		sub	eax, ecx
		cmp	eax, 400h
		jl	short loc_7F832071

loc_7F83209C:				; CODE XREF: sub_7F831FD0+ACj
		lea	eax, [esp+428h+Buffer]
		push	0		; lpOverlapped
		sub	esi, eax
		lea	ecx, [esp+42Ch+Buffer]
		lea	eax, [esp+42Ch+NumberOfBytesWritten]
		mov	edx, [esp+42Ch+var_410]
		push	eax		; lpNumberOfBytesWritten
		push	esi		; nNumberOfBytesToWrite
		push	ecx		; lpBuffer
		mov	eax, [edx]
		mov	ecx, [esp+438h+var_40C]
		mov	edx, [eax+ecx]
		push	edx		; hFile
		call	ds:WriteFile
		test	eax, eax
		jz	short loc_7F832104
		mov	eax, [esp+428h+NumberOfBytesWritten]
		add	[esp+428h+var_408], eax
		cmp	eax, esi
		jge	short loc_7F83205C
		jmp	short loc_7F83210E
; ---------------------------------------------------------------------------

loc_7F8320D5:				; CODE XREF: sub_7F831FD0+77j
		lea	eax, [esp+428h+NumberOfBytesWritten]
		push	0		; lpOverlapped
		mov	edx, [esp+42Ch+lpBuffer]
		push	eax		; lpNumberOfBytesWritten
		push	ebp		; nNumberOfBytesToWrite
		mov	ecx, [ecx]
		push	edx		; lpBuffer
		push	ecx		; hFile
		call	ds:WriteFile
		test	eax, eax
		jz	short loc_7F832104
		mov	[esp+428h+var_418], 0
		mov	eax, [esp+428h+NumberOfBytesWritten]
		mov	[esp+428h+var_408], eax
		jmp	short loc_7F83210E
; ---------------------------------------------------------------------------

loc_7F832104:				; CODE XREF: sub_7F831FD0+F5j
					; sub_7F831FD0+120j
		call	ds:GetLastError
		mov	[esp+428h+var_418], eax

loc_7F83210E:				; CODE XREF: sub_7F831FD0+97j
					; sub_7F831FD0+103j ...
		cmp	[esp+428h+var_408], 0
		jnz	loc_7F8321BA
		cmp	[esp+428h+var_418], 0
		jz	short loc_7F83216A
		cmp	[esp+428h+var_418], 5
		jnz	short loc_7F83214D
		call	sub_7F830050
		mov	dword ptr [eax], 9
		call	sub_7F830060
		mov	ecx, [esp+428h+var_418]
		pop	ebp
		pop	edi
		mov	[eax], ecx
		mov	eax, 0FFFFFFFFh
		pop	esi
		pop	ebx
		add	esp, 418h
		retn
; ---------------------------------------------------------------------------

loc_7F83214D:				; CODE XREF: sub_7F831FD0+155j
		mov	ecx, [esp+428h+var_418]
		push	ecx
		call	sub_7F82FFD0
		add	esp, 4
		mov	eax, 0FFFFFFFFh
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 418h
		retn
; ---------------------------------------------------------------------------

loc_7F83216A:				; CODE XREF: sub_7F831FD0+14Ej
		mov	eax, [esp+428h+var_410]
		mov	ecx, [esp+428h+var_40C]
		mov	edx, [eax]
		test	byte ptr [edx+ecx+4], 40h
		jz	short loc_7F832194
		mov	eax, [esp+428h+lpBuffer]
		cmp	byte ptr [eax],	1Ah
		jnz	short loc_7F832194
		xor	eax, eax
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 418h
		retn
; ---------------------------------------------------------------------------

loc_7F832194:				; CODE XREF: sub_7F831FD0+1A9j
					; sub_7F831FD0+1B5j
		call	sub_7F830050
		mov	dword ptr [eax], 1Ch
		call	sub_7F830060
		pop	ebp
		mov	dword ptr [eax], 0
		mov	eax, 0FFFFFFFFh
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 418h
		retn
; ---------------------------------------------------------------------------

loc_7F8321BA:				; CODE XREF: sub_7F831FD0+143j
		mov	eax, [esp+428h+var_408]
		pop	ebp
		sub	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 418h
		retn
sub_7F831FD0	endp

; ---------------------------------------------------------------------------
		align 10h
		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		mov	edi, [ebp+8]
		mov	edx, edi
		xor	eax, eax
		or	ecx, 0FFFFFFFFh
		repne scasb
		dec	edi
		mov	esi, edi
		mov	edi, [ebp+0Ch]
		push	edi
		mov	ecx, [ebp+10h]
		repne scasb
		jnz	short loc_7F8321F0
		inc	ecx

loc_7F8321F0:				; CODE XREF: .text:7F8321EDj
		sub	ecx, [ebp+10h]
		neg	ecx
		mov	edi, esi
		pop	esi
		rep movsb
		stosb
		mov	eax, edx
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F832210	proc near		; CODE XREF: sub_7F831E40+29p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, [esp+8+arg_0]
		cmp	uNumber, esi
		jbe	short loc_7F832260
		mov	eax, esi
		mov	ecx, esi
		and	eax, 0FFFFFFE7h
		and	ecx, 1Fh
		sar	eax, 3
		shl	ecx, 2
		mov	edx, dword_7F835020[eax]
		lea	eax, [ecx+ecx*8]
		test	byte ptr [edx+eax+4], 1
		jz	short loc_7F832260
		push	esi
		call	sub_7F832440
		add	esp, 4
		push	esi
		call	sub_7F832280
		add	esp, 4
		mov	edi, eax
		push	esi
		call	sub_7F8324B0
		add	esp, 4
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_7F832260:				; CODE XREF: sub_7F832210+Cj
					; sub_7F832210+2Cj
		call	sub_7F830050
		mov	dword ptr [eax], 9
		call	sub_7F830060
		pop	edi
		mov	dword ptr [eax], 0
		mov	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_7F832210	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F832280	proc near		; CODE XREF: sub_7F832210+38p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, [esp+8+arg_0]
		cmp	esi, 1
		jz	short loc_7F832290
		cmp	esi, 2
		jnz	short loc_7F8322AA

loc_7F832290:				; CODE XREF: sub_7F832280+9j
		push	2
		call	sub_7F8323F0
		add	esp, 4
		mov	edi, eax
		push	1
		call	sub_7F8323F0
		add	esp, 4
		cmp	edi, eax
		jz	short loc_7F8322C8

loc_7F8322AA:				; CODE XREF: sub_7F832280+Ej
		push	esi
		call	sub_7F8323F0
		add	esp, 4
		push	eax		; hObject
		call	ds:CloseHandle
		test	eax, eax
		jnz	short loc_7F8322C8
		call	ds:GetLastError
		mov	edi, eax
		jmp	short loc_7F8322CA
; ---------------------------------------------------------------------------

loc_7F8322C8:				; CODE XREF: sub_7F832280+28j
					; sub_7F832280+3Cj
		xor	edi, edi

loc_7F8322CA:				; CODE XREF: sub_7F832280+46j
		push	esi
		call	sub_7F832350
		add	esp, 4
		test	edi, edi
		jz	short loc_7F8322E8
		push	edi
		call	sub_7F82FFD0
		add	esp, 4
		mov	eax, 0FFFFFFFFh
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_7F8322E8:				; CODE XREF: sub_7F832280+55j
		mov	eax, esi
		and	esi, 1Fh
		shl	esi, 2
		and	eax, 0FFFFFFE7h
		sar	eax, 3
		pop	edi
		mov	ecx, dword_7F835020[eax]
		lea	eax, [esi+esi*8]
		pop	esi
		mov	byte ptr [ecx+eax+4], 0
		xor	eax, eax
		retn
sub_7F832280	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F832310	proc near		; CODE XREF: sub_7F831E40+1Dp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	short loc_7F832347
		test	al, 8
		jz	short loc_7F832347
		mov	eax, [esi+8]
		push	eax		; lpMem
		call	sub_7F8304A0
		add	esp, 4
		mov	dword ptr [esi], 0
		and	dword ptr [esi+0Ch], 0FFFFFBF7h
		mov	dword ptr [esi+8], 0
		mov	dword ptr [esi+4], 0

loc_7F832347:				; CODE XREF: sub_7F832310+Aj
					; sub_7F832310+Ej
		pop	esi
		retn
sub_7F832310	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F832350	proc near		; CODE XREF: sub_7F832280+4Bp

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		push	esi
		push	edi
		cmp	uNumber, ecx
		jbe	short loc_7F8323C3
		mov	eax, ecx
		and	eax, 0FFFFFFE7h
		sar	eax, 3
		lea	edi, dword_7F835020[eax]
		mov	eax, ecx
		and	eax, 1Fh
		shl	eax, 2
		lea	esi, [eax+eax*8]
		mov	eax, [edi]
		add	eax, esi
		test	byte ptr [eax+4], 1
		jz	short loc_7F8323C3
		cmp	dword ptr [eax], 0FFFFFFFFh
		jz	short loc_7F8323C3
		cmp	dword_7F8398CC,	1
		jnz	short loc_7F8323B5
		test	ecx, ecx
		jz	short loc_7F83239F
		cmp	ecx, 1
		jz	short loc_7F8323A5
		cmp	ecx, 2
		jz	short loc_7F8323AB
		jmp	short loc_7F8323B5
; ---------------------------------------------------------------------------

loc_7F83239F:				; CODE XREF: sub_7F832350+41j
		push	0
		push	0FFFFFFF6h
		jmp	short loc_7F8323AF
; ---------------------------------------------------------------------------

loc_7F8323A5:				; CODE XREF: sub_7F832350+46j
		push	0
		push	0FFFFFFF5h
		jmp	short loc_7F8323AF
; ---------------------------------------------------------------------------

loc_7F8323AB:				; CODE XREF: sub_7F832350+4Bj
		push	0		; hHandle
		push	0FFFFFFF4h	; nStdHandle

loc_7F8323AF:				; CODE XREF: sub_7F832350+53j
					; sub_7F832350+59j
		call	ds:SetStdHandle

loc_7F8323B5:				; CODE XREF: sub_7F832350+3Dj
					; sub_7F832350+4Dj
		mov	eax, [edi]
		pop	edi
		mov	dword ptr [eax+esi], 0FFFFFFFFh
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_7F8323C3:				; CODE XREF: sub_7F832350+Cj
					; sub_7F832350+2Fj ...
		call	sub_7F830050
		mov	dword ptr [eax], 9
		call	sub_7F830060
		pop	edi
		mov	dword ptr [eax], 0
		mov	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_7F832350	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F8323F0	proc near		; CODE XREF: sub_7F831EA0+49p
					; sub_7F832280+12p ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		cmp	uNumber, ecx
		jbe	short loc_7F83241E
		mov	eax, ecx
		and	ecx, 1Fh
		shl	ecx, 2
		and	eax, 0FFFFFFE7h
		sar	eax, 3
		lea	edx, [ecx+ecx*8]
		mov	eax, dword_7F835020[eax]
		add	eax, edx
		test	byte ptr [eax+4], 1
		jz	short loc_7F83241E
		mov	eax, [eax]
		retn
; ---------------------------------------------------------------------------

loc_7F83241E:				; CODE XREF: sub_7F8323F0+Aj
					; sub_7F8323F0+29j
		call	sub_7F830050
		mov	dword ptr [eax], 9
		call	sub_7F830060
		mov	dword ptr [eax], 0
		mov	eax, 0FFFFFFFFh
		retn
sub_7F8323F0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F832440	proc near		; CODE XREF: sub_7F831EA0+32p
					; sub_7F831F50+2Fp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	ebx
		push	esi
		mov	ecx, eax
		push	edi
		and	ecx, 0FFFFFFE7h
		sar	ecx, 3
		and	eax, 1Fh
		shl	eax, 2
		lea	edi, dword_7F835020[ecx]
		lea	esi, [eax+eax*8]
		mov	ebx, [edi]
		add	ebx, esi
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_7F83248F
		push	11h
		call	sub_7F830560
		add	esp, 4
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_7F832485
		lea	eax, [ebx+0Ch]
		push	eax		; lpCriticalSection
		call	ds:InitializeCriticalSection
		inc	dword ptr [ebx+8]

loc_7F832485:				; CODE XREF: sub_7F832440+36j
		push	11h
		call	sub_7F8305D0
		add	esp, 4

loc_7F83248F:				; CODE XREF: sub_7F832440+26j
		mov	eax, [edi]
		add	eax, esi
		add	eax, 0Ch
		push	eax		; lpCriticalSection
		call	ds:EnterCriticalSection
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_7F832440	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F8324B0	proc near		; CODE XREF: sub_7F831EA0+80p
					; sub_7F831F50+4Dp ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		mov	eax, ecx
		and	ecx, 1Fh
		shl	ecx, 2
		and	eax, 0FFFFFFE7h
		sar	eax, 3
		lea	edx, [ecx+ecx*8]
		mov	eax, dword_7F835020[eax]
		add	eax, edx
		add	eax, 0Ch
		push	eax		; lpCriticalSection
		call	ds:LeaveCriticalSection
		retn
sub_7F8324B0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_7F8324E0(int,	LONG lDistanceToMove, DWORD dwMoveMethod)
sub_7F8324E0	proc near		; CODE XREF: sub_7F831FD0+61p

arg_0		= dword	ptr  4
lDistanceToMove	= dword	ptr  8
dwMoveMethod	= dword	ptr  0Ch

		push	esi
		push	edi
		mov	esi, [esp+8+arg_0]
		push	esi
		call	sub_7F8323F0
		add	esp, 4
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_7F832507
		call	sub_7F830050
		pop	edi
		mov	dword ptr [eax], 9
		mov	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_7F832507:				; CODE XREF: sub_7F8324E0+12j
		mov	ecx, [esp+8+dwMoveMethod]
		mov	edx, [esp+8+lDistanceToMove]
		push	ecx		; dwMoveMethod
		push	0		; lpDistanceToMoveHigh
		push	edx		; lDistanceToMove
		push	eax		; hFile
		call	ds:SetFilePointer
		cmp	eax, 0FFFFFFFFh
		mov	edi, eax
		mov	eax, 0
		jnz	short loc_7F83252C
		call	ds:GetLastError

loc_7F83252C:				; CODE XREF: sub_7F8324E0+44j
		test	eax, eax
		jz	short loc_7F832541
		push	eax
		call	sub_7F82FFD0
		add	esp, 4
		mov	eax, 0FFFFFFFFh
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_7F832541:				; CODE XREF: sub_7F8324E0+4Ej
		mov	eax, esi
		and	esi, 1Fh
		shl	esi, 2
		and	eax, 0FFFFFFE7h
		sar	eax, 3
		mov	ecx, dword_7F835020[eax]
		lea	eax, [esi+esi*8]
		and	byte ptr [ecx+eax+4], 0FDh
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_7F8324E0	endp

; ---------------------------------------------------------------------------
		align 10h
		push	ebx
		push	esi
		mov	eax, [esp+18h]
		or	eax, eax
		jnz	short loc_7F832592
		mov	ecx, [esp+14h]
		mov	eax, [esp+10h]
		xor	edx, edx
		div	ecx
		mov	ebx, eax
		mov	eax, [esp+0Ch]
		div	ecx
		mov	edx, ebx
		jmp	short loc_7F8325D3
; ---------------------------------------------------------------------------

loc_7F832592:				; CODE XREF: .text:7F832578j
		mov	ecx, eax
		mov	ebx, [esp+14h]
		mov	edx, [esp+10h]
		mov	eax, [esp+0Ch]

loc_7F8325A0:				; CODE XREF: .text:7F8325AAj
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_7F8325A0
		div	ebx
		mov	esi, eax
		mul	dword ptr [esp+18h]
		mov	ecx, eax
		mov	eax, [esp+14h]
		mul	esi
		add	edx, ecx
		jb	short loc_7F8325CE
		cmp	edx, [esp+10h]
		ja	short loc_7F8325CE
		jb	short loc_7F8325CF
		cmp	eax, [esp+0Ch]
		jbe	short loc_7F8325CF

loc_7F8325CE:				; CODE XREF: .text:7F8325BEj
					; .text:7F8325C4j
		dec	esi

loc_7F8325CF:				; CODE XREF: .text:7F8325C6j
					; .text:7F8325CCj
		xor	edx, edx
		mov	eax, esi

loc_7F8325D3:				; CODE XREF: .text:7F832590j
		pop	esi
		pop	ebx
		retn	10h
; ---------------------------------------------------------------------------
		align 10h
		push	ebx
		mov	eax, [esp+14h]
		or	eax, eax
		jnz	short loc_7F832601
		mov	ecx, [esp+10h]
		mov	eax, [esp+0Ch]
		xor	edx, edx
		div	ecx
		mov	eax, [esp+8]
		div	ecx
		mov	eax, edx
		xor	edx, edx
		jmp	short loc_7F832651
; ---------------------------------------------------------------------------

loc_7F832601:				; CODE XREF: .text:7F8325E7j
		mov	ecx, eax
		mov	ebx, [esp+10h]
		mov	edx, [esp+0Ch]
		mov	eax, [esp+8]

loc_7F83260F:				; CODE XREF: .text:7F832619j
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_7F83260F
		div	ebx
		mov	ecx, eax
		mul	dword ptr [esp+14h]
		xchg	eax, ecx
		mul	dword ptr [esp+10h]
		add	edx, ecx
		jb	short loc_7F83263A
		cmp	edx, [esp+0Ch]
		ja	short loc_7F83263A
		jb	short loc_7F832642
		cmp	eax, [esp+8]
		jbe	short loc_7F832642

loc_7F83263A:				; CODE XREF: .text:7F83262Aj
					; .text:7F832630j
		sub	eax, [esp+10h]
		sbb	edx, [esp+14h]

loc_7F832642:				; CODE XREF: .text:7F832632j
					; .text:7F832638j
		sub	eax, [esp+8]
		sbb	edx, [esp+0Ch]
		neg	edx
		neg	eax
		sbb	edx, 0

loc_7F832651:				; CODE XREF: .text:7F8325FFj
		pop	ebx
		retn	10h
; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================


sub_7F832660	proc near		; DATA XREF: .data:7F83A5B0o
					; .data:7F83A5B4o ...
		push	2
		call	sub_7F830460
		add	esp, 4
		retn
sub_7F832660	endp

; ---------------------------------------------------------------------------
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION RtlUnwind. PRESS CTRL-NUMPAD+ TO EXPAND]
		align 10h
;
; Export directory for MMFMIG32.dll
;
		dd 0			; Characteristics
		dd 319D07CAh		; TimeDateStamp: Fri May 17 23:12:10 1996
		dw 0			; MajorVersion
		dw 0			; MinorVersion
		dd rva aMmfmig32_dll	; Name
		dd 1			; Base
		dd 8			; NumberOfFunctions
		dd 8			; NumberOfNames
		dd rva off_7F8326A8	; AddressOfFunctions
		dd rva off_7F8326C8	; AddressOfNames
		dd rva word_7F8326E8	; AddressOfNameOrdinals
;
; Export Address Table for MMFMIG32.dll
;
off_7F8326A8	dd rva MMFMIG_ProcessMMF@4, rva	HPProviderInit,	rva FOutsideDateRange@12
					; DATA XREF: .text:7F83269Co
		dd rva HrModifyNamesInMsg@4, rva ScGetPABMigrationContext@52
		dd rva ScMMFMigrateToMDB@48, rva ScMMFVerify@16, rva ScMigrateMMFPAB@32
;
; Export Names Table for MMFMIG32.dll
;
off_7F8326C8	dd rva aFoutsidedatera,	rva aHpproviderinit, rva aHrmodifynamesi
					; DATA XREF: .text:7F8326A0o
		dd rva aMmfmig_process,	rva aScgetpabmigrat, rva aScmmfmigrateto ; "FOutsideDateRange@12"
		dd rva aScmmfverify@16,	rva aScmigratemmfpa
;
; Export Ordinals Table	for MMFMIG32.dll
;
word_7F8326E8	dw 2, 1, 3, 0, 4, 5, 6,	7 ; DATA XREF: .text:7F8326A4o
aMmfmig32_dll	db 'MMFMIG32.dll',0     ; DATA XREF: .text:7F83268Co
aFoutsidedatera	db 'FOutsideDateRange@12',0 ; DATA XREF: .text:off_7F8326C8o
aHpproviderinit	db 'HPProviderInit',0   ; DATA XREF: .text:off_7F8326C8o
aHrmodifynamesi	db 'HrModifyNamesInMsg@4',0 ; DATA XREF: .text:off_7F8326C8o
aMmfmig_process	db 'MMFMIG_ProcessMMF@4',0 ; DATA XREF: .text:off_7F8326C8o
aScgetpabmigrat	db 'ScGetPABMigrationContext@52',0 ; DATA XREF: .text:off_7F8326C8o
aScmmfmigrateto	db 'ScMMFMigrateToMDB@48',0 ; DATA XREF: .text:off_7F8326C8o
aScmmfverify@16	db 'ScMMFVerify@16',0   ; DATA XREF: .text:off_7F8326C8o
aScmigratemmfpa	db 'ScMigrateMMFPAB@32',0 ; DATA XREF: .text:off_7F8326C8o
		align 80h
		dd 200h	dup(?)
_text		ends

; Section 2. (virtual address 00033000)
; Virtual size			: 000075C8 (  30152.)
; Section size in file		: 00007600 (  30208.)
; Offset to raw	data for section: 00031C00
; 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 7F833000h
unk_7F833000	db    0			; DATA XREF: sub_7F830B80+22o
		db    0
		db    0
		db    0
unk_7F833004	db    0			; DATA XREF: sub_7F830B80+1Do
		db    0
		db    0
		db    0
unk_7F833008	db    0			; DATA XREF: sub_7F830B80+10o
		db    0
		db    0
		db    0
		dd offset sub_7F831980
unk_7F833010	db    0			; DATA XREF: sub_7F830B80:loc_7F830B8Bo
		db    0
		db    0
		db    0
unk_7F833014	db    0			; DATA XREF: sub_7F830BE0+54o
		db    0
		db    0
		db    0
		dd offset sub_7F831A50
unk_7F83301C	db    0			; DATA XREF: sub_7F830BE0:loc_7F830C2Fo
		db    0
		db    0
		db    0
unk_7F833020	db    0			; DATA XREF: sub_7F830BE0+66o
		db    0
		db    0
		db    0
unk_7F833024	db    0			; DATA XREF: sub_7F830BE0:loc_7F830C41o
		db    0
		db    0
		db    0
; CHAR SourceName[32]
SourceName	db 20h dup(0)		; DATA XREF: sub_7F805583:loc_7F8055C7o
					; sub_7F80560A+58o
; CHAR FileName[264]
FileName	db 108h	dup(0)		; DATA XREF: sub_7F80530D+68o
					; sub_7F80530D+99o ...
dword_7F833150	dd 0			; DATA XREF: sub_7F805851+18Ew
					; .data:off_7F835350o ...
dword_7F833154	dd 0			; DATA XREF: sub_7F805851+1BCw
		align 10h
; CHAR Buf
Buf		db 0			; DATA XREF: sub_7F808498+B4w
					; sub_7F808498+D3o ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
; int dword_7F833264
dword_7F833264	dd 0			; DATA XREF: sub_7F805FDE+B6o
					; sub_7F807D9C+C1r ...
dword_7F833268	dd 0			; DATA XREF: sub_7F805851+149w
					; sub_7F80725C+17Ew ...
		align 10h
dword_7F833270	dd 0			; DATA XREF: sub_7F805851+209w
					; .data:7F835390o
dword_7F833274	dd 0			; DATA XREF: sub_7F805851+220w
dword_7F833278	dd 0			; DATA XREF: sub_7F805851+23Bw
					; .data:7F8353A0o
dword_7F83327C	dd 0			; DATA XREF: sub_7F805851+252w
; UINT uValue
uValue		dd 0			; DATA XREF: sub_7F807D9C+230w
					; sub_7F808184+Bw ...
		align 8
; CHAR byte_7F833288[1024]
byte_7F833288	db 400h	dup(0)		; DATA XREF: sub_7F808359+9o
					; sub_7F808359+34o
dword_7F833688	dd 0			; DATA XREF: sub_7F805851+294w
					; .data:7F8353C0o
dword_7F83368C	dd 0			; DATA XREF: sub_7F805851+2A1w
unk_7F833690	db    0			; DATA XREF: .data:7F835370o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
dword_7F833698	dd 0			; DATA XREF: sub_7F80722E+17w
					; sub_7F807D9C+242w
; LONG lpPrevWndFunc
lpPrevWndFunc	dd 0			; DATA XREF: sub_7F807D9C+1EBw
					; sub_7F807D9C:loc_7F8080D3r ...
dword_7F8336A0	dd 0			; DATA XREF: sub_7F80795B+E0r
					; sub_7F807D9C+248w ...
		align 8
; CHAR byte_7F8336A8[512]
byte_7F8336A8	db 200h	dup(0)		; DATA XREF: sub_7F806352+1D9o
					; sub_7F80725C+38Do ...
dword_7F8338A8	dd 0			; DATA XREF: sub_7F805851+193w
dword_7F8338AC	dd 0			; DATA XREF: sub_7F805851+19Cw
dword_7F8338B0	dd 0			; DATA XREF: sub_7F805851+1D7w
					; .data:7F835360o
dword_7F8338B4	dd 0			; DATA XREF: sub_7F805851+1EEw
dword_7F8338B8	dd 0			; DATA XREF: sub_7F805851+43Bw
					; sub_7F805851+452w ...
		align 10h
; CHAR String1
String1		db 0			; DATA XREF: sub_7F805EBF+C2o
					; sub_7F805EBF+100w ...
unk_7F8338C1	db    0			; DATA XREF: sub_7F808498+226o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
dword_7F8339C8	dd 0			; DATA XREF: sub_7F805851+26Dw
					; .data:7F835380o
dword_7F8339CC	dd 0			; DATA XREF: sub_7F805851+284w
; CHAR Text[512]
Text		db 200h	dup(0)		; DATA XREF: sub_7F806352+1F9o
					; sub_7F80725C+3ADo ...
dword_7F833BD0	dd 0			; DATA XREF: sub_7F80A115+4Fw
		align 8
; RECT rc
rc		RECT <0>		; DATA XREF: sub_7F80A115+1B5w
					; sub_7F80A47A+101o ...
; RECT stru_7F833BE8
stru_7F833BE8	RECT <0>		; DATA XREF: sub_7F80A115+237w
					; sub_7F80A47A:loc_7F80A582o ...
dword_7F833BF8	dd 0			; DATA XREF: sub_7F80A115+24w
; WNDPROC dword_7F833BFC
dword_7F833BFC	dd 0			; DATA XREF: sub_7F80C426+73w
					; sub_7F80C77D+41r
; HINSTANCE dword_7F833C00
dword_7F833C00	dd 0			; DATA XREF: sub_7F80C426+3Fr
					; sub_7F80C5C0+7w ...
		align 8
word_7F833C08	dw 0			; DATA XREF: sub_7F810955+2B9o
					; sub_7F810955+2C0w
word_7F833C0A	dw 0			; DATA XREF: sub_7F810955+2A9w
dword_7F833C0C	dd 0			; DATA XREF: sub_7F810955+2B3w
word_7F833C10	dw 0			; DATA XREF: sub_7F81B01B+19Do
					; sub_7F81B01B+1B2w ...
word_7F833C12	dw 0			; DATA XREF: sub_7F81B01B+1ABw
					; sub_7F81C461+ACw
dword_7F833C14	dd 0			; DATA XREF: sub_7F81B01B+1CEw
					; sub_7F81C461+B9w
word_7F833C18	dw 0			; DATA XREF: sub_7F81D22C+2E5o
					; sub_7F81D22C+2ECw
word_7F833C1A	dw 0			; DATA XREF: sub_7F81D22C+2D9w
dword_7F833C1C	dd 0			; DATA XREF: sub_7F81D22C+2FEw
dword_7F833C20	dd 0			; DATA XREF: sub_7F820E5D+3o
					; sub_7F820E74+48w ...
dword_7F833C24	dd 0			; DATA XREF: sub_7F820E74+26r
					; sub_7F820E74+41w ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
unk_7F833D10	db    0			; DATA XREF: sub_7F82A016+12o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
unk_7F833D30	db    0			; DATA XREF: sub_7F82EBDD+23o
					; sub_7F82EC41o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
unk_7F833DB0	db    0			; DATA XREF: .data:off_7F83990Co
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
unk_7F833DC8	db    0			; DATA XREF: .data:off_7F8398ECo
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
unk_7F833DE0	db    0			; DATA XREF: .data:off_7F83991Co
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
unk_7F833DF8	db    0			; DATA XREF: .data:lpCriticalSectiono
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
; CHAR Filename[260]
Filename	db 104h	dup(0)		; DATA XREF: sub_7F831000+Ao
dword_7F833F14	dd 0			; DATA XREF: sub_7F831AA0+Ar
; HINSTANCE dword_7F833F18
dword_7F833F18	dd 0			; DATA XREF: sub_7F81710C:loc_7F817134r
					; sub_7F81710C+36r ...
dword_7F833F1C	dd 0			; DATA XREF: sub_7F81AC0B+14r
					; sub_7F81AC0B+24r ...
; HWND hDlg
hDlg		dd 0			; DATA XREF: sub_7F805851+5Ar
					; sub_7F805851+A1w ...
		align 10h
; CHAR byte_7F833F30[128]
byte_7F833F30	db 80h dup(0)		; DATA XREF: sub_7F80577A+5Fo
					; sub_7F805851+B6o ...
dword_7F833FB0	dd 0			; DATA XREF: sub_7F804EC7+17Bw
					; sub_7F80795B+12Ar ...
; HINSTANCE hInstance
hInstance	dd 0			; DATA XREF: sub_7F8026ED+123r
					; sub_7F8026ED+12Cr ...
		align 10h
; CHAR Caption[4176]
Caption		db 1050h dup(0)		; DATA XREF: ScMMFMigrateToMDB@48+B8o
					; sub_7F8035B3+2A2o ...
; UINT uNumber
uNumber		dd 0			; DATA XREF: sub_7F830CE0+30w
					; sub_7F830CE0:loc_7F830D82r ...
		align 10h
dword_7F835020	dd 0			; DATA XREF: sub_7F830CE0+2Aw
					; sub_7F830CE0+58r ...
unk_7F835024	db    0			; DATA XREF: sub_7F830CE0+AAo
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
; HANDLE hHeap
hHeap		dd 0			; DATA XREF: sub_7F8304A0+Br
					; sub_7F830990+4r ...
dword_7F835124	dd 0			; DATA XREF: sub_7F830BE0+2Br
dword_7F835128	dd 0			; DATA XREF: sub_7F830B80r
dword_7F83512C	dd 0			; DATA XREF: sub_7F830BE0+22r
					; sub_7F830BE0+34r ...
dword_7F835130	dd 0			; DATA XREF: sub_7F830310+B2w
					; sub_7F830310+BCr ...
		align 10h
unk_7F835140	db  0Ch			; DATA XREF: HrModifyNamesInMsg@4+90o
		db    0
		db    0
		db    0
		db    2
		db    1
		db  43h	; C
		db    0
		db    2
		db    1
		db  52h	; R
		db    0
		db    2
		db    1
		db  3Fh	; ?
		db    0
		db    2
		db    1
		db  51h	; Q
		db    0
		db  1Eh
		db    0
		db  1Eh
		db  0Ch
		db  1Eh
		db    0
		db  1Fh
		db  0Ch
		db    2
		db    1
		db  19h
		db  0Ch
		db    2
		db    1
		db  1Dh
		db  0Ch
		db  1Eh
		db    0
		db  64h	; d
		db    0
		db  1Eh
		db    0
		db  65h	; e
		db    0
		db    2
		db    1
		db  41h	; A
		db    0
		db    2
		db    1
		db  3Bh	; ;
		db    0
		db    0
		db    0
		db    0
		db    0
unk_7F835178	db    5			; DATA XREF: HrModifyNamesInMsg@4+C1o
		db    0
		db    0
		db    0
		db    3
		db    0
		db    0
		db  30h	; 0
		db  1Eh
		db    0
		db    1
		db  30h	; 0
		db    3
		db    0
		db  15h
		db  0Ch
		db  1Eh
		db    0
		db    2
		db  30h	; 0
		db    2
		db    1
		db 0FFh
		db  0Fh
unk_7F835190	db    2			; DATA XREF: HrModifyNamesInMsg@4+1Do
		db    0
		db    0
		db    0
		db  1Eh
		db    0
		db  1Ah
		db    0
		db  1Eh
		db    0
		db  1Eh
		db  0Ch
; CHAR aX400[]
aX400		db 'X400',0             ; DATA XREF: HrModifyNamesInMsg@4+78o
					; HrModifyNamesInMsg@4+10Bo
		align 4
; CHAR aSmtp[]
aSmtp		db 'SMTP',0             ; DATA XREF: HrModifyNamesInMsg@4+66o
					; HrModifyNamesInMsg@4+F9o ...
		align 4
; CHAR String2[]
String2		db 'IPM.Note',0         ; DATA XREF: .text:off_7F8017E0o
					; HrModifyNamesInMsg@4+44o
		align 10h
dword_7F8351C0	dd 0			; DATA XREF: sub_7F802DB7+C3w
					; sub_7F802DB7:loc_7F802EAFw ...
		align 8
unk_7F8351C8	db  81h	; �		; DATA XREF: ScMMFVerify@16+AAo
					; ScMMFMigrateToMDB@48+1AAo ...
		db  49h	; I
		db  50h	; P
		db  4Dh	; M
		db    2
		db    1
		db 0E0h	; �
		db  35h	; 5
		db    0
		db    0
		db    0
		db    0
		dd offset sub_7F8034C3
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    3
		db    0
		db  21h	; !
		db  0Eh
		db    3
		db    0
		db  0Bh
		db  37h	; 7
		db    0
		db    0
		db    0
		db    0
unk_7F8351F8	db    2			; DATA XREF: sub_7F8042DA+B6o
		db    0
		db    0
		db    0
		db    3
		db    0
		db  21h	; !
		db  0Eh
		db    3
		db    0
		db  0Bh
		db  37h	; 7
unk_7F835204	db  49h	; I		; DATA XREF: sub_7F802DB7+408o
		db  50h	; P
		db  4Dh	; M
		db    0
; CHAR Default[4]
Default		db 4 dup(0)		; DATA XREF: .text:7F801824o
					; sub_7F804058+1CAo ...
; CHAR aSS_0[]
aSS_0		db '%s%s',0Dh,0Ah,0     ; DATA XREF: sub_7F804EC7+E6o
					; sub_7F80B343+61o ...
		align 4
; CHAR aSSS_0[]
aSSS_0		db '%s%s: %s',0Dh,0Ah,0 ; DATA XREF: sub_7F804EC7+CDo
		align 10h
; CHAR aSSS[]
aSSS		db '%s%s:  %s',0Dh,0Ah,0 ; DATA XREF: sub_7F804EC7+94o
					; sub_7F808F95+F3o
; CHAR aSS[]
aSS		db '%s:  %s',0Dh,0Ah,0  ; DATA XREF: sub_7F804EC7+4Bo
		align 4
; CHAR aMapiError08lx[]
aMapiError08lx	db 'MAPI Error: %08lX',0 ; DATA XREF: sub_7F805168+A1o
					; sub_7F808F95+78o
		align 4
; HANDLE hFile
hFile		dd 0FFFFFFFFh		; DATA XREF: sub_7F80530D+C0w
					; sub_7F805403+2Dr ...
; CHAR Buffer[]
Buffer		db 0Dh,0Ah		; DATA XREF: sub_7F80549A:loc_7F805519o
		db 0Dh,0Ah,0
		align 4
; CHAR a_log_0[]
a_log_0		db '.LOG',0             ; DATA XREF: sub_7F80530D:loc_7F8053A1o
		align 10h
; CHAR a_log[]
a_log		db '.log',0             ; DATA XREF: sub_7F80530D+86o
		align 4
; CHAR aTypessupported[]
aTypessupported	db 'TypesSupported',0   ; DATA XREF: sub_7F80560A+F4o
		align 4
; CHAR ValueName[]
ValueName	db 'EventMessageFile',0 ; DATA XREF: sub_7F80560A+CFo
		align 10h
; int dword_7F835290
dword_7F835290	dd 0			; DATA XREF: ScMMFMigrateToMDB@48:loc_7F802126r
					; ScMMFMigrateToMDB@48+6Do ...
dword_7F835294	dd 0			; DATA XREF: sub_7F805851:loc_7F805C04r
					; sub_7F805851+3CAr ...
dword_7F835298	dd 0			; DATA XREF: sub_7F805851:loc_7F805E90r
					; sub_7F805EBF+18w ...
dword_7F83529C	dd 0			; DATA XREF: sub_7F808949+9Br
					; sub_7F808949+A3r ...
dword_7F8352A0	dd 0			; DATA XREF: sub_7F805851+4Ar
					; sub_7F805851+2A6r ...
		align 8
unk_7F8352A8	db    4			; DATA XREF: sub_7F808C12+75o
		db    0
		db    0
		db    0
		db    2
		db    1
		db 0FFh
		db  0Fh
		db  1Eh
		db    0
		db    1
		db  30h	; 0
		db  0Bh
		db    0
		db    0
		db  34h	; 4
		db    3
		db    0
		db    9
		db  30h	; 0
		db    0
		db    0
		db    0
		db    0
unk_7F8352C0	db    1			; DATA XREF: sub_7F8091A3+A0o
					; sub_7F8091A3+298o
		db    0
		db    0
		db    0
		db    2
		db    1
		db  0Ch
		db  3Dh	; =
unk_7F8352C8	db    2			; DATA XREF: sub_7F808A6D+79o
		db    0
		db    0
		db    0
		db  0Bh
		db    0
		db    4
		db  3Dh	; =
		db  1Eh
		db    0
		db    1
		db  30h	; 0
dword_7F8352D4	dd 0			; DATA XREF: sub_7F808C12+27Cw
					; sub_7F808C12+2A8r
dword_7F8352D8	dd 0			; DATA XREF: sub_7F805851+496w
					; sub_7F805851+526w ...
dword_7F8352DC	dd 0			; DATA XREF: sub_7F805851+5A6r
					; sub_7F805851+5AEr ...
dword_7F8352E0	dd 0			; DATA XREF: sub_7F80725C+B1o
					; sub_7F80725C+D4r ...
dword_7F8352E4	dd 0			; DATA XREF: sub_7F80725C+2Ao
					; sub_7F80725C+3Dw ...
dword_7F8352E8	dd 0			; DATA XREF: sub_7F805851:loc_7F805E35r
					; sub_7F806861+330w ...
		align 10h
dword_7F8352F0	dd 0FFFFFFFFh		; DATA XREF: sub_7F8087A7+4Ar
					; sub_7F80887Dr ...
unk_7F8352F4	db 0FFh			; DATA XREF: sub_7F8087A7+52o
		db 0FFh
		db 0FFh
		db 0FFh
		db  6Ch	; l
		db    2
		db    0
		db    0
		db  73h	; s
		db    2
		db    0
		db    0
		db 0FFh
		db 0FFh
		db 0FFh
		db 0FFh
		db 0FFh
		db 0FFh
		db 0FFh
		db 0FFh
		db 0C6h	; �
		db    2
		db    0
		db    0
		db 0C8h	; �
		db    2
		db    0
		db    0
		db 0D0h	; �
		db    2
		db    0
		db    0
		db 0D2h	; �
		db    2
		db    0
		db    0
		db  62h	; b
		db    2
		db    0
		db    0
		db  69h	; i
		db    2
		db    0
		db    0
		db  20h
		db    3
		db    0
		db    0
		db  20h
		db    3
		db    0
		db    0
		db  3Eh	; >
		db    3
		db    0
		db    0
		db  42h	; B
		db    3
		db    0
		db    0
		db  2Bh	; +
		db    3
		db    0
		db    0
		db  2Eh	; .
		db    3
		db    0
		db    0
		db  35h	; 5
		db    3
		db    0
		db    0
		db  38h	; 8
		db    3
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
dword_7F835348	dd 0C8h			; DATA XREF: sub_7F805851+482r
					; sub_7F805851+512r
unk_7F83534C	db    1			; DATA XREF: sub_7F805851+445o
					; sub_7F805851+458o ...
		db    0
		db    0
		db    0
off_7F835350	dd offset dword_7F833150 ; DATA	XREF: sub_7F805EBF+57r
					; sub_7F807D9C+93r ...
dword_7F835354	dd 0BB8h		; DATA XREF: sub_7F805851+5FAr
		db 0CAh	; �
		db    0
		db    0
		db    0
dword_7F83535C	dd 0			; DATA XREF: sub_7F805EBF+6Co
					; sub_7F806352+15Aw ...
		dd offset dword_7F8338B0
		db 0B9h	; �
		db  0Bh
		db    0
		db    0
		db 0CBh	; �
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		dd offset unk_7F833690
		align 8
		db 0CCh	; �
		db    0
		db    0
		db    0
dword_7F83537C	dd 0			; DATA XREF: sub_7F807D9C+3Cr
					; sub_7F807D9C+31Er ...
		dd offset dword_7F8339C8
		db 0BCh	; �
		db  0Bh
		db    0
		db    0
		db 0CDh	; �
		db    0
		db    0
		db    0
dword_7F83538C	dd 0			; DATA XREF: sub_7F806352+17Bw
					; sub_7F8071B1:loc_7F807202w ...
		dd offset dword_7F833270
		db 0BBh	; �
		db  0Bh
		db    0
		db    0
		db 0C9h	; �
		db    0
		db    0
		db    0
; BOOL bEnable
bEnable		dd 0			; DATA XREF: sub_7F806352+171w
					; sub_7F80725C+454r ...
		dd offset dword_7F833278
		db 0BAh	; �
		db  0Bh
		db    0
		db    0
		db 0CEh	; �
		db    0
		db    0
		db    0
dword_7F8353AC	dd 0			; DATA XREF: sub_7F806861+43Bw
					; sub_7F806861:loc_7F806E7Bw ...
		dd offset dword_7F833150
		align 8
		db 0CFh	; �
		db    0
		db    0
		db    0
dword_7F8353BC	dd 0			; DATA XREF: sub_7F805851+4E8o
					; sub_7F805EBF+76o ...
		dd offset dword_7F833688
		db 0BDh	; �
		db  0Bh
		db    0
		db    0
dword_7F8353C8	dd 0			; DATA XREF: sub_7F805851:loc_7F805C69r
					; sub_7F805851:loc_7F805C86r ...
dword_7F8353CC	dd 1			; DATA XREF: sub_7F8081B3+25r
; WPARAM wParam
wParam		dd 0FFFFFFFFh		; DATA XREF: sub_7F806861+177r
					; sub_7F806861+19Dr ...
; UINT_PTR uIDEvent
uIDEvent	dd 0			; DATA XREF: DialogFunc:loc_7F80A039r
					; DialogFunc+5Fw ...
; CHAR String[]
String		db 'commdlg_help',0     ; DATA XREF: sub_7F805851+2AEo
		align 4
; CHAR a_[]
a_		db '.',0                ; DATA XREF: sub_7F806FF2+5Do
		align 4
; CHAR asc_7F8353EC[]
asc_7F8353EC	db ' ',0                ; DATA XREF: sub_7F80795B+18Co
		align 10h
; CHAR aSLu[]
aSLu		db '%s %lu',0           ; DATA XREF: sub_7F80795B+8Eo
		align 4
; CHAR aCouldNotFindSt[]
aCouldNotFindSt	db 'Could not find string resource in file.',0 ; DATA XREF: sub_7F808359+22o
; CHAR a_[]
a@		db '@',0                ; DATA XREF: sub_7F808498+111o
		align 4
; CHAR aS[]
aS		db '%s',0Dh,0Ah,0       ; DATA XREF: sub_7F808F95+AEo
		align 4
aMspstMs	db 'MSPST MS',0         ; DATA XREF: sub_7F8091A3+1BCo
		align 4
unk_7F835438	db    1			; DATA XREF: sub_7F80B1CB+49o
		db    0
		db    0
		db    0
		db    2
		db    1
		db 0FFh
		db  0Fh
aMapipdl	db 'MAPIPDL',0          ; DATA XREF: sub_7F80B0EB+8Bo
; CHAR aSS_1[]
aSS_1		db '%s: %s',0Dh,0Ah,0   ; DATA XREF: sub_7F80B3E3+4Bo
		align 4
; CHAR aMtp[]
aMtp		db 'MTP',0              ; DATA XREF: sub_7F80B80E+1ECo
; CHAR KeyName[]
KeyName		db 'PABID',0            ; DATA XREF: sub_7F80BBF6+F8o
		align 10h
; CHAR aMsmailSFiles_i[]
aMsmailSFiles_i	db 'MSMAIL\%s\FILES.INI',0 ; DATA XREF: sub_7F80BBF6+D5o
; CHAR AppName[]
AppName		db 'Transport',0        ; DATA XREF: sub_7F80BBF6+A9o
					; sub_7F80BBF6+FDo
		align 10h
; CHAR aMsmailpv_ini[]
aMsmailpv_ini	db 'MSMAILPV.INI',0     ; DATA XREF: sub_7F80BBF6:loc_7F80BC54o
		align 10h
; CHAR aFax[]
aFax		db 'FAX',0              ; DATA XREF: sub_7F80BE69+23o
; CHAR aMs[]
aMs		db 'MS',0               ; DATA XREF: sub_7F80BF60+1Do
		align 4
; CHAR aScgetpabimport[]
aScgetpabimport	db 'ScGetPABImporter',0 ; DATA XREF: sub_7F80C275:loc_7F80C2C1o
		align 4
; CHAR aMspst32_dll_0[]
aMspst32_dll_0	db 'MSPST32.DLL',0      ; DATA XREF: sub_7F80C275+19o
; CHAR aD[]
aD		db '%d%%',0             ; DATA XREF: sub_7F80C62C+3Eo
		align 10h
; struct _OSVERSIONINFOA VersionInformation
VersionInformation _OSVERSIONINFOA <0>	; DATA XREF: sub_7F80C7F1w
					; sub_7F80C7F1+Bo ...
dword_7F835554	dd 0			; DATA XREF: sub_7F80C7CEr
					; sub_7F80C7F1+21w ...
; CHAR aCtl3dcolorchan[]
aCtl3dcolorchan	db 'Ctl3dColorChange',0 ; DATA XREF: sub_7F80C828+A2o
		align 4
; CHAR aCtl3dunregiste[]
aCtl3dunregiste	db 'Ctl3dUnregister',0  ; DATA XREF: sub_7F80C828+97o
; CHAR aCtl3dsubclassd[]
aCtl3dsubclassd	db 'Ctl3dSubclassDlgEx',0 ; DATA XREF: sub_7F80C828+8Co
		align 10h
; CHAR aCtl3dunautosub[]
aCtl3dunautosub	db 'Ctl3dUnAutoSubclass',0 ; DATA XREF: sub_7F80C828+81o
; CHAR aCtl3dautosubcl[]
aCtl3dautosubcl	db 'Ctl3dAutoSubclass',0 ; DATA XREF: sub_7F80C828+76o
		align 4
; CHAR aCtl3dregister[]
aCtl3dregister	db 'Ctl3dRegister',0    ; DATA XREF: sub_7F80C828+6Bo
		align 4
; CHAR aCtl3denabled[]
aCtl3denabled	db 'Ctl3dEnabled',0     ; DATA XREF: sub_7F80C828+60o
		align 4
; CHAR aCtl3dgetver[]
aCtl3dgetver	db 'Ctl3dGetVer',0      ; DATA XREF: sub_7F80C828+42o
; CHAR aCtl3d32_dll[]
aCtl3d32_dll	db 'ctl3d32.dll',0      ; DATA XREF: sub_7F80C828+2Bo
unk_7F8355F0	db    6			; DATA XREF: sub_7F80D991+DEo
					; sub_7F80DB1E+24o
		db    0
		db    0
		db    0
		db    3
		db    0
		db    0
		db  30h	; 0
		db  1Eh
		db    0
		db    1
		db  30h	; 0
		db    3
		db    0
		db  15h
		db  0Ch
		db    2
		db    1
		db 0FFh
		db  0Fh
		db  1Eh
		db    0
		db    2
		db  30h	; 0
		db  1Eh
		db    0
		db    3
		db  30h	; 0
		db    0
		db    0
		db    0
		db    0
unk_7F835610	db    2			; DATA XREF: sub_7F80D5D7+96o
					; sub_7F80D6D8+75o
		db    0
		db    0
		db    0
		db    3
		db    0
		db  21h	; !
		db  0Eh
		db    3
		db    0
		db  0Bh
		db  37h	; 7
aPlaceHolderNdr	db 'Place holder NDR Original Msg',0 ; DATA XREF: .text:7F801820o
		align 4
aIpm_microsof_5	db 'IPM.Microsoft Schedule.MtgCncl',0 ; DATA XREF: .text:7F80181Co
		align 4
aIpm_schedule_3	db 'IPM.Schedule.Meeting.Canceled',0 ; DATA XREF: .text:7F801818o
		align 4
aIpm_microsof_4	db 'IPM.Microsoft Schedule.MtgReq',0 ; DATA XREF: .text:7F801814o
		align 4
aIpm_schedule_2	db 'IPM.Schedule.Meeting.Request',0 ; DATA XREF: .text:7F801810o
		align 4
aIpm_microsof_3	db 'IPM.Microsoft Schedule.MtgRespA',0 ; DATA XREF: .text:7F80180Co
aIpm_schedule_1	db 'IPM.Schedule.Meeting.Resp.Tent',0 ; DATA XREF: .text:7F801808o
		align 4
aIpm_microsof_2	db 'IPM.Microsoft Schedule.MtgRespN',0 ; DATA XREF: .text:7F801804o
aIpm_schedule_0	db 'IPM.Schedule.Meeting.Resp.Neg',0 ; DATA XREF: .text:7F801800o
		align 4
aIpm_microsoftS	db 'IPM.Microsoft Schedule.MtgRespP',0 ; DATA XREF: .text:7F8017FCo
aIpm_schedule_m	db 'IPM.Schedule.Meeting.Resp.Pos',0 ; DATA XREF: .text:7F8017F8o
		align 4
aIpm_microsof_1	db 'IPM.Microsoft Mail.Non-Delivery',0 ; DATA XREF: .text:7F8017F4o
aReport_ipm_n_0	db 'Report.IPM.Note.NDR',0 ; DATA XREF: .text:7F8017F0o
aIpm_microsof_0	db 'IPM.Microsoft Mail.Read Receipt',0 ; DATA XREF: .text:7F8017ECo
aReport_ipm_not	db 'Report.IPM.Note.IPNRN',0 ; DATA XREF: .text:7F8017E8o
		align 4
aIpm_microsoftM	db 'IPM.Microsoft Mail.Note',0 ; DATA XREF: .text:7F8017E4o
					; sub_7F80E2BF:loc_7F80E33Do
off_7F835800	dd offset sub_7F80FB24	; DATA XREF: sub_7F80FC77+1Er
		dd offset sub_7F80FB5D
		dd offset sub_7F80FB75
		dd offset sub_7F80FB8D
		dd offset sub_7F80FBB0
		dd offset sub_7F80FBD3
		dd offset sub_7F80FBF6
		dd offset sub_7F80FC19
		dd offset sub_7F80FC3C
		dd offset sub_7F80FC5F
unk_7F835828	db  81h	; �		; DATA XREF: sub_7F80ECB3+D1o
		db  2Bh	; +
		db  1Fh
		db 0A4h	; �
		db 0BEh	; �
		db 0A3h	; �
		db  10h
		db  19h
		db  9Dh	; �
		db  6Eh	; n
		db    0
		db 0DDh	; �
		db    1
		db  0Fh
		db  54h	; T
		db    2
; CHAR aInvalid[]
aInvalid	db 'Invalid',0          ; DATA XREF: sub_7F80E7F6:loc_7F80E9F9o
; CHAR aSS_2[]
aSS_2		db '%s:%s',0            ; DATA XREF: sub_7F80EF21+9Ao
					; sub_7F80F3F1+9Ao
		align 4
aTmp		db 'TMP:',0             ; DATA XREF: sub_7F80F91C+9o
		align 10h
word_7F835850	dw 0			; DATA XREF: sub_7F810236+11w
		align 4
word_7F835854	dw 0			; DATA XREF: sub_7F810254+1Dw
		align 4
word_7F835858	dw 0			; DATA XREF: sub_7F810254+2Bw
		align 10h
dword_7F835860	dd 1009h		; DATA XREF: sub_7F80FE90+DBr
dword_7F835864	dd 249h			; DATA XREF: sub_7F80FD8E:loc_7F80FDEFr
dword_7F835868	dd 145Ch		; DATA XREF: sub_7F80FE90+65r
dword_7F83586C	dd 144Bh		; DATA XREF: sub_7F80FE90:loc_7F80FFB8r
dword_7F835870	dd 24Eh			; DATA XREF: sub_7F80FE90+134r
dword_7F835874	dd 145Fh		; DATA XREF: sub_7F80FE90:loc_7F80FFCCr
dword_7F835878	dd 1447h		; DATA XREF: sub_7F80FE90+10Er
dword_7F83587C	dd 59h			; DATA XREF: sub_7F80FD8E+38w
					; sub_7F80FD8E+78w ...
aTmp_0		db 'TMP:',0             ; DATA XREF: sub_7F80FFF8+5Eo
		align 4
word_7F835888	dw 0			; DATA XREF: sub_7F81165C+17r
					; sub_7F81165C+33r ...
		align 4
dword_7F83588C	dd 0			; DATA XREF: sub_7F81F20F+54r
					; sub_7F81F20F+6Dr ...
		db    0
		db    0
		db    0
		db    0
aShadowId	db 'Shadow-ID',0        ; DATA XREF: .data:7F8359C4o
		db    0
		db    0
aPriority	db 'Priority',0         ; DATA XREF: .data:7F8359BCo
		db    0
		db    0
		db    0
aBody		db 'Body',0             ; DATA XREF: .data:7F8359B4o
		db    0
		db    0
		db    0
aConversationId	db 'Conversation-ID',0  ; DATA XREF: .data:7F8359ACo
aParentId	db 'Parent-ID',0        ; DATA XREF: .data:7F8359A4o
		db    0
		db    0
word_7F8358D0	dw 654Dh		; DATA XREF: sub_7F81028C+DAr
					; sub_7F81197C+82r ...
aSsageId	db 'ssage-ID',0
		align 4
aMessageClass	db 'Message-Class',0    ; DATA XREF: .data:7F835994o
		align 4
aMessageStatus	db 'Message-Status',0   ; DATA XREF: .data:7F83598Co
		align 4
aDateReceived	db 'Date-Received',0    ; DATA XREF: .data:7F835984o
		align 4
aDateSent	db 'Date-Sent',0        ; DATA XREF: .data:7F83597Co
		align 4
aSubject	db 'Subject',0          ; DATA XREF: .data:7F835974o
aBcc		db 'Bcc',0              ; DATA XREF: .data:7F83596Co
aCc		db 'Cc',0               ; DATA XREF: .data:7F835964o
		align 4
aTo		db 'To',0               ; DATA XREF: .data:7F83595Co
		align 4
aFrom		db 'From',0             ; DATA XREF: .data:7F835954o
		align 8
word_7F835938	dw 2522h		; DATA XREF: sub_7F82C9EF+5Fo
					; sub_7F82C9EF+64r
		dd offset unk_7F839510
		db  26h	; &
		db  25h	; %
		dd offset unk_7F8395E0
		db  25h	; %
		db  25h	; %
		dd offset unk_7F8393F0
		align 10h
dword_7F835950	dd 8000h		; DATA XREF: sub_7F82CE3B+53o
					; sub_7F82CE3B+58r
		dd offset aFrom		; "From"
		db    1
		db  80h	; �
		db    0
		db    0
		dd offset aTo		; "To"
		db    2
		db  80h	; �
		db    0
		db    0
		dd offset aCc		; "Cc"
		db    3
		db  80h	; �
		db    0
		db    0
		dd offset aBcc		; "Bcc"
		db    4
		db  80h	; �
		db    1
		db    0
		dd offset aSubject	; "Subject"
		db    5
		db  80h	; �
		db    3
		db    0
		dd offset aDateSent	; "Date-Sent"
		db    6
		db  80h	; �
		db    3
		db    0
		dd offset aDateReceived	; "Date-Received"
		db    7
		db  80h	; �
		db    6
		db    0
		dd offset aMessageStatus ; "Message-Status"
		db    8
		db  80h	; �
		db    7
		db    0
		dd offset aMessageClass	; "Message-Class"
		db    9
		db  80h	; �
		db    1
		db    0
		dd offset word_7F8358D0
		db  0Ah
		db  80h	; �
		db    1
		db    0
		dd offset aParentId	; "Parent-ID"
		db  0Bh
		db  80h	; �
		db    1
		db    0
		dd offset aConversationId ; "Conversation-ID"
		db  0Ch
		db  80h	; �
		db    2
		db    0
		dd offset aBody		; "Body"
		db  0Dh
		db  80h	; �
		db    4
		db    0
		dd offset aPriority	; "Priority"
		db  0Eh
		db  80h	; �
		db    6
		db    0
		dd offset aShadowId	; "Shadow-ID"
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    1
		db  90h	; �
		db    5
		db  90h	; �
		db  1Dh
		db  80h	; �
		db    5
		db  90h	; �
		db  0Ah
		db  80h	; �
		db    2
		db 0B0h	; �
		db    2
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    0
dword_7F8359F8	dd 64765356h		; DATA XREF: sub_7F82E30B+1o
					; sub_7F82E30B+6r
		db  66h	; f
		db  65h	; e
		db  72h	; r
		db  50h	; P
		db  70h	; p
		db  50h	; P
		db  41h	; A
		db  42h	; B
		db  72h	; r
		db  11h
		db  11h
		db  11h
		db  72h	; r
		db  11h
		db  11h
		db  21h	; !
		db  72h	; r
		db  11h
		db  11h
		db  31h	; 1
		db  80h	; �
		db  4Dh	; M
		db  63h	; c
		db  20h
		db  80h	; �
		db  41h	; A
		db  53h	; S
		db  46h	; F
		db  80h	; �
		db  53h	; S
		db  43h	; C
		db  4Ch	; L
		db  80h	; �
		db  53h	; S
		db  43h	; C
		db  4Fh	; O
		db  80h	; �
		db  41h	; A
		db  46h	; F
		db  53h	; S
		db  80h	; �
		db  6Dh	; m
		db  61h	; a
		db  70h	; p
		db  80h	; �
		db  41h	; A
		db  63h	; c
		db  74h	; t
		db  80h	; �
		db  4Dh	; M
		db  43h	; C
		db  73h	; s
		db  81h	; �
		db  49h	; I
		db  50h	; P
		db  4Dh	; M
		db  81h	; �
		db  48h	; H
		db  69h	; i
		db  64h	; d
		db  82h	; �
		db  53h	; S
		db  68h	; h
		db  61h	; a
		db  82h	; �
		db  49h	; I
		db  6Eh	; n
		db  62h	; b
		db  82h	; �
		db  42h	; B
		db  75h	; u
		db  6Ch	; l
		db  82h	; �
		db  53h	; S
		db  68h	; h
		db  74h	; t
		db  82h	; �
		db  57h	; W
		db  73h	; s
		db  74h	; t
		db  82h	; �
		db  4Fh	; O
		db  75h	; u
		db  74h	; t
		db  86h	; �
		db  50h	; P
		db  4Ch	; L
		db  43h	; C
		db  89h	; �
		db  41h	; A
		db  4Ch	; L
		db  44h	; D
		db  8Ah	; �
		db    0
		db    0
		db 0FFh
		db  8Bh	; �
		db  4Fh	; O
		db  75h	; u
		db  74h	; t
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
byte_7F835A68	db 69h			; DATA XREF: sub_7F82E30B:loc_7F82E32Br
					; sub_7F82E30B+27o
aQvgdejziiknor	db 'q������������',0
		align 4
byte_7F835A78	db 81h			; DATA XREF: sub_7F82DB71:loc_7F82DB91r
					; sub_7F82DB71+27o
		db    1
		db  90h	; �
		db  82h	; �
		db    5
		db  90h	; �
		db  88h	; �
		db    0
		db    0
		db  86h	; �
		db    2
		db 0B0h	; �
		db  87h	; �
		db    2
		db    0
		db  83h	; �
		db  1Dh
		db  80h	; �
		db  85h	; �
		db  0Ah
		db  80h	; �
		db  84h	; �
		db    5
		db  90h	; �
		db  89h	; �
		db    0
		db    0
		db  80h	; �
		db    0
		db    0
		db  8Fh	; �
		db    0
		db    0
		db  8Dh	; �
		db    0
		db    0
		db  8Ch	; �
		db    0
		db    0
		db  8Eh	; �
		db    0
		db    0
		db  8Bh	; �
		db    0
		db    0
		db  8Ah	; �
		db    0
		db    0
		db  90h	; �
		db    0
		db    8
		db  71h	; q
		db    2
		db 0B0h	; �
		db  70h	; p
		db    5
		db  90h	; �
		db  69h	; i
		db  15h
		db  90h	; �
		db    0
		db    0
		db    0
		db    0
aAsco		db '�SCO',0             ; DATA XREF: sub_7F82DB71+1o
					; sub_7F82DB71+6r
aAscl		db 8,'�SCL',0
		db    8
		db  56h	; V
		db  53h	; S
		db  76h	; v
		db  64h	; d
		db    1
		db 0F0h	; �
		db  72h	; r
		db  11h
		db  11h
		db  11h
		db    1
		db 0F0h	; �
		db  72h	; r
		db  11h
		db  11h
		db  21h	; !
		db    1
		db 0F0h	; �
		db  72h	; r
		db  11h
		db  11h
		db  31h	; 1
		db    1
		db 0F0h	; �
		db  66h	; f
		db  65h	; e
		db  72h	; r
		db  50h	; P
		db    1
		db 0F0h	; �
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
byte_7F835AE8	db 41h			; DATA XREF: sub_7F8128E1+21r
					; sub_7F812934+48r
		db  36h	; 6
		db  13h
		db  62h	; b
		db 0A8h	; �
		db  21h	; !
		db  6Eh	; n
		db 0BBh	; �
		db 0F4h	; �
		db  16h
		db 0CCh	; �
		db    4
		db  7Fh	; 
		db  64h	; d
		db 0E8h	; �
		db  5Dh	; ]
		db  1Eh
		db 0F2h	; �
		db 0CBh	; �
		db  2Ah	; *
		db  74h	; t
		db 0C5h	; �
		db  5Eh	; ^
		db  35h	; 5
		db 0D2h	; �
		db  95h	; �
		db  47h	; G
		db  9Eh	; �
		db  96h	; �
		db  2Dh	; -
		db  9Ah	; �
		db  88h	; �
		db  4Ch	; L
		db  7Dh	; }
		db  84h	; �
		db  3Fh	; ?
		db 0DBh	; �
		db 0ACh	; �
		db  31h	; 1
		db 0B6h	; �
		db  48h	; H
		db  5Fh	; _
		db 0F6h	; �
		db 0C4h	; �
		db 0D8h	; �
		db  39h	; 9
		db  8Bh	; �
		db 0E7h	; �
		db  23h	; #
		db  3Bh	; ;
		db  38h	; 8
		db  8Eh	; �
		db 0C8h	; �
		db 0C1h	; �
		db 0DFh	; �
		db  25h	; %
		db 0B1h	; �
		db  20h
		db 0A5h	; �
		db  46h	; F
		db  60h	; `
		db  4Eh	; N
		db  9Ch	; �
		db 0FBh	; �
		db 0AAh	; �
		db 0D3h	; �
		db  56h	; V
		db  51h	; Q
		db  45h	; E
		db  7Ch	; |
		db  55h	; U
		db    0
		db    7
		db 0C9h	; �
		db  2Bh	; +
		db  9Dh	; �
		db  85h	; �
		db  9Bh	; �
		db    9
		db 0A0h	; �
		db  8Fh	; �
		db 0ADh	; �
		db 0B3h	; �
		db  0Fh
		db  63h	; c
		db 0ABh	; �
		db  89h	; �
		db  4Bh	; K
		db 0D7h	; �
		db 0A7h	; �
		db  15h
		db  5Ah	; Z
		db  71h	; q
		db  66h	; f
		db  42h	; B
		db 0BFh	; �
		db  26h	; &
		db  4Ah	; J
		db  6Bh	; k
		db  98h	; �
		db 0FAh	; �
		db 0EAh	; �
		db  77h	; w
		db  53h	; S
		db 0B2h	; �
		db  70h	; p
		db    5
		db  2Ch	; ,
		db 0FDh	; �
		db  59h	; Y
		db  3Ah	; :
		db  86h	; �
		db  7Eh	; ~
		db 0CEh	; �
		db    6
		db 0EBh	; �
		db  82h	; �
		db  78h	; x
		db  57h	; W
		db 0C7h	; �
		db  8Dh	; �
		db  43h	; C
		db 0AFh	; �
		db 0B4h	; �
		db  1Ch
		db 0D4h	; �
		db  5Bh	; [
		db 0CDh	; �
		db 0E2h	; �
		db 0E9h	; �
		db  27h	; '
		db  4Fh	; O
		db 0C3h	; �
		db    8
		db  72h	; r
		db  80h	; �
		db 0CFh	; �
		db 0B0h	; �
		db 0EFh	; �
		db 0F5h	; �
		db  28h	; (
		db  6Dh	; m
		db 0BEh	; �
		db  30h	; 0
		db  4Dh	; M
		db  34h	; 4
		db  92h	; �
		db 0D5h	; �
		db  0Eh
		db  3Ch	; <
		db  22h	; "
		db  32h	; 2
		db 0E5h	; �
		db 0E4h	; �
		db 0F9h	; �
		db  9Fh	; �
		db 0C2h	; �
		db 0D1h	; �
		db  0Ah
		db  81h	; �
		db  12h
		db 0E1h	; �
		db 0EEh	; �
		db  91h	; �
		db  83h	; �
		db  76h	; v
		db 0E3h	; �
		db  97h	; �
		db 0E6h	; �
		db  61h	; a
		db  8Ah	; �
		db  17h
		db  79h	; y
		db 0A4h	; �
		db 0B7h	; �
		db 0DCh	; �
		db  90h	; �
		db  7Ah	; z
		db  5Ch	; \
		db  8Ch	; �
		db    2
		db 0A6h	; �
		db 0CAh	; �
		db  69h	; i
		db 0DEh	; �
		db  50h	; P
		db  1Ah
		db  11h
		db  93h	; �
		db 0B9h	; �
		db  52h	; R
		db  87h	; �
		db  58h	; X
		db 0FCh	; �
		db 0EDh	; �
		db  1Dh
		db  37h	; 7
		db  49h	; I
		db  1Bh
		db  6Ah	; j
		db 0E0h	; �
		db  29h	; )
		db  33h	; 3
		db  99h	; �
		db 0BDh	; �
		db  6Ch	; l
		db 0D9h	; �
		db  94h	; �
		db 0F3h	; �
		db  40h	; @
		db  54h	; T
		db  6Fh	; o
		db 0F0h	; �
		db 0C6h	; �
		db  73h	; s
		db 0B8h	; �
		db 0D6h	; �
		db  3Eh	; >
		db  65h	; e
		db  18h
		db  44h	; D
		db  1Fh
		db 0DDh	; �
		db  67h	; g
		db  10h
		db 0F1h	; �
		db  0Ch
		db  19h
		db 0ECh	; �
		db 0AEh	; �
		db    3
		db 0A1h	; �
		db  14h
		db  7Bh	; {
		db 0A9h	; �
		db  0Bh
		db 0FFh
		db 0F8h	; �
		db 0A3h	; �
		db 0C0h	; �
		db 0A2h	; �
		db    1
		db 0F7h	; �
		db  2Eh	; .
		db 0BCh	; �
		db  24h	; $
		db  68h	; h
		db  75h	; u
		db  0Dh
		db 0FEh	; �
		db 0BAh	; �
		db  2Fh	; /
		db 0B5h	; �
		db 0D0h	; �
		db 0DAh	; �
		db  3Dh	; =
byte_7F835BE8	db 47h			; DATA XREF: sub_7F8128E1+39r
					; sub_7F812934+6Dr
		db 0F1h	; �
		db 0B4h	; �
		db 0E6h	; �
		db  0Bh
		db  6Ah	; j
		db  72h	; r
		db  48h	; H
		db  85h	; �
		db  4Eh	; N
		db  9Eh	; �
		db 0EBh	; �
		db 0E2h	; �
		db 0F8h	; �
		db  94h	; �
		db  53h	; S
		db 0E0h	; �
		db 0BBh	; �
		db 0A0h	; �
		db    2
		db 0E8h	; �
		db  5Ah	; Z
		db    9
		db 0ABh	; �
		db 0DBh	; �
		db 0E3h	; �
		db 0BAh	; �
		db 0C6h	; �
		db  7Ch	; |
		db 0C3h	; �
		db  10h
		db 0DDh	; �
		db  39h	; 9
		db    5
		db  96h	; �
		db  30h	; 0
		db 0F5h	; �
		db  37h	; 7
		db  60h	; `
		db  82h	; �
		db  8Ch	; �
		db 0C9h	; �
		db  13h
		db  4Ah	; J
		db  6Bh	; k
		db  1Dh
		db 0F3h	; �
		db 0FBh	; �
		db  8Fh	; �
		db  26h	; &
		db  97h	; �
		db 0CAh	; �
		db  91h	; �
		db  17h
		db    1
		db 0C4h	; �
		db  32h	; 2
		db  2Dh	; -
		db  6Eh	; n
		db  31h	; 1
		db  95h	; �
		db 0FFh
		db 0D9h	; �
		db  23h	; #
		db 0D1h	; �
		db    0
		db  5Eh	; ^
		db  79h	; y
		db 0DCh	; �
		db  44h	; D
		db  3Bh	; ;
		db  1Ah
		db  28h	; (
		db 0C5h	; �
		db  61h	; a
		db  57h	; W
		db  20h
		db  90h	; �
		db  3Dh	; =
		db  83h	; �
		db 0B9h	; �
		db  43h	; C
		db 0BEh	; �
		db  67h	; g
		db 0D2h	; �
		db  46h	; F
		db  42h	; B
		db  76h	; v
		db 0C0h	; �
		db  6Dh	; m
		db  5Bh	; [
		db  7Eh	; ~
		db 0B2h	; �
		db  0Fh
		db  16h
		db  29h	; )
		db  3Ch	; <
		db 0A9h	; �
		db    3
		db  54h	; T
		db  0Dh
		db 0DAh	; �
		db  5Dh	; ]
		db 0DFh	; �
		db 0F6h	; �
		db 0B7h	; �
		db 0C7h	; �
		db  62h	; b
		db 0CDh	; �
		db  8Dh	; �
		db    6
		db 0D3h	; �
		db  69h	; i
		db  5Ch	; \
		db  86h	; �
		db 0D6h	; �
		db  14h
		db 0F7h	; �
		db 0A5h	; �
		db  66h	; f
		db  75h	; u
		db 0ACh	; �
		db 0B1h	; �
		db 0E9h	; �
		db  45h	; E
		db  21h	; !
		db  70h	; p
		db  0Ch
		db  87h	; �
		db  9Fh	; �
		db  74h	; t
		db 0A4h	; �
		db  22h	; "
		db  4Ch	; L
		db  6Fh	; o
		db 0BFh	; �
		db  1Fh
		db  56h	; V
		db 0AAh	; �
		db  2Eh	; .
		db 0B3h	; �
		db  78h	; x
		db  33h	; 3
		db  50h	; P
		db 0B0h	; �
		db 0A3h	; �
		db  92h	; �
		db 0BCh	; �
		db 0CFh	; �
		db  19h
		db  1Ch
		db 0A7h	; �
		db  63h	; c
		db 0CBh	; �
		db  1Eh
		db  4Dh	; M
		db  3Eh	; >
		db  4Bh	; K
		db  1Bh
		db  9Bh	; �
		db  4Fh	; O
		db 0E7h	; �
		db 0F0h	; �
		db 0EEh	; �
		db 0ADh	; �
		db  3Ah	; :
		db 0B5h	; �
		db  59h	; Y
		db    4
		db 0EAh	; �
		db  40h	; @
		db  55h	; U
		db  25h	; %
		db  51h	; Q
		db 0E5h	; �
		db  7Ah	; z
		db  89h	; �
		db  38h	; 8
		db  68h	; h
		db  52h	; R
		db  7Bh	; {
		db 0FCh	; �
		db  27h	; '
		db 0AEh	; �
		db 0D7h	; �
		db 0BDh	; �
		db 0FAh	; �
		db    7
		db 0F4h	; �
		db 0CCh	; �
		db  8Eh	; �
		db  5Fh	; _
		db 0EFh	; �
		db  35h	; 5
		db  9Ch	; �
		db  84h	; �
		db  2Bh	; +
		db  15h
		db 0D5h	; �
		db  77h	; w
		db  34h	; 4
		db  49h	; I
		db 0B6h	; �
		db  12h
		db  0Ah
		db  7Fh	; 
		db  71h	; q
		db  88h	; �
		db 0FDh	; �
		db  9Dh	; �
		db  18h
		db  41h	; A
		db  7Dh	; }
		db  93h	; �
		db 0D8h	; �
		db  58h	; X
		db  2Ch	; ,
		db 0CEh	; �
		db 0FEh	; �
		db  24h	; $
		db 0AFh	; �
		db 0DEh	; �
		db 0B8h	; �
		db  36h	; 6
		db 0C8h	; �
		db 0A1h	; �
		db  80h	; �
		db 0A6h	; �
		db  99h	; �
		db  98h	; �
		db 0A8h	; �
		db  2Fh	; /
		db  0Eh
		db  81h	; �
		db  65h	; e
		db  73h	; s
		db 0E4h	; �
		db 0C2h	; �
		db 0A2h	; �
		db  8Ah	; �
		db 0D4h	; �
		db 0E1h	; �
		db  11h
		db 0D0h	; �
		db    8
		db  8Bh	; �
		db  2Ah	; *
		db 0F2h	; �
		db 0EDh	; �
		db  9Ah	; �
		db  64h	; d
		db  3Fh	; ?
		db 0C1h	; �
		db  6Ch	; l
		db 0F9h	; �
		db 0ECh	; �
byte_7F835CE8	db 14h			; DATA XREF: sub_7F8128E1+2Er
					; sub_7F812934+30r ...
		db  53h	; S
		db  0Fh
		db  56h	; V
		db 0B3h	; �
		db 0C8h	; �
		db  7Ah	; z
		db  9Ch	; �
		db 0EBh	; �
		db  65h	; e
		db  48h	; H
		db  17h
		db  16h
		db  15h
		db  9Fh	; �
		db    2
		db 0CCh	; �
		db  54h	; T
		db  7Ch	; |
		db  83h	; �
		db    0
		db  0Dh
		db  0Ch
		db  0Bh
		db 0A2h	; �
		db  62h	; b
		db 0A8h	; �
		db  76h	; v
		db 0DBh	; �
		db 0D9h	; �
		db 0EDh	; �
		db 0C7h	; �
		db 0C5h	; �
		db 0A4h	; �
		db 0DCh	; �
		db 0ACh	; �
		db  85h	; �
		db  74h	; t
		db 0D6h	; �
		db 0D0h	; �
		db 0A7h	; �
		db  9Bh	; �
		db 0AEh	; �
		db  9Ah	; �
		db  96h	; �
		db  71h	; q
		db  66h	; f
		db 0C3h	; �
		db  63h	; c
		db  99h	; �
		db 0B8h	; �
		db 0DDh	; �
		db  73h	; s
		db  92h	; �
		db  8Eh	; �
		db  84h	; �
		db  7Dh	; }
		db 0A5h	; �
		db  5Eh	; ^
		db 0D1h	; �
		db  5Dh	; ]
		db  93h	; �
		db 0B1h	; �
		db  57h	; W
		db  51h	; Q
		db  50h	; P
		db  80h	; �
		db  89h	; �
		db  52h	; R
		db  94h	; �
		db  4Fh	; O
		db  4Eh	; N
		db  0Ah
		db  6Bh	; k
		db 0BCh	; �
		db  8Dh	; �
		db  7Fh	; 
		db  6Eh	; n
		db  47h	; G
		db  46h	; F
		db  41h	; A
		db  40h	; @
		db  44h	; D
		db    1
		db  11h
		db 0CBh	; �
		db    3
		db  3Fh	; ?
		db 0F7h	; �
		db 0F4h	; �
		db 0E1h	; �
		db 0A9h	; �
		db  8Fh	; �
		db  3Ch	; <
		db  3Ah	; :
		db 0F9h	; �
		db 0FBh	; �
		db 0F0h	; �
		db  19h
		db  30h	; 0
		db  82h	; �
		db    9
		db  2Eh	; .
		db 0C9h	; �
		db  9Dh	; �
		db 0A0h	; �
		db  86h	; �
		db  49h	; I
		db 0EEh	; �
		db  6Fh	; o
		db  4Dh	; M
		db  6Dh	; m
		db 0C4h	; �
		db  2Dh	; -
		db  81h	; �
		db  34h	; 4
		db  25h	; %
		db  87h	; �
		db  1Bh
		db  88h	; �
		db 0AAh	; �
		db 0FCh	; �
		db    6
		db 0A1h	; �
		db  12h
		db  38h	; 8
		db 0FDh	; �
		db  4Ch	; L
		db  42h	; B
		db  72h	; r
		db  64h	; d
		db  13h
		db  37h	; 7
		db  24h	; $
		db  6Ah	; j
		db  75h	; u
		db  77h	; w
		db  43h	; C
		db 0FFh
		db 0E6h	; �
		db 0B4h	; �
		db  4Bh	; K
		db  36h	; 6
		db  5Ch	; \
		db 0E4h	; �
		db 0D8h	; �
		db  35h	; 5
		db  3Dh	; =
		db  45h	; E
		db 0B9h	; �
		db  2Ch	; ,
		db 0ECh	; �
		db 0B7h	; �
		db  31h	; 1
		db  2Bh	; +
		db  29h	; )
		db    7
		db  68h	; h
		db 0A3h	; �
		db  0Eh
		db  69h	; i
		db  7Bh	; {
		db  18h
		db  9Eh	; �
		db  21h	; !
		db  39h	; 9
		db 0BEh	; �
		db  28h	; (
		db  1Ah
		db  5Bh	; [
		db  78h	; x
		db 0F5h	; �
		db  23h	; #
		db 0CAh	; �
		db  2Ah	; *
		db 0B0h	; �
		db 0AFh	; �
		db  3Eh	; >
		db 0FEh	; �
		db    4
		db  8Ch	; �
		db 0E7h	; �
		db 0E5h	; �
		db  98h	; �
		db  32h	; 2
		db  95h	; �
		db 0D3h	; �
		db 0F6h	; �
		db  4Ah	; J
		db 0E8h	; �
		db 0A6h	; �
		db 0EAh	; �
		db 0E9h	; �
		db 0F3h	; �
		db 0D5h	; �
		db  2Fh	; /
		db  70h	; p
		db  20h
		db 0F2h	; �
		db  1Fh
		db    5
		db  67h	; g
		db 0ADh	; �
		db  55h	; U
		db  10h
		db 0CEh	; �
		db 0CDh	; �
		db 0E3h	; �
		db  27h	; '
		db  3Bh	; ;
		db 0DAh	; �
		db 0BAh	; �
		db 0D7h	; �
		db 0C2h	; �
		db  26h	; &
		db 0D4h	; �
		db  91h	; �
		db  1Dh
		db 0D2h	; �
		db  1Ch
		db  22h	; "
		db  33h	; 3
		db 0F8h	; �
		db 0FAh	; �
		db 0F1h	; �
		db  5Ah	; Z
		db 0EFh	; �
		db 0CFh	; �
		db  90h	; �
		db 0B6h	; �
		db  8Bh	; �
		db 0B5h	; �
		db 0BDh	; �
		db 0C0h	; �
		db 0BFh	; �
		db    8
		db  97h	; �
		db  1Eh
		db  6Ch	; l
		db 0E2h	; �
		db  61h	; a
		db 0E0h	; �
		db 0C6h	; �
		db 0C1h	; �
		db  59h	; Y
		db 0ABh	; �
		db 0BBh	; �
		db  58h	; X
		db 0DEh	; �
		db  5Fh	; _
		db 0DFh	; �
		db  60h	; `
		db  79h	; y
		db  7Eh	; ~
		db 0B2h	; �
		db  8Ah	; �
unk_7F835DE8	db    2			; DATA XREF: sub_7F826884+49o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db 0FFh
		db 0FFh
		db    0
		db    0
; LPCVOID lpBuffer
lpBuffer	dd 0			; DATA XREF: sub_7F812653+56r
					; sub_7F812653+6Ar ...
aFilter32_dll	db 'FILTER32.DLL',0     ; DATA XREF: .data:7F835FD4o
		align 4
aFilter_dll	db 'FILTER.DLL',0       ; DATA XREF: .data:7F835FD0o
		align 4
aEmptyw32_dll	db 'EMPTYW32.DLL',0     ; DATA XREF: .data:7F835FCCo
		align 4
aEmptywb_dll	db 'EMPTYWB.DLL',0      ; DATA XREF: .data:7F835FC8o
aBcc32_dll	db 'BCC32.DLL',0        ; DATA XREF: .data:7F835FC4o
		align 4
aBcc_dll	db 'BCC.DLL',0          ; DATA XREF: .data:7F835FC0o
aAppxec32_dll	db 'APPXEC32.DLL',0     ; DATA XREF: .data:7F835FBCo
		align 4
aAppexec_dll	db 'APPEXEC.DLL',0      ; DATA XREF: .data:7F835FB8o
aXenix32_dll	db 'XENIX32.DLL',0      ; DATA XREF: .data:7F835FB4o
aXenix_dll	db 'XENIX.DLL',0        ; DATA XREF: .data:7F835FB0o
		align 4
aBuildflavor	db '<BUILDFLAVOR>',0    ; DATA XREF: .data:7F835FA8o
		align 4
aXimail32	db 'XIMAIL32',0         ; DATA XREF: .data:7F835FA4o
		align 4
aXimail		db 'XIMAIL',0           ; DATA XREF: .data:7F835FA0o
		align 4
aWinhlp32_exe	db 'WINHLP32.EXE',0     ; DATA XREF: .data:7F835F9Co
		align 4
aWinhelp_exe	db 'WINHELP.EXE',0      ; DATA XREF: .data:7F835F98o
; CHAR aMsmail32_hlp[]
aMsmail32_hlp	db 'MSMAIL32.HLP',0     ; DATA XREF: sub_7F815163+100o
					; .data:7F835F94o
		align 4
aMsmail_hlp	db 'MSMAIL.HLP',0       ; DATA XREF: .data:7F835F90o
		align 4
aSchmsg32_dll	db 'SCHMSG32.DLL',0     ; DATA XREF: .data:7F835F8Co
		align 4
aSchedmsg_dll	db 'SCHEDMSG.DLL',0     ; DATA XREF: .data:7F835F88o
		align 4
aImpexp32_dll	db 'IMPEXP32.DLL',0     ; DATA XREF: .data:7F835F84o
		align 4
aImpexp_dll	db 'IMPEXP.DLL',0       ; DATA XREF: .data:7F835F80o
		align 10h
aWgpomg32_dll	db 'WGPOMG32.DLL',0     ; DATA XREF: .data:7F835F7Co
		align 10h
aWgpomgr_dll	db 'WGPOMGR.DLL',0      ; DATA XREF: .data:7F835F78o
aPabnsp32	db 'PABNSP32',0         ; DATA XREF: .data:7F835F74o
		align 4
aPabnsp		db 'PABNSP',0           ; DATA XREF: .data:7F835F70o
		align 10h
aMssfs32	db 'MSSFS32',0          ; DATA XREF: .data:7F835F6Co
aMssfs		db 'MSSFS',0            ; DATA XREF: .data:off_7F835F68o
		align 10h
; CHAR byte_7F835F50[4]
byte_7F835F50	db 4 dup(0)		; DATA XREF: sub_7F8150A9+12o
dword_7F835F54	dd 0			; DATA XREF: sub_7F814F94+8Aw
dword_7F835F58	dd 0			; DATA XREF: sub_7F814F94:loc_7F814FEDr
					; sub_7F814F94:loc_7F815006r ...
dword_7F835F5C	dd 0			; DATA XREF: sub_7F814F94+47r
					; sub_7F814F94+6Ar ...
aSS_3		db '%s  %s',0           ; DATA XREF: sub_7F8150A9+28o
		align 4
off_7F835F68	dd offset aMssfs	; DATA XREF: sub_7F815163+1B0o
					; sub_7F815163+1C3r
					; "MSSFS"
		dd offset aMssfs32	; "MSSFS32"
		dd offset aPabnsp	; "PABNSP"
		dd offset aPabnsp32	; "PABNSP32"
		dd offset aWgpomgr_dll	; "WGPOMGR.DLL"
		dd offset aWgpomg32_dll	; "WGPOMG32.DLL"
		dd offset aImpexp_dll	; "IMPEXP.DLL"
		dd offset aImpexp32_dll	; "IMPEXP32.DLL"
		dd offset aSchedmsg_dll	; "SCHEDMSG.DLL"
		dd offset aSchmsg32_dll	; "SCHMSG32.DLL"
		dd offset aMsmail_hlp	; "MSMAIL.HLP"
		dd offset aMsmail32_hlp	; "MSMAIL32.HLP"
		dd offset aWinhelp_exe	; "WINHELP.EXE"
		dd offset aWinhlp32_exe	; "WINHLP32.EXE"
		dd offset aXimail	; "XIMAIL"
		dd offset aXimail32	; "XIMAIL32"
		dd offset aBuildflavor	; "<BUILDFLAVOR>"
		dd offset Default
		dd offset aXenix_dll	; "XENIX.DLL"
		dd offset aXenix32_dll	; "XENIX32.DLL"
		dd offset aAppexec_dll	; "APPEXEC.DLL"
		dd offset aAppxec32_dll	; "APPXEC32.DLL"
		dd offset aBcc_dll	; "BCC.DLL"
		dd offset aBcc32_dll	; "BCC32.DLL"
		dd offset aEmptywb_dll	; "EMPTYWB.DLL"
		dd offset aEmptyw32_dll	; "EMPTYW32.DLL"
		dd offset aFilter_dll	; "FILTER.DLL"
		dd offset aFilter32_dll	; "FILTER32.DLL"
		align 10h
; CHAR aFilter32[]
aFilter32	db 'filter32',0         ; DATA XREF: sub_7F815163+188o
		align 4
; CHAR aFilter[]
aFilter		db 'filter',0           ; DATA XREF: sub_7F815163+173o
		align 4
; CHAR aMsgfilter[]
aMsgfilter	db 'MsgFilter',0        ; DATA XREF: sub_7F815163+12Co
		align 10h
; CHAR aSpelling[]
aSpelling	db 'Spelling',0         ; DATA XREF: sub_7F815163:loc_7F81527Ao
		align 4
; CHAR aMapihelp[]
aMapihelp	db 'MAPIHELP',0         ; DATA XREF: sub_7F815163+EFo
		align 4
; CHAR aProviders[]
aProviders	db 'Providers',0        ; DATA XREF: sub_7F815163+7Fo
		align 4
; CHAR aCustomMessages[]
aCustomMessages	db 'Custom Messages',0  ; DATA XREF: sub_7F815163+70o
; CHAR aCustomCommands[]
aCustomCommands	db 'Custom Commands',0  ; DATA XREF: sub_7F815163:loc_7F8151C4o
		align 8
a_tmp		db '.TMP',0
		align 10h
aAux		db 'AUX',0              ; DATA XREF: .data:7F8360A0o
aClock		db 'CLOCK$',0           ; DATA XREF: .data:7F8360A4o
		align 4
aCom1		db 'COM1',0             ; DATA XREF: .data:7F8360A8o
		align 4
aCom2		db 'COM2',0             ; DATA XREF: .data:7F8360ACo
		align 4
aCom3		db 'COM3',0             ; DATA XREF: .data:7F8360B0o
		align 4
aCom4		db 'COM4',0             ; DATA XREF: .data:7F8360B4o
		align 4
aCon		db 'CON',0              ; DATA XREF: .data:7F8360B8o
aLpt1		db 'LPT1',0             ; DATA XREF: .data:7F8360BCo
		align 4
aLpt2		db 'LPT2',0             ; DATA XREF: .data:7F8360C0o
		align 10h
aLpt3		db 'LPT3',0             ; DATA XREF: .data:7F8360C4o
		align 4
aNul		db 'NUL',0              ; DATA XREF: .data:7F8360C8o
aPrn		db 'PRN',0              ; DATA XREF: .data:7F8360CCo
		dd offset aAux		; "AUX"
		dd offset aClock	; "CLOCK$"
		dd offset aCom1		; "COM1"
		dd offset aCom2		; "COM2"
		dd offset aCom3		; "COM3"
		dd offset aCom4		; "COM4"
		dd offset aCon		; "CON"
		dd offset aLpt1		; "LPT1"
		dd offset aLpt2		; "LPT2"
		dd offset aLpt3		; "LPT3"
		dd offset aNul		; "NUL"
		dd offset aPrn		; "PRN"
unk_7F8360D0	db  5Ch	; \		; DATA XREF: sub_7F815497+4Fo
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
dword_7F8360D8	dd 200h			; DATA XREF: sub_7F8156C0+Dr
		db  42h	; B
		db    2
		db    0
		db    0
		db    2
		db    2
		db    0
		db    0
		db    5
		db    2
		db    0
		db    0
		db  0Fh
		db    2
		db    0
		db    0
		db    3
		db    2
		db    0
		db    0
		db  43h	; C
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    4
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db  44h	; D
		db    2
		db    0
		db    0
		db  45h	; E
		db    2
		db    0
		db    0
		db  46h	; F
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db  47h	; G
		db    2
		db    0
		db    0
		db  48h	; H
		db    2
		db    0
		db    0
		db  49h	; I
		db    2
		db    0
		db    0
		db  12h
		db    2
		db    0
		db    0
		db  4Ah	; J
		db    2
		db    0
		db    0
		db  4Bh	; K
		db    2
		db    0
		db    0
		db    8
		db    2
		db    0
		db    0
		db  4Ch	; L
		db    2
		db    0
		db    0
		db  4Dh	; M
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db  4Eh	; N
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    9
		db    2
		db    0
		db    0
		db  50h	; P
		db    2
		db    0
		db    0
		db  51h	; Q
		db    2
		db    0
		db    0
		db  52h	; R
		db    2
		db    0
		db    0
		db  0Ch
		db    2
		db    0
		db    0
		db  53h	; S
		db    2
		db    0
		db    0
		db  54h	; T
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db  53h	; S
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db  55h	; U
		db    2
		db    0
		db    0
		db  56h	; V
		db    2
		db    0
		db    0
		db  4Fh	; O
		db    2
		db    0
		db    0
		db    7
		db    2
		db    0
		db    0
		db  57h	; W
		db    2
		db    0
		db    0
		db    7
		db    2
		db    0
		db    0
		db  56h	; V
		db    2
		db    0
		db    0
		db  56h	; V
		db    2
		db    0
		db    0
		db  56h	; V
		db    2
		db    0
		db    0
		db  56h	; V
		db    2
		db    0
		db    0
		db  56h	; V
		db    2
		db    0
		db    0
		db    6
		db    2
		db    0
		db    0
		db    6
		db    2
		db    0
		db    0
		db    6
		db    2
		db    0
		db    0
		db    7
		db    2
		db    0
		db    0
		db    3
		db    2
		db    0
		db    0
		db  56h	; V
		db    2
		db    0
		db    0
		db    7
		db    2
		db    0
		db    0
		db    7
		db    2
		db    0
		db    0
		db  56h	; V
		db    2
		db    0
		db    0
		db  56h	; V
		db    2
		db    0
		db    0
		db  56h	; V
		db    2
		db    0
		db    0
		db  56h	; V
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db  5Ah	; Z
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db  58h	; X
		db    2
		db    0
		db    0
		db  0Ch
		db    2
		db    0
		db    0
		db  56h	; V
		db    2
		db    0
		db    0
		db  56h	; V
		db    2
		db    0
		db    0
		db  5Bh	; [
		db    2
		db    0
		db    0
		db  56h	; V
		db    2
		db    0
		db    0
		db  56h	; V
		db    2
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  40h	; @
		db    0
		db  30h	; 0
		db    0
		db  20h
		db    0
		db  10h
		db    0
		db    1
		db    0
		db  41h	; A
		db    0
		db  31h	; 1
		db    0
		db  21h	; !
		db    0
		db  11h
		db    0
		db    2
		db    0
		db  42h	; B
		db    0
		db  32h	; 2
		db    0
		db  22h	; "
		db    0
		db  12h
		db    0
		db    0
		db    0
		db    2
		db    0
		db  42h	; B
		db  40h	; @
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
dword_7F83626C	dd 0			; DATA XREF: sub_7F816468+30Ar
					; sub_7F8167EA+55r ...
		db    0
		db    0
		db    0
		db    0
dword_7F836274	dd 0			; DATA XREF: sub_7F816468+35w
					; sub_7F816468+48w ...
word_7F836278	dw 0			; DATA XREF: sub_7F81722B:loc_7F81724Cr
					; sub_7F81722B:loc_7F817288r ...
		align 10h
dword_7F836280	dd 0			; DATA XREF: sub_7F81722B+37r
					; sub_7F81722B+70r ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
unk_7F836410	db    0			; DATA XREF: sub_7F81722B+C1o
					; sub_7F81722B+E0o ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
; CHAR ClassName[]
ClassName	db 'MS Mail32 Notify',0 ; DATA XREF: sub_7F81710C+48o
					; sub_7F8171B7+15o
		align 8
; CHAR WindowName[]
WindowName	db 'MS Mail32 Notification',0 ; DATA XREF: sub_7F81710C+43o
		align 10h
dword_7F836760	dd 0			; DATA XREF: sub_7F812653+6r
					; sub_7F812653+12r ...
dword_7F836764	dd 0			; DATA XREF: sub_7F8173E6+155w
					; sub_7F8173E6+1BBr ...
dword_7F836768	dd 0			; DATA XREF: sub_7F8173E6+13w
					; sub_7F8173E6+7Ar ...
dword_7F83676C	dd 57E40h		; DATA XREF: sub_7F81217E+80r
					; sub_7F8173E6+FEw ...
dword_7F836770	dd 0EA60h		; DATA XREF: sub_7F81217E+8Br
					; sub_7F8173E6+107w
; LPSTR	lpsz
lpsz		dd 0			; DATA XREF: sub_7F8173E6+BCw
					; sub_7F8173E6+224r ...
dword_7F836778	dd 1			; DATA XREF: sub_7F811CD9+11Er
					; sub_7F8173E6+118w ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  1Fh
		db    0
		db    0
		db    0
		db  3Bh	; ;
		db    0
		db    0
		db    0
		db  5Ah	; Z
		db    0
		db    0
		db    0
		db  78h	; x
		db    0
		db    0
		db    0
		db  97h	; �
		db    0
		db    0
		db    0
		db 0B5h	; �
		db    0
		db    0
		db    0
		db 0D4h	; �
		db    0
		db    0
		db    0
		db 0F3h	; �
		db    0
		db    0
		db    0
		db  11h
		db    1
		db    0
		db    0
		db  30h	; 0
		db    1
		db    0
		db    0
		db  4Eh	; N
		db    1
		db    0
		db    0
		db  6Dh	; m
		db    1
		db    0
		db    0
dword_7F8367B4	dd 0			; DATA XREF: sub_7F817E9D+20Er
					; sub_7F817E9D+236w ...
byte_7F8367B8	db 30h			; DATA XREF: sub_7F81AC90+49r
					; sub_7F81AC90+8Ar ...
a123456789abcde	db '123456789ABCDEF',0
		align 4
a?fmt		db '?fmt',0             ; DATA XREF: sub_7F81ADC3+83o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
unk_7F8367D7	db    0			; DATA XREF: sub_7F80FFF8+ABo
					; sub_7F810109+51o ...
; CHAR ReturnedString[]
ReturnedString	dw 0			; DATA XREF: sub_7F80FE90+8Do
					; sub_7F80FE90+C1o ...
; CHAR word_7F8367DA[]
word_7F8367DA	dw 0			; DATA XREF: sub_7F81DCCA+B9o
					; sub_7F81DCCA+129o ...
word_7F8367DC	dw 0			; DATA XREF: sub_7F81EB89+EEr
					; sub_7F81EB89+FBr
word_7F8367DE	dw 0			; DATA XREF: sub_7F81EB89+109r
					; sub_7F81EB89+116r
word_7F8367E0	dw 0			; DATA XREF: sub_7F81EB89+124r
					; sub_7F81EB89+131r
		db    0
		db    0
		db    0
		db    0
byte_7F8367E6	db 0			; DATA XREF: sub_7F81BA1F+F5w
					; sub_7F81BA1F+181w ...
word_7F8367E7	dw 0			; DATA XREF: sub_7F81BA1F+ECw
					; sub_7F81BA1F+1B7w ...
word_7F8367E9	dw 0			; DATA XREF: sub_7F81BA1F+106w
					; sub_7F81BA1F+223w ...
dword_7F8367EB	dd 0			; DATA XREF: sub_7F81BA1F+FCw
					; sub_7F81BA1F+1EDw ...
dword_7F8367EF	dd 0			; DATA XREF: sub_7F81BA1F+155w
					; sub_7F81C56F+318w ...
; const	CHAR sz
sz		db 0			; DATA XREF: sub_7F81BA1F+2F6o
					; sub_7F81BA1F:loc_7F81BD3Fw ...
unk_7F8367F4	db    0			; DATA XREF: sub_7F81BA1F+318o
					; sub_7F81BA1F+327o ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
; const	CHAR byte_7F8369F8
byte_7F8369F8	db 0			; DATA XREF: sub_7F81B4E9+66o
					; sub_7F81B4E9+8Fo ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
byte_7F836A78	db 69h			; DATA XREF: sub_7F81DCCA:loc_7F81DD26r
					; sub_7F81DCCA+63o
aBhidvbipm	db '�Hid��IPM',0
		align 8
dword_7F836A88	dd 74685382h		; DATA XREF: sub_7F81DCCA+3Er
					; sub_7F81DCCA+45o
aBipmvinbbipmvw	db '�IPM�Inb�IPM�Wst�IPM�Out�Hid�Bul�Hid�Sha�HidpPAB�Hid',0
		align 8
dword_7F836AC8	dd 74685382h		; DATA XREF: sub_7F81DCCA:loc_7F81DD4Br
					; sub_7F81DCCA+88o
		db  4Bh	; K
		db  26h	; &
		db    0
		db    0
		db  4Fh	; O
		db  26h	; &
		db    0
		db    0
		db  82h	; �
		db  49h	; I
		db  6Eh	; n
		db  62h	; b
		db  4Ah	; J
		db  26h	; &
		db    0
		db    0
		db  4Eh	; N
		db  26h	; &
		db    0
		db    0
		db  82h	; �
		db  57h	; W
		db  73h	; s
		db  74h	; t
		db  4Dh	; M
		db  26h	; &
		db    0
		db    0
		db  51h	; Q
		db  26h	; &
		db    0
		db    0
		db  82h	; �
		db  4Fh	; O
		db  75h	; u
		db  74h	; t
		db  4Ch	; L
		db  26h	; &
		db    0
		db    0
		db  50h	; P
		db  26h	; &
		db    0
		db    0
		db  82h	; �
		db  42h	; B
		db  75h	; u
		db  6Ch	; l
		db 0E2h	; �
		db    5
		db    0
		db    0
		db 0E5h	; �
		db    5
		db    0
		db    0
		db  82h	; �
		db  53h	; S
		db  68h	; h
		db  61h	; a
		db 0E3h	; �
		db    5
		db    0
		db    0
		db 0E6h	; �
		db    5
		db    0
		db    0
		db  70h	; p
		db  50h	; P
		db  41h	; A
		db  42h	; B
		db 0E4h	; �
		db    5
		db    0
		db    0
		db 0E7h	; �
		db    5
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
aQppab		db 'qpPAB',0            ; DATA XREF: sub_7F81E844:loc_7F81E8A8o
					; sub_7F81E844+69r
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
aJplcvbul	db '�PLC�Bul',0         ; DATA XREF: sub_7F81E844+44o
					; sub_7F81E844+49r
		align 8
aBipmbhid	db '�IPM�Hid',0         ; DATA XREF: sub_7F81D910+7Bo
					; sub_7F81D910+93r
		align 8
byte_7F836B58	db 0			; DATA XREF: sub_7F81EF81o
					; sub_7F81EF87+8o ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
byte_7F836B61	db 0			; DATA XREF: sub_7F81EF87+1Bw
byte_7F836B62	db 0			; DATA XREF: sub_7F81EF87+22w
		db    0
		db    0
byte_7F836B65	db 0			; DATA XREF: sub_7F81EF87+29w
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
byte_7F836B78	db 0			; DATA XREF: sub_7F81EF87+30w
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
byte_7F836BD7	db 0			; DATA XREF: sub_7F81EF87+D2w
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
byte_7F836BF8	db 0			; DATA XREF: sub_7F81EF87+37w
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
dword_7F836C58	dd 0			; DATA XREF: sub_7F81F0AC:loc_7F81F0DAw
					; sub_7F81F20F+41w ...
dword_7F836C5C	dd 0			; DATA XREF: sub_7F81F20F+18Bw
					; sub_7F81F20F+199r ...
dword_7F836C60	dd 0			; DATA XREF: sub_7F811CD9+126r
					; sub_7F817E9D+206r ...
dword_7F836C64	dd 0			; DATA XREF: sub_7F821A34+FDr
					; sub_7F821A34+15Br ...
dword_7F836C68	dd 0			; DATA XREF: sub_7F8207A6+45w
					; sub_7F8207A6+45Aw ...
word_7F836C6C	dw 0			; DATA XREF: sub_7F822894+18w
					; sub_7F822894+26Cr ...
		align 10h
dword_7F836C70	dd 0			; DATA XREF: sub_7F82110E:loc_7F8213ECr
					; sub_7F8219A0+4w ...
word_7F836C74	dw 0			; DATA XREF: sub_7F820E5D+Fw
					; sub_7F820E74+1Ar ...
		align 10h
; CHAR aKb_free_stop_c[]
aKb_free_stop_c	db 'Kb_Free_Stop_Compress',0 ; DATA XREF: sub_7F8216EE+129o
		align 4
; CHAR aKb_free_start_[]
aKb_free_start_	db 'Kb_Free_Start_Compress',0 ; DATA XREF: sub_7F8216EE+10Co
		align 10h
; CHAR aNo_compress[]
aNo_compress	db 'No_Compress',0      ; DATA XREF: sub_7F8216EE+E9o
; CHAR aSecs_till_fast[]
aSecs_till_fast	db 'Secs_Till_Fast_Compress',0 ; DATA XREF: sub_7F8216EE+D5o
; CHAR aPercent_free_0[]
aPercent_free_0	db 'Percent_Free_Stop_Compress',0 ; DATA XREF: sub_7F8216EE+A8o
		align 10h
; CHAR aMmf_0[]
aMmf_0		db 'MMF',0              ; DATA XREF: sub_7F8216EE+8Fo
					; sub_7F8216EE+ADo ...
; CHAR aPercent_free_s[]
aPercent_free_s	db 'Percent_Free_Start_Compress',0 ; DATA XREF: sub_7F8216EE+8Ao
; CHAR aMsmail32_ini_1[]
aMsmail32_ini_1	db 'msmail32.ini',0     ; DATA XREF: sub_7F8216EE+76o
					; sub_7F8216EE:loc_7F8217B3o ...
		align 10h
; CHAR aBoot_descripti[]
aBoot_descripti	db 'boot.description',0 ; DATA XREF: sub_7F821D9A+CCo
					; sub_7F821FF1+1Bo
		align 4
; CHAR aLanguage_dll[]
aLanguage_dll	db 'language.dll',0     ; DATA XREF: sub_7F821D9A+C7o
					; sub_7F821FF1+16o
		align 4
; CHAR aSystem_ini[]
aSystem_ini	db 'system.ini',0       ; DATA XREF: sub_7F821D9A+9Co
					; sub_7F821FF1+2o
		align 10h
; CHAR a_03_3d[]
a_03_3d		db '.%03.3d',0          ; DATA XREF: sub_7F823D4A+121o
		align 10h
a12345678901234	db '123456789012345678901234',0
		align 10h
aC850sort	db 'C850SORT',0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    1
		db    2
		db    3
		db    4
		db    5
		db    6
		db    7
		db    8
		db    9
		db  0Ah
		db  0Bh
		db  0Ch
		db  0Dh
		db  0Eh
		db  0Fh
		db  10h
		db  11h
		db  12h
		db  13h
		db  14h
		db  15h
		db  16h
		db  17h
		db  18h
		db  19h
		db  1Ah
		db  1Bh
		db  1Ch
		db  1Dh
		db  1Eh
		db  1Fh
		db  20h
		db  21h	; !
		db  22h	; "
		db  23h	; #
		db  24h	; $
		db  25h	; %
		db  26h	; &
		db  27h	; '
		db  28h	; (
		db  29h	; )
		db  2Ah	; *
		db  2Bh	; +
		db  2Ch	; ,
		db  2Dh	; -
		db  2Eh	; .
		db  2Fh	; /
		db  4Fh	; O
		db  50h	; P
		db  51h	; Q
		db  52h	; R
		db  53h	; S
		db  54h	; T
		db  55h	; U
		db  56h	; V
		db  57h	; W
		db  58h	; X
		db  30h	; 0
		db  31h	; 1
		db  32h	; 2
		db  33h	; 3
		db  34h	; 4
		db  35h	; 5
		db  36h	; 6
		db  59h	; Y
		db  6Ah	; j
		db  6Ch	; l
		db  70h	; p
		db  74h	; t
		db  7Eh	; ~
		db  80h	; �
		db  82h	; �
		db  84h	; �
		db  8Fh	; �
		db  91h	; �
		db  93h	; �
		db  95h	; �
		db  98h	; �
		db  9Ch	; �
		db 0ABh	; �
		db 0AFh	; �
		db 0B1h	; �
		db 0B3h	; �
		db 0B6h	; �
		db 0B8h	; �
		db 0C2h	; �
		db 0C4h	; �
		db 0C6h	; �
		db 0C8h	; �
		db 0CDh	; �
		db  37h	; 7
		db  38h	; 8
		db  39h	; 9
		db  3Ah	; :
		db  3Bh	; ;
		db  3Ch	; <
		db  59h	; Y
		db  6Ah	; j
		db  6Ch	; l
		db  70h	; p
		db  74h	; t
		db  7Eh	; ~
		db  80h	; �
		db  82h	; �
		db  84h	; �
		db  8Fh	; �
		db  91h	; �
		db  93h	; �
		db  95h	; �
		db  98h	; �
		db  9Ch	; �
		db 0ABh	; �
		db 0AFh	; �
		db 0B1h	; �
		db 0B3h	; �
		db 0B6h	; �
		db 0B8h	; �
		db 0C2h	; �
		db 0C4h	; �
		db 0C6h	; �
		db 0C8h	; �
		db 0CDh	; �
		db  3Dh	; =
		db  3Eh	; >
		db  3Fh	; ?
		db  40h	; @
		db  41h	; A
		db  6Ch	; l
		db 0B8h	; �
		db  74h	; t
		db  59h	; Y
		db  59h	; Y
		db  59h	; Y
		db  59h	; Y
		db  6Ch	; l
		db  74h	; t
		db  74h	; t
		db  74h	; t
		db  84h	; �
		db  84h	; �
		db  84h	; �
		db  59h	; Y
		db  59h	; Y
		db  74h	; t
		db  68h	; h
		db  68h	; h
		db  9Ch	; �
		db  9Ch	; �
		db  9Ch	; �
		db 0B8h	; �
		db 0B8h	; �
		db 0C8h	; �
		db  9Ch	; �
		db 0B8h	; �
		db  9Ch	; �
		db  42h	; B
		db  9Ch	; �
		db  43h	; C
		db  44h	; D
		db  59h	; Y
		db  84h	; �
		db  9Ch	; �
		db 0B8h	; �
		db  98h	; �
		db  98h	; �
		db  67h	; g
		db 0AAh	; �
		db  45h	; E
		db  46h	; F
		db 0CFh	; �
		db  47h	; G
		db  48h	; H
		db  49h	; I
		db  4Ah	; J
		db  4Bh	; K
		db 0D0h	; �
		db 0D1h	; �
		db 0D2h	; �
		db 0D3h	; �
		db 0D4h	; �
		db  59h	; Y
		db  59h	; Y
		db  59h	; Y
		db  4Ch	; L
		db 0D5h	; �
		db 0D6h	; �
		db 0D7h	; �
		db 0D8h	; �
		db  4Dh	; M
		db  4Eh	; N
		db 0D9h	; �
		db 0DAh	; �
		db 0DBh	; �
		db 0DCh	; �
		db 0DDh	; �
		db 0DEh	; �
		db 0DFh	; �
		db  59h	; Y
		db  59h	; Y
		db 0E0h	; �
		db 0E1h	; �
		db 0E2h	; �
		db 0E3h	; �
		db 0E4h	; �
		db 0E5h	; �
		db 0E6h	; �
		db 0E7h	; �
		db  72h	; r
		db  72h	; r
		db  74h	; t
		db  74h	; t
		db  74h	; t
		db  84h	; �
		db  84h	; �
		db  84h	; �
		db  84h	; �
		db 0E8h	; �
		db 0E9h	; �
		db 0EAh	; �
		db 0EBh	; �
		db 0ECh	; �
		db  84h	; �
		db 0EDh	; �
		db  9Ch	; �
		db 0B5h	; �
		db  9Ch	; �
		db  9Ch	; �
		db  9Ch	; �
		db  9Ch	; �
		db  97h	; �
		db 0ADh	; �
		db 0ADh	; �
		db 0B8h	; �
		db 0B8h	; �
		db 0B8h	; �
		db 0C8h	; �
		db 0C8h	; �
		db 0EEh	; �
		db 0EFh	; �
		db 0F0h	; �
		db 0F1h	; �
		db 0F2h	; �
		db 0F3h	; �
		db 0F4h	; �
		db 0F5h	; �
		db 0F6h	; �
		db 0F7h	; �
		db 0F8h	; �
		db 0F9h	; �
		db 0FAh	; �
		db 0FBh	; �
		db 0FDh	; �
		db 0FCh	; �
		db 0FEh	; �
		db 0FFh
		db    0
		db    1
		db    2
		db    3
		db    4
		db    5
		db    6
		db    7
		db    8
		db    9
		db  0Ah
		db  0Bh
		db  0Ch
		db  0Dh
		db  0Eh
		db  0Fh
		db  10h
		db  11h
		db  12h
		db  13h
		db  14h
		db  15h
		db  16h
		db  17h
		db  18h
		db  19h
		db  1Ah
		db  1Bh
		db  1Ch
		db  1Dh
		db  1Eh
		db  1Fh
		db  20h
		db  21h	; !
		db  22h	; "
		db  23h	; #
		db  24h	; $
		db  25h	; %
		db  26h	; &
		db  27h	; '
		db  28h	; (
		db  29h	; )
		db  2Ah	; *
		db  2Bh	; +
		db  2Ch	; ,
		db  2Dh	; -
		db  2Eh	; .
		db  2Fh	; /
		db  4Fh	; O
		db  50h	; P
		db  51h	; Q
		db  52h	; R
		db  53h	; S
		db  54h	; T
		db  55h	; U
		db  56h	; V
		db  57h	; W
		db  58h	; X
		db  30h	; 0
		db  31h	; 1
		db  32h	; 2
		db  33h	; 3
		db  34h	; 4
		db  35h	; 5
		db  36h	; 6
		db  5Ah	; Z
		db  6Bh	; k
		db  6Dh	; m
		db  71h	; q
		db  75h	; u
		db  7Fh	; 
		db  81h	; �
		db  83h	; �
		db  85h	; �
		db  90h	; �
		db  92h	; �
		db  94h	; �
		db  96h	; �
		db  99h	; �
		db  9Dh	; �
		db 0ACh	; �
		db 0B0h	; �
		db 0B2h	; �
		db 0B4h	; �
		db 0B7h	; �
		db 0B9h	; �
		db 0C3h	; �
		db 0C5h	; �
		db 0C7h	; �
		db 0C9h	; �
		db 0CEh	; �
		db  37h	; 7
		db  38h	; 8
		db  39h	; 9
		db  3Ah	; :
		db  3Bh	; ;
		db  3Ch	; <
		db  59h	; Y
		db  6Ah	; j
		db  6Ch	; l
		db  70h	; p
		db  74h	; t
		db  7Eh	; ~
		db  80h	; �
		db  82h	; �
		db  84h	; �
		db  8Fh	; �
		db  91h	; �
		db  93h	; �
		db  95h	; �
		db  98h	; �
		db  9Ch	; �
		db 0ABh	; �
		db 0AFh	; �
		db 0B1h	; �
		db 0B3h	; �
		db 0B6h	; �
		db 0B8h	; �
		db 0C2h	; �
		db 0C4h	; �
		db 0C6h	; �
		db 0C8h	; �
		db 0CDh	; �
		db  3Dh	; =
		db  3Eh	; >
		db  3Fh	; ?
		db  40h	; @
		db  41h	; A
		db  6Fh	; o
		db 0BEh	; �
		db  76h	; v
		db  61h	; a
		db  5Fh	; _
		db  5Dh	; ]
		db  63h	; c
		db  6Eh	; n
		db  7Ch	; |
		db  7Ah	; z
		db  78h	; x
		db  8Bh	; �
		db  8Dh	; �
		db  89h	; �
		db  60h	; `
		db  64h	; d
		db  77h	; w
		db  68h	; h
		db  69h	; i
		db 0A4h	; �
		db 0A2h	; �
		db 0A0h	; �
		db 0C0h	; �
		db 0BCh	; �
		db 0CCh	; �
		db 0A3h	; �
		db 0BFh	; �
		db 0A8h	; �
		db  42h	; B
		db 0A9h	; �
		db  43h	; C
		db  44h	; D
		db  5Bh	; [
		db  87h	; �
		db  9Eh	; �
		db 0BAh	; �
		db  9Ah	; �
		db  9Bh	; �
		db  67h	; g
		db 0AAh	; �
		db  45h	; E
		db  46h	; F
		db 0CFh	; �
		db  47h	; G
		db  48h	; H
		db  49h	; I
		db  4Ah	; J
		db  4Bh	; K
		db 0D0h	; �
		db 0D1h	; �
		db 0D2h	; �
		db 0D3h	; �
		db 0D4h	; �
		db  5Ch	; \
		db  62h	; b
		db  5Eh	; ^
		db  4Ch	; L
		db 0D5h	; �
		db 0D6h	; �
		db 0D7h	; �
		db 0D8h	; �
		db  4Dh	; M
		db  4Eh	; N
		db 0D9h	; �
		db 0DAh	; �
		db 0DBh	; �
		db 0DCh	; �
		db 0DDh	; �
		db 0DEh	; �
		db 0DFh	; �
		db  65h	; e
		db  66h	; f
		db 0E0h	; �
		db 0E1h	; �
		db 0E2h	; �
		db 0E3h	; �
		db 0E4h	; �
		db 0E5h	; �
		db 0E6h	; �
		db 0E7h	; �
		db  72h	; r
		db  73h	; s
		db  7Dh	; }
		db  7Bh	; {
		db  79h	; y
		db  86h	; �
		db  88h	; �
		db  8Eh	; �
		db  8Ch	; �
		db 0E8h	; �
		db 0E9h	; �
		db 0EAh	; �
		db 0EBh	; �
		db 0ECh	; �
		db  8Ah	; �
		db 0EDh	; �
		db  9Fh	; �
		db 0B5h	; �
		db 0A5h	; �
		db 0A1h	; �
		db 0A6h	; �
		db 0A7h	; �
		db  97h	; �
		db 0ADh	; �
		db 0AEh	; �
		db 0BBh	; �
		db 0C1h	; �
		db 0BDh	; �
		db 0CAh	; �
		db 0CBh	; �
		db 0EEh	; �
		db 0EFh	; �
		db 0F0h	; �
		db 0F1h	; �
		db 0F2h	; �
		db 0F3h	; �
		db 0F4h	; �
		db 0F5h	; �
		db 0F6h	; �
		db 0F7h	; �
		db 0F8h	; �
		db 0F9h	; �
		db 0FAh	; �
		db 0FBh	; �
		db 0FCh	; �
		db 0FDh	; �
		db 0FEh	; �
		db 0FFh
		db    0
		db    1
		db    2
		db    3
		db    4
		db    5
		db    6
		db    7
		db    8
		db    9
		db  0Ah
		db  0Bh
		db  0Ch
		db  0Dh
		db  0Eh
		db  0Fh
		db  10h
		db  11h
		db  12h
		db  13h
		db  14h
		db  15h
		db  16h
		db  17h
		db  18h
		db  19h
		db  1Ah
		db  1Bh
		db  1Ch
		db  1Dh
		db  1Eh
		db  1Fh
		db  20h
		db  21h	; !
		db  22h	; "
		db  23h	; #
		db  24h	; $
		db  25h	; %
		db  26h	; &
		db  27h	; '
		db  28h	; (
		db  29h	; )
		db  2Ah	; *
		db  2Bh	; +
		db  2Ch	; ,
		db  2Dh	; -
		db  2Eh	; .
		db  2Fh	; /
		db  4Fh	; O
		db  50h	; P
		db  51h	; Q
		db  52h	; R
		db  53h	; S
		db  54h	; T
		db  55h	; U
		db  56h	; V
		db  57h	; W
		db  58h	; X
		db  30h	; 0
		db  31h	; 1
		db  32h	; 2
		db  33h	; 3
		db  34h	; 4
		db  35h	; 5
		db  36h	; 6
		db  59h	; Y
		db  6Ah	; j
		db  6Ch	; l
		db  70h	; p
		db  74h	; t
		db  7Eh	; ~
		db  80h	; �
		db  82h	; �
		db  84h	; �
		db  8Fh	; �
		db  91h	; �
		db  93h	; �
		db  95h	; �
		db  98h	; �
		db  9Ch	; �
		db 0ABh	; �
		db 0AFh	; �
		db 0B1h	; �
		db 0B3h	; �
		db 0B6h	; �
		db 0B8h	; �
		db 0C2h	; �
		db 0C4h	; �
		db 0C6h	; �
		db 0C8h	; �
		db 0CDh	; �
		db  37h	; 7
		db  38h	; 8
		db  39h	; 9
		db  3Ah	; :
		db  3Bh	; ;
		db  3Ch	; <
		db  59h	; Y
		db  6Ah	; j
		db  6Ch	; l
		db  70h	; p
		db  74h	; t
		db  7Eh	; ~
		db  80h	; �
		db  82h	; �
		db  84h	; �
		db  8Fh	; �
		db  91h	; �
		db  93h	; �
		db  95h	; �
		db  98h	; �
		db  9Ch	; �
		db 0ABh	; �
		db 0AFh	; �
		db 0B1h	; �
		db 0B3h	; �
		db 0B6h	; �
		db 0B8h	; �
		db 0C2h	; �
		db 0C4h	; �
		db 0C6h	; �
		db 0C8h	; �
		db 0CDh	; �
		db  3Dh	; =
		db  3Eh	; >
		db  3Fh	; ?
		db  40h	; @
		db  41h	; A
		db  6Eh	; n
		db 0BEh	; �
		db  76h	; v
		db  61h	; a
		db  5Fh	; _
		db  5Dh	; ]
		db  63h	; c
		db  6Eh	; n
		db  7Ch	; |
		db  7Ah	; z
		db  78h	; x
		db  8Bh	; �
		db  8Dh	; �
		db  89h	; �
		db  5Fh	; _
		db  63h	; c
		db  76h	; v
		db  68h	; h
		db  68h	; h
		db 0A4h	; �
		db 0A2h	; �
		db 0A0h	; �
		db 0C0h	; �
		db 0BCh	; �
		db 0CCh	; �
		db 0A2h	; �
		db 0BEh	; �
		db 0A8h	; �
		db  42h	; B
		db 0A8h	; �
		db  43h	; C
		db  44h	; D
		db  5Bh	; [
		db  87h	; �
		db  9Eh	; �
		db 0BAh	; �
		db  9Ah	; �
		db  9Ah	; �
		db  67h	; g
		db 0AAh	; �
		db  45h	; E
		db  46h	; F
		db 0CFh	; �
		db  47h	; G
		db  48h	; H
		db  49h	; I
		db  4Ah	; J
		db  4Bh	; K
		db 0D0h	; �
		db 0D1h	; �
		db 0D2h	; �
		db 0D3h	; �
		db 0D4h	; �
		db  5Bh	; [
		db  61h	; a
		db  5Dh	; ]
		db  4Ch	; L
		db 0D5h	; �
		db 0D6h	; �
		db 0D7h	; �
		db 0D8h	; �
		db  4Dh	; M
		db  4Eh	; N
		db 0D9h	; �
		db 0DAh	; �
		db 0DBh	; �
		db 0DCh	; �
		db 0DDh	; �
		db 0DEh	; �
		db 0DFh	; �
		db  65h	; e
		db  65h	; e
		db 0E0h	; �
		db 0E1h	; �
		db 0E2h	; �
		db 0E3h	; �
		db 0E4h	; �
		db 0E5h	; �
		db 0E6h	; �
		db 0E7h	; �
		db  72h	; r
		db  72h	; r
		db  7Ch	; |
		db  7Ah	; z
		db  78h	; x
		db  86h	; �
		db  87h	; �
		db  8Dh	; �
		db  8Bh	; �
		db 0E8h	; �
		db 0E9h	; �
		db 0EAh	; �
		db 0EBh	; �
		db 0ECh	; �
		db  89h	; �
		db 0EDh	; �
		db  9Eh	; �
		db 0B5h	; �
		db 0A4h	; �
		db 0A0h	; �
		db 0A6h	; �
		db 0A6h	; �
		db  97h	; �
		db 0ADh	; �
		db 0ADh	; �
		db 0BAh	; �
		db 0C0h	; �
		db 0BCh	; �
		db 0CAh	; �
		db 0CAh	; �
		db 0EEh	; �
		db 0EFh	; �
		db 0F0h	; �
		db 0F1h	; �
		db 0F2h	; �
		db 0F3h	; �
		db 0F4h	; �
		db 0F5h	; �
		db 0F6h	; �
		db 0F7h	; �
		db 0F8h	; �
		db 0F9h	; �
		db 0FAh	; �
		db 0FBh	; �
		db 0FDh	; �
		db 0FCh	; �
		db 0FEh	; �
		db 0FFh
		db 0FFh
		db 0FFh
		db 0FFh
		db 0FFh
		db    0
		db    0
		db    0
		db    0
dword_7F837098	dd 0			; DATA XREF: sub_7F814F94+8r
					; sub_7F815037+Br ...
dword_7F83709C	dd 0			; DATA XREF: sub_7F814F94+10r
					; sub_7F815037+13r ...
dword_7F8370A0	dd 0			; DATA XREF: sub_7F8241ED+Dr
					; sub_7F8241ED+36w ...
		align 8
dword_7F8370A8	dd 0			; DATA XREF: sub_7F8241ED+16o
					; sub_7F8241ED+71w ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
; LPCVOID pMem
pMem		dd 0			; DATA XREF: sub_7F8241ED:loc_7F824294w
					; sub_7F8242A1:loc_7F8242C8r ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
dword_7F8373D0	dd 0			; DATA XREF: sub_7F8241ED+3Dw
					; sub_7F8242A1+73w ...
dword_7F8373D4	dd 1			; DATA XREF: sub_7F814EF3+18w
					; sub_7F8241ED+4Fr ...
dword_7F8373D8	dd 0			; DATA XREF: sub_7F824364+43w
					; sub_7F824364+66w ...
dword_7F8373DC	dd 0			; DATA XREF: sub_7F824364+49w
					; sub_7F824364+6Cw ...
dword_7F8373E0	dd 0			; DATA XREF: sub_7F824364+Dr
					; sub_7F824364+36w ...
		align 8
dword_7F8373E8	dd 0			; DATA XREF: sub_7F824364+16o
					; sub_7F824364+71w ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
; LPCVOID dword_7F837580
dword_7F837580	dd 0			; DATA XREF: sub_7F824364:loc_7F82440Bw
					; sub_7F824418:loc_7F82443Fr ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
dword_7F837710	dd 0			; DATA XREF: sub_7F824364+3Dw
					; sub_7F824418+73w
dword_7F837714	dd 1			; DATA XREF: sub_7F824364+4Fr
					; sub_7F824418+2Er
; CHAR aMessageFinders[]
aMessageFinders	db 'Message Finders',0  ; DATA XREF: sub_7F825DC6+12o
; CHAR aMsmail32_ini_2[]
aMsmail32_ini_2	db 'msmail32.ini',0     ; DATA XREF: sub_7F825DC6+Co
		align 4
; CHAR aPointsperstep[]
aPointsperstep	db 'PointsPerStep',0    ; DATA XREF: sub_7F825DC6+21o
		align 4
; CHAR aPointsperaddfl[]
aPointsperaddfl	db 'PointsPerAddFlush',0 ; DATA XREF: sub_7F825DC6+3Co
		align 10h
; CHAR aPointsperdelfl[]
aPointsperdelfl	db 'PointsPerDelFlush',0 ; DATA XREF: sub_7F825DC6+57o
		align 8
; CHAR aPointsperfolde[]
aPointsperfolde	db 'PointsPerFolder',0  ; DATA XREF: sub_7F825DC6+72o
; CHAR aPointspermessa[]
aPointspermessa	db 'PointsPerMessage',0 ; DATA XREF: sub_7F825DC6+8Do
		align 10h
; CHAR aPointsopenmess[]
aPointsopenmess	db 'PointsOpenMessage',0 ; DATA XREF: sub_7F825DC6+A8o
		align 8
; CHAR aPointsfoldermi[]
aPointsfoldermi	db 'PointsFolderMismatch',0 ; DATA XREF: sub_7F825DC6+C3o
		align 10h
; CHAR aMatchesperstep[]
aMatchesperstep	db 'MatchesPerStep',0   ; DATA XREF: sub_7F825DC6+DEo
		align 10h
; CHAR aInterval[]
aInterval	db 'Interval',0         ; DATA XREF: sub_7F825DC6+F9o
		align 10h
; CHAR aBoost[]
aBoost		db 'Boost',0            ; DATA XREF: sub_7F825DC6+111o
		align 4
word_7F8377F8	dw 28h			; DATA XREF: sub_7F825DC6+17r
					; sub_7F825DC6+34w ...
		align 4
word_7F8377FC	dw 28h			; DATA XREF: sub_7F825DC6+2Dr
					; sub_7F825DC6+48w ...
		align 10h
word_7F837800	dw 1Eh			; DATA XREF: sub_7F825DC6+4Fr
					; sub_7F825DC6+63w ...
		align 4
word_7F837804	dw 0Ah			; DATA XREF: sub_7F825DC6+6Ar
					; sub_7F825DC6+7Ew ...
		align 4
word_7F837808	dw 2			; DATA XREF: sub_7F825DC6+85r
					; sub_7F825DC6+99w ...
		align 4
word_7F83780C	dw 5			; DATA XREF: sub_7F825DC6+A0r
					; sub_7F825DC6+B4w ...
		align 10h
word_7F837810	dw 1			; DATA XREF: sub_7F825DC6+BBr
					; sub_7F825DC6+CFw ...
		align 4
word_7F837814	dw 200h			; DATA XREF: sub_7F825DC6+D6r
					; sub_7F825DC6+EAw ...
		align 4
dword_7F837818	dd 1			; DATA XREF: sub_7F825DC6+F1r
					; sub_7F825DC6+106w
; INT nDefault
nDefault	dd 1			; DATA XREF: sub_7F825DC6+10Br
					; sub_7F825DC6+123w ...
dword_7F837820	dd 0			; DATA XREF: sub_7F8261A0+27Bw
					; sub_7F8261A0+2C8w ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
word_7F838020	dw 0			; DATA XREF: sub_7F8261A0+6Cw
					; sub_7F8261A0+272r ...
		align 4
dword_7F838024	dd 0			; DATA XREF: sub_7F826027+32r
					; sub_7F826027+A2w ...
word_7F838028	dw 0			; DATA XREF: sub_7F826027+39w
					; sub_7F826027+5Cw ...
		align 4
word_7F83802C	dw 28h			; DATA XREF: sub_7F826027:loc_7F826053r
		align 10h
dword_7F838030	dd 64h			; DATA XREF: sub_7F81217E+E0r
					; sub_7F82613E+9r
dword_7F838034	dd 0			; DATA XREF: sub_7F812369+81w
					; sub_7F8260F1+39w ...
dword_7F838038	dd 0			; DATA XREF: sub_7F812369+6Er
					; sub_7F812369+77o ...
dword_7F83803C	dd 0			; DATA XREF: sub_7F82695E+24w
					; sub_7F82695E+2Do ...
dword_7F838040	dd 0			; DATA XREF: sub_7F82695E+CDw
					; sub_7F82695E+E1r ...
dword_7F838044	dd 0			; DATA XREF: sub_7F82695E+ABw
					; sub_7F82695E+100w ...
word_7F838048	dw 0			; DATA XREF: sub_7F8265CF+45r
					; sub_7F8265CF+51w ...
		align 10h
		db  19h
		db  29h	; )
		db  1Fh
		db    4
		db  23h	; #
		db  13h
		db  32h	; 2
		db  2Eh	; .
		db  3Fh	; ?
		db    7
		db  39h	; 9
		db  2Ah	; *
		db    5
		db  3Dh	; =
		db  14h
		db    0
		db  24h	; $
		db  14h
		db  22h	; "
		db  39h	; 9
		db  1Eh
		db  2Eh	; .
		db  0Fh
		db  13h
		db    2
		db  3Ah	; :
		db    4
		db  17h
		db  38h	; 8
		db    0
		db  29h	; )
		db  3Dh	; =
word_7F838070	dw 0			; DATA XREF: sub_7F810955+3w
					; sub_7F810955+A5w ...
		align 8
; LPCVOID dword_7F838078
dword_7F838078	dd 0			; DATA XREF: sub_7F810875+6r
					; sub_7F810875+2Dw ...
dword_7F83807C	dd 0			; DATA XREF: sub_7F810875+16w
					; sub_7F810875+1Fr ...
; int dword_7F838080
dword_7F838080	dd 0			; DATA XREF: sub_7F810875+36w
					; sub_7F812460+CEw ...
; __int16 word_7F838084
word_7F838084	dw 0			; DATA XREF: sub_7F810875+25w
					; sub_7F812460+116w ...
		align 4
word_7F838088	dw 0			; DATA XREF: sub_7F82A93C+6r
					; sub_7F82A93C+34w ...
		align 4
dword_7F83808C	dd 0			; DATA XREF: sub_7F82A93C+22w
					; sub_7F82A93C+70r ...
dword_7F838090	dd 0			; DATA XREF: sub_7F82A93C+19w
					; sub_7F82A93C+60r ...
word_7F838094	dw 0			; DATA XREF: sub_7F82A93C+3Cw
					; sub_7F82A9CA+2Fr ...
		align 4
dword_7F838098	dd 0			; DATA XREF: sub_7F81F0AC+88w
					; sub_7F81F0AC+E3w ...
dword_7F83809C	dd 0			; DATA XREF: sub_7F81F0AC+92w
					; sub_7F81F0AC+D4r ...
dword_7F8380A0	dd 0			; DATA XREF: sub_7F82ABB4+3Cw
					; sub_7F82AC0C+3Bo ...
unk_7F8380A4	db    0			; DATA XREF: sub_7F82ABB4+35o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
dword_7F83817C	dd 0			; DATA XREF: sub_7F82ABB4+Aw
					; sub_7F82ABB4+4Eo ...
dword_7F838180	dd 0			; DATA XREF: sub_7F82ABB4+14w
					; sub_7F82AC0C:loc_7F82AC3Cr ...
dword_7F838184	dd 0			; DATA XREF: sub_7F82ABB4w
					; sub_7F82AC0Cr
; CHAR PrefixString[4]
PrefixString	db 'msm',0              ; DATA XREF: sub_7F82AB76+23o
		align 10h
; CHAR a_bak[]
a_bak		db '.BAK',0             ; DATA XREF: sub_7F823D4A:loc_7F823E05o
					; sub_7F823D4A+EDo ...
		align 4
; CHAR aStoreprogressi[]
aStoreprogressi	db 'StoreProgressIndicatorClass32',0 ; DATA XREF: sub_7F82AF85+2Bo
					; sub_7F82B14A+2C8o ...
		align 4
aPressEscToCanc	db 'Press ESC to cancel.',0 ; DATA XREF: sub_7F8207A6+36Fo
					; sub_7F823870+15Eo ...
		align 10h
aValidatingRepa	db 'Validating/repairing message file',0 ; DATA XREF: sub_7F8207A6+374o
					; sub_7F823870+163o ...
		align 8
aMessageFileV_0	db 'Message file verification/repair has been canceled.',0
					; DATA XREF: .data:7F838E44o
		align 10h
aCheckingThisMa	db 'Checking this mail file may require several hours.  The computer '
					; DATA XREF: .data:7F838E48o
		db 'will not be available for other work while the file is being vali'
		db 'dated.  Do you want to proceed?',0
		align 8
aRepairingThisM	db 'Repairing this mail file may require several hours.  The computer'
					; DATA XREF: .data:7F838E4Co
		db ' will not be available for other work while the file is being rep'
		db 'aired.  Do you want to proceed?',0
		align 10h
; CHAR aDoYouWantToHav[]
aDoYouWantToHav	db 'Do you want to have your message file checked for possible incons'
					; DATA XREF: sub_7F823B75:loc_7F823BBCo
					; .data:7F838E50o
		db 'istencies?  Any problems found in the message file will be correc'
		db 'ted.  Verification may take up to several hours depending on the '
		db 'number of messages you have in your message file.',0
		align 4
; CHAR aAnInconsistenc[]
aAnInconsistenc	db 'An inconsistency has been detected in the mail message file.  Thi'
					; DATA XREF: sub_7F823B75+2Fo
					; .data:7F838E54o
		db 's problem must be repaired before the mail file can continue to b'
		db 'e used.  Repairs may take up to several hours depending on the nu'
		db 'mber of messages you have in your message file.',0
		align 10h
; CHAR aCancel[]
aCancel		db 'Cancel',0           ; DATA XREF: sub_7F823B75+66o
					; .data:7F838E58o
		align 4
; CHAR aCheckFile[]
aCheckFile	db '&Check File',0      ; DATA XREF: sub_7F823B75+58o
					; .data:7F838E5Co
		align 8
aRepairNow	db '&Repair Now',0      ; DATA XREF: sub_7F823B75+40o
					; .data:7F838E60o
		align 8
aMailCouldNotSu	db 'Mail could not successfully backup your current message file.',0
					; DATA XREF: sub_7F823870+268o
					; sub_7F823870+288o ...
		align 4
aPleaseContactY	db 'Please contact your system administrator to restore your current '
					; DATA XREF: sub_7F823870+263o
					; sub_7F823870+2DDo ...
		db 'message file.',0
		align 4
aPleaseExitAndR	db 'Please Exit and restart Mail.  If mail fails to start, contact yo'
					; DATA XREF: sub_7F823870+283o
					; .data:7F838E6Co
		db 'ur system administrator.',0
		align 8
aMessageFileVer	db 'Message file verification/repair may require more disk space than'
					; DATA XREF: sub_7F823870+129o
					; .data:7F838E70o
		db ' is currently available.',0
		align 8
aToContinueWith	db 'To continue with the verification/repair process, choose OK.',0
					; DATA XREF: sub_7F823870+124o
					; .data:7F838E74o
		align 4
aInconsistancie	db 'Inconsistancies in your message file could not be repaired.',0
					; DATA XREF: sub_7F823870+2E2o
					; .data:7F838E78o
		align 8
aValidating	db 'Validating',0       ; DATA XREF: .data:7F838E7Co
		align 8
aCompressing	db 'Compressing',0      ; DATA XREF: .data:7F838E80o
		align 8
aRepairing	db 'Repairing',0        ; DATA XREF: .data:7F838E84o
		align 8
aSMessageFileSt	db '%s message file: Stage %d of %d possible stages',0Ah
					; DATA XREF: .data:7F838E88o
		db '%s',0
		align 10h
aCheckingMessag	db 'Checking message file map...',0 ; DATA XREF: .data:7F838E8Co
		align 10h
aBackingUpValid	db 'Backing up validated messages and folders...',0
					; DATA XREF: .data:7F838E90o
		align 10h
aSearchingUnuse	db 'Searching unused space for items...',0 ; DATA XREF: .data:7F838E94o
		align 8
aValidatingAllM	db 'Validating all messages, attachments and folders...',0
					; DATA XREF: .data:7F838E98o
		align 10h
aSearchingForLo	db 'Searching for lost messages, attachments and folders...',0
					; DATA XREF: .data:7F838E9Co
aUpdatingAllMes	db 'Updating all message finder views...',0 ; DATA XREF: .data:7F838EA0o
		align 10h
aWritingMessage	db 'Writing message file map changes...',0 ; DATA XREF: .data:7F838EA4o
		align 8
aDeletingUnrefe	db 'Deleting unreferenced messages...',0 ; DATA XREF: .data:7F838EA8o
		align 10h
aCopyingMovingV	db 'Copying/Moving validated messages...',0 ; DATA XREF: .data:7F838EACo
		align 4
aExportingMessa	db 'Exporting messages to backup message file...',0
					; DATA XREF: .data:7F838EB0o
		align 4
aResortingFolde	db 'Resorting folder...',0 ; DATA XREF: .data:7F838EB4o
		align 10h
aSavingAttachme	db 'Saving attachments...',0 ; DATA XREF: .data:7F838EB8o
		align 4
aRebuildingMess	db 'Rebuilding message finder...',0 ; DATA XREF: .data:7F838EBCo
		align 4
aBackingUpMessa	db 'Backing up message file...',0 ; DATA XREF: .data:7F838EC0o
		align 8
aMovingMessageF	db 'Moving message file...',0 ; DATA XREF: .data:7F838EC4o
		align 10h
aCompleteMessag	db 'Complete message file compression...',0 ; DATA XREF: .data:7F838EC8o
		align 4
aRebuildingMe_0	db 'Rebuilding message folder...',0 ; DATA XREF: .data:7F838ECCo
		align 4
; CHAR aLostAndFound[]
aLostAndFound	db 'Lost and Found',0   ; DATA XREF: sub_7F81E844+A0o
					; sub_7F81E844+ADo ...
		align 4
aLostAndFoundN	db 'Lost and Found %n',0 ; DATA XREF: sub_7F81E844+10Ao
					; .data:7F838ED4o
		align 10h
; CHAR aOrphanedMessag[]
aOrphanedMessag	db 'Orphaned messages',0 ; DATA XREF: sub_7F81E844:loc_7F81E905o
					; sub_7F81E844+CEo ...
		align 8
; CHAR aThisMessageCou[]
aThisMessageCou	db 'This message could not be fully recovered.',0
					; DATA XREF: sub_7F81EB89+383o
					; .data:7F838EDCo
		align 8
aOrphanFolderN	db 'Orphan folder %n',0 ; DATA XREF: sub_7F81DCCA+11Fo
					; .data:7F838EE0o
		align 10h
; CHAR aAnOrphanedFold[]
aAnOrphanedFold	db 'An orphaned folder',0 ; DATA XREF: sub_7F81DCCA+144o
					; sub_7F81DCCA+14Fo ...
		align 8
; CHAR aMicrosoftMai_0[]
aMicrosoftMai_0	db 'Microsoft Mail',0   ; DATA XREF: sub_7F823870+12Eo
					; sub_7F823870+26Do ...
		align 4
aMsMail32Appfra	db 'MS Mail32 Appframe',0 ; DATA XREF: .data:7F838EECo
		align 10h
aInbox		db 'Inbox',0            ; DATA XREF: .data:7F838EF0o
		align 4
aSentMail	db 'Sent mail',0        ; DATA XREF: .data:7F838EF4o
		align 8
aOutbox		db 'Outbox',0           ; DATA XREF: .data:7F838EF8o
		align 10h
aWastebasket	db 'Wastebasket',0      ; DATA XREF: .data:7F838EFCo
		align 10h
aMailThatHasBee	db 'Mail that has been received.',0 ; DATA XREF: .data:7F838F00o
		align 10h
aMailThatHasB_0	db 'Mail that has been sent.',0 ; DATA XREF: .data:7F838F04o
		align 10h
aMailThatWillBe	db 'Mail that will be sent.',0 ; DATA XREF: .data:7F838F08o
aMailThatHasB_1	db 'Mail that has been deleted.',0 ; DATA XREF: .data:7F838F0Co
		align 8
aRe		db 'RE: ',0             ; DATA XREF: .data:7F838F10o
		align 10h
aFw		db 'FW: ',0             ; DATA XREF: .data:7F838F14o
		align 4
asc_7F838BD8	db '----------',0       ; DATA XREF: .data:7F838F18o
		align 4
asc_7F838BE4	db 0Dh,0Ah,0		; DATA XREF: .data:7F838F1Co
		align 4
aHigh		db 'High',0             ; DATA XREF: .data:7F838F20o
		db    0
		db    0
		db    0
unk_7F838BF0	db    0			; DATA XREF: .data:7F838F24o
		db    0
		db    0
		db    0
aLow		db 'Low',0              ; DATA XREF: .data:7F838F28o
aSystemAdminist	db 'System Administrator',0 ; DATA XREF: .data:7F838F2Co
		db    0
		db    0
		db    0
aUndeliverableM	db 'Undeliverable Mail',0 ; DATA XREF: .data:7F838F30o
		db    0
asc_7F838C24	db ': ',0               ; DATA XREF: .data:7F838F34o
		db    0
unk_7F838C28	db    0			; DATA XREF: .data:7F838F38o
		db    0
		db    0
		db    0
asc_7F838C2C	db ' ',0                ; DATA XREF: .data:7F838F3Co
		db    0
		db    0
aMsmail32_ini_3	db 'MSMAIL32.INI',0     ; DATA XREF: .data:7F838F40o
		db    0
		db    0
		db    0
aMicrosoftMai_1	db 'Microsoft Mail',0   ; DATA XREF: .data:7F838F44o
		db    0
aPollinginterva	db 'PollingInterval',0  ; DATA XREF: .data:7F838F48o
aMapihelp_0	db 'MAPIHELP',0         ; DATA XREF: .data:7F838F4Co
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
aIpm_microsof_6	db 'IPM.Microsoft Mail.Note',0 ; DATA XREF: .data:7F838F50o
aIpm_microsof_7	db 'IPM.Microsoft Mail.Phone',0 ; DATA XREF: .data:7F838F54o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
aIpm_microsof_8	db 'IPM.Microsoft Mail.80Col',0 ; DATA XREF: .data:7F838F58o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
aIpm_microsof_9	db 'IPM.Microsoft Mail.Non-Delivery',0 ; DATA XREF: .data:7F838F5Co
aIpm_microso_10	db 'IPM.Microsoft Mail.Read Receipt',0 ; DATA XREF: .data:7F838F60o
aMsmail_prt	db 'MSMAIL.PRT',0       ; DATA XREF: .data:7F838F64o
		db    0
		db    0
		db    0
		db    0
		db    0
; CHAR aMsmail32_ini_0[]
aMsmail32_ini_0	db 'msmail32.ini',0     ; DATA XREF: sub_7F8173E6:loc_7F8174B5o
					; .data:7F838F68o
		align 4
; CHAR aMmf[]
aMmf		db 'MMF',0              ; DATA XREF: sub_7F8173E6+DAo
					; .data:7F838F6Co
		align 10h
aRemoveaccounts	db 'RemoveAccountsOnBackup',0 ; DATA XREF: .data:7F838F70o
		align 4
; CHAR aAutodisconnect[]
aAutodisconnect	db 'AutoDisconnectInterval',0 ; DATA XREF: sub_7F8173E6+E1o
					; .data:7F838F74o
		align 10h
; CHAR aAutorebuildfol[]
aAutorebuildfol	db 'AutoRebuildFolders',0 ; DATA XREF: sub_7F8173E6+10Co
					; .data:7F838F78o
		align 8
a_tmp_0		db '.TMP',0             ; DATA XREF: .data:7F838F7Co
		align 10h
aHiddenbullet	db '�HiddenBullet',0    ; DATA XREF: .data:7F838F80o
		align 10h
aHiddenshared	db '�HiddenShared',0    ; DATA XREF: .data:7F838F84o
		align 10h
aMicrosoftPerso	db 'Microsoft Personal Address Book',0 ; DATA XREF: .data:7F838F88o
unk_7F838DC0	db    0			; DATA XREF: .data:7F838F8Co
		db    0
		db    0
		db    0
unk_7F838DC4	db    0			; DATA XREF: .data:7F838F90o
		db    0
		db    0
		db    0
a44		db '44',0               ; DATA XREF: .data:7F838F94o
		db    0
		db    0
		db    0
		db    0
		db    0
aSharedfolders	db 'SharedFolders',0    ; DATA XREF: .data:7F838F98o
		db    0
		db    0
aSfoldersPubFol	db '%sfolders\pub\foldroot.idx',0 ; DATA XREF: .data:7F838F9Co
		db    0
		db    0
		db    0
		db    0
		db    0
aSfoldersPubD_f	db '%sfolders\pub\%d.fld',0 ; DATA XREF: .data:7F838FA0o
		db    0
		db    0
		db    0
aSfoldersSerial	db '%sfolders\serialno.idx',0 ; DATA XREF: .data:7F838FA4o
		db    0
dword_7F838E30	dd 0			; DATA XREF: sub_7F82AC7E+1Er
		dd offset a_bak		; ".BAK"
		dd offset aStoreprogressi ; "StoreProgressIndicatorClass32"
		dd offset aPressEscToCanc ; "Press ESC to cancel."
		dd offset aValidatingRepa ; "Validating/repairing message file"
		dd offset aMessageFileV_0 ; "Message file verification/repair has be"...
		dd offset aCheckingThisMa ; "Checking this mail	file may require sev"...
		dd offset aRepairingThisM ; "Repairing this mail file may require se"...
		dd offset aDoYouWantToHav ; "Do	you want to have your message file c"...
		dd offset aAnInconsistenc ; "An	inconsistency has been detected	in t"...
		dd offset aCancel	; "Cancel"
		dd offset aCheckFile	; "&Check File"
		dd offset aRepairNow	; "&Repair Now"
		dd offset aMailCouldNotSu ; "Mail could	not successfully backup	your"...
		dd offset aPleaseContactY ; "Please contact your system	administrato"...
		dd offset aPleaseExitAndR ; "Please Exit and restart Mail.  If mail "...
		dd offset aMessageFileVer ; "Message file verification/repair may re"...
		dd offset aToContinueWith ; "To	continue with the verification/repai"...
		dd offset aInconsistancie ; "Inconsistancies in	your message file co"...
		dd offset aValidating	; "Validating"
		dd offset aCompressing	; "Compressing"
		dd offset aRepairing	; "Repairing"
		dd offset aSMessageFileSt ; "%s	message	file: Stage %d of %d possibl"...
		dd offset aCheckingMessag ; "Checking message file map..."
		dd offset aBackingUpValid ; "Backing up	validated messages and folde"...
		dd offset aSearchingUnuse ; "Searching unused space for	items..."
		dd offset aValidatingAllM ; "Validating	all messages, attachments an"...
		dd offset aSearchingForLo ; "Searching for lost	messages, attachment"...
		dd offset aUpdatingAllMes ; "Updating all message finder views..."
		dd offset aWritingMessage ; "Writing message file map changes..."
		dd offset aDeletingUnrefe ; "Deleting unreferenced messages..."
		dd offset aCopyingMovingV ; "Copying/Moving validated messages..."
		dd offset aExportingMessa ; "Exporting messages	to backup message fi"...
		dd offset aResortingFolde ; "Resorting folder..."
		dd offset aSavingAttachme ; "Saving attachments..."
		dd offset aRebuildingMess ; "Rebuilding	message	finder..."
		dd offset aBackingUpMessa ; "Backing up	message	file..."
		dd offset aMovingMessageF ; "Moving message file..."
		dd offset aCompleteMessag ; "Complete message file compression..."
		dd offset aRebuildingMe_0 ; "Rebuilding	message	folder..."
		dd offset aLostAndFound	; "Lost	and Found"
		dd offset aLostAndFoundN ; "Lost and Found %n"
		dd offset aOrphanedMessag ; "Orphaned messages"
		dd offset aThisMessageCou ; "This message could	not be fully recover"...
		dd offset aOrphanFolderN ; "Orphan folder %n"
		dd offset aAnOrphanedFold ; "An	orphaned folder"
		dd offset aMicrosoftMai_0 ; "Microsoft Mail"
		dd offset aMsMail32Appfra ; "MS	Mail32 Appframe"
		dd offset aInbox	; "Inbox"
		dd offset aSentMail	; "Sent	mail"
		dd offset aOutbox	; "Outbox"
		dd offset aWastebasket	; "Wastebasket"
		dd offset aMailThatHasBee ; "Mail that has been	received."
		dd offset aMailThatHasB_0 ; "Mail that has been	sent."
		dd offset aMailThatWillBe ; "Mail that will be sent."
		dd offset aMailThatHasB_1 ; "Mail that has been	deleted."
		dd offset aRe		; "RE: "
		dd offset aFw		; "FW: "
		dd offset asc_7F838BD8	; "----------"
		dd offset asc_7F838BE4	; "\r\n"
		dd offset aHigh		; "High"
		dd offset unk_7F838BF0
		dd offset aLow		; "Low"
		dd offset aSystemAdminist ; "System Administrator"
		dd offset aUndeliverableM ; "Undeliverable Mail"
		dd offset asc_7F838C24	; ": "
		dd offset unk_7F838C28
		dd offset asc_7F838C2C	; " "
		dd offset aMsmail32_ini_3 ; "MSMAIL32.INI"
		dd offset aMicrosoftMai_1 ; "Microsoft Mail"
		dd offset aPollinginterva ; "PollingInterval"
		dd offset aMapihelp_0	; "MAPIHELP"
		dd offset aIpm_microsof_6 ; "IPM.Microsoft Mail.Note"
		dd offset aIpm_microsof_7 ; "IPM.Microsoft Mail.Phone"
		dd offset aIpm_microsof_8 ; "IPM.Microsoft Mail.80Col"
		dd offset aIpm_microsof_9 ; "IPM.Microsoft Mail.Non-Delivery"
		dd offset aIpm_microso_10 ; "IPM.Microsoft Mail.Read Receipt"
		dd offset aMsmail_prt	; "MSMAIL.PRT"
		dd offset aMsmail32_ini_0 ; "msmail32.ini"
		dd offset aMmf		; "MMF"
		dd offset aRemoveaccounts ; "RemoveAccountsOnBackup"
		dd offset aAutodisconnect ; "AutoDisconnectInterval"
		dd offset aAutorebuildfol ; "AutoRebuildFolders"
		dd offset a_tmp_0	; ".TMP"
		dd offset aHiddenbullet	; "�HiddenBullet"
		dd offset aHiddenshared	; "�HiddenShared"
		dd offset aMicrosoftPerso ; "Microsoft Personal	Address	Book"
		dd offset unk_7F838DC0
		dd offset unk_7F838DC4
		dd offset a44		; "44"
		dd offset aSharedfolders ; "SharedFolders"
		dd offset aSfoldersPubFol ; "%sfolders\\pub\\foldroot.idx"
		dd offset aSfoldersPubD_f ; "%sfolders\\pub\\%d.fld"
		dd offset aSfoldersSerial ; "%sfolders\\serialno.idx"
unk_7F838FA8	db 0E8h	; �		; DATA XREF: sub_7F82AC7Eo
		db    3
		db    0
		db    0
		db 0FBh	; �
		db    3
		db    0
		db    0
		db    1
		db    0
		db    0
		db    0
		db 0FCh	; �
		db    3
		db    0
		db    0
		db  19h
		db    4
		db    0
		db    0
		db    3
		db    0
		db    0
		db    0
		db  1Ah
		db    4
		db    0
		db    0
		db  4Bh	; K
		db    4
		db    0
		db    0
		db  13h
		db    0
		db    0
		db    0
		db  4Ch	; L
		db    4
		db    0
		db    0
		db  7Dh	; }
		db    4
		db    0
		db    0
		db  28h	; (
		db    0
		db    0
		db    0
		db  48h	; H
		db  26h	; &
		db    0
		db    0
		db  0Fh
		db  27h	; '
		db    0
		db    0
		db  2Eh	; .
		db    0
		db    0
		db    0
		db  1Ch
		db  25h	; %
		db    0
		db    0
		db  47h	; G
		db  26h	; &
		db    0
		db    0
		db  42h	; B
		db    0
		db    0
		db    0
		db 0DCh	; �
		db    5
		db    0
		db    0
		db 0CFh	; �
		db    7
		db    0
		db    0
		db  4Eh	; N
		db    0
		db    0
		db    0
		db 0D8h	; �
		db  0Eh
		db    0
		db    0
		db  3Bh	; ;
		db  0Fh
		db    0
		db    0
		db  5Ah	; Z
		db    0
		db    0
		db    0
		db 0FFh
		db 0FFh
		db 0FFh
		db 0FFh
		db 0FFh
		db 0FFh
		db 0FFh
		db 0FFh
		db    0
		db    0
		db    0
		db    0
dword_7F839014	dd 0			; DATA XREF: sub_7F8241AAr
					; sub_7F82ADFE+6r ...
dword_7F839018	dd 0			; DATA XREF: sub_7F82AD1F+11r
					; sub_7F82AD1F+2Ew ...
dword_7F83901C	dd 0			; DATA XREF: sub_7F82ADFE+13r
					; sub_7F82ADFE+38w ...
dword_7F839020	dd 0			; DATA XREF: sub_7F82AF85+9r
					; sub_7F82AF85+5Dw ...
word_7F839024	dw 0			; DATA XREF: sub_7F82B14A:loc_7F82B19Er
					; sub_7F82B14A+9Aw
		align 4
word_7F839028	dw 0			; DATA XREF: sub_7F82B14A+A7w
		align 4
word_7F83902C	dw 0			; DATA XREF: sub_7F82B14A+B0w
					; sub_7F82B14A+C2r ...
		align 10h
word_7F839030	dw 0			; DATA XREF: sub_7F82B14A+D0w
					; sub_7F82B644:loc_7F82B6C3r ...
		align 4
word_7F839034	dw 0			; DATA XREF: sub_7F82B14A+E3w
					; sub_7F82B14A+161r ...
		align 4
word_7F839038	dw 0			; DATA XREF: sub_7F82B14A+120w
					; sub_7F82B14A+278r
		align 10h
; RECT Rect
Rect		RECT <0>		; DATA XREF: sub_7F82B14A+113w
					; sub_7F82B644+9o ...
dword_7F839050	dd 0			; DATA XREF: sub_7F82AFF2+CDo
					; sub_7F82B14A+EFw
dword_7F839054	dd 0			; DATA XREF: sub_7F82B14A+EAw
dword_7F839058	dd 0			; DATA XREF: sub_7F82B14A+10Dw
					; sub_7F82B14A+137r
dword_7F83905C	dd 0			; DATA XREF: sub_7F82B14A+12Cw
; RECT stru_7F839060
stru_7F839060	RECT <0>		; DATA XREF: sub_7F82AFF2+DFo
					; sub_7F82B14A+178w ...
; RECT stru_7F839070
stru_7F839070	RECT <0>		; DATA XREF: sub_7F82AFF2+F8o
					; sub_7F82B14A+18Aw ...
; HGDIOBJ h
h		dd 0			; DATA XREF: sub_7F82B14A+1D0w
					; sub_7F82B4DE+2Cr ...
aDemilayr	db 'demilayr',0         ; DATA XREF: sub_7F82B97B+1Bo
					; sub_7F82ED4B+1Bo ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
dword_7F839098	dd 0			; DATA XREF: sub_7F82EBDDr
					; sub_7F82EBDD+19w ...
dword_7F83909C	dd 0			; DATA XREF: sub_7F82EDCA+30r
dword_7F8390A0	dd 0BBBh		; DATA XREF: sub_7F82EDCA+39r
		align 8
		db 0C7h	; �
		db 0FCh	; �
		db 0E9h	; �
		db 0E2h	; �
		db 0E4h	; �
		db 0E0h	; �
		db 0E5h	; �
		db 0E7h	; �
		db 0EAh	; �
		db 0EBh	; �
		db 0E8h	; �
		db 0EFh	; �
		db 0EEh	; �
		db 0ECh	; �
		db 0C4h	; �
		db 0C5h	; �
		db 0C9h	; �
		db 0E6h	; �
		db 0C6h	; �
		db 0F4h	; �
		db 0F6h	; �
		db 0F2h	; �
		db 0FBh	; �
		db 0F9h	; �
		db 0FFh
		db 0D6h	; �
		db 0DCh	; �
		db 0F8h	; �
		db 0A3h	; �
		db 0D8h	; �
		db 0D7h	; �
		db  80h	; �
		db 0E1h	; �
		db 0EDh	; �
		db 0F3h	; �
		db 0FAh	; �
		db 0F1h	; �
		db 0D1h	; �
		db 0AAh	; �
		db 0BAh	; �
		db 0BFh	; �
		db 0AEh	; �
		db 0ACh	; �
		db 0BDh	; �
		db 0BCh	; �
		db 0A1h	; �
		db 0ABh	; �
		db 0BBh	; �
		db  81h	; �
		db  82h	; �
		db  83h	; �
		db  84h	; �
		db  85h	; �
		db 0C1h	; �
		db 0C2h	; �
		db 0C0h	; �
		db 0A9h	; �
		db  86h	; �
		db  87h	; �
		db  88h	; �
		db  89h	; �
		db 0A2h	; �
		db 0A5h	; �
		db  8Ah	; �
		db  8Bh	; �
		db  8Ch	; �
		db  8Dh	; �
		db  8Eh	; �
		db  8Fh	; �
		db  90h	; �
		db 0E3h	; �
		db 0C3h	; �
		db  91h	; �
		db  92h	; �
		db  93h	; �
		db  94h	; �
		db  95h	; �
		db  96h	; �
		db  97h	; �
		db 0A4h	; �
		db 0F0h	; �
		db 0D0h	; �
		db 0CAh	; �
		db 0CBh	; �
		db 0C8h	; �
		db  98h	; �
		db 0CDh	; �
		db 0CEh	; �
		db 0CFh	; �
		db  99h	; �
		db  9Ah	; �
		db  9Bh	; �
		db  9Ch	; �
		db 0A6h	; �
		db 0CCh	; �
		db  9Dh	; �
		db 0D3h	; �
		db 0DFh	; �
		db 0D4h	; �
		db 0D2h	; �
		db 0F5h	; �
		db 0D5h	; �
		db 0B5h	; �
		db 0FEh	; �
		db 0DEh	; �
		db 0DAh	; �
		db 0DBh	; �
		db 0D9h	; �
		db 0FDh	; �
		db 0DDh	; �
		db 0AFh	; �
		db 0B4h	; �
		db 0ADh	; �
		db 0B1h	; �
		db  9Eh	; �
		db 0BEh	; �
		db 0B6h	; �
		db 0A7h	; �
		db 0F7h	; �
		db 0B8h	; �
		db 0B0h	; �
		db 0A8h	; �
		db 0B7h	; �
		db 0B9h	; �
		db 0B3h	; �
		db 0B2h	; �
		db  9Fh	; �
		db 0A0h	; �
		db  9Fh	; �
		db 0B0h	; �
		db 0B1h	; �
		db 0B2h	; �
		db 0B3h	; �
		db 0B4h	; �
		db 0B9h	; �
		db 0BAh	; �
		db 0BBh	; �
		db 0BCh	; �
		db 0BFh	; �
		db 0C0h	; �
		db 0C1h	; �
		db 0C2h	; �
		db 0C3h	; �
		db 0C4h	; �
		db 0C5h	; �
		db 0C8h	; �
		db 0C9h	; �
		db 0CAh	; �
		db 0CBh	; �
		db 0CCh	; �
		db 0CDh	; �
		db 0CEh	; �
		db 0D5h	; �
		db 0D9h	; �
		db 0DAh	; �
		db 0DBh	; �
		db 0DCh	; �
		db 0DFh	; �
		db 0F2h	; �
		db 0FEh	; �
		db 0FFh
		db 0ADh	; �
		db 0BDh	; �
		db  9Ch	; �
		db 0CFh	; �
		db 0BEh	; �
		db 0DDh	; �
		db 0F5h	; �
		db 0F9h	; �
		db 0B8h	; �
		db 0A6h	; �
		db 0AEh	; �
		db 0AAh	; �
		db 0F0h	; �
		db 0A9h	; �
		db 0EEh	; �
		db 0F8h	; �
		db 0F1h	; �
		db 0FDh	; �
		db 0FCh	; �
		db 0EFh	; �
		db 0E6h	; �
		db 0F4h	; �
		db 0FAh	; �
		db 0F7h	; �
		db 0FBh	; �
		db 0A7h	; �
		db 0AFh	; �
		db 0ACh	; �
		db 0ABh	; �
		db 0F3h	; �
		db 0A8h	; �
		db 0B7h	; �
		db 0B5h	; �
		db 0B6h	; �
		db 0C7h	; �
		db  8Eh	; �
		db  8Fh	; �
		db  92h	; �
		db  80h	; �
		db 0D4h	; �
		db  90h	; �
		db 0D2h	; �
		db 0D3h	; �
		db 0DEh	; �
		db 0D6h	; �
		db 0D7h	; �
		db 0D8h	; �
		db 0D1h	; �
		db 0A5h	; �
		db 0E3h	; �
		db 0E0h	; �
		db 0E2h	; �
		db 0E5h	; �
		db  99h	; �
		db  9Eh	; �
		db  9Dh	; �
		db 0EBh	; �
		db 0E9h	; �
		db 0EAh	; �
		db  9Ah	; �
		db 0EDh	; �
		db 0E8h	; �
		db 0E1h	; �
		db  85h	; �
		db 0A0h	; �
		db  83h	; �
		db 0C6h	; �
		db  84h	; �
		db  86h	; �
		db  91h	; �
		db  87h	; �
		db  8Ah	; �
		db  82h	; �
		db  88h	; �
		db  89h	; �
		db  8Dh	; �
		db 0A1h	; �
		db  8Ch	; �
		db  8Bh	; �
		db 0D0h	; �
		db 0A4h	; �
		db  95h	; �
		db 0A2h	; �
		db  93h	; �
		db 0E4h	; �
		db  94h	; �
		db 0F6h	; �
		db  9Bh	; �
		db  97h	; �
		db 0A3h	; �
		db  96h	; �
		db  81h	; �
		db 0ECh	; �
		db 0E7h	; �
		db  98h	; �
		db  80h	; �
		db  9Ah	; �
		db  90h	; �
		db 0B6h	; �
		db  8Eh	; �
		db 0B7h	; �
		db  8Fh	; �
		db  80h	; �
		db 0D2h	; �
		db 0D3h	; �
		db 0D4h	; �
		db 0D8h	; �
		db 0D7h	; �
		db 0DEh	; �
		db  8Eh	; �
		db  8Fh	; �
		db  90h	; �
		db  92h	; �
		db  92h	; �
		db 0E2h	; �
		db  99h	; �
		db 0E3h	; �
		db 0EAh	; �
		db 0EBh	; �
		db  59h	; Y
		db  99h	; �
		db  9Ah	; �
		db  9Dh	; �
		db  9Ch	; �
		db  9Dh	; �
		db  9Eh	; �
		db  9Fh	; �
		db 0B5h	; �
		db 0D6h	; �
		db 0E0h	; �
		db 0E9h	; �
		db 0A5h	; �
		db 0A5h	; �
		db  41h	; A
		db  4Fh	; O
		db 0A8h	; �
		db 0A9h	; �
		db 0AAh	; �
		db 0ABh	; �
		db 0ACh	; �
		db 0ADh	; �
		db 0AEh	; �
		db 0AFh	; �
		db 0B0h	; �
		db 0B1h	; �
		db 0B2h	; �
		db 0B3h	; �
		db 0B4h	; �
		db 0B5h	; �
		db 0B6h	; �
		db 0B7h	; �
		db 0B8h	; �
		db 0B9h	; �
		db 0BAh	; �
		db 0BBh	; �
		db 0BCh	; �
		db 0BDh	; �
		db 0BEh	; �
		db 0BFh	; �
		db 0C0h	; �
		db 0C1h	; �
		db 0C2h	; �
		db 0C3h	; �
		db 0C4h	; �
		db 0C5h	; �
		db 0C7h	; �
		db 0C7h	; �
		db 0C8h	; �
		db 0C9h	; �
		db 0CAh	; �
		db 0CBh	; �
		db 0CCh	; �
		db 0CDh	; �
		db 0CEh	; �
		db 0CFh	; �
		db 0D1h	; �
		db 0D1h	; �
		db 0D2h	; �
		db 0D3h	; �
		db 0D4h	; �
		db  49h	; I
		db 0D6h	; �
		db 0D7h	; �
		db 0D8h	; �
		db 0D9h	; �
		db 0DAh	; �
		db 0DBh	; �
		db 0DCh	; �
		db 0DDh	; �
		db 0DEh	; �
		db 0DFh	; �
		db 0E0h	; �
		db 0E1h	; �
		db 0E2h	; �
		db 0E3h	; �
		db 0E5h	; �
		db 0E5h	; �
		db 0E6h	; �
		db 0E8h	; �
		db 0E8h	; �
		db 0E9h	; �
		db 0EAh	; �
		db 0EBh	; �
		db 0EDh	; �
		db 0EDh	; �
		db 0EEh	; �
		db 0EFh	; �
		db 0F0h	; �
		db 0F1h	; �
		db 0F2h	; �
		db 0F3h	; �
		db 0F4h	; �
		db 0F5h	; �
		db 0F6h	; �
		db 0F7h	; �
		db 0F8h	; �
		db 0F9h	; �
		db 0FAh	; �
		db 0FBh	; �
		db 0FCh	; �
		db 0FDh	; �
		db 0FEh	; �
		db 0FFh
		db  87h	; �
		db  81h	; �
		db  82h	; �
		db  83h	; �
		db  84h	; �
		db  85h	; �
		db  86h	; �
		db  87h	; �
		db  88h	; �
		db  89h	; �
		db  8Ah	; �
		db  8Bh	; �
		db  8Ch	; �
		db  8Dh	; �
		db  84h	; �
		db  86h	; �
		db  82h	; �
		db  91h	; �
		db  91h	; �
		db  93h	; �
		db  94h	; �
		db  95h	; �
		db  96h	; �
		db  97h	; �
		db  98h	; �
		db  94h	; �
		db  81h	; �
		db  9Bh	; �
		db  9Ch	; �
		db  9Bh	; �
		db  9Eh	; �
		db  9Fh	; �
		db 0A0h	; �
		db 0A1h	; �
		db 0A2h	; �
		db 0A3h	; �
		db 0A4h	; �
		db 0A4h	; �
		db 0A6h	; �
		db 0A7h	; �
		db 0A8h	; �
		db 0A9h	; �
		db 0AAh	; �
		db 0ABh	; �
		db 0ACh	; �
		db 0ADh	; �
		db 0AEh	; �
		db 0AFh	; �
		db 0B0h	; �
		db 0B1h	; �
		db 0B2h	; �
		db 0B3h	; �
		db 0B4h	; �
		db 0A0h	; �
		db  83h	; �
		db  85h	; �
		db 0B8h	; �
		db 0B9h	; �
		db 0BAh	; �
		db 0BBh	; �
		db 0BCh	; �
		db 0BDh	; �
		db 0BEh	; �
		db 0BFh	; �
		db 0C0h	; �
		db 0C1h	; �
		db 0C2h	; �
		db 0C3h	; �
		db 0C4h	; �
		db 0C5h	; �
		db 0C6h	; �
		db 0C6h	; �
		db 0C8h	; �
		db 0C9h	; �
		db 0CAh	; �
		db 0CBh	; �
		db 0CCh	; �
		db 0CDh	; �
		db 0CEh	; �
		db 0CFh	; �
		db 0D0h	; �
		db 0D0h	; �
		db  88h	; �
		db  89h	; �
		db  8Ah	; �
		db  49h	; I
		db 0A1h	; �
		db  8Ch	; �
		db  8Bh	; �
		db 0D9h	; �
		db 0DAh	; �
		db 0DBh	; �
		db 0DCh	; �
		db 0DDh	; �
		db  8Dh	; �
		db 0DFh	; �
		db 0A2h	; �
		db 0E1h	; �
		db  93h	; �
		db  95h	; �
		db 0E4h	; �
		db 0E4h	; �
		db 0E6h	; �
		db 0E7h	; �
		db 0E7h	; �
		db 0A3h	; �
		db  96h	; �
		db  97h	; �
		db 0ECh	; �
		db 0ECh	; �
		db 0EEh	; �
		db 0EFh	; �
		db 0F0h	; �
		db 0F1h	; �
		db 0F2h	; �
		db 0F3h	; �
		db 0F4h	; �
		db 0F5h	; �
		db 0F6h	; �
		db 0F7h	; �
		db 0F8h	; �
		db 0F9h	; �
		db 0FAh	; �
		db 0FBh	; �
		db 0FCh	; �
		db 0FDh	; �
		db 0FEh	; �
		db 0FFh
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    7
		db    6
		db    4
		db    4
		db    4
		db    4
		db    4
		db    4
		db    4
		db    4
		db    4
		db    4
		db    4
		db    4
		db    4
		db    4
		db    4
		db    3
		db    3
		db    3
		db    3
		db    3
		db    3
		db    3
		db    3
		db    3
		db    3
		db    4
		db    4
		db    4
		db    4
		db    4
		db    4
		db    4
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    1
		db    4
		db    4
		db    4
		db    4
		db    4
		db    4
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    4
		db    4
		db    4
		db    4
		db    5
		db    1
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    1
		db    1
		db    1
		db    2
		db    1
		db    2
		db    2
		db    2
		db    2
		db    2
		db    2
		db    1
		db    1
		db    2
		db    4
		db    1
		db    4
		db    5
		db    2
		db    2
		db    2
		db    2
		db    2
		db    1
		db    2
		db    2
		db    4
		db    5
		db    4
		db    5
		db    5
		db    4
		db    4
		db    4
		db    5
		db    5
		db    5
		db    5
		db    5
		db    1
		db    1
		db    1
		db    5
		db    5
		db    5
		db    5
		db    5
		db    4
		db    4
		db    5
		db    5
		db    5
		db    5
		db    5
		db    5
		db    5
		db    2
		db    1
		db    5
		db    5
		db    5
		db    5
		db    5
		db    5
		db    5
		db    5
		db    2
		db    1
		db    1
		db    1
		db    1
		db    2
		db    1
		db    1
		db    1
		db    5
		db    5
		db    5
		db    5
		db    4
		db    1
		db    5
		db    1
		db    2
		db    1
		db    1
		db    2
		db    1
		db    2
		db    2
		db    1
		db    1
		db    1
		db    1
		db    2
		db    1
		db    5
		db    4
		db    5
		db    4
		db    4
		db    5
		db    5
		db    5
		db    4
		db    4
		db    4
		db    4
		db    4
		db    5
		db    5
		db    5
		db    5
		db    6
; CHAR Name[]
Name		db 'MsMail32.CrtInit',0 ; DATA XREF: sub_7F82EEA3o
		align 4
dword_7F8393BC	dd 0			; DATA XREF: sub_7F82F26E+54w
					; sub_7F82F2D1+1Fw ...
; volatile LONG	Addend
Addend		dd 0FFFFFFFFh		; DATA XREF: sub_7F82F26E+5o
					; sub_7F82F2D1:loc_7F82F2E2r ...
dword_7F8393C4	dd 0			; DATA XREF: sub_7F82F26E+33r
					; sub_7F82F2D1r
dword_7F8393C8	dd 0			; DATA XREF: sub_7F82F323+4w
		align 10h
		db 0FFh
		db 0FFh
		db 0FFh
		db 0FFh
; CHAR aMemory[]
aMemory		db 'Memory',0           ; DATA XREF: sub_7F82F03B+47o
		align 4
; CHAR aCbmaxallocD[]
aCbmaxallocD	db 'cbMaxAlloc %d',0    ; DATA XREF: sub_7F82F03B+33o
		align 10h
unk_7F8393F0	db    1			; DATA XREF: .data:7F835946o
		db  1Dh
		db    9
		db    0
		db    8
		db  80h	; �
		db    7
		db    0
		db  81h	; �
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db  80h	; �
		db    0
		db    0
		db  93h	; �
		db  34h	; 4
		db  46h	; F
		db  72h	; r
		db  6Fh	; o
		db  6Dh	; m
		db    0
		db  0Bh
		db    0
		db    1
		db  80h	; �
		db    0
		db    0
		db  93h	; �
		db  34h	; 4
		db  54h	; T
		db  6Fh	; o
		db    0
		db  0Bh
		db    0
		db    2
		db  80h	; �
		db    0
		db    0
		db  93h	; �
		db  34h	; 4
		db  43h	; C
		db  63h	; c
		db    0
		db  10h
		db    0
		db    4
		db  80h	; �
		db    1
		db    0
		db  93h	; �
		db  34h	; 4
		db  53h	; S
		db  75h	; u
		db  62h	; b
		db  6Ah	; j
		db  65h	; e
		db  63h	; c
		db  74h	; t
		db    0
		db  12h
		db    0
		db    5
		db  80h	; �
		db    3
		db    0
		db  93h	; �
		db  34h	; 4
		db  44h	; D
		db  61h	; a
		db  74h	; t
		db  65h	; e
		db  20h
		db  53h	; S
		db  65h	; e
		db  6Eh	; n
		db  74h	; t
		db    0
		db  21h	; !
		db    0
		db  0Dh
		db  80h	; �
		db    4
		db    0
		db 0D3h	; �
		db  35h	; 5
		db  50h	; P
		db  72h	; r
		db  69h	; i
		db  6Fh	; o
		db  72h	; r
		db  69h	; i
		db  74h	; t
		db  79h	; y
		db    0
		db    2
		db    0
		db    0
		db    1
		db    0
		db  48h	; H
		db  69h	; i
		db  67h	; g
		db  68h	; h
		db    0
		db    3
		db    0
		db  4Ch	; L
		db  6Fh	; o
		db  77h	; w
		db    0
		db  21h	; !
		db    0
		db    5
		db    0
		db    2
		db    0
		db  13h
		db  34h	; 4
		db  4Eh	; N
		db  6Fh	; o
		db  6Eh	; n
		db  2Dh	; -
		db  64h	; d
		db  65h	; e
		db  6Ch	; l
		db  69h	; i
		db  76h	; v
		db  65h	; e
		db  72h	; r
		db  79h	; y
		db  20h
		db  65h	; e
		db  78h	; x
		db  70h	; p
		db  6Ch	; l
		db  61h	; a
		db  6Eh	; n
		db  61h	; a
		db  74h	; t
		db  69h	; i
		db  6Fh	; o
		db  6Eh	; n
		db    0
		db  18h
		db    0
		db    1
		db    0
		db    0
		db    0
		db    1
		db    0
		db  4Fh	; O
		db  72h	; r
		db  69h	; i
		db  67h	; g
		db  69h	; i
		db  6Eh	; n
		db  61h	; a
		db  6Ch	; l
		db  6Ch	; l
		db  79h	; y
		db  20h
		db  46h	; F
		db  72h	; r
		db  6Fh	; o
		db  6Dh	; m
		db    0
		db  16h
		db    0
		db    2
		db    0
		db    0
		db    0
		db    1
		db    0
		db  4Fh	; O
		db  72h	; r
		db  69h	; i
		db  67h	; g
		db  69h	; i
		db  6Eh	; n
		db  61h	; a
		db  6Ch	; l
		db  6Ch	; l
		db  79h	; y
		db  20h
		db  54h	; T
		db  6Fh	; o
		db    0
		db  19h
		db    0
		db    4
		db    0
		db    1
		db    0
		db    1
		db    0
		db  4Fh	; O
		db  72h	; r
		db  69h	; i
		db  67h	; g
		db  69h	; i
		db  6Eh	; n
		db  61h	; a
		db  6Ch	; l
		db  20h
		db  53h	; S
		db  75h	; u
		db  62h	; b
		db  6Ah	; j
		db  65h	; e
		db  63h	; c
		db  74h	; t
		db    0
		db  1Bh
		db    0
		db    3
		db    0
		db    3
		db    0
		db    1
		db    0
		db  4Fh	; O
		db  72h	; r
		db  69h	; i
		db  67h	; g
		db  69h	; i
		db  6Eh	; n
		db  61h	; a
		db  6Ch	; l
		db  6Ch	; l
		db  79h	; y
		db  20h
		db  53h	; S
		db  65h	; e
		db  6Eh	; n
		db  74h	; t
		db  20h
		db  4Fh	; O
		db  6Eh	; n
		db    0
		db  1Eh
		db    0
		db    6
		db    0
		db    7
		db    0
		db    1
		db    0
		db  4Fh	; O
		db  72h	; r
		db  69h	; i
		db  67h	; g
		db  69h	; i
		db  6Eh	; n
		db  61h	; a
		db  6Ch	; l
		db  20h
		db  4Dh	; M
		db  65h	; e
		db  73h	; s
		db  73h	; s
		db  61h	; a
		db  67h	; g
		db  65h	; e
		db  20h
		db  54h	; T
		db  79h	; y
		db  70h	; p
		db  65h	; e
		db    0
		db  0Dh
		db    0
		db  0Ch
		db  80h	; �
		db    2
		db    0
		db    1
		db    0
		db  42h	; B
		db  6Fh	; o
		db  64h	; d
		db  79h	; y
		db    0
		db    0
unk_7F839510	db    0			; DATA XREF: .data:7F83593Ao
		db 0CBh	; �
		db    9
		db    0
		db    8
		db  80h	; �
		db    7
		db    0
		db  81h	; �
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db  80h	; �
		db    0
		db    0
		db  9Fh	; �
		db  34h	; 4
		db  46h	; F
		db  72h	; r
		db  6Fh	; o
		db  6Dh	; m
		db    0
		db  0Bh
		db    0
		db    1
		db  80h	; �
		db    0
		db    0
		db  9Fh	; �
		db  34h	; 4
		db  54h	; T
		db  6Fh	; o
		db    0
		db  0Bh
		db    0
		db    2
		db  80h	; �
		db    0
		db    0
		db  9Fh	; �
		db  34h	; 4
		db  43h	; C
		db  63h	; c
		db    0
		db  10h
		db    0
		db    4
		db  80h	; �
		db    1
		db    0
		db  9Fh	; �
		db  34h	; 4
		db  53h	; S
		db  75h	; u
		db  62h	; b
		db  6Ah	; j
		db  65h	; e
		db  63h	; c
		db  74h	; t
		db    0
		db  0Dh
		db    0
		db    5
		db  80h	; �
		db    3
		db    0
		db  9Fh	; �
		db  34h	; 4
		db  44h	; D
		db  61h	; a
		db  74h	; t
		db  65h	; e
		db    0
		db  21h	; !
		db    0
		db  0Dh
		db  80h	; �
		db    4
		db    0
		db 0DFh	; �
		db  35h	; 5
		db  50h	; P
		db  72h	; r
		db  69h	; i
		db  6Fh	; o
		db  72h	; r
		db  69h	; i
		db  74h	; t
		db  79h	; y
		db    0
		db    2
		db    0
		db    0
		db    1
		db    0
		db  48h	; H
		db  69h	; i
		db  67h	; g
		db  68h	; h
		db    0
		db    3
		db    0
		db  4Ch	; L
		db  6Fh	; o
		db  77h	; w
		db    0
		db    9
		db    0
		db  0Ch
		db  80h	; �
		db    2
		db    0
		db  1Fh
		db    2
		db    0
		db  13h
		db    0
		db  10h
		db    0
		db    4
		db    0
		db  81h	; �
		db  34h	; 4
		db  46h	; F
		db  69h	; i
		db  78h	; x
		db  65h	; e
		db  64h	; d
		db  20h
		db  46h	; F
		db  6Fh	; o
		db  6Eh	; n
		db  74h	; t
		db    0
		db  13h
		db    0
		db    9
		db  80h	; �
		db    1
		db    0
		db  81h	; �
		db  20h
		db  4Dh	; M
		db  65h	; e
		db  73h	; s
		db  73h	; s
		db  61h	; a
		db  67h	; g
		db  65h	; e
		db  20h
		db  49h	; I
		db  44h	; D
		db    0
		db  1Ah
		db    0
		db  0Ah
		db  80h	; �
		db    1
		db    0
		db  81h	; �
		db  20h
		db  50h	; P
		db  61h	; a
		db  72h	; r
		db  65h	; e
		db  6Eh	; n
		db  74h	; t
		db  20h
		db  6Dh	; m
		db  65h	; e
		db  73h	; s
		db  73h	; s
		db  61h	; a
		db  67h	; g
		db  65h	; e
		db  20h
		db  49h	; I
		db  44h	; D
		db    0
		db  18h
		db    0
		db  0Bh
		db  80h	; �
		db    1
		db    0
		db  81h	; �
		db  20h
		db  43h	; C
		db  6Fh	; o
		db  6Eh	; n
		db  76h	; v
		db  65h	; e
		db  72h	; r
		db  73h	; s
		db  61h	; a
		db  74h	; t
		db  69h	; i
		db  6Fh	; o
		db  6Eh	; n
		db  20h
		db  49h	; I
		db  44h	; D
		db    0
		db    0
		db    0
		db    0
unk_7F8395E0	db    1			; DATA XREF: .data:7F835940o
		db  54h	; T
		db    9
		db    0
		db    8
		db  80h	; �
		db    7
		db    0
		db  81h	; �
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db  80h	; �
		db    0
		db    0
		db  93h	; �
		db  34h	; 4
		db  46h	; F
		db  72h	; r
		db  6Fh	; o
		db  6Dh	; m
		db    0
		db  12h
		db    0
		db    5
		db  80h	; �
		db    3
		db    0
		db  93h	; �
		db  34h	; 4
		db  44h	; D
		db  61h	; a
		db  74h	; t
		db  65h	; e
		db  20h
		db  73h	; s
		db  65h	; e
		db  6Eh	; n
		db  74h	; t
		db    0
		db  0Bh
		db    0
		db    1
		db  80h	; �
		db    0
		db    0
		db  93h	; �
		db  34h	; 4
		db  54h	; T
		db  6Fh	; o
		db    0
		db  10h
		db    0
		db    4
		db  80h	; �
		db    1
		db    0
		db  93h	; �
		db  34h	; 4
		db  53h	; S
		db  75h	; u
		db  62h	; b
		db  6Ah	; j
		db  65h	; e
		db  63h	; c
		db  74h	; t
		db    0
		db  13h
		db    0
		db    9
		db  80h	; �
		db    1
		db    0
		db  81h	; �
		db    0
		db  4Dh	; M
		db  65h	; e
		db  73h	; s
		db  73h	; s
		db  61h	; a
		db  67h	; g
		db  65h	; e
		db  20h
		db  49h	; I
		db  44h	; D
		db    0
		db  12h
		db    0
		db  0Ah
		db  80h	; �
		db    1
		db    0
		db  81h	; �
		db    0
		db  50h	; P
		db  61h	; a
		db  72h	; r
		db  65h	; e
		db  6Eh	; n
		db  74h	; t
		db  20h
		db  49h	; I
		db  44h	; D
		db    0
		db  18h
		db    0
		db  0Bh
		db  80h	; �
		db    1
		db    0
		db  81h	; �
		db    0
		db  43h	; C
		db  6Fh	; o
		db  6Eh	; n
		db  76h	; v
		db  65h	; e
		db  72h	; r
		db  73h	; s
		db  61h	; a
		db  74h	; t
		db  69h	; i
		db  6Fh	; o
		db  6Eh	; n
		db  20h
		db  49h	; I
		db  44h	; D
		db    0
		db  15h
		db    0
		db    0
		db    0
		db    0
		db    0
		db  92h	; �
		db  16h
		db  59h	; Y
		db  6Fh	; o
		db  75h	; u
		db  72h	; r
		db  20h
		db  6Dh	; m
		db  65h	; e
		db  73h	; s
		db  73h	; s
		db  61h	; a
		db  67h	; g
		db  65h	; e
		db    0
		db  0Bh
		db    0
		db    2
		db    0
		db    0
		db    0
		db  92h	; �
		db  34h	; 4
		db  54h	; T
		db  6Fh	; o
		db    0
		db  18h
		db    0
		db    2
		db    0
		db    0
		db    0
		db  81h	; �
		db  34h	; 4
		db  59h	; Y
		db  6Fh	; o
		db  75h	; u
		db  72h	; r
		db  20h
		db  4Dh	; M
		db  65h	; e
		db  73h	; s
		db  73h	; s
		db  61h	; a
		db  67h	; g
		db  65h	; e
		db  20h
		db  54h	; T
		db  6Fh	; o
		db    0
		db  10h
		db    0
		db    4
		db    0
		db    1
		db    0
		db  92h	; �
		db  34h	; 4
		db  53h	; S
		db  75h	; u
		db  62h	; b
		db  6Ah	; j
		db  65h	; e
		db  63h	; c
		db  74h	; t
		db    0
		db  11h
		db    0
		db    4
		db    0
		db    1
		db    0
		db  81h	; �
		db  34h	; 4
		db  45h	; E
		db  6Eh	; n
		db  74h	; t
		db  69h	; i
		db  74h	; t
		db  6Ch	; l
		db  65h	; e
		db  64h	; d
		db    0
		db  0Dh
		db    0
		db    3
		db    0
		db    3
		db    0
		db  92h	; �
		db  34h	; 4
		db  44h	; D
		db  61h	; a
		db  74h	; t
		db  65h	; e
		db    0
		db  14h
		db    0
		db    3
		db    0
		db    3
		db    0
		db  81h	; �
		db  34h	; 4
		db  41h	; A
		db  6Eh	; n
		db  64h	; d
		db  20h
		db  53h	; S
		db  65h	; e
		db  6Eh	; n
		db  74h	; t
		db  20h
		db  4Fh	; O
		db  6Eh	; n
		db    0
		db  18h
		db    0
		db    0
		db    0
		db    0
		db    0
		db  92h	; �
		db  14h
		db  77h	; w
		db  61h	; a
		db  73h	; s
		db  20h
		db  61h	; a
		db  63h	; c
		db  63h	; c
		db  65h	; e
		db  73h	; s
		db  73h	; s
		db  65h	; e
		db  64h	; d
		db  20h
		db  6Fh	; o
		db  6Eh	; n
		db    0
		db  0Dh
		db    0
		db    7
		db    0
		db    3
		db    0
		db  92h	; �
		db  34h	; 4
		db  44h	; D
		db  61h	; a
		db  74h	; t
		db  65h	; e
		db    0
		db  14h
		db    0
		db    7
		db    0
		db    3
		db    0
		db  81h	; �
		db  34h	; 4
		db  57h	; W
		db  61h	; a
		db  73h	; s
		db  20h
		db  52h	; R
		db  65h	; e
		db  61h	; a
		db  64h	; d
		db  20h
		db  41h	; A
		db  74h	; t
		db    0
		db  21h	; !
		db    0
		db  0Dh
		db  80h	; �
		db    4
		db    0
		db 0D3h	; �
		db  35h	; 5
		db  50h	; P
		db  72h	; r
		db  69h	; i
		db  6Fh	; o
		db  72h	; r
		db  69h	; i
		db  74h	; t
		db  79h	; y
		db    0
		db    2
		db    0
		db    0
		db    1
		db    0
		db  48h	; H
		db  69h	; i
		db  67h	; g
		db  68h	; h
		db    0
		db    3
		db    0
		db  4Ch	; L
		db  6Fh	; o
		db  77h	; w
		db    0
		db    0
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
unk_7F839740	db  20h			; DATA XREF: .text:7F82FBA7o
					; sub_7F82FBAE+2o
		db    5
		db  93h	; �
		db  19h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
unk_7F839750	db    1			; DATA XREF: sub_7F82FFD0+Eo
		db    0
		db    0
		db    0
dword_7F839754	dd 16h			; DATA XREF: sub_7F82FFD0+3Er
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    3
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    4
		db    0
		db    0
		db    0
		db  18h
		db    0
		db    0
		db    0
		db    5
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db    6
		db    0
		db    0
		db    0
		db    9
		db    0
		db    0
		db    0
		db    7
		db    0
		db    0
		db    0
		db  0Ch
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  0Ch
		db    0
		db    0
		db    0
		db    9
		db    0
		db    0
		db    0
		db  0Ch
		db    0
		db    0
		db    0
		db  0Ah
		db    0
		db    0
		db    0
		db    7
		db    0
		db    0
		db    0
		db  0Bh
		db    0
		db    0
		db    0
		db    8
		db    0
		db    0
		db    0
		db  0Ch
		db    0
		db    0
		db    0
		db  16h
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db  16h
		db    0
		db    0
		db    0
		db  0Fh
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db  11h
		db    0
		db    0
		db    0
		db  12h
		db    0
		db    0
		db    0
		db  12h
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db  21h	; !
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db  35h	; 5
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db  41h	; A
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db  43h	; C
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db  50h	; P
		db    0
		db    0
		db    0
		db  11h
		db    0
		db    0
		db    0
		db  52h	; R
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db  53h	; S
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db  57h	; W
		db    0
		db    0
		db    0
		db  16h
		db    0
		db    0
		db    0
		db  59h	; Y
		db    0
		db    0
		db    0
		db  0Bh
		db    0
		db    0
		db    0
		db  6Ch	; l
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db  6Dh	; m
		db    0
		db    0
		db    0
		db  20h
		db    0
		db    0
		db    0
		db  70h	; p
		db    0
		db    0
		db    0
		db  1Ch
		db    0
		db    0
		db    0
		db  72h	; r
		db    0
		db    0
		db    0
		db    9
		db    0
		db    0
		db    0
		db    6
		db    0
		db    0
		db    0
		db  16h
		db    0
		db    0
		db    0
		db  80h	; �
		db    0
		db    0
		db    0
		db  0Ah
		db    0
		db    0
		db    0
		db  81h	; �
		db    0
		db    0
		db    0
		db  0Ah
		db    0
		db    0
		db    0
		db  82h	; �
		db    0
		db    0
		db    0
		db    9
		db    0
		db    0
		db    0
		db  83h	; �
		db    0
		db    0
		db    0
		db  16h
		db    0
		db    0
		db    0
		db  84h	; �
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db  91h	; �
		db    0
		db    0
		db    0
		db  29h	; )
		db    0
		db    0
		db    0
		db  9Eh	; �
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db 0A1h	; �
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db 0A4h	; �
		db    0
		db    0
		db    0
		db  0Bh
		db    0
		db    0
		db    0
		db 0A7h	; �
		db    0
		db    0
		db    0
		db  0Dh
		db    0
		db    0
		db    0
		db 0B7h	; �
		db    0
		db    0
		db    0
		db  11h
		db    0
		db    0
		db    0
		db 0CEh	; �
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db 0D7h	; �
		db    0
		db    0
		db    0
		db  0Bh
		db    0
		db    0
		db    0
		db  18h
		db    7
		db    0
		db    0
		db  0Ch
		db    0
		db    0
		db    0
dword_7F8398B8	dd 0			; DATA XREF: sub_7F82FFD0+1Bo
					; sub_7F830310+75w ...
; LPVOID lpMem
lpMem		dd 0			; DATA XREF: sub_7F830310+C3w
					; sub_7F830F20+3r ...
		db    0
		db    0
		db    0
		db    0
off_7F8398C4	dd offset sub_7F830BB0	; DATA XREF: sub_7F830460+2Er
dword_7F8398C8	dd 0			; DATA XREF: sub_7F830460r
					; sub_7F831750r ...
dword_7F8398CC	dd 0			; DATA XREF: sub_7F830310+13r
					; sub_7F830460+Er ...
; CHAR aIstnt[]
aIstnt		db 'IsTNT',0            ; DATA XREF: sub_7F830310+45o
		align 4
; CHAR aKernel32_dll[]
aKernel32_dll	db 'kernel32.dll',0     ; DATA XREF: sub_7F830310:loc_7F830346o
		align 4
; LPCRITICAL_SECTION dword_7F8398E8
dword_7F8398E8	dd 0			; DATA XREF: sub_7F8304F0:loc_7F8304FBo
					; sub_7F830560+9o ...
; LPCRITICAL_SECTION off_7F8398EC
off_7F8398EC	dd offset unk_7F833DC8	; DATA XREF: sub_7F8304C0+20r
					; sub_7F8304F0+58r
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
; LPCRITICAL_SECTION off_7F83990C
off_7F83990C	dd offset unk_7F833DB0	; DATA XREF: sub_7F8304C0+18r
					; sub_7F8304F0+40r
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
; LPCRITICAL_SECTION off_7F83991C
off_7F83991C	dd offset unk_7F833DE0	; DATA XREF: sub_7F8304C0+Fr
					; sub_7F8304F0+48r
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
; LPCRITICAL_SECTION lpCriticalSection
lpCriticalSection dd offset unk_7F833DF8 ; DATA	XREF: sub_7F8304C0+1r
					; sub_7F8304F0+50r
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
dword_7F8399AC	dd 0			; DATA XREF: sub_7F8306D0+1r
					; sub_7F8306D0+66w ...
; CHAR SrcStr[4]
SrcStr		db 4 dup(0)		; DATA XREF: sub_7F8306D0+19o
; const	WCHAR word_7F8399B4
word_7F8399B4	dw 0			; DATA XREF: sub_7F8306D0+38o
		align 10h
; LCID Locale
Locale		dd 0			; DATA XREF: sub_7F82FE50+6r
					; sub_7F82FE50+41r ...
		align 10h
dword_7F8399D0	dd 0			; DATA XREF: sub_7F8306D0+C5r
					; sub_7F8314B0+47r
; DWORD	dwTlsIndex
dwTlsIndex	dd 0FFFFFFFFh		; DATA XREF: sub_7F8309B0+Cw
					; sub_7F8309B0+2Dr ...
		db    0
		db    0
		db    0
		db    0
dword_7F8399DC	dd 0			; DATA XREF: sub_7F830310+1Aw
					; sub_7F830310+66r ...
dword_7F8399E0	dd 0			; DATA XREF: sub_7F830310+94w
dword_7F8399E4	dd 0			; DATA XREF: sub_7F830310+84w
dword_7F8399E8	dd 0			; DATA XREF: sub_7F830310+7Ew
dword_7F8399EC	dd 0			; DATA XREF: sub_7F831000+91w
dword_7F8399F0	dd 0			; DATA XREF: sub_7F831000+8Aw
		align 8
dword_7F8399F8	dd 0			; DATA XREF: sub_7F830F20+3Bw
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
dword_7F839A08	dd 0			; DATA XREF: sub_7F831000+1Dw
		align 10h
byte_7F839A10	db 0			; DATA XREF: sub_7F830BE0+1Aw
					; sub_7F831A50+5r
		align 4
dword_7F839A14	dd 0			; DATA XREF: sub_7F830310+107r
					; sub_7F830BE0+7w
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db 0FFh
		db 0FFh
		db 0FFh
		db 0FFh
		db    0
		db  0Ah
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
unk_7F839A48	db    0			; DATA XREF: sub_7F831280+91o
					; sub_7F831280:loc_7F831389o ...
byte_7F839A49	db 0			; DATA XREF: sub_7F8310A0+49r
					; sub_7F8310A0+8Dr ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
dword_7F839B4C	dd 0			; DATA XREF: sub_7F831280+20r
					; sub_7F831280+F6w ...
dword_7F839B50	dd 0			; DATA XREF: sub_7F831280+180w
					; sub_7F831280+1C9w ...
		align 8
dword_7F839B58	dd 0			; DATA XREF: sub_7F831280+17Bo
					; sub_7F831280:loc_7F831442o ...
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
dword_7F839B64	dd 0			; DATA XREF: sub_7F831280:loc_7F83146Ar
					; sub_7F8314B0w ...
byte_7F839B68	db 1			; DATA XREF: sub_7F831280+148r
		db    2
		db    4
		db    8
		db    0
		db    0
		db    0
		db    0
unk_7F839B70	db 0A4h	; �		; DATA XREF: sub_7F831280+61o
		db    3
		db    0
		db    0
unk_7F839B74	db  60h	; `		; DATA XREF: sub_7F831280+195o
		db  82h	; �
		db  79h	; y
		db  82h	; �
dword_7F839B78	dd 21h			; DATA XREF: sub_7F831280+18Cr
		align 10h
unk_7F839B80	db 0A6h	; �		; DATA XREF: sub_7F831280+129o
		db 0DFh	; �
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db 0A1h	; �
		db 0A5h	; �
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  81h	; �
		db  9Fh	; �
		db 0E0h	; �
		db 0FCh	; �
		db    0
		db    0
		db    0
		db    0
		db  40h	; @
		db  7Eh	; ~
		db  80h	; �
		db 0FCh	; �
		db    0
		db    0
		db    0
		db    0
		db 0A8h	; �
		db    3
		db    0
		db    0
		db 0C1h	; �
		db 0A3h	; �
		db 0DAh	; �
		db 0A3h	; �
		db  20h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  81h	; �
		db 0FEh	; �
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  40h	; @
		db 0FEh	; �
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db 0B5h	; �
		db    3
		db    0
		db    0
		db 0C1h	; �
		db 0A3h	; �
		db 0DAh	; �
		db 0A3h	; �
		db  20h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  81h	; �
		db 0FEh	; �
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  41h	; A
		db 0FEh	; �
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db 0B6h	; �
		db    3
		db    0
		db    0
		db 0CFh	; �
		db 0A2h	; �
		db 0E4h	; �
		db 0A2h	; �
		db  1Ah
		db    0
		db 0E5h	; �
		db 0A2h	; �
		db 0E8h	; �
		db 0A2h	; �
		db  5Bh	; [
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  81h	; �
		db 0FEh	; �
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  40h	; @
		db  7Eh	; ~
		db 0A1h	; �
		db 0FEh	; �
		db    0
		db    0
		db    0
		db    0
		db  51h	; Q
		db    5
		db    0
		db    0
		db  51h	; Q
		db 0DAh	; �
		db  5Eh	; ^
		db 0DAh	; �
		db  20h
		db    0
		db  5Fh	; _
		db 0DAh	; �
		db  6Ah	; j
		db 0DAh	; �
		db  32h	; 2
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  81h	; �
		db 0D3h	; �
		db 0D8h	; �
		db 0DEh	; �
		db 0E0h	; �
		db 0F9h	; �
		db    0
		db    0
		db  31h	; 1
		db  7Eh	; ~
		db  81h	; �
		db 0FEh	; �
		db    0
		db    0
		db    0
		db    0
unk_7F839C60	db    0			; DATA XREF: sub_7F831280+75o
		db    0
		db    0
		db    0
dword_7F839C64	dd 0			; DATA XREF: sub_7F8315A0+3r
					; sub_7F8315A0+1Ew ...
aRuntimeError	db 'runtime error ',0   ; DATA XREF: .data:7F839F54o
		align 4
asc_7F839C78	db 0Dh,0Ah,0		; DATA XREF: .data:7F839F4Co
		align 4
aTlossError	db 'TLOSS error',0Dh,0Ah,0 ; DATA XREF: .data:7F839F44o
		align 4
aSingError	db 'SING error',0Dh,0Ah,0 ; DATA XREF: .data:7F839F3Co
		align 4
aDomainError	db 'DOMAIN error',0Dh,0Ah,0 ; DATA XREF: .data:7F839F34o
		align 4
aR6027NotEnough	db 'R6027',0Dh,0Ah      ; DATA XREF: .data:7F839F2Co
		db '- not enough space for lowio initialization',0Dh,0Ah,0
		align 4
aR6026NotEnough	db 'R6026',0Dh,0Ah      ; DATA XREF: .data:7F839F24o
		db '- not enough space for stdio initialization',0Dh,0Ah,0
		align 4
aR6025PureVirtu	db 'R6025',0Dh,0Ah      ; DATA XREF: .data:7F839F1Co
		db '- pure virtual function call',0Dh,0Ah,0
		align 4
aR6024NotEnough	db 'R6024',0Dh,0Ah      ; DATA XREF: .data:7F839F14o
		db '- not enough space for _onexit/atexit table',0Dh,0Ah,0
		align 4
aR6019UnableToO	db 'R6019',0Dh,0Ah      ; DATA XREF: .data:7F839F0Co
		db '- unable to open console device',0Dh,0Ah,0
		align 4
aR6018Unexpecte	db 'R6018',0Dh,0Ah      ; DATA XREF: .data:7F839F04o
		db '- unexpected heap error',0Dh,0Ah,0
		align 4
aR6017Unexpecte	db 'R6017',0Dh,0Ah      ; DATA XREF: .data:7F839EFCo
		db '- unexpected multithread lock error',0Dh,0Ah,0
		align 4
aR6016NotEnough	db 'R6016',0Dh,0Ah      ; DATA XREF: .data:7F839EF4o
		db '- not enough space for thread data',0Dh,0Ah,0
aAbnormalProgra	db 0Dh,0Ah		; DATA XREF: .data:7F839EECo
		db 'abnormal program termination',0Dh,0Ah,0
		align 4
aR6009NotEnough	db 'R6009',0Dh,0Ah      ; DATA XREF: .data:7F839EE4o
		db '- not enough space for environment',0Dh,0Ah,0
aR6008NotEnough	db 'R6008',0Dh,0Ah      ; DATA XREF: .data:7F839EDCo
		db '- not enough space for arguments',0Dh,0Ah,0
		align 4
aR6002FloatingP	db 'R6002',0Dh,0Ah      ; DATA XREF: .data:off_7F839ED4o
		db '- floating point not loaded',0Dh,0Ah,0
		align 10h
dword_7F839ED0	dd 2			; DATA XREF: sub_7F831790+8o
					; sub_7F831790:loc_7F8317B8r
off_7F839ED4	dd offset aR6002FloatingP ; DATA XREF: sub_7F831790+153r
					; sub_7F831790:loc_7F83194Fr
					; "R6002\r\n- floating point not loaded\r\"...
		db    8
		db    0
		db    0
		db    0
		dd offset aR6008NotEnough ; "R6008\r\n-	not enough space for argumen"...
		db    9
		db    0
		db    0
		db    0
		dd offset aR6009NotEnough ; "R6009\r\n-	not enough space for environ"...
		db  0Ah
		db    0
		db    0
		db    0
		dd offset aAbnormalProgra ; "\r\nabnormal program termination\r\n"
		db  10h
		db    0
		db    0
		db    0
		dd offset aR6016NotEnough ; "R6016\r\n-	not enough space for thread "...
		db  11h
		db    0
		db    0
		db    0
		dd offset aR6017Unexpecte ; "R6017\r\n-	unexpected multithread lock "...
		db  12h
		db    0
		db    0
		db    0
		dd offset aR6018Unexpecte ; "R6018\r\n-	unexpected heap	error\r\n"
		db  13h
		db    0
		db    0
		db    0
		dd offset aR6019UnableToO ; "R6019\r\n-	unable to open console devic"...
		db  18h
		db    0
		db    0
		db    0
		dd offset aR6024NotEnough ; "R6024\r\n-	not enough space for _onexit"...
		db  19h
		db    0
		db    0
		db    0
		dd offset aR6025PureVirtu ; "R6025\r\n-	pure virtual function call\r"...
		db  1Ah
		db    0
		db    0
		db    0
		dd offset aR6026NotEnough ; "R6026\r\n-	not enough space for stdio i"...
		db  1Bh
		db    0
		db    0
		db    0
		dd offset aR6027NotEnough ; "R6027\r\n-	not enough space for lowio i"...
		db  78h	; x
		db    0
		db    0
		db    0
		dd offset aDomainError	; "DOMAIN error\r\n"
		db  79h	; y
		db    0
		db    0
		db    0
		dd offset aSingError	; "SING	error\r\n"
		db  7Ah	; z
		db    0
		db    0
		db    0
		dd offset aTlossError	; "TLOSS error\r\n"
		db 0FCh	; �
		db    0
		db    0
		db    0
		dd offset asc_7F839C78	; "\r\n"
		db 0FFh
		db    0
		db    0
		db    0
		dd offset aRuntimeError	; "runtime error "
dword_7F839F58	dd 0			; DATA XREF: sub_7F831750+24r
					; sub_7F831790+20o
aMicrosoftVisua	db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: sub_7F831790+189o
		align 4
asc_7F839F84	db 0Ah			; DATA XREF: sub_7F831790+121o
					; .data:7F83A568o
		db 0Ah,0
		align 4
aRuntimeErrorPr	db 'Runtime Error!',0Ah ; DATA XREF: sub_7F831790:loc_7F831870o
		db 0Ah
		db 'Program: ',0
		align 4
a___		db '...',0              ; DATA XREF: sub_7F831790+D2o
					; .data:7F83A560o
aProgramNameUnk	db '<program name unknown>',0 ; DATA XREF: sub_7F831790+86o
		align 10h
off_7F839FC0	dd offset Caption+50h	; DATA XREF: sub_7F8305F0+7o
					; sub_7F8305F0+15o ...
		align 8
		dd offset Caption+50h
		db    1
		db    1
		db    0
		db    0
unk_7F839FD0	db    0			; DATA XREF: sub_7F831980+89o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  10h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    1
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    2
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
unk_7F83A030	db    0			; DATA XREF: sub_7F831980+BDo
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
unk_7F83A220	db    0			; DATA XREF: sub_7F8305F0+Eo
					; sub_7F830660+Eo
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
; int dword_7F83A244
dword_7F83A244	dd 0			; DATA XREF: sub_7F830930r
					; sub_7F831AE0+32r
unk_7F83A248	db    5			; DATA XREF: sub_7F830A40+4o
		db    0
		db    0
		db 0C0h	; �
		db  0Bh
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  1Dh
		db    0
		db    0
		db 0C0h	; �
		db    4
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  96h	; �
		db    0
		db    0
		db 0C0h	; �
		db    4
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  8Dh	; �
		db    0
		db    0
		db 0C0h	; �
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  8Eh	; �
		db    0
		db    0
		db 0C0h	; �
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  8Fh	; �
		db    0
		db    0
		db 0C0h	; �
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  90h	; �
		db    0
		db    0
		db 0C0h	; �
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  91h	; �
		db    0
		db    0
		db 0C0h	; �
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  92h	; �
		db    0
		db    0
		db 0C0h	; �
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  93h	; �
		db    0
		db    0
		db 0C0h	; �
		db    8
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    3
		db    0
		db    0
		db    0
		db    7
		db    0
		db    0
		db    0
		db  78h	; x
		db    0
		db    0
		db    0
		db  0Ah
		db    0
		db    0
		db    0
		dd offset unk_7F83A2DA
		dd offset unk_7F83A2DA
		db    0
		db    0
unk_7F83A2DA	db  20h			; DATA XREF: .data:7F83A2D0o
					; .data:7F83A2D4o
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  28h	; (
		db    0
		db  28h	; (
		db    0
		db  28h	; (
		db    0
		db  28h	; (
		db    0
		db  28h	; (
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  20h
		db    0
		db  48h	; H
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  84h	; �
		db    0
		db  84h	; �
		db    0
		db  84h	; �
		db    0
		db  84h	; �
		db    0
		db  84h	; �
		db    0
		db  84h	; �
		db    0
		db  84h	; �
		db    0
		db  84h	; �
		db    0
		db  84h	; �
		db    0
		db  84h	; �
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  81h	; �
		db    0
		db  81h	; �
		db    0
		db  81h	; �
		db    0
		db  81h	; �
		db    0
		db  81h	; �
		db    0
		db  81h	; �
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db    1
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  82h	; �
		db    0
		db  82h	; �
		db    0
		db  82h	; �
		db    0
		db  82h	; �
		db    0
		db  82h	; �
		db    0
		db  82h	; �
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db    2
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  10h
		db    0
		db  20h
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    1
		db    0
		db    0
		db    0
		db  2Eh	; .
		db    0
		db    0
		db    0
		db    1
		db    0
		db    0
		db    0
dword_7F83A4E8	dd 0			; DATA XREF: sub_7F831B40+5r
					; sub_7F831B40+2Cw ...
dword_7F83A4EC	dd 0			; DATA XREF: sub_7F831B40+42w
					; sub_7F831B40:loc_7F831B8Fr
dword_7F83A4F0	dd 0			; DATA XREF: sub_7F831B40+4Aw
					; sub_7F831B40+60r ...
; CHAR aGetlastactivep[]
aGetlastactivep	db 'GetLastActivePopup',0 ; DATA XREF: sub_7F831B40+3Do
		align 4
; CHAR aGetactivewindo[]
aGetactivewindo	db 'GetActiveWindow',0  ; DATA XREF: sub_7F831B40+35o
; CHAR aMessageboxa[]
aMessageboxa	db 'MessageBoxA',0      ; DATA XREF: sub_7F831B40+1Eo
; CHAR aUser32_dll[]
aUser32_dll	db 'user32.dll',0       ; DATA XREF: sub_7F831B40+Do
		align 10h
asc_7F83A530	db 0Ah,0		; DATA XREF: .data:7F83A564o
		align 8
aAssertionFaile	db 'Assertion failed: %s, file %s, line %d',0Ah,0
		dd offset a___		; "..."
		dd offset asc_7F83A530	; "\n"
		dd offset asc_7F839F84	; "\n\n"
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
aNull_0:				; DATA XREF: .data:7F83A5ACo
		unicode	0, <(null)>,0
		db    0
		db    0
aNull		db '(null)',0           ; DATA XREF: .data:7F83A5A8o
		db    0
		dd offset aNull		; "(null)"
		dd offset aNull_0	; "(null)"
		dd offset sub_7F832660
		dd offset sub_7F832660
		dd offset sub_7F832660
		dd offset sub_7F832660
		dd offset sub_7F832660
		dd offset sub_7F832660
		align 1000h
_data		ends

;
; Imports from ADVAPI32.dll
;
; Section 3. (virtual address 0003B000)
; Virtual size			: 000015CA (   5578.)
; Section size in file		: 00001600 (   5632.)
; Offset to raw	data for section: 00039200
; Flags	40000040: Data Readable
; Alignment	: default
; ===========================================================================

; Segment type:	Externs
; _idata
; LSTATUS __stdcall RegCreateKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
		extrn RegCreateKeyA:dword ; CODE XREF: sub_7F80560A+8Ap
					; DATA XREF: sub_7F80560A+8Ar
; BOOL __stdcall InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR pSecurityDescriptor,	DWORD dwRevision)
		extrn InitializeSecurityDescriptor:dword ; CODE	XREF: sub_7F82F41C+Cp
					; DATA XREF: sub_7F82F41C+Cr
; BOOL __stdcall SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR	pSecurityDescriptor, BOOL bDaclPresent,	PACL pDacl, BOOL bDaclDefaulted)
		extrn SetSecurityDescriptorDacl:dword ;	CODE XREF: sub_7F82F41C+21p
					; DATA XREF: sub_7F82F41C+21r
; BOOL __stdcall DeregisterEventSource(HANDLE hEventLog)
		extrn DeregisterEventSource:dword ; CODE XREF: sub_7F805583+76p
					; DATA XREF: sub_7F805583+76r
; LSTATUS __stdcall RegSetValueExA(HKEY	hKey, LPCSTR lpValueName, DWORD	Reserved, DWORD	dwType,	const BYTE *lpData, DWORD cbData)
		extrn RegSetValueExA:dword ; CODE XREF:	sub_7F80560A+D7p
					; sub_7F80560A+FCp
					; DATA XREF: ...
; LSTATUS __stdcall RegCloseKey(HKEY hKey)
		extrn RegCloseKey:dword	; CODE XREF: sub_7F80560A+124p
					; DATA XREF: sub_7F80560A+124r
; HANDLE __stdcall RegisterEventSourceA(LPCSTR lpUNCServerName,	LPCSTR lpSourceName)
		extrn RegisterEventSourceA:dword ; CODE	XREF: sub_7F805583+4Cp
					; DATA XREF: sub_7F805583+4Cr
; BOOL __stdcall ReportEventA(HANDLE hEventLog,	WORD wType, WORD wCategory, DWORD dwEventID, PSID lpUserSid, WORD wNumStrings, DWORD dwDataSize, LPCSTR	*lpStrings, LPVOID lpRawData)
		extrn ReportEventA:dword ; CODE	XREF: sub_7F805583+6Bp
					; DATA XREF: sub_7F805583+6Br

;
; Imports from GDI32.dll
;
; BOOL __stdcall DeleteObject(HGDIOBJ ho)
		extrn DeleteObject:dword ; CODE	XREF: sub_7F8097FF+125p
					; sub_7F8097FF+12Ep ...
; BOOL __stdcall GetTextMetricsA(HDC hdc, LPTEXTMETRICA	lptm)
		extrn GetTextMetricsA:dword ; CODE XREF: sub_7F82B14A+8Dp
					; DATA XREF: sub_7F82B14A+8Dr
; COLORREF __stdcall SetBkColor(HDC hdc, COLORREF color)
		extrn SetBkColor:dword	; CODE XREF: sub_7F82AFF2+76p
					; DATA XREF: sub_7F82AFF2+76r
; HGDIOBJ __stdcall GetStockObject(int i)
		extrn GetStockObject:dword ; CODE XREF:	sub_7F82AFF2+7Ep
					; sub_7F82AFF2+9Fp ...
; HBRUSH __stdcall CreateSolidBrush(COLORREF color)
		extrn CreateSolidBrush:dword ; CODE XREF: sub_7F80A689+1Dp
					; sub_7F80C4B4+2Cp ...
; BOOL __stdcall MoveToEx(HDC hdc, int x, int y, LPPOINT lppt)
		extrn MoveToEx:dword	; CODE XREF: sub_7F8097FF+CCp
					; sub_7F8097FF+F4p ...
; HPEN __stdcall CreatePen(int iStyle, int cWidth, COLORREF color)
		extrn CreatePen:dword	; CODE XREF: sub_7F8097FF+96p
					; sub_7F8097FF+ACp ...
; BOOL __stdcall LineTo(HDC hdc, int x,	int y)
		extrn LineTo:dword	; CODE XREF: sub_7F8097FF+DEp
					; sub_7F8097FF+103p ...
; HGDIOBJ __stdcall SelectObject(HDC hdc, HGDIOBJ h)
		extrn SelectObject:dword ; CODE	XREF: sub_7F8097FF+BDp
					; sub_7F8097FF+E8p ...

;
; Imports from KERNEL32.dll
;
; int __stdcall	lstrcmpiA(LPCSTR lpString1, LPCSTR lpString2)
		extrn lstrcmpiA:dword	; CODE XREF: HrModifyNamesInMsg@4+4Cp
					; HrModifyNamesInMsg@4+6Ep ...
; LONG __stdcall CompareFileTime(const FILETIME	*lpFileTime1, const FILETIME *lpFileTime2)
		extrn CompareFileTime:dword ; CODE XREF: FOutsideDateRange@12+Ap
					; FOutsideDateRange@12+18p
					; DATA XREF: ...
; HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName)
		extrn GetModuleHandleA:dword ; CODE XREF: sub_7F8026ED+10Cp
					; MMFMIG_ProcessMMF@4+6p ...
; HANDLE __stdcall CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags,	LPDWORD	lpThreadId)
		extrn CreateThread:dword ; CODE	XREF: sub_7F802962+14Dp
					; DATA XREF: sub_7F802962+14Dr
; HANDLE __stdcall CreateEventA(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState,	LPCSTR lpName)
		extrn CreateEventA:dword ; CODE	XREF: sub_7F802962+74p
					; sub_7F802962+136p
					; DATA XREF: ...
; void __stdcall InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
		extrn InitializeCriticalSection:dword ;	CODE XREF: sub_7F802962+66p
					; sub_7F8304C0+Dp ...
; BOOL __stdcall ReleaseMutex(HANDLE hMutex)
		extrn ReleaseMutex:dword ; CODE	XREF: sub_7F801AF7+51p
					; sub_7F801B61+F1p ...
; void __stdcall GetSystemInfo(LPSYSTEM_INFO lpSystemInfo)
		extrn GetSystemInfo:dword ; CODE XREF: sub_7F802962+50p
					; DATA XREF: sub_7F802962+50r
; void __stdcall DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
		extrn DeleteCriticalSection:dword ; CODE XREF: sub_7F802B1B+117p
					; sub_7F8304F0+2Dp ...
; BOOL __stdcall CloseHandle(HANDLE hObject)
		extrn CloseHandle:dword	; CODE XREF: sub_7F802B1B+C7p
					; sub_7F802B1B+F0p ...
; BOOL __stdcall SetEvent(HANDLE hEvent)
		extrn SetEvent:dword	; CODE XREF: sub_7F802B1B+7Bp
					; sub_7F803AA5+123p ...
; void __stdcall LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
		extrn LeaveCriticalSection:dword ; CODE	XREF: sub_7F802DB7+61Ap
					; sub_7F803AA5+103p ...
; BOOL __stdcall ResetEvent(HANDLE hEvent)
		extrn ResetEvent:dword	; CODE XREF: sub_7F802DB7+613p
					; sub_7F803AA5+E8p ...
; void __stdcall EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
		extrn EnterCriticalSection:dword ; CODE	XREF: sub_7F802DB7+5E8p
					; sub_7F803AA5+54p ...
; DWORD	__stdcall WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds)
		extrn WaitForSingleObject:dword	; CODE XREF: StartAddress+184p
					; sub_7F82EEA3+23p ...
; int __stdcall	lstrlenA(LPCSTR	lpString)
		extrn lstrlenA:dword	; CODE XREF: sub_7F80549A:loc_7F8054E2p
					; sub_7F80549A+85p ...
; LPSTR	__stdcall lstrcatA(LPSTR lpString1, LPCSTR lpString2)
		extrn lstrcatA:dword	; CODE XREF: sub_7F804EC7+14Ep
					; sub_7F80530D+9Ep ...
; void __stdcall Sleep(DWORD dwMilliseconds)
		extrn Sleep:dword	; CODE XREF: sub_7F80504F+9Dp
					; sub_7F805168+127p ...
; HANDLE __stdcall CreateFileA(LPCSTR lpFileName, DWORD	dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,	DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE	hTemplateFile)
		extrn CreateFileA:dword	; CODE XREF: sub_7F80530D+BAp
					; sub_7F806FAC+1Cp ...
; LPSTR	__stdcall lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
		extrn lstrcpyA:dword	; CODE XREF: sub_7F80530D+6Ep
					; sub_7F80530D+8Cp ...
; BOOL __stdcall DeleteFileA(LPCSTR lpFileName)
		extrn DeleteFileA:dword	; CODE XREF: sub_7F805403+5Ap
					; sub_7F806FAC+3Cp ...
; DWORD	__stdcall GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
		extrn GetFileSize:dword	; CODE XREF: sub_7F805403+3Dp
					; sub_7F815751+1DFp ...
; BOOL __stdcall WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite,	LPDWORD	lpNumberOfBytesWritten,	LPOVERLAPPED lpOverlapped)
		extrn WriteFile:dword	; CODE XREF: sub_7F80549A+60p
					; sub_7F80549A+A1p ...
; DWORD	__stdcall GetLastError()
		extrn GetLastError:dword ; CODE	XREF: sub_7F80560A+ACp
					; sub_7F806FAC+27p ...
; DWORD	__stdcall GetModuleFileNameA(HMODULE hModule, LPSTR lpFilename,	DWORD nSize)
		extrn GetModuleFileNameA:dword ; CODE XREF: sub_7F80560A+A2p
					; sub_7F831000+12p ...
; BOOL __stdcall FreeLibrary(HMODULE hLibModule)
		extrn FreeLibrary:dword	; CODE XREF: sub_7F8060C1+DCp
					; sub_7F80A95F+37p ...
; FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName)
		extrn GetProcAddress:dword ; CODE XREF:	sub_7F8060C1+C3p
					; sub_7F80C275+54p ...
; HMODULE __stdcall LoadLibraryA(LPCSTR	lpLibFileName)
		extrn LoadLibraryA:dword ; CODE	XREF: sub_7F8060C1+B1p
					; sub_7F80C30F+1Fp ...
; DWORD	__stdcall GetFileAttributesA(LPCSTR lpFileName)
		extrn GetFileAttributesA:dword ; CODE XREF: sub_7F806861+560p
					; sub_7F809A3F+AFp ...
; int __stdcall	GetTimeFormatA(LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpTime, LPCSTR lpFormat, LPSTR lpTimeStr, int cchTime)
		extrn GetTimeFormatA:dword ; CODE XREF:	sub_7F80795B+16Dp
					; DATA XREF: sub_7F80795B+16Dr
; void __stdcall GetSystemTime(LPSYSTEMTIME lpSystemTime)
		extrn GetSystemTime:dword ; CODE XREF: sub_7F807D9C+272p
					; sub_7F807D9C+3AAp ...
; UINT __stdcall SetErrorMode(UINT uMode)
		extrn SetErrorMode:dword ; CODE	XREF: sub_7F8081B3+1Cp
					; sub_7F8081B3+AAp ...
; BOOL __stdcall IsBadWritePtr(LPVOID lp, UINT_PTR ucb)
		extrn IsBadWritePtr:dword ; CODE XREF: sub_7F801A60+Cp
					; sub_7F801A60+2Ap ...
; DWORD	__stdcall SetFilePointer(HANDLE	hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod)
		extrn SetFilePointer:dword ; CODE XREF:	sub_7F8083A0+9Dp
					; sub_7F815C03+67p ...
; BOOL __stdcall ReadFile(HANDLE hFile,	LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
		extrn ReadFile:dword	; CODE XREF: sub_7F8083A0+7Dp
					; sub_7F80AA5A+51p ...
; BOOL __stdcall FindClose(HANDLE hFindFile)
		extrn FindClose:dword	; CODE XREF: sub_7F8083A0+3Ap
					; sub_7F808498+1CFp ...
; HANDLE __stdcall FindFirstFileA(LPCSTR lpFileName, LPWIN32_FIND_DATAA	lpFindFileData)
		extrn FindFirstFileA:dword ; CODE XREF:	sub_7F8083A0+22p
					; sub_7F808498+1C1p ...
; DWORD	__stdcall GetTickCount()
		extrn GetTickCount:dword ; CODE	XREF: sub_7F8091A3+1EFp
					; sub_7F8091A3+1F3p ...
; BOOL __stdcall FileTimeToSystemTime(const FILETIME *lpFileTime, LPSYSTEMTIME lpSystemTime)
		extrn FileTimeToSystemTime:dword ; CODE	XREF: sub_7F809DFE+68p
					; DATA XREF: sub_7F809DFE+68r
; BOOL __stdcall SystemTimeToFileTime(const SYSTEMTIME *lpSystemTime, LPFILETIME lpFileTime)
		extrn SystemTimeToFileTime:dword ; CODE	XREF: sub_7F809DFE+35p
					; sub_7F809DFE+46p ...
; DWORD	__stdcall GetPrivateProfileStringA(LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpDefault, LPSTR lpReturnedString, DWORD nSize, LPCSTR lpFileName)
		extrn GetPrivateProfileStringA:dword ; CODE XREF: sub_7F80BBF6+102p
					; sub_7F815163+4Ep ...
; BOOL __stdcall IsBadReadPtr(const void *lp, UINT_PTR ucb)
		extrn IsBadReadPtr:dword ; CODE	XREF: sub_7F801A60+1Bp
					; sub_7F8023F1+17p ...
; BOOL __stdcall GetVersionExA(LPOSVERSIONINFOA	lpVersionInformation)
		extrn GetVersionExA:dword ; CODE XREF: sub_7F80C7F1+12p
					; DATA XREF: sub_7F80C7F1+12r
; BOOL __stdcall IsBadHugeReadPtr(const	void *lp, UINT_PTR ucb)
		extrn IsBadHugeReadPtr:dword ; CODE XREF: sub_7F80E173+2Ap
					; DATA XREF: sub_7F80E173+2Ar
; BOOL __stdcall LocalFileTimeToFileTime(const FILETIME	*lpLocalFileTime, LPFILETIME lpFileTime)
		extrn LocalFileTimeToFileTime:dword ; CODE XREF: sub_7F80E471+65p
					; sub_7F80E471+8Fp
					; DATA XREF: ...
; HGLOBAL __stdcall GlobalFree(HGLOBAL hMem)
		extrn GlobalFree:dword	; CODE XREF: sub_7F8242A1+4Ep
					; sub_7F824418+4Ep
					; DATA XREF: ...
; HGLOBAL __stdcall GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
		extrn GlobalAlloc:dword	; CODE XREF: sub_7F8241ED+80p
					; sub_7F824364+80p
					; DATA XREF: ...
; BOOL __stdcall GlobalUnlock(HGLOBAL hMem)
		extrn GlobalUnlock:dword ; CODE	XREF: sub_7F8242A1+47p
					; sub_7F824418+47p
					; DATA XREF: ...
; LPVOID __stdcall GlobalLock(HGLOBAL hMem)
		extrn GlobalLock:dword	; CODE XREF: sub_7F8241ED+9Cp
					; sub_7F824364+9Cp
					; DATA XREF: ...
; BOOL __stdcall WritePrivateProfileStringA(LPCSTR lpAppName, LPCSTR lpKeyName,	LPCSTR lpString, LPCSTR	lpFileName)
		extrn WritePrivateProfileStringA:dword ; CODE XREF: sub_7F815163+2DBp
					; sub_7F815163+322p
					; DATA XREF: ...
; UINT __stdcall GetPrivateProfileIntA(LPCSTR lpAppName, LPCSTR	lpKeyName, INT nDefault, LPCSTR	lpFileName)
		extrn GetPrivateProfileIntA:dword ; CODE XREF: sub_7F815163+1Dp
					; sub_7F8173E6+E7p ...
; UINT __stdcall GetDriveTypeA(LPCSTR lpRootPathName)
		extrn GetDriveTypeA:dword ; CODE XREF: sub_7F815751+50p
					; sub_7F82A7AB+4p
					; DATA XREF: ...
; BOOL __stdcall FileTimeToDosDateTime(const FILETIME *lpFileTime, LPWORD lpFatDate, LPWORD lpFatTime)
		extrn FileTimeToDosDateTime:dword ; CODE XREF: sub_7F8155EA+6Dp
					; DATA XREF: sub_7F8155EA+6Dr
; BOOL __stdcall GetDiskFreeSpaceA(LPCSTR lpRootPathName, LPDWORD lpSectorsPerCluster, LPDWORD lpBytesPerSector, LPDWORD lpNumberOfFreeClusters, LPDWORD lpTotalNumberOfClusters)
		extrn GetDiskFreeSpaceA:dword ;	CODE XREF: sub_7F815671+2Fp
					; DATA XREF: sub_7F815671+2Fr
; LPVOID __stdcall MapViewOfFile(HANDLE	hFileMappingObject, DWORD dwDesiredAccess, DWORD dwFileOffsetHigh, DWORD dwFileOffsetLow, SIZE_T dwNumberOfBytesToMap)
		extrn MapViewOfFile:dword ; CODE XREF: sub_7F815751+1C2p
					; sub_7F82F462+93p
					; DATA XREF: ...
; HANDLE __stdcall CreateFileMappingA(HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCSTR lpName)
		extrn CreateFileMappingA:dword ; CODE XREF: sub_7F815751+1AFp
					; sub_7F82F462+48p
					; DATA XREF: ...
; BOOL __stdcall UnmapViewOfFile(LPCVOID lpBaseAddress)
		extrn UnmapViewOfFile:dword ; CODE XREF: sub_7F815991+2Dp
					; sub_7F82F462+200p ...
; BOOL __stdcall DuplicateHandle(HANDLE	hSourceProcessHandle, HANDLE hSourceHandle, HANDLE hTargetProcessHandle, LPHANDLE lpTargetHandle, DWORD	dwDesiredAccess, BOOL bInheritHandle, DWORD dwOptions)
		extrn DuplicateHandle:dword ; CODE XREF: sub_7F8159EA+42p
					; DATA XREF: sub_7F8159EA+42r
; HANDLE __stdcall GetCurrentProcess()
		extrn GetCurrentProcess:dword ;	CODE XREF: sub_7F8159EA+30p
					; DATA XREF: sub_7F8159EA+30r
; BOOL __stdcall SetEndOfFile(HANDLE hFile)
		extrn SetEndOfFile:dword ; CODE	XREF: sub_7F815BCA+13p
					; DATA XREF: sub_7F815BCA+13r
; BOOL __stdcall LockFile(HANDLE hFile,	DWORD dwFileOffsetLow, DWORD dwFileOffsetHigh, DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh)
		extrn LockFile:dword	; CODE XREF: sub_7F815E19+12p
					; DATA XREF: sub_7F815E19+12r
; BOOL __stdcall UnlockFile(HANDLE hFile, DWORD	dwFileOffsetLow, DWORD dwFileOffsetHigh, DWORD nNumberOfBytesToUnlockLow, DWORD	nNumberOfBytesToUnlockHigh)
		extrn UnlockFile:dword	; CODE XREF: sub_7F815E51+12p
					; DATA XREF: sub_7F815E51+12r
; DWORD	__stdcall GetCurrentProcessId()
		extrn __imp_GetCurrentProcessId:dword
					; CODE XREF: sub_7F816468:loc_7F816491p
					; TimerFunc+8p	...
; void __stdcall GetLocalTime(LPSYSTEMTIME lpSystemTime)
		extrn GetLocalTime:dword ; CODE	XREF: sub_7F817717+Ap
					; DATA XREF: sub_7F817717+Ar
; HGLOBAL __stdcall GlobalHandle(LPCVOID pMem)
		extrn GlobalHandle:dword ; CODE	XREF: sub_7F8242A1:loc_7F8242DFp
					; sub_7F824418:loc_7F824456p
					; DATA XREF: ...
; UINT __stdcall GetTempFileNameA(LPCSTR lpPathName, LPCSTR lpPrefixString, UINT uUnique, LPSTR	lpTempFileName)
		extrn GetTempFileNameA:dword ; CODE XREF: sub_7F82AB76+29p
					; DATA XREF: sub_7F82AB76+29r
; DWORD	__stdcall GetTempPathA(DWORD nBufferLength, LPSTR lpBuffer)
		extrn GetTempPathA:dword ; CODE	XREF: sub_7F82AB76+10p
					; DATA XREF: sub_7F82AB76+10r
; DWORD	__stdcall GetCurrentThreadId()
		extrn GetCurrentThreadId:dword ; CODE XREF: sub_7F82B14A+2E8p
					; sub_7F8309B0+46p ...
; int __stdcall	lstrcmpA(LPCSTR	lpString1, LPCSTR lpString2)
		extrn lstrcmpA:dword	; CODE XREF: sub_7F82B7B5+2Ap
					; sub_7F82B7B5+60p
					; DATA XREF: ...
; HANDLE __stdcall CreateMutexA(LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCSTR lpName)
		extrn CreateMutexA:dword ; CODE	XREF: sub_7F82EEA3+9p
					; sub_7F82F462+BAp ...
; void __stdcall __noreturn ExitProcess(UINT uExitCode)
		extrn ExitProcess:dword	; CODE XREF: sub_7F82F26E+3Dp
					; sub_7F82F2D1+Bp ...
; LONG __stdcall InterlockedDecrement(volatile LONG *lpAddend)
		extrn InterlockedDecrement:dword ; CODE	XREF: sub_7F82F26E+1Ep
					; sub_7F82F2D1+2Ep
					; DATA XREF: ...
; LONG __stdcall InterlockedIncrement(volatile LONG *lpAddend)
		extrn InterlockedIncrement:dword ; CODE	XREF: sub_7F82F26E+13p
					; DATA XREF: sub_7F82F26E+13r
; LPVOID __stdcall VirtualAlloc(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect)
		extrn VirtualAlloc:dword ; CODE	XREF: sub_7F82F462+142p
					; sub_7F82F76F+99p
					; DATA XREF: ...
; SIZE_T __stdcall VirtualQuery(LPCVOID	lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength)
		extrn VirtualQuery:dword ; CODE	XREF: sub_7F82F462+122p
					; DATA XREF: sub_7F82F462+122r
; DWORD	__stdcall GetPrivateProfileSectionA(LPCSTR lpAppName, LPSTR lpReturnedString, DWORD nSize, LPCSTR lpFileName)
		extrn GetPrivateProfileSectionA:dword ;	CODE XREF: sub_7F80BBF6+AEp
					; DATA XREF: sub_7F80BBF6+AEr
; BOOL __stdcall SetStdHandle(DWORD nStdHandle,	HANDLE hHandle)
		extrn SetStdHandle:dword ; CODE	XREF: sub_7F832350:loc_7F8323AFp
					; DATA XREF: sub_7F832350:loc_7F8323AFr
; UINT __stdcall GetWindowsDirectoryA(LPSTR lpBuffer, UINT uSize)
		extrn GetWindowsDirectoryA:dword ; CODE	XREF: sub_7F80BBF6+2Dp
					; DATA XREF: sub_7F80BBF6+2Dr
; BOOL __stdcall FlushFileBuffers(HANDLE hFile)
		extrn FlushFileBuffers:dword ; CODE XREF: sub_7F8083A0+D3p
					; sub_7F8159EA+Dp ...
; BOOL __stdcall FreeEnvironmentStringsW(LPWCH)
		extrn FreeEnvironmentStringsW:dword ; CODE XREF: sub_7F8315A0+ECp
					; sub_7F8315A0+FDp
					; DATA XREF: ...
; BOOL __stdcall FreeEnvironmentStringsA(LPCH)
		extrn FreeEnvironmentStringsA:dword ; CODE XREF: sub_7F8315A0+15Ap
					; sub_7F8315A0+17Fp
					; DATA XREF: ...
; UINT __stdcall GetOEMCP()
		extrn GetOEMCP:dword	; DATA XREF: sub_7F8314B0+1Dr
; UINT __stdcall GetACP()
		extrn GetACP:dword	; DATA XREF: sub_7F8314B0+32r
; BOOL __stdcall GetCPInfo(UINT	CodePage, LPCPINFO lpCPInfo)
		extrn GetCPInfo:dword	; CODE XREF: sub_7F831280+82p
					; DATA XREF: sub_7F831280+82r
; void __stdcall GetStartupInfoA(LPSTARTUPINFOA	lpStartupInfo)
		extrn GetStartupInfoA:dword ; CODE XREF: sub_7F830CE0+6Bp
					; DATA XREF: sub_7F830CE0+6Br
; HANDLE __stdcall GetStdHandle(DWORD nStdHandle)
		extrn GetStdHandle:dword ; CODE	XREF: sub_7F830CE0+17Fp
					; sub_7F831790+1B7p
					; DATA XREF: ...
; DWORD	__stdcall GetFileType(HANDLE hFile)
		extrn GetFileType:dword	; CODE XREF: sub_7F830CE0+11Bp
					; sub_7F830CE0+18Dp
					; DATA XREF: ...
; UINT __stdcall SetHandleCount(UINT uNumber)
		extrn SetHandleCount:dword ; CODE XREF:	sub_7F830CE0+1CDp
					; DATA XREF: sub_7F830CE0+1CDr
; BOOL __stdcall HeapDestroy(HANDLE hHeap)
		extrn HeapDestroy:dword	; CODE XREF: sub_7F830CD0+6p
					; DATA XREF: sub_7F830CD0+6r
; HANDLE __stdcall HeapCreate(DWORD flOptions, SIZE_T dwInitialSize, SIZE_T dwMaximumSize)
		extrn HeapCreate:dword	; CODE XREF: sub_7F830CB0+9p
					; DATA XREF: sub_7F830CB0+9r
; LPCH __stdcall GetEnvironmentStrings()
		extrn GetEnvironmentStrings:dword ; CODE XREF: sub_7F8315A0:loc_7F8315CEp
					; sub_7F8315A0+11Ap
					; DATA XREF: ...
; LPVOID __stdcall TlsGetValue(DWORD dwTlsIndex)
		extrn TlsGetValue:dword	; CODE XREF: sub_7F830A60+10p
					; sub_7F830AD0+1Cp
					; DATA XREF: ...
; void __stdcall SetLastError(DWORD dwErrCode)
		extrn SetLastError:dword ; CODE	XREF: sub_7F830A60+64p
					; DATA XREF: sub_7F830A60+64r
; BOOL __stdcall TlsFree(DWORD dwTlsIndex)
		extrn TlsFree:dword	; CODE XREF: sub_7F830A10+10p
					; DATA XREF: sub_7F830A10+10r
; DWORD	__stdcall TlsAlloc()
		extrn TlsAlloc:dword	; CODE XREF: sub_7F8309B0+6p
					; DATA XREF: sub_7F8309B0+6r
; LPVOID __stdcall HeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes)
		extrn HeapAlloc:dword	; CODE XREF: sub_7F830990+Ep
					; sub_7F831AE0+2Cp
					; DATA XREF: ...
; int __stdcall	LCMapStringW(LCID Locale, DWORD	dwMapFlags, LPCWSTR lpSrcStr, int cchSrc, LPWSTR lpDestStr, int	cchDest)
		extrn LCMapStringW:dword ; CODE	XREF: sub_7F8306D0+44p
					; sub_7F8306D0+138p ...
; int __stdcall	WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR	lpMultiByteStr,	int cbMultiByte, LPCSTR	lpDefaultChar, LPBOOL lpUsedDefaultChar)
		extrn WideCharToMultiByte:dword	; CODE XREF: sub_7F8306D0+1E4p
					; sub_7F8306D0+206p ...
; int __stdcall	LCMapStringA(LCID Locale, DWORD	dwMapFlags, LPCSTR lpSrcStr, int cchSrc, LPSTR lpDestStr, int cchDest)
		extrn LCMapStringA:dword ; CODE	XREF: sub_7F8306D0+25p
					; sub_7F8306D0+A8p
					; DATA XREF: ...
; int __stdcall	MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr,	int cchWideChar)
		extrn MultiByteToWideChar:dword	; CODE XREF: sub_7F8306D0+DFp
					; sub_7F8306D0+11Ep
					; DATA XREF: ...
; BOOL __stdcall HeapFree(HANDLE hHeap,	DWORD dwFlags, LPVOID lpMem)
		extrn HeapFree:dword	; CODE XREF: sub_7F8304A0+11p
					; DATA XREF: sub_7F8304A0+11r
; DWORD	__stdcall GetVersion()
		extrn GetVersion:dword	; CODE XREF: sub_7F830310+Dp
					; DATA XREF: sub_7F830310+Dr
; LPSTR	__stdcall GetCommandLineA()
		extrn GetCommandLineA:dword ; CODE XREF: sub_7F830310:loc_7F8303BCp
					; DATA XREF: sub_7F830310:loc_7F8303BCr
; BOOL __stdcall TlsSetValue(DWORD dwTlsIndex, LPVOID lpTlsValue)
		extrn TlsSetValue:dword	; CODE XREF: sub_7F8309B0+33p
					; sub_7F830A60+35p ...
; BOOL __stdcall MoveFileA(LPCSTR lpExistingFileName, LPCSTR lpNewFileName)
		extrn MoveFileA:dword	; CODE XREF: sub_7F8300A0+Ap
					; DATA XREF: sub_7F8300A0+Ar
; void __stdcall RtlUnwind(PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD	ExceptionRecord, PVOID ReturnValue)
		extrn __imp_RtlUnwind:dword ; DATA XREF: RtlUnwindr
; LPWCH	__stdcall GetEnvironmentStringsW()
		extrn GetEnvironmentStringsW:dword ; CODE XREF:	sub_7F8315A0+16p
					; sub_7F8315A0+6Fp
					; DATA XREF: ...

;
; Imports from MAPI32.dll
;
		extrn __imp_UlRelease@4:dword ;	DATA XREF: UlRelease@4r
		extrn __imp_HrSetOneProp@8:dword ; DATA	XREF: HrSetOneProp@8r
		extrn __imp_HrGetOneProp@12:dword ; DATA XREF: HrGetOneProp@12r
		extrn __imp_MAPIFreeBuffer@4:dword ; DATA XREF:	MAPIFreeBuffer@4r
		extrn __imp_FreeProws@4:dword ;	DATA XREF: FreeProws@4r
		extrn __imp_HrQueryAllRows@24:dword ; DATA XREF: HrQueryAllRows@24r
		extrn __imp_MAPIUninitialize@0:dword ; DATA XREF: MAPIUninitialize@0r
		extrn __imp_MAPIAllocateBuffer@8:dword ; DATA XREF: MAPIAllocateBuffer@8r
		extrn __imp_MAPIAllocateMore@12:dword ;	DATA XREF: MAPIAllocateMore@12r
		extrn __imp_MAPIGetDefaultMalloc@0:dword
					; DATA XREF: MAPIGetDefaultMalloc@0r
		extrn __imp_MAPIInitialize@4:dword ; DATA XREF:	MAPIInitialize@4r
		extrn __imp_HrValidateIPMSubtree@20:dword
					; DATA XREF: HrValidateIPMSubtree@20r
		extrn __imp_PpropFindProp@12:dword ; DATA XREF:	PpropFindProp@12r
		extrn __imp_SzFindCh@8:dword ; DATA XREF: SzFindCh@8r
		extrn __imp_MAPIAdminProfiles@8:dword ;	DATA XREF: MAPIAdminProfiles@8r
		extrn __imp_MAPILogonEx@20:dword ; DATA	XREF: MAPILogonEx@20r
		extrn __imp_HrAllocAdviseSink@12:dword ; DATA XREF: HrAllocAdviseSink@12r
		extrn __imp_CreateIProp@24:dword ; DATA	XREF: CreateIProp@24r
		extrn __imp_CreateTable@36:dword ; DATA	XREF: CreateTable@36r

;
; Imports from USER32.dll
;
; HWND __stdcall GetLastActivePopup(HWND hWnd)
		extrn GetLastActivePopup:dword ; CODE XREF: sub_7F8150A9+46p
					; DATA XREF: sub_7F8150A9+46r
; HWND __stdcall CreateWindowExA(DWORD dwExStyle, LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle, int X, int Y,	int nWidth, int	nHeight, HWND hWndParent, HMENU	hMenu, HINSTANCE hInstance, LPVOID lpParam)
		extrn CreateWindowExA:dword ; CODE XREF: sub_7F81710C+4Ep
					; sub_7F82B14A+2CEp
					; DATA XREF: ...
; ATOM __stdcall RegisterClassA(const WNDCLASSA	*lpWndClass)
		extrn RegisterClassA:dword ; CODE XREF:	sub_7F8171B7+64p
					; sub_7F82AF85+54p
					; DATA XREF: ...
; BOOL __stdcall GetClassInfoA(HINSTANCE hInstance, LPCSTR lpClassName,	LPWNDCLASSA lpWndClass)
		extrn GetClassInfoA:dword ; CODE XREF: sub_7F8171B7+51p
					; DATA XREF: sub_7F8171B7+51r
; BOOL __stdcall IsCharAlphaNumericA(CHAR ch)
		extrn IsCharAlphaNumericA:dword	; CODE XREF: sub_7F81EF87+73p
					; DATA XREF: sub_7F81EF87+73r
; BOOL __stdcall IsCharLowerA(CHAR ch)
		extrn IsCharLowerA:dword ; CODE	XREF: sub_7F81EF87+63p
					; DATA XREF: sub_7F81EF87+63r
; BOOL __stdcall IsCharAlphaA(CHAR ch)
		extrn IsCharAlphaA:dword ; CODE	XREF: sub_7F81EF87+41p
					; DATA XREF: sub_7F81EF87+41r
; SHORT	__stdcall GetAsyncKeyState(int vKey)
		extrn GetAsyncKeyState:dword ; CODE XREF: sub_7F81F0AC+Cp
					; sub_7F81F0AC+9Ap ...
; DWORD	__stdcall GetWindowThreadProcessId(HWND	hWnd, LPDWORD lpdwProcessId)
		extrn GetWindowThreadProcessId:dword ; CODE XREF: sub_7F81F20F+66p
					; sub_7F81F20F+AFp
					; DATA XREF: ...
; BOOL __stdcall EndPaint(HWND hWnd, const PAINTSTRUCT *lpPaint)
		extrn EndPaint:dword	; CODE XREF: sub_7F8097B9+38p
					; sub_7F80C4B4+56p ...
; BOOL __stdcall CharToOemA(LPCSTR pSrc, LPSTR pDst)
		extrn CharToOemA:dword	; CODE XREF: sub_7F820E0E+13p
					; DATA XREF: sub_7F820E0E+13r
; BOOL __stdcall OemToCharA(LPCSTR pSrc, LPSTR pDst)
		extrn OemToCharA:dword	; CODE XREF: sub_7F81550B+12p
					; sub_7F81554E+13p ...
; BOOL __stdcall BringWindowToTop(HWND hWnd)
		extrn BringWindowToTop:dword ; CODE XREF: sub_7F80C519+61p
					; DATA XREF: sub_7F80C519+61r
; HWND __stdcall CreateDialogParamA(HINSTANCE hInstance, LPCSTR	lpTemplateName,	HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam)
		extrn CreateDialogParamA:dword ; CODE XREF: sub_7F80C5C0+4Bp
					; DATA XREF: sub_7F80C5C0+4Br
; int __stdcall	ReleaseDC(HWND hWnd, HDC hDC)
		extrn ReleaseDC:dword	; CODE XREF: sub_7F82B14A+1C2p
					; sub_7F82B72B+43p
					; DATA XREF: ...
; HDC __stdcall	GetDC(HWND hWnd)
		extrn GetDC:dword	; CODE XREF: sub_7F82B14A+65p
					; sub_7F82B72B+2Ep
					; DATA XREF: ...
; HWND __stdcall GetDesktopWindow()
		extrn GetDesktopWindow:dword ; CODE XREF: sub_7F82B14A+10p
					; DATA XREF: sub_7F82B14A+10r
; LRESULT __stdcall DispatchMessageA(const MSG *lpMsg)
		extrn DispatchMessageA:dword ; CODE XREF: sub_7F8035B3+253p
					; sub_7F803A19+5Dp ...
; BOOL __stdcall PeekMessageA(LPMSG lpMsg, HWND	hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg)
		extrn PeekMessageA:dword ; CODE	XREF: sub_7F8035B3+22Ep
					; sub_7F8035B3+261p ...
; int __stdcall	MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption,	UINT uType)
		extrn MessageBoxA:dword	; CODE XREF: sub_7F8023F1+81p
					; sub_7F8035B3+2AAp ...
; HDC __stdcall	BeginPaint(HWND	hWnd, LPPAINTSTRUCT lpPaint)
		extrn BeginPaint:dword	; CODE XREF: sub_7F8097B9+Fp
					; sub_7F80C4B4+15p ...
; int __stdcall	LoadStringA(HINSTANCE hInstance, UINT uID, LPSTR lpBuffer, int cchBufferMax)
		extrn LoadStringA:dword	; CODE XREF: ScMMFMigrateToMDB@48+C8p
					; ScMMFMigrateToMDB@48+1F9p ...
; BOOL __stdcall IsCharUpperA(CHAR ch)
		extrn IsCharUpperA:dword ; CODE	XREF: sub_7F80FCA0+9p
					; sub_7F81EF87+55p
					; DATA XREF: ...
; DWORD	__stdcall CharUpperBuffA(LPSTR lpsz, DWORD cchLength)
		extrn CharUpperBuffA:dword ; CODE XREF:	sub_7F80E7F6+164p
					; sub_7F80ECB3+15Ap ...
; BOOL __stdcall DestroyWindow(HWND hWnd)
		extrn DestroyWindow:dword ; CODE XREF: sub_7F80C75D+16p
					; sub_7F81710C+80p ...
; int __stdcall	DrawTextA(HDC hdc, LPCSTR lpchText, int	cchText, LPRECT	lprc, UINT format)
		extrn DrawTextA:dword	; CODE XREF: sub_7F82AFF2+EAp
					; sub_7F82AFF2+103p
					; DATA XREF: ...
; BOOL __stdcall SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags)
		extrn SetWindowPos:dword ; CODE	XREF: sub_7F805EBF+66p
					; sub_7F807D9C+A2p ...
; int __stdcall	FillRect(HDC hDC, const	RECT *lprc, HBRUSH hbr)
		extrn FillRect:dword	; CODE XREF: sub_7F80A689+33p
					; sub_7F80A689+43p ...
; HWND __stdcall GetParent(HWND	hWnd)
		extrn GetParent:dword	; CODE XREF: sub_7F8087A7+Cp
					; sub_7F809A3F+8Fp ...
; HWND __stdcall SetActiveWindow(HWND hWnd)
		extrn SetActiveWindow:dword ; CODE XREF: sub_7F8087A7+13p
					; DATA XREF: sub_7F8087A7+13r
; BOOL __stdcall InvalidateRect(HWND hWnd, const RECT *lpRect, BOOL bErase)
		extrn InvalidateRect:dword ; CODE XREF:	sub_7F807D9C+1C8p
					; sub_7F80A115+21Cp ...
; LONG __stdcall GetWindowLongA(HWND hWnd, int nIndex)
		extrn GetWindowLongA:dword ; CODE XREF:	sub_7F807D9C+1E0p
					; sub_7F80A115+1Ep ...
; BOOL __stdcall SetDlgItemInt(HWND hDlg, int nIDDlgItem, UINT uValue, BOOL bSigned)
		extrn SetDlgItemInt:dword ; CODE XREF: sub_7F80A115+136p
					; sub_7F80A47A+F2p
					; DATA XREF: ...
; BOOL __stdcall KillTimer(HWND	hWnd, UINT_PTR uIDEvent)
		extrn KillTimer:dword	; CODE XREF: DialogFunc+59p
					; sub_7F814F94+34p ...
; UINT_PTR __stdcall SetTimer(HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc)
		extrn SetTimer:dword	; CODE XREF: DialogFunc+ABp
					; sub_7F816044+179p ...
; LRESULT __stdcall CallWindowProcA(WNDPROC lpPrevWndFunc, HWND	hWnd, UINT Msg,	WPARAM wParam, LPARAM lParam)
		extrn CallWindowProcA:dword ; CODE XREF: sub_7F809FA2+43p
					; sub_7F80C77D+47p
					; DATA XREF: ...
; __int32 __stdcall GetDialogBaseUnits()
		extrn GetDialogBaseUnits:dword ; CODE XREF: sub_7F8097FF+9p
					; sub_7F8097FF+Fp
					; DATA XREF: ...
; BOOL __stdcall ScreenToClient(HWND hWnd, LPPOINT lpPoint)
		extrn ScreenToClient:dword ; CODE XREF:	sub_7F8097FF+5Ep
					; DATA XREF: sub_7F8097FF+5Er
; DWORD	__stdcall GetSysColor(int nIndex)
		extrn GetSysColor:dword	; CODE XREF: sub_7F8097FF+87p
					; sub_7F8097FF+A1p ...
; BOOL __stdcall EnumThreadWindows(DWORD dwThreadId, WNDENUMPROC lpfn, LPARAM lParam)
		extrn EnumThreadWindows:dword ;	CODE XREF: sub_7F82B14A+2EFp
					; DATA XREF: sub_7F82B14A+2EFr
; int __stdcall	FrameRect(HDC hDC, const RECT *lprc, HBRUSH hbr)
		extrn FrameRect:dword	; CODE XREF: sub_7F82AFF2+AFp
					; DATA XREF: sub_7F82AFF2+AFr
; BOOL __stdcall IsWindow(HWND hWnd)
		extrn IsWindow:dword	; CODE XREF: ScMMFMigrateToMDB@48+53p
					; ScMMFMigrateToMDB@48+105p ...
; BOOL __stdcall UpdateWindow(HWND hWnd)
		extrn UpdateWindow:dword ; CODE	XREF: sub_7F807D9C+1CFp
					; sub_7F807D9C+229p ...
; LONG __stdcall SetWindowLongA(HWND hWnd, int nIndex, LONG dwNewLong)
		extrn SetWindowLongA:dword ; CODE XREF:	sub_7F807D9C+1FBp
					; sub_7F807D9C+352p ...
; UINT __stdcall GetDlgItemTextA(HWND hDlg, int	nIDDlgItem, LPSTR lpString, int	cchMax)
		extrn GetDlgItemTextA:dword ; CODE XREF: sub_7F80795B+2A5p
					; sub_7F808498+89p ...
; int __stdcall	MapWindowPoints(HWND hWndFrom, HWND hWndTo, LPPOINT lpPoints, UINT cPoints)
		extrn MapWindowPoints:dword ; CODE XREF: sub_7F80725C+203p
					; sub_7F807D9C+129p
					; DATA XREF: ...
; LRESULT __stdcall SendMessageA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
		extrn SendMessageA:dword ; CODE	XREF: sub_7F806F59+17p
					; sub_7F806F59+39p ...
; HCURSOR __stdcall LoadCursorA(HINSTANCE hInstance, LPCSTR lpCursorName)
		extrn LoadCursorA:dword	; CODE XREF: sub_7F806861+38Ap
					; sub_7F80725C+5Cp ...
; HCURSOR __stdcall SetCursor(HCURSOR hCursor)
		extrn SetCursor:dword	; CODE XREF: sub_7F806861+391p
					; sub_7F806861+4FAp ...
; UINT __stdcall IsDlgButtonChecked(HWND hDlg, int nIDButton)
		extrn IsDlgButtonChecked:dword ; CODE XREF: sub_7F806352+93p
					; sub_7F806352+9Fp ...
; LPSTR	__stdcall CharUpperA(LPSTR lpsz)
		extrn CharUpperA:dword	; CODE XREF: sub_7F806352+137p
					; DATA XREF: sub_7F806352+137r
; BOOL __stdcall SetDlgItemTextA(HWND hDlg, int	nIDDlgItem, LPCSTR lpString)
		extrn SetDlgItemTextA:dword ; CODE XREF: sub_7F806352+1B9p
					; sub_7F806FF2+96p ...
; BOOL __stdcall GetClientRect(HWND hWnd, LPRECT lpRect)
		extrn GetClientRect:dword ; CODE XREF: sub_7F8061C8+5Cp
					; sub_7F8065A0+19p ...
; BOOL __stdcall GetWindowRect(HWND hWnd, LPRECT lpRect)
		extrn GetWindowRect:dword ; CODE XREF: sub_7F8061C8+6Fp
					; sub_7F8065A0+32p ...
; BOOL __stdcall MoveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint)
		extrn MoveWindow:dword	; CODE XREF: sub_7F8061C8+BCp
					; sub_7F8061C8+EFp ...
; HWND __stdcall GetDlgItem(HWND hDlg, int nIDDlgItem)
		extrn GetDlgItem:dword	; CODE XREF: sub_7F805EBF+20p
					; sub_7F805EBF+30p ...
; BOOL __stdcall EnableWindow(HWND hWnd, BOOL bEnable)
		extrn EnableWindow:dword ; CODE	XREF: sub_7F805EBF+37p
					; sub_7F8061C8+27p ...
; BOOL __stdcall ShowWindow(HWND hWnd, int nCmdShow)
		extrn ShowWindow:dword	; CODE XREF: sub_7F805EBF+27p
					; sub_7F805EBF+3Fp ...
; int __stdcall	GetSystemMetrics(int nIndex)
		extrn GetSystemMetrics:dword ; CODE XREF: sub_7F805851+14Fp
					; sub_7F805851+156p ...
; BOOL __stdcall MapDialogRect(HWND hDlg, LPRECT lpRect)
		extrn MapDialogRect:dword ; CODE XREF: sub_7F805851+17Ep
					; sub_7F805851+1C1p ...
; UINT __stdcall RegisterWindowMessageA(LPCSTR lpString)
		extrn RegisterWindowMessageA:dword ; CODE XREF:	sub_7F805851+2B3p
					; DATA XREF: sub_7F805851+2B3r
; BOOL __stdcall EndDialog(HWND	hDlg, INT_PTR nResult)
		extrn EndDialog:dword	; CODE XREF: sub_7F805851+80p
					; sub_7F805851+5CCp ...
; BOOL __stdcall WinHelpA(HWND hWndMain, LPCSTR	lpszHelp, UINT uCommand, ULONG_PTR dwData)
		extrn WinHelpA:dword	; CODE XREF: sub_7F805851+613p
					; DATA XREF: sub_7F805851+613r
; BOOL __stdcall PostMessageA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
		extrn PostMessageA:dword ; CODE	XREF: sub_7F805851:loc_7F8058B1p
					; sub_7F805851+D7p ...
; HWND __stdcall GetFocus()
		extrn GetFocus:dword	; CODE XREF: sub_7F80577A+70p
					; DATA XREF: sub_7F80577A+70r
; HWND __stdcall GetActiveWindow()
		extrn GetActiveWindow:dword ; CODE XREF: sub_7F80577A+7Fp
					; sub_7F81F20F+5Fp ...
; HWND __stdcall SetFocus(HWND hWnd)
		extrn SetFocus:dword	; CODE XREF: sub_7F80577A+98p
					; sub_7F8061C8+17Bp ...
; INT_PTR __stdcall DialogBoxParamA(HINSTANCE hInstance, LPCSTR	lpTemplateName,	HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam)
		extrn DialogBoxParamA:dword ; CODE XREF: sub_7F80504F+DFp
					; sub_7F805168+16Bp ...
; int wsprintfA(LPSTR, LPCSTR, ...)
		extrn wsprintfA:dword	; CODE XREF: sub_7F804EC7+57p
					; sub_7F804EC7+9Ap ...
; DWORD	__stdcall MsgWaitForMultipleObjects(DWORD nCount, const	HANDLE *pHandles, BOOL fWaitAll, DWORD dwMilliseconds, DWORD dwWakeMask)
		extrn MsgWaitForMultipleObjects:dword ;	CODE XREF: sub_7F803A19+1Cp
					; DATA XREF: sub_7F803A19+1Cr
; BOOL __stdcall GetMessageA(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax)
		extrn GetMessageA:dword	; CODE XREF: sub_7F8035B3+23Fp
					; sub_7F803A19+49p ...
; BOOL __stdcall TranslateMessage(const	MSG *lpMsg)
		extrn TranslateMessage:dword ; CODE XREF: sub_7F8035B3+249p
					; sub_7F803A19+53p ...
; BOOL __stdcall MessageBeep(UINT uType)
		extrn MessageBeep:dword	; CODE XREF: sub_7F823870+76p
					; sub_7F823870+11Cp ...
; LRESULT __stdcall DefWindowProcA(HWND	hWnd, UINT Msg,	WPARAM wParam, LPARAM lParam)
		extrn DefWindowProcA:dword ; CODE XREF:	sub_7F82ACA6+1Dp
					; sub_7F82AFF2+52p
					; DATA XREF: ...
; BOOL __stdcall SetWindowTextA(HWND hWnd, LPCSTR lpString)
		extrn SetWindowTextA:dword ; CODE XREF:	sub_7F805851+3F3p
					; sub_7F80725C+1ADp ...
; LRESULT __stdcall SendDlgItemMessageA(HWND hDlg, int nIDDlgItem, UINT	Msg, WPARAM wParam, LPARAM lParam)
		extrn SendDlgItemMessageA:dword	; CODE XREF: sub_7F805851+123p
					; sub_7F805851+131p ...

;
; Imports from comdlg32.dll
;
; BOOL __stdcall GetOpenFileNameA(LPOPENFILENAMEA)
		extrn __imp_GetOpenFileNameA:dword ; DATA XREF:	GetOpenFileNameAr
; BOOL __stdcall GetSaveFileNameA(LPOPENFILENAMEA)
		extrn __imp_GetSaveFileNameA:dword ; DATA XREF:	GetSaveFileNameAr
; __int16 __stdcall GetFileTitleA(LPCSTR, LPSTR	Buf, WORD cchSize)
		extrn __imp_GetFileTitleA:dword	; DATA XREF: GetFileTitleAr

;
; Imports from ole32.dll
;
; HRESULT __stdcall CoCreateGuid(GUID *pguid)
		extrn CoCreateGuid:dword ; CODE	XREF: sub_7F8045B6+149p
					; DATA XREF: sub_7F8045B6+149r


; Section 4. (virtual address 0003D000)
; Virtual size			: 00000141 (	321.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 0003A800
; Flags	50000040: Data Shareable Readable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read
_SHARED		segment	para public 'DATA' use32
		assume cs:_SHARED
		;org 7F83D000h
; CHAR ModuleName[]
ModuleName	db 'mmfmig32.dll',0     ; DATA XREF: sub_7F8026ED+107o
					; MMFMIG_ProcessMMF@4+1o ...
		align 10h
		db    1
		db    0
		db    0
		db    0
		db    2
		db    1
		db 0FFh
		db  0Fh
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db  49h	; I
		db  50h	; P
		db  4Dh	; M
		db  5Fh	; _
		db  53h	; S
		db  55h	; U
		db  42h	; B
		db  54h	; T
		db  52h	; R
		db  45h	; E
		db  45h	; E
		db    0
		db  49h	; I
		db  50h	; P
		db  4Dh	; M
		db    0
		db  52h	; R
		db  45h	; E
		db  50h	; P
		db  4Fh	; O
		db  52h	; R
		db  54h	; T
		db  2Eh	; .
		db  49h	; I
		db  50h	; P
		db  4Dh	; M
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
unk_7F83D040	db    4			; DATA XREF: sub_7F802DB7+33Do
		db    0
		db    0
		db    0
		db  1Eh
		db    0
		db    1
		db  30h	; 0
		db  1Eh
		db    0
		db    4
		db  30h	; 0
		db    3
		db    0
		db    1
		db  36h	; 6
		db    3
		db    0
		db  0Bh
		db  36h	; 6
		db    0
		db    0
		db    0
		db    0
unk_7F83D058	db    2			; DATA XREF: sub_7F8035B3+14Bo
		db    0
		db    0
		db    0
		db  1Eh
		db    0
		db  37h	; 7
		db    0
		db    3
		db    0
		db    7
		db  0Eh
		db    0
		db    0
		db    0
		db    0
unk_7F83D068	db    3			; DATA XREF: sub_7F8045B6+1ADo
		db    0
		db    0
		db    0
		db    3
		db    0
		db    5
		db  37h	; 7
		db    2
		db    1
		db  0Ah
		db  37h	; 7
		db    3
		db    0
		db  0Bh
		db  37h	; 7
unk_7F83D078	db    1			; DATA XREF: sub_7F8045B6:loc_7F804695o
		db    0
		db    0
		db    0
		db  0Bh
		db    0
		db  1Bh
		db  0Eh
unk_7F83D080	db    2			; DATA XREF: sub_7F802DB7+291o
					; sub_7F804A93+3Co
		db    0
		db    0
		db    0
		db    2
		db    1
		db 0FFh
		db  0Fh
		db  1Eh
		db    0
		db    1
		db  30h	; 0
		db    0
		db    0
		db    0
		db    0
unk_7F83D090	db    1			; DATA XREF: sub_7F8045B6+AAo
		db    0
		db    0
		db    0
		db  1Eh
		db    0
		db  1Ah
		db    0
; CHAR ProcName[]
ProcName	db 'NDBGetFileInfo',0   ; DATA XREF: sub_7F8060C1+BDo
		align 4
; CHAR a_mmf[]
a_mmf		db '.MMF',0             ; DATA XREF: sub_7F805FDE+7Fo
					; sub_7F809A3F+14Eo ...
		align 10h
; CHAR a_pst[]
a_pst		db '.pst',0             ; DATA XREF: sub_7F806861+5C8o
		align 4
; CHAR a_pab[]
a_pab		db '.PAB',0             ; DATA XREF: sub_7F8060C1+7Ao
					; sub_7F809A3F:loc_7F809BA4o
		align 10h
aMmfMigrationTa	db 'MMF MIGRATION Target Store',0 ; DATA XREF: sub_7F8091A3+1B7o
		align 10h
; CHAR szHelp[]
szHelp		db 'EXCHNG.HLP',0       ; DATA XREF: sub_7F805851+60Bo
		align 10h
; CHAR LibFileName[]
LibFileName	db 'mspst32.dll',0      ; DATA XREF: sub_7F8060C1:loc_7F80616Do
		align 10h
; CHAR aMigrateini[]
aMigrateini	db 'MigrateIni',0       ; DATA XREF: sub_7F815163+13o
					; sub_7F815163+318o
		align 10h
; CHAR aMsmail_ini[]
aMsmail_ini	db 'msmail.ini',0       ; DATA XREF: sub_7F815163+2Eo
					; sub_7F815163+A9o ...
		align 10h
; CHAR aMsmail32_ini[]
aMsmail32_ini	db 'msmail32.ini',0     ; DATA XREF: sub_7F815163+Co
					; sub_7F815163:loc_7F81542Eo ...
		align 10h
; CHAR aMicrosoftMail[]
aMicrosoftMail	db 'Microsoft Mail',0   ; DATA XREF: sub_7F815163+18o
					; sub_7F815163:loc_7F815201o ...
		align 10h
; CHAR byte_7F83D140[3776]
byte_7F83D140	db 0C0h	dup(0),	0E00h dup(?) ; DATA XREF: sub_7F815163+45o
					; sub_7F815163+C1o ...
_SHARED		ends


		end DllEntryPoint
